mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
1368b914e9
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.
169 lines
2.9 KiB
Plaintext
169 lines
2.9 KiB
Plaintext
# mach: frv fr500 fr550
|
|
# sim: --memory-region 0xff000000,4 --memory-region 0xfe000000,00404000
|
|
# xfail: "crashes with bad write" frv-*
|
|
|
|
; Exit with return code
|
|
|
|
.macro exit rc
|
|
setlos.p #1,gr7
|
|
setlos \rc,gr8
|
|
tira gr0,#0
|
|
.endm
|
|
|
|
; Pass the test case
|
|
.macro pass
|
|
pass:
|
|
setlos.p #5,gr10
|
|
setlos #1,gr8
|
|
setlos #5,gr7
|
|
sethi.p %hi(passmsg),gr9
|
|
setlo %lo(passmsg),gr9
|
|
tira gr0,#0
|
|
exit #0
|
|
.endm
|
|
|
|
; Fail the testcase
|
|
.macro fail
|
|
fail\@:
|
|
setlos.p #5,gr10
|
|
setlos #1,gr8
|
|
setlos #5,gr7
|
|
sethi.p %hi(failmsg),gr9
|
|
setlo %lo(failmsg),gr9
|
|
tira gr0,#0
|
|
exit #1
|
|
.endm
|
|
|
|
.data
|
|
failmsg:
|
|
.ascii "fail\n"
|
|
passmsg:
|
|
.ascii "pass\n"
|
|
|
|
.text
|
|
.global _start
|
|
_start:
|
|
movsg hsr0,gr10 ; enable insn and data caches
|
|
sethi.p 0xc800,gr11 ; in copy-back mode
|
|
setlo 0x0000,gr11
|
|
or gr10,gr11,gr10
|
|
movgs gr10,hsr0
|
|
|
|
sethi.p 0x7,sp
|
|
setlo 0x0000,sp
|
|
|
|
; fill the cache
|
|
sethi.p %hi(done1),gr10
|
|
setlo %lo(done1),gr10
|
|
movgs gr10,lr
|
|
setlos.p 0x1000,gr10
|
|
setlos 0x0,gr11
|
|
movgs gr10,lcr
|
|
write1: st.p gr11,@(sp,gr11)
|
|
addi.p gr11,4,gr11
|
|
bctrlr.p 1,0
|
|
bra write1
|
|
done1:
|
|
; read it back
|
|
sethi.p %hi(done2),gr10
|
|
setlo %lo(done2),gr10
|
|
movgs gr10,lr
|
|
setlos.p 0x1000,gr10
|
|
setlos 0x0,gr11
|
|
movgs gr10,lcr
|
|
read1: ld @(sp,gr11),gr12
|
|
cmp gr11,gr12,icc0
|
|
bne icc0,1,fail
|
|
addi.p gr11,4,gr11
|
|
bctrlr.p 1,0
|
|
bra read1
|
|
done2:
|
|
|
|
; fill the cache twice
|
|
sethi.p %hi(done3),gr10
|
|
setlo %lo(done3),gr10
|
|
movgs gr10,lr
|
|
setlos.p 0x2000,gr10
|
|
setlos 0x0,gr11
|
|
movgs gr10,lcr
|
|
write3: st.p gr11,@(sp,gr11)
|
|
addi.p gr11,4,gr11
|
|
bctrlr.p 1,0
|
|
bra write3
|
|
done3:
|
|
; read it back
|
|
sethi.p %hi(done4),gr10
|
|
setlo %lo(done4),gr10
|
|
movgs gr10,lr
|
|
setlos.p 0x2000,gr10
|
|
setlos 0x0,gr11
|
|
movgs gr10,lcr
|
|
read4: ld @(sp,gr11),gr12
|
|
cmp gr11,gr12,icc0
|
|
bne icc0,1,fail
|
|
addi.p gr11,4,gr11
|
|
bctrlr.p 1,0
|
|
bra read4
|
|
done4:
|
|
; read it back in reverse
|
|
sethi.p %hi(done5),gr10
|
|
setlo %lo(done5),gr10
|
|
movgs gr10,lr
|
|
setlos.p 0x2000,gr10
|
|
setlos 0x7ffc,gr11
|
|
movgs gr10,lcr
|
|
read5: ld @(sp,gr11),gr12
|
|
cmp gr11,gr12,icc0
|
|
bne icc0,1,fail
|
|
subi.p gr11,4,gr11
|
|
bctrlr.p 1,0
|
|
bra read5
|
|
done5:
|
|
|
|
; access data and insns in non-cache areas
|
|
sethi.p 0x8038,gr11 ; bctrlr 0,0
|
|
setlo 0x2000,gr11
|
|
|
|
sethi.p 0xff00,gr10 ; documented area
|
|
setlo 0x0000,gr10
|
|
sti gr11,@(gr10,0)
|
|
jmpl @(gr10,gr0)
|
|
|
|
; enable RAM mode
|
|
movsg hsr0,gr10
|
|
sethi.p 0x0040,gr12
|
|
setlo 0x0000,gr12
|
|
or gr10,gr12,gr10
|
|
movgs gr10,hsr0
|
|
|
|
sethi.p 0xfe00,gr10 ; documented area
|
|
setlo 0x0400,gr10
|
|
sti gr11,@(gr10,0)
|
|
jmpl @(gr10,gr0)
|
|
|
|
sethi.p 0xfe40,gr10 ; documented area
|
|
setlo 0x0400,gr10
|
|
sti gr11,@(gr10,0)
|
|
dcf @(gr10,gr0)
|
|
jmpl @(gr10,gr0)
|
|
|
|
sethi.p 0x0007,gr10 ; non RAM area
|
|
setlo 0x0000,gr10
|
|
sti gr11,@(gr10,0)
|
|
jmpl @(gr10,gr0)
|
|
|
|
sethi.p 0xfe00,gr10 ; insn RAM area
|
|
setlo 0x0000,gr10
|
|
sti gr11,@(gr10,0)
|
|
jmpl @(gr10,gr0)
|
|
|
|
sethi.p 0xfe40,gr10 ; data RAM area
|
|
setlo 0x0000,gr10
|
|
sti gr11,@(gr10,0)
|
|
dcf @(gr10,gr0)
|
|
jmpl @(gr10,gr0)
|
|
|
|
pass
|
|
fail:
|
|
fail
|