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? > > 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 :) > >> 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. > > 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. [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57907 Thanks and regards, Lokesh > > Thanks, > Michal > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot