linux/arch/arm/mach-shmobile
Russell King 6ebbf2ce43 ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+
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>
2014-07-18 12:29:04 +01:00
..
include/mach ARM: SoC board support updates for 3.16 2014-06-02 16:21:41 -07:00
board-ape6evm-reference.c ARM: shmobile: Rename to r8a73a4_init_early() 2013-09-19 14:33:44 -07:00
board-ape6evm.c ARM: shmobile: ape6evm: don't use named resource for SDHI 2013-11-24 15:14:29 +09:00
board-armadillo800eva-reference.c Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into next 2014-06-05 15:57:04 -07:00
board-armadillo800eva.c pwm: Changes for v3.16-rc1 2014-06-11 14:06:55 -07:00
board-bockw-reference.c ARM: SoC board updates for 3.14 2014-01-23 18:48:28 -08:00
board-bockw.c ARM: shmobile: bockw: switch to use dai info for R-Car sound 2014-04-14 12:50:19 +09:00
board-genmai-reference.c ARM: shmobile: Let Genmai multiplatform boot with Genmai DTB 2014-05-17 09:06:19 +09:00
board-genmai.c ARM: shmobile: r7s72100: genmai: platform scif devices only for legacy support 2014-05-14 11:42:52 +09:00
board-koelsch-reference.c ARM: SoC board support updates for 3.16 2014-06-02 16:21:41 -07:00
board-koelsch.c ARM: SoC board support updates for 3.16 2014-06-02 16:21:41 -07:00
board-kzm9g-reference.c ARM: l2c: shmobile: remove cache size override 2014-05-30 00:50:02 +01:00
board-kzm9g.c ARM: l2c: shmobile: remove cache size override 2014-05-30 00:50:02 +01:00
board-lager-reference.c ARM: shmobile: lager: Enable SCIF0 and SCIF1 serial ports in DT 2014-05-14 09:56:35 +09:00
board-lager.c Renesas ARM Based SoC Boards Updates for v3.16 2014-05-05 14:14:29 -07:00
board-mackerel.c ASoC: fsi: fixup compile error for simple-card 2014-03-17 13:20:11 +00:00
board-marzen-reference.c ARM: shmobile: marzen: enable INTC IRQ 2013-10-08 10:02:22 +09:00
board-marzen.c Renesas ARM based SoC DT updates for v3.14 2013-12-20 12:17:18 -08:00
clock-r7s72100.c ARM: shmobile: r7s72100: remove SPI DT clocks from legacy clock support 2014-05-14 11:42:54 +09:00
clock-r8a73a4.c ARM: shmobile: r8a73a4: Switch to new style CMT device 2014-05-11 19:35:27 +09:00
clock-r8a7740.c ARM: SoC board support updates for 3.16 2014-06-02 16:21:41 -07:00
clock-r8a7778.c Renesas SoC Clock Cleanups for v3.16 2014-05-21 14:05:58 -07:00
clock-r8a7779.c ARM: shmobile: r8a7779: Switch to new style TMU device 2014-05-11 19:35:28 +09:00
clock-r8a7790.c ARM: shmobile: r8a7790: Switch to new style CMT device 2014-05-11 19:35:27 +09:00
clock-r8a7791.c ARM: shmobile: r8a7791: Switch to new style CMT device 2014-05-11 19:35:27 +09:00
clock-sh73a0.c ARM: shmobile: sh73a0: Switch to new style TMU device 2014-05-11 19:35:28 +09:00
clock-sh7372.c ARM: shmobile: sh7372: Switch to new style TMU device 2014-05-11 19:35:28 +09:00
clock.c ARM: shmobile: Introduce shmobile_clk_workaround() 2014-04-14 11:30:11 +09:00
console.c
cpuidle.c ARM: shmobile: cpuidle: use init/exit common routine 2013-04-23 13:45:22 +02:00
entry-intc.S
headsmp-scu.S Merge tag 'renesas-soc2-for-v3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/soc 2013-08-14 11:09:47 -07:00
headsmp.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
intc-sh73a0.c
intc-sh7372.c
Kconfig ARM: use menuconfig for sub-arch menus 2014-06-17 17:09:48 +02:00
Makefile ARM: SoC board support updates for 3.16 2014-06-02 16:21:41 -07:00
Makefile.boot ARM: shmobile: Remove non-multiplatform Genmai reference support 2014-05-17 09:06:04 +09:00
platsmp-apmu.c ARM: shmobile: APMU: Fix warnings due to improper printk formats 2014-03-06 13:14:03 +09:00
platsmp-scu.c ARM: shmobile: Remove shmobile_smp_scu_boot_secondary() 2013-09-30 17:56:10 +09:00
platsmp.c ARM: shmobile: Remove unused shmobile_smp_init_cpus() 2013-09-20 17:47:31 -07:00
pm-r8a7740.c
pm-r8a7779.c ARM: shmobile: Break out R-Car SYSC PM code 2014-02-24 08:55:46 +09:00
pm-r8a7790.c ARM: shmobile: r8a7790 SYSC setup code 2014-02-24 08:55:46 +09:00
pm-rcar.c ARM: shmobile: Move SYSC base variable to inside ifdefs 2014-02-26 14:53:35 +09:00
pm-rmobile.c ARM: shmobile: Ignore callbacks for subsys generic_pm_domain_data 2014-04-25 10:01:43 +09:00
pm-sh73a0.c
pm-sh7372.c ARM: shmobile: Rework sh7372 sleep code to use virt_to_phys() 2013-06-17 16:06:47 +09:00
setup-emev2.c ARM: shmobile: Remove EMEV2 header file 2014-04-14 11:28:23 +09:00
setup-r7s72100.c ARM: shmobile: r7s72100: genmai: platform scif devices only for legacy support 2014-05-14 11:42:52 +09:00
setup-r8a73a4.c ARM: shmobile: r8a73a4: Switch to new style CMT device 2014-05-11 19:35:27 +09:00
setup-r8a7740.c ARM: SoC board support updates for 3.16 2014-06-02 16:21:41 -07:00
setup-r8a7778.c Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into next 2014-06-05 15:57:04 -07:00
setup-r8a7779.c Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into next 2014-06-05 15:57:04 -07:00
setup-r8a7790.c ARM: SoC board support updates for 3.16 2014-06-02 16:21:41 -07:00
setup-r8a7791.c ARM: SoC board support updates for 3.16 2014-06-02 16:21:41 -07:00
setup-rcar-gen2.c ARM: shmobile: rcar-gen2: Cache Mode Monitor Register Value 2014-04-14 11:28:42 +09:00
setup-sh73a0.c ARM: shmobile: sh73a0: Switch to new style TMU device 2014-05-11 19:35:28 +09:00
setup-sh7372.c ARM: SoC board support updates for 3.16 2014-06-02 16:21:41 -07:00
sh-gpio.h ARM: shmobile: mackerel: Use pinconf API to configure pin pull-down 2013-12-10 17:24:49 +09:00
sleep-sh7372.S ARM: shmobile: Insert align directives before 4 bytes data 2013-07-18 08:35:21 +09:00
smp-emev2.c ARM: shmobile: Remove EMEV2 header file 2014-04-14 11:28:23 +09:00
smp-r8a7779.c ARM: shmobile: Break out R-Car SYSC PM code 2014-02-24 08:55:46 +09:00
smp-r8a7790.c ARM: shmobile: r8a7790 CA15-SCU enablement 2014-02-24 08:55:47 +09:00
smp-r8a7791.c ARM: shmobile: Check r8a7791 MD21 at SMP boot 2014-04-14 11:28:43 +09:00
smp-sh73a0.c ARM: shmobile: Let sh73a0 rely on SCU CPU notifier 2013-09-30 17:56:09 +09:00
suspend.c arm: Use generic idle loop 2013-04-08 17:39:24 +02:00
timer.c ARM: shmobile: Set clock frequency in HZ from OF nodes 2014-05-14 14:02:21 +09:00