firmware: Initialize stack guard via Zkr
Anup Patel
anup at brainfault.org
Mon Nov 3 19:52:01 PST 2025
On Mon, Oct 6, 2025 at 1:33 PM Xiang W <wxjstz at 126.com> wrote:
>
> Try to initialize stack protection guard via the zkr extension.
>
> Signed-off-by: Xiang W <wxjstz at 126.com>
The patch subject is lacking the "[PATCH]" prefix otherwise
it looks good to me.
Reviewed-by: Anup Patel <anup at brainfault.org>
Regards,
Anup
> ---
> firmware/fw_base.S | 24 ++++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
>
> diff --git a/firmware/fw_base.S b/firmware/fw_base.S
> index 5300ecf2..953fba95 100644
> --- a/firmware/fw_base.S
> +++ b/firmware/fw_base.S
> @@ -107,6 +107,30 @@ _bss_zero:
> add s4, s4, __SIZEOF_POINTER__
> blt s4, s5, _bss_zero
>
> + /* Trying to initialize the stack guard via the Zkr extension */
> + lla t0, __stack_chk_guard_done
> + csrw CSR_MTVEC, t0
> + li t0, 0
> + li t3, 2
> + li t4, 0xffff
> + li t5, __SIZEOF_POINTER__
> +__stack_chk_guard_loop:
> + csrrw t1, CSR_SEED, x0
> + srli t2, t1, 30
> + andi t2, t2, 3
> + bgt t2, t3, __stack_chk_guard_done
> + blt t2, t3, __stack_chk_guard_loop
> + and t1, t1, t4
> + slli t0, t0, 16
> + or t0, t0, t1
> + addi t5, t5, -2
> + bgtz t5, __stack_chk_guard_loop
> + lla t1, __stack_chk_guard
> + REG_S t0, 0(t1)
> + j __stack_chk_guard_done
> + .align 3
> +__stack_chk_guard_done:
> +
> /* Setup temporary trap handler */
> lla s4, _start_hang
> csrw CSR_MTVEC, s4
> --
> 2.47.3
>
More information about the opensbi
mailing list