[PATCH 0/3] efi_loader: save global data pointer on RISC-V

Sean Anderson seanga2 at gmail.com
Thu Sep 10 13:03:23 CEST 2020


On 9/10/20 7:00 AM, Heinrich Schuchardt wrote:
> On the RISC-V platform register gp (x3) is used as global data pointer in
> U-Boot. When executing a UEFI binary we cannot assume that the payload
> will restore the register before calling the UEFI API. So U-Boot must
> take care of saving the register value before invoking the payload and
> restoring it whenever the API is called or the payload returns.
> 
> On some system like the Sipeed Maix we do not have a UEFI runtime reset
> implementation. Hence we call do_reset() in the UEFI selftest. Here too we
> need to restore the global data pointer before invoking the U-Boot API.
> 
> Heinrich Schuchardt (3):
>   riscv: define function set_gd()
>   efi_loader: save global data pointer on RISC-V
>   efi_selftest: restore gd before do_reset()
> 
>  arch/riscv/include/asm/global_data.h |  9 +++++
>  lib/efi_loader/efi_boottime.c        | 54 ++++++++++++++--------------
>  lib/efi_selftest/efi_selftest.c      |  6 ++--
>  3 files changed, 40 insertions(+), 29 deletions(-)
> 
> --
> 2.28.0
> 

Do we need to save tp as well? It is used by secondary harts to save the
hartid for handle_ipi.

--Sean


More information about the U-Boot mailing list