ack/mach/vax4/libem/head_em.s

94 lines
1 KiB
ArmAsm

#include "system.h"
#include "em_abs.h"
#ifdef BSD42
#include "/usr/include/syscall.h"
#endif BSD42
# $Header$
.globl hol0
.globl .reghp
.globl .trppc
.globl .trpim
# run time startoff
.word 0
bispsw $0100 # set FU(0100)
movl 4(sp),r0
clrl -4(r0)
movl sp,r0
movl (r0)+,r1
movl r0,r2
a1:
tstl (r0)+
bneq a1
cmpl r0,(r2)
blssu a2
tstl -(r0)
a2:
pushl r0
pushl r2
pushl r1
movl $m1,ap
chmk (ap)+ # catch floating point exception
calls $3,_m_a_i_n
movl $m2,ap
movl r0,6(ap)
chmk (ap)+
halt
.align 1
sig8:
.word 0x0000
pushl 8(ap)
movl (sp)+,ap
pushl tab [ap]
jsb .trp
movl $m1,ap
chmk (ap)+
ret
.data
#ifdef BSD42
m1:
.word SYS_sigvec
.long 3
.long 8
.long m1a
.long 0
m1a:
.long sig8
.long 0
.long 0
#else BSD42
m1:
.word 48
.long 2
.long 8
.long sig8
#endif BSD42
m2:
.word 1
.long 1
.long 0
.reghp:
.long _end
hol0:
.space 8
.trppc:
.space 4
.trpim:
.long 0
tab:
.long 0
.long EIOVFL
.long EIDIVZ
.long EFOVFL
.long EFDIVZ
.long EFUNFL
.long EILLINS
.long EARRAY
.long EFOVFL
.long EFDIVZ
.long EFUNFL