Annotation of qemu/tests/xtensa/test_interrupt.S, revision 1.1

1.1     ! root        1: .include "macros.inc"
        !             2: 
        !             3: test_suite interrupt
        !             4: 
        !             5: .macro clear_interrupts
        !             6:     movi    a2, 0
        !             7:     wsr     a2, intenable
        !             8:     wsr     a2, ccompare0
        !             9:     wsr     a2, ccompare1
        !            10:     wsr     a2, ccompare2
        !            11:     esync
        !            12:     rsr     a2, interrupt
        !            13:     wsr     a2, intclear
        !            14: 
        !            15:     esync
        !            16:     rsr     a2, interrupt
        !            17:     assert  eqi, a2, 0
        !            18: .endm
        !            19: 
        !            20: .macro check_l1
        !            21:     rsr     a2, ps
        !            22:     movi    a3, 0x1f        /* EXCM | INTMASK */
        !            23:     and     a2, a2, a3
        !            24:     assert  eqi, a2, 0x10   /* only EXCM is set for level-1 interrupt */
        !            25:     rsr     a2, exccause
        !            26:     assert  eqi, a2, 4
        !            27: .endm
        !            28: 
        !            29: test rsil
        !            30:     clear_interrupts
        !            31: 
        !            32:     rsr     a2, ps
        !            33:     rsil    a3, 7
        !            34:     rsr     a4, ps
        !            35:     assert  eq, a2, a3
        !            36:     movi    a2, 0xf
        !            37:     and     a2, a4, a2
        !            38:     assert  eqi, a2, 7
        !            39:     xor     a3, a3, a4
        !            40:     movi    a2, 0xfffffff0
        !            41:     and     a2, a3, a2
        !            42:     assert  eqi, a2, 0
        !            43: test_end
        !            44: 
        !            45: test soft_disabled
        !            46:     set_vector kernel, 1f
        !            47:     clear_interrupts
        !            48: 
        !            49:     movi    a2, 0x80
        !            50:     wsr     a2, intset
        !            51:     esync
        !            52:     rsr     a3, interrupt
        !            53:     assert  eq, a2, a3
        !            54:     wsr     a2, intclear
        !            55:     esync
        !            56:     rsr     a3, interrupt
        !            57:     assert  eqi, a3, 0
        !            58:     j       2f
        !            59: 1:
        !            60:     test_fail
        !            61: 2:
        !            62: test_end
        !            63: 
        !            64: test soft_intenable
        !            65:     set_vector kernel, 1f
        !            66:     clear_interrupts
        !            67: 
        !            68:     movi    a2, 0x80
        !            69:     wsr     a2, intset
        !            70:     esync
        !            71:     rsr     a3, interrupt
        !            72:     assert  eq, a2, a3
        !            73:     rsil    a3, 0
        !            74:     wsr     a2, intenable
        !            75:     esync
        !            76:     test_fail
        !            77: 1:
        !            78:     check_l1
        !            79: test_end
        !            80: 
        !            81: test soft_rsil
        !            82:     set_vector kernel, 1f
        !            83:     clear_interrupts
        !            84: 
        !            85:     movi    a2, 0x80
        !            86:     wsr     a2, intset
        !            87:     esync
        !            88:     rsr     a3, interrupt
        !            89:     assert  eq, a2, a3
        !            90:     wsr     a2, intenable
        !            91:     rsil    a3, 0
        !            92:     esync
        !            93:     test_fail
        !            94: 1:
        !            95:     check_l1
        !            96: test_end
        !            97: 
        !            98: test soft_waiti
        !            99:     set_vector kernel, 1f
        !           100:     clear_interrupts
        !           101: 
        !           102:     movi    a2, 0x80
        !           103:     wsr     a2, intset
        !           104:     esync
        !           105:     rsr     a3, interrupt
        !           106:     assert  eq, a2, a3
        !           107:     wsr     a2, intenable
        !           108:     waiti   0
        !           109:     test_fail
        !           110: 1:
        !           111:     check_l1
        !           112: test_end
        !           113: 
        !           114: test soft_user
        !           115:     set_vector kernel, 1f
        !           116:     set_vector user, 2f
        !           117:     clear_interrupts
        !           118: 
        !           119:     movi    a2, 0x80
        !           120:     wsr     a2, intset
        !           121:     esync
        !           122:     rsr     a3, interrupt
        !           123:     assert  eq, a2, a3
        !           124:     wsr     a2, intenable
        !           125: 
        !           126:     rsr     a2, ps
        !           127:     movi    a3, 0x20
        !           128:     or      a2, a2, a3
        !           129:     wsr     a2, ps
        !           130:     waiti   0
        !           131: 1:
        !           132:     test_fail
        !           133: 2:
        !           134:     check_l1
        !           135: test_end
        !           136: 
        !           137: test soft_priority
        !           138:     set_vector kernel, 1f
        !           139:     set_vector level3, 2f
        !           140:     clear_interrupts
        !           141: 
        !           142:     movi    a2, 0x880
        !           143:     wsr     a2, intenable
        !           144:     rsil    a3, 0
        !           145:     esync
        !           146:     wsr     a2, intset
        !           147:     esync
        !           148: 1:
        !           149:     test_fail
        !           150: 2:
        !           151:     rsr     a2, ps
        !           152:     movi    a3, 0x1f        /* EXCM | INTMASK */
        !           153:     and     a2, a2, a3
        !           154:     movi    a3, 0x13
        !           155:     assert  eq, a2, a3      /* EXCM and INTMASK are set
        !           156:                                for high-priority interrupt */
        !           157: test_end
        !           158: 
        !           159: test eps_epc_rfi
        !           160:     set_vector level3, 3f
        !           161:     clear_interrupts
        !           162:     reset_ps
        !           163: 
        !           164:     movi    a2, 0x880
        !           165:     wsr     a2, intenable
        !           166:     rsil    a3, 0
        !           167:     rsr     a3, ps
        !           168:     esync
        !           169:     wsr     a2, intset
        !           170: 1:
        !           171:     esync
        !           172: 2:
        !           173:     test_fail
        !           174: 3:
        !           175:     rsr     a2, eps3
        !           176:     assert  eq, a2, a3
        !           177:     rsr     a2, epc3
        !           178:     movi    a3, 1b
        !           179:     assert  ge, a2, a3
        !           180:     movi    a3, 2b
        !           181:     assert  ge, a3, a2
        !           182:     movi    a2, 4f
        !           183:     wsr     a2, epc3
        !           184:     movi    a2, 0x40003
        !           185:     wsr     a2, eps3
        !           186:     rfi     3
        !           187:     test_fail
        !           188: 4:
        !           189:     rsr     a2, ps
        !           190:     movi    a3, 0x40003
        !           191:     assert  eq, a2, a3
        !           192: test_end
        !           193: 
        !           194: 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.