]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/lib/powerpc/setjmp.S (grub_setjmp): Save r31.
authorVladimir Serbinenko <phcoder@gmail.com>
Mon, 18 Nov 2013 01:35:32 +0000 (02:35 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Mon, 18 Nov 2013 01:35:32 +0000 (02:35 +0100)
(grub_longjmp): Restore r31.
* include/grub/powerpc/setjmp.h (grub_jmp_buf): Reserve space for r31.

ChangeLog
grub-core/lib/powerpc/setjmp.S
include/grub/powerpc/setjmp.h

index 050f0b70d49c6f5ea7bf8c9dd6e64fc081cc44d5..49d75e0706b6aef68f2b31253f6ceefbf57518f5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-11-18  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/lib/powerpc/setjmp.S (grub_setjmp): Save r31.
+       (grub_longjmp): Restore r31.
+       * include/grub/powerpc/setjmp.h (grub_jmp_buf): Reserve space for r31.
+
 2013-11-18  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * util/grub-mkrescue.c (make_image_fwdisk_abs): Insert all partmap
index c301a7b07656fde73f63b0fd0e26dcf09ac2320c..716b563fa76e262423fbb50b64d63781acd015c8 100644 (file)
@@ -47,10 +47,11 @@ FUNCTION(grub_setjmp)
        stw     28, 60(3)
        stw     29, 64(3)
        stw     30, 68(3)
+       stw     31, 72(3)
        mflr    4
-       stw     4, 72(3)
-       mfcr    4
        stw     4, 76(3)
+       mfcr    4
+       stw     4, 80(3)
        li      3, 0
        blr
 
@@ -76,9 +77,10 @@ FUNCTION(grub_longjmp)
        lwz     28, 60(3)
        lwz     29, 64(3)
        lwz     30, 68(3)
-       lwz     5, 72(3)
-       mtlr    5
+       lwz     31, 72(3)
        lwz     5, 76(3)
+       mtlr    5
+       lwz     5, 80(3)
        mtcr    5
        mr.     3, 4
        bne     1f
index 9beddfdb259cb9b469693e2cc231e845362d0ca2..7c2d184fae1219ffb0bbd098a2e93dcab1414475 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef GRUB_SETJMP_CPU_HEADER
 #define GRUB_SETJMP_CPU_HEADER 1
 
-typedef unsigned long grub_jmp_buf[20];
+typedef unsigned long grub_jmp_buf[21];
 
 int grub_setjmp (grub_jmp_buf env) RETURNS_TWICE;
 void grub_longjmp (grub_jmp_buf env, int val) __attribute__ ((noreturn));