remove non-working pre-armv4t support from arm asm
authorRich Felker <dalias@aerifal.cx>
Tue, 10 Nov 2015 03:36:38 +0000 (22:36 -0500)
committerRich Felker <dalias@aerifal.cx>
Tue, 10 Nov 2015 03:36:38 +0000 (22:36 -0500)
the idea of the three-instruction sequence being removed was to be
able to return to thumb code when used on armv4t+ from a thumb caller,
but also to be able to run on armv4 without the bx instruction
available (in which case the low bit of lr would always be 0).
however, without compiler support for generating such a sequence from
C code, which does not exist and which there is unlikely to be
interest in implementing, there is little point in having it in the
asm, and it would likely be easier to add pre-armv4t support via
enhanced linker handling of R_ARM_V4BX than at the compiler level.

removing this code simplifies adding support for building libc in
thumb2-only form (for cortex-m).

arch/arm/reloc.h
arch/arm/src/arm/atomics.s
crt/arm/crtn.s
src/internal/arm/syscall.s
src/setjmp/arm/longjmp.s
src/setjmp/arm/setjmp.s
src/string/armel/memcpy.s
src/thread/arm/clone.s
src/thread/arm/syscall_cp.s

index e1ef3506e0c960bffb41bb517afd92cc74ffc086..6227bd1e9fcf7fe9c76a3aa06de6518d920dcddc 100644 (file)
 #define REL_TPOFF       R_ARM_TLS_TPOFF32
 //#define REL_TLSDESC     R_ARM_TLS_DESC
 
-#ifdef __thumb__
 #define CRTJMP(pc,sp) __asm__ __volatile__( \
        "mov sp,%1 ; bx %0" : : "r"(pc), "r"(sp) : "memory" )
-#else
-#define CRTJMP(pc,sp) __asm__ __volatile__( \
-       "mov sp,%1 ; tst %0,#1 ; moveq pc,%0 ; bx %0" : : "r"(pc), "r"(sp) : "memory" )
-#endif
index f241cc027c123f3fe7573c8395197cb8ae79be2a..ecf3f05ad0022d9897e7ef01e1e6ff1e4d17d542 100644 (file)
@@ -11,8 +11,6 @@ __a_barrier:
 .global __a_barrier_dummy
 .hidden __a_barrier_dummy
 __a_barrier_dummy:
-       tst lr,#1
-       moveq pc,lr
        bx lr
 .global __a_barrier_oldkuser
 .hidden __a_barrier_oldkuser
@@ -24,8 +22,6 @@ __a_barrier_oldkuser:
        mov lr,pc
        mov pc,ip
        pop {r0,r1,r2,r3,ip,lr}
-       tst lr,#1
-       moveq pc,lr
        bx lr
 .global __a_barrier_v6
 .hidden __a_barrier_v6
@@ -53,8 +49,6 @@ __a_cas_dummy:
        ldr r0,[r2]
        subs r0,r3,r0
        streq r1,[r2]
-       tst lr,#1
-       moveq pc,lr
        bx lr
 .global __a_cas_v6
 .hidden __a_cas_v6
index 1b626c0a1272494046896084d851d988b59a5d27..b3eca856f0d1ac72cfdd775e5b57444a972ce8c8 100644 (file)
@@ -1,11 +1,7 @@
 .section .init
        pop {r0,lr}
-       tst lr,#1
-       moveq pc,lr
        bx lr
 
 .section .fini
        pop {r0,lr}
-       tst lr,#1
-       moveq pc,lr
        bx lr
index 2028456c0a6986d680aa5eb0a00aafe3f8accec3..28cb17ba8641407d042db372a354e3376af62753 100644 (file)
@@ -11,6 +11,4 @@ __syscall:
        ldmfd ip,{r3,r4,r5,r6}
        svc 0
        ldmfd sp!,{r4,r5,r6,r7}
-       tst lr,#1
-       moveq pc,lr
        bx lr
index 82bce832352deb2baf4b6c2d79490bc1f64ce133..7db93e8a6837eb3c012d6db3c977207ebd2e5049 100644 (file)
@@ -33,9 +33,7 @@ longjmp:
        ldcl p1, cr13, [ip], #8
        ldcl p1, cr14, [ip], #8
        ldcl p1, cr15, [ip], #8
-3:     tst lr,#1
-       moveq pc,lr
-       bx lr
+3:     bx lr
 
 .hidden __hwcap
 1:     .word __hwcap-1b
index 32db7d873c27ed235bc2e07de4236bef5373fc09..61425ad5de75b22d1d2aedd796251a80cbe50cb7 100644 (file)
@@ -35,9 +35,7 @@ setjmp:
        stcl p1, cr13, [ip], #8
        stcl p1, cr14, [ip], #8
        stcl p1, cr15, [ip], #8
-3:     tst lr,#1
-       moveq pc,lr
-       bx lr
+3:     bx lr
 
 .hidden __hwcap
 1:     .word __hwcap-1b
index 54164030e0a248fc21dabacd93ea1c6fe0c5bea9..b16be0d66d4cbaff1941489a03118ff3af4335c7 100644 (file)
@@ -189,8 +189,6 @@ less_than_32_left:
        /* we're done! restore everything and return */
 1:      ldmfd   sp!, {r5-r11}
        ldmfd   sp!, {r0, r4, lr}
-       tst     lr, #1
-       moveq   pc, lr
        bx      lr
 
        /********************************************************************/
@@ -378,6 +376,4 @@ copy_last_3_and_return:
        /* we're done! restore sp and spilled registers and return */
        add     sp,  sp, #28
        ldmfd   sp!, {r0, r4, lr}
-       tst     lr, #1
-       moveq   pc, lr
        bx      lr
index d146999bda7bc3f86b1ebc5e20f9b334d17f350c..b7fb788b156d31865420d8fc123f20d0d0797609 100644 (file)
@@ -15,8 +15,6 @@ __clone:
        tst r0,r0
        beq 1f
        ldmfd sp!,{r4,r5,r6,r7}
-       tst lr,#1
-       moveq pc,lr
        bx lr
 
 1:     mov r0,r6
index 96ce6135ec14c5948c652ae87784970c1b6aff0b..64528b39a916f8ec082663ab9d8e5658eff80948 100644 (file)
@@ -22,8 +22,6 @@ __cp_begin:
        svc 0
 __cp_end:
        ldmfd sp!,{r4,r5,r6,r7,lr}
-       tst lr,#1
-       moveq pc,lr
        bx lr
 __cp_cancel:
        ldmfd sp!,{r4,r5,r6,r7,lr}