93 lines
1 KiB
ArmAsm
93 lines
1 KiB
ArmAsm
# $Header$
|
|
#include "system.h"
|
|
#include "em_abs.h"
|
|
#ifdef BSD42
|
|
#include "/usr/include/syscall.h"
|
|
#endif BSD42
|
|
|
|
.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
|