2 # add symbolic names to read_msr / write_msr in trace
3 # decode_msr msr-index.h < trace
9 with
open(sys
.argv
[1] if len(sys
.argv
) > 1 else "msr-index.h", "r") as f
:
11 m
= re
.match(r
'#define (MSR_\w+)\s+(0x[0-9a-fA-F]+)', j
)
13 msrs
[int(m
.group(2), 16)] = m
.group(1)
16 ( "MSR_LASTBRANCH_%d_FROM_IP", 0x680, 0x69F ),
17 ( "MSR_LASTBRANCH_%d_TO_IP", 0x6C0, 0x6DF ),
18 ( "LBR_INFO_%d", 0xdc0, 0xddf ),
22 m
= re
.search(r
'(read|write)_msr:\s+([0-9a-f]+)', j
)
25 num
= int(m
.group(2), 16)
29 for er
in extra_ranges
:
30 if er
[1] <= num
<= er
[2]:
31 r
= er
[0] % (num
- er
[1],)
34 j
= j
.replace(" " + m
.group(2), " " + r
+ "(" + m
.group(2) + ")")