37 lines
561 B
ArmAsm
37 lines
561 B
ArmAsm
|
# $Header$
|
||
|
#include "em_abs.h"
|
||
|
|
||
|
.globl .cfu
|
||
|
|
||
|
.cfu:
|
||
|
movl (sp)+,r2
|
||
|
movpsl r1
|
||
|
bicl2 $~040,r1
|
||
|
bicpsw $040 # integer overflow traps must be ignored
|
||
|
movl (sp)+,r0
|
||
|
cmpl (sp),$4
|
||
|
bneq Lddt
|
||
|
tstl (sp)+
|
||
|
tstf (sp)
|
||
|
bgeq L1
|
||
|
mnegf (sp),(sp)
|
||
|
L1:
|
||
|
cvtfl (sp)+,-(sp)
|
||
|
L2:
|
||
|
cmpl r0,$4
|
||
|
bneq Lerr
|
||
|
bispsw r1 # restore trap enable bit
|
||
|
jmp (r2)
|
||
|
Lddt:
|
||
|
cmpl (sp)+,$8
|
||
|
bneq Lerr
|
||
|
tstd (sp)
|
||
|
bgeq L3
|
||
|
mnegd (sp),(sp)
|
||
|
L3:
|
||
|
cvtdl (sp)+,-(sp)
|
||
|
brb L2
|
||
|
Lerr:
|
||
|
pushl $EILLINS
|
||
|
jmp .fat
|