58 lines
1.4 KiB
Text
58 lines
1.4 KiB
Text
# 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
|
|
|
|
|