From 965cac164ecff52c98ec5717e73b48aa3021820d Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sun, 18 Nov 2018 12:20:53 +0000 Subject: [PATCH] sam/thunked: Fix signal vector mishandling Signals are now correctly delivered in my testing. This also makes the shutdown command work properly as a result --- Kernel/lowlevel-z80-thunked.s | 5 ++++- Kernel/platform-sam/sam.s | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Kernel/lowlevel-z80-thunked.s b/Kernel/lowlevel-z80-thunked.s index e4ca5b0d..efe65402 100644 --- a/Kernel/lowlevel-z80-thunked.s +++ b/Kernel/lowlevel-z80-thunked.s @@ -252,7 +252,8 @@ interrupt_sig: ld e,a xor a ld (_int_disabled),a - ld d,a + ld e,a + ld c,a ld (U_DATA__U_CURSIG),a ld hl,#U_DATA__U_SIGVEC add hl,de @@ -265,6 +266,8 @@ interrupt_sig: ld a,d or e jr z, no_sig + ex de,hl + ld e,c jr intret ; diff --git a/Kernel/platform-sam/sam.s b/Kernel/platform-sam/sam.s index 1be0aac4..5e02691c 100644 --- a/Kernel/platform-sam/sam.s +++ b/Kernel/platform-sam/sam.s @@ -607,8 +607,9 @@ syscall_sigret: ld h,#0 push hl ; signal ld hl,#syscall_sighelp - push hl ; vector - ret + push hl ; vector return + push bc ; actual signal vector + ret ; to handler which will return to sighelp syscall_sighelp: pop de ; discard signal pop de ; recover error info -- 2.34.1