The NMI could occur when already on the extra stack, which would corrupt it. Always use the current stack on an NMI to avoid this.
Signed-off-by: Kevin O'Connor kevin@koconnor.net --- src/romlayout.S | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/romlayout.S b/src/romlayout.S index fedadfe..53cc0f5 100644 --- a/src/romlayout.S +++ b/src/romlayout.S @@ -548,7 +548,10 @@ entry_post: ENTRY_INTO32 _cfunc32flat_handle_post // Normal entry point
ORG 0xe2c3 - IRQ_ENTRY 02 + .global entry_02 +entry_02: + ENTRY handle_02 // NMI handler does not switch onto extra stack + iretw
ORG 0xe3fe .global entry_13_official
On Wed, Dec 23, 2015 at 03:47:26PM -0500, Kevin O'Connor wrote:
The NMI could occur when already on the extra stack, which would corrupt it. Always use the current stack on an NMI to avoid this.
FYI, I committed this change.
-Kevin