diff options
Diffstat (limited to 'arch/arm/lib/div64.S')
-rw-r--r-- | arch/arm/lib/div64.S | 8 |
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 | ||
46 | ENTRY(__do_div64) | 47 | ENTRY(__do_div64) |
48 | UNWIND(.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 |
194 | UNWIND(.fnend) | ||
192 | 195 | ||
196 | UNWIND(.fnstart) | ||
197 | UNWIND(.pad #4) | ||
198 | UNWIND(.save {lr}) | ||
199 | Ldiv0_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 | ||
210 | UNWIND(.fnend) | ||
203 | ENDPROC(__do_div64) | 211 | ENDPROC(__do_div64) |