#include "macros.inc" | |
test_suite phys_mem | |
#if XCHAL_HAVE_PTP_MMU | |
.purgem test_init | |
.macro test_init | |
movi a2, 0xc0000003 /* PPN */ | |
movi a3, 0xc0000004 /* VPN */ | |
wdtlb a2, a3 | |
witlb a2, a3 | |
movi a2, 0xc0000000 | |
wsr a2, ptevaddr | |
#if XCHAL_HAVE_SPANNING_WAY | |
movi a2, 0xc0000000 | XCHAL_SPANNING_WAY | |
idtlb a2 | |
iitlb a2 | |
movi a2, 0x20000000 | XCHAL_SPANNING_WAY | |
idtlb a2 | |
iitlb a2 | |
#endif | |
.endm | |
test inst_fetch_get_pte_no_phys | |
set_vector kernel, 2f | |
movi a2, 0x20000000 | |
jx a2 | |
2: | |
movi a2, 0x20000000 | |
rsr a3, excvaddr | |
assert eq, a2, a3 | |
rsr a3, epc1 | |
assert eq, a2, a3 | |
rsr a3, exccause | |
movi a2, 16 | |
assert eq, a2, a3 | |
test_end | |
test read_get_pte_no_phys | |
set_vector kernel, 2f | |
movi a2, 0x20000000 | |
1: | |
l32i a3, a2, 0 | |
test_fail | |
2: | |
movi a2, 0x20000000 | |
rsr a3, excvaddr | |
assert eq, a2, a3 | |
movi a2, 1b | |
rsr a3, epc1 | |
assert eq, a2, a3 | |
rsr a3, exccause | |
movi a2, 24 | |
assert eq, a2, a3 | |
test_end | |
test write_get_pte_no_phys | |
set_vector kernel, 2f | |
movi a2, 0x20000000 | |
1: | |
s32i a3, a2, 0 | |
test_fail | |
2: | |
movi a2, 0x20000000 | |
rsr a3, excvaddr | |
assert eq, a2, a3 | |
movi a2, 1b | |
rsr a3, epc1 | |
assert eq, a2, a3 | |
rsr a3, exccause | |
movi a2, 24 | |
assert eq, a2, a3 | |
test_end | |
#endif | |
test inst_fetch_no_phys | |
set_vector kernel, 2f | |
movi a2, 0xc0000000 | |
jx a2 | |
2: | |
movi a2, 0xc0000000 | |
rsr a3, excvaddr | |
assert eq, a2, a3 | |
rsr a3, epc1 | |
assert eq, a2, a3 | |
rsr a3, exccause | |
movi a2, 14 | |
assert eq, a2, a3 | |
test_end | |
test read_no_phys | |
set_vector kernel, 2f | |
movi a2, 0xc0000000 | |
1: | |
l32i a3, a2, 0 | |
test_fail | |
2: | |
movi a2, 0xc0000000 | |
rsr a3, excvaddr | |
assert eq, a2, a3 | |
movi a2, 1b | |
rsr a3, epc1 | |
assert eq, a2, a3 | |
rsr a3, exccause | |
movi a2, 15 | |
assert eq, a2, a3 | |
test_end | |
test write_no_phys | |
set_vector kernel, 2f | |
movi a2, 0xc0000000 | |
1: | |
s32i a3, a2, 0 | |
test_fail | |
2: | |
movi a2, 0xc0000000 | |
rsr a3, excvaddr | |
assert eq, a2, a3 | |
movi a2, 1b | |
rsr a3, epc1 | |
assert eq, a2, a3 | |
rsr a3, exccause | |
movi a2, 15 | |
assert eq, a2, a3 | |
test_end | |
test_suite_end |