[U-Boot] [PATCH V3 05/11] ARM: OMAP: Change set_pl310_ctrl_reg to be generic

Nishanth Menon
2015-03-03T17:54:44Z

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?

--
Regards,
Nishanth Menon