38 lines
		
	
	
	
		
			610 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			610 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
#include "em_abs.h"
 | 
						|
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
 | 
						|
.define .cfu
 | 
						|
 | 
						|
        ! $Header$
 | 
						|
 | 
						|
 | 
						|
.cfu:
 | 
						|
	movl    (sp)+,r2
 | 
						|
	movpsl  r1
 | 
						|
	bicl2   $~040,r1
 | 
						|
	bicpsw  $040            ! integer overflow traps must be ignored
 | 
						|
	movl    (sp)+,r0
 | 
						|
	cmpl    (sp),$4
 | 
						|
	bneq    1f
 | 
						|
	tstl    (sp)+
 | 
						|
	tstf    (sp)
 | 
						|
	bgeq    5f
 | 
						|
	mnegf   (sp),(sp)
 | 
						|
5:
 | 
						|
	cvtfl   (sp)+,-(sp)
 | 
						|
2:
 | 
						|
	cmpl    r0,$4
 | 
						|
	bneq    4f
 | 
						|
	bispsw  r1              ! restore trap enable bit
 | 
						|
	jmp     (r2)
 | 
						|
1:
 | 
						|
	cmpl    (sp)+,$8
 | 
						|
	bneq    4f
 | 
						|
	tstd    (sp)
 | 
						|
	bgeq    3f
 | 
						|
	mnegd   (sp),(sp)
 | 
						|
3:
 | 
						|
	cvtdl   (sp)+,-(sp)
 | 
						|
	br      2b
 | 
						|
4:
 | 
						|
	pushl	$EILLINS
 | 
						|
	jmp     .fat
 |