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 |