grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 5/9] RISC-V: Add early startup code


From: Alistair Francis
Subject: Re: [PATCH 5/9] RISC-V: Add early startup code
Date: Thu, 8 Nov 2018 23:20:38 +0000

On Tue, 2018-11-06 at 18:58 +0100, Alexander Graf wrote:
> On entry, we need to save the system table pointer as well as our
> image
> handle. Add an early startup file that saves them and then brings us
> into our main function.
> 
> Signed-off-by: Alexander Graf <address@hidden>

Reviewed-by: Alistair Francis <address@hidden>

Alistair

> ---
>  grub-core/kern/riscv/efi/startup.S | 49
> ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 49 insertions(+)
>  create mode 100644 grub-core/kern/riscv/efi/startup.S
> 
> diff --git a/grub-core/kern/riscv/efi/startup.S b/grub-
> core/kern/riscv/efi/startup.S
> new file mode 100644
> index 000000000..026f99bab
> --- /dev/null
> +++ b/grub-core/kern/riscv/efi/startup.S
> @@ -0,0 +1,49 @@
> +/*
> + *  GRUB  --  GRand Unified Bootloader
> + *  Copyright (C) 2013  Free Software Foundation, Inc.
> + *
> + *  GRUB is free software: you can redistribute it and/or modify
> + *  it under the terms of the GNU General Public License as
> published by
> + *  the Free Software Foundation, either version 3 of the License,
> or
> + *  (at your option) any later version.
> + *
> + *  GRUB is distributed in the hope that it will be useful,
> + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *  GNU General Public License for more details.
> + *
> + *  You should have received a copy of the GNU General Public
> License
> + *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>;.
> + */
> +
> +#include <grub/symbol.h>
> +
> +#if __riscv_xlen == 64
> +#define sl           sd
> +#define ll           ld
> +#else
> +#define sl           sw
> +#define ll           lw
> +#endif
> +
> +
> +     .file   "startup.S"
> +     .text
> +FUNCTION(_start)
> +     /*
> +      *  EFI_SYSTEM_TABLE and EFI_HANDLE are passed in a1/a0.
> +      */
> +
> +     ll      a2, efi_image_handle_val
> +     sl      a0, 0(a2)
> +     ll      a2, efi_system_table_val
> +     sl      a1, 0(a2)
> +     ll      a2, grub_main_val
> +     jr      a2
> +grub_main_val:
> +     .quad   EXT_C(grub_main)
> +efi_system_table_val:
> +     .quad   EXT_C(grub_efi_system_table)
> +efi_image_handle_val:
> +     .quad   EXT_C(grub_efi_image_handle)
> +

reply via email to

[Prev in Thread] Current Thread [Next in Thread]