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: The timer sequence stuck in infinite loop after series of delete operation
[lunaix-os.git]
/
lunaix-os
/
kernel
/
asm
/
x86
/
interrupt.S
diff --git
a/lunaix-os/kernel/asm/x86/interrupt.S
b/lunaix-os/kernel/asm/x86/interrupt.S
index 4647e95a467da053aec06509b5612b149bd3698d..e0cda172957dc1e7efc253cd55cc31df224b89b0 100644
(file)
--- a/
lunaix-os/kernel/asm/x86/interrupt.S
+++ b/
lunaix-os/kernel/asm/x86/interrupt.S
@@
-1,7
+1,7
@@
#define __ASM__
#include <arch/x86/interrupts.h>
#include <lunaix/common.h>
#define __ASM__
#include <arch/x86/interrupts.h>
#include <lunaix/common.h>
-
//
#define __ASM_INTR_DIAGNOSIS
+#define __ASM_INTR_DIAGNOSIS
.macro isr_template vector, no_error_code=1
.global _asm_isr\vector
.macro isr_template vector, no_error_code=1
.global _asm_isr\vector
@@
-118,14
+118,9
@@
addl $8, %esp
#ifdef __ASM_INTR_DIAGNOSIS
addl $8, %esp
#ifdef __ASM_INTR_DIAGNOSIS
- cmpl $0, (%esp)
- jz 1f
- iret
-1:
- movl $__current, %eax
- movl (%esp), %ebx
- movl $debug_resv, %ecx
- ud2
-#else
- iret
+ pushl %eax
+ movl 4(%esp), %eax
+ movl %eax, debug_resv
+ popl %eax
#endif
#endif
+ iret