106 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
    .csect
 | 
						|
    .set   r0,0
 | 
						|
    .set   r1,1
 | 
						|
    .set   r2,2
 | 
						|
    .set   r3,3
 | 
						|
    .set   r4,4
 | 
						|
    .set   r5,5
 | 
						|
    .set   r6,6
 | 
						|
    .set   r7,7
 | 
						|
    .set   r8,8
 | 
						|
    .set   r9,9
 | 
						|
    .set   r10,10
 | 
						|
    .set   r11,11
 | 
						|
    .set   r12,12
 | 
						|
    .set   r13,13
 | 
						|
    .set   r14,14
 | 
						|
    .set   r15,15
 | 
						|
    .set   r16,16
 | 
						|
    .set   r17,17
 | 
						|
    .set   r18,18
 | 
						|
    .set   r19,19
 | 
						|
    .set   r20,20
 | 
						|
    .set   r21,21
 | 
						|
    .set   r22,22
 | 
						|
    .set   r23,23
 | 
						|
    .set   r24,24
 | 
						|
    .set   r25,25
 | 
						|
    .set   r26,26
 | 
						|
    .set   r27,27
 | 
						|
    .set   r28,28
 | 
						|
    .set   r29,29
 | 
						|
    .set   r30,30
 | 
						|
    .set   r31,31
 | 
						|
 | 
						|
 # Mark from machine registers that are saved by C compiler
 | 
						|
    .globl  .GC_push_regs
 | 
						|
.GC_push_regs:
 | 
						|
    .extern .GC_push_one
 | 
						|
    stu	    r1,-64(r1)  # reserve stack frame
 | 
						|
    mflr    r0		# save link register
 | 
						|
    st      r0,0x48(r1)
 | 
						|
    oril    r3,r2,0x0   # mark from r2
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r13,0x0   # mark from r13-r31
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r14,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r15,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r16,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r17,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r18,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r19,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r20,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r21,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r22,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r23,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r24,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r25,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r26,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r27,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r28,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r29,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r30,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    oril    r3,r31,0x0
 | 
						|
    bl 	    .GC_push_one
 | 
						|
    cror    15,15,15
 | 
						|
    l       r0,0x48(r1)
 | 
						|
    mtlr    r0
 | 
						|
    ai      r1,r1,64
 | 
						|
    br
 |