From 653e20ad39923aace0117fb7b51df27784587652 Mon Sep 17 00:00:00 2001 From: Anton Blanchard 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 From: Anton Blanchard --- 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