qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

test_phys_mem.S (2415B)


      1 #include "macros.inc"
      2 
      3 test_suite phys_mem
      4 
      5 #if XCHAL_HAVE_PTP_MMU
      6 
      7 .purgem test_init
      8 
      9 .macro test_init
     10     movi    a2, 0xc0000003 /* PPN */
     11     movi    a3, 0xc0000004 /* VPN */
     12     wdtlb   a2, a3
     13     witlb   a2, a3
     14     movi    a2, 0xc0000000
     15     wsr     a2, ptevaddr
     16 #if XCHAL_HAVE_SPANNING_WAY
     17     movi    a2, 0xc0000000 | XCHAL_SPANNING_WAY
     18     idtlb   a2
     19     iitlb   a2
     20     movi    a2, 0x20000000 | XCHAL_SPANNING_WAY
     21     idtlb   a2
     22     iitlb   a2
     23 #endif
     24 .endm
     25 
     26 test inst_fetch_get_pte_no_phys
     27     set_vector kernel, 2f
     28 
     29     movi    a2, 0x20000000
     30     jx      a2
     31 2:
     32     movi    a2, 0x20000000
     33     rsr     a3, excvaddr
     34     assert  eq, a2, a3
     35     rsr     a3, epc1
     36     assert  eq, a2, a3
     37     rsr     a3, exccause
     38     movi    a2, 16
     39     assert  eq, a2, a3
     40 test_end
     41 
     42 test read_get_pte_no_phys
     43     set_vector kernel, 2f
     44 
     45     movi    a2, 0x20000000
     46 1:
     47     l32i    a3, a2, 0
     48     test_fail
     49 2:
     50     movi    a2, 0x20000000
     51     rsr     a3, excvaddr
     52     assert  eq, a2, a3
     53     movi    a2, 1b
     54     rsr     a3, epc1
     55     assert  eq, a2, a3
     56     rsr     a3, exccause
     57     movi    a2, 24
     58     assert  eq, a2, a3
     59 test_end
     60 
     61 test write_get_pte_no_phys
     62     set_vector kernel, 2f
     63 
     64     movi    a2, 0x20000000
     65 1:
     66     s32i    a3, a2, 0
     67     test_fail
     68 2:
     69     movi    a2, 0x20000000
     70     rsr     a3, excvaddr
     71     assert  eq, a2, a3
     72     movi    a2, 1b
     73     rsr     a3, epc1
     74     assert  eq, a2, a3
     75     rsr     a3, exccause
     76     movi    a2, 24
     77     assert  eq, a2, a3
     78 test_end
     79 
     80 #endif
     81 
     82 test inst_fetch_no_phys
     83     set_vector kernel, 2f
     84 
     85     movi    a2, 0xc0000000
     86     jx      a2
     87 2:
     88     movi    a2, 0xc0000000
     89     rsr     a3, excvaddr
     90     assert  eq, a2, a3
     91     rsr     a3, epc1
     92     assert  eq, a2, a3
     93     rsr     a3, exccause
     94     movi    a2, 14
     95     assert  eq, a2, a3
     96 test_end
     97 
     98 test read_no_phys
     99     set_vector kernel, 2f
    100 
    101     movi    a2, 0xc0000000
    102 1:
    103     l32i    a3, a2, 0
    104     test_fail
    105 2:
    106     movi    a2, 0xc0000000
    107     rsr     a3, excvaddr
    108     assert  eq, a2, a3
    109     movi    a2, 1b
    110     rsr     a3, epc1
    111     assert  eq, a2, a3
    112     rsr     a3, exccause
    113     movi    a2, 15
    114     assert  eq, a2, a3
    115 test_end
    116 
    117 test write_no_phys
    118     set_vector kernel, 2f
    119 
    120     movi    a2, 0xc0000000
    121 1:
    122     s32i    a3, a2, 0
    123     test_fail
    124 2:
    125     movi    a2, 0xc0000000
    126     rsr     a3, excvaddr
    127     assert  eq, a2, a3
    128     movi    a2, 1b
    129     rsr     a3, epc1
    130     assert  eq, a2, a3
    131     rsr     a3, exccause
    132     movi    a2, 15
    133     assert  eq, a2, a3
    134 test_end
    135 
    136 test_suite_end