Visible to Intel only — GUID: fdu1685737494332
Ixiasoft
Visible to Intel only — GUID: fdu1685737494332
Ixiasoft
3.2.6. 1880110: Noncompliance with prioritization of Exception Catch debug events
Description
ARMv8.2 architecture requires that Debug state entry due to an Exception Catch debug event (generated on exception entry) occur before any asynchronous exception is taken at the first instruction in the exception handler. An asynchronous exception might be taken as a higher priority exception than Exception Catch and the Exception Catch might be missed altogether.
Conditions
- Debug Halting is allowed.
- EDECCR bits are configured to catch exception entry to ELx.
- A first exception is taken resulting in entry to ELx.
- A second, asynchronous exception becomes visible at the same time as exception entry to ELx.
- The second, asynchronous exception targets an Exception level ELy that is higher than ELx.
Impact
If the above conditions are met, the core might recognize the second exception and not enter Debug state as a result of Exception Catch on the first exception. When the handler for the second exception completes, software might return to execute the first exception handler, and assuming the core does not halt for any other reason, the first exception handler will be executed and entry to Debug state via Exception Catch will not occur.
Workaround
When setting Exception Catch on exceptions taken to an Exception level ELx, the debugger should do either or both of the following:
- Ensure that Exception Catch is also set for exceptions taken to all higher Exception Levels, so that the second (asynchronous) exception generates an Exception Catch debug event.
- Set Exception Catch for an Exception Return to ELx, so that when the second (asynchronous) exception handler completes, the exception return to ELx generates an Exception Catch debug event.
Additionally, when a debugger detects that the core has halted on an Exception Catch to an Exception level ELy, where y > x, it should check the ELR_ELy and SPSR_ELy values to determine whether the exception was taken on an ELx exception vector address, meaning an Exception Catch on entry to ELx has been missed.
Category
Category C