Check all s_endpgm instructions

The ROCR trap handler should check for all end program instructions
and not halt on them. Mask off the imm16 before comparing the
instruction to the s_endpgm opcode.

Change-Id: I669ffc7f5b699d7daf0c8ec5761ed7bb193f07a7
Esse commit está contido em:
Laurent Morichetti
2020-04-29 17:00:54 -07:00
commit de Laurent Morichetti
commit df03a377f5
+35 -33
Ver Arquivo
@@ -130,6 +130,7 @@ static const unsigned int kCodeTrapHandler9[] = {
.set TTMP11_EVENTS_MASK , (1 << TTMP11_TRAP_RAISED_BIT) | (1 << TTMP11_EXCP_RAISED_BIT)
.set DEBUG_INTERRUPT_CONTEXT_ID_BIT , 23
.set INSN_S_ENDPGM_OPCODE , 0xBF810000
.set INSN_S_ENDPGM_MASK , 0xFFFF0000
.if .amdgcn.gfx_generation_number == 9
.set TTMP11_SAVE_RCNT_FIRST_REPLAY_SHIFT , 26
@@ -236,6 +237,7 @@ static const unsigned int kCodeTrapHandler9[] = {
s_and_b32 ttmp1, ttmp1, SQ_WAVE_PC_HI_ADDRESS_MASK
s_load_dword ttmp2, [ttmp0, ttmp1]
s_waitcnt lgkmcnt(0)
s_and_b32 ttmp2, ttmp2, INSN_S_ENDPGM_MASK
s_cmp_eq_u32 ttmp2, INSN_S_ENDPGM_OPCODE
s_cbranch_scc1 .skip_halt
s_or_b32 ttmp12, ttmp12, SQ_WAVE_STATUS_HALT_MASK
@@ -333,26 +335,26 @@ static const unsigned int kCodeTrapHandler9[] = {
.exit_trap:
mExitTrap
*/
0x92eeff6d, 0x00080010, 0xbf850037, 0xb8eef803, 0x866fff6e, 0x00000900,
0xbf850027, 0xbf820001, 0xbef71a87, 0xbeee007e, 0xbeef007f, 0xbefe00ff,
0x92eeff6d, 0x00080010, 0xbf850039, 0xb8eef803, 0x866fff6e, 0x00000900,
0xbf850029, 0xbf820001, 0xbef71a87, 0xbeee007e, 0xbeef007f, 0xbefe00ff,
0x80000000, 0xbf90000a, 0xbf800007, 0xbf0c9f7e, 0xbf84fffd, 0xbeff006f,
0x867eff7e, 0x00000fff, 0xbeef007e, 0xbefe006e, 0xbeef1a97, 0xbeee007c,
0xbefc006f, 0xbf800000, 0xbf900001, 0xbefc006e, 0x866dff6d, 0x0000ffff,
0xc0021bb6, 0x00000000, 0xbf8cc07f, 0xbf06ff6e, 0xbf810000, 0xbf850002,
0xc0021bb6, 0x00000000, 0xbf8cc07f, 0x866eff6e, 0xffff0000, 0xbf06ff6e,
0xbf810000, 0xbf850002, 0x8778ff78, 0x00002000, 0x8f6e8b77, 0x866eff6e,
0x001f8000, 0xb96ef807, 0x86fe7e7e, 0x86ea6a6a, 0xb978f802, 0xbe801f6c,
0x866fff6e, 0x10000100, 0xbf06ff6f, 0x00000100, 0xbeef00ff, 0x20000000,
0xbf850010, 0x866fff6e, 0x00000800, 0xbeef00f4, 0xbf85000c, 0xbf820032,
0xbf09836e, 0xbf85ffca, 0xbf06826e, 0xbeef00ff, 0x80000000, 0xbf850003,
0x806c846c, 0x826d806d, 0xbf820029, 0xbef71a87, 0xbf820001, 0xbef71a88,
0xbef0006f, 0xbefe00ff, 0x80000000, 0xbf90000a, 0xbf800007, 0xbf0c9f7e,
0xbf84fffd, 0x866eff7e, 0x000003ff, 0x8e6e836e, 0xc0051bbd, 0x0000006e,
0xbf8cc07f, 0xc0071bb7, 0x000000c0, 0xbf8cc07f, 0xbef10080, 0xc2831c37,
0x00000008, 0xbf8cc07f, 0x87707170, 0xbf85000e, 0xc0071c37, 0x00000010,
0xbf8cc07f, 0x86f07070, 0xbf840009, 0xc0031bb7, 0x00000018, 0xbf8cc07f,
0xc0431bb8, 0x00000000, 0xbf8cc07f, 0xbefc0080, 0xbf800000, 0xbf900001,
0x8778ff78, 0x00002000, 0x8f6e8b77, 0x866eff6e, 0x001f8000, 0xb96ef807,
0x86fe7e7e, 0x86ea6a6a, 0xb978f802, 0xbe801f6c, 0x866fff6e, 0x10000100,
0xbf06ff6f, 0x00000100, 0xbeef00ff, 0x20000000, 0xbf850010, 0x866fff6e,
0x00000800, 0xbeef00f4, 0xbf85000c, 0xbf820032, 0xbf09836e, 0xbf85ffcc,
0xbf06826e, 0xbeef00ff, 0x80000000, 0xbf850003, 0x806c846c, 0x826d806d,
0xbf820029, 0xbef71a87, 0xbf820001, 0xbef71a88, 0xbef0006f, 0xbefe00ff,
0x80000000, 0xbf90000a, 0xbf800007, 0xbf0c9f7e, 0xbf84fffd, 0x866eff7e,
0x000003ff, 0x8e6e836e, 0xc0051bbd, 0x0000006e, 0xbf8cc07f, 0xc0071bb7,
0x000000c0, 0xbf8cc07f, 0xbef10080, 0xc2831c37, 0x00000008, 0xbf8cc07f,
0x87707170, 0xbf85000e, 0xc0071c37, 0x00000010, 0xbf8cc07f, 0x86f07070,
0xbf840009, 0xc0031bb7, 0x00000018, 0xbf8cc07f, 0xc0431bb8, 0x00000000,
0xbf8cc07f, 0xbefc0080, 0xbf800000, 0xbf900001, 0x8778ff78, 0x00002000,
0x8f6e8b77, 0x866eff6e, 0x001f8000, 0xb96ef807, 0x86fe7e7e, 0x86ea6a6a,
0xb978f802, 0xbe801f6c
0x86fe7e7e, 0x86ea6a6a, 0xb978f802, 0xbe801f6c,
};
static const unsigned int kCodeCopyAligned8[] = {
@@ -468,27 +470,27 @@ static const unsigned int kCodeFill10[] = {
};
static const unsigned int kCodeTrapHandler10[] = {
0x93eeff6d, 0x00080010, 0xbf85003b, 0xb96ef803, 0x876fff6e, 0x00000900,
0xbf85002b, 0xbf820001, 0xbef71d87, 0xbeee037e, 0xbeef037f, 0xbefe03ff,
0x93eeff6d, 0x00080010, 0xbf85003d, 0xb96ef803, 0x876fff6e, 0x00000900,
0xbf85002d, 0xbf820001, 0xbef71d87, 0xbeee037e, 0xbeef037f, 0xbefe03ff,
0x80000000, 0xbf90000a, 0xbf800007, 0xbf0c9f7e, 0xbf84fffd, 0xbeff036f,
0x877eff7e, 0x00000fff, 0xbeef037e, 0xbefe036e, 0xbeef1d97, 0xbeee037c,
0xbefc036f, 0xbf800000, 0xbf900001, 0xbefc036e, 0x876dff6d, 0x0000ffff,
0xf4001bb6, 0xfa000000, 0xbf8cc07f, 0xbf06ff6e, 0xbf810000, 0xbf850002,
0x8878ff78, 0x00002000, 0x906e8977, 0x876fff6e, 0x003f8000, 0x906e8677,
0x876eff6e, 0x02000000, 0x886e6f6e, 0xb9eef807, 0x87fe7e7e, 0x87ea6a6a,
0xb9f8f802, 0xbe80226c, 0x876fff6e, 0x10000100, 0xbf06ff6f, 0x00000100,
0xbeef03ff, 0x20000000, 0xbf850010, 0x876fff6e, 0x00000800, 0xbeef03f4,
0xbf85000c, 0xbf820032, 0xbf09836e, 0xbf85ffc8, 0xbf06826e, 0xbeef03ff,
0x80000000, 0xbf850003, 0x806c846c, 0x826d806d, 0xbf820029, 0xbef71d87,
0xbf820001, 0xbef71d88, 0xbef0036f, 0xbefe03ff, 0x80000000, 0xbf90000a,
0xbf800007, 0xbf0c9f7e, 0xbf84fffd, 0x876eff7e, 0x000003ff, 0x8f6e836e,
0xf4051bbd, 0xdc000000, 0xbf8cc07f, 0xf4051bb7, 0xfa0000c0, 0xbf8cc07f,
0xbef10380, 0xf6811c37, 0xfa000008, 0xbf8cc07f, 0x88707170, 0xbf85000e,
0xf4051c37, 0xfa000010, 0xbf8cc07f, 0x87f07070, 0xbf840009, 0xf4011bb7,
0xfa000018, 0xbf8cc07f, 0xf4411bb8, 0xfa000000, 0xbf8cc07f, 0xbefc0380,
0xbf800000, 0xbf900001, 0x8878ff78, 0x00002000, 0x906e8977, 0x876fff6e,
0xf4001bb6, 0xfa000000, 0xbf8cc07f, 0x876eff6e, 0xffff0000, 0xbf06ff6e,
0xbf810000, 0xbf850002, 0x8878ff78, 0x00002000, 0x906e8977, 0x876fff6e,
0x003f8000, 0x906e8677, 0x876eff6e, 0x02000000, 0x886e6f6e, 0xb9eef807,
0x87fe7e7e, 0x87ea6a6a, 0xb9f8f802, 0xbe80226c,
0x87fe7e7e, 0x87ea6a6a, 0xb9f8f802, 0xbe80226c, 0x876fff6e, 0x10000100,
0xbf06ff6f, 0x00000100, 0xbeef03ff, 0x20000000, 0xbf850010, 0x876fff6e,
0x00000800, 0xbeef03f4, 0xbf85000c, 0xbf820032, 0xbf09836e, 0xbf85ffc6,
0xbf06826e, 0xbeef03ff, 0x80000000, 0xbf850003, 0x806c846c, 0x826d806d,
0xbf820029, 0xbef71d87, 0xbf820001, 0xbef71d88, 0xbef0036f, 0xbefe03ff,
0x80000000, 0xbf90000a, 0xbf800007, 0xbf0c9f7e, 0xbf84fffd, 0x876eff7e,
0x000003ff, 0x8f6e836e, 0xf4051bbd, 0xdc000000, 0xbf8cc07f, 0xf4051bb7,
0xfa0000c0, 0xbf8cc07f, 0xbef10380, 0xf6811c37, 0xfa000008, 0xbf8cc07f,
0x88707170, 0xbf85000e, 0xf4051c37, 0xfa000010, 0xbf8cc07f, 0x87f07070,
0xbf840009, 0xf4011bb7, 0xfa000018, 0xbf8cc07f, 0xf4411bb8, 0xfa000000,
0xbf8cc07f, 0xbefc0380, 0xbf800000, 0xbf900001, 0x8878ff78, 0x00002000,
0x906e8977, 0x876fff6e, 0x003f8000, 0x906e8677, 0x876eff6e, 0x02000000,
0x886e6f6e, 0xb9eef807, 0x87fe7e7e, 0x87ea6a6a, 0xb9f8f802, 0xbe80226c,
};
} // namespace amd