grub-devel
[Top][All Lists]
Advanced

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

[RFC PATCH 11/23] Fix powerpc setjmp/longjmp 64bit issues


From: Ram Pai
Subject: [RFC PATCH 11/23] Fix powerpc setjmp/longjmp 64bit issues
Date: Wed, 26 Feb 2014 10:31:10 -0800

From: Anton Blanchard <address@hidden>

 Fix powerpc setjmp/longjmp 64bit issues

Signed-off-by: Ram Pai <address@hidden>
From:  Anton Blanchard <address@hidden>
---
 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.5.3




reply via email to

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