[U-Boot] [PATCH v2 7/9] riscv: do not rely on hart ID passed by previous boot stage
Atish Patra
atish.patra at wdc.com
Thu Mar 7 03:26:22 UTC 2019
On 3/5/19 2:54 PM, Lukas Auer wrote:
> RISC-V U-Boot expects the hart ID to be passed to it via register a0 by
> the previous boot stage. Machine mode firmware such as BBL and OpenSBI
> do this when starting their payload (U-Boot) in supervisor mode. If
> U-Boot is running in machine mode, this task must be handled by the boot
> ROM. Explicitly populate register a0 with the hart ID from the mhartid
> CSR to avoid possible problems on RISC-V processors with a boot ROM that
> does not handle this task.
>
> Suggested-by: Rick Chen <rick at andestech.com>
> Signed-off-by: Lukas Auer <lukas.auer at aisec.fraunhofer.de>
> ---
>
> Changes in v2:
> - New patch to populate register a0 with the hart ID from the mhartid
> CSR in machine-mode
>
> arch/riscv/cpu/start.S | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/riscv/cpu/start.S b/arch/riscv/cpu/start.S
> index 79b753847c..d4daa6e0bf 100644
> --- a/arch/riscv/cpu/start.S
> +++ b/arch/riscv/cpu/start.S
> @@ -36,6 +36,10 @@
> .section .text
> .globl _start
> _start:
> +#ifdef CONFIG_RISCV_MMODE
> + csrr a0, mhartid
> +#endif
> +
> /* save hart id and dtb pointer */
> mv s0, a0
> mv s1, a1
>
Reviewed-by: Atish Patra <atish.patra at wdc.com>
Regards,
Atish
More information about the U-Boot
mailing list