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.si...@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.

Will post an RFC series for R5 support.

Thanks and regards,
Lokesh


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to