git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix: corner case for x87 context restore on execve
[lunaix-os.git]
/
lunaix-os
/
kernel
/
asm
/
x86
/
interrupts.c
diff --git
a/lunaix-os/kernel/asm/x86/interrupts.c
b/lunaix-os/kernel/asm/x86/interrupts.c
index b4a443f10376812bd94cb3abb4051fe090b1ee08..9f86cf25c480355f836c2568695a08478ca7af52 100644
(file)
--- a/
lunaix-os/kernel/asm/x86/interrupts.c
+++ b/
lunaix-os/kernel/asm/x86/interrupts.c
@@
-19,9
+19,10
@@
extern x86_page_table* __kernel_ptd;
void
intr_handler(isr_param* param)
{
void
intr_handler(isr_param* param)
{
- __current->intr_ctx = *param;
+ param->execp->saved_prev_ctx = __current->intr_ctx;
+ __current->intr_ctx = param;
-
struct exec_param* execp = __current->intr_ctx.
execp;
+
volatile struct exec_param* execp = __current->intr_ctx->
execp;
if (execp->vector <= 255) {
isr_cb subscriber = isrm_get(execp->vector);
if (execp->vector <= 255) {
isr_cb subscriber = isrm_get(execp->vector);