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 | |
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.
-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") }; |