Annotation of qemu/tests/xtensa/test_mmu.S, revision 1.1.1.1

1.1       root        1: .include "macros.inc"
                      2: 
                      3: test_suite mmu
                      4: 
                      5: .purgem test
                      6: 
                      7: .macro test name
                      8:     movi    a2, 0x00000004
                      9:     idtlb   a2
                     10:     movi    a2, 0x00100004
                     11:     idtlb   a2
                     12:     movi    a2, 0x00200004
                     13:     idtlb   a2
                     14:     movi    a2, 0x00300004
                     15:     idtlb   a2
                     16:     movi    a2, 0x00000007
                     17:     idtlb   a2
                     18: .endm
                     19: 
                     20: test tlb_group
                     21:     movi    a2, 0x04000002 /* PPN */
                     22:     movi    a3, 0x01200004 /* VPN */
                     23:     wdtlb   a2, a3
                     24:     witlb   a2, a3
                     25:     movi    a3, 0x00200004
                     26:     rdtlb0  a1, a3
                     27:     ritlb0  a2, a3
                     28:     movi    a3, 0x01000001
                     29:     assert  eq, a1, a3
                     30:     assert  eq, a2, a3
                     31:     movi    a3, 0x00200004
                     32:     rdtlb1  a1, a3
                     33:     ritlb1  a2, a3
                     34:     movi    a3, 0x04000002
                     35:     assert  eq, a1, a3
                     36:     assert  eq, a2, a3
                     37:     movi    a3, 0x01234567
                     38:     pdtlb   a1, a3
                     39:     pitlb   a2, a3
                     40:     movi    a3, 0x01234014
                     41:     assert  eq, a1, a3
                     42:     movi    a3, 0x0123400c
                     43:     assert  eq, a2, a3
                     44:     movi    a3, 0x00200004
                     45:     idtlb   a3
                     46:     iitlb   a3
                     47:     movi    a3, 0x01234567
                     48:     pdtlb   a1, a3
                     49:     pitlb   a2, a3
                     50:     movi    a3, 0x00000010
                     51:     and     a1, a1, a3
                     52:     assert  eqi, a1, 0
                     53:     movi    a3, 0x00000008
                     54:     and     a2, a2, a3
                     55:     assert  eqi, a2, 0
                     56: test_end
                     57: 
                     58: test itlb_miss
                     59:     set_vector kernel, 1f
                     60: 
                     61:     movi    a3, 0x00100000
                     62:     jx      a3
                     63:     test_fail
                     64: 1:
                     65:     rsr     a2, excvaddr
                     66:     assert  eq, a2, a3
                     67:     rsr     a2, exccause
                     68:     movi    a3, 16
                     69:     assert  eq, a2, a3
                     70: test_end
                     71: 
                     72: test dtlb_miss
                     73:     set_vector kernel, 1f
                     74: 
                     75:     movi    a3, 0x00100000
                     76:     l8ui    a2, a3, 0
                     77:     test_fail
                     78: 1:
                     79:     rsr     a2, excvaddr
                     80:     assert  eq, a2, a3
                     81:     rsr     a2, exccause
                     82:     movi    a3, 24
                     83:     assert  eq, a2, a3
                     84: test_end
                     85: 
                     86: test itlb_multi_hit
                     87:     set_vector kernel, 1f
                     88: 
                     89:     movi    a2, 0x04000002 /* PPN */
                     90:     movi    a3, 0xf0000004 /* VPN */
                     91:     witlb   a2, a3
                     92:     movi    a3, 0xf0000000
                     93:     pitlb   a2, a3
                     94:     test_fail
                     95: 1:
                     96:     rsr     a2, exccause
                     97:     movi    a3, 17
                     98:     assert  eq, a2, a3
                     99: test_end
                    100: 
                    101: test dtlb_multi_hit
                    102:     set_vector kernel, 1f
                    103: 
                    104:     movi    a2, 0x04000002 /* PPN */
                    105:     movi    a3, 0x01200004 /* VPN */
                    106:     wdtlb   a2, a3
                    107:     movi    a3, 0x01200007 /* VPN */
                    108:     wdtlb   a2, a3
                    109:     movi    a3, 0x01200000
                    110:     pdtlb   a2, a3
                    111:     test_fail
                    112: 1:
                    113:     rsr     a2, exccause
                    114:     movi    a3, 25
                    115:     assert  eq, a2, a3
                    116: test_end
                    117: 
                    118: test inst_fetch_privilege
                    119:     set_vector kernel, 3f
                    120: 
                    121:     movi    a2, 0x4004f
                    122:     wsr     a2, ps
                    123: 1:
                    124:     isync
                    125:     nop
                    126: 2:
                    127:     test_fail
                    128: 3:
                    129:     movi    a1, 1b
                    130:     rsr     a2, excvaddr
                    131:     rsr     a3, epc1
                    132:     assert  ge, a2, a1
                    133:     assert  ge, a3, a1
                    134:     movi    a1, 2b
                    135:     assert  lt, a2, a1
                    136:     assert  lt, a3, a1
                    137:     rsr     a2, exccause
                    138:     movi    a3, 18
                    139:     assert  eq, a2, a3
                    140:     rsr     a2, ps
                    141:     movi    a3, 0x4005f
                    142:     assert  eq, a2, a3
                    143: test_end
                    144: 
                    145: test load_store_privilege
                    146:     set_vector kernel, 2f
                    147: 
                    148:     movi    a3, 10f
                    149:     pitlb   a3, a3
                    150:     ritlb1  a2, a3
                    151:     movi    a1, 0x10
                    152:     or      a2, a2, a1
                    153:     movi    a1, 0x000ff000
                    154:     and     a3, a3, a1
                    155:     movi    a1, 4
                    156:     or      a3, a3, a1
                    157:     witlb   a2, a3
                    158:     movi    a3, 10f
                    159:     movi    a1, 0x000fffff
                    160:     and     a1, a3, a1
                    161: 
                    162:     movi    a2, 0x04000003 /* PPN */
                    163:     movi    a3, 0x01200004 /* VPN */
                    164:     wdtlb   a2, a3
                    165:     movi    a3, 0x01200001
                    166:     movi    a2, 0x4004f
                    167:     jx      a1
                    168: 10:
                    169:     wsr     a2, ps
                    170:     isync
                    171: 1:
                    172:     l8ui    a2, a3, 0
                    173:     test_fail
                    174: 2:
                    175:     rsr     a2, excvaddr
                    176:     assert  eq, a2, a3
                    177:     rsr     a2, epc1
                    178:     movi    a3, 1b
                    179:     movi    a1, 0x000fffff
                    180:     and     a3, a3, a1
                    181:     assert  eq, a2, a3
                    182:     rsr     a2, exccause
                    183:     movi    a3, 26
                    184:     assert  eq, a2, a3
                    185:     rsr     a2, ps
                    186:     movi    a3, 0x4005f
                    187:     assert  eq, a2, a3
                    188: test_end
                    189: 
                    190: test cring_load_store_privilege
                    191:     set_vector kernel, 0
                    192:     set_vector double, 2f
                    193: 
                    194:     movi    a2, 0x04000003 /* PPN */
                    195:     movi    a3, 0x01200004 /* VPN */
                    196:     wdtlb   a2, a3
                    197:     movi    a3, 0x01200004
                    198:     movi    a2, 0x4005f    /* ring 1 + excm => cring == 0 */
                    199:     wsr     a2, ps
                    200:     isync
                    201:     l8ui    a2, a3, 0      /* cring used */
                    202: 1:
                    203:     l32e    a2, a3, -4     /* ring used */
                    204:     test_fail
                    205: 2:
                    206:     rsr     a2, excvaddr
                    207:     addi    a2, a2, 4
                    208:     assert  eq, a2, a3
                    209:     rsr     a2, depc
                    210:     movi    a3, 1b
                    211:     assert  eq, a2, a3
                    212:     rsr     a2, exccause
                    213:     movi    a3, 26
                    214:     assert  eq, a2, a3
                    215:     rsr     a2, ps
                    216:     movi    a3, 0x4005f
                    217:     assert  eq, a2, a3
                    218: test_end
                    219: 
                    220: test inst_fetch_prohibited
                    221:     set_vector kernel, 2f
                    222: 
                    223:     movi    a3, 10f
                    224:     pitlb   a3, a3
                    225:     ritlb1  a2, a3
                    226:     movi    a1, 0xfffff000
                    227:     and     a2, a2, a1
                    228:     movi    a1, 0x4
                    229:     or      a2, a2, a1
                    230:     movi    a1, 0x000ff000
                    231:     and     a3, a3, a1
                    232:     movi    a1, 4
                    233:     or      a3, a3, a1
                    234:     witlb   a2, a3
                    235:     movi    a3, 10f
                    236:     movi    a1, 0x000fffff
                    237:     and     a1, a3, a1
                    238:     jx      a1
                    239:     .align  4
                    240: 10:
                    241:     nop
                    242:     test_fail
                    243: 2:
                    244:     rsr     a2, excvaddr
                    245:     assert  eq, a2, a1
                    246:     rsr     a2, epc1
                    247:     assert  eq, a2, a1
                    248:     rsr     a2, exccause
                    249:     movi    a3, 20
                    250:     assert  eq, a2, a3
                    251: test_end
                    252: 
                    253: test load_prohibited
                    254:     set_vector kernel, 2f
                    255: 
                    256:     movi    a2, 0x0400000c /* PPN */
                    257:     movi    a3, 0x01200004 /* VPN */
                    258:     wdtlb   a2, a3
                    259:     movi    a3, 0x01200002
                    260: 1:
                    261:     l8ui    a2, a3, 0
                    262:     test_fail
                    263: 2:
                    264:     rsr     a2, excvaddr
                    265:     assert  eq, a2, a3
                    266:     rsr     a2, epc1
                    267:     movi    a3, 1b
                    268:     assert  eq, a2, a3
                    269:     rsr     a2, exccause
                    270:     movi    a3, 28
                    271:     assert  eq, a2, a3
                    272: test_end
                    273: 
                    274: test store_prohibited
                    275:     set_vector kernel, 2f
                    276: 
                    277:     movi    a2, 0x04000001 /* PPN */
                    278:     movi    a3, 0x01200004 /* VPN */
                    279:     wdtlb   a2, a3
                    280:     movi    a3, 0x01200003
                    281:     l8ui    a2, a3, 0
                    282: 1:
                    283:     s8i     a2, a3, 0
                    284:     test_fail
                    285: 2:
                    286:     rsr     a2, excvaddr
                    287:     assert  eq, a2, a3
                    288:     rsr     a2, epc1
                    289:     movi    a3, 1b
                    290:     assert  eq, a2, a3
                    291:     rsr     a2, exccause
                    292:     movi    a3, 29
                    293:     assert  eq, a2, a3
                    294: test_end
                    295: 
                    296: test dtlb_autoload
                    297:     set_vector kernel, 0
                    298: 
                    299:     movi    a2, 0xd4000000
                    300:     wsr     a2, ptevaddr
                    301:     movi    a3, 0x00001013
                    302:     s32i    a3, a2, 4
                    303:     pdtlb   a2, a3
                    304:     movi    a1, 0x10
                    305:     and     a1, a1, a2
                    306:     assert  eqi, a1, 0
                    307:     l8ui    a1, a3, 0
                    308:     pdtlb   a2, a3
                    309:     movi    a1, 0xfffff010
                    310:     and     a1, a1, a2
                    311:     movi    a3, 0x00001010
                    312:     assert  eq, a1, a3
                    313:     movi    a1, 0xf
                    314:     and     a1, a1, a2
                    315:     assert  lti, a1, 4
                    316: test_end
                    317: 
                    318: test_suite_end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.