cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

test_break.S (6201B)


      1#include "macros.inc"
      2
      3test_suite break
      4
      5#if XCHAL_HAVE_DEBUG
      6
      7#define debug_level XCHAL_DEBUGLEVEL
      8#define debug_vector glue(level, XCHAL_DEBUGLEVEL)
      9#define EPC_DEBUG glue(epc, XCHAL_DEBUGLEVEL)
     10
     11test break
     12    set_vector debug_vector, 0
     13    rsil    a2, debug_level
     14    _break  0, 0
     15
     16    set_vector debug_vector, 2f
     17    rsil    a2, debug_level - 1
     181:
     19    _break  0, 0
     20    test_fail
     212:
     22    rsr     a2, ps
     23    movi    a3, 0x1f
     24    and     a2, a2, a3
     25    movi    a3, 0x10 | debug_level
     26    assert  eq, a2, a3
     27    rsr     a2, EPC_DEBUG
     28    movi    a3, 1b
     29    assert  eq, a2, a3
     30    rsr     a2, debugcause
     31    movi    a3, 0x8
     32    assert  eq, a2, a3
     33test_end
     34
     35test breakn
     36    set_vector debug_vector, 0
     37    rsil    a2, debug_level
     38    _break.n  0
     39
     40    set_vector debug_vector, 2f
     41    rsil    a2, debug_level - 1
     421:
     43    _break.n  0
     44    test_fail
     452:
     46    rsr     a2, ps
     47    movi    a3, 0x1f
     48    and     a2, a2, a3
     49    movi    a3, 0x10 | debug_level
     50    assert  eq, a2, a3
     51    rsr     a2, EPC_DEBUG
     52    movi    a3, 1b
     53    assert  eq, a2, a3
     54    rsr     a2, debugcause
     55    movi    a3, 0x10
     56    assert  eq, a2, a3
     57test_end
     58
     59#if XCHAL_NUM_IBREAK
     60test ibreak
     61    set_vector debug_vector, 0
     62    rsil    a2, debug_level
     63    movi    a2, 1f
     64    wsr     a2, ibreaka0
     65    movi    a2, 1
     66    wsr     a2, ibreakenable
     67    isync
     681:
     69    rsil    a2, debug_level - 1
     70    movi    a2, 1f
     71    wsr     a2, ibreaka0
     72    movi    a2, 0
     73    wsr     a2, ibreakenable
     74    isync
     751:
     76    set_vector debug_vector, 2f
     77    movi    a2, 1f
     78    wsr     a2, ibreaka0
     79    movi    a2, 1
     80    wsr     a2, ibreakenable
     81    isync
     821:
     83    test_fail
     842:
     85    rsr     a2, ps
     86    movi    a3, 0x1f
     87    and     a2, a2, a3
     88    movi    a3, 0x10 | debug_level
     89    assert  eq, a2, a3
     90    rsr     a2, EPC_DEBUG
     91    movi    a3, 1b
     92    assert  eq, a2, a3
     93    rsr     a2, debugcause
     94    movi    a3, 0x2
     95    assert  eq, a2, a3
     96test_end
     97
     98test ibreak_remove
     99    set_vector debug_vector, 3f
    100    rsil    a2, debug_level - 1
    101    movi    a2, 2f
    102    wsr     a2, ibreaka0
    103    movi    a3, 1
    1041:
    105    wsr     a3, ibreakenable
    106    isync
    1072:
    108    beqz    a3, 4f
    109    test_fail
    1103:
    111    assert  eqi, a3, 1
    112    rsr     a2, ps
    113    movi    a3, 0x1f
    114    and     a2, a2, a3
    115    movi    a3, 0x10 | debug_level
    116    assert  eq, a2, a3
    117    rsr     a2, EPC_DEBUG
    118    movi    a3, 2b
    119    assert  eq, a2, a3
    120    rsr     a2, debugcause
    121    movi    a3, 0x2
    122    assert  eq, a2, a3
    123
    124    movi    a2, 0x40000
    125    wsr     a2, ps
    126    isync
    127    movi    a3, 0
    128    j       1b
    1294:
    130test_end
    131
    132test ibreak_priority
    133    set_vector debug_vector, 2f
    134    rsil    a2, debug_level - 1
    135    movi    a2, 1f
    136    wsr     a2, ibreaka0
    137    movi    a2, 1
    138    wsr     a2, ibreakenable
    139    isync
    1401:
    141    break   0, 0
    142    test_fail
    1432:
    144    rsr     a2, debugcause
    145    movi    a3, 0x2
    146    assert  eq, a2, a3
    147test_end
    148#endif
    149
    150test icount
    151    set_vector debug_vector, 2f
    152    rsil    a2, debug_level - 1
    153    movi    a2, -2
    154    wsr     a2, icount
    155    movi    a2, 1
    156    wsr     a2, icountlevel
    157    isync
    158    rsil    a2, 0
    159    nop
    1601:
    161    break   0, 0
    162    test_fail
    1632:
    164    movi    a2, 0
    165    wsr     a2, icountlevel
    166    rsr     a2, EPC_DEBUG
    167    movi    a3, 1b
    168    assert  eq, a2, a3
    169    rsr     a2, debugcause
    170    movi    a3, 0x1
    171    assert  eq, a2, a3
    172test_end
    173
    174.macro check_dbreak dr
    175    rsr     a2, EPC_DEBUG
    176    movi    a3, 1b
    177    assert  eq, a2, a3
    178    rsr     a2, debugcause
    179    movi    a3, 0x4 | (\dr << 8)
    180    assert  eq, a2, a3
    181    movi    a2, 0
    182    wsr     a2, dbreakc\dr
    183.endm
    184
    185.macro dbreak_test dr, ctl, break, access, op
    186    set_vector debug_vector, 2f
    187    rsil    a2, debug_level - 1
    188    movi    a2, \ctl
    189    wsr     a2, dbreakc\dr
    190    movi    a2, \break
    191    wsr     a2, dbreaka\dr
    192    movi    a2, \access
    193    isync
    1941:
    195    \op     a3, a2, 0
    196    test_fail
    1972:
    198    check_dbreak \dr
    199    reset_ps
    200.endm
    201
    202#if XCHAL_NUM_DBREAK
    203test dbreak_exact
    204    dbreak_test 0, 0x4000003f, 0xd000007f, 0xd000007f, l8ui
    205    dbreak_test 1, 0x4000003e, 0xd000007e, 0xd000007e, l16ui
    206    dbreak_test 0, 0x4000003c, 0xd000007c, 0xd000007c, l32i
    207
    208    dbreak_test 1, 0x8000003f, 0xd000007f, 0xd000007f, s8i
    209    dbreak_test 0, 0x8000003e, 0xd000007e, 0xd000007e, s16i
    210    dbreak_test 1, 0x8000003c, 0xd000007c, 0xd000007c, s32i
    211test_end
    212
    213test dbreak_overlap
    214    dbreak_test 0, 0x4000003f, 0xd000007d, 0xd000007c, l16ui
    215    dbreak_test 1, 0x4000003f, 0xd000007d, 0xd000007c, l32i
    216
    217    dbreak_test 0, 0x4000003e, 0xd000007e, 0xd000007f, l8ui
    218    dbreak_test 1, 0x4000003e, 0xd000007e, 0xd000007c, l32i
    219
    220    dbreak_test 0, 0x4000003c, 0xd000007c, 0xd000007d, l8ui
    221    dbreak_test 1, 0x4000003c, 0xd000007c, 0xd000007c, l16ui
    222
    223    dbreak_test 0, 0x40000038, 0xd0000078, 0xd000007b, l8ui
    224    dbreak_test 1, 0x40000038, 0xd0000078, 0xd000007a, l16ui
    225    dbreak_test 0, 0x40000038, 0xd0000078, 0xd000007c, l32i
    226
    227    dbreak_test 1, 0x40000030, 0xd0000070, 0xd0000075, l8ui
    228    dbreak_test 0, 0x40000030, 0xd0000070, 0xd0000076, l16ui
    229    dbreak_test 1, 0x40000030, 0xd0000070, 0xd0000078, l32i
    230
    231    dbreak_test 0, 0x40000020, 0xd0000060, 0xd000006f, l8ui
    232    dbreak_test 1, 0x40000020, 0xd0000060, 0xd0000070, l16ui
    233    dbreak_test 0, 0x40000020, 0xd0000060, 0xd0000074, l32i
    234
    235
    236    dbreak_test 0, 0x8000003f, 0xd000007d, 0xd000007c, s16i
    237    dbreak_test 1, 0x8000003f, 0xd000007d, 0xd000007c, s32i
    238
    239    dbreak_test 0, 0x8000003e, 0xd000007e, 0xd000007f, s8i
    240    dbreak_test 1, 0x8000003e, 0xd000007e, 0xd000007c, s32i
    241
    242    dbreak_test 0, 0x8000003c, 0xd000007c, 0xd000007d, s8i
    243    dbreak_test 1, 0x8000003c, 0xd000007c, 0xd000007c, s16i
    244
    245    dbreak_test 0, 0x80000038, 0xd0000078, 0xd000007b, s8i
    246    dbreak_test 1, 0x80000038, 0xd0000078, 0xd000007a, s16i
    247    dbreak_test 0, 0x80000038, 0xd0000078, 0xd000007c, s32i
    248
    249    dbreak_test 1, 0x80000030, 0xd0000070, 0xd0000075, s8i
    250    dbreak_test 0, 0x80000030, 0xd0000070, 0xd0000076, s16i
    251    dbreak_test 1, 0x80000030, 0xd0000070, 0xd0000078, s32i
    252
    253    dbreak_test 0, 0x80000020, 0xd0000060, 0xd000006f, s8i
    254    dbreak_test 1, 0x80000020, 0xd0000060, 0xd0000070, s16i
    255    dbreak_test 0, 0x80000020, 0xd0000060, 0xd0000074, s32i
    256test_end
    257
    258test dbreak_invalid
    259    dbreak_test 0, 0x40000030, 0xd0000071, 0xd0000070, l16ui
    260    dbreak_test 1, 0x40000035, 0xd0000072, 0xd0000070, l32i
    261test_end
    262#endif
    263
    264#endif
    265
    266test_suite_end