[PATCH 05/10] ARM: ftrace: add ENDPROC annotations

Rabin Vincent
2010-02-13T19:48:41Z

When building as Thumb-2, the ".type foo, %function" annotation in
ENDPROC seems to be required in order for the assembly routines to be
recognized as Thumb-2 code. If the ENDPROC annotations are not present,
calls to these routines are generated as BLX instead of BL.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Rabin Vincent <rabin@rab.in>
---
arch/arm/kernel/entry-common.S | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index c98e3a3..42eb166 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -135,6 +135,7 @@ mcount_call:
bl ftrace_stub
ldr lr, [fp, #-4] @ restore lr
ldmia sp!, {r0-r3, pc}
+ENDPROC(mcount)

ENTRY(ftrace_caller)
stmdb sp!, {r0-r3, lr}
@@ -147,6 +148,7 @@ ftrace_call:
bl ftrace_stub
ldr lr, [fp, #-4] @ restore lr
ldmia sp!, {r0-r3, pc}
+ENDPROC(ftrace_caller)

#else

@@ -168,6 +170,7 @@ gnu_trace:
mov pc, r2
ldmia sp!, {r0-r3, ip, lr}
mov pc, ip
+ENDPROC(__gnu_mcount_nc)

#ifdef CONFIG_OLD_MCOUNT
/*
@@ -193,13 +196,15 @@ trace:
mov pc, r2
ldr lr, [fp, #-4] @ restore lr
ldmia sp!, {r0-r3, pc}
+ENDPROC(mcount)
#endif

#endif /* CONFIG_DYNAMIC_FTRACE */

.globl ftrace_stub
-ftrace_stub:
+ENTRY(ftrace_stub)
mov pc, lr
+ENDPROC(ftrace_stub)

#endif /* CONFIG_FUNCTION_TRACER */

--
1.6.6