159 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
.define _signal
 | 
						|
.data
 | 
						|
_vector:
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
.long	0
 | 
						|
_mapvec:
 | 
						|
.long	0
 | 
						|
.long	134219784
 | 
						|
.long	2048
 | 
						|
.long	0
 | 
						|
.long	2827
 | 
						|
.long	658176
 | 
						|
.long	3072
 | 
						|
firsttim:
 | 
						|
.extern _signal
 | 
						|
.long	1
 | 
						|
.text
 | 
						|
_signal:
 | 
						|
enter[], 16
 | 
						|
movd 8(fp),r7
 | 
						|
addd -1,r7
 | 
						|
movd r7,-4(fp)
 | 
						|
cmpqd 0,-4(fp)
 | 
						|
bgt I0014
 | 
						|
cmpd -4(fp),16
 | 
						|
blt I0013
 | 
						|
I0014:
 | 
						|
movd -1,tos
 | 
						|
br I0011
 | 
						|
I0013:
 | 
						|
cmpqd 0,@firsttim
 | 
						|
beq I0015
 | 
						|
xord @firsttim,@firsttim
 | 
						|
movd catchtrp,tos
 | 
						|
jsr @__setsig
 | 
						|
adjspd -4
 | 
						|
I0015:
 | 
						|
movd -4(fp),r7
 | 
						|
ashd 2,r7
 | 
						|
movd _vector(r7),-12(fp)
 | 
						|
cmpd -12(fp),12(fp)
 | 
						|
beq I0016
 | 
						|
movd -4(fp),r7
 | 
						|
ashd 2,r7
 | 
						|
movd 12(fp),_vector(r7)
 | 
						|
cmpd 12(fp),1
 | 
						|
bne I0017
 | 
						|
movd -3,-16(fp)
 | 
						|
br I0018
 | 
						|
I0017:
 | 
						|
cmpqd 0,12(fp)
 | 
						|
bne I0019
 | 
						|
movd -2,-16(fp)
 | 
						|
br I0018
 | 
						|
I0019:
 | 
						|
addr 128(8(fp)),-16(fp)
 | 
						|
I0018:
 | 
						|
movd 8(fp),tos
 | 
						|
movd -16(fp),tos
 | 
						|
jsr @_sigtrp
 | 
						|
adjspd -8
 | 
						|
cmpd r4,-1
 | 
						|
bne I0016
 | 
						|
movd -1,tos
 | 
						|
br I0011
 | 
						|
I0016:
 | 
						|
movd -12(fp),tos
 | 
						|
I0011:
 | 
						|
movd tos,r7
 | 
						|
movd r7,r4
 | 
						|
exit []
 | 
						|
ret 0
 | 
						|
catchtrp:
 | 
						|
enter[], 0
 | 
						|
cmpd 8(fp),128
 | 
						|
ble I0023
 | 
						|
cmpd 8(fp),144
 | 
						|
bgt I0023
 | 
						|
movd 8(fp),r7
 | 
						|
subd 128,r7
 | 
						|
movd r7,tos
 | 
						|
jsr @procesig
 | 
						|
adjspd -4
 | 
						|
movd r4,tos
 | 
						|
br I0021
 | 
						|
I0023:
 | 
						|
cmpqd 0,8(fp)
 | 
						|
bgt I0024
 | 
						|
cmpd 8(fp),28
 | 
						|
bge I0024
 | 
						|
movd _mapvec,r7
 | 
						|
addd 8(fp),r7
 | 
						|
movzbd 0(r7),r6
 | 
						|
cmpqd 0,r6
 | 
						|
beq I0024
 | 
						|
movd _mapvec,r7
 | 
						|
addd 8(fp),r7
 | 
						|
movzbd 0(r7),tos
 | 
						|
jsr @procesig
 | 
						|
adjspd -4
 | 
						|
movd r4,tos
 | 
						|
br I0021
 | 
						|
I0024:
 | 
						|
movd 0,tos
 | 
						|
I0021:
 | 
						|
movd tos,r7
 | 
						|
movd r7,r4
 | 
						|
exit []
 | 
						|
ret 0
 | 
						|
procesig:
 | 
						|
enter[], 8
 | 
						|
movd 8(fp),r7
 | 
						|
addd -1,r7
 | 
						|
movd r7,-4(fp)
 | 
						|
movd -4(fp),r6
 | 
						|
ashd 2,r6
 | 
						|
movd _vector(r6),-8(fp)
 | 
						|
cmpd -8(fp),1
 | 
						|
bne I0033
 | 
						|
movd 1,tos
 | 
						|
br I0031
 | 
						|
I0033:
 | 
						|
cmpd 8(fp),4
 | 
						|
beq I0034
 | 
						|
cmpd 8(fp),5
 | 
						|
beq I0034
 | 
						|
movd -4(fp),r7
 | 
						|
ashd 2,r7
 | 
						|
movd 1,_vector(r7)
 | 
						|
I0034:
 | 
						|
cmpqd 0,-8(fp)
 | 
						|
bne I0035
 | 
						|
movd 0,tos
 | 
						|
br I0031
 | 
						|
I0035:
 | 
						|
movd -8(fp),r7
 | 
						|
movd 8(fp),tos
 | 
						|
jsr r7
 | 
						|
adjspd -4
 | 
						|
movd 1,tos
 | 
						|
I0031:
 | 
						|
movd tos,r7
 | 
						|
movd r7,r4
 | 
						|
exit []
 | 
						|
ret 0
 |