From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1WIjHM-0001ua-2N for mharc-grub-devel@gnu.org; Wed, 26 Feb 2014 13:32:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42891) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WIjHC-0001cH-Ez for grub-devel@gnu.org; Wed, 26 Feb 2014 13:32:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WIjH4-0001BS-Oi for grub-devel@gnu.org; Wed, 26 Feb 2014 13:32:14 -0500 Received: from e38.co.us.ibm.com ([32.97.110.159]:33868) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WIjH4-0001BJ-Ic for grub-devel@gnu.org; Wed, 26 Feb 2014 13:32:06 -0500 Received: from /spool/local by e38.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 26 Feb 2014 11:32:06 -0700 Received: from d03dlp01.boulder.ibm.com (9.17.202.177) by e38.co.us.ibm.com (192.168.1.138) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 26 Feb 2014 11:32:05 -0700 Received: from b03cxnp08027.gho.boulder.ibm.com (b03cxnp08027.gho.boulder.ibm.com [9.17.130.19]) by d03dlp01.boulder.ibm.com (Postfix) with ESMTP id 7A4951FF0046 for ; Wed, 26 Feb 2014 11:32:04 -0700 (MST) Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by b03cxnp08027.gho.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s1QIVc961245528 for ; Wed, 26 Feb 2014 19:31:38 +0100 Received: from d03av02.boulder.ibm.com (localhost [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s1QIW40Y017141 for ; Wed, 26 Feb 2014 11:32:04 -0700 Received: from ram.oc3035372033.ibm.com.com (sig-9-65-83-23.mts.ibm.com [9.65.83.23]) by d03av02.boulder.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id s1QIVZLa014663; Wed, 26 Feb 2014 11:32:01 -0700 From: Ram Pai To: grub-devel@gnu.org Subject: [RFC PATCH 11/23] Fix powerpc setjmp/longjmp 64bit issues Date: Wed, 26 Feb 2014 10:31:10 -0800 Message-Id: <1393439482-20341-12-git-send-email-linuxram@us.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1393439482-20341-1-git-send-email-linuxram@us.ibm.com> References: <1393439482-20341-1-git-send-email-linuxram@us.ibm.com> X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 14022618-1344-0000-0000-000006173E1F X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-Received-From: 32.97.110.159 Cc: tlfalcon@linux.vnet.ibm.com, tbberry@us.ibm.com, anton@au1.ibm.com, linuxram@us.ibm.com, tonyb@au1.ibm.com, Anton Blanchard X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 Feb 2014 18:32:22 -0000 From: Anton Blanchard 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.5.3