[PATCH] i386: add END()/ENDPROC() annotations to entry.S

From: Jan Beulich
Date: Fri Apr 28 2006 - 10:55:22 EST


Since END()/ENDPROC() are now available, add respective annotations to
i386's entry.S. This should help debugging activities.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>

diff -Npru /home/jbeulich/tmp/linux-2.6.17-rc3/arch/i386/kernel/entry.S
2.6.17-rc3-i386-asm-types-sizes/arch/i386/kernel/entry.S
--- /home/jbeulich/tmp/linux-2.6.17-rc3/arch/i386/kernel/entry.S 2006-04-28 11:47:26.000000000 +0200
+++ 2.6.17-rc3-i386-asm-types-sizes/arch/i386/kernel/entry.S 2006-04-28 12:08:19.000000000 +0200
@@ -129,6 +129,7 @@ ENTRY(ret_from_fork)
GET_THREAD_INFO(%ebp)
popl %eax
jmp syscall_exit
+END(ret_from_fork)

/*
* Return to user mode is not as complex as all this looks,
@@ -156,6 +157,7 @@ ENTRY(resume_userspace)
# int/exception return?
jne work_pending
jmp restore_all
+END(ret_from_exception)

#ifdef CONFIG_PREEMPT
ENTRY(resume_kernel)
@@ -170,6 +172,7 @@ need_resched:
jz restore_all
call preempt_schedule_irq
jmp need_resched
+END(resume_kernel)
#endif

/* SYSENTER_RETURN points to after the "sysenter" instruction in
@@ -219,6 +222,7 @@ sysenter_past_esp:
xorl %ebp,%ebp
sti
sysexit
+ENDPROC(sysenter_entry)


# system call handler stub
@@ -272,6 +276,7 @@ iret_exc:
.align 4
.long 1b,iret_exc
.previous
+ENDPROC(system_call)

ldt_ss:
larl OLDSS(%esp), %eax
@@ -297,6 +302,7 @@ ldt_ss:
.align 4
.long 1b,iret_exc
.previous
+END(ldt_ss)

# perform work that needs to be done immediately before resumption
ALIGN
@@ -336,6 +342,7 @@ work_notifysig_v86:
call do_notify_resume
jmp resume_userspace
#endif
+END(work_pending)

# perform syscall exit tracing
ALIGN
@@ -351,6 +358,7 @@ syscall_trace_entry:
cmpl $(nr_syscalls), %eax
jnae syscall_call
jmp syscall_exit
+END(syscall_trace_entry)

# perform syscall exit tracing
ALIGN
@@ -363,6 +371,7 @@ syscall_exit_work:
movl $1, %edx
call do_syscall_trace
jmp resume_userspace
+END(syscall_exit_work)

ALIGN
syscall_fault:
@@ -371,11 +380,13 @@ syscall_fault:
GET_THREAD_INFO(%ebp)
movl $-EFAULT,EAX(%esp)
jmp resume_userspace
+END(syscall_fault)

ALIGN
syscall_badsys:
movl $-ENOSYS,EAX(%esp)
jmp resume_userspace
+END(syscall_badsys)

#define FIXUP_ESPFIX_STACK \
movl %esp, %eax; \
@@ -417,6 +428,11 @@ ENTRY(irq_entries_start)
.text
vector=vector+1
.endr
+END(irq_entries_start)
+
+.data
+END(interrupt)
+.text

ALIGN
common_interrupt:
@@ -424,6 +440,7 @@ common_interrupt:
movl %esp,%eax
call do_IRQ
jmp ret_from_intr
+ENDPROC(common_interrupt)

#define BUILD_INTERRUPT(name, nr) \
ENTRY(name) \
@@ -431,7 +448,8 @@ ENTRY(name) \
SAVE_ALL \
movl %esp,%eax; \
call smp_/**/name; \
- jmp ret_from_intr;
+ jmp ret_from_intr; \
+ENDPROC(name)

