Annotation of qemu/tests/xtensa/test_mmu.S, revision 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.