aboutsummaryrefslogtreecommitdiff
path: root/sys/i386
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2010-08-05 18:48:30 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2010-08-05 18:48:30 +0000
commit439f3d8b8198273f13ba689f48f3afac479750d8 (patch)
treeb0c8c9a67306d060e349407a35aadc5ff9640537 /sys/i386
parent2c5dadc9cf8092359dcc696c14413fe41954c995 (diff)
downloadsrc-439f3d8b8198273f13ba689f48f3afac479750d8.tar.gz
src-439f3d8b8198273f13ba689f48f3afac479750d8.zip
Implement a simple native VM86 backend for X86BIOS. Now i386 uses native
VM86 calls instead of the real mode emulator as a backend. VM86 has been proven reliable for very long time and it is actually few times faster than emulation. Increase maximum number of page table entries per VM86 context from 3 to 8 pages. It was (ridiculously) low and insufficient for new VM86 backend, which shares one context globally. Slighly rearrange and clean up the emulator backend to accommodate new code. The only visible change here is stack size, which is decreased from 64K to 4K bytes to sync. with VM86. Actually, it seems there is no need for big stack in real mode. MFC after: 1 month
Notes
Notes: svn path=/head/; revision=210877
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/include/vm86.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/i386/include/vm86.h b/sys/i386/include/vm86.h
index 041504abab18..b574e58e23e9 100644
--- a/sys/i386/include/vm86.h
+++ b/sys/i386/include/vm86.h
@@ -93,13 +93,14 @@ struct vm86frame {
#define vmf_ds ds.r_w.r_x
#define vmf_es es.r_w.r_x
#define vmf_ss ss.r_w.r_x
+#define vmf_bp ebp.r_w.r_x
#define vmf_sp esp.r_w.r_x
#define vmf_ip eip.r_w.r_x
#define vmf_flags eflags.r_w.r_x
#define vmf_eflags eflags.r_ex
};
-#define VM86_PMAPSIZE 3
+#define VM86_PMAPSIZE 8
#define VMAP_MALLOC 1 /* page was malloced by us */
struct vm86context {