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
 |