The SMP boot code depends on physical CPU #0 to be first to boot and subsequent CPUs to follow suit in a linear fashion. Let's decouple physical and logical numbering so that any physical CPU can be the boot CPU. This is based on a prior code proposal from Jiafei Pan <Jiafei.Pan@nxp.com>. This, however, was about to turn the boot code into some hairy mess. So let's clean things up and simplify the code as well while at it. Both the extension and the clean up aren't separate commits because they actually depend on each other. The BOOT_PARAM_*_OFFSET defines are locally hardcoded as there is no point exposing the related structure widely. Build time assertions ensure they don't go out of sync with the struct definition. And vector_table.h is repurposed into boot.h to gather boot related definitions. Signed-off-by: Nicolas Pitre <npitre@baylibre.com> Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
27 lines
436 B
C
27 lines
436 B
C
/*
|
|
* Copyright (c) 2019 Carlo Caione <ccaione@baylibre.com>
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @file
|
|
* @brief Definitions for boot code
|
|
*/
|
|
|
|
#ifndef _BOOT_H_
|
|
#define _BOOT_H_
|
|
|
|
#ifndef _ASMLANGUAGE
|
|
|
|
extern void *_vector_table[];
|
|
extern void __start(void);
|
|
|
|
#endif /* _ASMLANGUAGE */
|
|
|
|
/* Offsets into the boot_params structure */
|
|
#define BOOT_PARAM_MPID_OFFSET 0
|
|
#define BOOT_PARAM_SP_OFFSET 8
|
|
|
|
#endif /* _BOOT_H_ */
|