]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
loongarch: Add early startup code
authorXiaotian Wu <wuxiaotian@loongson.cn>
Thu, 27 Apr 2023 07:43:03 +0000 (15:43 +0800)
committerDaniel Kiper <daniel.kiper@oracle.com>
Wed, 17 May 2023 10:53:08 +0000 (12:53 +0200)
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: Zhou Yang <zhouyang@loongson.cn>
Signed-off-by: Xiaotian Wu <wuxiaotian@loongson.cn>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/kern/loongarch64/efi/startup.S [new file with mode: 0644]

diff --git a/grub-core/kern/loongarch64/efi/startup.S b/grub-core/kern/loongarch64/efi/startup.S
new file mode 100644 (file)
index 0000000..87cfb23
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2023 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>
+
+       .file   "startup.S"
+       .text
+
+FUNCTION(_start)
+       /*
+        * EFI_SYSTEM_TABLE and EFI_HANDLE are passed in $a1/$a0.
+        */
+
+       la              $a2, EXT_C(grub_efi_image_handle)
+       st.d            $a0, $a2, 0
+       la              $a2, EXT_C(grub_efi_system_table)
+       st.d            $a1, $a2, 0
+
+       b               EXT_C(grub_main)