mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-06-20 13:41:45 +00:00
armv8: layerscape: properly use CPU_RELEASE_ADDR
The generic armv8 code already has support to bring up the secondary cores. Thus, don't hardcode the jump in the layerscape lowlevel_init to the spin table code; instead just return early and let the common armv8 code handle the jump. This way we can actually use the CPU_RELEASE_ADDR feature. Signed-off-by: Michael Walle <michael@walle.cc> [Rebased, Removed kontron_sl28.h change as file does not exist] Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
parent
ae846a6119
commit
3d3fe8b12d
8 changed files with 18 additions and 9 deletions
|
@ -208,8 +208,13 @@ ENTRY(lowlevel_init)
|
||||||
branch_if_master x0, x1, 2f
|
branch_if_master x0, x1, 2f
|
||||||
|
|
||||||
#if defined(CONFIG_MP) && defined(CONFIG_ARMV8_MULTIENTRY)
|
#if defined(CONFIG_MP) && defined(CONFIG_ARMV8_MULTIENTRY)
|
||||||
ldr x0, =secondary_boot_func
|
/*
|
||||||
blr x0
|
* Formerly, here was a jump to secondary_boot_func, but we just
|
||||||
|
* return early here and let the generic code in start.S handle
|
||||||
|
* the jump to secondary_boot_func.
|
||||||
|
*/
|
||||||
|
mov lr, x29 /* Restore LR */
|
||||||
|
ret
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
2:
|
2:
|
||||||
|
@ -421,6 +426,11 @@ ENDPROC(__asm_flush_l3_dcache)
|
||||||
#endif /* CONFIG_SYS_FSL_HAS_CCN504 */
|
#endif /* CONFIG_SYS_FSL_HAS_CCN504 */
|
||||||
|
|
||||||
#ifdef CONFIG_MP
|
#ifdef CONFIG_MP
|
||||||
|
.align 3
|
||||||
|
.global secondary_boot_addr
|
||||||
|
secondary_boot_addr:
|
||||||
|
.quad secondary_boot_func
|
||||||
|
|
||||||
/* Keep literals not used by the secondary boot code outside it */
|
/* Keep literals not used by the secondary boot code outside it */
|
||||||
.ltorg
|
.ltorg
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,6 @@ static inline int fsl_layerscape_wake_seconday_cores(void) { return 0; }
|
||||||
#endif
|
#endif
|
||||||
void *get_spin_tbl_addr(void);
|
void *get_spin_tbl_addr(void);
|
||||||
phys_addr_t determine_mp_bootpg(void);
|
phys_addr_t determine_mp_bootpg(void);
|
||||||
void secondary_boot_func(void);
|
|
||||||
int is_core_online(u64 cpu_id);
|
int is_core_online(u64 cpu_id);
|
||||||
u32 cpu_pos_mask(void);
|
u32 cpu_pos_mask(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
/*
|
/*
|
||||||
* SMP Definitinos
|
* SMP Definitinos
|
||||||
*/
|
*/
|
||||||
#define CPU_RELEASE_ADDR secondary_boot_func
|
#define CPU_RELEASE_ADDR secondary_boot_addr
|
||||||
|
|
||||||
/* Generic Timer Definitions */
|
/* Generic Timer Definitions */
|
||||||
#define COUNTER_FREQUENCY 25000000 /* 25MHz */
|
#define COUNTER_FREQUENCY 25000000 /* 25MHz */
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
#define CONFIG_SYS_SDRAM_BASE CONFIG_SYS_DDR_SDRAM_BASE
|
#define CONFIG_SYS_SDRAM_BASE CONFIG_SYS_DDR_SDRAM_BASE
|
||||||
#define CONFIG_SYS_DDR_BLOCK2_BASE 0x880000000ULL
|
#define CONFIG_SYS_DDR_BLOCK2_BASE 0x880000000ULL
|
||||||
|
|
||||||
#define CPU_RELEASE_ADDR secondary_boot_func
|
#define CPU_RELEASE_ADDR secondary_boot_addr
|
||||||
|
|
||||||
/* Generic Timer Definitions */
|
/* Generic Timer Definitions */
|
||||||
#define COUNTER_FREQUENCY 25000000 /* 25MHz */
|
#define COUNTER_FREQUENCY 25000000 /* 25MHz */
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
#define CONFIG_SYS_SDRAM_BASE CONFIG_SYS_DDR_SDRAM_BASE
|
#define CONFIG_SYS_SDRAM_BASE CONFIG_SYS_DDR_SDRAM_BASE
|
||||||
#define CONFIG_SYS_DDR_BLOCK2_BASE 0x880000000ULL
|
#define CONFIG_SYS_DDR_BLOCK2_BASE 0x880000000ULL
|
||||||
|
|
||||||
#define CPU_RELEASE_ADDR secondary_boot_func
|
#define CPU_RELEASE_ADDR secondary_boot_addr
|
||||||
|
|
||||||
/* Generic Timer Definitions */
|
/* Generic Timer Definitions */
|
||||||
#define COUNTER_FREQUENCY 25000000 /* 25MHz */
|
#define COUNTER_FREQUENCY 25000000 /* 25MHz */
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
/*
|
/*
|
||||||
* SMP Definitinos
|
* SMP Definitinos
|
||||||
*/
|
*/
|
||||||
#define CPU_RELEASE_ADDR secondary_boot_func
|
#define CPU_RELEASE_ADDR secondary_boot_addr
|
||||||
|
|
||||||
/* Size of malloc() pool */
|
/* Size of malloc() pool */
|
||||||
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 2048 * 1024)
|
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 2048 * 1024)
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
/*
|
/*
|
||||||
* SMP Definitinos
|
* SMP Definitinos
|
||||||
*/
|
*/
|
||||||
#define CPU_RELEASE_ADDR secondary_boot_func
|
#define CPU_RELEASE_ADDR secondary_boot_addr
|
||||||
|
|
||||||
#define CONFIG_SYS_FSL_OTHER_DDR_NUM_CTRLS
|
#define CONFIG_SYS_FSL_OTHER_DDR_NUM_CTRLS
|
||||||
#ifdef CONFIG_SYS_FSL_HAS_DP_DDR
|
#ifdef CONFIG_SYS_FSL_HAS_DP_DDR
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000)
|
#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000)
|
||||||
|
|
||||||
/* SMP Definitinos */
|
/* SMP Definitinos */
|
||||||
#define CPU_RELEASE_ADDR secondary_boot_func
|
#define CPU_RELEASE_ADDR secondary_boot_addr
|
||||||
|
|
||||||
/* Generic Timer Definitions */
|
/* Generic Timer Definitions */
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue