ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+
authorRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 30 Jun 2014 15:29:12 +0000 (16:29 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 18 Jul 2014 11:29:04 +0000 (12:29 +0100)
ARMv6 and greater introduced a new instruction ("bx") which can be used
to return from function calls.  Recent CPUs perform better when the
"bx lr" instruction is used rather than the "mov pc, lr" instruction,
and this sequence is strongly recommended to be used by the ARM
architecture manual (section A.4.1.1).

We provide a new macro "ret" with all its variants for the condition
code which will resolve to the appropriate instruction.

Rather than doing this piecemeal, and miss some instances, change all
the "mov pc" instances to use the new macro, with the exception of
the "movs" instruction and the kprobes code.  This allows us to detect
the "mov pc, lr" case and fix it up - and also gives us the possibility
of deploying this for other registers depending on the CPU selection.

Reported-by: Will Deacon <will.deacon@arm.com>
Tested-by: Stephen Warren <swarren@nvidia.com> # Tegra Jetson TK1
Tested-by: Robert Jarzmik <robert.jarzmik@free.fr> # mioa701_bootresume.S
Tested-by: Andrew Lunn <andrew@lunn.ch> # Kirkwood
Tested-by: Shawn Guo <shawn.guo@freescale.com>
Tested-by: Tony Lindgren <tony@atomide.com> # OMAPs
Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com> # Armada XP, 375, 385
Acked-by: Sekhar Nori <nsekhar@ti.com> # DaVinci
Acked-by: Christoffer Dall <christoffer.dall@linaro.org> # kvm/hyp
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com> # PXA3xx
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> # Xen
Tested-by: Uwe Kleine-K├Ânig <u.kleine-koenig@pengutronix.de> # ARMv7M
Tested-by: Simon Horman <horms+renesas@verge.net.au> # Shmobile
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
106 files changed:
arch/arm/crypto/aes-armv4.S
arch/arm/include/asm/assembler.h
arch/arm/include/asm/entry-macro-multi.S
arch/arm/kernel/debug.S
arch/arm/kernel/entry-armv.S
arch/arm/kernel/entry-common.S
arch/arm/kernel/entry-header.S
arch/arm/kernel/fiqasm.S
arch/arm/kernel/head-common.S
arch/arm/kernel/head-nommu.S
arch/arm/kernel/head.S
arch/arm/kernel/hyp-stub.S
arch/arm/kernel/iwmmxt.S
arch/arm/kernel/relocate_kernel.S
arch/arm/kernel/sleep.S
arch/arm/kvm/init.S
arch/arm/lib/ashldi3.S
arch/arm/lib/ashrdi3.S
arch/arm/lib/backtrace.S
arch/arm/lib/bitops.h
arch/arm/lib/bswapsdi2.S
arch/arm/lib/call_with_stack.S
arch/arm/lib/csumpartial.S
arch/arm/lib/csumpartialcopygeneric.S
arch/arm/lib/delay-loop.S
arch/arm/lib/div64.S
arch/arm/lib/findbit.S
arch/arm/lib/getuser.S
arch/arm/lib/io-readsb.S
arch/arm/lib/io-readsl.S
arch/arm/lib/io-readsw-armv3.S
arch/arm/lib/io-readsw-armv4.S
arch/arm/lib/io-writesb.S
arch/arm/lib/io-writesl.S
arch/arm/lib/io-writesw-armv3.S
arch/arm/lib/io-writesw-armv4.S
arch/arm/lib/lib1funcs.S
arch/arm/lib/lshrdi3.S
arch/arm/lib/memchr.S
arch/arm/lib/memset.S
arch/arm/lib/memzero.S
arch/arm/lib/muldi3.S
arch/arm/lib/putuser.S
arch/arm/lib/strchr.S
arch/arm/lib/strrchr.S
arch/arm/lib/ucmpdi2.S
arch/arm/mach-davinci/sleep.S
arch/arm/mach-ep93xx/crunch-bits.S
arch/arm/mach-imx/suspend-imx6.S
arch/arm/mach-mvebu/coherency_ll.S
arch/arm/mach-mvebu/headsmp-a9.S
arch/arm/mach-omap2/sleep44xx.S
arch/arm/mach-omap2/sram242x.S
arch/arm/mach-omap2/sram243x.S
arch/arm/mach-pxa/mioa701_bootresume.S
arch/arm/mach-pxa/standby.S
arch/arm/mach-s3c24xx/sleep-s3c2410.S
arch/arm/mach-s3c24xx/sleep-s3c2412.S
arch/arm/mach-shmobile/headsmp.S
arch/arm/mach-tegra/sleep-tegra20.S
arch/arm/mach-tegra/sleep-tegra30.S
arch/arm/mach-tegra/sleep.S
arch/arm/mm/cache-fa.S
arch/arm/mm/cache-nop.S
arch/arm/mm/cache-v4.S
arch/arm/mm/cache-v4wb.S
arch/arm/mm/cache-v4wt.S
arch/arm/mm/cache-v6.S
arch/arm/mm/cache-v7.S
arch/arm/mm/l2c-l2x0-resume.S
arch/arm/mm/proc-arm1020.S
arch/arm/mm/proc-arm1020e.S
arch/arm/mm/proc-arm1022.S
arch/arm/mm/proc-arm1026.S
arch/arm/mm/proc-arm720.S
arch/arm/mm/proc-arm740.S
arch/arm/mm/proc-arm7tdmi.S
arch/arm/mm/proc-arm920.S
arch/arm/mm/proc-arm922.S
arch/arm/mm/proc-arm925.S
arch/arm/mm/proc-arm926.S
arch/arm/mm/proc-arm940.S
arch/arm/mm/proc-arm946.S
arch/arm/mm/proc-arm9tdmi.S
arch/arm/mm/proc-fa526.S
arch/arm/mm/proc-feroceon.S
arch/arm/mm/proc-mohawk.S
arch/arm/mm/proc-sa110.S
arch/arm/mm/proc-sa1100.S
arch/arm/mm/proc-v6.S
arch/arm/mm/proc-v7-2level.S
arch/arm/mm/proc-v7-3level.S
arch/arm/mm/proc-v7.S
arch/arm/mm/proc-v7m.S
arch/arm/mm/proc-xsc3.S
arch/arm/mm/proc-xscale.S
arch/arm/mm/tlb-fa.S
arch/arm/mm/tlb-v4.S
arch/arm/mm/tlb-v4wb.S
arch/arm/mm/tlb-v4wbi.S
arch/arm/mm/tlb-v6.S
arch/arm/mm/tlb-v7.S
arch/arm/nwfpe/entry.S
arch/arm/vfp/entry.S
arch/arm/vfp/vfphw.S
arch/arm/xen/hypercall.S

index 3a14ea8fe97e5cac183ad8c9148b816e473b4ae5..ebb9761fb572b26e3d586ec238300d631151e6e1 100644 (file)
@@ -35,6 +35,7 @@
 @ that is being targetted.
 
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 
 .text
 
@@ -648,7 +649,7 @@ _armv4_AES_set_encrypt_key:
 
 .Ldone:        mov     r0,#0
        ldmia   sp!,{r4-r12,lr}
-.Labrt:        mov     pc,lr
+.Labrt:        ret     lr
 ENDPROC(private_AES_set_encrypt_key)
 
 .align 5
index 906703a5b564dfe138b011d562c1b7510ebfd12a..f67fd3afebdfd3fd46418d80d12dd31ea628936c 100644 (file)
@@ -427,4 +427,25 @@ THUMB(     orr     \reg , \reg , #PSR_T_BIT        )
 #endif
        .endm
 
+       .irp    c,,eq,ne,cs,cc,mi,pl,vs,vc,hi,ls,ge,lt,gt,le,hs,lo
+       .macro  ret\c, reg
+#if __LINUX_ARM_ARCH__ < 6
+       mov\c   pc, \reg
+#else
+       .ifeqs  "\reg", "lr"
+       bx\c    \reg
+       .else
+       mov\c   pc, \reg
+       .endif
+#endif
+       .endm
+       .endr
+
+       .macro  ret.w, reg
+       ret     \reg
+#ifdef CONFIG_THUMB2_KERNEL
+       nop
+#endif
+       .endm
+
 #endif /* __ASM_ASSEMBLER_H__ */
index 88d61815f0c03caceaa94af319687b6dbd6913ce..469a2b30fa279bbc1eb280ddb78b1952389dfc77 100644 (file)
@@ -35,5 +35,5 @@
 \symbol_name:
        mov     r8, lr
        arch_irq_handler_default
-       mov     pc, r8
+       ret     r8
        .endm
index 14f7c3b14632e22c02632faeaca9f07adcbc232f..78c91b5f97d4943e896b4d566f71d491f9e17b22 100644 (file)
@@ -90,7 +90,7 @@ ENTRY(printascii)
                ldrneb  r1, [r0], #1
                teqne   r1, #0
                bne     1b
-               mov     pc, lr
+               ret     lr
 ENDPROC(printascii)
 
 ENTRY(printch)
@@ -105,7 +105,7 @@ ENTRY(debug_ll_addr)
                addruart r2, r3, ip
                str     r2, [r0]
                str     r3, [r1]
-               mov     pc, lr
+               ret     lr
 ENDPROC(debug_ll_addr)
 #endif
 
@@ -116,7 +116,7 @@ ENTRY(printascii)
                mov     r0, #0x04               @ SYS_WRITE0
        ARM(    svc     #0x123456       )
        THUMB(  svc     #0xab           )
-               mov     pc, lr
+               ret     lr
 ENDPROC(printascii)
 
 ENTRY(printch)
@@ -125,14 +125,14 @@ ENTRY(printch)
                mov     r0, #0x03               @ SYS_WRITEC
        ARM(    svc     #0x123456       )
        THUMB(  svc     #0xab           )
-               mov     pc, lr
+               ret     lr
 ENDPROC(printch)
 
 ENTRY(debug_ll_addr)
                mov     r2, #0
                str     r2, [r0]
                str     r2, [r1]
-               mov     pc, lr
+               ret     lr
 ENDPROC(debug_ll_addr)
 
 #endif
index 52a949a8077d3329fc674cbbda7645673e484371..36276cdccfbc71e9e69de18fe21a00ac25ddbd07 100644 (file)
@@ -224,7 +224,7 @@ svc_preempt:
 1:     bl      preempt_schedule_irq            @ irq en/disable is done inside
        ldr     r0, [tsk, #TI_FLAGS]            @ get new tasks TI_FLAGS
        tst     r0, #_TIF_NEED_RESCHED
-       moveq   pc, r8                          @ go again
+       reteq   r8                              @ go again
        b       1b
 #endif
 
@@ -490,7 +490,7 @@ ENDPROC(__und_usr)
        .pushsection .fixup, "ax"
        .align  2
 4:     str     r4, [sp, #S_PC]                 @ retry current instruction
-       mov     pc, r9
+       ret     r9
        .popsection
        .pushsection __ex_table,"a"
        .long   1b, 4b
@@ -552,7 +552,7 @@ call_fpe:
 #endif
        tst     r0, #0x08000000                 @ only CDP/CPRT/LDC/STC have bit 27
        tstne   r0, #0x04000000                 @ bit 26 set on both ARM and Thumb-2
-       moveq   pc, lr
+       reteq   lr
        and     r8, r0, #0x00000f00             @ mask out CP number
  THUMB(        lsr     r8, r8, #8              )
        mov     r7, #1
@@ -571,33 +571,33 @@ call_fpe:
  THUMB(        add     pc, r8                  )
        nop
 
-       movw_pc lr                              @ CP#0
+       ret.w   lr                              @ CP#0
        W(b)    do_fpe                          @ CP#1 (FPE)
        W(b)    do_fpe                          @ CP#2 (FPE)
-       movw_pc lr                              @ CP#3
+       ret.w   lr                              @ CP#3
 #ifdef CONFIG_CRUNCH
        b       crunch_task_enable              @ CP#4 (MaverickCrunch)
        b       crunch_task_enable              @ CP#5 (MaverickCrunch)
        b       crunch_task_enable              @ CP#6 (MaverickCrunch)
 #else
-       movw_pc lr                              @ CP#4
-       movw_pc lr                              @ CP#5
-       movw_pc lr                              @ CP#6
+       ret.w   lr                              @ CP#4
+       ret.w   lr                              @ CP#5
+       ret.w   lr                              @ CP#6
 #endif
-       movw_pc lr                              @ CP#7
-       movw_pc lr                              @ CP#8
-       movw_pc lr                              @ CP#9
+       ret.w   lr                              @ CP#7
+       ret.w   lr                              @ CP#8
+       ret.w   lr                              @ CP#9
 #ifdef CONFIG_VFP
        W(b)    do_vfp                          @ CP#10 (VFP)
        W(b)    do_vfp                          @ CP#11 (VFP)
 #else
-       movw_pc lr                              @ CP#10 (VFP)
-       movw_pc lr                              @ CP#11 (VFP)
+       ret.w   lr                              @ CP#10 (VFP)
+       ret.w   lr                              @ CP#11 (VFP)
 #endif
-       movw_pc lr                              @ CP#12
-       movw_pc lr                              @ CP#13
-       movw_pc lr                              @ CP#14 (Debug)
-       movw_pc lr                              @ CP#15 (Control)
+       ret.w   lr                              @ CP#12
+       ret.w   lr                              @ CP#13
+       ret.w   lr                              @ CP#14 (Debug)
+       ret.w   lr                              @ CP#15 (Control)
 
 #ifdef NEED_CPU_ARCHITECTURE
        .align  2
@@ -649,7 +649,7 @@ ENTRY(fp_enter)
        .popsection
 
 ENTRY(no_fp)
-       mov     pc, lr
+       ret     lr
 ENDPROC(no_fp)
 
 __und_usr_fault_32:
@@ -745,7 +745,7 @@ ENDPROC(__switch_to)
 #ifdef CONFIG_ARM_THUMB
        bx      \reg
 #else
-       mov     pc, \reg
+       ret     \reg
 #endif
        .endm
 
@@ -837,7 +837,7 @@ kuser_cmpxchg64_fixup:
 #if __LINUX_ARM_ARCH__ < 6
        bcc     kuser_cmpxchg32_fixup
 #endif
-       mov     pc, lr
+       ret     lr
        .previous
 
 #else
@@ -905,7 +905,7 @@ kuser_cmpxchg32_fixup:
        subs    r8, r4, r7
        rsbcss  r8, r8, #(2b - 1b)
        strcs   r7, [sp, #S_PC]
-       mov     pc, lr
+       ret     lr
        .previous
 
 #else
index 7139d4a7dea7d5ad3628084f8732a08a5a9bfeb4..e52fe5a2d8439e36dc2e75bc3f5eb1a6df5ec752 100644 (file)
@@ -8,6 +8,7 @@
  * published by the Free Software Foundation.
  */
 
+#include <asm/assembler.h>
 #include <asm/unistd.h>
 #include <asm/ftrace.h>
 #include <asm/unwind.h>
@@ -88,7 +89,7 @@ ENTRY(ret_from_fork)
        cmp     r5, #0
        movne   r0, r4
        adrne   lr, BSYM(1f)
-       movne   pc, r5
+       retne   r5
 1:     get_thread_info tsk
        b       ret_slow_syscall
 ENDPROC(ret_from_fork)
@@ -290,7 +291,7 @@ ENDPROC(ftrace_graph_caller_old)
 
 .macro mcount_exit
        ldmia   sp!, {r0-r3, ip, lr}
-       mov     pc, ip
+       ret     ip
 .endm
 
 ENTRY(__gnu_mcount_nc)
@@ -298,7 +299,7 @@ UNWIND(.fnstart)
 #ifdef CONFIG_DYNAMIC_FTRACE
        mov     ip, lr
        ldmia   sp!, {lr}
-       mov     pc, ip
+       ret     ip
 #else
        __mcount
 #endif
@@ -333,12 +334,12 @@ return_to_handler:
        bl      ftrace_return_to_handler
        mov     lr, r0                  @ r0 has real ret addr
        ldmia   sp!, {r0-r3}
-       mov     pc, lr
+       ret     lr
 #endif
 
 ENTRY(ftrace_stub)
 .Lftrace_stub:
-       mov     pc, lr
+       ret     lr
 ENDPROC(ftrace_stub)
 
 #endif /* CONFIG_FUNCTION_TRACER */
@@ -561,7 +562,7 @@ sys_mmap2:
                streq   r5, [sp, #4]
                beq     sys_mmap_pgoff
                mov     r0, #-EINVAL
-               mov     pc, lr
+               ret     lr
 #else
                str     r5, [sp, #4]
                b       sys_mmap_pgoff
index 5d702f8900b106bceaf6f006b5b186103a0bf269..8db307d0954bb03ee95550471dcc0e6f86ae560f 100644 (file)
        movs    pc, lr                          @ return & move spsr_svc into cpsr
        .endm
 
-       @
-       @ 32-bit wide "mov pc, reg"
-       @
-       .macro  movw_pc, reg
-       mov     pc, \reg
-       .endm
 #else  /* CONFIG_THUMB2_KERNEL */
        .macro  svc_exit, rpsr, irq = 0
        .if     \irq != 0
        movs    pc, lr                          @ return & move spsr_svc into cpsr
        .endm
 #endif /* ifdef CONFIG_CPU_V7M / else */
-
-       @
-       @ 32-bit wide "mov pc, reg"
-       @
-       .macro  movw_pc, reg
-       mov     pc, \reg
-       nop
-       .endm
 #endif /* !CONFIG_THUMB2_KERNEL */
 
 /*
index 207f9d6520103232ac521ba38031bcbde7f18b0a..8dd26e1a9bd69051a1548d99c157cad2e65ba81b 100644 (file)
@@ -32,7 +32,7 @@ ENTRY(__set_fiq_regs)
        ldr     lr, [r0]
        msr     cpsr_c, r1      @ return to SVC mode
        mov     r0, r0          @ avoid hazard prior to ARMv4
-       mov     pc, lr
+       ret     lr
 ENDPROC(__set_fiq_regs)
 
 ENTRY(__get_fiq_regs)
@@ -45,5 +45,5 @@ ENTRY(__get_fiq_regs)
        str     lr, [r0]
        msr     cpsr_c, r1      @ return to SVC mode
        mov     r0, r0          @ avoid hazard prior to ARMv4
-       mov     pc, lr
+       ret     lr
 ENDPROC(__get_fiq_regs)
index 572a38335c9627a81307c4a88f7ab0981332af0f..8733012d231f32d5a370e2666885b0813dff097b 100644 (file)
@@ -10,6 +10,7 @@
  * published by the Free Software Foundation.
  *
  */
+#include <asm/assembler.h>
 
 #define ATAG_CORE 0x54410001
 #define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
@@ -61,10 +62,10 @@ __vet_atags:
        cmp     r5, r6
        bne     1f
 
-2:     mov     pc, lr                          @ atag/dtb pointer is ok
+2:     ret     lr                              @ atag/dtb pointer is ok
 
 1:     mov     r2, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(__vet_atags)
 
 /*
@@ -162,7 +163,7 @@ __lookup_processor_type:
        cmp     r5, r6
        blo     1b
        mov     r5, #0                          @ unknown processor
-2:     mov     pc, lr
+2:     ret     lr
 ENDPROC(__lookup_processor_type)
 
 /*
index 716249cc2ee18c178643e7e6c4a0cd0eb6a48c00..cc176b67c13487b080bf7d1dc430314496a8b9b1 100644 (file)
@@ -82,7 +82,7 @@ ENTRY(stext)
        adr     lr, BSYM(1f)                    @ return (PIC) address
  ARM(  add     pc, r10, #PROCINFO_INITFUNC     )
  THUMB(        add     r12, r10, #PROCINFO_INITFUNC    )
- THUMB(        mov     pc, r12                         )
+ THUMB(        ret     r12                             )
  1:    b       __after_proc_init
 ENDPROC(stext)
 
@@ -119,7 +119,7 @@ ENTRY(secondary_startup)
        mov     r13, r12                        @ __secondary_switched address
  ARM(  add     pc, r10, #PROCINFO_INITFUNC     )
  THUMB(        add     r12, r10, #PROCINFO_INITFUNC    )
- THUMB(        mov     pc, r12                         )
+ THUMB(        ret     r12                             )
 ENDPROC(secondary_startup)
 
 ENTRY(__secondary_switched)
@@ -164,7 +164,7 @@ __after_proc_init:
 #endif
        mcr     p15, 0, r0, c1, c0, 0           @ write control reg
 #endif /* CONFIG_CPU_CP15 */
-       mov     pc, r13
+       ret     r13
 ENDPROC(__after_proc_init)
        .ltorg
 
@@ -254,7 +254,7 @@ ENTRY(__setup_mpu)
        orr     r0, r0, #CR_M                   @ Set SCTRL.M (MPU on)
        mcr     p15, 0, r0, c1, c0, 0           @ Enable MPU
        isb
-       mov pc,lr
+       ret     lr
 ENDPROC(__setup_mpu)
 #endif
 #include "head-common.S"
index 2c35f0ff2fdc82a5a5cfa66ab0d3c5e798d50676..664eee8c4a26ce5998e72a3b1e70ffe8bfa2d8f3 100644 (file)
@@ -140,7 +140,7 @@ ENTRY(stext)
        mov     r8, r4                          @ set TTBR1 to swapper_pg_dir
  ARM(  add     pc, r10, #PROCINFO_INITFUNC     )
  THUMB(        add     r12, r10, #PROCINFO_INITFUNC    )
- THUMB(        mov     pc, r12                         )
+ THUMB(        ret     r12                             )
 1:     b       __enable_mmu
 ENDPROC(stext)
        .ltorg
@@ -335,7 +335,7 @@ __create_page_tables:
        sub     r4, r4, #0x1000         @ point to the PGD table
        mov     r4, r4, lsr #ARCH_PGD_SHIFT
 #endif
-       mov     pc, lr
+       ret     lr
 ENDPROC(__create_page_tables)
        .ltorg
        .align
@@ -383,7 +383,7 @@ ENTRY(secondary_startup)
  ARM(  add     pc, r10, #PROCINFO_INITFUNC     ) @ initialise processor
                                                  @ (return control reg)
  THUMB(        add     r12, r10, #PROCINFO_INITFUNC    )
- THUMB(        mov     pc, r12                         )
+ THUMB(        ret     r12                             )
 ENDPROC(secondary_startup)
 
        /*
@@ -468,7 +468,7 @@ ENTRY(__turn_mmu_on)
        instr_sync
        mov     r3, r3
        mov     r3, r13
-       mov     pc, r3
+       ret     r3
 __turn_mmu_on_end:
 ENDPROC(__turn_mmu_on)
        .popsection
@@ -487,7 +487,7 @@ __fixup_smp:
        orr     r4, r4, #0x0000b000
        orr     r4, r4, #0x00000020     @ val 0x4100b020
        teq     r3, r4                  @ ARM 11MPCore?
-       moveq   pc, lr                  @ yes, assume SMP
+       reteq   lr                      @ yes, assume SMP
 
        mrc     p15, 0, r0, c0, c0, 5   @ read MPIDR
        and     r0, r0, #0xc0000000     @ multiprocessing extensions and
@@ -500,7 +500,7 @@ __fixup_smp:
        orr     r4, r4, #0x0000c000
        orr     r4, r4, #0x00000090
        teq     r3, r4                  @ Check for ARM Cortex-A9
-       movne   pc, lr                  @ Not ARM Cortex-A9,
+       retne   lr                      @ Not ARM Cortex-A9,
 
        @ If a future SoC *does* use 0x0 as the PERIPH_BASE, then the
        @ below address check will need to be #ifdef'd or equivalent
@@ -512,7 +512,7 @@ __fixup_smp:
 ARM_BE8(rev    r0, r0)                 @ byteswap if big endian
        and     r0, r0, #0x3            @ number of CPUs
        teq     r0, #0x0                @ is 1?
-       movne   pc, lr
+       retne   lr
 
 __fixup_smp_on_up:
        adr     r0, 1f
@@ -539,7 +539,7 @@ smp_on_up:
        .text
 __do_fixup_smp_on_up:
        cmp     r4, r5
-       movhs   pc, lr
+       reths   lr
        ldmia   r4!, {r0, r6}
  ARM(  str     r6, [r0, r3]    )
  THUMB(        add     r0, r0, r3      )
@@ -672,7 +672,7 @@ ARM_BE8(rev16       ip, ip)
 2:     cmp     r4, r5
        ldrcc   r7, [r4], #4    @ use branch for delay slot
        bcc     1b
-       mov     pc, lr
+       ret     lr
 #endif
 ENDPROC(__fixup_a_pv_table)
 
index 797b1a6a4906da0f8ca3f942186ac0e033250ce6..56ce6290c8318e4b56ac02c766180e2f6c72466c 100644 (file)
@@ -99,7 +99,7 @@ ENTRY(__hyp_stub_install_secondary)
         * immediately.
         */
        compare_cpu_mode_with_primary   r4, r5, r6, r7
-       movne   pc, lr
+       retne   lr
 
        /*
         * Once we have given up on one CPU, we do not try to install the
@@ -111,7 +111,7 @@ ENTRY(__hyp_stub_install_secondary)
         */
 
        cmp     r4, #HYP_MODE
-       movne   pc, lr                  @ give up if the CPU is not in HYP mode
+       retne   lr                      @ give up if the CPU is not in HYP mode
 
 /*
  * Configure HSCTLR to set correct exception endianness/instruction set
@@ -201,7 +201,7 @@ ENDPROC(__hyp_get_vectors)
        @ fall through
 ENTRY(__hyp_set_vectors)
        __HVC(0)
-       mov     pc, lr
+       ret     lr
 ENDPROC(__hyp_set_vectors)
 
 #ifndef ZIMAGE
index a5599cfc43cbb17280e26bc942c30853ab954c7f..0960be7953f049ab06360b7f8e719cebe5cc0eda 100644 (file)
@@ -179,7 +179,7 @@ concan_load:
        get_thread_info r10
 #endif
 4:     dec_preempt_count r10, r3
-       mov     pc, lr
+       ret     lr
 
 /*
  * Back up Concan regs to save area and disable access to them
@@ -265,7 +265,7 @@ ENTRY(iwmmxt_task_copy)
        mov     r3, lr                          @ preserve return address
        bl      concan_dump
        msr     cpsr_c, ip                      @ restore interrupt mode
-       mov     pc, r3
+       ret     r3
 
 /*
  * Restore Concan state from given memory address
@@ -301,7 +301,7 @@ ENTRY(iwmmxt_task_restore)
        mov     r3, lr                          @ preserve return address
        bl      concan_load
        msr     cpsr_c, ip                      @ restore interrupt mode
-       mov     pc, r3
+       ret     r3
 
 /*
  * Concan handling on task switch
@@ -323,7 +323,7 @@ ENTRY(iwmmxt_task_switch)
        add     r3, r0, #TI_IWMMXT_STATE        @ get next task Concan save area
        ldr     r2, [r2]                        @ get current Concan owner
        teq     r2, r3                          @ next task owns it?
-       movne   pc, lr                          @ no: leave Concan disabled
+       retne   lr                              @ no: leave Concan disabled
 
 1:     @ flip Concan access
        XSC(eor r1, r1, #0x3)
@@ -350,7 +350,7 @@ ENTRY(iwmmxt_task_release)
        eors    r0, r0, r1                      @ if equal...
        streq   r0, [r3]                        @ then clear ownership
        msr     cpsr_c, r2                      @ restore interrupts
-       mov     pc, lr
+       ret     lr
 
        .data
 concan_owner:
index 95858966d84ec0f10d392a3356cb0367fcee0b85..35e72585ec1d56a541fa7afd9c332c24e28a65fc 100644 (file)
@@ -3,6 +3,7 @@
  */
 
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 #include <asm/kexec.h>
 
        .align  3       /* not needed for this code, but keeps fncpy() happy */
@@ -59,7 +60,7 @@ ENTRY(relocate_new_kernel)
        mov r0,#0
        ldr r1,kexec_mach_type
        ldr r2,kexec_boot_atags
- ARM(  mov pc, lr      )
+ ARM(  ret lr  )
  THUMB(        bx lr           )
 
        .align
index 1b880db2a0338fc08cc1b7355ee71eee7d142172..e1e60e5a7a271eee56d34a69e55111b3ce0daf2d 100644 (file)
@@ -107,7 +107,7 @@ ENTRY(cpu_resume_mmu)
        instr_sync
        mov     r0, r0
        mov     r0, r0
-       mov     pc, r3                  @ jump to virtual address
+       ret     r3                      @ jump to virtual address
 ENDPROC(cpu_resume_mmu)
        .popsection
 cpu_resume_after_mmu:
index 1b9844d369cc08e6e1a88fc60b6f3fd6db0b6965..b2d229f09c0777d3dedcf5e6cfc7fbe4ea19addc 100644 (file)
@@ -17,6 +17,7 @@
  */
 
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 #include <asm/unified.h>
 #include <asm/asm-offsets.h>
 #include <asm/kvm_asm.h>
@@ -134,7 +135,7 @@ phase2:
        ldr     r0, =TRAMPOLINE_VA
        adr     r1, target
        bfi     r0, r1, #0, #PAGE_SHIFT
-       mov     pc, r0
+       ret     r0
 
 target:        @ We're now in the trampoline code, switch page tables
        mcrr    p15, 4, r2, r3, c2
index 638deb13da1c3d35e5f1bec6c7cb11cf5a2cae51..b05e95840651d0f5acc653a1efaeecd5c85b18fe 100644 (file)
@@ -27,6 +27,7 @@ Boston, MA 02110-1301, USA.  */
 
 
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 
 #ifdef __ARMEB__
 #define al r1
@@ -47,7 +48,7 @@ ENTRY(__aeabi_llsl)
  THUMB(        lsrmi   r3, al, ip              )
  THUMB(        orrmi   ah, ah, r3              )
        mov     al, al, lsl r2
-       mov     pc, lr
+       ret     lr
 
 ENDPROC(__ashldi3)
 ENDPROC(__aeabi_llsl)
index 015e8aa5a1d1ef97f5c5fb8ba44be44bdfe1365f..275d7d2341a4e52e31e19924ebde00aaa771a49c 100644 (file)
@@ -27,6 +27,7 @@ Boston, MA 02110-1301, USA.  */
 
 
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 
 #ifdef __ARMEB__
 #define al r1
@@ -47,7 +48,7 @@ ENTRY(__aeabi_lasr)
  THUMB(        lslmi   r3, ah, ip              )
  THUMB(        orrmi   al, al, r3              )
        mov     ah, ah, asr r2
-       mov     pc, lr
+       ret     lr
 
 ENDPROC(__ashrdi3)
 ENDPROC(__aeabi_lasr)
index 4102be617fce0644434e3aa7f7fec65c09fcb5e7..fab5a50503aedab7b4d875ff6acc1879ad3eeaa0 100644 (file)
@@ -25,7 +25,7 @@
 ENTRY(c_backtrace)
 
 #if !defined(CONFIG_FRAME_POINTER) || !defined(CONFIG_PRINTK)
-               mov     pc, lr
+               ret     lr
 ENDPROC(c_backtrace)
 #else
                stmfd   sp!, {r4 - r8, lr}      @ Save an extra register so we have a location...
index 9f12ed1eea860fccf4b6c301277827cb376c2c41..7d807cfd8ef57ed2bdde29d98ddb6a7094f725f7 100644 (file)
@@ -1,3 +1,4 @@
+#include <asm/assembler.h>
 #include <asm/unwind.h>
 
 #if __LINUX_ARM_ARCH__ >= 6
@@ -70,7 +71,7 @@ UNWIND(       .fnstart        )
        \instr  r2, r2, r3
        str     r2, [r1, r0, lsl #2]
        restore_irqs ip
-       mov     pc, lr
+       ret     lr
 UNWIND(        .fnend          )
 ENDPROC(\name          )
        .endm
@@ -98,7 +99,7 @@ UNWIND(       .fnstart        )
        \store  r2, [r1]
        moveq   r0, #0
        restore_irqs ip
-       mov     pc, lr
+       ret     lr
 UNWIND(        .fnend          )
 ENDPROC(\name          )
        .endm
index 9fcdd154eff9d4e0388b1cede18bc5e9fc5d4438..07cda737bb11f14ed1c873e7e2c5b97c2da2543e 100644 (file)
@@ -1,4 +1,5 @@
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 
 #if __LINUX_ARM_ARCH__ >= 6
 ENTRY(__bswapsi2)
@@ -18,7 +19,7 @@ ENTRY(__bswapsi2)
        mov r3, r3, lsr #8
        bic r3, r3, #0xff00
        eor r0, r3, r0, ror #8
-       mov pc, lr
+       ret lr
 ENDPROC(__bswapsi2)
 
 ENTRY(__bswapdi2)
@@ -31,6 +32,6 @@ ENTRY(__bswapdi2)
        bic r1, r1, #0xff00
        eor r1, r1, r0, ror #8
        eor r0, r3, ip, ror #8
-       mov pc, lr
+       ret lr
 ENDPROC(__bswapdi2)
 #endif
index 916c80f13ae75b5148e49139711e734bad68f471..ed1a421813cba8c4f0b83047e7457983a4faae31 100644 (file)
@@ -36,9 +36,9 @@ ENTRY(call_with_stack)
        mov     r0, r1
 
        adr     lr, BSYM(1f)
-       mov     pc, r2
+       ret     r2
 
 1:     ldr     lr, [sp]
        ldr     sp, [sp, #4]
-       mov     pc, lr
+       ret     lr
 ENDPROC(call_with_stack)
index 31d3cb34740d6a135506a723980be083f103dbc7..984e0f29d548b456884e643d9f9337e4cd42fc31 100644 (file)
@@ -97,7 +97,7 @@ td3   .req    lr
 #endif
 #endif
                adcnes  sum, sum, td0           @ update checksum
-               mov     pc, lr
+               ret     lr
 
 ENTRY(csum_partial)
                stmfd   sp!, {buf, lr}
index d6e742d240075a05c35902d21f86979b054fb928..10b45909610ca6f4ca6f6f8bdc664b79c2f2bd6f 100644 (file)
@@ -7,6 +7,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#include <asm/assembler.h>
 
 /*
  * unsigned int
@@ -40,7 +41,7 @@ sum   .req    r3
                adcs    sum, sum, ip, put_byte_1        @ update checksum
                strb    ip, [dst], #1
                tst     dst, #2
-               moveq   pc, lr                  @ dst is now 32bit aligned
+               reteq   lr                      @ dst is now 32bit aligned
 
 .Ldst_16bit:   load2b  r8, ip
                sub     len, len, #2
@@ -48,7 +49,7 @@ sum   .req    r3
                strb    r8, [dst], #1
                adcs    sum, sum, ip, put_byte_1
                strb    ip, [dst], #1
-               mov     pc, lr                  @ dst is now 32bit aligned
+               ret     lr                      @ dst is now 32bit aligned
 
                /*
                 * Handle 0 to 7 bytes, with any alignment of source and
index bc1033b897b44510b16a8ab202f0c1b989cc15e5..518bf6e93f78a2cb1c74f7b857c6fa96b1018f53 100644 (file)
@@ -35,7 +35,7 @@ ENTRY(__loop_const_udelay)                    @ 0 <= r0 <= 0x7fffff06
                mul     r0, r2, r0              @ max = 2^32-1
                add     r0, r0, r1, lsr #32-6
                movs    r0, r0, lsr #6
-               moveq   pc, lr
+               reteq   lr
 
 /*
  * loops = r0 * HZ * loops_per_jiffy / 1000000
@@ -46,23 +46,23 @@ ENTRY(__loop_const_udelay)                  @ 0 <= r0 <= 0x7fffff06
 ENTRY(__loop_delay)
                subs    r0, r0, #1
 #if 0
-               movls   pc, lr
+               retls   lr
                subs    r0, r0, #1
-               movls   pc, lr
+               retls   lr
                subs    r0, r0, #1
-               movls   pc, lr
+               retls   lr
                subs    r0, r0, #1
-               movls   pc, lr
+               retls   lr
                subs    r0, r0, #1
-               movls   pc, lr
+               retls   lr
                subs    r0, r0, #1
-               movls   pc, lr
+               retls   lr
                subs    r0, r0, #1
-               movls   pc, lr
+               retls   lr
                subs    r0, r0, #1
 #endif
                bhi     __loop_delay
-               mov     pc, lr
+               ret     lr
 ENDPROC(__loop_udelay)
 ENDPROC(__loop_const_udelay)
 ENDPROC(__loop_delay)
index e55c4842c290fa6267e9998eb9dc4bd28f8cfcef..a9eafe4981eb847e2f07e0e245aa8e1f1747fa59 100644 (file)
@@ -13,6 +13,7 @@
  */
 
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 #include <asm/unwind.h>
 
 #ifdef __ARMEB__
@@ -97,7 +98,7 @@ UNWIND(.fnstart)
        mov     yl, #0
        cmpeq   xl, r4
        movlo   xh, xl
-       movlo   pc, lr
+       retlo   lr
 
        @ The division loop for lower bit positions.
        @ Here we shift remainer bits leftwards rather than moving the
@@ -111,14 +112,14 @@ UNWIND(.fnstart)
        subcs   xh, xh, r4
        movs    ip, ip, lsr #1
        bne     4b
-       mov     pc, lr
+       ret     lr
 
        @ The top part of remainder became zero.  If carry is set
        @ (the 33th bit) this is a false positive so resume the loop.
        @ Otherwise, if lower part is also null then we are done.
 6:     bcs     5b
        cmp     xl, #0
-       moveq   pc, lr
+       reteq   lr
 
        @ We still have remainer bits in the low part.  Bring them up.
 
@@ -144,7 +145,7 @@ UNWIND(.fnstart)
        movs    ip, ip, lsr #1
        mov     xh, #1
        bne     4b
-       mov     pc, lr
+       ret     lr
 
 8:     @ Division by a power of 2: determine what that divisor order is
        @ then simply shift values around
@@ -184,13 +185,13 @@ UNWIND(.fnstart)
  THUMB(        orr     yl, yl, xh              )
        mov     xh, xl, lsl ip
        mov     xh, xh, lsr ip
-       mov     pc, lr
+       ret     lr
 
        @ eq -> division by 1: obvious enough...
 9:     moveq   yl, xl
        moveq   yh, xh
        moveq   xh, #0
-       moveq   pc, lr
+       reteq   lr
 UNWIND(.fnend)
 
 UNWIND(.fnstart)
index 64f6bc1a91326c79800bbb9205645a7d0e7e5e0c..7848780e883473ac21d97ed54b99ec3788672980 100644 (file)
@@ -35,7 +35,7 @@ ENTRY(_find_first_zero_bit_le)
 2:             cmp     r2, r1                  @ any more?
                blo     1b
 3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+               ret     lr
 ENDPROC(_find_first_zero_bit_le)
 
 /*
@@ -76,7 +76,7 @@ ENTRY(_find_first_bit_le)
 2:             cmp     r2, r1                  @ any more?
                blo     1b
 3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+               ret     lr
 ENDPROC(_find_first_bit_le)
 
 /*
@@ -114,7 +114,7 @@ ENTRY(_find_first_zero_bit_be)
 2:             cmp     r2, r1                  @ any more?
                blo     1b
 3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+               ret     lr
 ENDPROC(_find_first_zero_bit_be)
 
 ENTRY(_find_next_zero_bit_be)
@@ -148,7 +148,7 @@ ENTRY(_find_first_bit_be)
 2:             cmp     r2, r1                  @ any more?
                blo     1b
 3:             mov     r0, r1                  @ no free bits
-               mov     pc, lr
+               ret     lr
 ENDPROC(_find_first_bit_be)
 
 ENTRY(_find_next_bit_be)
@@ -192,5 +192,5 @@ ENDPROC(_find_next_bit_be)
 #endif
                cmp     r1, r0                  @ Clamp to maxbit
                movlo   r0, r1
-               mov     pc, lr
+               ret     lr
 
index 9b06bb41fca659b9bbfc2f996e703ce2b8c315aa..0f958e3d81804bc209256361de51cd5f19429a00 100644 (file)
@@ -36,7 +36,7 @@ ENTRY(__get_user_1)
        check_uaccess r0, 1, r1, r2, __get_user_bad
 1: TUSER(ldrb) r2, [r0]
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(__get_user_1)
 
 ENTRY(__get_user_2)
@@ -56,20 +56,20 @@ rb  .req    r0
        orr     r2, rb, r2, lsl #8
 #endif
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(__get_user_2)
 
 ENTRY(__get_user_4)
        check_uaccess r0, 4, r1, r2, __get_user_bad
 4: TUSER(ldr)  r2, [r0]
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(__get_user_4)
 
 __get_user_bad:
        mov     r2, #0
        mov     r0, #-EFAULT
-       mov     pc, lr
+       ret     lr
 ENDPROC(__get_user_bad)
 
 .pushsection __ex_table, "a"
index 9f4238987fe9050dba88c94c4c0eb4b730c62c6d..c31b2f3153f171fd09602aed2ea9cb8c97797f4d 100644 (file)
@@ -25,7 +25,7 @@
 
 ENTRY(__raw_readsb)
                teq     r2, #0          @ do we have to check for the zero len?
-               moveq   pc, lr
+               reteq   lr
                ands    ip, r1, #3
                bne     .Linsb_align
 
index 7a7430950c7974621eccc31e65e08294a1492d1e..2ed86fa5465f70cdcb92a46a167d9aa81edad68f 100644 (file)
@@ -12,7 +12,7 @@
 
 ENTRY(__raw_readsl)
                teq     r2, #0          @ do we have to check for the zero len?
-               moveq   pc, lr
+               reteq   lr
                ands    ip, r1, #3
                bne     3f
 
@@ -33,7 +33,7 @@ ENTRY(__raw_readsl)
                stmcsia r1!, {r3, ip}
                ldrne   r3, [r0, #0]
                strne   r3, [r1, #0]
-               mov     pc, lr
+               ret     lr
 
 3:             ldr     r3, [r0]
                cmp     ip, #2
@@ -75,5 +75,5 @@ ENTRY(__raw_readsl)
                strb    r3, [r1, #1]
 8:             mov     r3, ip, get_byte_0
                strb    r3, [r1, #0]
-               mov     pc, lr
+               ret     lr
 ENDPROC(__raw_readsl)
index 88487c8c4f2353f7f512bd6dbecb019e93e72004..413da99145292f3e535b618fee2a5c9c96e114b4 100644 (file)
                strb    r3, [r1], #1
 
                subs    r2, r2, #1
-               moveq   pc, lr
+               reteq   lr
 
 ENTRY(__raw_readsw)
                teq     r2, #0          @ do we have to check for the zero len?
-               moveq   pc, lr
+               reteq   lr
                tst     r1, #3
                bne     .Linsw_align
 
index 1f393d42593d21c1beb13eff254acd60eaa0bd95..d9a45e9692aee3ad1de5dea37653a65cd8c18da4 100644 (file)
@@ -26,7 +26,7 @@
 
 ENTRY(__raw_readsw)
                teq     r2, #0
-               moveq   pc, lr
+               reteq   lr
                tst     r1, #3
                bne     .Linsw_align
 
index 68b92f4acaeb3e6f2dbfce4285a8cc9a91deac10..a46bbc9b168b45f7016096244eb4933a911d4ac0 100644 (file)
@@ -45,7 +45,7 @@
 
 ENTRY(__raw_writesb)
                teq     r2, #0          @ do we have to check for the zero len?
-               moveq   pc, lr
+               reteq   lr
                ands    ip, r1, #3
                bne     .Loutsb_align
 
index d0d104a0dd116890db92e91e75bd6ef32a2d00e9..4ea2435988c1f75d8fddac8ac63a499067d02cae 100644 (file)
@@ -12,7 +12,7 @@
 
 ENTRY(__raw_writesl)
                teq     r2, #0          @ do we have to check for the zero len?
-               moveq   pc, lr
+               reteq   lr
                ands    ip, r1, #3
                bne     3f
 
@@ -33,7 +33,7 @@ ENTRY(__raw_writesl)
                ldrne   r3, [r1, #0]
                strcs   ip, [r0, #0]
                strne   r3, [r0, #0]
-               mov     pc, lr
+               ret     lr
 
 3:             bic     r1, r1, #3
                ldr     r3, [r1], #4
@@ -47,7 +47,7 @@ ENTRY(__raw_writesl)
                orr     ip, ip, r3, lspush #16
                str     ip, [r0]
                bne     4b
-               mov     pc, lr
+               ret     lr
 
 5:             mov     ip, r3, lspull #8
                ldr     r3, [r1], #4
@@ -55,7 +55,7 @@ ENTRY(__raw_writesl)
                orr     ip, ip, r3, lspush #24
                str     ip, [r0]
                bne     5b
-               mov     pc, lr
+               ret     lr
 
 6:             mov     ip, r3, lspull #24
                ldr     r3, [r1], #4
@@ -63,5 +63,5 @@ ENTRY(__raw_writesl)
                orr     ip, ip, r3, lspush #8
                str     ip, [r0]
                bne     6b
-               mov     pc, lr
+               ret     lr
 ENDPROC(__raw_writesl)
index 49b800419e32ca6b6dbed9c27d0ee4e3960b639b..121789eb680235f9dad2c8f1492960d2f26fded1 100644 (file)
                orr     r3, r3, r3, lsl #16
                str     r3, [r0]
                subs    r2, r2, #1
-               moveq   pc, lr
+               reteq   lr
 
 ENTRY(__raw_writesw)
                teq     r2, #0          @ do we have to check for the zero len?
-               moveq   pc, lr
+               reteq   lr
                tst     r1, #3
                bne     .Loutsw_align
 
index ff4f71b579eeb454a3bba5b01120c0ee06ae3f47..269f90c51ad279c63bf4dd9f8bfed8c6827a75d2 100644 (file)
@@ -31,7 +31,7 @@
 
 ENTRY(__raw_writesw)
                teq     r2, #0
-               moveq   pc, lr
+               reteq   lr
                ands    r3, r1, #3
                bne     .Loutsw_align
 
@@ -96,5 +96,5 @@ ENTRY(__raw_writesw)
                tst     r2, #1
 3:             movne   ip, r3, lsr #8
                strneh  ip, [r0]
-               mov     pc, lr
+               ret     lr
 ENDPROC(__raw_writesw)
index c562f649734cea40f813c3d6c50b9cffcd619ae9..947567ff67f922dbf33c2c8db014758ced45b2f0 100644 (file)
@@ -210,7 +210,7 @@ ENTRY(__aeabi_uidiv)
 UNWIND(.fnstart)
 
        subs    r2, r1, #1
-       moveq   pc, lr
+       reteq   lr
        bcc     Ldiv0
        cmp     r0, r1
        bls     11f
@@ -220,16 +220,16 @@ UNWIND(.fnstart)
        ARM_DIV_BODY r0, r1, r2, r3
 
        mov     r0, r2
-       mov     pc, lr
+       ret     lr
 
 11:    moveq   r0, #1
        movne   r0, #0
-       mov     pc, lr
+       ret     lr
 
 12:    ARM_DIV2_ORDER r1, r2
 
        mov     r0, r0, lsr r2
-       mov     pc, lr
+       ret     lr
 
 UNWIND(.fnend)
 ENDPROC(__udivsi3)
@@ -244,11 +244,11 @@ UNWIND(.fnstart)
        moveq   r0, #0
        tsthi   r1, r2                          @ see if divisor is power of 2
        andeq   r0, r0, r2
-       movls   pc, lr
+       retls   lr
 
        ARM_MOD_BODY r0, r1, r2, r3
 
-       mov     pc, lr
+       ret     lr
 
 UNWIND(.fnend)
 ENDPROC(__umodsi3)
@@ -274,23 +274,23 @@ UNWIND(.fnstart)
 
        cmp     ip, #0
        rsbmi   r0, r0, #0
-       mov     pc, lr
+       ret     lr
 
 10:    teq     ip, r0                          @ same sign ?
        rsbmi   r0, r0, #0
-       mov     pc, lr
+       ret     lr
 
 11:    movlo   r0, #0
        moveq   r0, ip, asr #31
        orreq   r0, r0, #1
-       mov     pc, lr
+       ret     lr
 
 12:    ARM_DIV2_ORDER r1, r2
 
        cmp     ip, #0
        mov     r0, r3, lsr r2
        rsbmi   r0, r0, #0
-       mov     pc, lr
+       ret     lr
 
 UNWIND(.fnend)
 ENDPROC(__divsi3)
@@ -315,7 +315,7 @@ UNWIND(.fnstart)
 
 10:    cmp     ip, #0
        rsbmi   r0, r0, #0
-       mov     pc, lr
+       ret     lr
 
 UNWIND(.fnend)
 ENDPROC(__modsi3)
@@ -331,7 +331,7 @@ UNWIND(.save {r0, r1, ip, lr}       )
        ldmfd   sp!, {r1, r2, ip, lr}
        mul     r3, r0, r2
        sub     r1, r1, r3
-       mov     pc, lr
+       ret     lr
 
 UNWIND(.fnend)
 ENDPROC(__aeabi_uidivmod)
@@ -344,7 +344,7 @@ UNWIND(.save {r0, r1, ip, lr}       )
        ldmfd   sp!, {r1, r2, ip, lr}
        mul     r3, r0, r2
        sub     r1, r1, r3
-       mov     pc, lr
+       ret     lr
 
 UNWIND(.fnend)
 ENDPROC(__aeabi_idivmod)
index f83d449141f7820afa27e3a9d2e05509f22a8312..922dcd88b02b7804fca63f0d891e9a7ed6cbf83e 100644 (file)
@@ -27,6 +27,7 @@ Boston, MA 02110-1301, USA.  */
 
 
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 
 #ifdef __ARMEB__
 #define al r1
@@ -47,7 +48,7 @@ ENTRY(__aeabi_llsr)
  THUMB(        lslmi   r3, ah, ip              )
  THUMB(        orrmi   al, al, r3              )
        mov     ah, ah, lsr r2
-       mov     pc, lr
+       ret     lr
 
 ENDPROC(__lshrdi3)
 ENDPROC(__aeabi_llsr)
index 1da86991d7003ad958b843a0508aa10dd334e8e6..74a5bed6d9999a645d06d6d34369f9b7c155c0f9 100644 (file)
@@ -22,5 +22,5 @@ ENTRY(memchr)
        bne     1b
        sub     r0, r0, #1
 2:     movne   r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(memchr)
index 94b0650ea98fd42492c280d20c7610382a2f4a81..671455c854fa9b6a64ed6cb3ab26a6edcbed4e23 100644 (file)
@@ -110,7 +110,7 @@ ENTRY(memset)
        strneb  r1, [ip], #1
        tst     r2, #1
        strneb  r1, [ip], #1
-       mov     pc, lr
+       ret     lr
 
 6:     subs    r2, r2, #4              @ 1 do we have enough
        blt     5b                      @ 1 bytes to align with?
index 3fbdef5f802aa8a251a1eeb756aee910bb9d471e..385ccb306fa2145e5727c275df849fc9c661dbdd 100644 (file)
@@ -121,5 +121,5 @@ ENTRY(__memzero)
        strneb  r2, [r0], #1            @ 1
        tst     r1, #1                  @ 1 a byte left over
        strneb  r2, [r0], #1            @ 1
-       mov     pc, lr                  @ 1
+       ret     lr                      @ 1
 ENDPROC(__memzero)
index 36c91b4957e2da0d9bdc006bcf3644dbab001d72..20430595692500b7442a39f6b483b2af9afd0b2c 100644 (file)
@@ -11,6 +11,7 @@
  */
 
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 
 #ifdef __ARMEB__
 #define xh r0
@@ -41,7 +42,7 @@ ENTRY(__aeabi_lmul)
        adc     xh, xh, yh, lsr #16
        adds    xl, xl, ip, lsl #16
        adc     xh, xh, ip, lsr #16
-       mov     pc, lr
+       ret     lr
 
 ENDPROC(__muldi3)
 ENDPROC(__aeabi_lmul)
index 3d73dcb959b0da83bc8affe3a781b7fcbdb17752..38d660d3705f4f259c5299d2cc8c1126f0a1dbb4 100644 (file)
@@ -36,7 +36,7 @@ ENTRY(__put_user_1)
        check_uaccess r0, 1, r1, ip, __put_user_bad
 1: TUSER(strb) r2, [r0]
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(__put_user_1)
 
 ENTRY(__put_user_2)
@@ -60,14 +60,14 @@ ENTRY(__put_user_2)
 #endif
 #endif /* CONFIG_THUMB2_KERNEL */
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(__put_user_2)
 
 ENTRY(__put_user_4)
        check_uaccess r0, 4, r1, ip, __put_user_bad
 4: TUSER(str)  r2, [r0]
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(__put_user_4)
 
 ENTRY(__put_user_8)
@@ -80,12 +80,12 @@ ENTRY(__put_user_8)
 6: TUSER(str)  r3, [r0]
 #endif
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(__put_user_8)
 
 __put_user_bad:
        mov     r0, #-EFAULT
-       mov     pc, lr
+       ret     lr
 ENDPROC(__put_user_bad)
 
 .pushsection __ex_table, "a"
index d8f2a1c1aea4bf15372595ab57e0a9abcacb2b4b..013d64c71e8d6aae7b0d9f826b13dbca1e32f22d 100644 (file)
@@ -23,5 +23,5 @@ ENTRY(strchr)
                teq     r2, r1
                movne   r0, #0
                subeq   r0, r0, #1
-               mov     pc, lr
+               ret     lr
 ENDPROC(strchr)
index 302f20cd24237634889ff86218f531d2b30394b1..3cec1c7482c49dbae6450af7bc66f72dfb7179c6 100644 (file)
@@ -22,5 +22,5 @@ ENTRY(strrchr)
                teq     r2, #0
                bne     1b
                mov     r0, r3
-               mov     pc, lr
+               ret     lr
 ENDPROC(strrchr)
index f0df6a91db041b7d73c2583e4441af121e898143..ad4a6309141a59c0ba3534795b93c5dbe7876814 100644 (file)
@@ -11,6 +11,7 @@
  */
 
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 
 #ifdef __ARMEB__
 #define xh r0
@@ -31,7 +32,7 @@ ENTRY(__ucmpdi2)
        movlo   r0, #0
        moveq   r0, #1
        movhi   r0, #2
-       mov     pc, lr
+       ret     lr
 
 ENDPROC(__ucmpdi2)
 
@@ -44,7 +45,7 @@ ENTRY(__aeabi_ulcmp)
        movlo   r0, #-1
        moveq   r0, #0
        movhi   r0, #1
-       mov     pc, lr
+       ret     lr
 
 ENDPROC(__aeabi_ulcmp)
 
index d4e9316ecacbdca92c627b9e706b10f5a520b24a..a5336a5e27395836c600af83fc014a3ad80125cf 100644 (file)
@@ -213,7 +213,7 @@ ddr2clk_stop_done:
        cmp     ip, r0
        bne     ddr2clk_stop_done
 
-       mov     pc, lr
+       ret     lr
 ENDPROC(davinci_ddr_psc_config)
 
 CACHE_FLUSH:
index e96923a3017b16ddb92ce75437ad594f80ab1566..ee0be2af5c61b2e4abc086abb9167230a0f29d2b 100644 (file)
@@ -198,7 +198,7 @@ crunch_load:
        get_thread_info r10
 #endif
 2:     dec_preempt_count r10, r3
-       mov     pc, lr
+       ret     lr
 
 /*
  * Back up crunch regs to save area and disable access to them
@@ -277,7 +277,7 @@ ENTRY(crunch_task_copy)
        mov     r3, lr                          @ preserve return address
        bl      crunch_save
        msr     cpsr_c, ip                      @ restore interrupt mode
-       mov     pc, r3
+       ret     r3
 
 /*
  * Restore crunch state from given memory address
@@ -310,4 +310,4 @@ ENTRY(crunch_task_restore)
        mov     r3, lr                          @ preserve return address
        bl      crunch_load
        msr     cpsr_c, ip                      @ restore interrupt mode
-       mov     pc, r3
+       ret     r3
index fe123b079c05d119893fd10ea27e85827435477a..74b50f1982dbc3526e8cb1a84b25ffff188dd45b 100644 (file)
@@ -10,6 +10,7 @@
  */
 
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 #include <asm/asm-offsets.h>
 #include <asm/hardware/cache-l2x0.h>
 #include "hardware.h"
@@ -301,7 +302,7 @@ rbc_loop:
        resume_mmdc
 
        /* return to suspend finish */
-       mov     pc, lr
+       ret     lr
 
 resume:
        /* invalidate L1 I-cache first */
@@ -325,7 +326,7 @@ resume:
        mov     r5, #0x1
        resume_mmdc
 
-       mov     pc, lr
+       ret     lr
 ENDPROC(imx6_suspend)
 
 /*
index 510c29e079ca960ba420fdc331eaa1016f677a71..f5d881b5d0f77add65bba38263aaf7b35a51213c 100644 (file)
@@ -46,7 +46,7 @@ ENTRY(ll_get_coherency_base)
        ldr     r1, =coherency_base
        ldr     r1, [r1]
 2:
-       mov     pc, lr
+       ret     lr
 ENDPROC(ll_get_coherency_base)
 
 /*
@@ -63,7 +63,7 @@ ENTRY(ll_get_coherency_cpumask)
        mov     r2, #(1 << 24)
        lsl     r3, r2, r3
 ARM_BE8(rev    r3, r3)
-       mov     pc, lr
+       ret     lr
 ENDPROC(ll_get_coherency_cpumask)
 
 /*
@@ -94,7 +94,7 @@ ENTRY(ll_add_cpu_to_smp_group)
        strex   r1, r2, [r0]
        cmp     r1, #0
        bne     1b
-       mov     pc, lr
+       ret     lr
 ENDPROC(ll_add_cpu_to_smp_group)
 
 ENTRY(ll_enable_coherency)
@@ -118,7 +118,7 @@ ENTRY(ll_enable_coherency)
        bne     1b
        dsb
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(ll_enable_coherency)
 
 ENTRY(ll_disable_coherency)
@@ -141,7 +141,7 @@ ENTRY(ll_disable_coherency)
        cmp     r1, #0
        bne     1b
        dsb
-       mov     pc, lr
+       ret     lr
 ENDPROC(ll_disable_coherency)
 
        .align 2
index 5925366bc03cccd8e7d576ca8ca63f3c0585bb9b..7c91ddb6f1f71bb3996e826e20a85be1e1d46f14 100644 (file)
@@ -14,6 +14,7 @@
 
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/assembler.h>
 
        __CPUINIT
 #define CPU_RESUME_ADDR_REG 0xf10182d4
@@ -24,7 +25,7 @@
 armada_375_smp_cpu1_enable_code_start:
        ldr     r0, [pc, #4]
        ldr     r1, [r0]
-       mov     pc, r1
+       ret     r1
        .word   CPU_RESUME_ADDR_REG
 armada_375_smp_cpu1_enable_code_end:
 
index 9086ce03ae12a00fa500553b80f68902c0fc852a..b84a0122d823a88b8655b0a4c761a460e3cf4cbc 100644 (file)
@@ -10,6 +10,7 @@
  */
 
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 #include <asm/smp_scu.h>
 #include <asm/memory.h>
 #include <asm/hardware/cache-l2x0.h>
@@ -334,7 +335,7 @@ ENDPROC(omap4_cpu_resume)
 
 #ifndef CONFIG_OMAP4_ERRATA_I688
 ENTRY(omap_bus_sync)
-       mov     pc, lr
+       ret     lr
 ENDPROC(omap_bus_sync)
 #endif
 
index 680a7c56cc3ec2dc454ad73e0c93ebadf360d58a..2c88ff2d0236afd35a6748fb452c234906f9ba6c 100644 (file)
@@ -101,7 +101,7 @@ i_dll_wait:
 i_dll_delay:
        subs    r4, r4, #0x1
        bne     i_dll_delay
-       mov     pc, lr
+       ret     lr
 
        /*
         * shift up or down voltage, use R9 as input to tell level.
@@ -125,7 +125,7 @@ volt_delay:
        ldr     r7, [r3]                @ get timer value
        cmp     r5, r7                  @ time up?
        bhi     volt_delay              @ not yet->branch
-       mov     pc, lr                  @ back to caller.
+       ret     lr                      @ back to caller.
 
 omap242x_sdi_cm_clksel2_pll:
        .word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
@@ -220,7 +220,7 @@ volt_delay_c:
        ldr     r7, [r10]               @ get timer value
        cmp     r8, r7                  @ time up?
        bhi     volt_delay_c            @ not yet->branch
-       mov     pc, lr                  @ back to caller
+       ret     lr                      @ back to caller
 
 omap242x_srs_cm_clksel2_pll:
        .word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
index a1e9edd673f4625cf08a2b7b7dc0c9aff6dc2212..d5deb9761fc7ee6fc2ad0e223df5344078a3877f 100644 (file)
@@ -101,7 +101,7 @@ i_dll_wait:
 i_dll_delay:
        subs    r4, r4, #0x1
        bne     i_dll_delay
-       mov     pc, lr
+       ret     lr
 
        /*
         * shift up or down voltage, use R9 as input to tell level.
@@ -125,7 +125,7 @@ volt_delay:
        ldr     r7, [r3]                @ get timer value
        cmp     r5, r7                  @ time up?
        bhi     volt_delay              @ not yet->branch
-       mov     pc, lr                  @ back to caller.
+       ret     lr                      @ back to caller.
 
 omap243x_sdi_cm_clksel2_pll:
        .word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
@@ -220,7 +220,7 @@ volt_delay_c:
        ldr     r7, [r10]               @ get timer value
        cmp     r8, r7                  @ time up?
        bhi     volt_delay_c            @ not yet->branch
-       mov     pc, lr                  @ back to caller
+       ret     lr                      @ back to caller
 
 omap243x_srs_cm_clksel2_pll:
        .word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
index 324d25a48c85cd363f31810226d392fbb9a8f5da..81591491ab947b09f7128fc12e66e14d3d17d77b 100644 (file)
@@ -29,7 +29,7 @@ ENTRY(mioa701_jumpaddr)
        str     r1, [r0]                @ Early disable resume for next boot
        ldr     r0, mioa701_jumpaddr    @ (Murphy's Law)
        ldr     r0, [r0]
-       mov     pc, r0
+       ret     r0
 2:
 
 ENTRY(mioa701_bootstrap_lg)
index 29f5f5c180b7dbe7ce6dd83488c5e2dcecd41b5c..eab1645bb4adb93a37108dc30f6c335dc75f31e1 100644 (file)
@@ -29,7 +29,7 @@ ENTRY(pxa_cpu_standby)
        .align  5
 1:     mcr     p14, 0, r2, c7, c0, 0   @ put the system into Standby
        str     r1, [r0]                @ make sure PSSR_PH/STS are clear
-       mov     pc, lr
+       ret     lr
 
 #endif
 
@@ -108,7 +108,7 @@ ENTRY(pm_enter_standby_start)
        bic     r0, r0, #0x20000000
        str     r0, [r1, #PXA3_DMCIER]
 
-       mov     pc, lr
+       ret     lr
 ENTRY(pm_enter_standby_end)
 
 #endif
index c9b91223697c00856f8d687940a143f39e7141d4..875ba8911127f56c98b2805323d7d62211ec6096 100644 (file)
@@ -66,4 +66,4 @@ s3c2410_do_sleep:
        streq   r8, [r5]                        @ SDRAM power-down config
        streq   r9, [r6]                        @ CPU sleep
 1:     beq     1b
-       mov     pc, r14
+       ret     lr
index 5adaceb7da1303c19a02b796e795aeb0aa124dd5..6bf5b4d8743c05ef52bef07d467b8bfa7062115d 100644 (file)
@@ -65,4 +65,4 @@ s3c2412_sleep_enter1:
        strne   r9, [r3]
        bne     s3c2412_sleep_enter1
 
-       mov     pc, r14
+       ret     lr
index e5be5c88644b70aa8bb6196807bff7f000085658..293007579b8ef67332ecb1c5c600f3c5565bccc1 100644 (file)
@@ -12,6 +12,7 @@
  */
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/assembler.h>
 #include <asm/memory.h>
 
 ENTRY(shmobile_invalidate_start)
@@ -75,7 +76,7 @@ shmobile_smp_boot_next:
 
 shmobile_smp_boot_found:
        ldr     r0, [r7, r1, lsl #2]
-       mov     pc, r9
+       ret     r9
 ENDPROC(shmobile_smp_boot)
 
 ENTRY(shmobile_smp_sleep)
index aaaf3abd2688e85269271d45c2b32eecf5944cb5..be4bc5f853f5c370ed345bf135d1092b9e94e883 100644 (file)
@@ -78,7 +78,7 @@ ENTRY(tegra20_hotplug_shutdown)
        /* Put this CPU down */
        cpu_id  r0
        bl      tegra20_cpu_shutdown
-       mov     pc, lr                  @ should never get here
+       ret     lr                      @ should never get here
 ENDPROC(tegra20_hotplug_shutdown)
 
 /*
@@ -96,7 +96,7 @@ ENDPROC(tegra20_hotplug_shutdown)
  */
 ENTRY(tegra20_cpu_shutdown)
        cmp     r0, #0
-       moveq   pc, lr                  @ must not be called for CPU 0
+       reteq   lr                      @ must not be called for CPU 0
        mov32   r1, TEGRA_PMC_VIRT + PMC_SCRATCH41
        mov     r12, #CPU_RESETTABLE
        str     r12, [r1]
@@ -117,7 +117,7 @@ ENTRY(tegra20_cpu_shutdown)
        cpu_id  r3
        cmp     r3, r0
        beq     .
-       mov     pc, lr
+       ret     lr
 ENDPROC(tegra20_cpu_shutdown)
 #endif
 
@@ -164,7 +164,7 @@ ENTRY(tegra_pen_lock)
        cmpeq   r12, r0                 @ !turn == cpu?
        beq     1b                      @ while !turn == cpu && flag[!cpu] == 1
 
-       mov     pc, lr                  @ locked
+       ret     lr                      @ locked
 ENDPROC(tegra_pen_lock)
 
 ENTRY(tegra_pen_unlock)
@@ -176,7 +176,7 @@ ENTRY(tegra_pen_unlock)
        addne   r2, r3, #PMC_SCRATCH39
        mov     r12, #0
        str     r12, [r2]
-       mov     pc, lr
+       ret     lr
 ENDPROC(tegra_pen_unlock)
 
 /*
@@ -189,7 +189,7 @@ ENTRY(tegra20_cpu_clear_resettable)
        mov32   r1, TEGRA_PMC_VIRT + PMC_SCRATCH41
        mov     r12, #CPU_NOT_RESETTABLE
        str     r12, [r1]
-       mov     pc, lr
+       ret     lr
 ENDPROC(tegra20_cpu_clear_resettable)
 
 /*
@@ -202,7 +202,7 @@ ENTRY(tegra20_cpu_set_resettable_soon)
        mov32   r1, TEGRA_PMC_VIRT + PMC_SCRATCH41
        mov     r12, #CPU_RESETTABLE_SOON
        str     r12, [r1]
-       mov     pc, lr
+       ret     lr
 ENDPROC(tegra20_cpu_set_resettable_soon)
 
 /*
@@ -217,7 +217,7 @@ ENTRY(tegra20_cpu_is_resettable_soon)
        cmp     r12, #CPU_RESETTABLE_SOON
        moveq   r0, #1
        movne   r0, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(tegra20_cpu_is_resettable_soon)
 
 /*
@@ -239,7 +239,7 @@ ENTRY(tegra20_sleep_core_finish)
        mov32   r1, TEGRA_IRAM_LPx_RESUME_AREA
        add     r0, r0, r1
 
-       mov     pc, r3
+       ret     r3
 ENDPROC(tegra20_sleep_core_finish)
 
 /*
@@ -402,7 +402,7 @@ exit_selfrefresh_loop:
 
        mov32   r0, TEGRA_PMC_BASE
        ldr     r0, [r0, #PMC_SCRATCH41]
-       mov     pc, r0                  @ jump to tegra_resume
+       ret     r0                      @ jump to tegra_resume
 ENDPROC(tegra20_lp1_reset)
 
 /*
@@ -455,7 +455,7 @@ tegra20_switch_cpu_to_clk32k:
        mov     r0, #0  /* brust policy = 32KHz */
        str     r0, [r5, #CLK_RESET_SCLK_BURST]
 
-       mov     pc, lr
+       ret     lr
 
 /*
  * tegra20_enter_sleep
@@ -535,7 +535,7 @@ padsave_done:
        adr     r2, tegra20_sclk_save
        str     r0, [r2]
        dsb
-       mov     pc, lr
+       ret     lr
 
 tegra20_sdram_pad_address:
        .word   TEGRA_APB_MISC_BASE + APB_MISC_XM2CFGCPADCTRL
index b16d4a57fa59dd529e2ae97bd8890521bf543fe6..09cad9b071debe6f6569c1841021bc31e81819b2 100644 (file)
@@ -142,7 +142,7 @@ ENTRY(tegra30_hotplug_shutdown)
        /* Powergate this CPU */
        mov     r0, #TEGRA30_POWER_HOTPLUG_SHUTDOWN
        bl      tegra30_cpu_shutdown
-       mov     pc, lr                  @ should never get here
+       ret     lr                      @ should never get here
 ENDPROC(tegra30_hotplug_shutdown)
 
 /*
@@ -161,7 +161,7 @@ ENTRY(tegra30_cpu_shutdown)
        bne     _no_cpu0_chk    @ It's not Tegra30
 
        cmp     r3, #0
-       moveq   pc, lr          @ Must never be called for CPU 0
+       reteq   lr              @ Must never be called for CPU 0
 _no_cpu0_chk:
 
        ldr     r12, =TEGRA_FLOW_CTRL_VIRT
@@ -266,7 +266,7 @@ ENTRY(tegra30_sleep_core_finish)
        mov32   r1, TEGRA_IRAM_LPx_RESUME_AREA
        add     r0, r0, r1
 
-       mov     pc, r3
+       ret     r3
 ENDPROC(tegra30_sleep_core_finish)
 
 /*
@@ -285,7 +285,7 @@ ENTRY(tegra30_sleep_cpu_secondary_finish)
        mov     r0, #0                          @ power mode flags (!hotplug)
        bl      tegra30_cpu_shutdown
        mov     r0, #1                          @ never return here
-       mov     pc, r7
+       ret     r7
 ENDPROC(tegra30_sleep_cpu_secondary_finish)
 
 /*
@@ -529,7 +529,7 @@ __no_dual_emc_chanl:
 
        mov32   r0, TEGRA_PMC_BASE
        ldr     r0, [r0, #PMC_SCRATCH41]
-       mov     pc, r0                  @ jump to tegra_resume
+       ret     r0                      @ jump to tegra_resume
 ENDPROC(tegra30_lp1_reset)
 
        .align  L1_CACHE_SHIFT
@@ -659,7 +659,7 @@ _no_pll_in_iddq:
        mov     r0, #0  /* brust policy = 32KHz */
        str     r0, [r5, #CLK_RESET_SCLK_BURST]
 
-       mov     pc, lr
+       ret     lr
 
 /*
  * tegra30_enter_sleep
@@ -819,7 +819,7 @@ pmc_io_dpd_skip:
 
        dsb
 
-       mov     pc, lr
+       ret     lr
 
        .ltorg
 /* dummy symbol for end of IRAM */
index 8d06213fbc47aae12f34b728a5ba09c58a37d280..f024a5109e8e7c91ec8427f060748c7c47990462 100644 (file)
@@ -87,7 +87,7 @@ ENTRY(tegra_init_l2_for_a15)
        mcrne   p15, 0x1, r0, c9, c0, 2
 _exit_init_l2_a15:
 
-       mov     pc, lr
+       ret     lr
 ENDPROC(tegra_init_l2_for_a15)
 
 /*
@@ -111,7 +111,7 @@ ENTRY(tegra_sleep_cpu_finish)
        add     r3, r3, r0
        mov     r0, r1
 
-       mov     pc, r3
+       ret     r3
 ENDPROC(tegra_sleep_cpu_finish)
 
 /*
@@ -139,7 +139,7 @@ ENTRY(tegra_shut_off_mmu)
        moveq   r3, #0
        streq   r3, [r2, #L2X0_CTRL]
 #endif
-       mov     pc, r0
+       ret     r0
 ENDPROC(tegra_shut_off_mmu)
        .popsection
 
@@ -156,6 +156,6 @@ ENTRY(tegra_switch_cpu_to_pllp)
        str     r0, [r5, #CLK_RESET_CCLK_BURST]
        mov     r0, #0
        str     r0, [r5, #CLK_RESET_CCLK_DIVIDER]
-       mov     pc, lr
+       ret     lr
 ENDPROC(tegra_switch_cpu_to_pllp)
 #endif
index e505befe51b54b77e850049f38633c5d1c2c20af..2f0c58836ae7bacae6aa70702de3e801d532fd56 100644 (file)
@@ -15,6 +15,7 @@
  */
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/assembler.h>
 #include <asm/memory.h>
 #include <asm/page.h>
 
@@ -45,7 +46,7 @@
 ENTRY(fa_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(fa_flush_icache_all)
 
 /*
@@ -71,7 +72,7 @@ __flush_whole_cache:
        mcrne   p15, 0, ip, c7, c5, 6           @ invalidate BTB
        mcrne   p15, 0, ip, c7, c10, 4          @ drain write buffer
        mcrne   p15, 0, ip, c7, c5, 4           @ prefetch flush
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -99,7 +100,7 @@ ENTRY(fa_flush_user_cache_range)
        mcrne   p15, 0, ip, c7, c5, 6           @ invalidate BTB
        mcrne   p15, 0, ip, c7, c10, 4          @ data write barrier
        mcrne   p15, 0, ip, c7, c5, 4           @ prefetch flush
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -135,7 +136,7 @@ ENTRY(fa_coherent_user_range)
        mcr     p15, 0, r0, c7, c5, 6           @ invalidate BTB
        mcr     p15, 0, r0, c7, c10, 4          @ drain write buffer
        mcr     p15, 0, r0, c7, c5, 4           @ prefetch flush
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -155,7 +156,7 @@ ENTRY(fa_flush_kern_dcache_area)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, r0, c7, c10, 4          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -181,7 +182,7 @@ fa_dma_inv_range:
        blo     1b
        mov     r0, #0
        mcr     p15, 0, r0, c7, c10, 4          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -199,7 +200,7 @@ fa_dma_clean_range:
        blo     1b
        mov     r0, #0  
        mcr     p15, 0, r0, c7, c10, 4          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start,end)
@@ -214,7 +215,7 @@ ENTRY(fa_dma_flush_range)
        blo     1b
        mov     r0, #0  
        mcr     p15, 0, r0, c7, c10, 4          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -237,7 +238,7 @@ ENDPROC(fa_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(fa_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(fa_dma_unmap_area)
 
        .globl  fa_flush_kern_cache_louis
index 8e12ddca0031b99ba8be6fc10a5ed53063eea5c5..f1cc9861031fb75dae5c7d04528c463313a25e62 100644 (file)
@@ -5,11 +5,12 @@
  */
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/assembler.h>
 
 #include "proc-macros.S"
 
 ENTRY(nop_flush_icache_all)
-       mov     pc, lr
+       ret     lr
 ENDPROC(nop_flush_icache_all)
 
        .globl nop_flush_kern_cache_all
@@ -29,7 +30,7 @@ ENDPROC(nop_flush_icache_all)
 
 ENTRY(nop_coherent_user_range)
        mov     r0, 0
-       mov     pc, lr
+       ret     lr
 ENDPROC(nop_coherent_user_range)
 
        .globl nop_flush_kern_dcache_area
index a7ba68f59f0cd8564fa2a12b84e0e2b3f13b6860..91e3adf155cb0055e325796ed122ee177baa9f2f 100644 (file)
@@ -9,6 +9,7 @@
  */
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/assembler.h>
 #include <asm/page.h>
 #include "proc-macros.S"
 
@@ -18,7 +19,7 @@
  *     Unconditionally clean and invalidate the entire icache.
  */
 ENTRY(v4_flush_icache_all)
-       mov     pc, lr
+       ret     lr
 ENDPROC(v4_flush_icache_all)
 
 /*
@@ -40,7 +41,7 @@ ENTRY(v4_flush_kern_cache_all)
 #ifdef CONFIG_CPU_CP15
        mov     r0, #0
        mcr     p15, 0, r0, c7, c7, 0           @ flush ID cache
-       mov     pc, lr
+       ret     lr
 #else
        /* FALLTHROUGH */
 #endif
@@ -59,7 +60,7 @@ ENTRY(v4_flush_user_cache_range)
 #ifdef CONFIG_CPU_CP15
        mov     ip, #0
        mcr     p15, 0, ip, c7, c7, 0           @ flush ID cache
-       mov     pc, lr
+       ret     lr
 #else
        /* FALLTHROUGH */
 #endif
@@ -89,7 +90,7 @@ ENTRY(v4_coherent_kern_range)
  */
 ENTRY(v4_coherent_user_range)
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -116,7 +117,7 @@ ENTRY(v4_dma_flush_range)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c7, 0           @ flush ID cache
 #endif
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_unmap_area(start, size, dir)
@@ -136,7 +137,7 @@ ENTRY(v4_dma_unmap_area)
  *     - dir   - DMA direction
  */
 ENTRY(v4_dma_map_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(v4_dma_unmap_area)
 ENDPROC(v4_dma_map_area)
 
index cd49453214070f24b8cab5c64b583c5aff8309e0..2522f8c8fbb17278195ee0802a821d7aea7e3995 100644 (file)
@@ -9,6 +9,7 @@
  */
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/assembler.h>
 #include <asm/memory.h>
 #include <asm/page.h>
 #include "proc-macros.S"
@@ -58,7 +59,7 @@ flush_base:
 ENTRY(v4wb_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(v4wb_flush_icache_all)
 
 /*
@@ -94,7 +95,7 @@ __flush_whole_cache:
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -122,7 +123,7 @@ ENTRY(v4wb_flush_user_cache_range)
        blo     1b
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c10, 4          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -170,7 +171,7 @@ ENTRY(v4wb_coherent_user_range)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 
 /*
@@ -195,7 +196,7 @@ v4wb_dma_inv_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -212,7 +213,7 @@ v4wb_dma_clean_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -248,7 +249,7 @@ ENDPROC(v4wb_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(v4wb_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(v4wb_dma_unmap_area)
 
        .globl  v4wb_flush_kern_cache_louis
index 11e5e5838bc59eb8d99e2e5d5d74830e86c652f0..a0982ce49007672d21840883bafa462f8fba8659 100644 (file)
@@ -13,6 +13,7 @@
  */
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/assembler.h>
 #include <asm/page.h>
 #include "proc-macros.S"
 
@@ -48,7 +49,7 @@
 ENTRY(v4wt_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(v4wt_flush_icache_all)
 
 /*
@@ -71,7 +72,7 @@ __flush_whole_cache:
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, ip, c7, c6, 0           @ invalidate D cache
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -94,7 +95,7 @@ ENTRY(v4wt_flush_user_cache_range)
        add     r0, r0, #CACHE_DLINESIZE
        cmp     r0, r1
        blo     1b
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -126,7 +127,7 @@ ENTRY(v4wt_coherent_user_range)
        cmp     r0, r1
        blo     1b
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -160,7 +161,7 @@ v4wt_dma_inv_range:
        add     r0, r0, #CACHE_DLINESIZE
        cmp     r0, r1
        blo     1b
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -192,7 +193,7 @@ ENTRY(v4wt_dma_unmap_area)
  *     - dir   - DMA direction
  */
 ENTRY(v4wt_dma_map_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(v4wt_dma_unmap_area)
 ENDPROC(v4wt_dma_map_area)
 
index d8fd4d4bd3d45ecdc66ad2c74885795df9681ea7..24659952c2784de64a53dc2e889ab616bd19b12b 100644 (file)
@@ -51,7 +51,7 @@ ENTRY(v6_flush_icache_all)
 #else
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I-cache
 #endif
-       mov     pc, lr
+       ret     lr
 ENDPROC(v6_flush_icache_all)
 
 /*
@@ -73,7 +73,7 @@ ENTRY(v6_flush_kern_cache_all)
 #else
        mcr     p15, 0, r0, c7, c15, 0          @ Cache clean+invalidate
 #endif
-       mov     pc, lr
+       ret     lr
 
 /*
  *     v6_flush_cache_all()
@@ -98,7 +98,7 @@ ENTRY(v6_flush_user_cache_all)
  *     - we have a VIPT cache.
  */
 ENTRY(v6_flush_user_cache_range)
-       mov     pc, lr
+       ret     lr
 
 /*
  *     v6_coherent_kern_range(start,end)
@@ -150,7 +150,7 @@ ENTRY(v6_coherent_user_range)
 #else
        mcr     p15, 0, r0, c7, c5, 6           @ invalidate BTB
 #endif
-       mov     pc, lr
+       ret     lr
 
 /*
  * Fault handling for the cache operation above. If the virtual address in r0
@@ -158,7 +158,7 @@ ENTRY(v6_coherent_user_range)
  */
 9001:
        mov     r0, #-EFAULT
-       mov     pc, lr
+       ret     lr
  UNWIND(.fnend         )
 ENDPROC(v6_coherent_user_range)
 ENDPROC(v6_coherent_kern_range)
@@ -188,7 +188,7 @@ ENTRY(v6_flush_kern_dcache_area)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c10, 4
 #endif
-       mov     pc, lr
+       ret     lr
 
 
 /*
@@ -239,7 +239,7 @@ v6_dma_inv_range:
        blo     1b
        mov     r0, #0
        mcr     p15, 0, r0, c7, c10, 4          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     v6_dma_clean_range(start,end)
@@ -262,7 +262,7 @@ v6_dma_clean_range:
        blo     1b
        mov     r0, #0
        mcr     p15, 0, r0, c7, c10, 4          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     v6_dma_flush_range(start,end)
@@ -290,7 +290,7 @@ ENTRY(v6_dma_flush_range)
        blo     1b
        mov     r0, #0
        mcr     p15, 0, r0, c7, c10, 4          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -323,7 +323,7 @@ ENTRY(v6_dma_unmap_area)
        teq     r2, #DMA_TO_DEVICE
        bne     v6_dma_inv_range
 #endif
-       mov     pc, lr
+       ret     lr
 ENDPROC(v6_dma_unmap_area)
 
        .globl  v6_flush_kern_cache_louis
index 615c99e38ba1e0d1dfe0333b37a03cda8177f88d..b966656d2c2d127aa4f9e7e9c840f58a143b5e1b 100644 (file)
@@ -61,7 +61,7 @@ ENTRY(v7_invalidate_l1)
        bgt     1b
        dsb     st
        isb
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7_invalidate_l1)
 
 /*
@@ -76,7 +76,7 @@ ENTRY(v7_flush_icache_all)
        mov     r0, #0
        ALT_SMP(mcr     p15, 0, r0, c7, c1, 0)          @ invalidate I-cache inner shareable
        ALT_UP(mcr      p15, 0, r0, c7, c5, 0)          @ I+BTB cache invalidate
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7_flush_icache_all)
 
  /*
@@ -94,7 +94,7 @@ ENTRY(v7_flush_dcache_louis)
        ALT_UP(ands     r3, r0, #(7 << 27))     @ extract LoUU from clidr
 #ifdef CONFIG_ARM_ERRATA_643719
        ALT_SMP(mrceq   p15, 0, r2, c0, c0, 0)  @ read main ID register
-       ALT_UP(moveq    pc, lr)                 @ LoUU is zero, so nothing to do
+       ALT_UP(reteq    lr)                     @ LoUU is zero, so nothing to do
        ldreq   r1, =0x410fc090                 @ ID of ARM Cortex A9 r0p?
        biceq   r2, r2, #0x0000000f             @ clear minor revision number
        teqeq   r2, r1                          @ test for errata affected core and if so...
@@ -102,7 +102,7 @@ ENTRY(v7_flush_dcache_louis)
 #endif
        ALT_SMP(mov     r3, r3, lsr #20)        @ r3 = LoUIS * 2
        ALT_UP(mov      r3, r3, lsr #26)        @ r3 = LoUU * 2
-       moveq   pc, lr                          @ return if level == 0
+       reteq   lr                              @ return if level == 0
        mov     r10, #0                         @ r10 (starting level) = 0
        b       flush_levels                    @ start flushing cache levels
 ENDPROC(v7_flush_dcache_louis)
@@ -168,7 +168,7 @@ finished:
        mcr     p15, 2, r10, c0, c0, 0          @ select current cache level in cssr
        dsb     st
        isb
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7_flush_dcache_all)
 
 /*
@@ -191,7 +191,7 @@ ENTRY(v7_flush_kern_cache_all)
        ALT_UP(mcr      p15, 0, r0, c7, c5, 0)  @ I+BTB cache invalidate
  ARM(  ldmfd   sp!, {r4-r5, r7, r9-r11, lr}    )
  THUMB(        ldmfd   sp!, {r4-r7, r9-r11, lr}        )
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7_flush_kern_cache_all)
 
  /*
@@ -209,7 +209,7 @@ ENTRY(v7_flush_kern_cache_louis)
        ALT_UP(mcr      p15, 0, r0, c7, c5, 0)  @ I+BTB cache invalidate
  ARM(  ldmfd   sp!, {r4-r5, r7, r9-r11, lr}    )
  THUMB(        ldmfd   sp!, {r4-r7, r9-r11, lr}        )
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7_flush_kern_cache_louis)
 
 /*
@@ -235,7 +235,7 @@ ENTRY(v7_flush_user_cache_all)
  *     - we have a VIPT cache.
  */
 ENTRY(v7_flush_user_cache_range)
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7_flush_user_cache_all)
 ENDPROC(v7_flush_user_cache_range)
 
@@ -296,7 +296,7 @@ ENTRY(v7_coherent_user_range)
        ALT_UP(mcr      p15, 0, r0, c7, c5, 6)  @ invalidate BTB
        dsb     ishst
        isb
-       mov     pc, lr
+       ret     lr
 
 /*
  * Fault handling for the cache operation above. If the virtual address in r0
@@ -307,7 +307,7 @@ ENTRY(v7_coherent_user_range)
        dsb
 #endif
        mov     r0, #-EFAULT
-       mov     pc, lr
+       ret     lr
  UNWIND(.fnend         )
 ENDPROC(v7_coherent_kern_range)
 ENDPROC(v7_coherent_user_range)
@@ -336,7 +336,7 @@ ENTRY(v7_flush_kern_dcache_area)
        cmp     r0, r1
        blo     1b
        dsb     st
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7_flush_kern_dcache_area)
 
 /*
@@ -369,7 +369,7 @@ v7_dma_inv_range:
        cmp     r0, r1
        blo     1b
        dsb     st
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7_dma_inv_range)
 
 /*
@@ -391,7 +391,7 @@ v7_dma_clean_range:
        cmp     r0, r1
        blo     1b
        dsb     st
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7_dma_clean_range)
 
 /*
@@ -413,7 +413,7 @@ ENTRY(v7_dma_flush_range)
        cmp     r0, r1
        blo     1b
        dsb     st
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7_dma_flush_range)
 
 /*
@@ -439,7 +439,7 @@ ENTRY(v7_dma_unmap_area)
        add     r1, r1, r0
        teq     r2, #DMA_TO_DEVICE
        bne     v7_dma_inv_range
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7_dma_unmap_area)
 
        __INITDATA
index 99b05f21a59a4a9d6fe22852cf1526e4508bfa52..fda415e4ca8fe43e836d96f506241fa6b045aa89 100644 (file)
@@ -6,6 +6,7 @@
  * This code can only be used to if you are running in the secure world.
  */
 #include <linux/linkage.h>
+#include <asm/assembler.h>
 #include <asm/hardware/cache-l2x0.h>
 
        .text
@@ -27,7 +28,7 @@ ENTRY(l2c310_early_resume)
 
        @ Check that the address has been initialised
        teq     r1, #0
-       moveq   pc, lr
+       reteq   lr
 
        @ The prefetch and power control registers are revision dependent
        @ and can be written whether or not the L2 cache is enabled
@@ -41,7 +42,7 @@ ENTRY(l2c310_early_resume)
        @ Don't setup the L2 cache if it is already enabled
        ldr     r0, [r1, #L2X0_CTRL]
        tst     r0, #L2X0_CTRL_EN
-       movne   pc, lr
+       retne   lr
 
        str     r3, [r1, #L310_TAG_LATENCY_CTRL]
        str     r4, [r1, #L310_DATA_LATENCY_CTRL]
@@ -51,7 +52,7 @@ ENTRY(l2c310_early_resume)
        str     r2, [r1, #L2X0_AUX_CTRL]
        mov     r9, #L2X0_CTRL_EN
        str     r9, [r1, #L2X0_CTRL]
-       mov     pc, lr
+       ret     lr
 ENDPROC(l2c310_early_resume)
 
        .align
index d1a2d05971e02f00be78cc596e3b464292e18e3b..86ee5d47ce3ca7b86f6eff840238f06e93f323c4 100644 (file)
@@ -73,7 +73,7 @@
  * cpu_arm1020_proc_init()
  */
 ENTRY(cpu_arm1020_proc_init)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm1020_proc_fin()
@@ -83,7 +83,7 @@ ENTRY(cpu_arm1020_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm1020_reset(loc)
@@ -107,7 +107,7 @@ ENTRY(cpu_arm1020_reset)
        bic     ip, ip, #0x000f                 @ ............wcam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_arm1020_reset)
        .popsection
 
@@ -117,7 +117,7 @@ ENDPROC(cpu_arm1020_reset)
        .align  5
 ENTRY(cpu_arm1020_do_idle)
        mcr     p15, 0, r0, c7, c0, 4           @ Wait for interrupt
-       mov     pc, lr
+       ret     lr
 
 /* ================================= CACHE ================================ */
 
@@ -133,7 +133,7 @@ ENTRY(arm1020_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
 #endif
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm1020_flush_icache_all)
 
 /*
@@ -169,7 +169,7 @@ __flush_whole_cache:
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
 #endif
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -200,7 +200,7 @@ ENTRY(arm1020_flush_user_cache_range)
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
 #endif
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -242,7 +242,7 @@ ENTRY(arm1020_coherent_user_range)
        blo     1b
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -264,7 +264,7 @@ ENTRY(arm1020_flush_kern_dcache_area)
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -297,7 +297,7 @@ arm1020_dma_inv_range:
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -320,7 +320,7 @@ arm1020_dma_clean_range:
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -342,7 +342,7 @@ ENTRY(arm1020_dma_flush_range)
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -365,7 +365,7 @@ ENDPROC(arm1020_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(arm1020_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm1020_dma_unmap_area)
 
        .globl  arm1020_flush_kern_cache_louis
@@ -384,7 +384,7 @@ ENTRY(cpu_arm1020_dcache_clean_area)
        subs    r1, r1, #CACHE_DLINESIZE
        bhi     1b
 #endif
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -423,7 +423,7 @@ ENTRY(cpu_arm1020_switch_mm)
        mcr     p15, 0, r0, c2, c0, 0           @ load page table pointer
        mcr     p15, 0, r1, c8, c7, 0           @ invalidate I & D TLBs
 #endif /* CONFIG_MMU */
-       mov     pc, lr
+       ret     lr
         
 /*
  * cpu_arm1020_set_pte(ptep, pte)
@@ -441,7 +441,7 @@ ENTRY(cpu_arm1020_set_pte_ext)
 #endif
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
 #endif /* CONFIG_MMU */
-       mov     pc, lr
+       ret     lr
 
        .type   __arm1020_setup, #function
 __arm1020_setup:
@@ -460,7 +460,7 @@ __arm1020_setup:
 #ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
        orr     r0, r0, #0x4000                 @ .R.. .... .... ....
 #endif
-       mov     pc, lr
+       ret     lr
        .size   __arm1020_setup, . - __arm1020_setup
 
        /*
index 9d89405c3d03bf78e63fb206beb8b356bb6095f6..a6331d78601f679ae29048577c1f376ac21a99a6 100644 (file)
@@ -73,7 +73,7 @@
  * cpu_arm1020e_proc_init()
  */
 ENTRY(cpu_arm1020e_proc_init)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm1020e_proc_fin()
@@ -83,7 +83,7 @@ ENTRY(cpu_arm1020e_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm1020e_reset(loc)
@@ -107,7 +107,7 @@ ENTRY(cpu_arm1020e_reset)
        bic     ip, ip, #0x000f                 @ ............wcam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_arm1020e_reset)
        .popsection
 
@@ -117,7 +117,7 @@ ENDPROC(cpu_arm1020e_reset)
        .align  5
 ENTRY(cpu_arm1020e_do_idle)
        mcr     p15, 0, r0, c7, c0, 4           @ Wait for interrupt
-       mov     pc, lr
+       ret     lr
 
 /* ================================= CACHE ================================ */
 
@@ -133,7 +133,7 @@ ENTRY(arm1020e_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
 #endif
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm1020e_flush_icache_all)
 
 /*
@@ -168,7 +168,7 @@ __flush_whole_cache:
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
 #endif
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -197,7 +197,7 @@ ENTRY(arm1020e_flush_user_cache_range)
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
 #endif
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -236,7 +236,7 @@ ENTRY(arm1020e_coherent_user_range)
        blo     1b
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -257,7 +257,7 @@ ENTRY(arm1020e_flush_kern_dcache_area)
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -286,7 +286,7 @@ arm1020e_dma_inv_range:
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -308,7 +308,7 @@ arm1020e_dma_clean_range:
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -328,7 +328,7 @@ ENTRY(arm1020e_dma_flush_range)
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -351,7 +351,7 @@ ENDPROC(arm1020e_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(arm1020e_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm1020e_dma_unmap_area)
 
        .globl  arm1020e_flush_kern_cache_louis
@@ -369,7 +369,7 @@ ENTRY(cpu_arm1020e_dcache_clean_area)
        subs    r1, r1, #CACHE_DLINESIZE
        bhi     1b
 #endif
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -407,7 +407,7 @@ ENTRY(cpu_arm1020e_switch_mm)
        mcr     p15, 0, r0, c2, c0, 0           @ load page table pointer
        mcr     p15, 0, r1, c8, c7, 0           @ invalidate I & D TLBs
 #endif
-       mov     pc, lr
+       ret     lr
         
 /*
  * cpu_arm1020e_set_pte(ptep, pte)
@@ -423,7 +423,7 @@ ENTRY(cpu_arm1020e_set_pte_ext)
        mcr     p15, 0, r0, c7, c10, 1          @ clean D entry
 #endif
 #endif /* CONFIG_MMU */
-       mov     pc, lr
+       ret     lr
 
        .type   __arm1020e_setup, #function
 __arm1020e_setup:
@@ -441,7 +441,7 @@ __arm1020e_setup:
 #ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
        orr     r0, r0, #0x4000                 @ .R.. .... .... ....
 #endif
-       mov     pc, lr
+       ret     lr
        .size   __arm1020e_setup, . - __arm1020e_setup
 
        /*
index 6f01a0ae3b30740218915dd0910aae84aa9ebe40..a126b7a5992809c93e911a7c875359b68c591085 100644 (file)
@@ -62,7 +62,7 @@
  * cpu_arm1022_proc_init()
  */
 ENTRY(cpu_arm1022_proc_init)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm1022_proc_fin()
@@ -72,7 +72,7 @@ ENTRY(cpu_arm1022_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm1022_reset(loc)
@@ -96,7 +96,7 @@ ENTRY(cpu_arm1022_reset)
        bic     ip, ip, #0x000f                 @ ............wcam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_arm1022_reset)
        .popsection
 
@@ -106,7 +106,7 @@ ENDPROC(cpu_arm1022_reset)
        .align  5
 ENTRY(cpu_arm1022_do_idle)
        mcr     p15, 0, r0, c7, c0, 4           @ Wait for interrupt
-       mov     pc, lr
+       ret     lr
 
 /* ================================= CACHE ================================ */
 
@@ -122,7 +122,7 @@ ENTRY(arm1022_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
 #endif
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm1022_flush_icache_all)
 
 /*
@@ -156,7 +156,7 @@ __flush_whole_cache:
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
 #endif
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -185,7 +185,7 @@ ENTRY(arm1022_flush_user_cache_range)
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
 #endif
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -225,7 +225,7 @@ ENTRY(arm1022_coherent_user_range)
        blo     1b
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -246,7 +246,7 @@ ENTRY(arm1022_flush_kern_dcache_area)
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -275,7 +275,7 @@ arm1022_dma_inv_range:
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -297,7 +297,7 @@ arm1022_dma_clean_range:
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -317,7 +317,7 @@ ENTRY(arm1022_dma_flush_range)
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -340,7 +340,7 @@ ENDPROC(arm1022_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(arm1022_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm1022_dma_unmap_area)
 
        .globl  arm1022_flush_kern_cache_louis
@@ -358,7 +358,7 @@ ENTRY(cpu_arm1022_dcache_clean_area)
        subs    r1, r1, #CACHE_DLINESIZE
        bhi     1b
 #endif
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -389,7 +389,7 @@ ENTRY(cpu_arm1022_switch_mm)
        mcr     p15, 0, r0, c2, c0, 0           @ load page table pointer
        mcr     p15, 0, r1, c8, c7, 0           @ invalidate I & D TLBs
 #endif
-       mov     pc, lr
+       ret     lr
         
 /*
  * cpu_arm1022_set_pte_ext(ptep, pte, ext)
@@ -405,7 +405,7 @@ ENTRY(cpu_arm1022_set_pte_ext)
        mcr     p15, 0, r0, c7, c10, 1          @ clean D entry
 #endif
 #endif /* CONFIG_MMU */
-       mov     pc, lr
+       ret     lr
 
        .type   __arm1022_setup, #function
 __arm1022_setup:
@@ -423,7 +423,7 @@ __arm1022_setup:
 #ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
        orr     r0, r0, #0x4000                 @ .R..............
 #endif
-       mov     pc, lr
+       ret     lr
        .size   __arm1022_setup, . - __arm1022_setup
 
        /*
index 4799a24b43e637b11de8e36d9cafb98071dbb83c..fc294067e9776330badad04d7276a9b4d56b2258 100644 (file)
@@ -62,7 +62,7 @@
  * cpu_arm1026_proc_init()
  */
 ENTRY(cpu_arm1026_proc_init)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm1026_proc_fin()
@@ -72,7 +72,7 @@ ENTRY(cpu_arm1026_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm1026_reset(loc)
@@ -96,7 +96,7 @@ ENTRY(cpu_arm1026_reset)
        bic     ip, ip, #0x000f                 @ ............wcam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_arm1026_reset)
        .popsection
 
@@ -106,7 +106,7 @@ ENDPROC(cpu_arm1026_reset)
        .align  5
 ENTRY(cpu_arm1026_do_idle)
        mcr     p15, 0, r0, c7, c0, 4           @ Wait for interrupt
-       mov     pc, lr
+       ret     lr
 
 /* ================================= CACHE ================================ */
 
@@ -122,7 +122,7 @@ ENTRY(arm1026_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
 #endif
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm1026_flush_icache_all)
 
 /*
@@ -151,7 +151,7 @@ __flush_whole_cache:
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
 #endif
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -180,7 +180,7 @@ ENTRY(arm1026_flush_user_cache_range)
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
 #endif
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -219,7 +219,7 @@ ENTRY(arm1026_coherent_user_range)
        blo     1b
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -240,7 +240,7 @@ ENTRY(arm1026_flush_kern_dcache_area)
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -269,7 +269,7 @@ arm1026_dma_inv_range:
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -291,7 +291,7 @@ arm1026_dma_clean_range:
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -311,7 +311,7 @@ ENTRY(arm1026_dma_flush_range)
        blo     1b
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -334,7 +334,7 @@ ENDPROC(arm1026_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(arm1026_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm1026_dma_unmap_area)
 
        .globl  arm1026_flush_kern_cache_louis
@@ -352,7 +352,7 @@ ENTRY(cpu_arm1026_dcache_clean_area)
        subs    r1, r1, #CACHE_DLINESIZE
        bhi     1b
 #endif
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -378,7 +378,7 @@ ENTRY(cpu_arm1026_switch_mm)
        mcr     p15, 0, r0, c2, c0, 0           @ load page table pointer
        mcr     p15, 0, r1, c8, c7, 0           @ invalidate I & D TLBs
 #endif
-       mov     pc, lr
+       ret     lr
         
 /*
  * cpu_arm1026_set_pte_ext(ptep, pte, ext)
@@ -394,7 +394,7 @@ ENTRY(cpu_arm1026_set_pte_ext)
        mcr     p15, 0, r0, c7, c10, 1          @ clean D entry
 #endif
 #endif /* CONFIG_MMU */
-       mov     pc, lr
+       ret     lr
 
        .type   __arm1026_setup, #function
 __arm1026_setup:
@@ -417,7 +417,7 @@ __arm1026_setup:
 #ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
        orr     r0, r0, #0x4000                 @ .R.. .... .... ....
 #endif
-       mov     pc, lr
+       ret     lr
        .size   __arm1026_setup, . - __arm1026_setup
 
        /*
index d42c37f9f5bc465e35cf0f3da88457f1bf90be05..2baa66b3ac9b749ee8f8a32f8e16169ada2039c9 100644 (file)
  */
 ENTRY(cpu_arm720_dcache_clean_area)
 ENTRY(cpu_arm720_proc_init)
-               mov     pc, lr
+               ret     lr
 
 ENTRY(cpu_arm720_proc_fin)
                mrc     p15, 0, r0, c1, c0, 0
                bic     r0, r0, #0x1000                 @ ...i............
                bic     r0, r0, #0x000e                 @ ............wca.
                mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-               mov     pc, lr
+               ret     lr
 
 /*
  * Function: arm720_proc_do_idle(void)
@@ -66,7 +66,7 @@ ENTRY(cpu_arm720_proc_fin)
  * Purpose : put the processor in proper idle mode
  */
 ENTRY(cpu_arm720_do_idle)
-               mov     pc, lr
+               ret     lr
 
 /*
  * Function: arm720_switch_mm(unsigned long pgd_phys)
@@ -81,7 +81,7 @@ ENTRY(cpu_arm720_switch_mm)
                mcr     p15, 0, r0, c2, c0, 0           @ update page table ptr
                mcr     p15, 0, r1, c8, c7, 0           @ flush TLB (v4)
 #endif
-               mov     pc, lr
+               ret     lr
 
 /*
  * Function: arm720_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext)
@@ -94,7 +94,7 @@ ENTRY(cpu_arm720_set_pte_ext)
 #ifdef CONFIG_MMU
        armv3_set_pte_ext wc_disable=0
 #endif
-       mov     pc, lr
+       ret     lr
 
 /*
  * Function: arm720_reset
@@ -112,7 +112,7 @@ ENTRY(cpu_arm720_reset)
                bic     ip, ip, #0x000f                 @ ............wcam
                bic     ip, ip, #0x2100                 @ ..v....s........
                mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-               mov     pc, r0
+               ret     r0
 ENDPROC(cpu_arm720_reset)
                .popsection
 
@@ -128,7 +128,7 @@ __arm710_setup:
        bic     r0, r0, r5
        ldr     r5, arm710_cr1_set
        orr     r0, r0, r5
-       mov     pc, lr                          @ __ret (head.S)
+       ret     lr                              @ __ret (head.S)
        .size   __arm710_setup, . - __arm710_setup
 
        /*
@@ -156,7 +156,7 @@ __arm720_setup:
        mrc     p15, 0, r0, c1, c0              @ get control register
        bic     r0, r0, r5
        orr     r0, r0, r6
-       mov     pc, lr                          @ __ret (head.S)
+       ret     lr                              @ __ret (head.S)
        .size   __arm720_setup, . - __arm720_setup
 
        /*
index 9b0ae90cbf17b09fdbf62ecb2c7ac42406e5c16e..ac1ea6b3bce4c13d4e87e6b14e547849aeb00648 100644 (file)
@@ -32,7 +32,7 @@ ENTRY(cpu_arm740_proc_init)
 ENTRY(cpu_arm740_do_idle)
 ENTRY(cpu_arm740_dcache_clean_area)
 ENTRY(cpu_arm740_switch_mm)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm740_proc_fin()
@@ -42,7 +42,7 @@ ENTRY(cpu_arm740_proc_fin)
        bic     r0, r0, #0x3f000000             @ bank/f/lock/s
        bic     r0, r0, #0x0000000c             @ w-buffer/cache
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm740_reset(loc)
@@ -56,7 +56,7 @@ ENTRY(cpu_arm740_reset)
        mrc     p15, 0, ip, c1, c0, 0           @ get ctrl register
        bic     ip, ip, #0x0000000c             @ ............wc..
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_arm740_reset)
        .popsection
 
@@ -115,7 +115,7 @@ __arm740_setup:
                                                @ need some benchmark
        orr     r0, r0, #0x0000000d             @ MPU/Cache/WB
 
-       mov     pc, lr
+       ret     lr
 
        .size   __arm740_setup, . - __arm740_setup
 
index f6cc3f63ce397f2ef41e54f0939f69671a1bb1e3..bf6ba4bc30ffb87acd4ddf2d7b83cd710f52f43b 100644 (file)
@@ -32,13 +32,13 @@ ENTRY(cpu_arm7tdmi_proc_init)
 ENTRY(cpu_arm7tdmi_do_idle)
 ENTRY(cpu_arm7tdmi_dcache_clean_area)
 ENTRY(cpu_arm7tdmi_switch_mm)
-               mov     pc, lr
+               ret     lr
 
 /*
  * cpu_arm7tdmi_proc_fin()
  */
 ENTRY(cpu_arm7tdmi_proc_fin)
-               mov     pc, lr
+               ret     lr
 
 /*
  * Function: cpu_arm7tdmi_reset(loc)
@@ -47,13 +47,13 @@ ENTRY(cpu_arm7tdmi_proc_fin)
  */
                .pushsection    .idmap.text, "ax"
 ENTRY(cpu_arm7tdmi_reset)
-               mov     pc, r0
+               ret     r0
 ENDPROC(cpu_arm7tdmi_reset)
                .popsection
 
                .type   __arm7tdmi_setup, #function
 __arm7tdmi_setup:
-               mov     pc, lr
+               ret     lr
                .size   __arm7tdmi_setup, . - __arm7tdmi_setup
 
                __INITDATA
index 549557df6d57a4273e99b2d0901b847af4382a39..22bf8dde4f84b331a07e740800785791dfb852f9 100644 (file)
@@ -63,7 +63,7 @@
  * cpu_arm920_proc_init()
  */
 ENTRY(cpu_arm920_proc_init)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm920_proc_fin()
@@ -73,7 +73,7 @@ ENTRY(cpu_arm920_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm920_reset(loc)
@@ -97,7 +97,7 @@ ENTRY(cpu_arm920_reset)
        bic     ip, ip, #0x000f                 @ ............wcam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_arm920_reset)
        .popsection
 
@@ -107,7 +107,7 @@ ENDPROC(cpu_arm920_reset)
        .align  5
 ENTRY(cpu_arm920_do_idle)
        mcr     p15, 0, r0, c7, c0, 4           @ Wait for interrupt
-       mov     pc, lr
+       ret     lr
 
 
 #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH
@@ -120,7 +120,7 @@ ENTRY(cpu_arm920_do_idle)
 ENTRY(arm920_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm920_flush_icache_all)
 
 /*
@@ -151,7 +151,7 @@ __flush_whole_cache:
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -177,7 +177,7 @@ ENTRY(arm920_flush_user_cache_range)
        blo     1b
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -211,7 +211,7 @@ ENTRY(arm920_coherent_user_range)
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -231,7 +231,7 @@ ENTRY(arm920_flush_kern_dcache_area)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -257,7 +257,7 @@ arm920_dma_inv_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -276,7 +276,7 @@ arm920_dma_clean_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -293,7 +293,7 @@ ENTRY(arm920_dma_flush_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -316,7 +316,7 @@ ENDPROC(arm920_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(arm920_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm920_dma_unmap_area)
 
        .globl  arm920_flush_kern_cache_louis
@@ -332,7 +332,7 @@ ENTRY(cpu_arm920_dcache_clean_area)
        add     r0, r0, #CACHE_DLINESIZE
        subs    r1, r1, #CACHE_DLINESIZE
        bhi     1b
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -367,7 +367,7 @@ ENTRY(cpu_arm920_switch_mm)
        mcr     p15, 0, r0, c2, c0, 0           @ load page table pointer
        mcr     p15, 0, ip, c8, c7, 0           @ invalidate I & D TLBs
 #endif
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm920_set_pte(ptep, pte, ext)
@@ -382,7 +382,7 @@ ENTRY(cpu_arm920_set_pte_ext)
        mcr     p15, 0, r0, c7, c10, 1          @ clean D entry
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
 #endif
-       mov     pc, lr
+       ret     lr
 
 /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */
 .globl cpu_arm920_suspend_size
@@ -423,7 +423,7 @@ __arm920_setup:
        mrc     p15, 0, r0, c1, c0              @ get control register v4
        bic     r0, r0, r5
        orr     r0, r0, r6
-       mov     pc, lr
+       ret     lr
        .size   __arm920_setup, . - __arm920_setup
 
        /*
index 2a758b06c6f65fb9071a9f7faf73b3ccb720eef2..0c6d5ac5a6d41b10a8480597056752cc5325a727 100644 (file)
@@ -65,7 +65,7 @@
  * cpu_arm922_proc_init()
  */
 ENTRY(cpu_arm922_proc_init)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm922_proc_fin()
@@ -75,7 +75,7 @@ ENTRY(cpu_arm922_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm922_reset(loc)
@@ -99,7 +99,7 @@ ENTRY(cpu_arm922_reset)
        bic     ip, ip, #0x000f                 @ ............wcam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_arm922_reset)
        .popsection
 
@@ -109,7 +109,7 @@ ENDPROC(cpu_arm922_reset)
        .align  5
 ENTRY(cpu_arm922_do_idle)
        mcr     p15, 0, r0, c7, c0, 4           @ Wait for interrupt
-       mov     pc, lr
+       ret     lr
 
 
 #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH
@@ -122,7 +122,7 @@ ENTRY(cpu_arm922_do_idle)
 ENTRY(arm922_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm922_flush_icache_all)
 
 /*
@@ -153,7 +153,7 @@ __flush_whole_cache:
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -179,7 +179,7 @@ ENTRY(arm922_flush_user_cache_range)
        blo     1b
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -213,7 +213,7 @@ ENTRY(arm922_coherent_user_range)
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -233,7 +233,7 @@ ENTRY(arm922_flush_kern_dcache_area)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -259,7 +259,7 @@ arm922_dma_inv_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -278,7 +278,7 @@ arm922_dma_clean_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -295,7 +295,7 @@ ENTRY(arm922_dma_flush_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -318,7 +318,7 @@ ENDPROC(arm922_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(arm922_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm922_dma_unmap_area)
 
        .globl  arm922_flush_kern_cache_louis
@@ -336,7 +336,7 @@ ENTRY(cpu_arm922_dcache_clean_area)
        subs    r1, r1, #CACHE_DLINESIZE
        bhi     1b
 #endif
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -371,7 +371,7 @@ ENTRY(cpu_arm922_switch_mm)
        mcr     p15, 0, r0, c2, c0, 0           @ load page table pointer
        mcr     p15, 0, ip, c8, c7, 0           @ invalidate I & D TLBs
 #endif
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm922_set_pte_ext(ptep, pte, ext)
@@ -386,7 +386,7 @@ ENTRY(cpu_arm922_set_pte_ext)
        mcr     p15, 0, r0, c7, c10, 1          @ clean D entry
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
 #endif /* CONFIG_MMU */
-       mov     pc, lr
+       ret     lr
 
        .type   __arm922_setup, #function
 __arm922_setup:
@@ -401,7 +401,7 @@ __arm922_setup:
        mrc     p15, 0, r0, c1, c0              @ get control register v4
        bic     r0, r0, r5
        orr     r0, r0, r6
-       mov     pc, lr
+       ret     lr
        .size   __arm922_setup, . - __arm922_setup
 
        /*
index ba0d58e1a2a2bf7ede98394c741f58e0aab63dcb..c32d073282eabbf7ada03d814ba236e989c23d18 100644 (file)
@@ -86,7 +86,7 @@
  * cpu_arm925_proc_init()
  */
 ENTRY(cpu_arm925_proc_init)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm925_proc_fin()
@@ -96,7 +96,7 @@ ENTRY(cpu_arm925_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm925_reset(loc)
@@ -129,7 +129,7 @@ ENDPROC(cpu_arm925_reset)
        bic     ip, ip, #0x000f                 @ ............wcam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 
 /*
  * cpu_arm925_do_idle()
@@ -145,7 +145,7 @@ ENTRY(cpu_arm925_do_idle)
        mcr     p15, 0, r2, c1, c0, 0           @ Disable I cache
        mcr     p15, 0, r0, c7, c0, 4           @ Wait for interrupt
        mcr     p15, 0, r1, c1, c0, 0           @ Restore ICache enable
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_icache_all()
@@ -155,7 +155,7 @@ ENTRY(cpu_arm925_do_idle)
 ENTRY(arm925_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm925_flush_icache_all)
 
 /*
@@ -188,7 +188,7 @@ __flush_whole_cache:
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -225,7 +225,7 @@ ENTRY(arm925_flush_user_cache_range)
        blo     1b
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -259,7 +259,7 @@ ENTRY(arm925_coherent_user_range)
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -279,7 +279,7 @@ ENTRY(arm925_flush_kern_dcache_area)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -307,7 +307,7 @@ arm925_dma_inv_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -328,7 +328,7 @@ arm925_dma_clean_range:
        blo     1b
 #endif
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -350,7 +350,7 @@ ENTRY(arm925_dma_flush_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -373,7 +373,7 @@ ENDPROC(arm925_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(arm925_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm925_dma_unmap_area)
 
        .globl  arm925_flush_kern_cache_louis
@@ -390,7 +390,7 @@ ENTRY(cpu_arm925_dcache_clean_area)
        bhi     1b
 #endif
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -419,7 +419,7 @@ ENTRY(cpu_arm925_switch_mm)
        mcr     p15, 0, r0, c2, c0, 0           @ load page table pointer
        mcr     p15, 0, ip, c8, c7, 0           @ invalidate I & D TLBs
 #endif
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm925_set_pte_ext(ptep, pte, ext)
@@ -436,7 +436,7 @@ ENTRY(cpu_arm925_set_pte_ext)
 #endif
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
 #endif /* CONFIG_MMU */
-       mov     pc, lr
+       ret     lr
 
        .type   __arm925_setup, #function
 __arm925_setup:
@@ -469,7 +469,7 @@ __arm925_setup:
 #ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
        orr     r0, r0, #0x4000                 @ .1.. .... .... ....
 #endif
-       mov     pc, lr
+       ret     lr
        .size   __arm925_setup, . - __arm925_setup
 
        /*
index 0f098f407c9f12233b747e4bf1dac881d8b6d5a1..252b2503038de72131f84aa79a585111c67e1837 100644 (file)
@@ -55,7 +55,7 @@
  * cpu_arm926_proc_init()
  */
 ENTRY(cpu_arm926_proc_init)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm926_proc_fin()
@@ -65,7 +65,7 @@ ENTRY(cpu_arm926_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm926_reset(loc)
@@ -89,7 +89,7 @@ ENTRY(cpu_arm926_reset)
        bic     ip, ip, #0x000f                 @ ............wcam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_arm926_reset)
        .popsection
 
@@ -111,7 +111,7 @@ ENTRY(cpu_arm926_do_idle)
        mcr     p15, 0, r0, c7, c0, 4           @ Wait for interrupt
        mcr     p15, 0, r1, c1, c0, 0           @ Restore ICache enable
        msr     cpsr_c, r3                      @ Restore FIQ state
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_icache_all()
@@ -121,7 +121,7 @@ ENTRY(cpu_arm926_do_idle)
 ENTRY(arm926_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm926_flush_icache_all)
 
 /*
@@ -151,7 +151,7 @@ __flush_whole_cache:
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -188,7 +188,7 @@ ENTRY(arm926_flush_user_cache_range)
        blo     1b
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -222,7 +222,7 @@ ENTRY(arm926_coherent_user_range)
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -242,7 +242,7 @@ ENTRY(arm926_flush_kern_dcache_area)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -270,7 +270,7 @@ arm926_dma_inv_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -291,7 +291,7 @@ arm926_dma_clean_range:
        blo     1b
 #endif
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -313,7 +313,7 @@ ENTRY(arm926_dma_flush_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -336,7 +336,7 @@ ENDPROC(arm926_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(arm926_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm926_dma_unmap_area)
 
        .globl  arm926_flush_kern_cache_louis
@@ -353,7 +353,7 @@ ENTRY(cpu_arm926_dcache_clean_area)
        bhi     1b
 #endif
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -380,7 +380,7 @@ ENTRY(cpu_arm926_switch_mm)
        mcr     p15, 0, r0, c2, c0, 0           @ load page table pointer
        mcr     p15, 0, ip, c8, c7, 0           @ invalidate I & D TLBs
 #endif
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm926_set_pte_ext(ptep, pte, ext)
@@ -397,7 +397,7 @@ ENTRY(cpu_arm926_set_pte_ext)
 #endif
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
 #endif
-       mov     pc, lr
+       ret     lr
 
 /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */
 .globl cpu_arm926_suspend_size
@@ -448,7 +448,7 @@ __arm926_setup:
 #ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
        orr     r0, r0, #0x4000                 @ .1.. .... .... ....
 #endif
-       mov     pc, lr
+       ret     lr
        .size   __arm926_setup, . - __arm926_setup
 
        /*
index 1c39a704ff6e139fd409bb1e70617780491505c7..e5212d48937723e8fe711aadfba2ade276d2a442 100644 (file)
@@ -31,7 +31,7 @@
  */
 ENTRY(cpu_arm940_proc_init)
 ENTRY(cpu_arm940_switch_mm)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm940_proc_fin()
@@ -41,7 +41,7 @@ ENTRY(cpu_arm940_proc_fin)
        bic     r0, r0, #0x00001000             @ i-cache
        bic     r0, r0, #0x00000004             @ d-cache
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm940_reset(loc)
@@ -58,7 +58,7 @@ ENTRY(cpu_arm940_reset)
        bic     ip, ip, #0x00000005             @ .............c.p
        bic     ip, ip, #0x00001000             @ i-cache
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_arm940_reset)
        .popsection
 
@@ -68,7 +68,7 @@ ENDPROC(cpu_arm940_reset)
        .align  5
 ENTRY(cpu_arm940_do_idle)
        mcr     p15, 0, r0, c7, c0, 4           @ Wait for interrupt
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_icache_all()
@@ -78,7 +78,7 @@ ENTRY(cpu_arm940_do_idle)
 ENTRY(arm940_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm940_flush_icache_all)
 
 /*
@@ -122,7 +122,7 @@ ENTRY(arm940_flush_user_cache_range)
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -170,7 +170,7 @@ ENTRY(arm940_flush_kern_dcache_area)
        bcs     1b                              @ segments 7 to 0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -191,7 +191,7 @@ arm940_dma_inv_range:
        subs    r1, r1, #1 << 4
        bcs     1b                              @ segments 7 to 0
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -215,7 +215,7 @@ ENTRY(cpu_arm940_dcache_clean_area)
        bcs     1b                              @ segments 7 to 0
 #endif
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -241,7 +241,7 @@ ENTRY(arm940_dma_flush_range)
        subs    r1, r1, #1 << 4
        bcs     1b                              @ segments 7 to 0
        mcr     p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -264,7 +264,7 @@ ENDPROC(arm940_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(arm940_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm940_dma_unmap_area)
 
        .globl  arm940_flush_kern_cache_louis
@@ -337,7 +337,7 @@ __arm940_setup:
        orr     r0, r0, #0x00001000             @ I-cache
        orr     r0, r0, #0x00000005             @ MPU/D-cache
 
-       mov     pc, lr
+       ret     lr
 
        .size   __arm940_setup, . - __arm940_setup
 
index 0289cd905e734d8421c050014cbed60ca9baace7..b3dd9b2d0b8ea01972bbfa9379fb3c7665ee2611 100644 (file)
@@ -38,7 +38,7 @@
  */
 ENTRY(cpu_arm946_proc_init)
 ENTRY(cpu_arm946_switch_mm)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm946_proc_fin()
@@ -48,7 +48,7 @@ ENTRY(cpu_arm946_proc_fin)
        bic     r0, r0, #0x00001000             @ i-cache
        bic     r0, r0, #0x00000004             @ d-cache
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_arm946_reset(loc)
@@ -65,7 +65,7 @@ ENTRY(cpu_arm946_reset)
        bic     ip, ip, #0x00000005             @ .............c.p
        bic     ip, ip, #0x00001000             @ i-cache
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_arm946_reset)
        .popsection
 
@@ -75,7 +75,7 @@ ENDPROC(cpu_arm946_reset)
        .align  5
 ENTRY(cpu_arm946_do_idle)
        mcr     p15, 0, r0, c7, c0, 4           @ Wait for interrupt
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_icache_all()
@@ -85,7 +85,7 @@ ENTRY(cpu_arm946_do_idle)
 ENTRY(arm946_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm946_flush_icache_all)
 
 /*
@@ -117,7 +117,7 @@ __flush_whole_cache:
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c5, 0           @ flush I cache
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -156,7 +156,7 @@ ENTRY(arm946_flush_user_cache_range)
        blo     1b
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -191,7 +191,7 @@ ENTRY(arm946_coherent_user_range)
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -212,7 +212,7 @@ ENTRY(arm946_flush_kern_dcache_area)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -239,7 +239,7 @@ arm946_dma_inv_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -260,7 +260,7 @@ arm946_dma_clean_range:
        blo     1b
 #endif
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -284,7 +284,7 @@ ENTRY(arm946_dma_flush_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -307,7 +307,7 @@ ENDPROC(arm946_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(arm946_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(arm946_dma_unmap_area)
 
        .globl  arm946_flush_kern_cache_louis
@@ -324,7 +324,7 @@ ENTRY(cpu_arm946_dcache_clean_area)
        bhi     1b
 #endif
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
        .type   __arm946_setup, #function
 __arm946_setup:
@@ -392,7 +392,7 @@ __arm946_setup:
 #ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
        orr     r0, r0, #0x00004000             @ .1.. .... .... ....
 #endif
-       mov     pc, lr
+       ret     lr
 
        .size   __arm946_setup, . - __arm946_setup
 
index f51197ba754a2951d2dac160470592de11fa0337..8227322bbb8f86763d1e7039c08797165c223427 100644 (file)
@@ -32,13 +32,13 @@ ENTRY(cpu_arm9tdmi_proc_init)
 ENTRY(cpu_arm9tdmi_do_idle)
 ENTRY(cpu_arm9tdmi_dcache_clean_area)
 ENTRY(cpu_arm9tdmi_switch_mm)
-               mov     pc, lr
+               ret     lr
 
 /*
  * cpu_arm9tdmi_proc_fin()
  */
 ENTRY(cpu_arm9tdmi_proc_fin)
-               mov     pc, lr
+               ret     lr
 
 /*
  * Function: cpu_arm9tdmi_reset(loc)
@@ -47,13 +47,13 @@ ENTRY(cpu_arm9tdmi_proc_fin)
  */
                .pushsection    .idmap.text, "ax"
 ENTRY(cpu_arm9tdmi_reset)
-               mov     pc, r0
+               ret     r0
 ENDPROC(cpu_arm9tdmi_reset)
                .popsection
 
                .type   __arm9tdmi_setup, #function
 __arm9tdmi_setup:
-               mov     pc, lr
+               ret     lr
                .size   __arm9tdmi_setup, . - __arm9tdmi_setup
 
                __INITDATA
index 2dfc0f1d3bfdd99fe3534958dedd16ae13866e0b..c494886892ba0d2a6f1bbff54f50b463fc2afbad 100644 (file)
@@ -32,7 +32,7 @@
  * cpu_fa526_proc_init()
  */
 ENTRY(cpu_fa526_proc_init)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_fa526_proc_fin()
@@ -44,7 +44,7 @@ ENTRY(cpu_fa526_proc_fin)
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
        nop
        nop
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_fa526_reset(loc)
@@ -72,7 +72,7 @@ ENTRY(cpu_fa526_reset)
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
        nop
        nop
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_fa526_reset)
        .popsection
 
@@ -81,7 +81,7 @@ ENDPROC(cpu_fa526_reset)
  */
        .align  4
 ENTRY(cpu_fa526_do_idle)
-       mov     pc, lr
+       ret     lr
 
 
 ENTRY(cpu_fa526_dcache_clean_area)
@@ -90,7 +90,7 @@ ENTRY(cpu_fa526_dcache_clean_area)
        subs    r1, r1, #CACHE_DLINESIZE
        bhi     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -117,7 +117,7 @@ ENTRY(cpu_fa526_switch_mm)
        mcr     p15, 0, r0, c2, c0, 0           @ load page table pointer
        mcr     p15, 0, ip, c8, c7, 0           @ invalidate UTLB
 #endif
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_fa526_set_pte_ext(ptep, pte, ext)
@@ -133,7 +133,7 @@ ENTRY(cpu_fa526_set_pte_ext)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
 #endif
-       mov     pc, lr
+       ret     lr
 
        .type   __fa526_setup, #function
 __fa526_setup:
@@ -162,7 +162,7 @@ __fa526_setup:
        bic     r0, r0, r5
        ldr     r5, fa526_cr1_set
        orr     r0, r0, r5
-       mov     pc, lr
+       ret     lr
        .size   __fa526_setup, . - __fa526_setup
 
        /*
index db79b62c92fb1c26ef777b54c4c8f49fe94047a6..03a1b75f2e1697d1c7fcec7c255767973eb96b3f 100644 (file)
@@ -69,7 +69,7 @@ ENTRY(cpu_feroceon_proc_init)
        movne   r2, r2, lsr #2                  @ turned into # of sets
        sub     r2, r2, #(1 << 5)
        stmia   r1, {r2, r3}
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_feroceon_proc_fin()
@@ -86,7 +86,7 @@ ENTRY(cpu_feroceon_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_feroceon_reset(loc)
@@ -110,7 +110,7 @@ ENTRY(cpu_feroceon_reset)
        bic     ip, ip, #0x000f                 @ ............wcam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_feroceon_reset)
        .popsection
 
@@ -124,7 +124,7 @@ ENTRY(cpu_feroceon_do_idle)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c10, 4          @ Drain write buffer
        mcr     p15, 0, r0, c7, c0, 4           @ Wait for interrupt
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_icache_all()
@@ -134,7 +134,7 @@ ENTRY(cpu_feroceon_do_idle)
 ENTRY(feroceon_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(feroceon_flush_icache_all)
 
 /*
@@ -169,7 +169,7 @@ __flush_whole_cache:
        mov     ip, #0
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -198,7 +198,7 @@ ENTRY(feroceon_flush_user_cache_range)
        tst     r2, #VM_EXEC
        mov     ip, #0
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -233,7 +233,7 @@ ENTRY(feroceon_coherent_user_range)
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -254,7 +254,7 @@ ENTRY(feroceon_flush_kern_dcache_area)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
        .align  5
 ENTRY(feroceon_range_flush_kern_dcache_area)
@@ -268,7 +268,7 @@ ENTRY(feroceon_range_flush_kern_dcache_area)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -295,7 +295,7 @@ feroceon_dma_inv_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
        .align  5
 feroceon_range_dma_inv_range:
@@ -311,7 +311,7 @@ feroceon_range_dma_inv_range:
        mcr     p15, 5, r0, c15, c14, 0         @ D inv range start
        mcr     p15, 5, r1, c15, c14, 1         @ D inv range top
        msr     cpsr_c, r2                      @ restore interrupts
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -331,7 +331,7 @@ feroceon_dma_clean_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
        .align  5
 feroceon_range_dma_clean_range:
@@ -344,7 +344,7 @@ feroceon_range_dma_clean_range:
        mcr     p15, 5, r1, c15, c13, 1         @ D clean range top
        msr     cpsr_c, r2                      @ restore interrupts
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -362,7 +362,7 @@ ENTRY(feroceon_dma_flush_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
        .align  5
 ENTRY(feroceon_range_dma_flush_range)
@@ -375,7 +375,7 @@ ENTRY(feroceon_range_dma_flush_range)
        mcr     p15, 5, r1, c15, c15, 1         @ D clean/inv range top
        msr     cpsr_c, r2                      @ restore interrupts
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -412,7 +412,7 @@ ENDPROC(feroceon_range_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(feroceon_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(feroceon_dma_unmap_area)
 
        .globl  feroceon_flush_kern_cache_louis
@@ -461,7 +461,7 @@ ENTRY(cpu_feroceon_dcache_clean_area)
        bhi     1b
 #endif
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -490,9 +490,9 @@ ENTRY(cpu_feroceon_switch_mm)
 
        mcr     p15, 0, r0, c2, c0, 0           @ load page table pointer
        mcr     p15, 0, ip, c8, c7, 0           @ invalidate I & D TLBs
-       mov     pc, r2
+       ret     r2
 #else
-       mov     pc, lr
+       ret     lr
 #endif
 
 /*
@@ -512,7 +512,7 @@ ENTRY(cpu_feroceon_set_pte_ext)
 #endif
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
 #endif
-       mov     pc, lr
+       ret     lr
 
 /* Suspend/resume support: taken from arch/arm/mm/proc-arm926.S */
 .globl cpu_feroceon_suspend_size
@@ -554,7 +554,7 @@ __feroceon_setup:
        mrc     p15, 0, r0, c1, c0              @ get control register v4
        bic     r0, r0, r5
        orr     r0, r0, r6
-       mov     pc, lr
+       ret     lr
        .size   __feroceon_setup, . - __feroceon_setup
 
        /*
index 40acba595731c0ec4fa6c934f428222bcb95424e..53d393455f137685c3b5d65f0510e41810cb0374 100644 (file)
@@ -45,7 +45,7 @@
  * cpu_mohawk_proc_init()
  */
 ENTRY(cpu_mohawk_proc_init)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_mohawk_proc_fin()
@@ -55,7 +55,7 @@ ENTRY(cpu_mohawk_proc_fin)
        bic     r0, r0, #0x1800                 @ ...iz...........
        bic     r0, r0, #0x0006                 @ .............ca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_mohawk_reset(loc)
@@ -79,7 +79,7 @@ ENTRY(cpu_mohawk_reset)
        bic     ip, ip, #0x0007                 @ .............cam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_mohawk_reset)
        .popsection
 
@@ -93,7 +93,7 @@ ENTRY(cpu_mohawk_do_idle)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c10, 4          @ drain write buffer
        mcr     p15, 0, r0, c7, c0, 4           @ wait for interrupt
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_icache_all()
@@ -103,7 +103,7 @@ ENTRY(cpu_mohawk_do_idle)
 ENTRY(mohawk_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(mohawk_flush_icache_all)
 
 /*
@@ -128,7 +128,7 @@ __flush_whole_cache:
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate I cache
        mcrne   p15, 0, ip, c7, c10, 0          @ drain write buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, flags)
@@ -158,7 +158,7 @@ ENTRY(mohawk_flush_user_cache_range)
        blo     1b
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -194,7 +194,7 @@ ENTRY(mohawk_coherent_user_range)
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
        mov     r0, #0
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -214,7 +214,7 @@ ENTRY(mohawk_flush_kern_dcache_area)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -240,7 +240,7 @@ mohawk_dma_inv_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -259,7 +259,7 @@ mohawk_dma_clean_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -277,7 +277,7 @@ ENTRY(mohawk_dma_flush_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -300,7 +300,7 @@ ENDPROC(mohawk_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(mohawk_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(mohawk_dma_unmap_area)
 
        .globl  mohawk_flush_kern_cache_louis
@@ -315,7 +315,7 @@ ENTRY(cpu_mohawk_dcache_clean_area)
        subs    r1, r1, #CACHE_DLINESIZE
        bhi     1b
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_mohawk_switch_mm(pgd)
@@ -333,7 +333,7 @@ ENTRY(cpu_mohawk_switch_mm)
        orr     r0, r0, #0x18                   @ cache the page table in L2
        mcr     p15, 0, r0, c2, c0, 0           @ load page table pointer
        mcr     p15, 0, ip, c8, c7, 0           @ invalidate I & D TLBs
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_mohawk_set_pte_ext(ptep, pte, ext)
@@ -346,7 +346,7 @@ ENTRY(cpu_mohawk_set_pte_ext)
        mov     r0, r0
        mcr     p15, 0, r0, c7, c10, 1          @ clean D entry
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
-       mov     pc, lr
+       ret     lr
 
 .globl cpu_mohawk_suspend_size
 .equ   cpu_mohawk_suspend_size, 4 * 6
@@ -400,7 +400,7 @@ __mohawk_setup:
        mrc     p15, 0, r0, c1, c0              @ get control register
        bic     r0, r0, r5
        orr     r0, r0, r6
-       mov     pc, lr
+       ret     lr
 
        .size   __mohawk_setup, . - __mohawk_setup
 
index c45319c8f1d9821a396f8b453473614fe92a8ea6..8008a0461cf530b70adb6d50d02e40094e5dccd4 100644 (file)
@@ -38,7 +38,7 @@
 ENTRY(cpu_sa110_proc_init)
        mov     r0, #0
        mcr     p15, 0, r0, c15, c1, 2          @ Enable clock switching
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_sa110_proc_fin()
@@ -50,7 +50,7 @@ ENTRY(cpu_sa110_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_sa110_reset(loc)
@@ -74,7 +74,7 @@ ENTRY(cpu_sa110_reset)
        bic     ip, ip, #0x000f                 @ ............wcam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_sa110_reset)
        .popsection
 
@@ -103,7 +103,7 @@ ENTRY(cpu_sa110_do_idle)
        mov     r0, r0                          @ safety
        mov     r0, r0                          @ safety
        mcr     p15, 0, r0, c15, c1, 2          @ enable clock switching
-       mov     pc, lr
+       ret     lr
 
 /* ================================= CACHE ================================ */
 
@@ -121,7 +121,7 @@ ENTRY(cpu_sa110_dcache_clean_area)
        add     r0, r0, #DCACHELINESIZE
        subs    r1, r1, #DCACHELINESIZE
        bhi     1b
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -141,7 +141,7 @@ ENTRY(cpu_sa110_switch_mm)
        mcr     p15, 0, ip, c8, c7, 0           @ invalidate I & D TLBs
        ldr     pc, [sp], #4
 #else
-       mov     pc, lr
+       ret     lr
 #endif
 
 /*
@@ -157,7 +157,7 @@ ENTRY(cpu_sa110_set_pte_ext)
        mcr     p15, 0, r0, c7, c10, 1          @ clean D entry
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
 #endif
-       mov     pc, lr
+       ret     lr
 
        .type   __sa110_setup, #function
 __sa110_setup:
@@ -173,7 +173,7 @@ __sa110_setup:
        mrc     p15, 0, r0, c1, c0              @ get control register v4
        bic     r0, r0, r5
        orr     r0, r0, r6
-       mov     pc, lr
+       ret     lr
        .size   __sa110_setup, . - __sa110_setup
 
        /*
index 09d241ae2dbe07620c5c86a7b8303d7a38619f89..89f97ac648a9d55d79c6668fb3ea43f492d307e9 100644 (file)
@@ -43,7 +43,7 @@ ENTRY(cpu_sa1100_proc_init)
        mov     r0, #0
        mcr     p15, 0, r0, c15, c1, 2          @ Enable clock switching
        mcr     p15, 0, r0, c9, c0, 5           @ Allow read-buffer operations from userland
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_sa1100_proc_fin()
@@ -58,7 +58,7 @@ ENTRY(cpu_sa1100_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x000e                 @ ............wca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_sa1100_reset(loc)
@@ -82,7 +82,7 @@ ENTRY(cpu_sa1100_reset)
        bic     ip, ip, #0x000f                 @ ............wcam
        bic     ip, ip, #0x1100                 @ ...i...s........
        mcr     p15, 0, ip, c1, c0, 0           @ ctrl register
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_sa1100_reset)
        .popsection
 
@@ -113,7 +113,7 @@ ENTRY(cpu_sa1100_do_idle)
        mcr     p15, 0, r0, c15, c8, 2          @ wait for interrupt
        mov     r0, r0                          @ safety
        mcr     p15, 0, r0, c15, c1, 2          @ enable clock switching
-       mov     pc, lr
+       ret     lr
 
 /* ================================= CACHE ================================ */
 
@@ -131,7 +131,7 @@ ENTRY(cpu_sa1100_dcache_clean_area)
        add     r0, r0, #DCACHELINESIZE
        subs    r1, r1, #DCACHELINESIZE
        bhi     1b
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -152,7 +152,7 @@ ENTRY(cpu_sa1100_switch_mm)
        mcr     p15, 0, ip, c8, c7, 0           @ invalidate I & D TLBs
        ldr     pc, [sp], #4
 #else
-       mov     pc, lr
+       ret     lr
 #endif
 
 /*
@@ -168,7 +168,7 @@ ENTRY(cpu_sa1100_set_pte_ext)
        mcr     p15, 0, r0, c7, c10, 1          @ clean D entry
        mcr     p15, 0, r0, c7, c10, 4          @ drain WB
 #endif
-       mov     pc, lr
+       ret     lr
 
 .globl cpu_sa1100_suspend_size
 .equ   cpu_sa1100_suspend_size, 4 * 3
@@ -211,7 +211,7 @@ __sa1100_setup:
        mrc     p15, 0, r0, c1, c0              @ get control register v4
        bic     r0, r0, r5
        orr     r0, r0, r6
-       mov     pc, lr
+       ret     lr
        .size   __sa1100_setup, . - __sa1100_setup
 
        /*
index 32b3558321c40db0d31e6898ad3ea329e049bca4..d0390f4b3f1893b152ee2dcea17f60e4031e279d 100644 (file)
 #define PMD_FLAGS_SMP  PMD_SECT_WBWA|PMD_SECT_S
 
 ENTRY(cpu_v6_proc_init)
-       mov     pc, lr
+       ret     lr
 
 ENTRY(cpu_v6_proc_fin)
        mrc     p15, 0, r0, c1, c0, 0           @ ctrl register
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x0006                 @ .............ca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  *     cpu_v6_reset(loc)
@@ -62,7 +62,7 @@ ENTRY(cpu_v6_reset)
        mcr     p15, 0, r1, c1, c0, 0           @ disable MMU
        mov     r1, #0
        mcr     p15, 0, r1, c7, c5, 4           @ ISB
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_v6_reset)
        .popsection
 
@@ -77,14 +77,14 @@ ENTRY(cpu_v6_do_idle)
        mov     r1, #0
        mcr     p15, 0, r1, c7, c10, 4          @ DWB - WFI may enter a low-power mode
        mcr     p15, 0, r1, c7, c0, 4           @ wait for interrupt
-       mov     pc, lr
+       ret     lr
 
 ENTRY(cpu_v6_dcache_clean_area)
 1:     mcr     p15, 0, r0, c7, c10, 1          @ clean D entry
        add     r0, r0, #D_CACHE_LINE_SIZE
        subs    r1, r1, #D_CACHE_LINE_SIZE
        bhi     1b
-       mov     pc, lr
+       ret     lr
 
 /*
  *     cpu_v6_switch_mm(pgd_phys, tsk)
@@ -113,7 +113,7 @@ ENTRY(cpu_v6_switch_mm)
 #endif
        mcr     p15, 0, r1, c13, c0, 1          @ set context ID
 #endif
-       mov     pc, lr
+       ret     lr
 
 /*
  *     cpu_v6_set_pte_ext(ptep, pte, ext)
@@ -131,7 +131,7 @@ ENTRY(cpu_v6_set_pte_ext)
 #ifdef CONFIG_MMU
        armv6_set_pte_ext cpu_v6
 #endif
-       mov     pc, lr
+       ret     lr
 
 /* Suspend/resume support: taken from arch/arm/mach-s3c64xx/sleep.S */
 .globl cpu_v6_suspend_size
@@ -241,7 +241,7 @@ __v6_setup:
        mcreq   p15, 0, r5, c1, c0, 1           @ write aux control reg
        orreq   r0, r0, #(1 << 21)              @ low interrupt latency configuration
 #endif
-       mov     pc, lr                          @ return to head.S:__ret
+       ret     lr                              @ return to head.S:__ret
 
        /*
         *         V X F   I D LR
index 1f52915f2b28392e85d83830ada6af96f4a03988..ed448d8a596b729f1789abff59ddb94fda053c6a 100644 (file)
@@ -59,7 +59,7 @@ ENTRY(cpu_v7_switch_mm)
        mcr     p15, 0, r0, c2, c0, 0           @ set TTB 0
        isb
 #endif
-       mov     pc, lr
+       bx      lr
 ENDPROC(cpu_v7_switch_mm)
 
 /*
@@ -106,7 +106,7 @@ ENTRY(cpu_v7_set_pte_ext)
        ALT_SMP(W(nop))
        ALT_UP (mcr     p15, 0, r0, c7, c10, 1)         @ flush_pte
 #endif
-       mov     pc, lr
+       bx      lr
 ENDPROC(cpu_v7_set_pte_ext)
 
        /*
index 22e3ad63500c0e79f4eaf54555ca6c7aa13c57ff..564f4b934ceb96fac160b36305fc8e501fd0a71d 100644 (file)
@@ -19,6 +19,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
+#include <asm/assembler.h>
 
 #define TTB_IRGN_NC    (0 << 8)
 #define TTB_IRGN_WBWA  (1 << 8)
@@ -61,7 +62,7 @@ ENTRY(cpu_v7_switch_mm)
        mcrr    p15, 0, rpgdl, rpgdh, c2                @ set TTB 0
        isb
 #endif
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7_switch_mm)
 
 #ifdef __ARMEB__
@@ -92,7 +93,7 @@ ENTRY(cpu_v7_set_pte_ext)
        ALT_SMP(W(nop))
        ALT_UP (mcr     p15, 0, r0, c7, c10, 1)         @ flush_pte
 #endif
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7_set_pte_ext)
 
        /*
index 3db2c2f04a303711e3c154a0ea2ebb5a3c17faa2..71abb60c42225187e85a91be7f57915baf8b7fdf 100644 (file)
@@ -26,7 +26,7 @@
 #endif
 
 ENTRY(cpu_v7_proc_init)
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7_proc_init)
 
 ENTRY(cpu_v7_proc_fin)
@@ -34,7 +34,7 @@ ENTRY(cpu_v7_proc_fin)
        bic     r0, r0, #0x1000                 @ ...i............
        bic     r0, r0, #0x0006                 @ .............ca.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7_proc_fin)
 
 /*
@@ -71,20 +71,20 @@ ENDPROC(cpu_v7_reset)
 ENTRY(cpu_v7_do_idle)
        dsb                                     @ WFI may enter a low-power mode
        wfi
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7_do_idle)
 
 ENTRY(cpu_v7_dcache_clean_area)
        ALT_SMP(W(nop))                 @ MP extensions imply L1 PTW
        ALT_UP_B(1f)
-       mov     pc, lr
+       ret     lr
 1:     dcache_line_size r2, r3
 2:     mcr     p15, 0, r0, c7, c10, 1          @ clean D entry
        add     r0, r0, r2
        subs    r1, r1, r2
        bhi     2b
        dsb     ishst
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7_dcache_clean_area)
 
        string  cpu_v7_name, "ARMv7 Processor"
@@ -163,7 +163,7 @@ ENTRY(cpu_pj4b_do_idle)
        dsb                                     @ WFI may enter a low-power mode
        wfi
        dsb                                     @barrier
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_pj4b_do_idle)
 #else
        globl_equ       cpu_pj4b_do_idle,       cpu_v7_do_idle
@@ -407,7 +407,7 @@ __v7_setup:
        bic     r0, r0, r5                      @ clear bits them
        orr     r0, r0, r6                      @ set them
  THUMB(        orr     r0, r0, #1 << 30        )       @ Thumb exceptions
-       mov     pc, lr                          @ return to head.S:__ret
+       ret     lr                              @ return to head.S:__ret
 ENDPROC(__v7_setup)
 
        .align  2
index 1ca37c72f12fb88934257db8356853b02c350f5f..d1e68b553d3b4e6cfbae0d003be88e9786c7e3bc 100644 (file)
 #include "proc-macros.S"
 
 ENTRY(cpu_v7m_proc_init)
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7m_proc_init)
 
 ENTRY(cpu_v7m_proc_fin)
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7m_proc_fin)
 
 /*
@@ -34,7 +34,7 @@ ENDPROC(cpu_v7m_proc_fin)
  */
        .align  5
 ENTRY(cpu_v7m_reset)
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_v7m_reset)
 
 /*
@@ -46,18 +46,18 @@ ENDPROC(cpu_v7m_reset)
  */
 ENTRY(cpu_v7m_do_idle)
        wfi
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7m_do_idle)
 
 ENTRY(cpu_v7m_dcache_clean_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7m_dcache_clean_area)
 
 /*
  * There is no MMU, so here is nothing to do.
  */
 ENTRY(cpu_v7m_switch_mm)
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7m_switch_mm)
 
 .globl cpu_v7m_suspend_size
@@ -65,11 +65,11 @@ ENDPROC(cpu_v7m_switch_mm)
 
 #ifdef CONFIG_ARM_CPU_SUSPEND
 ENTRY(cpu_v7m_do_suspend)
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7m_do_suspend)
 
 ENTRY(cpu_v7m_do_resume)
-       mov     pc, lr
+       ret     lr
 ENDPROC(cpu_v7m_do_resume)
 #endif
 
@@ -120,7 +120,7 @@ __v7m_setup:
        ldr     r12, [r0, V7M_SCB_CCR]  @ system control register
        orr     r12, #V7M_SCB_CCR_STKALIGN
        str     r12, [r0, V7M_SCB_CCR]
-       mov     pc, lr
+       ret     lr
 ENDPROC(__v7m_setup)
 
        .align 2
index dc1645890042dd4bac11cdb4a2fdb83afb1dd752..f8acdfece0363bb02516705af407fff89287b0b7 100644 (file)
@@ -83,7 +83,7 @@
  * Nothing too exciting at the moment
  */
 ENTRY(cpu_xsc3_proc_init)
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_xsc3_proc_fin()
@@ -93,7 +93,7 @@ ENTRY(cpu_xsc3_proc_fin)
        bic     r0, r0, #0x1800                 @ ...IZ...........
        bic     r0, r0, #0x0006                 @ .............CA.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_xsc3_reset(loc)
@@ -119,7 +119,7 @@ ENTRY(cpu_xsc3_reset)
        @ CAUTION: MMU turned off from this point.  We count on the pipeline
        @ already containing those two last instructions to survive.
        mcr     p15, 0, ip, c8, c7, 0           @ invalidate I and D TLBs
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_xsc3_reset)
        .popsection
 
@@ -138,7 +138,7 @@ ENDPROC(cpu_xsc3_reset)
 ENTRY(cpu_xsc3_do_idle)
        mov     r0, #1
        mcr     p14, 0, r0, c7, c0, 0           @ go to idle
-       mov     pc, lr
+       ret     lr
 
 /* ================================= CACHE ================================ */
 
@@ -150,7 +150,7 @@ ENTRY(cpu_xsc3_do_idle)
 ENTRY(xsc3_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(xsc3_flush_icache_all)
 
 /*
@@ -176,7 +176,7 @@ __flush_whole_cache:
        mcrne   p15, 0, ip, c7, c5, 0           @ invalidate L1 I cache and BTB
        mcrne   p15, 0, ip, c7, c10, 4          @ data write barrier
        mcrne   p15, 0, ip, c7, c5, 4           @ prefetch flush
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, vm_flags)
@@ -205,7 +205,7 @@ ENTRY(xsc3_flush_user_cache_range)
        mcrne   p15, 0, ip, c7, c5, 6           @ invalidate BTB
        mcrne   p15, 0, ip, c7, c10, 4          @ data write barrier
        mcrne   p15, 0, ip, c7, c5, 4           @ prefetch flush
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -232,7 +232,7 @@ ENTRY(xsc3_coherent_user_range)
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate L1 I cache and BTB
        mcr     p15, 0, r0, c7, c10, 4          @ data write barrier
        mcr     p15, 0, r0, c7, c5, 4           @ prefetch flush
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -253,7 +253,7 @@ ENTRY(xsc3_flush_kern_dcache_area)
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate L1 I cache and BTB
        mcr     p15, 0, r0, c7, c10, 4          @ data write barrier
        mcr     p15, 0, r0, c7, c5, 4           @ prefetch flush
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -277,7 +277,7 @@ xsc3_dma_inv_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ data write barrier
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -294,7 +294,7 @@ xsc3_dma_clean_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ data write barrier
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -311,7 +311,7 @@ ENTRY(xsc3_dma_flush_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ data write barrier
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -334,7 +334,7 @@ ENDPROC(xsc3_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(xsc3_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(xsc3_dma_unmap_area)
 
        .globl  xsc3_flush_kern_cache_louis
@@ -348,7 +348,7 @@ ENTRY(cpu_xsc3_dcache_clean_area)
        add     r0, r0, #CACHELINESIZE
        subs    r1, r1, #CACHELINESIZE
        bhi     1b
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -406,7 +406,7 @@ ENTRY(cpu_xsc3_set_pte_ext)
        orr     r2, r2, ip
 
        xscale_set_pte_ext_epilogue
-       mov     pc, lr
+       ret     lr
 
        .ltorg
        .align
@@ -478,7 +478,7 @@ __xsc3_setup:
        bic     r0, r0, r5                      @ ..V. ..R. .... ..A.
        orr     r0, r0, r6                      @ ..VI Z..S .... .C.M (mmu)
                                                @ ...I Z..S .... .... (uc)
-       mov     pc, lr
+       ret     lr
 
        .size   __xsc3_setup, . - __xsc3_setup
 
index d19b1cfcad91e69934945d180c404298c33c2287..23259f104c66fd367d4663cbd4adafd240ffa50d 100644 (file)
@@ -118,7 +118,7 @@ ENTRY(cpu_xscale_proc_init)
        mrc     p15, 0, r1, c1, c0, 1
        bic     r1, r1, #1
        mcr     p15, 0, r1, c1, c0, 1
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_xscale_proc_fin()
@@ -128,7 +128,7 @@ ENTRY(cpu_xscale_proc_fin)
        bic     r0, r0, #0x1800                 @ ...IZ...........
        bic     r0, r0, #0x0006                 @ .............CA.
        mcr     p15, 0, r0, c1, c0, 0           @ disable caches
-       mov     pc, lr
+       ret     lr
 
 /*
  * cpu_xscale_reset(loc)
@@ -160,7 +160,7 @@ ENTRY(cpu_xscale_reset)
        @ CAUTION: MMU turned off from this point. We count on the pipeline
        @ already containing those two last instructions to survive.
        mcr     p15, 0, ip, c8, c7, 0           @ invalidate I & D TLBs
-       mov     pc, r0
+       ret     r0
 ENDPROC(cpu_xscale_reset)
        .popsection
 
@@ -179,7 +179,7 @@ ENDPROC(cpu_xscale_reset)
 ENTRY(cpu_xscale_do_idle)
        mov     r0, #1
        mcr     p14, 0, r0, c7, c0, 0           @ Go to IDLE
-       mov     pc, lr
+       ret     lr
 
 /* ================================= CACHE ================================ */
 
@@ -191,7 +191,7 @@ ENTRY(cpu_xscale_do_idle)
 ENTRY(xscale_flush_icache_all)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
-       mov     pc, lr
+       ret     lr
 ENDPROC(xscale_flush_icache_all)
 
 /*
@@ -216,7 +216,7 @@ __flush_whole_cache:
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c5, 0           @ Invalidate I cache & BTB
        mcrne   p15, 0, ip, c7, c10, 4          @ Drain Write (& Fill) Buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_user_cache_range(start, end, vm_flags)
@@ -245,7 +245,7 @@ ENTRY(xscale_flush_user_cache_range)
        tst     r2, #VM_EXEC
        mcrne   p15, 0, ip, c7, c5, 6           @ Invalidate BTB
        mcrne   p15, 0, ip, c7, c10, 4          @ Drain Write (& Fill) Buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_kern_range(start, end)
@@ -269,7 +269,7 @@ ENTRY(xscale_coherent_kern_range)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ Invalidate I cache & BTB
        mcr     p15, 0, r0, c7, c10, 4          @ Drain Write (& Fill) Buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     coherent_user_range(start, end)
@@ -291,7 +291,7 @@ ENTRY(xscale_coherent_user_range)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 6           @ Invalidate BTB
        mcr     p15, 0, r0, c7, c10, 4          @ Drain Write (& Fill) Buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     flush_kern_dcache_area(void *addr, size_t size)
@@ -312,7 +312,7 @@ ENTRY(xscale_flush_kern_dcache_area)
        mov     r0, #0
        mcr     p15, 0, r0, c7, c5, 0           @ Invalidate I cache & BTB
        mcr     p15, 0, r0, c7, c10, 4          @ Drain Write (& Fill) Buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_inv_range(start, end)
@@ -336,7 +336,7 @@ xscale_dma_inv_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ Drain Write (& Fill) Buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_clean_range(start, end)
@@ -353,7 +353,7 @@ xscale_dma_clean_range:
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ Drain Write (& Fill) Buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_flush_range(start, end)
@@ -371,7 +371,7 @@ ENTRY(xscale_dma_flush_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r0, c7, c10, 4          @ Drain Write (& Fill) Buffer
-       mov     pc, lr
+       ret     lr
 
 /*
  *     dma_map_area(start, size, dir)
@@ -407,7 +407,7 @@ ENDPROC(xscale_80200_A0_A1_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(xscale_dma_unmap_area)
-       mov     pc, lr
+       ret     lr
 ENDPROC(xscale_dma_unmap_area)
 
        .globl  xscale_flush_kern_cache_louis
@@ -458,7 +458,7 @@ ENTRY(cpu_xscale_dcache_clean_area)
        add     r0, r0, #CACHELINESIZE
        subs    r1, r1, #CACHELINESIZE
        bhi     1b
-       mov     pc, lr
+       ret     lr
 
 /* =============================== PageTable ============================== */
 
@@ -521,7 +521,7 @@ ENTRY(cpu_xscale_set_pte_ext)
        orr     r2, r2, ip
 
        xscale_set_pte_ext_epilogue
-       mov     pc, lr
+       ret     lr
 
        .ltorg
        .align
@@ -572,7 +572,7 @@ __xscale_setup:
        mrc     p15, 0, r0, c1, c0, 0           @ get control register
        bic     r0, r0, r5
        orr     r0, r0, r6
-       mov     pc, lr
+       ret     lr
        .size   __xscale_setup, . - __xscale_setup
 
        /*
index d3ddcf9a76ca449c0a81d71639879cce6bd10689..d2d9ecbe0aacdf2514d3e4279962344fc5513228 100644 (file)
@@ -18,6 +18,7 @@
  */
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/assembler.h>
 #include <asm/asm-offsets.h>
 #include <asm/tlbflush.h>
 #include "proc-macros.S"
@@ -37,7 +38,7 @@ ENTRY(fa_flush_user_tlb_range)
        vma_vm_mm ip, r2
        act_mm  r3                              @ get current->active_mm
        eors    r3, ip, r3                      @ == mm ?
-       movne   pc, lr                          @ no, we dont do anything
+       retne   lr                              @ no, we dont do anything
        mov     r3, #0
        mcr     p15, 0, r3, c7, c10, 4          @ drain WB
        bic     r0, r0, #0x0ff
@@ -47,7 +48,7 @@ ENTRY(fa_flush_user_tlb_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, r3, c7, c10, 4          @ data write barrier
-       mov     pc, lr
+       ret     lr
 
 
 ENTRY(fa_flush_kern_tlb_range)
@@ -61,7 +62,7 @@ ENTRY(fa_flush_kern_tlb_range)
        blo     1b
        mcr     p15, 0, r3, c7, c10, 4          @ data write barrier
        mcr     p15, 0, r3, c7, c5, 4           @ prefetch flush (isb)
-       mov     pc, lr
+       ret     lr
 
        __INITDATA
 
index 17a025ade5733c39d0be6c01f7e6db9cf2ad4445..a2b5dca42048d28743041e00fc670193f5d05e02 100644 (file)
@@ -14,6 +14,7 @@
  */
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/assembler.h>
 #include <asm/asm-offsets.h>
 #include <asm/tlbflush.h>
 #include "proc-macros.S"
@@ -33,7 +34,7 @@ ENTRY(v4_flush_user_tlb_range)
        vma_vm_mm ip, r2
        act_mm  r3                              @ get current->active_mm
        eors    r3, ip, r3                              @ == mm ?
-       movne   pc, lr                          @ no, we dont do anything
+       retne   lr                              @ no, we dont do anything
 .v4_flush_kern_tlb_range:
        bic     r0, r0, #0x0ff
        bic     r0, r0, #0xf00
@@ -41,7 +42,7 @@ ENTRY(v4_flush_user_tlb_range)
        add     r0, r0, #PAGE_SZ
        cmp     r0, r1
        blo     1b
-       mov     pc, lr
+       ret     lr
 
 /*
  *     v4_flush_kern_tlb_range(start, end)
index c04598fa4d4aaa4043274381b36e65fb799990cf..5a093b458dbc2d7180803852a5182a2e01d385c4 100644 (file)
@@ -14,6 +14,7 @@
  */
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/assembler.h>
 #include <asm/asm-offsets.h>
 #include <asm/tlbflush.h>
 #include "proc-macros.S"
@@ -33,7 +34,7 @@ ENTRY(v4wb_flush_user_tlb_range)
        vma_vm_mm ip, r2
        act_mm  r3                              @ get current->active_mm
        eors    r3, ip, r3                              @ == mm ?
-       movne   pc, lr                          @ no, we dont do anything
+       retne   lr                              @ no, we dont do anything
        vma_vm_flags r2, r2
        mcr     p15, 0, r3, c7, c10, 4          @ drain WB
        tst     r2, #VM_EXEC
@@ -44,7 +45,7 @@ ENTRY(v4wb_flush_user_tlb_range)
        add     r0, r0, #PAGE_SZ
        cmp     r0, r1
        blo     1b
-       mov     pc, lr
+       ret     lr
 
 /*
  *     v4_flush_kern_tlb_range(start, end)
@@ -65,7 +66,7 @@ ENTRY(v4wb_flush_kern_tlb_range)
        add     r0, r0, #PAGE_SZ
        cmp     r0, r1
        blo     1b
-       mov     pc, lr
+       ret     lr
 
        __INITDATA
 
index 1f6062b6c1c170c9a5e1ab3f482ca16843637a98..058861548f6808e3621544ad941c44678d13755d 100644 (file)
@@ -14,6 +14,7 @@
  */
 #include <linux/linkage.h>
 #include <linux/init.h>
+#include <asm/assembler.h>
 #include <asm/asm-offsets.h>
 #include <asm/tlbflush.h>
 #include "proc-macros.S"
@@ -32,7 +33,7 @@ ENTRY(v4wbi_flush_user_tlb_range)
        vma_vm_mm ip, r2
        act_mm  r3                              @ get current->active_mm
        eors    r3, ip, r3                      @ == mm ?
-       movne   pc, lr                          @ no, we dont do anything
+       retne   lr                              @ no, we dont do anything
        mov     r3, #0
        mcr     p15, 0, r3, c7, c10, 4          @ drain WB
        vma_vm_flags r2, r2
@@ -44,7 +45,7 @@ ENTRY(v4wbi_flush_user_tlb_range)
        add     r0, r0, #PAGE_SZ
        cmp     r0, r1
        blo     1b
-       mov     pc, lr
+       ret     lr
 
 ENTRY(v4wbi_flush_kern_tlb_range)
        mov     r3, #0
@@ -56,7 +57,7 @@ ENTRY(v4wbi_flush_kern_tlb_range)
        add     r0, r0, #PAGE_SZ
        cmp     r0, r1
        blo     1b
-       mov     pc, lr
+       ret     lr
 
        __INITDATA
 
index eca07f550a0b0310fcdd11035b9344f23256cfae..6f689be638bd47dd3f27b23eec9a669a40e2eeec 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/init.h>
 #include <linux/linkage.h>
 #include <asm/asm-offsets.h>
+#include <asm/assembler.h>
 #include <asm/page.h>
 #include <asm/tlbflush.h>
 #include "proc-macros.S"
@@ -55,7 +56,7 @@ ENTRY(v6wbi_flush_user_tlb_range)
        cmp     r0, r1
        blo     1b
        mcr     p15, 0, ip, c7, c10, 4          @ data synchronization barrier
-       mov     pc, lr
+       ret     lr
 
 /*
  *     v6wbi_flush_kern_tlb_range(start,end)
@@ -84,7 +85,7 @@ ENTRY(v6wbi_flush_kern_tlb_range)
        blo     1b
        mcr     p15, 0, r2, c7, c10, 4          @ data synchronization barrier
        mcr     p15, 0, r2, c7, c5, 4           @ prefetch flush (isb)
-       mov     pc, lr
+       ret     lr
 
        __INIT
 
index 355308767bae69bf29044d4c85ef30ec3a03b56b..e5101a3bc57ca7b0e949360cb1a853d8c0f91b6c 100644 (file)
@@ -57,7 +57,7 @@ ENTRY(v7wbi_flush_user_tlb_range)
        cmp     r0, r1
        blo     1b
        dsb     ish
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7wbi_flush_user_tlb_range)
 
 /*
@@ -86,7 +86,7 @@ ENTRY(v7wbi_flush_kern_tlb_range)
        blo     1b
        dsb     ish
        isb
-       mov     pc, lr
+       ret     lr
 ENDPROC(v7wbi_flush_kern_tlb_range)
 
        __INIT
index d18dde95b8aae6a12dd319e71747ff58dfad8d84..5d65be1f1e8a758b297f142254ad9eeb77146c9d 100644 (file)
@@ -19,7 +19,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
-
+#include <asm/assembler.h>
 #include <asm/opcodes.h>
 
 /* This is the kernel's entry point into the floating point emulator.
@@ -92,7 +92,7 @@ emulate:
        mov     r0, r6                  @ prepare for EmulateAll()
        bl      EmulateAll              @ emulate the instruction
        cmp     r0, #0                  @ was emulation successful
-       moveq   pc, r4                  @ no, return failure
+       reteq   r4                      @ no, return failure
 
 next:
 .Lx1:  ldrt    r6, [r5], #4            @ get the next instruction and
@@ -102,7 +102,7 @@ next:
        teq     r2, #0x0C000000
        teqne   r2, #0x0D000000
        teqne   r2, #0x0E000000
-       movne   pc, r9                  @ return ok if not a fp insn
+       retne   r9                      @ return ok if not a fp insn
 
        str     r5, [sp, #S_PC]         @ update PC copy in regs
 
@@ -115,7 +115,7 @@ next:
        @ plain LDR instruction.  Weird, but it seems harmless.
        .pushsection .fixup,"ax"
        .align  2
-.Lfix: mov     pc, r9                  @ let the user eat segfaults
+.Lfix: ret     r9                      @ let the user eat segfaults
        .popsection
 
        .pushsection __ex_table,"a"
index fe6ca574d0931dc93d5114f2995ae553e769242b..2e78760f3495d900abf3d4d855197dc5164196f1 100644 (file)
@@ -34,7 +34,7 @@ ENDPROC(do_vfp)
 
 ENTRY(vfp_null_entry)
        dec_preempt_count_ti r10, r4
-       mov     pc, lr
+       ret     lr
 ENDPROC(vfp_null_entry)
 
        .align  2
@@ -49,7 +49,7 @@ ENTRY(vfp_testing_entry)
        dec_preempt_count_ti r10, r4
        ldr     r0, VFP_arch_address
        str     r0, [r0]                @ set to non-zero value
-       mov     pc, r9                  @ we have handled the fault
+       ret     r9                      @ we have handled the fault
 ENDPROC(vfp_testing_entry)
 
        .align  2
index be807625ed8c23dead72282fc9ff5b9babbfe1f6..cda654cbf2c289638da7a6da28b685345ffbf0c4 100644 (file)
@@ -183,7 +183,7 @@ vfp_hw_state_valid:
                                        @ always subtract 4 from the following
                                        @ instruction address.
        dec_preempt_count_ti r10, r4
-       mov     pc, r9                  @ we think we have handled things
+       ret     r9                      @ we think we have handled things
 
 
 look_for_VFP_exceptions:
@@ -202,7 +202,7 @@ look_for_VFP_exceptions:
 
        DBGSTR  "not VFP"
        dec_preempt_count_ti r10, r4
-       mov     pc, lr
+       ret     lr
 
 process_exception:
        DBGSTR  "bounce"
@@ -234,7 +234,7 @@ ENTRY(vfp_save_state)
        VFPFMRX r12, FPINST2            @ FPINST2 if needed (and present)
 1:
        stmia   r0, {r1, r2, r3, r12}   @ save FPEXC, FPSCR, FPINST, FPINST2
-       mov     pc, lr
+       ret     lr
 ENDPROC(vfp_save_state)
 
        .align
@@ -245,7 +245,7 @@ vfp_current_hw_state_address:
 #ifdef CONFIG_THUMB2_KERNEL
        adr     \tmp, 1f
        add     \tmp, \tmp, \base, lsl \shift
-       mov     pc, \tmp
+       ret     \tmp
 #else
        add     pc, pc, \base, lsl \shift
        mov     r0, r0
@@ -257,10 +257,10 @@ ENTRY(vfp_get_float)
        tbl_branch r0, r3, #3
        .irp    dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
 1:     mrc     p10, 0, r0, c\dr, c0, 0 @ fmrs  r0, s0
-       mov     pc, lr
+       ret     lr
        .org    1b + 8
 1:     mrc     p10, 0, r0, c\dr, c0, 4 @ fmrs  r0, s1
-       mov     pc, lr
+       ret     lr
        .org    1b + 8
        .endr
 ENDPROC(vfp_get_float)
@@ -269,10 +269,10 @@ ENTRY(vfp_put_float)
        tbl_branch r1, r3, #3
        .irp    dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
 1:     mcr     p10, 0, r0, c\dr, c0, 0 @ fmsr  r0, s0
-       mov     pc, lr
+       ret     lr
        .org    1b + 8
 1:     mcr     p10, 0, r0, c\dr, c0, 4 @ fmsr  r0, s1
-       mov     pc, lr
+       ret     lr
        .org    1b + 8
        .endr
 ENDPROC(vfp_put_float)
@@ -281,14 +281,14 @@ ENTRY(vfp_get_double)
        tbl_branch r0, r3, #3
        .irp    dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
 1:     fmrrd   r0, r1, d\dr
-       mov     pc, lr
+       ret     lr
        .org    1b + 8
        .endr
 #ifdef CONFIG_VFPv3
        @ d16 - d31 registers
        .irp    dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
 1:     mrrc    p11, 3, r0, r1, c\dr    @ fmrrd r0, r1, d\dr
-       mov     pc, lr
+       ret     lr
        .org    1b + 8
        .endr
 #endif
@@ -296,21 +296,21 @@ ENTRY(vfp_get_double)
        @ virtual register 16 (or 32 if VFPv3) for compare with zero
        mov     r0, #0
        mov     r1, #0
-       mov     pc, lr
+       ret     lr
 ENDPROC(vfp_get_double)
 
 ENTRY(vfp_put_double)
        tbl_branch r2, r3, #3
        .irp    dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
 1:     fmdrr   d\dr, r0, r1
-       mov     pc, lr
+       ret     lr
        .org    1b + 8
        .endr
 #ifdef CONFIG_VFPv3
        @ d16 - d31 registers
        .irp    dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
 1:     mcrr    p11, 3, r0, r1, c\dr    @ fmdrr r0, r1, d\dr
-       mov     pc, lr
+       ret     lr
        .org    1b + 8
        .endr
 #endif
index 44e3a5f10c4cda982d1170a79c84303570e17bdc..f00e080759384afd300398be488c5740f55f1091 100644