.data

ret_address:
.long	0

.text
.globl _execute_dpmi

/* ***********************
	arg3
	arg2
   +8	arg1
   +4	arg0 = fnct
   +0	return address
     <- ESP
*/

_execute_dpmi:
    movl   (%esp), %eax
    movl   %eax, ret_address
    movl   4(%esp), %eax
    addl   $8, %esp		/* skip return and fnct */
    call   %eax
    pushl  ret_address
    pushl  ret_address
    ret
