12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- # FRV testcase for break
- # mach: all
- .include "testutils.inc"
- start
- .global tra
- tra:
- ; Can't test break anymore in the user environment because it is the
- ; debugger's breakpoint insn. Just pass this test for now.
- pass
- set_gr_spr tbr,gr7
- and_gr_immed -4081,gr7 ; clear tbr.tt
- inc_gr_immed 0xff0,gr7 ; break handler
- set_bctrlr_0_0 gr7
- set_spr_immed 128,lcr
- test_spr_bits 0x4,2,0x1,psr ; psr.s is set
- test_spr_bits 0x1,0,0x0,psr ; psr.et is clear
- set_spr_addr ok1,lr
- break
- ret:
- or_spr_immed 0x00000001,psr ; turn on psr.et
- and_spr_immed 0xfffffffb,psr ; turn off psr.s
- test_spr_bits 0x4,2,0x0,psr ; psr.s is clear
- test_spr_bits 0x1,0,0x1,psr ; psr.et is set
- set_spr_addr ok0,lr
- break
- ret1:
- test_spr_bits 0x4,2,0x0,psr ; psr.s is clear
- test_spr_bits 0x1,0,0x1,psr ; psr.et is set
- pass
- ; check interrupt for second break
- ok0: test_spr_addr ret1,bpcsr
- test_spr_bits 0x1000,12,0x0,bpsr ; bpsr.bs is clear
- test_spr_bits 0x0001,0,0x1,bpsr ; bpsr.et is set
- test_spr_bits 0x4,2,0x1,psr ; psr.s is set
- test_spr_bits 0x1,0,0x0,psr ; psr.et is clear
- rett 0 ; nop
- rett 1
- ; check interrupt for first break
- ok1: test_spr_addr ret,bpcsr
- test_spr_bits 0x1000,12,0x1,bpsr ; bpsr.bs is set
- test_spr_bits 0x0001,0,0x0,bpsr ; bpsr.et is clear
- test_spr_bits 0x4,2,0x1,psr ; psr.s is set
- test_spr_bits 0x1,0,0x0,psr ; psr.et is clear
- rett 0 ; nop
- rett 1
-
|