LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File grub2-ppc64le-15-Add-64bit-support-to-powerpc-startup-code.patch of Package grub2 (Project home:Ledest:bashisms)

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