Blame SOURCES/0142-Files-reorganization-and-include-some-libgcc-fuction.patch

6b3c76
From 034afc94f6126bd352587265f03fa383f998f0fc Mon Sep 17 00:00:00 2001
a85e8e
From: Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com>
a85e8e
Date: Wed, 13 Aug 2014 19:00:19 +0000
6b3c76
Subject: [PATCH 142/261] Files reorganization and include some libgcc fuctions
a85e8e
a85e8e
As we avoid libgcc dependency for powerpc64el, we moved some functions
a85e8e
to other files and add the necessary ones.
a85e8e
a85e8e
* Makefile.core.def: Include compiler-rt.S.
a85e8e
* misc.c: Add the necessary libgcc functions.
a85e8e
* compiler-rt.S: New file.
a85e8e
* libgcc.h: Move some content from here ...
a85e8e
* compiler.h: ... to here.
a85e8e
a85e8e
Also-By: Brent Baude <bbaude@redhat.com>
a85e8e
Also-By: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
a85e8e
---
a85e8e
 grub-core/Makefile.core.def          |   1 +
a85e8e
 grub-core/kern/misc.c                | 107 ++++++++++++++++++++++++++++
6b3c76
 grub-core/kern/powerpc/compiler-rt.S | 130 +++++++++++++++++++++++++++++++++++
a85e8e
 include/grub/compiler.h              |  61 ++++++++++++++++
a85e8e
 include/grub/libgcc.h                |  67 ------------------
a85e8e
 5 files changed, 299 insertions(+), 67 deletions(-)
a85e8e
 create mode 100644 grub-core/kern/powerpc/compiler-rt.S
