[RFC PATCH v2 1/2] arch: riscv: cpu: Add callback to init each core

Sean Anderson seanga2 at gmail.com
Fri Mar 26 02:34:53 CET 2021


On 3/25/21 9:22 PM, Leo Liang wrote:
> Hi Green,
> 
> On Tue, Mar 23, 2021 at 01:35:38AM -0700, Green Wan wrote:
>> Add a callback riscv_hart_early_init() to ./arch/riscv/cpu/start.S to
>> allow different riscv hart perform setup code for each hart as early
>> as possible. Since all the harts enter the calback, they must be able
>> to run the same setup.
>>
>> Signed-off-by: Green Wan <green.wan at sifive.com>
>> ---
>>   arch/riscv/cpu/start.S | 5 +++++
>>   arch/riscv/lib/spl.c   | 4 ++++
> 
> This patch fails to compile for some defconfigs.
> (CI result: https://dev.azure.com/ycliang-tw/u-boot-riscv/_build/results?buildId=15&view=results)
> 
> Maybe we should come up with a better place to add this function.

arch/riscv/cpu/cpu.c is a good candidate.

--Sean

> 
> Best regards,
> Leo
> 
>>   2 files changed, 9 insertions(+)
>>
>> diff --git a/arch/riscv/cpu/start.S b/arch/riscv/cpu/start.S
>> index 8589509e01..5c7d4da9e2 100644
>> --- a/arch/riscv/cpu/start.S
>> +++ b/arch/riscv/cpu/start.S
>> @@ -117,6 +117,11 @@ call_board_init_f_0:
>>   	mv	sp, a0
>>   #endif
>>   
>> +#if CONFIG_IS_ENABLED(RISCV_MMODE)
>> +call_riscv_hart_early_init:
>> +	jal	riscv_hart_early_init
>> +#endif
>> +
>>   #ifndef CONFIG_XIP
>>   	/*
>>   	 * Pick hart to initialize global data and run U-Boot. The other harts
>> diff --git a/arch/riscv/lib/spl.c b/arch/riscv/lib/spl.c
>> index 8baee07bea..e5b1affbfc 100644
>> --- a/arch/riscv/lib/spl.c
>> +++ b/arch/riscv/lib/spl.c
>> @@ -14,6 +14,10 @@
>>   
>>   DECLARE_GLOBAL_DATA_PTR;
>>   
>> +__weak void riscv_hart_early_init(void)
>> +{
>> +}
>> +
>>   __weak int spl_board_init_f(void)
>>   {
>>   	return 0;



More information about the U-Boot mailing list