x86: Fix some bugs in the real mode far jmp instruction.
The far pointer should be shifted right to get the selector value, not left. Also, when calculating the width of the offset, the wrong register was used in one spot.
This commit is contained in:
parent
7739c24fbe
commit
f8603fa120
1 changed files with 2 additions and 2 deletions
|
@ -162,11 +162,11 @@ def macroop JMP_FAR_REAL_I
|
|||
limm t3, dsz, dataSize=8
|
||||
slli t3, t3, 3, dataSize=8
|
||||
# Get the selector into t1.
|
||||
sll t1, t2, t3, dataSize=8
|
||||
srl t1, t2, t3, dataSize=8
|
||||
mov t1, t0, t1, dataSize=2
|
||||
# And get the offset into t2
|
||||
mov t2, t0, t2
|
||||
slli t3, t3, 4, dataSize=8
|
||||
slli t3, t1, 4, dataSize=8
|
||||
wrsel cs, t1, dataSize=2
|
||||
wrbase cs, t3
|
||||
wrip t0, t2, dataSize=asz
|
||||
|
|
Loading…
Reference in a new issue