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
Merge branch 'master' into sata-ahci-dev
[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 48dff2faff1850a4be0b7aca45926d76ab357118..738214242db8573957dae50312ec285a66c14e80 100644
(file)
--- a/
lunaix-os/kernel/asm/x86/interrupt.S
+++ b/
lunaix-os/kernel/asm/x86/interrupt.S
@@
-42,7
+42,9
@@
isr_template APIC_TIMER_IV
isr_template APIC_SPIV_IV
isr_template RTC_TIMER_IV
isr_template APIC_TIMER_IV
isr_template APIC_SPIV_IV
isr_template RTC_TIMER_IV
+
isr_template PC_KBD_IV
isr_template PC_KBD_IV
+ isr_template AHCI_HBA_IV
interrupt_wrapper:
/*
interrupt_wrapper:
/*
@@
-117,6
+119,12
@@
soft_iret:
movl %eax, %esp
soft_iret:
movl %eax, %esp
+#ifdef __ASM_INTR_DIAGNOSIS
+ movl %eax, (debug_resv + 8)
+ movl 56(%esp), %eax
+ movl %eax, (debug_resv + 4)
+#endif
+
popl %eax
popl %ebx
popl %ecx
popl %eax
popl %ebx
popl %ecx
@@
-157,17
+165,17
@@
# 约定
# arg1: 目标进程PCB地址 (next
# 约定
# arg1: 目标进程PCB地址 (next
- popl %e
c
x # next
+ popl %e
b
x # next
movl __current, %eax
movl __current, %eax
- movl 88(%eax), %e
b
x # __current->pagetable
- movl 88(%e
c
x), %eax # next->pagetable
+ movl 88(%eax), %e
c
x # __current->pagetable
+ movl 88(%e
b
x), %eax # next->pagetable
- cmpl %e
b
x, %eax # if(next->pagtable != __current->pagetable) {
+ cmpl %e
c
x, %eax # if(next->pagtable != __current->pagetable) {
jz 1f
movl %eax, %cr3 # cpu_lcr3(next->pagetable)
# }
1:
jz 1f
movl %eax, %cr3 # cpu_lcr3(next->pagetable)
# }
1:
- movl %e
c
x, __current # __current = next
+ movl %e
b
x, __current # __current = next
# 我们已经处在了新的地址空间,为了避免影响其先前的栈布局
# 需要使用一个临时的栈空间
# 我们已经处在了新的地址空间,为了避免影响其先前的栈布局
# 需要使用一个临时的栈空间
@@
-178,7
+186,7
@@
jz 1f
jmp handle_signal
1:
jz 1f
jmp handle_signal
1:
- leal 8(%e
c
x), %eax
+ leal 8(%e
b
x), %eax
jmp soft_iret
.global handle_signal
jmp soft_iret
.global handle_signal