summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-02-27 09:25:02 -0800
committerGabe Black <gblack@eecs.umich.edu>2009-02-27 09:25:02 -0800
commit1d18eb9043d5d2e69d3885be8dd59695ad80a92d (patch)
tree577e8cfd5779decd3dad1e9d9e3cb887182914ad /src
parent79bc1b37400ffc4aacfbf19b64aed4c7d568c941 (diff)
downloadgem5-1d18eb9043d5d2e69d3885be8dd59695ad80a92d.tar.xz
X86: Make instructions that use intseg preserve all 8 bytes of their addresses.
Diffstat (limited to 'src')
-rw-r--r--src/arch/x86/isa/insts/general_purpose/input_output/general_io.py8
-rw-r--r--src/arch/x86/isa/insts/system/msrs.py4
2 files changed, 6 insertions, 6 deletions
diff --git a/src/arch/x86/isa/insts/general_purpose/input_output/general_io.py b/src/arch/x86/isa/insts/general_purpose/input_output/general_io.py
index 924bfcb6e..4e3c9b316 100644
--- a/src/arch/x86/isa/insts/general_purpose/input_output/general_io.py
+++ b/src/arch/x86/isa/insts/general_purpose/input_output/general_io.py
@@ -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
};
'''
diff --git a/src/arch/x86/isa/insts/system/msrs.py b/src/arch/x86/isa/insts/system/msrs.py
index f3c867398..7f283c8c1 100644
--- a/src/arch/x86/isa/insts/system/msrs.py
+++ b/src/arch/x86/isa/insts/system/msrs.py
@@ -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