/* The include is where all of the SMP etc. interrupts come from */
#include "entry_arch.h"
@@ -439,6 +457,7 @@ ENTRY(name) \
ENTRY(divide_error)
pushl $0 # no error code
pushl $do_divide_error
+END(divide_error)
ALIGN
error_code:
pushl %ds
@@ -465,16 +484,19 @@ error_code:
movl %esp,%eax # pt_regs pointer
call *%edi
jmp ret_from_exception
+ENDPROC(error_code)

ENTRY(coprocessor_error)
pushl $0
pushl $do_coprocessor_error
jmp error_code
+END(coprocessor_error)

ENTRY(simd_coprocessor_error)
pushl $0
pushl $do_simd_coprocessor_error
jmp error_code
+END(simd_coprocessor_error)

ENTRY(device_not_available)
pushl $-1 # mark this as an int
@@ -490,6 +512,7 @@ device_not_available_emulate:
call math_emulate
addl $4, %esp
jmp ret_from_exception
+END(device_not_available)

/*
* Debug traps and NMI can happen at the one SYSENTER instruction
@@ -524,6 +547,7 @@ debug_stack_correct:
movl %esp,%eax # pt_regs pointer
call do_debug
jmp ret_from_exception
+END(debug)
.previous .text
/*
* NMI is doubly nasty. It can happen _while_ we're handling
@@ -595,6 +619,7 @@ nmi_16bit_stack:
.align 4
.long 1b,iret_exc
.previous
+ENDPROC(nmi)

KPROBE_ENTRY(int3)
pushl $-1 # mark this as an int
@@ -603,52 +628,63 @@ KPROBE_ENTRY(int3)
movl %esp,%eax # pt_regs pointer
call do_int3
jmp ret_from_exception
+END(int3)
.previous .text

ENTRY(overflow)
pushl $0
pushl $do_overflow
jmp error_code
+END(overflow)

ENTRY(bounds)
pushl $0
pushl $do_bounds
jmp error_code
+END(bounds)

ENTRY(invalid_op)
pushl $0
pushl $do_invalid_op
jmp error_code
+END(invalid_op)

ENTRY(coprocessor_segment_overrun)
pushl $0
pushl $do_coprocessor_segment_overrun
jmp error_code
+END(coprocessor_segment_overrun)

ENTRY(invalid_TSS)
pushl $do_invalid_TSS
jmp error_code
+END(invalid_TSS)

ENTRY(segment_not_present)
pushl $do_segment_not_present
jmp error_code
+END(segment_not_present)

ENTRY(stack_segment)
pushl $do_stack_segment
jmp error_code
+END(stack_segment)

KPROBE_ENTRY(general_protection)
pushl $do_general_protection
jmp error_code
+END(general_protection)
.previous .text

ENTRY(alignment_check)
pushl $do_alignment_check
jmp error_code
+END(alignment_check)

KPROBE_ENTRY(page_fault)
pushl $do_page_fault
jmp error_code
+END(page_fault)
.previous .text

#ifdef CONFIG_X86_MCE
@@ -656,12 +692,14 @@ ENTRY(machine_check)
pushl $0
pushl machine_check_vector
jmp error_code
+END(machine_check)
#endif

ENTRY(spurious_interrupt_bug)
pushl $0
pushl $do_spurious_interrupt_bug
jmp error_code
+END(spurious_interrupt_bug)

.section .rodata,"a"
#include "syscall_table.S"
diff -Npru /home/jbeulich/tmp/linux-2.6.17-rc3/arch/i386/kernel/syscall_table.S
2.6.17-rc3-i386-asm-types-sizes/arch/i386/kernel/syscall_table.S
--- /home/jbeulich/tmp/linux-2.6.17-rc3/arch/i386/kernel/syscall_table.S 2006-04-28 11:47:26.000000000 +0200
+++ 2.6.17-rc3-i386-asm-types-sizes/arch/i386/kernel/syscall_table.S 2006-04-28 12:08:59.000000000 +0200
@@ -315,3 +315,4 @@ ENTRY(sys_call_table)
.long sys_splice
.long sys_sync_file_range
.long sys_tee /* 315 */
+END(sys_call_table)


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/