diff options
Diffstat (limited to 'gcc-4.4.3')
-rw-r--r-- | gcc-4.4.3/gcc/config/arm/lib1funcs.asm | 105 | ||||
-rw-r--r-- | gcc-4.4.3/gcc/config/arm/t-arm | 3 | ||||
-rw-r--r-- | gcc-4.4.3/gcc/config/arm/t-arm-coff | 3 | ||||
-rw-r--r-- | gcc-4.4.3/gcc/config/arm/t-arm-elf | 3 | ||||
-rw-r--r-- | gcc-4.4.3/gcc/config/arm/t-pe | 3 | ||||
-rw-r--r-- | gcc-4.4.3/gcc/config/arm/t-strongarm-elf | 3 | ||||
-rw-r--r-- | gcc-4.4.3/gcc/config/arm/t-symbian | 2 | ||||
-rw-r--r-- | gcc-4.4.3/gcc/config/arm/t-vxworks | 3 | ||||
-rw-r--r-- | gcc-4.4.3/gcc/config/arm/t-wince-pe | 3 |
9 files changed, 115 insertions, 13 deletions
diff --git a/gcc-4.4.3/gcc/config/arm/lib1funcs.asm b/gcc-4.4.3/gcc/config/arm/lib1funcs.asm index e59af4d66..75d206067 100644 --- a/gcc-4.4.3/gcc/config/arm/lib1funcs.asm +++ b/gcc-4.4.3/gcc/config/arm/lib1funcs.asm @@ -1590,6 +1590,111 @@ LSYM(Lchange_\register): #endif /* L_interwork_call_via_rX */ #endif /* !__thumb2__ */ + +/* Functions to support compact pic switch tables in thumb1 state. + All these routines take an index into the table in r0. The + table is at LR & ~1 (but this must be rounded up in the case + of 32-bit entires). They are only permitted to clobber r12 + and r14 and r0 must be preserved on exit. */ +#ifdef L_thumb1_case_sqi + + .text + .align 0 + .force_thumb + .syntax unified + THUMB_FUNC_START __gnu_thumb1_case_sqi + push {r1} + mov r1, lr + lsrs r1, r1, #1 + lsls r1, r1, #1 + ldrsb r1, [r1, r0] + lsls r1, r1, #1 + add lr, lr, r1 + pop {r1} + bx lr + SIZE (__gnu_thumb1_case_sqi) +#endif + +#ifdef L_thumb1_case_uqi + + .text + .align 0 + .force_thumb + .syntax unified + THUMB_FUNC_START __gnu_thumb1_case_uqi + push {r1} + mov r1, lr + lsrs r1, r1, #1 + lsls r1, r1, #1 + ldrb r1, [r1, r0] + lsls r1, r1, #1 + add lr, lr, r1 + pop {r1} + bx lr + SIZE (__gnu_thumb1_case_uqi) +#endif + +#ifdef L_thumb1_case_shi + + .text + .align 0 + .force_thumb + .syntax unified + THUMB_FUNC_START __gnu_thumb1_case_shi + push {r0, r1} + mov r1, lr + lsrs r1, r1, #1 + lsls r0, r0, #1 + lsls r1, r1, #1 + ldrsh r1, [r1, r0] + lsls r1, r1, #1 + add lr, lr, r1 + pop {r0, r1} + bx lr + SIZE (__gnu_thumb1_case_shi) +#endif + +#ifdef L_thumb1_case_uhi + + .text + .align 0 + .force_thumb + .syntax unified + THUMB_FUNC_START __gnu_thumb1_case_uhi + push {r0, r1} + mov r1, lr + lsrs r1, r1, #1 + lsls r0, r0, #1 + lsls r1, r1, #1 + ldrh r1, [r1, r0] + lsls r1, r1, #1 + add lr, lr, r1 + pop {r0, r1} + bx lr + SIZE (__gnu_thumb1_case_uhi) +#endif + +#ifdef L_thumb1_case_si + + .text + .align 0 + .force_thumb + .syntax unified + THUMB_FUNC_START __gnu_thumb1_case_si + push {r0, r1} + mov r1, lr + adds.n r1, r1, #2 /* Align to word. */ + lsrs r1, r1, #2 + lsls r0, r0, #2 + lsls r1, r1, #2 + ldr r0, [r1, r0] + adds r0, r0, r1 + mov lr, r0 + pop {r0, r1} + mov pc, lr /* We know we were called from thumb code. */ + SIZE (__gnu_thumb1_case_si) +#endif + #endif /* Arch supports thumb. */ #ifndef __symbian__ diff --git a/gcc-4.4.3/gcc/config/arm/t-arm b/gcc-4.4.3/gcc/config/arm/t-arm index 96e4e49a7..82bd4459a 100644 --- a/gcc-4.4.3/gcc/config/arm/t-arm +++ b/gcc-4.4.3/gcc/config/arm/t-arm @@ -15,6 +15,9 @@ MD_INCLUDES= $(srcdir)/config/arm/arm-tune.md \ $(srcdir)/config/arm/neon.md \ $(srcdir)/config/arm/thumb2.md +LIB1ASMSRC = arm/lib1funcs.asm +LIB1ASMFUNCS = _thumb1_case_sqi _thumb1_case_uqi _thumb1_case_shi \ + _thumb1_case_uhi _thumb1_case_si s-config s-conditions s-flags s-codes s-constants s-emit s-recog s-preds \ s-opinit s-extract s-peep s-attr s-attrtab s-output: $(MD_INCLUDES) diff --git a/gcc-4.4.3/gcc/config/arm/t-arm-coff b/gcc-4.4.3/gcc/config/arm/t-arm-coff index 04880833e..156be670f 100644 --- a/gcc-4.4.3/gcc/config/arm/t-arm-coff +++ b/gcc-4.4.3/gcc/config/arm/t-arm-coff @@ -1,5 +1,4 @@ -LIB1ASMSRC = arm/lib1funcs.asm -LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 +LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 # We want fine grained libraries, so use the new code to build the # floating point emulation libraries. diff --git a/gcc-4.4.3/gcc/config/arm/t-arm-elf b/gcc-4.4.3/gcc/config/arm/t-arm-elf index 5b812b750..3a0ebc3c5 100644 --- a/gcc-4.4.3/gcc/config/arm/t-arm-elf +++ b/gcc-4.4.3/gcc/config/arm/t-arm-elf @@ -1,9 +1,8 @@ -LIB1ASMSRC = arm/lib1funcs.asm # For most CPUs we have an assembly soft-float implementations. # However this is not true for ARMv6M. Here we want to use the soft-fp C # implementation. The soft-fp code is only build for ARMv6M. This pulls # in the asm implementation for other CPUs. -LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ +LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ _call_via_rX _interwork_call_via_rX \ _lshrdi3 _ashrdi3 _ashldi3 \ _arm_negdf2 _arm_addsubdf3 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ diff --git a/gcc-4.4.3/gcc/config/arm/t-pe b/gcc-4.4.3/gcc/config/arm/t-pe index abd9b39a0..0ae1cdda3 100644 --- a/gcc-4.4.3/gcc/config/arm/t-pe +++ b/gcc-4.4.3/gcc/config/arm/t-pe @@ -1,5 +1,4 @@ -LIB1ASMSRC = arm/lib1funcs.asm -LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX \ +LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX \ _interwork_call_via_rX _clzsi2 _clzdi2 _muldi3 # We want fine grained libraries, so use the new code to build the diff --git a/gcc-4.4.3/gcc/config/arm/t-strongarm-elf b/gcc-4.4.3/gcc/config/arm/t-strongarm-elf index efd07dd77..8dc0014ba 100644 --- a/gcc-4.4.3/gcc/config/arm/t-strongarm-elf +++ b/gcc-4.4.3/gcc/config/arm/t-strongarm-elf @@ -1,5 +1,4 @@ -LIB1ASMSRC = arm/lib1funcs.asm -LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _clzsi2 \ +LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _clzsi2 \ _clzdi2 _muldi3 # We want fine grained libraries, so use the new code to build the diff --git a/gcc-4.4.3/gcc/config/arm/t-symbian b/gcc-4.4.3/gcc/config/arm/t-symbian index fdd2b7533..6a204642b 100644 --- a/gcc-4.4.3/gcc/config/arm/t-symbian +++ b/gcc-4.4.3/gcc/config/arm/t-symbian @@ -1,4 +1,4 @@ -LIB1ASMFUNCS = _bb_init_func _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 \ +LIB1ASMFUNCS += _bb_init_func _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 \ _muldi3 # These functions have __aeabi equivalents and will never be called by GCC. diff --git a/gcc-4.4.3/gcc/config/arm/t-vxworks b/gcc-4.4.3/gcc/config/arm/t-vxworks index b3e86572c..0310759a8 100644 --- a/gcc-4.4.3/gcc/config/arm/t-vxworks +++ b/gcc-4.4.3/gcc/config/arm/t-vxworks @@ -1,5 +1,4 @@ -LIB1ASMSRC = arm/lib1funcs.asm -LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ +LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 _muldi3 # We want fine grained libraries, so use the new code to build the diff --git a/gcc-4.4.3/gcc/config/arm/t-wince-pe b/gcc-4.4.3/gcc/config/arm/t-wince-pe index 9196e5e5d..31233337a 100644 --- a/gcc-4.4.3/gcc/config/arm/t-wince-pe +++ b/gcc-4.4.3/gcc/config/arm/t-wince-pe @@ -1,5 +1,4 @@ -LIB1ASMSRC = arm/lib1funcs.asm -LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX \ +LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX \ _interwork_call_via_rX _clzsi2 _clzdi2 _muldi3 # We want fine grained libraries, so use the new code to build the |