a85e8e
a85e8e
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
6b3c76
index 7bf1c8a58..9ff9ae5a3 100644
a85e8e
--- a/grub-core/Makefile.core.def
a85e8e
+++ b/grub-core/Makefile.core.def
a85e8e
@@ -252,6 +252,7 @@ kernel = {
a85e8e
 
a85e8e
   powerpc_ieee1275 = kern/powerpc/cache.S;
a85e8e
   powerpc_ieee1275 = kern/powerpc/dl.c;
a85e8e
+  powerpc_ieee1275 = kern/powerpc/compiler-rt.S;
a85e8e
 
a85e8e
   sparc64_ieee1275 = kern/sparc64/cache.S;
a85e8e
   sparc64_ieee1275 = kern/sparc64/dl.c;
a85e8e
diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
6b3c76
index a56cfe789..a3e5056db 100644
a85e8e
--- a/grub-core/kern/misc.c
a85e8e
+++ b/grub-core/kern/misc.c
a85e8e
@@ -1345,3 +1345,110 @@ grub_real_boot_time (const char *file,
a85e8e
   grub_error_pop ();
a85e8e
 }
a85e8e
 #endif
a85e8e
+
a85e8e
+#if defined (NO_LIBGCC)
a85e8e
+
a85e8e
+/* Based on libgcc2.c from gcc suite.  */
a85e8e
+int
a85e8e
+__ucmpdi2 (grub_uint64_t a, grub_uint64_t b)
a85e8e
+{
a85e8e
+  union component64 ac, bc;
a85e8e
+  ac.full = a;
a85e8e
+  bc.full = b;
a85e8e
+
a85e8e
+  if (ac.high < bc.high)
a85e8e
+    return 0;
a85e8e
+  else if (ac.high > bc.high)
a85e8e
+    return 2;
a85e8e
+
a85e8e
+  if (ac.low < bc.low)
a85e8e
+    return 0;
a85e8e
+  else if (ac.low > bc.low)
a85e8e
+    return 2;
a85e8e
+  return 1;
a85e8e
+}
a85e8e
+
a85e8e
+
a85e8e
+/* Based on libgcc2.c from gcc suite.  */
a85e8e
+grub_uint64_t
a85e8e
+__lshrdi3 (grub_uint64_t u, int b)
a85e8e
+{
a85e8e
+  if (b == 0)
a85e8e
+    return u;
a85e8e
+
a85e8e
+  const union component64 uu = {.full = u};
a85e8e
+  const int bm = 32 - b;
a85e8e
+  union component64 w;
a85e8e
+
a85e8e
+  if (bm <= 0)
a85e8e
+    {
a85e8e
+      w.high = 0;
a85e8e
+      w.low = (grub_uint32_t) uu.high >> -bm;
a85e8e
+    }
a85e8e
+  else
a85e8e
+    {
a85e8e
+      const grub_uint32_t carries = (grub_uint32_t) uu.high << bm;
a85e8e
+
a85e8e
+      w.high = (grub_uint32_t) uu.high >> b;
a85e8e
+      w.low = ((grub_uint32_t) uu.low >> b) | carries;
a85e8e
+    }
a85e8e
+
a85e8e
+  return w.full;
a85e8e
+}
a85e8e
+
a85e8e
+/* Based on libgcc2.c from gcc suite.  */
a85e8e
+grub_uint64_t
a85e8e
+__ashrdi3 (grub_uint64_t u, int b)
a85e8e
+{
a85e8e
+  if (b == 0)
a85e8e
+    return u;
a85e8e
+
a85e8e
+  const union component64 uu = {.full = u};
a85e8e
+  const int bm = 32 - b;
a85e8e
+  union component64 w;
a85e8e
+
a85e8e
+  if (bm <= 0)
a85e8e
+    {
a85e8e
+      /* w.high = 1..1 or 0..0 */
a85e8e
+      w.high = uu.high >> (32 - 1);
a85e8e
+      w.low = uu.high >> -bm;
a85e8e
+    }
a85e8e
+  else
a85e8e
+    {
a85e8e
+      const grub_uint32_t carries = (grub_uint32_t) uu.high << bm;
a85e8e
+
a85e8e
+      w.high = uu.high >> b;
a85e8e
+      w.low = ((grub_uint32_t) uu.low >> b) | carries;
a85e8e
+    }
a85e8e
+
a85e8e
+  return w.full;
a85e8e
+}
a85e8e
+
a85e8e
+/* Based on libgcc2.c from gcc suite.  */
a85e8e
+grub_uint64_t
a85e8e
+__ashldi3 (grub_uint64_t u, int b)
a85e8e
+{
a85e8e
+  if (b == 0)
a85e8e
+    return u;
a85e8e
+
a85e8e
+  const union component64 uu = {.full = u};
a85e8e
+  const int bm = 32 - b;
a85e8e
+  union component64 w;
a85e8e
+
a85e8e
+  if (bm <= 0)
a85e8e
+    {
a85e8e
+      w.low = 0;
a85e8e
+      w.high = (grub_uint32_t) uu.low << -bm;
a85e8e
+    }
a85e8e
+  else
a85e8e
+    {
a85e8e
+      const grub_uint32_t carries = (grub_uint32_t) uu.low >> bm;
a85e8e
+
a85e8e
+      w.low = (grub_uint32_t) uu.low << b;
a85e8e
+      w.high = ((grub_uint32_t) uu.high << b) | carries;
a85e8e
+    }
a85e8e
+
a85e8e
+  return w.full;
a85e8e
+}
a85e8e
+
a85e8e
+#endif
6b3c76
diff --git a/grub-core/kern/powerpc/compiler-rt.S b/grub-core/kern/powerpc/compiler-rt.S
6b3c76
new file mode 100644
6b3c76
index 000000000..63e3a0d4e
6b3c76
--- /dev/null
6b3c76
+++ b/grub-core/kern/powerpc/compiler-rt.S
6b3c76
@@ -0,0 +1,130 @@
6b3c76
+/*
6b3c76
+ * Special support for eabi and SVR4
6b3c76
+ *
6b3c76
+ *   Copyright (C) 1995-2014 Free Software Foundation, Inc.
6b3c76
+ *   Written By Michael Meissner
6b3c76
+ *   64-bit support written by David Edelsohn
6b3c76
+ *
6b3c76
+ * This file is free software; you can redistribute it and/or modify it
6b3c76
+ * under the terms of the GNU General Public License as published by the
6b3c76
+ * Free Software Foundation; either version 3, or (at your option) any
6b3c76
+ * later version.
6b3c76
+ *
6b3c76
+ * This file is distributed in the hope that it will be useful, but
6b3c76
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
6b3c76
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
6b3c76
+ * General Public License for more details.
6b3c76
+ *
6b3c76
+ * Under Section 7 of GPL version 3, you are granted additional
6b3c76
+ * permissions described in the GCC Runtime Library Exception, version
6b3c76
+ * 3.1, as published by the Free Software Foundation.
6b3c76
+ *
6b3c76
+ * You should have received a copy of the GNU General Public License and
6b3c76
+ * a copy of the GCC Runtime Library Exception along with this program;
6b3c76
+ * see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
6b3c76
+ * <http://www.gnu.org/licenses/>.
6b3c76
+ */
6b3c76
+
6b3c76
+/* Do any initializations needed for the eabi environment */
6b3c76
+
6b3c76
+#include <grub/symbol.h>
6b3c76
+#include <grub/dl.h>
6b3c76
+
6b3c76
+	.section ".text"
6b3c76
+
6b3c76
+#define CFI_RESTORE(reg)		.cfi_restore reg
6b3c76
+#define CFI_OFFSET(reg, off)		.cfi_offset reg, off
6b3c76
+#define CFI_DEF_CFA_REGISTER(reg)	.cfi_def_cfa_register reg
6b3c76
+#define CFI_STARTPROC			.cfi_startproc
6b3c76
+#define CFI_ENDPROC			.cfi_endproc
6b3c76
+
6b3c76
+/* Routines for restoring integer registers, called by the compiler.  */
6b3c76
+/* Called with r11 pointing to the stack header word of the caller of the */
6b3c76
+/* function, just beyond the end of the integer restore area.  */
6b3c76
+
6b3c76
+CFI_STARTPROC
6b3c76
+CFI_DEF_CFA_REGISTER (11)
6b3c76
+CFI_OFFSET (65, 4)
6b3c76
+CFI_OFFSET (14, -72)
6b3c76
+CFI_OFFSET (15, -68)
6b3c76
+CFI_OFFSET (16, -64)
6b3c76
+CFI_OFFSET (17, -60)
6b3c76
+CFI_OFFSET (18, -56)
6b3c76
+CFI_OFFSET (19, -52)
6b3c76
+CFI_OFFSET (20, -48)
6b3c76
+CFI_OFFSET (21, -44)
6b3c76
+CFI_OFFSET (22, -40)
6b3c76
+CFI_OFFSET (23, -36)
6b3c76
+CFI_OFFSET (24, -32)
6b3c76
+CFI_OFFSET (25, -28)
6b3c76
+CFI_OFFSET (26, -24)
6b3c76
+CFI_OFFSET (27, -20)
6b3c76
+CFI_OFFSET (28, -16)
6b3c76
+CFI_OFFSET (29, -12)
6b3c76
+CFI_OFFSET (30, -8)
6b3c76
+CFI_OFFSET (31, -4)
6b3c76
+FUNCTION(_restgpr_14_x)	lwz	14,-72(11)	/* restore gp registers */
6b3c76
+CFI_RESTORE (14)
6b3c76
+FUNCTION(_restgpr_15_x)	lwz	15,-68(11)
6b3c76
+CFI_RESTORE (15)
6b3c76
+FUNCTION(_restgpr_16_x)	lwz	16,-64(11)
6b3c76
+CFI_RESTORE (16)
6b3c76
+FUNCTION(_restgpr_17_x)	lwz	17,-60(11)
6b3c76
+CFI_RESTORE (17)
6b3c76
+FUNCTION(_restgpr_18_x)	lwz	18,-56(11)
6b3c76
+CFI_RESTORE (18)
6b3c76
+FUNCTION(_restgpr_19_x)	lwz	19,-52(11)
6b3c76
+CFI_RESTORE (19)
6b3c76
+FUNCTION(_restgpr_20_x)	lwz	20,-48(11)
6b3c76
+CFI_RESTORE (20)
6b3c76
+FUNCTION(_restgpr_21_x)	lwz	21,-44(11)
6b3c76
+CFI_RESTORE (21)
6b3c76
+FUNCTION(_restgpr_22_x)	lwz	22,-40(11)
6b3c76
+CFI_RESTORE (22)
6b3c76
+FUNCTION(_restgpr_23_x)	lwz	23,-36(11)
6b3c76
+CFI_RESTORE (23)
6b3c76
+FUNCTION(_restgpr_24_x)	lwz	24,-32(11)
6b3c76
+CFI_RESTORE (24)
6b3c76
+FUNCTION(_restgpr_25_x)	lwz	25,-28(11)
6b3c76
+CFI_RESTORE (25)
6b3c76
+FUNCTION(_restgpr_26_x)	lwz	26,-24(11)
6b3c76
+CFI_RESTORE (26)
6b3c76
+FUNCTION(_restgpr_27_x)	lwz	27,-20(11)
6b3c76
+CFI_RESTORE (27)
6b3c76
+FUNCTION(_restgpr_28_x)	lwz	28,-16(11)
6b3c76
+CFI_RESTORE (28)
6b3c76
+FUNCTION(_restgpr_29_x)	lwz	29,-12(11)
6b3c76
+CFI_RESTORE (29)
6b3c76
+FUNCTION(_restgpr_30_x)	lwz	30,-8(11)
6b3c76
+CFI_RESTORE (30)
6b3c76
+FUNCTION(_restgpr_31_x)	lwz	0,4(11)
6b3c76
+				lwz	31,-4(11)
6b3c76
+CFI_RESTORE (31)
6b3c76
+				mtlr	0
6b3c76
+CFI_RESTORE (65)
6b3c76
+				mr	1,11
6b3c76
+CFI_DEF_CFA_REGISTER (1)
6b3c76
+				blr
6b3c76
+CFI_ENDPROC
6b3c76
+
6b3c76
+CFI_STARTPROC
6b3c76
+FUNCTION(_savegpr_14)	stw	14,-72(11)	/* save gp registers */
6b3c76
+FUNCTION(_savegpr_15)	stw	15,-68(11)
6b3c76
+FUNCTION(_savegpr_16)	stw	16,-64(11)
6b3c76
+FUNCTION(_savegpr_17)	stw	17,-60(11)
6b3c76
+FUNCTION(_savegpr_18)	stw	18,-56(11)
6b3c76
+FUNCTION(_savegpr_19)	stw	19,-52(11)
6b3c76
+FUNCTION(_savegpr_20)	stw	20,-48(11)
6b3c76
+FUNCTION(_savegpr_21)	stw	21,-44(11)
6b3c76
+FUNCTION(_savegpr_22)	stw	22,-40(11)
6b3c76
+FUNCTION(_savegpr_23)	stw	23,-36(11)
6b3c76
+FUNCTION(_savegpr_24)	stw	24,-32(11)
6b3c76
+FUNCTION(_savegpr_25)	stw	25,-28(11)
6b3c76
+FUNCTION(_savegpr_26)	stw	26,-24(11)
6b3c76
+FUNCTION(_savegpr_27)	stw	27,-20(11)
6b3c76
+FUNCTION(_savegpr_28)	stw	28,-16(11)
6b3c76
+FUNCTION(_savegpr_29)	stw	29,-12(11)
6b3c76
+FUNCTION(_savegpr_30)	stw	30,-8(11)
6b3c76
+FUNCTION(_savegpr_31)	stw	31,-4(11)
6b3c76
+			blr
6b3c76
+CFI_ENDPROC
a85e8e
diff --git a/include/grub/compiler.h b/include/grub/compiler.h
6b3c76
index c9e1d7a73..a9a684ccb 100644
a85e8e
--- a/include/grub/compiler.h
a85e8e
+++ b/include/grub/compiler.h
a85e8e
@@ -48,4 +48,65 @@
a85e8e
 #  define WARN_UNUSED_RESULT
a85e8e
 #endif
a85e8e
 
a85e8e
+#include "types.h"
a85e8e
+
a85e8e
+union component64
a85e8e
+{
a85e8e
+  grub_uint64_t full;
a85e8e
+  struct
a85e8e
+  {
a85e8e
+#ifdef GRUB_CPU_WORDS_BIGENDIAN
a85e8e
+    grub_uint32_t high;
a85e8e
+    grub_uint32_t low;
a85e8e
+#else
a85e8e
+    grub_uint32_t low;
a85e8e
+    grub_uint32_t high;
a85e8e
+#endif
a85e8e
+  };
a85e8e
+};
a85e8e
+
a85e8e
+#if defined (__powerpc__)
a85e8e
+grub_uint64_t EXPORT_FUNC (__lshrdi3) (grub_uint64_t u, int b);
a85e8e
+grub_uint64_t EXPORT_FUNC (__ashrdi3) (grub_uint64_t u, int b);
a85e8e
+grub_uint64_t EXPORT_FUNC (__ashldi3) (grub_uint64_t u, int b);
a85e8e
+int EXPORT_FUNC(__ucmpdi2) (grub_uint64_t a, grub_uint64_t b);
a85e8e
+void EXPORT_FUNC (_restgpr_14_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_15_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_16_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_17_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_18_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_19_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_20_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_21_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_22_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_23_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_24_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_25_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_26_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_27_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_28_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_29_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_30_x) (void);
a85e8e
+void EXPORT_FUNC (_restgpr_31_x) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_14) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_15) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_16) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_17) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_18) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_19) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_20) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_21) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_22) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_23) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_24) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_25) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_26) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_27) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_28) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_29) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_30) (void);
a85e8e
+void EXPORT_FUNC (_savegpr_31) (void);
a85e8e
+
a85e8e
+#endif
a85e8e
+
a85e8e
 #endif /* ! GRUB_COMPILER_HEADER */
