home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_300
/
359_11
/
patch5.000
/
EMU387
/
EMUINIT.S
< prev
next >
Wrap
Text File
|
1991-09-11
|
1KB
|
62 lines
/*
** If this is a standalone build, the starting EIP must point to _emu387
** and go32 will install the interrupt vector itself.
*/
.data
.comm _eax,4
.comm _ebx,4
.comm _ecx,4
.comm _edx,4
.comm _esi,4
.comm _edi,4
.comm _ebp,4
.comm _esp,4
.comm _eip,4
.text
.globl _emu387
_emu387:
movl %eax,_eax
movl %ebx,_ebx
movl %ecx,_ecx
movl %edx,_edx
movl %esi,_esi
movl %edi,_edi
movl %ebp,_ebp
movl %esp,_esp
add $12,_esp
pushl %ebp
movl %esp,%ebp
movl 4(%ebp),%eax
movl %eax,_eip
call _emu_entry__Fv
movl _eip,%eax
movl %eax,4(%ebp)
movl _eax,%eax
movl _ebx,%ebx
movl _ecx,%ecx
movl _edx,%edx
movl _esi,%esi
movl _edi,%edi
popl %ebp
iret
.globl _emu_install__Fv
_emu_install__Fv:
movw $16,%ax
movw %ax,%gs
movl $_emu387,%ecx
movl $56,%eax /* vector 7 * 8 bpv */
movw %cx,%gs:(%eax)
movw $64,%gs:2(%eax) /* selector 8 == 32-bit code */
movw $0x8f00,%gs:4(%eax)
rorl $16,%ecx
movw %cx,%gs:6(%eax)
movw %ds,%ax
movw %ax,%gs
ret