diff options
| author | wangqinglin <[email protected]> | 2023-06-11 07:06:16 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-06-11 07:06:16 +0800 |
| commit | 194a2efdf4b65531c3149f5a3bb0154b35514abd (patch) | |
| tree | c40d68fe7b789bddc9e3cca71055e42f573a92ac | |
| parent | 690446ee9028805087803da80cfad100925c521a (diff) | |
AMP-step3: 添加conifg ARCH_ARM_CORTEX_A55, rt_hw_cpu_id_set 适配A55架构, 添加aarch64 rt_… (#7628)
| -rw-r--r-- | libcpu/Kconfig | 4 | ||||
| -rw-r--r-- | libcpu/aarch64/common/context_gcc.S | 3 | ||||
| -rw-r--r-- | libcpu/aarch64/common/cpu.c | 16 |
3 files changed, 23 insertions, 0 deletions
diff --git a/libcpu/Kconfig b/libcpu/Kconfig index 164520c4d4..c50571eda2 100644 --- a/libcpu/Kconfig +++ b/libcpu/Kconfig @@ -152,6 +152,10 @@ config ARCH_ARM_CORTEX_A9 bool select ARCH_ARM_CORTEX_A +config ARCH_ARM_CORTEX_A55 + bool + select ARCH_ARM_CORTEX_A + config ARCH_ARM_SECURE_MODE bool "Running in secure mode [ARM Cortex-A]" default n diff --git a/libcpu/aarch64/common/context_gcc.S b/libcpu/aarch64/common/context_gcc.S index 11e54bfa7b..dadd5cffc1 100644 --- a/libcpu/aarch64/common/context_gcc.S +++ b/libcpu/aarch64/common/context_gcc.S @@ -18,6 +18,9 @@ .type rt_hw_cpu_id_set, @function rt_hw_cpu_id_set: mrs x0, mpidr_el1 /* MPIDR_EL1: Multi-Processor Affinity Register */ +#ifdef ARCH_ARM_CORTEX_A55 + lsr x0, x0, #8 +#endif and x0, x0, #15 msr tpidr_el1, x0 ret diff --git a/libcpu/aarch64/common/cpu.c b/libcpu/aarch64/common/cpu.c index 8f7f2843a9..8953b64556 100644 --- a/libcpu/aarch64/common/cpu.c +++ b/libcpu/aarch64/common/cpu.c @@ -374,4 +374,20 @@ rt_weak void rt_hw_cpu_shutdown() } MSH_CMD_EXPORT_ALIAS(rt_hw_cpu_shutdown, shutdown, shutdown machine); +#ifdef RT_USING_CPU_FFS +/** + * This function finds the first bit set (beginning with the least significant bit) + * in value and return the index of that bit. + * + * Bits are numbered starting at 1 (the least significant bit). A return value of + * zero from any of these functions means that the argument was zero. + * + * @return return the index of the first bit set. If value is 0, then this function + * shall return 0. + */ +int __rt_ffs(int value) +{ + return __builtin_ffs(value); +} +#endif /*@}*/ |
