arm64: fix fvp smp faild to boot

reason:
we should give a busy wait addr

This commit fixes the regression from https://github.com/apache/nuttx/pull/13640

Signed-off-by: hujun5 <hujun5@xiaomi.com>
This commit is contained in:
hujun5 2024-10-23 14:42:21 +08:00 committed by Xiang Xiao
parent b33226d76e
commit 9395669ac0
3 changed files with 9 additions and 1 deletions

View File

@ -210,7 +210,7 @@ int up_cpu_start(int cpu)
#ifdef CONFIG_ARM64_SMP_BUSY_WAIT #ifdef CONFIG_ARM64_SMP_BUSY_WAIT
uint32_t *address = (uint32_t *)CONFIG_ARM64_SMP_BUSY_WAIT_FLAG_ADDR; uint32_t *address = (uint32_t *)CONFIG_ARM64_SMP_BUSY_WAIT_FLAG_ADDR;
*address = 1; *address = 1;
up_flush_dcache((uintptr_t)address, sizeof(address)); up_flush_dcache((uintptr_t)address, (uintptr_t)address + sizeof(address));
#endif #endif
arm64_start_cpu(cpu); arm64_start_cpu(cpu);

View File

@ -14,6 +14,8 @@ CONFIG_ARCH_CHIP_FVP_ARMV8R=y
CONFIG_ARCH_CHIP_FVP_R82=y CONFIG_ARCH_CHIP_FVP_R82=y
CONFIG_ARCH_EARLY_PRINT=y CONFIG_ARCH_EARLY_PRINT=y
CONFIG_ARCH_INTERRUPTSTACK=4096 CONFIG_ARCH_INTERRUPTSTACK=4096
CONFIG_ARM64_SMP_BUSY_WAIT=y
CONFIG_ARM64_SMP_BUSY_WAIT_FLAG_ADDR=0x60000
CONFIG_ARM64_STRING_FUNCTION=y CONFIG_ARM64_STRING_FUNCTION=y
CONFIG_BUILTIN=y CONFIG_BUILTIN=y
CONFIG_DEBUG_ASSERTIONS=y CONFIG_DEBUG_ASSERTIONS=y

View File

@ -18,6 +18,8 @@
* *
****************************************************************************/ ****************************************************************************/
#include <nuttx/config.h>
OUTPUT_ARCH(aarch64) OUTPUT_ARCH(aarch64)
ENTRY(__start) ENTRY(__start)
@ -93,6 +95,10 @@ SECTIONS
} :text } :text
_edata = .; /* End+1 of .data */ _edata = .; /* End+1 of .data */
#if defined(CONFIG_SMP) && defined(CONFIG_ARM64_SMP_BUSY_WAIT)
. = CONFIG_ARM64_SMP_BUSY_WAIT_FLAG_ADDR + 4;
#endif
.bss : { /* BSS */ .bss : { /* BSS */
. = ALIGN(8); . = ALIGN(8);
_sbss = .; _sbss = .;