trap_handler: Set status.skip_export when halting a wave
When inspecting waves on architectures where SPI may not initialize TTMP registers, the debugger cannot reliably know if the trap handler was entered and if it saved valuable information in TTMP registers. This patch uses the status.skip_export bit (unused by the compute shaders) to indicate that it got executed before halting a wave. This is done except for gfx940, where ttmp11[31] can be used (as long as TTMP registers are always initialized by SPI for this architecture). It could be possible to be more selective as architectures always initializing TTMP registers do not require this step, but always doing is makes maintenance simpler. Change-Id: I5c4148c78062f7ffa049ac7856c2edc82dbc77d1
This commit is contained in:
zatwierdzone przez
Alejandro Sierra Guiza
rodzic
ed462035fa
commit
5d3f6a63f1
@@ -81,8 +81,10 @@ __attribute__((noinline)) static void _loader_debug_state() {
|
||||
// 6: New trap handler ABI. ttmp6[25:0] contains dispatch index modulo queue size
|
||||
// 7: New trap handler ABI. Send interrupts as a bitmask, coalescing concurrent exceptions.
|
||||
// 8: New trap handler ABI. for gfx940: Initialize ttmp[4:5] if ttmp11[31] == 0.
|
||||
// 9: New trap handler API. For gfx11: Save PC in ttmp11[22:7] ttmp6[31:0], and park the wave if stopped.
|
||||
HSA_API r_debug _amdgpu_r_debug = {9,
|
||||
// 9: New trap handler ABI. For gfx11: Save PC in ttmp11[22:7] ttmp6[31:0], and park the wave if stopped.
|
||||
// 10: New trap handler ABI. Set status.skip_export when halting the wave.
|
||||
// For gfx940, set ttmp6[31] = 0 if ttmp11[31] == 0.
|
||||
HSA_API r_debug _amdgpu_r_debug = {10,
|
||||
nullptr,
|
||||
reinterpret_cast<uintptr_t>(&_loader_debug_state),
|
||||
r_debug::RT_CONSISTENT,
|
||||
|
||||
Reference in New Issue
Block a user