
On 03/03/2015 11:12 AM, Nishanth Menon wrote:
On 03/03/2015 11:08 AM, Tom Rini wrote:
On Wed, Feb 25, 2015 at 02:55:13PM -0600, Nishanth Menon wrote:
set_pl310_ctrl_reg does use the Secure Monitor Call (SMC) to setup PL310 control register, however, that is something that is generic enough to be used for OMAP5 generation of processors as well. The only difference being the service being invoked for the function.
So, convert the service to a macro and use a generic name (same as that used in Linux for some consistency). While at that, also add a data barrier which is necessary as per recommendation.
Signed-off-by: Nishanth Menon nm@ti.com
arch/arm/cpu/armv7/omap-common/lowlevel_init.S | 13 ++++++++----- arch/arm/cpu/armv7/omap4/hwinit.c | 4 ++-- arch/arm/include/asm/arch-omap4/sys_proto.h | 5 ++++- 3 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S index 86c0e4217478..9b24369e4dc1 100644 --- a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S +++ b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S @@ -22,11 +22,14 @@ ENTRY(save_boot_params) bx lr ENDPROC(save_boot_params)
-ENTRY(set_pl310_ctrl_reg)
- PUSH {r4-r11, lr} @ save registers - ROM code may pollute
+ENTRY(omap_smc1)
- PUSH {r4-r12, lr} @ save registers - ROM code may pollute @ our registers
- LDR r12, =0x102 @ Set PL310 control register - value in R0
- MOV r12, r0 @ Service
- MOV r0, r1 @ Argument
- DSB
- DMB .word 0xe1600070 @ SMC #0 - hand assembled because -march=armv5 @ call ROM Code API to set control register
Lets stop hand-crafting that call, we just call smc #0 elsewhere in the code base these days.
And we dont care about: -march=armv5 any-longer?
:( replacing this - causes build breakage:
Building omap3_overo board... arch/arm/cpu/armv7/omap-common/lowlevel_init.S:34: Error: selected processor does not support ARM mode `smc #0' make[2]: *** [arch/arm/cpu/armv7/omap-common/lowlevel_init.o] Error 1 make[1]: *** [arch/arm/cpu/armv7/omap-common] Error 2 make: *** [arch/arm/cpu/armv7] Error 2 arch/arm/cpu/armv7/omap-common/lowlevel_init.S: Assembler messages: arch/arm/cpu/armv7/omap-common/lowlevel_init.S:34: Error: selected processor does not support ARM mode `smc #0' make[2]: *** [arch/arm/cpu/armv7/omap-common/lowlevel_init.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [arch/arm/cpu/armv7/omap-common] Error 2 make: *** [arch/arm/cpu/armv7] Error 2 make: *** Waiting for unfinished jobs....
I will retain the hand assembled value for now, if that is ok?