kernel_optimize_test/arch/arm/mach-omap2
Tony Lindgren d8a50941c9 ARM: OMAP3: Fix booting with thumb2 kernel
We get a NULL pointer dereference on omap3 for thumb2 compiled kernels:

Internal error: Oops: 80000005 [#1] SMP THUMB2
...
[<c046497b>] (_raw_spin_unlock_irqrestore) from [<c0024375>]
(omap3_enter_idle_bm+0xc5/0x178)
[<c0024375>] (omap3_enter_idle_bm) from [<c0374e63>]
(cpuidle_enter_state+0x77/0x27c)
[<c0374e63>] (cpuidle_enter_state) from [<c00627f1>]
(cpu_startup_entry+0x155/0x23c)
[<c00627f1>] (cpu_startup_entry) from [<c06b9a47>]
(start_kernel+0x32f/0x338)
[<c06b9a47>] (start_kernel) from [<8000807f>] (0x8000807f)

The power management related assembly on omaps needs to interact with
ARM mode bootrom code, so we need to keep most of the related assembly
in ARM mode.

Turns out this error is because of missing ENDPROC for assembly code
as suggested by Stephen Boyd <sboyd@codeaurora.org>. Let's fix the
problem by adding ENDPROC in two places to sleep34xx.S.

Let's also remove the now duplicate custom code for mode switching.
This has been unnecessary since commit 6ebbf2ce43 ("ARM: convert
all "mov.* pc, reg" to "bx reg" for ARMv6+").

And let's also remove the comments about local variables, they are
now just confusing after the ENDPROC.

The reason why ENDPROC makes a difference is it sets .type and then
the compiler knows what to do with the thumb bit as explained at:

https://wiki.ubuntu.com/ARM/Thumb2PortingHowto

Reported-by: Kevin Hilman <khilman@kernel.org>
Tested-by: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2015-05-28 07:22:08 -07:00
..
include/mach
am33xx-restart.c
am33xx.h
board-cm-t35.c [media] omap3isp: Refactor device configuration structs for Device Tree 2015-04-02 16:41:01 -03:00
board-flash.c
board-flash.h
board-generic.c ARM: SoC platform changes 2015-02-17 09:27:54 -08:00
board-ldp.c
board-n8x0.c
board-omap3beagle.c
board-omap3logic.c
board-omap3pandora.c ARM: OMAP2+: Make sure pandora_wl1251_init_card() applies to SDIO only 2015-01-19 09:56:04 +01:00
board-overo.c
board-rx51-peripherals.c
board-rx51-video.c
board-rx51.c
board-rx51.h
clkt2xxx_dpll.c
clkt2xxx_dpllcore.c
clkt2xxx_virt_prcm_set.c
clkt34xx_dpll3m2.c
clkt_clksel.c
clkt_dpll.c
clkt_iclk.c
clock2xxx.c
clock2xxx.h ARM: OMAP2: clock: remove unused apll code 2015-01-07 10:54:40 -08:00
clock3xxx.c
clock3xxx.h
clock34xx.c
clock34xx.h
clock36xx.c
clock36xx.h
clock44xx.h
clock2430.c
clock3517.c
clock3517.h
clock_common_data.c arm: omap2+ remove dead clock code 2015-02-02 14:23:39 -08:00
clock.c ARM: OMAP2+: clock: add low-level support for regmap 2015-03-31 21:26:55 +03:00
clock.h ARM: OMAP2+: clock: add low-level support for regmap 2015-03-31 21:26:55 +03:00
clockdomain.c
clockdomain.h ARM: OMAP2+: Add clock domain support for dm816x 2015-01-26 09:26:32 -08:00
clockdomains2xxx_3xxx_data.c
clockdomains3xxx_data.c
clockdomains7xx_data.c
clockdomains33xx_data.c
clockdomains43xx_data.c
clockdomains44xx_data.c
clockdomains54xx_data.c
clockdomains81xx_data.c ARM: OMAP2+: Add clock domain support for dm816x 2015-01-26 09:26:32 -08:00
clockdomains2420_data.c
clockdomains2430_data.c
cm1_7xx.h
cm1_44xx.h
cm1_54xx.h
cm2_7xx.h
cm2_44xx.h
cm2_54xx.h
cm2xxx_3xxx.h
cm2xxx.c ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm2xxx.h ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm3xxx.c ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm3xxx.h ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm33xx.c ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm33xx.h ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm44xx.h ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm81xx.h ARM: OMAP2+: Add clock domain support for dm816x 2015-01-26 09:26:32 -08:00
cm_common.c ARM: OMAP2+: clock: add low-level support for regmap 2015-03-31 21:26:55 +03:00
cm-regbits-7xx.h
cm-regbits-24xx.h
cm-regbits-33xx.h
cm-regbits-34xx.h
cm-regbits-44xx.h
cm-regbits-54xx.h
cm.h ARM: OMAP2+: CM: determine CM base address from device tree 2015-03-27 10:55:57 +02:00
cminst44xx.c ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
common-board-devices.c
common-board-devices.h
common.c ARM: OMAP4: remove dead kconfig option OMAP4_ERRATA_I688 2015-03-16 16:23:28 -07:00
common.h ARM: OMAP4: remove dead kconfig option OMAP4_ERRATA_I688 2015-03-16 16:23:28 -07:00
control.c ARM: OMAP4+: control: add support for initializing control module via DT 2015-03-31 21:26:59 +03:00
control.h ARM: OMAP4+: control: remove support for legacy pad read/write 2015-03-31 21:26:58 +03:00
cpuidle34xx.c
cpuidle44xx.c Power management and ACPI updates for v4.1-rc1 2015-04-14 20:21:54 -07:00
ctrl_module_wkup_44xx.h
devices.c [media] omap3isp: Replace many MMIO regions by two 2015-04-02 16:45:07 -03:00
devices.h
display.c ARM: OMAP4: display: convert display to use syscon for dsi muxing 2015-03-31 21:26:58 +03:00
display.h
dma.c
dpll3xxx.c clk: Add rate constraints to clocks 2015-02-02 14:23:42 -08:00
dpll44xx.c The clock framework changes for 3.20 contain the usual driver additions, 2015-02-21 12:30:30 -08:00
drm.c
dss-common.c
dss-common.h
fb.c
gpio.c
gpmc-nand.c ARM OMAP2+ GPMC: calculate GPMCFCLKDIVIDER based on WAITMONITORINGTIME 2015-03-06 12:39:48 +02:00
gpmc-onenand.c ARM OMAP2+ GPMC: calculate GPMCFCLKDIVIDER based on WAITMONITORINGTIME 2015-03-06 12:39:48 +02:00
gpmc-smsc911x.c
gpmc-smsc911x.h
gpmc.h
hdq1w.c
hdq1w.h
hsmmc.c ARM: OMAP2: HSMMC: explicit fields to declare cover/card detect pin 2015-03-27 12:19:37 +01:00
hsmmc.h
hwspinlock.c
i2c.c
i2c.h
id.c ARM: SoC late changes for v4.1 2015-04-22 09:24:55 -07:00
id.h
io.c Merge branch '4.0-rc1-prcm-cleanup-v6' of https://github.com/t-kristo/linux-pm into omap-for-v4.1/prcm-cleanup 2015-04-01 12:24:29 -07:00
iomap.h
Kconfig ARM: SoC late changes for v4.1 2015-04-22 09:24:55 -07:00
l3_2xxx.h
l3_3xxx.h
l4_2xxx.h
l4_3xxx.h
Makefile ARM: OMAP2+: Remove legacy support for omap3 TouchBook 2015-03-16 17:07:26 -07:00
Makefile.boot
mcbsp.c
mmc.h
msdi.c
mux34xx.c
mux34xx.h
mux.c ARM: OMAP2+: remove superfluous NULL pointer check 2015-03-26 10:33:25 -07:00
mux.h
omap2-restart.c
omap3-restart.c
omap4-common.c ARM: SoC fixes for v4.1 2015-04-22 09:03:30 -07:00
omap4-restart.c
omap4-sar-layout.h
omap24xx.h
omap34xx.h [media] omap3isp: Replace many MMIO regions by two 2015-04-02 16:45:07 -03:00
omap44xx.h
omap54xx.h
omap_device.c ARM: omap-device: add missed callback for suspend-to-disk 2015-03-16 16:21:21 -07:00
omap_device.h
omap_hwmod_2xxx_3xxx_interconnect_data.c
omap_hwmod_2xxx_3xxx_ipblock_data.c
omap_hwmod_2xxx_interconnect_data.c
omap_hwmod_2xxx_ipblock_data.c
omap_hwmod_3xxx_data.c ARM: OMAP3: Remove legacy support for am35xx-emac 2015-01-13 09:00:38 -08:00
omap_hwmod_7xx_data.c ARM: SoC platform updates for v4.1 2015-04-22 09:08:39 -07:00
omap_hwmod_33xx_43xx_common_data.h
omap_hwmod_33xx_43xx_interconnect_data.c
omap_hwmod_33xx_43xx_ipblock_data.c
omap_hwmod_33xx_data.c
omap_hwmod_43xx_data.c ARM: AM43xx: hwmod: add VPFE hwmod entries 2015-05-08 13:01:09 -06:00
omap_hwmod_44xx_data.c ARM: OMAP: Work around hardcoded interrupts 2015-01-17 08:56:12 -08:00
omap_hwmod_54xx_data.c ARM: OMAP: Work around hardcoded interrupts 2015-01-17 08:56:12 -08:00
omap_hwmod_81xx_data.c ARM: OMAP2+: Add dm816x hwmod support 2015-01-26 09:26:32 -08:00
omap_hwmod_2420_data.c
omap_hwmod_2430_data.c
omap_hwmod_common_data.c
omap_hwmod_common_data.h
omap_hwmod_common_ipblock_data.c
omap_hwmod_reset.c
omap_hwmod.c ARM: AM33xx+: hwmod: re-use omap4 implementations for reset functionality 2015-05-08 13:05:19 -06:00
omap_hwmod.h ARM: omap2+: omap_hwmod: Set unique lock_class_key per hwmod 2015-02-26 00:00:51 -07:00
omap_opp_data.h
omap_phy_internal.c ARM: OMAP2+: Remove unused ti81xx platform init code 2015-01-14 17:21:00 -08:00
omap_twl.c
omap-headsmp.S ARM: omap5/dra7xx: Enable booting secondary CPU in HYP mode 2015-01-05 15:48:21 -08:00
omap-hotplug.c
omap-iommu.c
omap-mpuss-lowpower.c
omap-pm-noop.c ARM: OMAP2+: omap-pm-noop.c: Remove some unused functions 2015-01-07 09:53:51 -08:00
omap-pm.h ARM: OMAP2+: omap-pm-noop.c: Remove some unused functions 2015-01-07 09:53:51 -08:00
omap-secure.c
omap-secure.h ARM: OMAP4: remove dead kconfig option OMAP4_ERRATA_I688 2015-03-16 16:23:28 -07:00
omap-smc.S
omap-smp.c ARM: omap5/dra7xx: Enable booting secondary CPU in HYP mode 2015-01-05 15:48:21 -08:00
omap-wakeupgen.c ARM: omap: convert wakeupgen to stacked domains 2015-03-15 00:56:13 +00:00
omap-wakeupgen.h ARM: omap: convert wakeupgen to stacked domains 2015-03-15 00:56:13 +00:00
opp2xxx.h
opp3xxx_data.c
opp4xxx_data.c
opp2420_data.c
opp2430_data.c
opp.c
pdata-quirks.c ARM: dts: add wl12xx/wl18xx bindings 2015-03-24 09:48:14 -07:00
pm24xx.c ARM: OMAP2+: PRM: add generic API for clear_mod_irqs 2015-03-25 11:03:37 +02:00
pm34xx.c ARM: OMAP2+: PRM: add generic API for clear_mod_irqs 2015-03-25 11:03:37 +02:00
pm44xx.c
pm-debug.c
pm.c
pm.h
pmu.c arm: omap: specify PMUs are for ARMv7 CPUs 2015-02-06 00:13:06 -08:00
powerdomain-common.c
powerdomain.c ARM: OMAP2+: voltage: Remove some unused functions 2015-01-07 09:53:51 -08:00
powerdomain.h ARM: OMAP2+: powerdomain.c: Remove some unused functions 2015-01-07 09:53:51 -08:00
powerdomains2xxx_3xxx_data.c
powerdomains2xxx_3xxx_data.h
powerdomains2xxx_data.c
powerdomains3xxx_data.c ARM: OMAP2+: Fix ti81xx class type 2015-01-14 17:37:16 -08:00
powerdomains7xx_data.c
powerdomains33xx_data.c
powerdomains43xx_data.c
powerdomains44xx_data.c
powerdomains54xx_data.c
prcm43xx.h ARM: AM43xx: hwmod: add VPFE hwmod entries 2015-05-08 13:01:09 -06:00
prcm44xx.h
prcm_mpu7xx.h
prcm_mpu44xx.c
prcm_mpu44xx.h
prcm_mpu54xx.h
prcm_mpu_44xx_54xx.h
prcm-common.h ARM: OMAP4+: PRM: determine prm_device_inst based on DT compatibility 2015-03-31 21:26:44 +03:00
prm2xxx_3xxx.c
prm2xxx_3xxx.h
prm2xxx.c ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm2xxx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm3xxx.c ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm3xxx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm7xx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm33xx.c ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm33xx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm44xx_54xx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm44xx.c ARM: SoC late changes for v4.1 2015-04-22 09:24:55 -07:00
prm44xx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm54xx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm_common.c ARM: OMAP2+: clock: add low-level support for regmap 2015-03-31 21:26:55 +03:00
prm-regbits-24xx.h
prm-regbits-33xx.h
prm-regbits-34xx.h ARM: OMAP2+: Fix omap off idle power consumption creeping up 2015-05-04 08:54:41 -07:00
prm-regbits-44xx.h ARM: OMAP2+: Fix omap off idle power consumption creeping up 2015-05-04 08:54:41 -07:00
prm.h ARM: OMAP4+: PRM: get rid of cpu_is_omap44xx calls from interrupt init 2015-03-31 21:26:53 +03:00
prminst44xx.c ARM: OMAP4+: PRM: add support for passing status register/bit info to reset 2015-05-08 13:05:15 -06:00
prminst44xx.h ARM: OMAP4+: PRM: determine prm_device_inst based on DT compatibility 2015-03-31 21:26:44 +03:00
scrm44xx.h
scrm54xx.h
sdram-hynix-h8mbx00u0mer-0em.h
sdram-micron-mt46h32m32lf-6.h
sdram-nokia.c
sdram-nokia.h
sdram-numonyx-m65kxxxxam.h
sdram-qimonda-hyb18m512160af-6.h
sdrc2xxx.c
sdrc.c
sdrc.h
serial.c
serial.h
sleep24xx.S
sleep34xx.S ARM: OMAP3: Fix booting with thumb2 kernel 2015-05-28 07:22:08 -07:00
sleep44xx.S ARM: OMAP4: remove dead kconfig option OMAP4_ERRATA_I688 2015-03-16 16:23:28 -07:00
smartreflex-class3.c
soc.h ARM: OMAP2+: Fix ti81xx class type 2015-01-14 17:37:16 -08:00
sr_device.c
sram34xx.S
sram242x.S
sram243x.S
sram.c
sram.h
ti81xx-restart.c ARM: OMAP2+: Fix reboot for 81xx 2015-01-14 17:37:16 -08:00
ti81xx.h
timer.c ARM: OMAP2+: Remove bogus struct clk comparison for timer clock 2015-05-11 13:18:19 -07:00
twl-common.c ARM: OMAP: Work around hardcoded interrupts 2015-01-17 08:56:12 -08:00
twl-common.h
usb-host.c
usb-musb.c ARM: OMAP2+: Remove unused ti81xx platform init code 2015-01-14 17:21:00 -08:00
usb-tusb6010.c ARM OMAP2+ GPMC: calculate GPMCFCLKDIVIDER based on WAITMONITORINGTIME 2015-03-06 12:39:48 +02:00
usb.h ARM: OMAP2+: Remove unused ti81xx platform init code 2015-01-14 17:21:00 -08:00
vc3xxx_data.c ARM: OMAP2+: Fix omap off idle power consumption creeping up 2015-05-04 08:54:41 -07:00
vc44xx_data.c ARM: OMAP2+: Fix omap off idle power consumption creeping up 2015-05-04 08:54:41 -07:00
vc.c ARM: OMAP2+: Fix omap off idle power consumption creeping up 2015-05-04 08:54:41 -07:00
vc.h ARM: OMAP2+: Fix omap off idle power consumption creeping up 2015-05-04 08:54:41 -07:00
voltage.c ARM: OMAP2+: voltage: Remove some unused functions 2015-01-07 09:53:51 -08:00
voltage.h ARM: OMAP2+: voltage: Remove some unused functions 2015-01-07 09:53:51 -08:00
voltagedomains2xxx_data.c
voltagedomains3xxx_data.c
voltagedomains44xx_data.c
voltagedomains54xx_data.c
vp3xxx_data.c ARM: OMAP3+: PRM: add common APIs for prm_vp_check/clear_txdone 2015-03-25 11:03:39 +02:00
vp44xx_data.c ARM: OMAP3+: PRM: add common APIs for prm_vp_check/clear_txdone 2015-03-25 11:03:39 +02:00
vp.c
vp.h ARM: OMAP3+: PRM: add common APIs for prm_vp_check/clear_txdone 2015-03-25 11:03:39 +02:00
wd_timer.c
wd_timer.h