binutils-gdb/sim/testsuite/frv/interrupts/badalign.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

74 lines
2.0 KiB
Plaintext

# frv testcase to generate interrupt for st $GRk,@($GRi,$GRj)
# mach: fr500 frv
.include "testutils.inc"
start
.global align
align:
and_spr_immed -4081,tbr ; clear tbr.tt
set_gr_spr tbr,gr17
inc_gr_immed 0x100,gr17 ; address of exception handler
set_bctrlr_0_0 gr17
set_spr_immed 128,lcr
set_spr_addr ok1,lr
set_psr_et 1
set_gr_immed 0xdeadbeef,gr17
set_gr_immed 0,gr15
inc_gr_immed 2,sp ; out of alignment
test_spr_bits 1,0,1,isr ; mem_address_not_aligned is masked
sti gr17,@(sp,0) ; no exception
ldi @(sp,-2),gr18 ; stored at aligned address
test_gr_immed 0xdeadbeef,gr18
ldi @(sp,0),gr19 ; no exception
test_gr_immed 0xdeadbeef,gr19
and_spr_immed 0xfffffffe,isr ; turn off ISR.EMAM
set_gr_addr bad1,gr16
bad1: sti gr17,@(sp,0) ; misaligned write in slot I1
test_gr_immed 1,gr15
set_gr_addr bad3,gr16
set_gr_gr sp,gr20
set_gr_immed 1,gr21
set_gr_immed 0x10101010,gr10
bad2: nop.p
bad3: ldu @(sp,gr21),gr10 ; misaligned read in slot I2
test_gr_immed 2,gr15 ; handler was called
test_gr_immed 0x10101010,gr10 ; gr10 not updated
test_gr_immed 1,gr21 ; gr21 not updated
inc_gr_immed 1,gr20
test_gr_gr gr20,sp ; sp updated
pass
; exception handler
ok1:
cmpi gr15,0,icc0
bne icc0,0,load
; handle interrupt on store
test_spr_immed 0x100,esfr1 ; esr8 is active
test_spr_gr epcr8,gr16
test_spr_bits 0x0001,0,0x1,esr8 ; esr8 is valid
test_spr_bits 0x003e,1,0xb,esr8 ; esr8.ec is set
test_spr_bits 0x0800,11,0x1,esr8 ; esr8.eav is set
test_spr_gr ear8,sp
test_spr_bits 0x01000,12,0x1,esr8 ; esr8.edv is set
test_spr_bits 0x1e000,13,0x3,esr8 ; esr8.edn is 3
test_spr_gr edr3,gr17 ; edr3 is set
bra ret
load:
; handle interrupt on load
test_spr_immed 0x200,esfr1 ; esr9 is active
test_spr_gr epcr9,gr16
test_spr_bits 0x0001,0,0x1,esr9 ; esr9 is valid
test_spr_bits 0x003e,1,0xb,esr9 ; esr9.ec is set
test_spr_bits 0x0800,11,0x1,esr9 ; esr9.eav is set
test_spr_gr ear9,sp
test_spr_bits 0x1000,12,0x0,esr9 ; esr9.edv is not set
ret:
inc_gr_immed 1,gr15
rett 0
fail