mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
// sumtest.S
 | 
						|
// David_Harris@hmc.edu 24 December 2021
 | 
						|
 | 
						|
.global rvtest_entry_point
 | 
						|
rvtest_entry_point:
 | 
						|
    la sp, topofstack   # Initialize stack pointer
 | 
						|
    la t0, N            # get address of N in data
 | 
						|
    ld a0, 0(t0)        # load N
 | 
						|
    csrr s8, instret    # count instructions before call
 | 
						|
    jal sum             # call sum(N)
 | 
						|
    csrr s9, instret    # count instructions after call
 | 
						|
    sub s9, s9, s8      # length of call
 | 
						|
    la t0, begin_signature  # address of signature
 | 
						|
    sd a0, 0(t0)        # store sum(N) in signature
 | 
						|
    sd s9, 8(t0)        # record performance
 | 
						|
 | 
						|
write_tohost:
 | 
						|
    la t1, tohost
 | 
						|
    li t0, 1            # 1 for success, 3 for failure
 | 
						|
    sd t0, 0(t1)        # send success code
 | 
						|
 | 
						|
self_loop:
 | 
						|
    j self_loop         # wait
 | 
						|
    
 | 
						|
.section .tohost 
 | 
						|
tohost:                 # write to HTIF
 | 
						|
    .dword 0
 | 
						|
fromhost:
 | 
						|
    .dword 0
 | 
						|
 | 
						|
.data
 | 
						|
N:
 | 
						|
    .dword 4
 | 
						|
 | 
						|
.EQU XLEN,64
 | 
						|
begin_signature:
 | 
						|
    .fill 2*(XLEN/32),4,0xdeadbeef    # 
 | 
						|
end_signature:
 | 
						|
 | 
						|
# Initialize stack with room for 512 bytes
 | 
						|
.bss
 | 
						|
    .space 512
 | 
						|
topofstack:
 |