diff options
author | jkim <jkim@FreeBSD.org> | 2010-08-05 18:48:30 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2010-08-05 18:48:30 +0000 |
commit | f183f61cf27d17b22884ede6ef23e211e9a237e2 (patch) | |
tree | b0c8c9a67306d060e349407a35aadc5ff9640537 /sys/i386 | |
parent | 8f25a1f5690a3220ab26f9ae74a0c54cc3a0075a (diff) | |
download | FreeBSD-src-f183f61cf27d17b22884ede6ef23e211e9a237e2.zip FreeBSD-src-f183f61cf27d17b22884ede6ef23e211e9a237e2.tar.gz |
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
Diffstat (limited to 'sys/i386')
-rw-r--r-- | sys/i386/include/vm86.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/i386/include/vm86.h b/sys/i386/include/vm86.h index 041504a..b574e58 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 { |