feat: kernel stack tracing
[lunaix-os.git] / lunaix-os / arch / i386 / exceptions / interrupt.S
index e5a125fde8edf54018d887bf59f696cdc666305a..c61e6a60a65f75925edf9f2eee5874b5246a1d4f 100644 (file)
@@ -33,6 +33,7 @@
 */
 
 .section .text
 */
 
 .section .text
+    .type interrupt_wrapper, @function
     .global interrupt_wrapper
     interrupt_wrapper:
         cld
     .global interrupt_wrapper
     interrupt_wrapper:
         cld
@@ -90,6 +91,7 @@
         subl $16, %esp
         movl %eax, (%esp)
 
         subl $16, %esp
         movl %eax, (%esp)
 
+        xorl %ebp, %ebp     # marks the boundary of stack walking
         call intr_handler
 
         movl (%esp), %eax
         call intr_handler
 
         movl (%esp), %eax
 
         iret
 
 
         iret
 
+    .type switch_to, @function
     .global switch_to
     switch_to:
         # 约定
     .global switch_to
     switch_to:
         # 约定
         movl proc_intr_ctx(%ebx), %eax
         jmp soft_iret
 
         movl proc_intr_ctx(%ebx), %eax
         jmp soft_iret
 
+    .type handle_signal, @function 
     .global handle_signal
     handle_signal:
         # 注意1:任何对proc_sig的布局改动,都须及时的保证这里的一致性!
     .global handle_signal
     handle_signal:
         # 注意1:任何对proc_sig的布局改动,都须及时的保证这里的一致性!