27 lines
		
	
	
		
			618 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			618 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
# define call_push(x)     move    $4,x;    jal     GC_push_one
 | 
						|
 | 
						|
    .text
 | 
						|
 # Mark from machine registers that are saved by C compiler
 | 
						|
    .globl  GC_push_regs
 | 
						|
    .ent    GC_push_regs
 | 
						|
GC_push_regs:
 | 
						|
    subu    $sp,8       ## Need to save only return address
 | 
						|
    sw      $31,4($sp)
 | 
						|
    .mask   0x80000000,-4
 | 
						|
    .frame  $sp,8,$31
 | 
						|
    call_push($2)
 | 
						|
    call_push($3)
 | 
						|
    call_push($16)
 | 
						|
    call_push($17)
 | 
						|
    call_push($18)
 | 
						|
    call_push($19)
 | 
						|
    call_push($20)
 | 
						|
    call_push($21)
 | 
						|
    call_push($22)
 | 
						|
    call_push($23)
 | 
						|
    call_push($30)
 | 
						|
    lw      $31,4($sp)
 | 
						|
    addu    $sp,8
 | 
						|
    j       $31
 | 
						|
    .end    GC_push_regs
 |