When rebooting the machine jump to 0xf000:0xfff0 instead of 0xffff:0x0.
While we end up the same place, we end up with two different CS register values after the jump and 0xf000 is compatible with the hardware reset value. This makes a difference if the BIOS does a near jump before a far jump. Detective work and patch by: Adrian Steinmann <ast@marabu.ch>
This commit is contained in:
parent
ef7da08509
commit
5c391f4d6b
@ -296,7 +296,7 @@ exit.2: xor %ax,%ax # Real mode segment
|
||||
testb $0x1,btx_hdr+0x7 # Reboot?
|
||||
exit.3: jz exit.3 # No
|
||||
movw $0x1234, BDA_BOOT # Do a warm boot
|
||||
ljmp $0xffff,$0x0 # reboot the machine
|
||||
ljmp $0xf000,$0xfff0 # reboot the machine
|
||||
#
|
||||
# Set IRQ offsets by reprogramming 8259A PICs.
|
||||
#
|
||||
|
@ -296,7 +296,7 @@ exit.2: xor %ax,%ax # Real mode segment
|
||||
testb $0x1,btx_hdr+0x7 # Reboot?
|
||||
exit.3: jz exit.3 # No
|
||||
movw $0x1234, BDA_BOOT # Do a warm boot
|
||||
ljmp $0xffff,$0x0 # reboot the machine
|
||||
ljmp $0xf000,$0xfff0 # reboot the machine
|
||||
#
|
||||
# Set IRQ offsets by reprogramming 8259A PICs.
|
||||
#
|
||||
|
Loading…
x
Reference in New Issue
Block a user