 4e7d30a22a
			
		
	
	
		4e7d30a22a
		
	
	
	
	
		
			
			Instead of the lm32-sys device, use semihosting to print to the host console and exit the test. Signed-off-by: Michael Walle <michael@walle.cc>
		
			
				
	
	
		
			91 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
 | |
| .equ MAX_TESTNAME_LEN, 32
 | |
| .macro test_name name
 | |
| 	.data
 | |
| tn_\name:
 | |
| 	.ascii "\name"
 | |
| 	.space MAX_TESTNAME_LEN - (. - tn_\name), ' '
 | |
| 	.text
 | |
| 	.global \name
 | |
| \name:
 | |
| 	addi sp, sp, -12
 | |
| 	sw (sp+4), r1
 | |
| 	sw (sp+8), r2
 | |
| 	sw (sp+12), r3
 | |
| 	mvi r1, 1
 | |
| 	mvhi r2, hi(tn_\name)
 | |
| 	ori r2, r2, lo(tn_\name)
 | |
| 	mvi r3, MAX_TESTNAME_LEN
 | |
| 	calli _write
 | |
| 	lw r3, (sp+12)
 | |
| 	lw r2, (sp+8)
 | |
| 	lw r1, (sp+4)
 | |
| 	addi sp, sp, 12
 | |
| .endm
 | |
| 
 | |
| .macro load reg val
 | |
| 	mvhi \reg, hi(\val)
 | |
| 	ori \reg, \reg, lo(\val)
 | |
| .endm
 | |
| 
 | |
| .macro tc_pass
 | |
| 	calli _tc_pass
 | |
| .endm
 | |
| 
 | |
| .macro tc_fail
 | |
| 	addi r12, r12, 1
 | |
| 	calli _tc_fail
 | |
| .endm
 | |
| 
 | |
| .macro check_r3 val
 | |
| 	mvhi r13, hi(\val)
 | |
| 	ori r13, r13, lo(\val)
 | |
| 	be r3, r13, 1f
 | |
| 	tc_fail
 | |
| 	bi 2f
 | |
| 1:
 | |
| 	tc_pass
 | |
| 2:
 | |
| .endm
 | |
| 
 | |
| .macro check_mem adr val
 | |
| 	mvhi r13, hi(\adr)
 | |
| 	ori r13, r13, lo(\adr)
 | |
| 	mvhi r14, hi(\val)
 | |
| 	ori r14, r14, lo(\val)
 | |
| 	lw r13, (r13+0)
 | |
| 	be r13, r14, 1f
 | |
| 	tc_fail
 | |
| 	bi 2f
 | |
| 1:
 | |
| 	tc_pass
 | |
| 2:
 | |
| .endm
 | |
| 
 | |
| .macro check_excp excp
 | |
| 	andi r13, r25, \excp
 | |
| 	bne r13, r0, 1f
 | |
| 	tc_fail
 | |
| 	bi 2f
 | |
| 1:
 | |
| 	tc_pass
 | |
| 2:
 | |
| .endm
 | |
| 
 | |
| .macro start
 | |
| 	.global _main
 | |
| 	.text
 | |
| _main:
 | |
| 	mvi r12, 0
 | |
| .endm
 | |
| 
 | |
| .macro end
 | |
| 	mv r1, r12
 | |
| 	calli _exit
 | |
| .endm
 | |
| 
 | |
| # base +
 | |
| #  0  ctrl
 | |
| #  4  pass/fail
 | |
| #  8  ptr to test name
 |