binutils-gdb/sim/testsuite/cris/hw/rv-n-cris/irq6.ms
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

100 lines
2.0 KiB
Plaintext

#mach: crisv10 crisv32
#sim(crisv10): --hw-device "/rv/trace? true"
#sim(crisv32): --hw-device "/rv/trace? true"
#output: /rv: WD\n
#output: /rv: REG R 0xd0000032\n
#output: /rv: := 0xabcdef01\n
#output: /rv: IRQ 0x4\n
#output: /rv: REG R 0xd0000036\n
#output: /rv: := 0x76543210\n
#output: /rv: REG R 0xd0000030\n
#output: /rv: IRQ 0x0\n
#output: /rv: IRQ 0x8\n
#output: /rv: := 0xeeff4455\n
#output: /rv: REG R 0xd0000034\n
#output: /rv: := 0xdd001122\n
#output: /rv: REG R 0xd0000038\n
#output: /rv: := 0xaaeeff44\n
#output: /rv: REG R 0xd000003c\n
#output: /rv: := 0xff445511\n
#output: pass\n
# Test two successive ints; that flags are disabled when an interrupt
# is taken, and then automatically (or by register restore) enabled at
# return.
#r W,
#r r,a8832,abcdef01
#r I,4
#r r,a8836,76543210
#r I,0
#r I,8
#r r,a8830,eeff4455
#r r,a8834,dd001122
#r r,a8838,aaeeff44
#r r,a883c,ff445511
.lcomm dummy,4
.include "testutils.inc"
start
test_h_mem 0xabcdef01 0xd0000032
moveq -1,$r4
.if ..asm.arch.cris.v32
move irqvec1,$ebp
.else
move irqvec1,$ibr
.endif
ei
test_h_mem 0,dummy
; Here after the first interrupt, or perhaps the second interrupt is
; taken directly; leave it optional. Anyway, the second interrupt
; should be taken no later than this branch.
test_h_mem 0,dummy
killme:
fail
irq0x33:
.if ..asm.arch.cris.v32
; Nothing needed to save flags - "shift" should happen, and back at rfe.
.else
; The missing sim support for interrupt-excluding instructions is matched
; by the flaw that sim doesn't service interrupts in straight code.
; So, we can use a sequence that would work on actual hardware.
move $dccr,$r5
di
.endif
test_h_mem 0x76543210 0xd0000036
test_h_mem 0xeeff4455 0xd0000030
test_h_mem 0xdd001122 0xd0000034
moveq -22,$r4
.if ..asm.arch.cris.v32
move irqvec2,$ebp
rete
rfe
.else
move irqvec2,$ibr
reti
move $r5,$dccr
.endif
pass
irq0x34:
test_h_mem 0xaaeeff44 0xd0000038
test_h_mem 0xff445511 0xd000003c
cmpq -22,$r4
bne killme
nop
pass
singlevec irqvec1,0x33,irq0x33
singlevec irqvec2,0x34,irq0x34