37 lines
		
	
	
	
		
			562 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			562 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| #include "em_abs.h"
 | |
| 
 | |
|         # $Header$
 | |
| 
 | |
| .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
 |