From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hongbo Zhang Date: Tue, 24 May 2016 14:37:49 +0800 Subject: [U-Boot] [PATCH 00/10] sunxi: PSCI implementation rewrite in C In-Reply-To: <1464007306-30269-1-git-send-email-wens@csie.org> References: <1464007306-30269-1-git-send-email-wens@csie.org> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Yes, C code is better and even necessary for some cases. Drawback of assemble language is that it is difficult not only for developers but also for the reviewers and maintainers. I am implementing our NXP/Freescale LS1 platform's system-suspend function, it is written in C too, is is impossible without C for my case. On Mon, May 23, 2016 at 8:41 PM, Chen-Yu Tsai wrote: > Hi everyone, > > This series rewrites the Allwinner/sunxi PSCI implementation in C, to make > it easier to maintain and extend for the currently unsupported multi-cluster > SoCs. The SMP code in the BSP kernels are in C. Having the PSCI code in C > as well will make it easier to work on. > > To be able to convert the platform bits to C, some common PSCI functions > have to be fixed up according to the ARM calling conventions. Function > declarations are also needed. > > This series is based on sunxi/next. Parts of it will likely conflict with > the effort to support PSCI 1.0 on the Freescale LS102xA. > > Patch 1 fixes up psci_get_cpu_stack_top. > > Patch 2 fixes up the PSCI version of v7_flush_dcache_all. > > Patch 3 adds function declarations for some of the common PSCI functions. > > Patch 4 fixes issues with reserving memory for the secure section. > > Patch 5 unifies the CPUCFG_BASE macro names for various sunxi platforms. > > Patch 6 groups cpu core related controls together into one struct per core. > This makes it straightforward to access the controls by the cpu index. > > Patch 7 adds a missing header to cpucfg.h > > Patch 8 adds some missing fields to cpucfg, which were used in the assembly > code. > > Patch 9 adds the base address for the GIC. > > Patch 10 is the new PSCI implementation in C. Almost all of the code is > converted, with the exception of initial setup of the stack. > > > Regards > ChenYu > > > Chen-Yu Tsai (10): > ARM: PSCI: use only r0 and r3 in psci_get_cpu_stack_top() > ARM: PSCI: save and restore clobbered registers in v7_flush_dcache_all > ARM: PSCI: export common PSCI function declarations for C code > ARM: allocate extra space for PSCI stack in secure section during link > phase > sunxi: Make CPUCFG_BASE macro names the same across families > sunxi: Group cpu core related controls together > sunxi: Add missing linux/types.h header for cpucfg.h > sunxi: Add CPUCFG debug lock and sun7i cpu power controls > sunxi: Add base address for GIC > sunxi: Add PSCI implementation in C > > arch/arm/cpu/armv7/psci.S | 20 +- > arch/arm/cpu/armv7/sunxi/Makefile | 7 +- > arch/arm/cpu/armv7/sunxi/psci.c | 229 ++++++++++++++++++ > arch/arm/cpu/armv7/sunxi/psci_head.S | 61 +++++ > arch/arm/cpu/armv7/sunxi/psci_sun6i.S | 262 --------------------- > arch/arm/cpu/armv7/sunxi/psci_sun7i.S | 237 ------------------- > arch/arm/cpu/u-boot.lds | 3 + > arch/arm/include/asm/arch-sunxi/cpu_sun4i.h | 17 +- > .../asm/arch-sunxi/{cpucfg_sun6i.h => cpucfg.h} | 38 +-- > arch/arm/include/asm/arch-sunxi/prcm.h | 6 +- > arch/arm/include/asm/psci.h | 8 + > 11 files changed, 350 insertions(+), 538 deletions(-) > create mode 100644 arch/arm/cpu/armv7/sunxi/psci.c > create mode 100644 arch/arm/cpu/armv7/sunxi/psci_head.S > delete mode 100644 arch/arm/cpu/armv7/sunxi/psci_sun6i.S > delete mode 100644 arch/arm/cpu/armv7/sunxi/psci_sun7i.S > rename arch/arm/include/asm/arch-sunxi/{cpucfg_sun6i.h => cpucfg.h} (69%) > > -- > 2.8.1 >