linux-kernel-test/arch/arm/mach-s3c24xx
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: S3C24XX: move debug-macro.S into the common space 2014-05-26 04:05:00 +09:00
anubis.h ARM: S3C24XX: make anubis-cpld, anubis-irq and anubis-map local 2013-01-10 10:45:34 -08:00
bast-ide.c ARM: S3C24XX: make bast-cpld.h, bast-irq.h and bast-map.h local 2013-01-10 10:45:35 -08:00
bast-irq.c ARM: S3C24XX: remove plat/irq.h in plat-samsung 2013-03-05 10:42:47 +09:00
bast.h ARM: S3C24XX: make bast-cpld.h, bast-irq.h and bast-map.h local 2013-01-10 10:45:35 -08:00
common-smdk.c ARM: S3C[24|64]xx: move includes back under <mach/> scope 2014-01-14 15:24:06 +01:00
common-smdk.h ARM: S3C24XX: plat/common-smdk.h local 2013-03-05 10:42:47 +09:00
common.c ARM: S3C24XX: remove SAMSUNG_CLOCK remnants after ccf conversion 2014-05-13 08:00:46 +09:00
common.h ARM: S3C24XX: remove legacy clock code 2014-05-13 08:00:45 +09:00
cpufreq-utils.c ARM: S3C24XX: remove SAMSUNG_CLOCK remnants after ccf conversion 2014-05-13 08:00:46 +09:00
dma-s3c2410.c ARM: SAMSUNG: Replace inclusion of plat/regs-serial.h header file 2014-02-14 10:35:00 +09:00
dma-s3c2412.c ARM: SAMSUNG: Replace inclusion of plat/regs-serial.h header file 2014-02-14 10:35:00 +09:00
dma-s3c2440.c ARM: SAMSUNG: Replace inclusion of plat/regs-serial.h header file 2014-02-14 10:35:00 +09:00
dma-s3c2443.c ARM: SAMSUNG: Replace inclusion of plat/regs-serial.h header file 2014-02-14 10:35:00 +09:00
dma.c ARM: SAMSUNG: remove IRQF_DISABLED 2013-12-12 07:05:19 +09:00
gta02.h ARM: S3C24XX: make gta02.h local 2013-01-10 10:45:35 -08:00
h1940-bluetooth.c ARM: s3c24xx: explicit dependency on <plat/gpio-cfg.h> 2014-01-14 15:24:54 +01:00
h1940.h ARM: S3C24XX: make h1940.h and h1940-latch.h local 2013-01-10 10:45:35 -08:00
iotiming-s3c2410.c ARM: S3C24XX: header mach/regs-mem.h local 2013-02-04 10:31:43 -08:00
iotiming-s3c2412.c cpufreq: s3c24xx: move cpufreq driver to drivers/cpufreq 2013-05-20 23:04:28 +09:00
irq-pm.c ARM: S3C24XX: remove plat/irq.h in plat-samsung 2013-03-05 10:42:47 +09:00
Kconfig ARM: samsung: make SAMSUNG_DMADEV optional 2014-06-17 17:09:37 +02:00
mach-amlm5900.c ARM: S3C24XX: convert s3c2410 to common clock framework 2014-05-13 08:00:44 +09:00
mach-anubis.c ARM: S3C24XX: remove SAMSUNG_CLOCK remnants after ccf conversion 2014-05-13 08:00:46 +09:00
mach-at2440evb.c ARM: S3C24XX: convert s3c2440 and s3c2442 to common clock framework 2014-05-13 08:00:43 +09:00
mach-bast.c ARM: S3C24XX: remove SAMSUNG_CLOCK remnants after ccf conversion 2014-05-13 08:00:46 +09:00
mach-gta02.c ARM: S3C24XX: convert s3c2440 and s3c2442 to common clock framework 2014-05-13 08:00:43 +09:00
mach-h1940.c ARM: S3C24XX: convert s3c2410 to common clock framework 2014-05-13 08:00:44 +09:00
mach-jive.c ARM: S3C24XX: convert s3c2412 to common clock framework 2014-04-15 02:11:49 +09:00
mach-mini2440.c ARM: S3C24XX: convert s3c2440 and s3c2442 to common clock framework 2014-05-13 08:00:43 +09:00
mach-n30.c ARM: S3C24XX: convert s3c2410 to common clock framework 2014-05-13 08:00:44 +09:00
mach-nexcoder.c ARM: S3C24XX: convert s3c2410 to common clock framework 2014-05-13 08:00:44 +09:00
mach-osiris-dvs.c ARM: S3C[24|64]xx: move includes back under <mach/> scope 2014-01-14 15:24:06 +01:00
mach-osiris.c ARM: S3C24XX: remove SAMSUNG_CLOCK remnants after ccf conversion 2014-05-13 08:00:46 +09:00
mach-otom.c ARM: S3C24XX: convert s3c2410 to common clock framework 2014-05-13 08:00:44 +09:00
mach-qt2410.c ARM: S3C24XX: convert s3c2410 to common clock framework 2014-05-13 08:00:44 +09:00
mach-rx1950.c ARM: S3C24XX: remove SAMSUNG_CLOCK remnants after ccf conversion 2014-05-13 08:00:46 +09:00
mach-rx3715.c ARM: S3C24XX: convert s3c2440 and s3c2442 to common clock framework 2014-05-13 08:00:43 +09:00
mach-s3c2416-dt.c ARM: S3C24XX: Convert s3c2416 and s3c2443 to common clock framework 2014-04-15 02:11:35 +09:00
mach-smdk2410.c ARM: S3C24XX: convert s3c2410 to common clock framework 2014-05-13 08:00:44 +09:00
mach-smdk2413.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
mach-smdk2416.c ARM: S3C24XX: Convert s3c2416 and s3c2443 to common clock framework 2014-04-15 02:11:35 +09:00
mach-smdk2440.c ARM: S3C24XX: convert s3c2440 and s3c2442 to common clock framework 2014-05-13 08:00:43 +09:00
mach-smdk2443.c ARM: S3C24XX: Convert s3c2416 and s3c2443 to common clock framework 2014-04-15 02:11:35 +09:00
mach-tct_hammer.c ARM: S3C24XX: convert s3c2410 to common clock framework 2014-05-13 08:00:44 +09:00
mach-vr1000.c ARM: S3C24XX: remove SAMSUNG_CLOCK remnants after ccf conversion 2014-05-13 08:00:46 +09:00
mach-vstms.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
Makefile ARM: S3C24XX: remove legacy clock code 2014-05-13 08:00:45 +09:00
Makefile.boot
osiris.h ARM: S3C24XX: make osiris-cpld.h and osiris-map.h local 2013-01-10 10:45:36 -08:00
otom.h ARM: S3C24XX: make otom-map.h local 2013-01-10 10:45:36 -08:00
pll-s3c2410.c cpufreq: rename index as driver_data in cpufreq_frequency_table 2013-06-04 14:25:59 +02:00
pll-s3c2440-12000000.c cpufreq: rename index as driver_data in cpufreq_frequency_table 2013-06-04 14:25:59 +02:00
pll-s3c2440-16934400.c cpufreq: rename index as driver_data in cpufreq_frequency_table 2013-06-04 14:25:59 +02:00
pm-h1940.S ARM: samsung: fix assembly syntax for new gas 2013-02-14 15:04:34 +01:00
pm-s3c2410.c ARM: s3c24xx: explicit dependency on <plat/gpio-cfg.h> 2014-01-14 15:24:54 +01:00
pm-s3c2412.c ARM: S3C24XX: use samsung_sync_wakemask in s3c2412 pm 2013-03-05 20:20:59 +09:00
pm-s3c2416.c arm-soc: cleanups 2013-02-21 14:58:40 -08:00
pm.c ARM: S3C24XX: remove SAMSUNG_CLOCK remnants after ccf conversion 2014-05-13 08:00:46 +09:00
regs-dsc.h ARM: S3C24XX: Remove unused GPIO drive strength register definitions 2013-04-08 21:37:07 +09:00
regs-mem.h ARM: S3C24XX: header mach/regs-mem.h local 2013-02-04 10:31:43 -08:00
s3c244x.c ARM: S3C24XX: remove legacy clock code 2014-05-13 08:00:45 +09:00
s3c2410.c ARM: S3C24XX: remove legacy clock code 2014-05-13 08:00:45 +09:00
s3c2412-power.h ARM: S3C24XX: header mach/regs-power.h local 2013-02-04 10:31:39 -08:00
s3c2412.c ARM: S3C24XX: convert s3c2412 to common clock framework 2014-04-15 02:11:49 +09:00
s3c2416.c ARM: S3C24XX: Move rtc-core.h from plat to mach 2014-02-15 09:24:29 +09:00
s3c2440.c ARM: S3C[24|64]xx: move includes back under <mach/> scope 2014-01-14 15:24:06 +01:00
s3c2442.c ARM: S3C24XX: remove legacy clock code 2014-05-13 08:00:45 +09:00
s3c2443.c ARM: S3C24XX: Move rtc-core.h from plat to mach 2014-02-15 09:24:29 +09:00
setup-i2c.c ARM: S3C[24|64]xx: move includes back under <mach/> scope 2014-01-14 15:24:06 +01:00
setup-sdhci-gpio.c ARM: S3C[24|64]xx: move includes back under <mach/> scope 2014-01-14 15:24:06 +01:00
setup-spi.c ARM: SAMSUNG: Remove pdev pointer parameter from spi gpio setup functions 2012-07-13 15:23:46 +09:00
setup-ts.c ARM: s3c24xx: explicit dependency on <plat/gpio-cfg.h> 2014-01-14 15:24:54 +01:00
simtec-audio.c ARM: S3C24XX: make bast-cpld.h, bast-irq.h and bast-map.h local 2013-01-10 10:45:35 -08:00
simtec-nor.c ARM: S3C24XX: make bast-cpld.h, bast-irq.h and bast-map.h local 2013-01-10 10:45:35 -08:00
simtec-pm.c ARM: S3C24XX: header mach/regs-mem.h local 2013-02-04 10:31:43 -08:00
simtec-usb.c ARM: SoC cleanups for 3.14 2014-01-23 18:36:55 -08:00
simtec.h
sleep-s3c2410.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
sleep-s3c2412.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
sleep.S ARM: SAMSUNG: Replace inclusion of plat/regs-serial.h header file 2014-02-14 10:35:00 +09:00
vr1000.h ARM: S3C24XX: make vr1000-cpld.h, vr1000-irq.h and vr1000-map.h local 2013-01-10 10:45:37 -08:00