mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 02:54:58 -06:00
tests: mv tests/* -> tests/tcg
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
a0f426109e
commit
c09015dd04
227 changed files with 5 additions and 5 deletions
318
tests/tcg/xtensa/test_mmu.S
Normal file
318
tests/tcg/xtensa/test_mmu.S
Normal file
|
@ -0,0 +1,318 @@
|
|||
.include "macros.inc"
|
||||
|
||||
test_suite mmu
|
||||
|
||||
.purgem test
|
||||
|
||||
.macro test name
|
||||
movi a2, 0x00000004
|
||||
idtlb a2
|
||||
movi a2, 0x00100004
|
||||
idtlb a2
|
||||
movi a2, 0x00200004
|
||||
idtlb a2
|
||||
movi a2, 0x00300004
|
||||
idtlb a2
|
||||
movi a2, 0x00000007
|
||||
idtlb a2
|
||||
.endm
|
||||
|
||||
test tlb_group
|
||||
movi a2, 0x04000002 /* PPN */
|
||||
movi a3, 0x01200004 /* VPN */
|
||||
wdtlb a2, a3
|
||||
witlb a2, a3
|
||||
movi a3, 0x00200004
|
||||
rdtlb0 a1, a3
|
||||
ritlb0 a2, a3
|
||||
movi a3, 0x01000001
|
||||
assert eq, a1, a3
|
||||
assert eq, a2, a3
|
||||
movi a3, 0x00200004
|
||||
rdtlb1 a1, a3
|
||||
ritlb1 a2, a3
|
||||
movi a3, 0x04000002
|
||||
assert eq, a1, a3
|
||||
assert eq, a2, a3
|
||||
movi a3, 0x01234567
|
||||
pdtlb a1, a3
|
||||
pitlb a2, a3
|
||||
movi a3, 0x01234014
|
||||
assert eq, a1, a3
|
||||
movi a3, 0x0123400c
|
||||
assert eq, a2, a3
|
||||
movi a3, 0x00200004
|
||||
idtlb a3
|
||||
iitlb a3
|
||||
movi a3, 0x01234567
|
||||
pdtlb a1, a3
|
||||
pitlb a2, a3
|
||||
movi a3, 0x00000010
|
||||
and a1, a1, a3
|
||||
assert eqi, a1, 0
|
||||
movi a3, 0x00000008
|
||||
and a2, a2, a3
|
||||
assert eqi, a2, 0
|
||||
test_end
|
||||
|
||||
test itlb_miss
|
||||
set_vector kernel, 1f
|
||||
|
||||
movi a3, 0x00100000
|
||||
jx a3
|
||||
test_fail
|
||||
1:
|
||||
rsr a2, excvaddr
|
||||
assert eq, a2, a3
|
||||
rsr a2, exccause
|
||||
movi a3, 16
|
||||
assert eq, a2, a3
|
||||
test_end
|
||||
|
||||
test dtlb_miss
|
||||
set_vector kernel, 1f
|
||||
|
||||
movi a3, 0x00100000
|
||||
l8ui a2, a3, 0
|
||||
test_fail
|
||||
1:
|
||||
rsr a2, excvaddr
|
||||
assert eq, a2, a3
|
||||
rsr a2, exccause
|
||||
movi a3, 24
|
||||
assert eq, a2, a3
|
||||
test_end
|
||||
|
||||
test itlb_multi_hit
|
||||
set_vector kernel, 1f
|
||||
|
||||
movi a2, 0x04000002 /* PPN */
|
||||
movi a3, 0xf0000004 /* VPN */
|
||||
witlb a2, a3
|
||||
movi a3, 0xf0000000
|
||||
pitlb a2, a3
|
||||
test_fail
|
||||
1:
|
||||
rsr a2, exccause
|
||||
movi a3, 17
|
||||
assert eq, a2, a3
|
||||
test_end
|
||||
|
||||
test dtlb_multi_hit
|
||||
set_vector kernel, 1f
|
||||
|
||||
movi a2, 0x04000002 /* PPN */
|
||||
movi a3, 0x01200004 /* VPN */
|
||||
wdtlb a2, a3
|
||||
movi a3, 0x01200007 /* VPN */
|
||||
wdtlb a2, a3
|
||||
movi a3, 0x01200000
|
||||
pdtlb a2, a3
|
||||
test_fail
|
||||
1:
|
||||
rsr a2, exccause
|
||||
movi a3, 25
|
||||
assert eq, a2, a3
|
||||
test_end
|
||||
|
||||
test inst_fetch_privilege
|
||||
set_vector kernel, 3f
|
||||
|
||||
movi a2, 0x4004f
|
||||
wsr a2, ps
|
||||
1:
|
||||
isync
|
||||
nop
|
||||
2:
|
||||
test_fail
|
||||
3:
|
||||
movi a1, 1b
|
||||
rsr a2, excvaddr
|
||||
rsr a3, epc1
|
||||
assert ge, a2, a1
|
||||
assert ge, a3, a1
|
||||
movi a1, 2b
|
||||
assert lt, a2, a1
|
||||
assert lt, a3, a1
|
||||
rsr a2, exccause
|
||||
movi a3, 18
|
||||
assert eq, a2, a3
|
||||
rsr a2, ps
|
||||
movi a3, 0x4005f
|
||||
assert eq, a2, a3
|
||||
test_end
|
||||
|
||||
test load_store_privilege
|
||||
set_vector kernel, 2f
|
||||
|
||||
movi a3, 10f
|
||||
pitlb a3, a3
|
||||
ritlb1 a2, a3
|
||||
movi a1, 0x10
|
||||
or a2, a2, a1
|
||||
movi a1, 0x000ff000
|
||||
and a3, a3, a1
|
||||
movi a1, 4
|
||||
or a3, a3, a1
|
||||
witlb a2, a3
|
||||
movi a3, 10f
|
||||
movi a1, 0x000fffff
|
||||
and a1, a3, a1
|
||||
|
||||
movi a2, 0x04000003 /* PPN */
|
||||
movi a3, 0x01200004 /* VPN */
|
||||
wdtlb a2, a3
|
||||
movi a3, 0x01200001
|
||||
movi a2, 0x4004f
|
||||
jx a1
|
||||
10:
|
||||
wsr a2, ps
|
||||
isync
|
||||
1:
|
||||
l8ui a2, a3, 0
|
||||
test_fail
|
||||
2:
|
||||
rsr a2, excvaddr
|
||||
assert eq, a2, a3
|
||||
rsr a2, epc1
|
||||
movi a3, 1b
|
||||
movi a1, 0x000fffff
|
||||
and a3, a3, a1
|
||||
assert eq, a2, a3
|
||||
rsr a2, exccause
|
||||
movi a3, 26
|
||||
assert eq, a2, a3
|
||||
rsr a2, ps
|
||||
movi a3, 0x4005f
|
||||
assert eq, a2, a3
|
||||
test_end
|
||||
|
||||
test cring_load_store_privilege
|
||||
set_vector kernel, 0
|
||||
set_vector double, 2f
|
||||
|
||||
movi a2, 0x04000003 /* PPN */
|
||||
movi a3, 0x01200004 /* VPN */
|
||||
wdtlb a2, a3
|
||||
movi a3, 0x01200004
|
||||
movi a2, 0x4005f /* ring 1 + excm => cring == 0 */
|
||||
wsr a2, ps
|
||||
isync
|
||||
l8ui a2, a3, 0 /* cring used */
|
||||
1:
|
||||
l32e a2, a3, -4 /* ring used */
|
||||
test_fail
|
||||
2:
|
||||
rsr a2, excvaddr
|
||||
addi a2, a2, 4
|
||||
assert eq, a2, a3
|
||||
rsr a2, depc
|
||||
movi a3, 1b
|
||||
assert eq, a2, a3
|
||||
rsr a2, exccause
|
||||
movi a3, 26
|
||||
assert eq, a2, a3
|
||||
rsr a2, ps
|
||||
movi a3, 0x4005f
|
||||
assert eq, a2, a3
|
||||
test_end
|
||||
|
||||
test inst_fetch_prohibited
|
||||
set_vector kernel, 2f
|
||||
|
||||
movi a3, 10f
|
||||
pitlb a3, a3
|
||||
ritlb1 a2, a3
|
||||
movi a1, 0xfffff000
|
||||
and a2, a2, a1
|
||||
movi a1, 0x4
|
||||
or a2, a2, a1
|
||||
movi a1, 0x000ff000
|
||||
and a3, a3, a1
|
||||
movi a1, 4
|
||||
or a3, a3, a1
|
||||
witlb a2, a3
|
||||
movi a3, 10f
|
||||
movi a1, 0x000fffff
|
||||
and a1, a3, a1
|
||||
jx a1
|
||||
.align 4
|
||||
10:
|
||||
nop
|
||||
test_fail
|
||||
2:
|
||||
rsr a2, excvaddr
|
||||
assert eq, a2, a1
|
||||
rsr a2, epc1
|
||||
assert eq, a2, a1
|
||||
rsr a2, exccause
|
||||
movi a3, 20
|
||||
assert eq, a2, a3
|
||||
test_end
|
||||
|
||||
test load_prohibited
|
||||
set_vector kernel, 2f
|
||||
|
||||
movi a2, 0x0400000c /* PPN */
|
||||
movi a3, 0x01200004 /* VPN */
|
||||
wdtlb a2, a3
|
||||
movi a3, 0x01200002
|
||||
1:
|
||||
l8ui a2, a3, 0
|
||||
test_fail
|
||||
2:
|
||||
rsr a2, excvaddr
|
||||
assert eq, a2, a3
|
||||
rsr a2, epc1
|
||||
movi a3, 1b
|
||||
assert eq, a2, a3
|
||||
rsr a2, exccause
|
||||
movi a3, 28
|
||||
assert eq, a2, a3
|
||||
test_end
|
||||
|
||||
test store_prohibited
|
||||
set_vector kernel, 2f
|
||||
|
||||
movi a2, 0x04000001 /* PPN */
|
||||
movi a3, 0x01200004 /* VPN */
|
||||
wdtlb a2, a3
|
||||
movi a3, 0x01200003
|
||||
l8ui a2, a3, 0
|
||||
1:
|
||||
s8i a2, a3, 0
|
||||
test_fail
|
||||
2:
|
||||
rsr a2, excvaddr
|
||||
assert eq, a2, a3
|
||||
rsr a2, epc1
|
||||
movi a3, 1b
|
||||
assert eq, a2, a3
|
||||
rsr a2, exccause
|
||||
movi a3, 29
|
||||
assert eq, a2, a3
|
||||
test_end
|
||||
|
||||
test dtlb_autoload
|
||||
set_vector kernel, 0
|
||||
|
||||
movi a2, 0xd4000000
|
||||
wsr a2, ptevaddr
|
||||
movi a3, 0x00001013
|
||||
s32i a3, a2, 4
|
||||
pdtlb a2, a3
|
||||
movi a1, 0x10
|
||||
and a1, a1, a2
|
||||
assert eqi, a1, 0
|
||||
l8ui a1, a3, 0
|
||||
pdtlb a2, a3
|
||||
movi a1, 0xfffff010
|
||||
and a1, a1, a2
|
||||
movi a3, 0x00001010
|
||||
assert eq, a1, a3
|
||||
movi a1, 0xf
|
||||
and a1, a1, a2
|
||||
assert lti, a1, 4
|
||||
test_end
|
||||
|
||||
test_suite_end
|
Loading…
Add table
Add a link
Reference in a new issue