a85e8e
diff --git a/include/grub/libgcc.h b/include/grub/libgcc.h
6b3c76
index 8e93b6792..5bdb8fb5c 100644
a85e8e
--- a/include/grub/libgcc.h
a85e8e
+++ b/include/grub/libgcc.h
a85e8e
@@ -16,73 +16,6 @@
a85e8e
  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
a85e8e
  */
a85e8e
 
a85e8e
-/* We need to include config-util.h.in for HAVE_*.  */
a85e8e
-#ifndef __STDC_VERSION__
a85e8e
-#define __STDC_VERSION__ 0
a85e8e
-#endif
a85e8e
-#include <config-util.h>
a85e8e
-
a85e8e
-/* On x86 these functions aren't really needed. Save some space.  */
a85e8e
-#if !defined (__i386__) && !defined (__x86_64__)
a85e8e
-# ifdef HAVE___ASHLDI3
a85e8e
-void EXPORT_FUNC (__ashldi3) (void);
a85e8e
-# endif
a85e8e
-# ifdef HAVE___ASHRDI3
a85e8e
-void EXPORT_FUNC (__ashrdi3) (void);
a85e8e
-# endif
a85e8e
-# ifdef HAVE___LSHRDI3
a85e8e
-void EXPORT_FUNC (__lshrdi3) (void);
a85e8e
-# endif
a85e8e
-# ifdef HAVE___UCMPDI2
a85e8e
-void EXPORT_FUNC (__ucmpdi2) (void);
a85e8e
-# endif
a85e8e
-# ifdef HAVE___BSWAPSI2
a85e8e
-void EXPORT_FUNC (__bswapsi2) (void);
a85e8e
-# endif
a85e8e
-# ifdef HAVE___BSWAPDI2
a85e8e
-void EXPORT_FUNC (__bswapdi2) (void);
a85e8e
-# endif
a85e8e
-#endif
a85e8e
-
a85e8e
-#ifdef HAVE__RESTGPR_14_X
a85e8e
-void EXPORT_FUNC (_restgpr_14_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_15_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_16_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_17_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_18_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_19_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_20_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_21_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_22_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_23_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_24_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_25_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_26_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_27_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_28_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_29_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_30_x) (void);
a85e8e
-void EXPORT_FUNC (_restgpr_31_x) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_14) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_15) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_16) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_17) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_18) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_19) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_20) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_21) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_22) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_23) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_24) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_25) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_26) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_27) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_28) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_29) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_30) (void);
a85e8e
-void EXPORT_FUNC (_savegpr_31) (void);
a85e8e
-#endif
a85e8e
-
a85e8e
 #if defined (__arm__)
a85e8e
 void EXPORT_FUNC (__aeabi_lasr) (void);
a85e8e
 void EXPORT_FUNC (__aeabi_llsl) (void);
6b3c76
-- 
6b3c76
2.13.5
6b3c76