linux/arch/arm/mach-pxa
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: pxa: hx4700.h: include "irqs.h" for PXA_NR_BUILTIN_GPIO 2014-04-24 15:26:39 +02:00
Kconfig pwm: Changes for v3.15-rc1 2014-04-05 18:32:31 -07:00
Makefile cpufreq: pxa2xx: move cpufreq driver to drivers/cpufreq 2013-04-08 13:02:31 +02:00
Makefile.boot ARM: 7022/1: allow to detect conflicting zreladdrs 2011-10-17 09:12:40 +01:00
am200epd.c ARM: pxa: remove IRQF_DISABLED 2013-12-11 17:32:41 -08:00
am300epd.c ARM: pxa: fix compilation problem on AM300EPD board 2014-02-10 10:32:08 -08:00
balloon3.c ARM: pxa: remove broken balloon3_gpio_vbus reference 2014-03-21 18:26:04 +01:00
capc7117.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
clock-pxa2xx.c ARM: pxa: use common IOMEM definition 2012-03-25 14:36:31 -05:00
clock-pxa3xx.c ARM: pxa: support CKENC in clk_enable 2012-08-16 16:15:44 +08:00
clock.c ARM: pxa: add clk_set_rate() 2011-07-12 19:45:19 +08:00
clock.h ARM: pxa: remove pxa95x support 2012-11-15 13:50:13 +01:00
cm-x2xx-pci.c ARM: PCI: provide a default bus scan implementation 2012-05-13 17:12:17 +01:00
cm-x2xx-pci.h
cm-x2xx.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
cm-x255.c ARM: 7104/1: plat-pxa: break out GPIO driver specifics 2011-10-01 23:45:34 +01:00
cm-x270.c ARM: pxa: move platform_data definitions 2012-09-14 11:18:10 +02:00
cm-x300.c ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
colibri-evalboard.c ARM: pxa: fix colibri build 2014-03-21 18:26:02 +01:00
colibri-pxa3xx.c ARM: pxa: move platform_data definitions 2012-09-14 11:18:10 +02:00
colibri-pxa270-income.c ARM: pxa: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
colibri-pxa270.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
colibri-pxa300.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
colibri-pxa320.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
corgi.c ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
corgi_pm.c ARM: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
csb701.c
csb726.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
devices.c ARM: pxa: remove cpu_is_xxx in gpio driver 2013-04-11 09:59:23 +08:00
devices.h ARM: pxa: remove cpu_is_xxx in gpio driver 2013-04-11 09:59:23 +08:00
em-x270.c ARM: pxa: remove IRQF_DISABLED 2013-12-11 17:32:41 -08:00
eseries.c ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
ezx.c ARM: pxa: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
generic.c Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
generic.h reboot: arm: change reboot_mode to use enum reboot_mode 2013-07-09 10:33:29 -07:00
gumstix.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
h5000.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
himalaya.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
hx4700.c ARM: pxa: hx4700: use PWM_LOOKUP to initialize struct pwm_lookup 2014-05-21 11:19:44 +02:00
icontrol.c can: mcp251x: Replace power callbacks with regulator API 2013-08-21 09:28:29 +02:00
idp.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
irq.c ARM: pxa: Remove unused variables 2013-12-11 17:33:01 -08:00
littleton.c Input: pxa27x-keypad - use matrix_keymap for matrix keys 2013-06-18 22:56:51 -07:00
lpd270.c ARM: pxa: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
lubbock.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
magician.c ARM: pxa: remove IRQF_DISABLED 2013-12-11 17:32:41 -08:00
mainstone.c ARM: pxa: remove IRQF_DISABLED 2013-12-11 17:32:41 -08:00
mfp-pxa2xx.c ARM: PXA2xx: MFP: fix potential direction bug 2012-04-27 11:14:06 +08:00
mfp-pxa3xx.c ARM / PXA: Use struct syscore_ops for "core" power management 2011-04-24 19:16:09 +02:00
mioa701.c ARM: pxa: Add dummy backlight power supply on Mitac Mio A701 2014-02-11 11:33:09 +08:00
mioa701_bootresume.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
mp900.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
mxm8x10.c ARM: pxa: move platform_data definitions 2012-09-14 11:18:10 +02:00
palm27x.c ARM: pxa: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
palmld.c Input: pxa27x-keypad - use matrix_keymap for matrix keys 2013-06-18 22:56:51 -07:00
palmt5.c Input: pxa27x-keypad - use matrix_keymap for matrix keys 2013-06-18 22:56:51 -07:00
palmtc.c ARM: pxa: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
palmte2.c ARM: pxa: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
palmtreo.c Input: pxa27x-keypad - use matrix_keymap for matrix keys 2013-06-18 22:56:51 -07:00
palmtx.c Input: pxa27x-keypad - use matrix_keymap for matrix keys 2013-06-18 22:56:51 -07:00
palmz72.c Input: pxa27x-keypad - use matrix_keymap for matrix keys 2013-06-18 22:56:51 -07:00
pcm027.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
pcm990-baseboard.c ARM: pxa: remove IRQF_DISABLED 2013-12-11 17:32:41 -08:00
pm.c ARM: pm: move cpu_init() call into core code 2011-06-24 08:48:43 +01:00
poodle.c ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
pxa-dt.c ARM: pxa: fix DT auxdata for pxa3xx-gpio 2013-08-13 15:51:01 -07:00
pxa2xx.c ARM: pxa: move platform_data definitions 2012-09-14 11:18:10 +02:00
pxa3xx-ulpi.c ARM: pxa: use module_platform_driver macro 2012-11-06 05:59:59 -08:00
pxa3xx.c ARM: pxa: move PXA_GPIO_TO_IRQ macro 2013-04-11 10:00:05 +08:00
pxa25x.c ARM: pxa: move PXA_GPIO_TO_IRQ macro 2013-04-11 10:00:05 +08:00
pxa27x.c ARM: pxa: move PXA_GPIO_TO_IRQ macro 2013-04-11 10:00:05 +08:00
pxa300.c ARM: pxa: use common IOMEM definition 2012-03-25 14:36:31 -05:00
pxa320.c ARM: pxa: use common IOMEM definition 2012-03-25 14:36:31 -05:00
pxa930.c ARM: pxa: move PXA_GPIO_TO_IRQ macro 2013-04-11 10:00:05 +08:00
raumfeld.c ARM: pxa: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
reset.c ARM: pxa: prevent PXA270 occasional reboot freezes 2013-12-11 16:35:16 -08:00
saar.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
sharpsl_pm.c ARM: pxa: remove IRQF_DISABLED 2013-12-11 17:32:41 -08:00
sleep.S ARM: pm: pxa: move cpu_suspend into C code 2011-06-24 08:48:45 +01:00
smemc.c ARM: PXA3xx: program the CSMSADRCFG register 2013-01-23 16:56:32 +08:00
spitz.c ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
spitz_pm.c ARM: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
standby.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
stargate2.c misc: (at24) move header to linux/platform_data/ 2013-09-30 06:02:34 +02:00
tavorevb.c ARM: pxa: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
time.c ARM: SoC platform changes for 3.14 2014-01-23 18:40:49 -08:00
tosa-bt.c ARM: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
tosa.c ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
trizeps4.c ARM: pxa: remove IRQF_DISABLED 2013-12-11 17:32:41 -08:00
viper.c cpufreq: remove unused notifier: CPUFREQ_{SUSPENDCHANGE|RESUMECHANGE} 2014-03-19 14:10:24 +01:00
vpac270.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
xcep.c ARM: delete struct sys_timer 2012-12-24 09:36:38 -07:00
z2.c ARM: pxa: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
zeus.c ARM: pxa: zeus: Replace OHCI init/exit functions with a regulator 2014-04-24 13:05:32 -07:00
zylonite.c ARM: pxa: Initialize PWM backlight enable_gpio field 2013-10-16 09:05:57 +02:00
zylonite_pxa300.c gpio: (gpio-pca953x) move header to linux/platform_data/ 2013-08-29 12:33:52 -07:00
zylonite_pxa320.c [ARM] pxa/zylonite: simplify reduntant gpio settings on mmc slot 2009-12-29 14:11:34 +08:00