#include <asm_defs.h>
#include <commpage_defs.h>
#include "asm_offsets.h"
#include "syscall_numbers.h"
FUNCTION(x86_signal_frame_function_beos):
push %ebp
mov %esp, %ebp
mov 8(%ebp), %esi
lea -VREGS_sizeof(%esp), %esp
mov %esp, %edi
pushl $VREGS_sizeof
lea SIGNAL_FRAME_DATA_context + UCONTEXT_T_uc_mcontext(%esi), %eax
push %eax
push %edi
movl SIGNAL_FRAME_DATA_commpage_address(%esi), %eax
addl 4 * COMMPAGE_ENTRY_X86_MEMCPY(%eax), %eax
call *%eax
addl $12, %esp
movl SIGNAL_FRAME_DATA_user_data(%esi), %eax
push %eax
movl SIGNAL_FRAME_DATA_info+SIGINFO_T_si_signo(%esi), %eax
push %eax
movl SIGNAL_FRAME_DATA_handler(%esi), %eax
call *%eax
addl $8, %esp
pushl $VREGS_sizeof
push %edi
lea SIGNAL_FRAME_DATA_context + UCONTEXT_T_uc_mcontext(%esi), %eax
push %eax
movl SIGNAL_FRAME_DATA_commpage_address(%esi), %eax
addl 4 * COMMPAGE_ENTRY_X86_MEMCPY(%eax), %eax
call *%eax
addl $12 + VREGS_sizeof, %esp
pushl %esi
pushl $0
movl $SYSCALL_RESTORE_SIGNAL_FRAME, %eax
int $99
FUNCTION_END(x86_signal_frame_function_beos)