diff options
author | Tim Harris <tharris@microsoft.com> | 2011-02-07 15:12:59 -0800 |
---|---|---|
committer | Tim Harris <tharris@microsoft.com> | 2011-02-07 15:12:59 -0800 |
commit | 2ea1aa8a4ff5b9096388af0ba400500a324b16a7 (patch) | |
tree | 0ae4e354794fe13e601f3e1d055552a9793b36b6 /src/arch/x86 | |
parent | 5810ab121c39f041aa6728696bc19e2e963eef90 (diff) | |
download | gem5-2ea1aa8a4ff5b9096388af0ba400500a324b16a7.tar.xz |
X86: Fix JMP_FAR_I to unpack a far pointer correctly.
JMP_FAR_I was unpacking its far pointer operand using sll instead of srl like
it should, and also putting the components in the wrong registers for use by
other microcode.
Diffstat (limited to 'src/arch/x86')
-rw-r--r-- | src/arch/x86/isa/insts/general_purpose/control_transfer/jump.py | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/arch/x86/isa/insts/general_purpose/control_transfer/jump.py b/src/arch/x86/isa/insts/general_purpose/control_transfer/jump.py index 05db62033..420655165 100644 --- a/src/arch/x86/isa/insts/general_purpose/control_transfer/jump.py +++ b/src/arch/x86/isa/insts/general_purpose/control_transfer/jump.py @@ -101,11 +101,11 @@ def macroop JMP_FAR_I # Figure out the width of the offset. limm t3, dsz, dataSize=8 slli t3, t3, 3, dataSize=8 - # Get the selector into t1. - sll t1, t2, t3, dataSize=8 - mov t1, t0, t1, dataSize=2 - # And get the offset into t2 - mov t2, t0, t2 + # Get the offset into t1. + mov t1, t0, t2 + # Get the selector into t2. + srl t2, t2, t3, dataSize=8 + mov t2, t0, t2, dataSize=2 br rom_label("jmpFarWork") }; |