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
edit readme
[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..a03bce613f3897b5fe65c54d15be68a9e9670453 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
@@
-96,9
+96,11
@@
call intr_handler
call intr_handler
+ movl (%esp), %eax
+
.global soft_iret
soft_iret:
.global soft_iret
soft_iret:
-
popl
%esp
+
movl %eax,
%esp
popl %eax
popl %ebx
popl %eax
popl %ebx
@@
-118,14
+120,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