forked from pool/grub2
73 lines
2.2 KiB
Diff
73 lines
2.2 KiB
Diff
|
From 303109b36a45f53400cbcdaf2ad90ca5790ce1d6 Mon Sep 17 00:00:00 2001
|
||
|
From: Anton Blanchard <anton@samba.org>
|
||
|
Date: Wed, 29 Jan 2014 10:41:29 +1100
|
||
|
Subject: [PATCH 15/23] Add 64bit support to powerpc startup code
|
||
|
|
||
|
Add 64bit support to powerpc startup code
|
||
|
|
||
|
From: Anton Blanchard <anton@samba.org>
|
||
|
Signed-off-by: Ram Pai <linuxram@us.ibm.com>
|
||
|
---
|
||
|
grub-core/kern/powerpc/ieee1275/startup.S | 33 +++++++++++++++++++++++++++----
|
||
|
1 file changed, 29 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/grub-core/kern/powerpc/ieee1275/startup.S b/grub-core/kern/powerpc/ieee1275/startup.S
|
||
|
index 21c884b..03f80d8 100644
|
||
|
--- a/grub-core/kern/powerpc/ieee1275/startup.S
|
||
|
+++ b/grub-core/kern/powerpc/ieee1275/startup.S
|
||
|
@@ -19,15 +19,28 @@
|
||
|
|
||
|
#include <grub/symbol.h>
|
||
|
#include <grub/offsets.h>
|
||
|
+#include <ppc-asm.h>
|
||
|
|
||
|
.extern __bss_start
|
||
|
.extern _end
|
||
|
|
||
|
.text
|
||
|
- .align 2
|
||
|
- .globl start, _start
|
||
|
-start:
|
||
|
-_start:
|
||
|
+
|
||
|
+FUNC_START(_start)
|
||
|
+
|
||
|
+#if defined(_CALL_ELF) && _CALL_ELF == 2 /* LITTLE ENDIAN */
|
||
|
+ tdi 0,0,0x48 /* Reverse endian of b . + 8 */
|
||
|
+ b $+36 /* Skip trampoline if already LE mode */
|
||
|
+ .long 0x05009f42 /* bcl 20,31,$+4 */
|
||
|
+ .long 0xa602487d /* mflr r10 */
|
||
|
+ .long 0x1c004a39 /* addi r10,r10,28 */
|
||
|
+ .long 0xa600607d /* mfmsr r11 */
|
||
|
+ .long 0x01006b69 /* xori r11,r11,1 */
|
||
|
+ .long 0xa6035a7d /* mtsrr0 r10 */
|
||
|
+ .long 0xa6037b7d /* mtsrr1 r11 */
|
||
|
+ .long 0x2400004c /* rfid */
|
||
|
+#endif
|
||
|
+
|
||
|
li 2, 0
|
||
|
li 13, 0
|
||
|
|
||
|
@@ -61,7 +74,19 @@ _start:
|
||
|
|
||
|
/* Store r5 in grub_ieee1275_entry_fn. */
|
||
|
lis 9, grub_ieee1275_entry_fn@ha
|
||
|
+#if defined(_CALL_ELF) && _CALL_ELF == 1 /* BIG ENDIAN */
|
||
|
+ std 5, grub_ieee1275_entry_fn@l(9)
|
||
|
+#else
|
||
|
stw 5, grub_ieee1275_entry_fn@l(9)
|
||
|
+#endif
|
||
|
+
|
||
|
+#if defined(_CALL_ELF) && _CALL_ELF == 2 /* LITTLE ENDIAN */
|
||
|
+ bl 3f
|
||
|
+3: mflr 9
|
||
|
+ addis 2,9,.TOC.-3b@ha
|
||
|
+ addi 2,2,.TOC.-3b@l
|
||
|
+#endif
|
||
|
|
||
|
bl grub_main
|
||
|
1: b 1b
|
||
|
+FUNC_END(_start)
|
||
|
--
|
||
|
1.8.3.1
|