binutils-gdb/sim/testsuite/frv/interrupts/reset.cgs
Mike Frysinger 1368b914e9 sim: testsuite: flatten tree
Now that all port tests live under testsuite/sim/*/, and none live
in testsuite/ directly, flatten the structure by moving all of the
dirs under testsuite/sim/ to testsuite/ directly.

We need to stop passing --tool to dejagnu so that it searches all
dirs and not just ones that start with "sim".  Since we have no
other dirs in this tree, and no plans to add any, should be fine.
2021-01-15 19:18:34 -05:00

82 lines
2.3 KiB
Plaintext

# frv testcase to generate reset interrupts
# mach: fr500 fr550 fr400
# sim: --memory-region 0xff000000,64
.include "testutils.inc"
start
.global reset
reset:
and_spr_immed 0xfffffffb,psr ; turn off PSR.S
set_gr_immed 0xfeff0500,gr10 ; address of reset register
set_spr_immed 0x7fffffff,lcr
set_bctrlr_0_0 gr0
; Can't recover from hardware interrupt with enough state intact to verify it
; set_spr_addr ok1,lr
; set_mem_immed 0x3,gr10 ; cause hardware reset
; dcf @(gr10,gr0) ; Wait for store to happen
; fail
;
;ok1: ; reset should branch to reset address which should then branch here
; test_mem_immed 0x00000200,gr10
; set_spr_addr ok2,lr
; set_mem_immed 0x2,gr10 ; cause hardware reset
; dcf @(gr10,gr0) ; Wait for store to happen
; fail
;
ok2: ; reset should branch to reset address which should then branch here
; test_mem_immed 0x00000200,gr10
set_spr_addr ok3,lr
set_mem_immed 0x1,gr10 ; cause software reset
dcf @(gr10,gr0) ; Wait for store to happen
fail
ok3: ; reset should branch to reset address which should then branch here
test_mem_immed 0x00000100,gr10
test_spr_bits 0x4,2,1,psr ; psr.s is set
test_spr_bits 0x2,1,0,psr ; psr.ps not set
set_spr_addr bad,lr
set_mem_immed 0x0,gr10 ; no reset
test_mem_immed 0x0,gr10
; now retest with HSR0.SA set
set_mem_immed 0,gr0
set_gr_addr 0xff000000,gr11
set_bctrlr_0_0 gr11
or_spr_immed 0x00001000,hsr0 ; set HSR0.SA
; Can't recover from hardware interrupt with enough state intact to verify it
; set_spr_addr ok4,lr
; dcf @(gr10,gr0) ; Wait for store to happen
; set_mem_immed 0x3,gr10 ; cause hardware reset
; fail
;
;ok4: ; reset should branch to reset address which should then branch here
; test_mem_immed 0x00000200,gr10
; set_spr_addr ok5,lr
; set_mem_immed 0x2,gr10 ; cause hardware reset
; dcf @(gr10,gr0) ; Wait for store to happen
; fail
;
ok5: ; reset should branch to reset address which should then branch here
; test_mem_immed 0x00000200,gr10
set_spr_addr ok6,lr
set_mem_immed 0x1,gr10 ; cause software reset
dcf @(gr10,gr0) ; Wait for store to happen
fail
ok6: ; reset should branch to reset address which should then branch here
test_mem_immed 0x00000100,gr10
test_spr_bits 0x4,2,1,psr ; psr.s is set
test_spr_bits 0x2,1,1,psr ; psr.ps is set
set_spr_addr bad,lr
set_mem_immed 0x0,gr10 ; no reset
test_mem_immed 0x0,gr10
pass
bad: ; Should never get here
fail