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
 |