diff options
author | jkim <jkim@FreeBSD.org> | 2010-03-25 15:56:04 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2010-03-25 15:56:04 +0000 |
commit | 49ca5d49ba1fb8b0550024f816e6e6bb7f9e3a0a (patch) | |
tree | bd44974dd2643aa199fd9c452b9430d91c5ac197 | |
parent | ac2318460ca6c2ea9f6cbff07bad22a5f502234d (diff) | |
download | FreeBSD-src-49ca5d49ba1fb8b0550024f816e6e6bb7f9e3a0a.zip FreeBSD-src-49ca5d49ba1fb8b0550024f816e6e6bb7f9e3a0a.tar.gz |
Fix stupid typos. Some VESA BIOSes directly call BIOS interrupt handlers
within the VBE interrupt handler. Unfortunately it was causing real mode
page faults because we were fetching instructions from bogus addresses.
Pass me the pointyhat, please.
PR: kern/144654
MFC after: 3 days
-rw-r--r-- | sys/compat/x86bios/x86bios.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/compat/x86bios/x86bios.c b/sys/compat/x86bios/x86bios.c index af352af..e90d80b 100644 --- a/sys/compat/x86bios/x86bios.c +++ b/sys/compat/x86bios/x86bios.c @@ -307,8 +307,8 @@ x86bios_emu_get_intr(struct x86emu *emu, int intno) sp[2] = htole16(emu->x86.R_FLG); iv = x86bios_get_intr(intno); - emu->x86.R_IP = iv & 0x000f; - emu->x86.R_CS = (iv >> 12) & 0xffff; + emu->x86.R_IP = iv & 0xffff; + emu->x86.R_CS = (iv >> 16) & 0xffff; emu->x86.R_FLG &= ~(F_IF | F_TF); } |