diff options
| author | Nicolas Pitre <nico@cam.org> | 2006-01-14 11:18:29 -0500 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-01-14 11:18:29 -0500 |
| commit | ba95e4e4a0a8a3c6aba363d45f78d5f2e2d111eb (patch) | |
| tree | 886cf3398d3a8e9ca3212dcf233b59110fc87d3d /arch/arm/lib | |
| parent | 499b2ea11ff00c624d63af23516404fa2156639a (diff) | |
[ARM] 3104/1: ARM EABI: new helper function names
Patch from Nicolas Pitre
The ARM EABI defines new names for GCC helper functions.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/lib')
| -rw-r--r-- | arch/arm/lib/ashldi3.S | 1 | ||||
| -rw-r--r-- | arch/arm/lib/ashrdi3.S | 1 | ||||
| -rw-r--r-- | arch/arm/lib/lib1funcs.S | 23 | ||||
| -rw-r--r-- | arch/arm/lib/lshrdi3.S | 1 | ||||
| -rw-r--r-- | arch/arm/lib/muldi3.S | 1 | ||||
| -rw-r--r-- | arch/arm/lib/ucmpdi2.S | 14 |
6 files changed, 41 insertions, 0 deletions
diff --git a/arch/arm/lib/ashldi3.S b/arch/arm/lib/ashldi3.S index 561e20717b30..55e57a1c2e6d 100644 --- a/arch/arm/lib/ashldi3.S +++ b/arch/arm/lib/ashldi3.S | |||
| @@ -37,6 +37,7 @@ Boston, MA 02110-1301, USA. */ | |||
| 37 | #endif | 37 | #endif |
| 38 | 38 | ||
| 39 | ENTRY(__ashldi3) | 39 | ENTRY(__ashldi3) |
| 40 | ENTRY(__aeabi_llsl) | ||
| 40 | 41 | ||
| 41 | subs r3, r2, #32 | 42 | subs r3, r2, #32 |
| 42 | rsb ip, r2, #32 | 43 | rsb ip, r2, #32 |
diff --git a/arch/arm/lib/ashrdi3.S b/arch/arm/lib/ashrdi3.S index 86fb2a90c301..0b31398f89b2 100644 --- a/arch/arm/lib/ashrdi3.S +++ b/arch/arm/lib/ashrdi3.S | |||
| @@ -37,6 +37,7 @@ Boston, MA 02110-1301, USA. */ | |||
| 37 | #endif | 37 | #endif |
| 38 | 38 | ||
| 39 | ENTRY(__ashrdi3) | 39 | ENTRY(__ashrdi3) |
| 40 | ENTRY(__aeabi_lasr) | ||
| 40 | 41 | ||
| 41 | subs r3, r2, #32 | 42 | subs r3, r2, #32 |
| 42 | rsb ip, r2, #32 | 43 | rsb ip, r2, #32 |
diff --git a/arch/arm/lib/lib1funcs.S b/arch/arm/lib/lib1funcs.S index 4964e5bafa0f..4e492f4b3f0e 100644 --- a/arch/arm/lib/lib1funcs.S +++ b/arch/arm/lib/lib1funcs.S | |||
| @@ -206,6 +206,7 @@ Boston, MA 02111-1307, USA. */ | |||
| 206 | 206 | ||
| 207 | 207 | ||
| 208 | ENTRY(__udivsi3) | 208 | ENTRY(__udivsi3) |
| 209 | ENTRY(__aeabi_uidiv) | ||
| 209 | 210 | ||
| 210 | subs r2, r1, #1 | 211 | subs r2, r1, #1 |
| 211 | moveq pc, lr | 212 | moveq pc, lr |
| @@ -246,6 +247,7 @@ ENTRY(__umodsi3) | |||
| 246 | 247 | ||
| 247 | 248 | ||
| 248 | ENTRY(__divsi3) | 249 | ENTRY(__divsi3) |
| 250 | ENTRY(__aeabi_idiv) | ||
| 249 | 251 | ||
| 250 | cmp r1, #0 | 252 | cmp r1, #0 |
| 251 | eor ip, r0, r1 @ save the sign of the result. | 253 | eor ip, r0, r1 @ save the sign of the result. |
| @@ -303,6 +305,27 @@ ENTRY(__modsi3) | |||
| 303 | rsbmi r0, r0, #0 | 305 | rsbmi r0, r0, #0 |
| 304 | mov pc, lr | 306 | mov pc, lr |
| 305 | 307 | ||
| 308 | #ifdef CONFIG_AEABI | ||
| 309 | |||
| 310 | ENTRY(__aeabi_uidivmod) | ||
| 311 | |||
| 312 | stmfd sp!, {r0, r1, ip, lr} | ||
| 313 | bl __aeabi_uidiv | ||
| 314 | ldmfd sp!, {r1, r2, ip, lr} | ||
| 315 | mul r3, r0, r2 | ||
| 316 | sub r1, r1, r3 | ||
| 317 | mov pc, lr | ||
| 318 | |||
| 319 | ENTRY(__aeabi_idivmod) | ||
| 320 | |||
| 321 | stmfd sp!, {r0, r1, ip, lr} | ||
| 322 | bl __aeabi_idiv | ||
| 323 | ldmfd sp!, {r1, r2, ip, lr} | ||
| 324 | mul r3, r0, r2 | ||
| 325 | sub r1, r1, r3 | ||
| 326 | mov pc, lr | ||
| 327 | |||
| 328 | #endif | ||
| 306 | 329 | ||
| 307 | Ldiv0: | 330 | Ldiv0: |
| 308 | 331 | ||
diff --git a/arch/arm/lib/lshrdi3.S b/arch/arm/lib/lshrdi3.S index 46c2ed19ec95..a86dbdd59cc4 100644 --- a/arch/arm/lib/lshrdi3.S +++ b/arch/arm/lib/lshrdi3.S | |||
| @@ -37,6 +37,7 @@ Boston, MA 02110-1301, USA. */ | |||
| 37 | #endif | 37 | #endif |
| 38 | 38 | ||
| 39 | ENTRY(__lshrdi3) | 39 | ENTRY(__lshrdi3) |
| 40 | ENTRY(__aeabi_llsr) | ||
| 40 | 41 | ||
| 41 | subs r3, r2, #32 | 42 | subs r3, r2, #32 |
| 42 | rsb ip, r2, #32 | 43 | rsb ip, r2, #32 |
diff --git a/arch/arm/lib/muldi3.S b/arch/arm/lib/muldi3.S index c7fbdf005319..72d594184b8a 100644 --- a/arch/arm/lib/muldi3.S +++ b/arch/arm/lib/muldi3.S | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | #endif | 25 | #endif |
| 26 | 26 | ||
| 27 | ENTRY(__muldi3) | 27 | ENTRY(__muldi3) |
| 28 | ENTRY(__aeabi_lmul) | ||
| 28 | 29 | ||
| 29 | mul xh, yl, xh | 30 | mul xh, yl, xh |
| 30 | mla xh, xl, yh, xh | 31 | mla xh, xl, yh, xh |
diff --git a/arch/arm/lib/ucmpdi2.S b/arch/arm/lib/ucmpdi2.S index 112630f93e5d..d847a62834cb 100644 --- a/arch/arm/lib/ucmpdi2.S +++ b/arch/arm/lib/ucmpdi2.S | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
| 11 | */ | 11 | */ |
| 12 | 12 | ||
| 13 | #include <linux/config.h> | ||
| 13 | #include <linux/linkage.h> | 14 | #include <linux/linkage.h> |
| 14 | 15 | ||
| 15 | #ifdef __ARMEB__ | 16 | #ifdef __ARMEB__ |
| @@ -33,3 +34,16 @@ ENTRY(__ucmpdi2) | |||
| 33 | movhi r0, #2 | 34 | movhi r0, #2 |
| 34 | mov pc, lr | 35 | mov pc, lr |
| 35 | 36 | ||
| 37 | #ifdef CONFIG_AEABI | ||
| 38 | |||
| 39 | ENTRY(__aeabi_ulcmp) | ||
| 40 | |||
| 41 | cmp xh, yh | ||
| 42 | cmpeq xl, yl | ||
| 43 | movlo r0, #-1 | ||
| 44 | moveq r0, #0 | ||
| 45 | movhi r0, #1 | ||
| 46 | mov pc, lr | ||
| 47 | |||
| 48 | #endif | ||
| 49 | |||
