X86: Make instructions that use intseg preserve all 8 bytes of their addresses.
This commit is contained in:
parent
79bc1b3740
commit
1d18eb9043
2 changed files with 6 additions and 6 deletions
|
@ -85,22 +85,22 @@ microcode = '''
|
|||
def macroop IN_R_I {
|
||||
.adjust_imm trimImm(8)
|
||||
limm t1, imm, dataSize=asz
|
||||
ld reg, intseg, [1, t1, t0], "IntAddrPrefixIO << 3", addressSize=4
|
||||
ld reg, intseg, [1, t1, t0], "IntAddrPrefixIO << 3", addressSize=8
|
||||
};
|
||||
|
||||
def macroop IN_R_R {
|
||||
zexti t2, regm, 15, dataSize=8
|
||||
ld reg, intseg, [1, t2, t0], "IntAddrPrefixIO << 3", addressSize=4
|
||||
ld reg, intseg, [1, t2, t0], "IntAddrPrefixIO << 3", addressSize=8
|
||||
};
|
||||
|
||||
def macroop OUT_I_R {
|
||||
.adjust_imm trimImm(8)
|
||||
limm t1, imm, dataSize=8
|
||||
st reg, intseg, [1, t1, t0], "IntAddrPrefixIO << 3", addressSize=4
|
||||
st reg, intseg, [1, t1, t0], "IntAddrPrefixIO << 3", addressSize=8
|
||||
};
|
||||
|
||||
def macroop OUT_R_R {
|
||||
zexti t2, reg, 15, dataSize=8
|
||||
st regm, intseg, [1, t2, t0], "IntAddrPrefixIO << 3", addressSize=4
|
||||
st regm, intseg, [1, t2, t0], "IntAddrPrefixIO << 3", addressSize=8
|
||||
};
|
||||
'''
|
||||
|
|
|
@ -85,7 +85,7 @@ microcode = '''
|
|||
def macroop RDMSR
|
||||
{
|
||||
ld t2, intseg, [8, rcx, t0], "IntAddrPrefixMSR << 3", \
|
||||
dataSize=8, addressSize=4
|
||||
dataSize=8, addressSize=8
|
||||
mov rax, rax, t2, dataSize=4
|
||||
srli t2, t2, 32, dataSize=8
|
||||
mov rdx, rdx, t2, dataSize=4
|
||||
|
@ -97,7 +97,7 @@ def macroop WRMSR
|
|||
slli t3, rdx, 32, dataSize=8
|
||||
or t2, t2, t3, dataSize=8
|
||||
st t2, intseg, [8, rcx, t0], "IntAddrPrefixMSR << 3", \
|
||||
dataSize=8, addressSize=4
|
||||
dataSize=8, addressSize=8
|
||||
};
|
||||
|
||||
def macroop RDTSC
|
||||
|
|
Loading…
Reference in a new issue