[U-Boot] [PATCH 00/10] sunxi: PSCI implementation rewrite in C
Hongbo Zhang
macro.wave.z at gmail.com
Tue May 24 08:37:49 CEST 2016
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 <wens at csie.org> 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
>
More information about the U-Boot
mailing list