38 lines
		
	
	
	
		
			606 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			606 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| #include "em_abs.h"
 | |
| .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
 | |
| .define .cfu
 | |
| 
 | |
|         ! $Id$
 | |
| 
 | |
| 
 | |
| .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
 |