mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			25 lines
		
	
	
		
			490 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			490 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .section .text.init
 | |
| .globl rvtest_entry_point
 | |
| rvtest_entry_point:
 | |
| 
 | |
| 
 | |
| la a0, lock
 | |
| 
 | |
| spinlock:				# address of lock is in a0
 | |
| 	lr.w t0, (a0)		# read the lock
 | |
| 	bnez t0, retry	    # spin until free
 | |
| 	li   t1, 1          
 | |
| 	sc.w t0, t1, (a0)	# try to write a 1 to take lock
 | |
| 	bnez t0, retry	    # spin until successful
 | |
| 	ret				    # got the lock!
 | |
| retry:				    # no lock yet
 | |
| 	pause				# pause hint to reduce spin power
 | |
| 	j spinlock			# try again
 | |
| 
 | |
| 
 | |
| self_loop:
 | |
|     j self_loop
 | |
| 
 | |
| .data
 | |
| lock:   
 | |
|     .word 1 |