summaryrefslogtreecommitdiff
path: root/kernel/traps.s
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/traps.s')
-rw-r--r--kernel/traps.s8
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/traps.s b/kernel/traps.s
index 36b3423..0a0d202 100644
--- a/kernel/traps.s
+++ b/kernel/traps.s
@@ -21,8 +21,8 @@ extern ticked
; too.
%define ts_signal 6
-%define ts_sig_handlers 10
-%define ts_tss_esp0 142
+%define ts_sig_handlers 14
+%define ts_tss_esp0 146
%macro SAVE 0
pusha
@@ -323,6 +323,7 @@ check_signals:
shl ebx, cl
xor ebx, 0xFFFFFFFF
and dword [eax+ts_signal], ebx
+ inc ecx
mov ebx, ecx
; calculate offset to the handler function
shl ecx, 2
@@ -374,7 +375,10 @@ check_signals:
ret
sigret:
+ mov ebx, esp
+ push ebx
call check_signals
+ add esp, 4
; restore our original stack frame and reset the TSS's ESP0
mov esp, [eax+ts_tss_esp0]
mov dword [eax+ts_tss_esp0], 0xFFFFFFFF