diff options
author | msmith <msmith@FreeBSD.org> | 1998-10-22 20:22:07 +0000 |
---|---|---|
committer | msmith <msmith@FreeBSD.org> | 1998-10-22 20:22:07 +0000 |
commit | 472b37dea84c65b9d0c992a603e006f84cfd7db3 (patch) | |
tree | 1dcf141bead24c33a77c0c48c386cb944ea8ce0c /sys/boot | |
parent | 973bf974871815ca2ba384da2fac0739f974f4f4 (diff) | |
download | FreeBSD-src-472b37dea84c65b9d0c992a603e006f84cfd7db3.zip FreeBSD-src-472b37dea84c65b9d0c992a603e006f84cfd7db3.tar.gz |
Pop the return address off the stack before making a V86_CALLF call;
this allows us to implement what look like C function calls from user
space "directly" to v86 mode code. (Used for calling the PnP BIOS)
Diffstat (limited to 'sys/boot')
-rw-r--r-- | sys/boot/i386/btx/lib/btxv86.s | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/boot/i386/btx/lib/btxv86.s b/sys/boot/i386/btx/lib/btxv86.s index b67e873..46709a3 100644 --- a/sys/boot/i386/btx/lib/btxv86.s +++ b/sys/boot/i386/btx/lib/btxv86.s @@ -13,7 +13,7 @@ # purpose. # -# $Id:$ +# $Id: btxv86.s,v 1.1 1998/09/14 10:37:00 rnordier Exp $ # # BTX V86 interface. @@ -48,11 +48,13 @@ # # V86 interface function. # -__v86int: pushl $__v86 # Push pointer +__v86int: popl __v86ret # Save return address + pushl $__v86 # Push pointer call __v86_swap # Load V86 registers int $INT_V86 # To BTX call __v86_swap # Load user registers addl $0x4,%esp # Discard pointer + pushl __v86ret # Restore return address ret # To user # # Swap V86 and user registers. @@ -80,3 +82,4 @@ __v86_swap: xchgl %ebp,0x4(%esp,1) # Swap pointer, EBP # V86 interface structure. # .comm __v86,SIZ_V86 + .comm __v86ret,4 |