summaryrefslogtreecommitdiffstats
path: root/sys/boot
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2006-12-06 17:45:35 +0000
committerjhb <jhb@FreeBSD.org>2006-12-06 17:45:35 +0000
commit7e6ec61a87b2b3bcac8f31b3ac418022354049ae (patch)
tree8d7a30dcadfe37a453411b9ec289a737e4138efe /sys/boot
parent16b7f5bc5494c74cd638ca46b3fcfbf6dfd0e4f0 (diff)
downloadFreeBSD-src-7e6ec61a87b2b3bcac8f31b3ac418022354049ae.zip
FreeBSD-src-7e6ec61a87b2b3bcac8f31b3ac418022354049ae.tar.gz
Ignore any breakpoint instructions (int 3) we encounter in vm86 mode
rather than treating them as a fatal exception and halting. At least one storage BIOS (some newer mpt(4) parts) have a breakpoint instruction in their disk read routine. MFC after: 3 days
Diffstat (limited to 'sys/boot')
-rw-r--r--sys/boot/i386/btx/btx/btx.S2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/boot/i386/btx/btx/btx.S b/sys/boot/i386/btx/btx/btx.S
index ce99622..8838ca1 100644
--- a/sys/boot/i386/btx/btx/btx.S
+++ b/sys/boot/i386/btx/btx/btx.S
@@ -499,6 +499,8 @@ v86mon.4: cmpb $0xfa,%al # CLI?
je v86cli # Yes
cmpb $0xfb,%al # STI?
je v86sti # Yes
+ cmpb $0xcc,%al # INT3?
+ je v86mon.7 # Yes, ignore
movzwl 0x38(%ebp),%ebx # Load V86 SS
shll $0x4,%ebx # To offset
pushl %ebx # Save
OpenPOWER on IntegriCloud