[U-Boot] [PATCH 1/2] arm: Add minimal support for Cortex-R5
Michal Simek
michal.simek at xilinx.com
Tue Apr 24 12:53:36 UTC 2018
On 24.4.2018 14:49, Lokesh Vutla wrote:
> Hi Michal,
>
> On Tuesday 24 April 2018 05:54 PM, Michal Simek wrote:
>> Hi,
>>
>> On 24.4.2018 06:45, Lokesh Vutla wrote:
>>> Hi Michal,
>>>
>>> On Monday 23 April 2018 11:56 AM, Michal Simek wrote:
>>>> On 23.4.2018 05:53, Lokesh Vutla wrote:
>>>>>
>>>>>
>>>>> On Friday 20 April 2018 07:21 PM, Michal Simek wrote:
>>>>>> This minimal support will be used by Xilinx ZynqMP R5 cpu.
>>>>>>
>>>>>> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
>>>>>> ---
>>>>>>
>>>>>> arch/arm/Kconfig | 6 ++++++
>>>>>> arch/arm/cpu/armv7r/Makefile | 4 ++++
>>>>>> arch/arm/cpu/armv7r/config.mk | 3 +++
>>>>>> arch/arm/cpu/armv7r/cpu.c | 24 ++++++++++++++++++++++++
>>>>>> arch/arm/cpu/armv7r/start.S | 17 +++++++++++++++++
>>>>>> 5 files changed, 54 insertions(+)
>>>>>> create mode 100644 arch/arm/cpu/armv7r/Makefile
>>>>>> create mode 100644 arch/arm/cpu/armv7r/config.mk
>>>>>> create mode 100644 arch/arm/cpu/armv7r/cpu.c
>>>>>> create mode 100644 arch/arm/cpu/armv7r/start.S
>>>>>>
>>>>>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>>>>>> index b5fbce03667d..b10804f55224 100644
>>>>>> --- a/arch/arm/Kconfig
>>>>>> +++ b/arch/arm/Kconfig
>>>>>> @@ -192,6 +192,10 @@ config CPU_V7M
>>>>>> select THUMB2_KERNEL
>>>>>> select SYS_CACHE_SHIFT_5
>>>>>>
>>>>>> +config CPU_V7R
>>>>>> + bool
>>>>>> + select SYS_CACHE_SHIFT_6
>>>>>
>>>>> select HAS_THUMB2 might be a good option?
>>>>
>>>> I didn't enable it because I didn't test it.
>>>> It can be added when someone tests this.
>>>>
>>>>>
>>>>>> +
>>>>>> config CPU_PXA
>>>>>> bool
>>>>>> select SYS_CACHE_SHIFT_5
>>>>>> @@ -209,6 +213,7 @@ config SYS_CPU
>>>>>> default "arm1176" if CPU_ARM1176
>>>>>> default "armv7" if CPU_V7
>>>>>> default "armv7m" if CPU_V7M
>>>>>> + default "armv7r" if CPU_V7R
>>>>>> default "pxa" if CPU_PXA
>>>>>> default "sa1100" if CPU_SA1100
>>>>>> default "armv8" if ARM64
>>>>>> @@ -223,6 +228,7 @@ config SYS_ARM_ARCH
>>>>>> default 6 if CPU_ARM1176
>>>>>> default 7 if CPU_V7
>>>>>> default 7 if CPU_V7M
>>>>>> + default 7 if CPU_V7R
>>>>>> default 5 if CPU_PXA
>>>>>> default 4 if CPU_SA1100
>>>>>> default 8 if ARM64
>>>>>
>>>>> I did a grep of CPU_V7, and you might want to update for CPU_V7R in the
>>>>> following places:
>>>>>
>>>>> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
>>>>> index 4fa8b38397..f4bc1f250d 100644
>>>>> --- a/arch/arm/Makefile
>>>>> +++ b/arch/arm/Makefile
>>>>> @@ -18,6 +18,7 @@ arch-$(CONFIG_CPU_ARM1136) =-march=armv5
>>>>> arch-$(CONFIG_CPU_ARM1176) =-march=armv5t
>>>>> arch-$(CONFIG_CPU_V7) =$(call cc-option, -march=armv7-a, \
>>>>> $(call cc-option, -march=armv7, -march=armv5))
>>>>> +arch-$(CONFIG_CPU_V7R) =-march=armv7-r
>>>>
>>>> I have setup PLATFORM_CPPFLAGS via config.mk
>>>>
>>>> If both options are selected I am getting this compilation warning.
>>>> cc1: warning: switch -mcpu=cortex-r5 conflicts with -march=armv7-r switch
>>>
>>> hmm..that's strange. I guess it should be reported to gcc? Something
>>> similar has been reported for a15 as well[1].
>>>
>>> But looking at the implementation of armv7 we just included march. may
>>> be we should stick to it?
>>
>> As I said I have not a problem to add there -march=armv7-r instead of
>> -mcpu=cortex-r5.
>>
>>
>>
>>>> Not sure which one is better or if it is better to have this arch flag
>>>> via this makefile or as platform cppflags via config.mk.
>>>> I choose the second option because it seems to me better if this is in
>>>> subfolder. But not a problem to use different flag and put it to this
>>>> Makefile.
>>>>
>>>> The same style is used for cpu_v7m.
>>>
>>> v7-r is very much close to v7. I would prefer to compare with v7
>>> implementation than v7-m :)
>>
>> I started with symlink to v7. And I didn't play with MPU. Anyway both
>> ways works for me.
>>
>>
>>>>
>>>>> arch-$(CONFIG_ARM64) =-march=armv8-a
>>>>>
>>>>> # On Tegra systems we must build SPL for the armv4 core on the device
>>>>> @@ -41,6 +42,7 @@ tune-$(CONFIG_CPU_PXA) =-mcpu=xscale
>>>>> tune-$(CONFIG_CPU_ARM1136) =
>>>>> tune-$(CONFIG_CPU_ARM1176) =
>>>>> tune-$(CONFIG_CPU_V7) =
>>>>> +tune-$(CONFIG_CPU_V7R) =
>>>>
>>>> Again as above. I used v7m as pattern and there is also empty tune
>>>> parameter. Is there any good reason to have it empty?
>>>>
>>>>> tune-$(CONFIG_ARM64) =
>>>>>
>>>>> # Evaluate tune cc-option calls now
>>>>>
>>>>>
>>>>>> diff --git a/arch/arm/cpu/armv7r/Makefile b/arch/arm/cpu/armv7r/Makefile
>>>>>> new file mode 100644
>>>>>> index 000000000000..3c66976dfa62
>>>>>> --- /dev/null
>>>>>> +++ b/arch/arm/cpu/armv7r/Makefile
>>>>>
>>>>> hmm..do we really need to create a separate folder? IIUC, the main
>>>>> difference between V7 and V7R is MMU vs MPU. IMHO, we should be able to
>>>>> get it using Kconfigs.
>>>>
>>>> I have used V7 for the initial port and then was checking V7M which is
>>>> already there and used it as pattern for writing this patch.
>>>>
>>>> I have debugged V7 and found that I need to disable CONFIG_HAS_VBAR
>>>> that's why I have created new symbol as for V7M.
>>>
>>> We should be able to create a kconfig symbol for that and select
>>> accordingly. Kernel does it the same way.
>>
>> What kernel Kconfig option are you talking about? (I didn't look at
>> Linux running on R5 but it is reasonable step).
>>
>> It is really a question if adding new Kconfig symbol for VBAR is the
>> right thing to do. I would need to add VBAR to every platform which has
>> CPU_V7.
>>
>>
>>>>
>>>> Definitely I am open to hear your suggestion
>>> I just did a couple of quick experiments and able to get v7-r support
>>> along with v7 support. let me know if you would like to take a look at
>>> it. Then Ill pick your patch 1/2 and post the series.
>>
>> I am definitely confident that this will work because I used that in
>> past. Definitely feel free to send it and I will take a look at retest
>> on R5.
>
> Sorry, I did not mean this patch does not work. It definitely works. I
> am trying to tell that with some kconfig changes we should be able to
> re-use armv7 folder instead of creating new folder. Apologies if my
> reply has communicated wrongly.
I know that it will work. Please send it and I will take a look. The
same is for v7m which can be also squashed with v7 + some Kconfig options.
Thanks,
Michal
More information about the U-Boot
mailing list