LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File grub2-ppc64le-13-Fix-powerpc-setjmp-longjmp-64bit-issues.patch of Package grub2 (Project home:Ledest:bashisms)

From 653e20ad39923aace0117fb7b51df27784587652 Mon Sep 17 00:00:00 2001
From: Anton Blanchard <anton@samba.org>
Date: Wed, 29 Jan 2014 10:39:32 +1100
Subject: [PATCH 13/23] Fix powerpc setjmp/longjmp 64bit issues

Fix powerpc setjmp/longjmp 64bit issues

Signed-off-by: Ram Pai <linuxram@us.ibm.com>
From:  Anton Blanchard <anton@samba.org>
---
 grub-core/lib/powerpc/setjmp.S | 94 +++++++++++++++++++++++-------------------
 1 file changed, 52 insertions(+), 42 deletions(-)

diff --git a/grub-core/lib/powerpc/setjmp.S b/grub-core/lib/powerpc/setjmp.S
index 716b563..51fcae9 100644
--- a/grub-core/lib/powerpc/setjmp.S
+++ b/grub-core/lib/powerpc/setjmp.S
@@ -25,33 +25,43 @@ GRUB_MOD_LICENSE "GPLv3+"
 
 	.text
 
+#if defined( __powerpc64__ ) || defined( __powerpc64le__ )
+#define LOAD	ld
+#define STORE	std
+#define SZ_LONG	8
+#else
+#define LOAD	lwz
+#define STORE	stw
+#define SZ_LONG	4
+#endif
+
 /*
  * int grub_setjmp (grub_jmp_buf env)
  */
 FUNCTION(grub_setjmp)
-	stw	1, 0(3)
-	stw	14, 4(3)
-	stw	15, 8(3)
-	stw	16, 12(3)
-	stw	17, 16(3)
-	stw	18, 20(3)
-	stw	19, 24(3)
-	stw	20, 28(3)
-	stw	21, 32(3)
-	stw	22, 36(3)
-	stw	23, 40(3)
-	stw	24, 44(3)
-	stw	25, 48(3)
-	stw	26, 52(3)
-	stw	27, 56(3)
-	stw	28, 60(3)
-	stw	29, 64(3)
-	stw	30, 68(3)
-	stw	31, 72(3)
+	STORE	1, 0(3)
+	STORE	14, 1*SZ_LONG(3)
+	STORE	15, 2*SZ_LONG(3)
+	STORE	16, 3*SZ_LONG(3)
+	STORE	17, 4*SZ_LONG(3)
+	STORE	18, 5*SZ_LONG(3)
+	STORE	19, 6*SZ_LONG(3)
+	STORE	20, 7*SZ_LONG(3)
+	STORE	21, 8*SZ_LONG(3)
+	STORE	22, 9*SZ_LONG(3)
+	STORE	23, 10*SZ_LONG(3)
+	STORE	24, 11*SZ_LONG(3)
+	STORE	25, 12*SZ_LONG(3)
+	STORE	26, 13*SZ_LONG(3)
+	STORE	27, 14*SZ_LONG(3)
+	STORE	28, 15*SZ_LONG(3)
+	STORE	29, 16*SZ_LONG(3)
+	STORE	30, 17*SZ_LONG(3)
+	STORE	31, 18*SZ_LONG(3)
 	mflr	4
-	stw	4, 76(3)
+	STORE	4, 19*SZ_LONG(3)
 	mfcr	4
-	stw	4, 80(3)
+	STORE	4, 20*SZ_LONG(3)
 	li	3, 0
 	blr
 
@@ -59,28 +69,28 @@ FUNCTION(grub_setjmp)
  * int grub_longjmp (grub_jmp_buf env, int val)
  */
 FUNCTION(grub_longjmp)
-	lwz	1, 0(3)
-	lwz	14, 4(3)
-	lwz	15, 8(3)
-	lwz	16, 12(3)
-	lwz	17, 16(3)
-	lwz	18, 20(3)
-	lwz	19, 24(3)
-	lwz	20, 28(3)
-	lwz	21, 32(3)
-	lwz	22, 36(3)
-	lwz	23, 40(3)
-	lwz	24, 44(3)
-	lwz	25, 48(3)
-	lwz	26, 52(3)
-	lwz	27, 56(3)
-	lwz	28, 60(3)
-	lwz	29, 64(3)
-	lwz	30, 68(3)
-	lwz	31, 72(3)
-	lwz	5, 76(3)
+	LOAD	1, 0(3)
+	LOAD	14, 1*SZ_LONG(3)
+	LOAD	15, 2*SZ_LONG(3)
+	LOAD	16, 3*SZ_LONG(3)
+	LOAD	17, 4*SZ_LONG(3)
+	LOAD	18, 5*SZ_LONG(3)
+	LOAD	19, 6*SZ_LONG(3)
+	LOAD	20, 7*SZ_LONG(3)
+	LOAD	21, 8*SZ_LONG(3)
+	LOAD	22, 9*SZ_LONG(3)
+	LOAD	23, 10*SZ_LONG(3)
+	LOAD	24, 11*SZ_LONG(3)
+	LOAD	25, 12*SZ_LONG(3)
+	LOAD	26, 13*SZ_LONG(3)
+	LOAD	27, 14*SZ_LONG(3)
+	LOAD	28, 15*SZ_LONG(3)
+	LOAD	29, 16*SZ_LONG(3)
+	LOAD	30, 17*SZ_LONG(3)
+	LOAD	31, 18*SZ_LONG(3)
+	LOAD	5, 19*SZ_LONG(3)
 	mtlr	5
-	lwz	5, 80(3)
+	LOAD	5, 20*SZ_LONG(3)
 	mtcr	5
 	mr.	3, 4
 	bne	1f
-- 
1.8.3.1