From: Vladimir Serbinenko Date: Mon, 18 Nov 2013 01:35:32 +0000 (+0100) Subject: * grub-core/lib/powerpc/setjmp.S (grub_setjmp): Save r31. X-Git-Tag: grub-2.02-beta1~291 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59c943ecf6bf26a3ef07c9ebd85a21f9402eeee0;p=thirdparty%2Fgrub.git * 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. --- diff --git a/ChangeLog b/ChangeLog index 050f0b70d..49d75e070 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2013-11-18 Vladimir Serbinenko + + * 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 * util/grub-mkrescue.c (make_image_fwdisk_abs): Insert all partmap diff --git a/grub-core/lib/powerpc/setjmp.S b/grub-core/lib/powerpc/setjmp.S index c301a7b07..716b563fa 100644 --- a/grub-core/lib/powerpc/setjmp.S +++ b/grub-core/lib/powerpc/setjmp.S @@ -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 diff --git a/include/grub/powerpc/setjmp.h b/include/grub/powerpc/setjmp.h index 9beddfdb2..7c2d184fa 100644 --- a/include/grub/powerpc/setjmp.h +++ b/include/grub/powerpc/setjmp.h @@ -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));