ack/mach/vax4/libbsd4_2/head_em.s

108 lines
1.4 KiB
ArmAsm

#include "em_abs.h"
#include "syscall.h"
! $Header$
.sect .text; .sect .rom; .sect .data; .sect .bss
.sect .text
.define hol0
.define .reghp
.define .limhp
.define .trppc
.define .trpim
! run time startoff
.data2 0
bispsw $0100 ! set FU(0100)
movl 4(sp),r0
clrl -4(r0)
movl sp,r0
movl (r0)+,r1
movl r0,r2
1:
tstl (r0)+
bneq 1b
cmpl r0,(r2)
blssu 2f
tstl -(r0)
2:
pushl r0
pushl r2
pushl r1
movl $Im1,ap
chmk (ap)+ ! catch floating point exception
calls $3,_m_a_i_n
movl $Im2,ap
movl r0,6(ap)
chmk (ap)+
halt
.align 1
Isig8:
.data2 0x0000
pushl 8(ap)
movl $Im3,ap
chmk (ap)+ ! restore default handler
movl $Im5,ap
chmk (ap)+ ! get current signal mask
bicl3 $0x80,r0,Im4+6 ! and remove the 8th bit
movl $Im4,ap
chmk (ap)+ ! and
movl (sp)+,ap
pushl Itab [ap]
jsb .trp
movl $Im1,ap
chmk (ap)+
ret
.sect .data
Im1:
.data2 SYS_sigvec
.data4 3
.data4 8
.data4 Im1a
.data4 0
Im3:
.data2 SYS_sigvec
.data4 3
.data4 8
.data4 0
.data4 0
Im4:
.data2 SYS_sigsetmask
.data4 1
.data4 0
Im5:
.data2 SYS_sigblock
.data4 1
.data4 0
Im1a:
.data4 Isig8
.data4 0
.data4 0
Im2:
.data2 1
.data4 1
.data4 0
.reghp:
.data4 __end
.limhp:
.data4 __end
hol0:
.space 8
.trppc:
.space 4
.trpim:
.data4 0
Itab:
.data4 0
.data4 EIOVFL
.data4 EIDIVZ
.data4 EFOVFL
.data4 EFDIVZ
.data4 EFUNFL
.data4 EILLINS
.data4 EARRAY
.data4 EFOVFL
.data4 EFDIVZ
.data4 EFUNFL