aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/lib/div64.S
diff options
context:
space:
mode:
authorLaura Abbott <lauraa@codeaurora.org>2011-10-06 15:53:14 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-10-17 04:13:42 -0400
commit01885bc5ce5a58e043e00f3f295301ef1b9a0fc4 (patch)
tree16194eb2f035e2594da9bef259fb89adf566256c /arch/arm/lib/div64.S
parent4bdad983a4a4fb509aba8b102a2233f0ea1d7681 (diff)
ARM: 7125/1: Add unwinding annotations for 64bit division functions
The 64bit division functions never had unwinding annotations added. This prevents a backtrace from being printed within the function and if a division by 0 occurs. Add the annotations. Signed-off-by: Laura Abbott <lauraa@codeaurora.org> Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/lib/div64.S')
-rw-r--r--arch/arm/lib/div64.S8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/arm/lib/div64.S b/arch/arm/lib/div64.S
index faa7748142da..e55c4842c290 100644
--- a/arch/arm/lib/div64.S
+++ b/arch/arm/lib/div64.S
@@ -13,6 +13,7 @@
13 */ 13 */
14 14
15#include <linux/linkage.h> 15#include <linux/linkage.h>
16#include <asm/unwind.h>
16 17
17#ifdef __ARMEB__ 18#ifdef __ARMEB__
18#define xh r0 19#define xh r0
@@ -44,6 +45,7 @@
44 */ 45 */
45 46
46ENTRY(__do_div64) 47ENTRY(__do_div64)
48UNWIND(.fnstart)
47 49
48 @ Test for easy paths first. 50 @ Test for easy paths first.
49 subs ip, r4, #1 51 subs ip, r4, #1
@@ -189,7 +191,12 @@ ENTRY(__do_div64)
189 moveq yh, xh 191 moveq yh, xh
190 moveq xh, #0 192 moveq xh, #0
191 moveq pc, lr 193 moveq pc, lr
194UNWIND(.fnend)
192 195
196UNWIND(.fnstart)
197UNWIND(.pad #4)
198UNWIND(.save {lr})
199Ldiv0_64:
193 @ Division by 0: 200 @ Division by 0:
194 str lr, [sp, #-8]! 201 str lr, [sp, #-8]!
195 bl __div0 202 bl __div0
@@ -200,4 +207,5 @@ ENTRY(__do_div64)
200 mov xh, #0 207 mov xh, #0
201 ldr pc, [sp], #8 208 ldr pc, [sp], #8
202 209
210UNWIND(.fnend)
203ENDPROC(__do_div64) 211ENDPROC(__do_div64)