From 59c943ecf6bf26a3ef07c9ebd85a21f9402eeee0 Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Mon, 18 Nov 2013 02:35:32 +0100 Subject: [PATCH] * 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. --- ChangeLog | 6 ++++++ grub-core/lib/powerpc/setjmp.S | 10 ++++++---- include/grub/powerpc/setjmp.h | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) 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));