patches/glibc/ports-2.12.1/570-arm-cirrus-ep93xx-maverick-crunch-fpu.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:28:10 2011 +0200 (2011-08-02)
changeset 2590 b64cfb67944e
permissions -rw-r--r--
scripts/functions: svn retrieval first tries the mirror for tarballs

The svn download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via svn.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard svn retrieval will kick in.

Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@2437
     1
http://yann.poupet.free.fr/ep93xx/
yann@2437
     2
Add support for the Maverick Crunch FPU on Cirrus EP93XX processor series
yann@2437
     3
yann@2437
     4
diff -durN glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/bits/endian.h glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/bits/endian.h
yann@2437
     5
--- glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/bits/endian.h	2009-05-16 10:36:20.000000000 +0200
yann@2437
     6
+++ glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/bits/endian.h	2009-11-13 00:51:22.000000000 +0100
yann@2437
     7
@@ -12,7 +12,7 @@
yann@2437
     8
 /* FPA floating point units are always big-endian, irrespective of the
yann@2437
     9
    CPU endianness.  VFP floating point units use the same endianness
yann@2437
    10
    as the rest of the system.  */
yann@2437
    11
-#ifdef __VFP_FP__
yann@2437
    12
+#if defined __VFP_FP__ || defined __MAVERICK__
yann@2437
    13
 #define __FLOAT_WORD_ORDER __BYTE_ORDER
yann@2437
    14
 #else
yann@2437
    15
 #define __FLOAT_WORD_ORDER __BIG_ENDIAN
yann@2437
    16
diff -durN glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/__longjmp.S glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/__longjmp.S
yann@2437
    17
--- glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/__longjmp.S	2009-05-16 10:36:20.000000000 +0200
yann@2437
    18
+++ glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/__longjmp.S	2009-11-13 00:51:22.000000000 +0100
yann@2437
    19
@@ -30,7 +30,33 @@
yann@2437
    20
 	movs	r0, r1		/* get the return value in place */
yann@2437
    21
 	moveq	r0, #1		/* can't let setjmp() return zero! */
yann@2437
    22
 
yann@2437
    23
+#ifdef __MAVERICK__
yann@2437
    24
+	cfldrd	mvd4,  [ip], #8
yann@2437
    25
+	nop
yann@2437
    26
+	cfldrd	mvd5,  [ip], #8
yann@2437
    27
+	nop
yann@2437
    28
+	cfldrd	mvd6,  [ip], #8
yann@2437
    29
+	nop
yann@2437
    30
+	cfldrd	mvd7,  [ip], #8
yann@2437
    31
+	nop
yann@2437
    32
+	cfldrd	mvd8,  [ip], #8
yann@2437
    33
+	nop
yann@2437
    34
+	cfldrd	mvd9,  [ip], #8
yann@2437
    35
+	nop
yann@2437
    36
+	cfldrd	mvd10, [ip], #8
yann@2437
    37
+	nop
yann@2437
    38
+	cfldrd	mvd11, [ip], #8
yann@2437
    39
+	nop
yann@2437
    40
+	cfldrd	mvd12, [ip], #8
yann@2437
    41
+	nop
yann@2437
    42
+	cfldrd	mvd13, [ip], #8
yann@2437
    43
+	nop
yann@2437
    44
+	cfldrd	mvd14, [ip], #8
yann@2437
    45
+	nop
yann@2437
    46
+	cfldrd	mvd15, [ip], #8
yann@2437
    47
+#else
yann@2437
    48
 	lfmfd	f4, 4, [ip] !	/* load the floating point regs */
yann@2437
    49
+#endif
yann@2437
    50
 
yann@2437
    51
 	LOADREGS(ia, ip, {v1-v6, sl, fp, sp, pc})
yann@2437
    52
 END (__longjmp)
yann@2437
    53
diff -durN glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/bits/fenv.h glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/bits/fenv.h
yann@2437
    54
--- glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/bits/fenv.h	2009-05-16 10:36:20.000000000 +0200
yann@2437
    55
+++ glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/bits/fenv.h	2009-11-13 00:51:22.000000000 +0100
yann@2437
    56
@@ -20,6 +20,45 @@
yann@2437
    57
 # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
yann@2437
    58
 #endif
yann@2437
    59
 
yann@2437
    60
+#if defined(__MAVERICK__)
yann@2437
    61
+
yann@2437
    62
+/* Define bits representing exceptions in the FPU status word.  */
yann@2437
    63
+enum
yann@2437
    64
+  {
yann@2437
    65
+    FE_INVALID = 1,
yann@2437
    66
+#define FE_INVALID FE_INVALID
yann@2437
    67
+    FE_OVERFLOW = 4,
yann@2437
    68
+#define FE_OVERFLOW FE_OVERFLOW
yann@2437
    69
+    FE_UNDERFLOW = 8,
yann@2437
    70
+#define FE_UNDERFLOW FE_UNDERFLOW
yann@2437
    71
+    FE_INEXACT = 16,
yann@2437
    72
+#define FE_INEXACT FE_INEXACT
yann@2437
    73
+  };
yann@2437
    74
+
yann@2437
    75
+/* Amount to shift by to convert an exception to a mask bit.  */
yann@2437
    76
+#define FE_EXCEPT_SHIFT	5
yann@2437
    77
+
yann@2437
    78
+/* All supported exceptions.  */
yann@2437
    79
+#define FE_ALL_EXCEPT	\
yann@2437
    80
+	(FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
yann@2437
    81
+
yann@2437
    82
+/* IEEE rounding modes.  */
yann@2437
    83
+enum
yann@2437
    84
+  {
yann@2437
    85
+    FE_TONEAREST = 0,
yann@2437
    86
+#define FE_TONEAREST    FE_TONEAREST
yann@2437
    87
+    FE_TOWARDZERO = 0x400,
yann@2437
    88
+#define FE_TOWARDZERO   FE_TOWARDZERO
yann@2437
    89
+    FE_DOWNWARD = 0x800,
yann@2437
    90
+#define FE_DOWNWARD     FE_DOWNWARD
yann@2437
    91
+    FE_UPWARD = 0xc00,
yann@2437
    92
+#define FE_UPWARD       FE_UPWARD
yann@2437
    93
+  };
yann@2437
    94
+
yann@2437
    95
+#define FE_ROUND_MASK (FE_UPWARD)
yann@2437
    96
+
yann@2437
    97
+#else /* FPA */
yann@2437
    98
+
yann@2437
    99
 /* Define bits representing exceptions in the FPU status word.  */
yann@2437
   100
 enum
yann@2437
   101
   {
yann@2437
   102
@@ -44,6 +83,8 @@
yann@2437
   103
    modes exist, but you have to encode them in the actual instruction.  */
yann@2437
   104
 #define FE_TONEAREST	0
yann@2437
   105
 
yann@2437
   106
+#endif
yann@2437
   107
+
yann@2437
   108
 /* Type representing exception flags. */
yann@2437
   109
 typedef unsigned long int fexcept_t;
yann@2437
   110
 
yann@2437
   111
diff -durN glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/bits/setjmp.h glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/bits/setjmp.h
yann@2437
   112
--- glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/bits/setjmp.h	2009-05-16 10:36:20.000000000 +0200
yann@2437
   113
+++ glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/bits/setjmp.h	2009-11-13 00:51:22.000000000 +0100
yann@2437
   114
@@ -28,7 +28,11 @@
yann@2437
   115
 #ifndef _ASM
yann@2437
   116
 /* Jump buffer contains v1-v6, sl, fp, sp and pc.  Other registers are not
yann@2437
   117
    saved.  */
yann@2437
   118
+#ifdef __MAVERICK__
yann@2437
   119
+typedef int __jmp_buf[34];
yann@2437
   120
+#else
yann@2437
   121
 typedef int __jmp_buf[22];
yann@2437
   122
 #endif
yann@2437
   123
+#endif
yann@2437
   124
 
yann@2437
   125
 #endif
yann@2437
   126
diff -durN glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/fegetround.c glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/fegetround.c
yann@2437
   127
--- glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/fegetround.c	2009-05-16 10:36:20.000000000 +0200
yann@2437
   128
+++ glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/fegetround.c	2009-11-13 00:51:22.000000000 +0100
yann@2437
   129
@@ -18,9 +18,21 @@
yann@2437
   130
    02111-1307 USA.  */
yann@2437
   131
 
yann@2437
   132
 #include <fenv.h>
yann@2437
   133
+#include <fpu_control.h>
yann@2437
   134
 
yann@2437
   135
 int
yann@2437
   136
 fegetround (void)
yann@2437
   137
 {
yann@2437
   138
+#if defined(__MAVERICK__)
yann@2437
   139
+
yann@2437
   140
+  unsigned long temp;
yann@2437
   141
+
yann@2437
   142
+  _FPU_GETCW (temp);
yann@2437
   143
+  return temp & FE_ROUND_MASK;
yann@2437
   144
+
yann@2437
   145
+#else /* FPA */
yann@2437
   146
+
yann@2437
   147
   return FE_TONEAREST;		/* Easy. :-) */
yann@2437
   148
+
yann@2437
   149
+#endif
yann@2437
   150
 }
yann@2437
   151
diff -durN glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/fesetround.c glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/fesetround.c
yann@2437
   152
--- glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/fesetround.c	2009-05-16 10:36:20.000000000 +0200
yann@2437
   153
+++ glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/fesetround.c	2009-11-13 00:51:22.000000000 +0100
yann@2437
   154
@@ -18,12 +18,28 @@
yann@2437
   155
    02111-1307 USA.  */
yann@2437
   156
 
yann@2437
   157
 #include <fenv.h>
yann@2437
   158
+#include <fpu_control.h>
yann@2437
   159
 
yann@2437
   160
 int
yann@2437
   161
 fesetround (int round)
yann@2437
   162
 {
yann@2437
   163
+#if defined(__MAVERICK__)
yann@2437
   164
+  unsigned long temp;
yann@2437
   165
+
yann@2437
   166
+  if (round & ~FE_ROUND_MASK)
yann@2437
   167
+    return 1;
yann@2437
   168
+
yann@2437
   169
+  _FPU_GETCW (temp);
yann@2437
   170
+  temp = (temp & ~FE_ROUND_MASK) | round;
yann@2437
   171
+  _FPU_SETCW (temp);
yann@2437
   172
+  return 0;
yann@2437
   173
+
yann@2437
   174
+#else /* FPA */
yann@2437
   175
+
yann@2437
   176
   /* We only support FE_TONEAREST, so there is no need for any work.  */
yann@2437
   177
   return (round == FE_TONEAREST)?0:1;
yann@2437
   178
+
yann@2437
   179
+#endif
yann@2437
   180
 }
yann@2437
   181
 
yann@2437
   182
 libm_hidden_def (fesetround)
yann@2437
   183
diff -durN glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/fpu_control.h glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/fpu_control.h
yann@2437
   184
--- glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/fpu_control.h	2009-05-16 10:36:20.000000000 +0200
yann@2437
   185
+++ glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/fpu_control.h	2009-11-13 00:51:22.000000000 +0100
yann@2437
   186
@@ -1,5 +1,6 @@
yann@2437
   187
 /* FPU control word definitions.  ARM version.
yann@2437
   188
-   Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
yann@2437
   189
+   Copyright (C) 1996, 1997, 1998, 2000, 2005
yann@2437
   190
+   Free Software Foundation, Inc.
yann@2437
   191
    This file is part of the GNU C Library.
yann@2437
   192
 
yann@2437
   193
    The GNU C Library is free software; you can redistribute it and/or
yann@2437
   194
@@ -20,6 +21,79 @@
yann@2437
   195
 #ifndef _FPU_CONTROL_H
yann@2437
   196
 #define _FPU_CONTROL_H
yann@2437
   197
 
yann@2437
   198
+#if defined(__MAVERICK__)
yann@2437
   199
+
yann@2437
   200
+/* DSPSC register: (from EP9312 User's Guide)
yann@2437
   201
+ *
yann@2437
   202
+ * bits 31..29	- DAID
yann@2437
   203
+ * bits 28..26	- HVID
yann@2437
   204
+ * bits 25..24	- RSVD
yann@2437
   205
+ * bit  23	- ISAT
yann@2437
   206
+ * bit  22	- UI
yann@2437
   207
+ * bit  21	- INT
yann@2437
   208
+ * bit  20	- AEXC
yann@2437
   209
+ * bits 19..18	- SAT
yann@2437
   210
+ * bits 17..16	- FCC
yann@2437
   211
+ * bit  15	- V
yann@2437
   212
+ * bit  14	- FWDEN
yann@2437
   213
+ * bit  13	- Invalid
yann@2437
   214
+ * bit	12	- Denorm
yann@2437
   215
+ * bits 11..10	- RM
yann@2437
   216
+ * bits 9..5	- IXE, UFE, OFE, RSVD, IOE
yann@2437
   217
+ * bits 4..0	- IX, UF, OF, RSVD, IO
yann@2437
   218
+ */
yann@2437
   219
+
yann@2437
   220
+/* masking of interrupts */
yann@2437
   221
+#define _FPU_MASK_IM	(1 << 5)	/* invalid operation */
yann@2437
   222
+#define _FPU_MASK_ZM	0		/* divide by zero */
yann@2437
   223
+#define _FPU_MASK_OM	(1 << 7)	/* overflow */
yann@2437
   224
+#define _FPU_MASK_UM	(1 << 8)	/* underflow */
yann@2437
   225
+#define _FPU_MASK_PM	(1 << 9)	/* inexact */
yann@2437
   226
+#define _FPU_MASK_DM	0		/* denormalized operation */
yann@2437
   227
+
yann@2437
   228
+#define _FPU_RESERVED	0xfffff000	/* These bits are reserved.  */
yann@2437
   229
+
yann@2437
   230
+#define _FPU_DEFAULT	0x00b00000	/* Default value.  */
yann@2437
   231
+#define _FPU_IEEE	0x00b003a0	/* Default + exceptions enabled. */
yann@2437
   232
+
yann@2437
   233
+/* Type of the control word.  */
yann@2437
   234
+typedef unsigned int fpu_control_t;
yann@2437
   235
+
yann@2437
   236
+/* Macros for accessing the hardware control word.  */
yann@2437
   237
+#define _FPU_GETCW(cw) ({			\
yann@2437
   238
+	register int __t1, __t2;		\
yann@2437
   239
+						\
yann@2437
   240
+	__asm__ volatile (			\
yann@2437
   241
+	"cfmvr64l	%1, mvdx0\n\t"		\
yann@2437
   242
+	"cfmvr64h	%2, mvdx0\n\t"		\
yann@2437
   243
+	"cfmv32sc	mvdx0, dspsc\n\t"	\
yann@2437
   244
+	"cfmvr64l	%0, mvdx0\n\t"		\
yann@2437
   245
+	"cfmv64lr	mvdx0, %1\n\t"		\
yann@2437
   246
+	"cfmv64hr	mvdx0, %2"		\
yann@2437
   247
+	: "=r" (cw), "=r" (__t1), "=r" (__t2)	\
yann@2437
   248
+	);					\
yann@2437
   249
+})
yann@2437
   250
+
yann@2437
   251
+#define _FPU_SETCW(cw) ({			\
yann@2437
   252
+	register int __t0, __t1, __t2;		\
yann@2437
   253
+						\
yann@2437
   254
+	__asm__ volatile (			\
yann@2437
   255
+	"cfmvr64l	%1, mvdx0\n\t"		\
yann@2437
   256
+	"cfmvr64h	%2, mvdx0\n\t"		\
yann@2437
   257
+	"cfmv64lr	mvdx0, %0\n\t"		\
yann@2437
   258
+	"cfmvsc32	dspsc, mvdx0\n\t"	\
yann@2437
   259
+	"cfmv64lr	mvdx0, %1\n\t"		\
yann@2437
   260
+	"cfmv64hr	mvdx0, %2"		\
yann@2437
   261
+	: "=r" (__t0), "=r" (__t1), "=r" (__t2)	\
yann@2437
   262
+	: "0" (cw)				\
yann@2437
   263
+	);					\
yann@2437
   264
+})
yann@2437
   265
+
yann@2437
   266
+/* Default control word set at startup.  */
yann@2437
   267
+extern fpu_control_t __fpu_control;
yann@2437
   268
+
yann@2437
   269
+#else /* FPA */
yann@2437
   270
+
yann@2437
   271
 /* We have a slight terminology confusion here.  On the ARM, the register
yann@2437
   272
  * we're interested in is actually the FPU status word - the FPU control
yann@2437
   273
  * word is something different (which is implementation-defined and only
yann@2437
   274
@@ -99,4 +173,6 @@
yann@2437
   275
 /* Default control word set at startup.  */
yann@2437
   276
 extern fpu_control_t __fpu_control;
yann@2437
   277
 
yann@2437
   278
+#endif
yann@2437
   279
+
yann@2437
   280
 #endif /* _FPU_CONTROL_H */
yann@2437
   281
diff -durN glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/jmpbuf-offsets.h glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/jmpbuf-offsets.h
yann@2437
   282
--- glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/jmpbuf-offsets.h	2009-05-16 10:36:20.000000000 +0200
yann@2437
   283
+++ glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/jmpbuf-offsets.h	2009-11-13 00:51:22.000000000 +0100
yann@2437
   284
@@ -17,4 +17,8 @@
yann@2437
   285
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@2437
   286
    02111-1307 USA.  */
yann@2437
   287
 
yann@2437
   288
+#ifdef __MAVERICK__
yann@2437
   289
+#define __JMP_BUF_SP		32
yann@2437
   290
+#else
yann@2437
   291
 #define __JMP_BUF_SP		20
yann@2437
   292
+#endif
yann@2437
   293
diff -durN glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/setjmp.S glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/setjmp.S
yann@2437
   294
--- glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/fpu/setjmp.S	2009-05-16 10:36:20.000000000 +0200
yann@2437
   295
+++ glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/fpu/setjmp.S	2009-11-13 00:51:22.000000000 +0100
yann@2437
   296
@@ -24,11 +24,41 @@
yann@2437
   297
 
yann@2437
   298
 ENTRY (__sigsetjmp)
yann@2437
   299
 	/* Save registers */
yann@2437
   300
+#ifdef __MAVERICK__
yann@2437
   301
+	cfstrd	mvd4,  [r0], #8
yann@2437
   302
+	nop
yann@2437
   303
+	cfstrd	mvd5,  [r0], #8
yann@2437
   304
+	nop
yann@2437
   305
+	cfstrd	mvd6,  [r0], #8
yann@2437
   306
+	nop
yann@2437
   307
+	cfstrd	mvd7,  [r0], #8
yann@2437
   308
+	nop
yann@2437
   309
+	cfstrd	mvd8,  [r0], #8
yann@2437
   310
+	nop
yann@2437
   311
+	cfstrd	mvd9,  [r0], #8
yann@2437
   312
+	nop
yann@2437
   313
+	cfstrd	mvd10, [r0], #8
yann@2437
   314
+	nop
yann@2437
   315
+	cfstrd	mvd11, [r0], #8
yann@2437
   316
+	nop
yann@2437
   317
+	cfstrd	mvd12, [r0], #8
yann@2437
   318
+	nop
yann@2437
   319
+	cfstrd	mvd13, [r0], #8
yann@2437
   320
+	nop
yann@2437
   321
+	cfstrd	mvd14, [r0], #8
yann@2437
   322
+	nop
yann@2437
   323
+	cfstrd	mvd15, [r0], #8
yann@2437
   324
+#else
yann@2437
   325
 	sfmea	f4, 4, [r0]!
yann@2437
   326
+#endif
yann@2437
   327
 	stmia	r0, {v1-v6, sl, fp, sp, lr}
yann@2437
   328
 
yann@2437
   329
 	/* Restore pointer to jmp_buf */
yann@2437
   330
+#ifdef __MAVERICK__
yann@2437
   331
+	sub	r0, r0, #96
yann@2437
   332
+#else
yann@2437
   333
 	sub	r0, r0, #48
yann@2437
   334
+#endif
yann@2437
   335
 
yann@2437
   336
 	/* Make a tail call to __sigjmp_save; it takes the same args.  */
yann@2437
   337
 	B	PLTJMP(C_SYMBOL_NAME(__sigjmp_save))
yann@2437
   338
diff -durN glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/gccframe.h glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/gccframe.h
yann@2437
   339
--- glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/gccframe.h	2009-05-16 10:36:20.000000000 +0200
yann@2437
   340
+++ glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/gccframe.h	2009-11-13 00:51:22.000000000 +0100
yann@2437
   341
@@ -17,6 +17,10 @@
yann@2437
   342
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
yann@2437
   343
    02111-1307 USA.  */
yann@2437
   344
 
yann@2437
   345
+#ifdef __MAVERICK__
yann@2437
   346
+#define FIRST_PSEUDO_REGISTER 43
yann@2437
   347
+#else
yann@2437
   348
 #define FIRST_PSEUDO_REGISTER 27
yann@2437
   349
+#endif
yann@2437
   350
 
yann@2437
   351
 #include <sysdeps/generic/gccframe.h>
yann@2437
   352
diff -durN glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/gmp-mparam.h glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/gmp-mparam.h
yann@2437
   353
--- glibc-2.12.1.orig/glibc-ports-2.12.1/sysdeps/arm/gmp-mparam.h	2009-05-16 10:36:20.000000000 +0200
yann@2437
   354
+++ glibc-2.12.1/glibc-ports-2.12.1/sysdeps/arm/gmp-mparam.h	2009-11-13 00:51:22.000000000 +0100
yann@2437
   355
@@ -29,7 +29,7 @@
yann@2437
   356
 #if defined(__ARMEB__)
yann@2437
   357
 # define IEEE_DOUBLE_MIXED_ENDIAN 0
yann@2437
   358
 # define IEEE_DOUBLE_BIG_ENDIAN 1
yann@2437
   359
-#elif defined(__VFP_FP__)
yann@2437
   360
+#elif defined(__VFP_FP__) || defined(__MAVERICK__)
yann@2437
   361
 # define IEEE_DOUBLE_MIXED_ENDIAN 0
yann@2437
   362
 # define IEEE_DOUBLE_BIG_ENDIAN 0
yann@2437
   363
 #else
yann@2437
   364
diff -durN glibc-2.12.1.orig/ports/sysdeps/arm/bits/endian.h glibc-2.12.1/ports/sysdeps/arm/bits/endian.h
yann@2437
   365
diff -durN glibc-2.12.1.orig/ports/sysdeps/arm/fpu/__longjmp.S glibc-2.12.1/ports/sysdeps/arm/fpu/__longjmp.S
yann@2437
   366
diff -durN glibc-2.12.1.orig/ports/sysdeps/arm/fpu/bits/fenv.h glibc-2.12.1/ports/sysdeps/arm/fpu/bits/fenv.h
yann@2437
   367
diff -durN glibc-2.12.1.orig/ports/sysdeps/arm/fpu/bits/setjmp.h glibc-2.12.1/ports/sysdeps/arm/fpu/bits/setjmp.h
yann@2437
   368
diff -durN glibc-2.12.1.orig/ports/sysdeps/arm/fpu/fegetround.c glibc-2.12.1/ports/sysdeps/arm/fpu/fegetround.c
yann@2437
   369
diff -durN glibc-2.12.1.orig/ports/sysdeps/arm/fpu/fesetround.c glibc-2.12.1/ports/sysdeps/arm/fpu/fesetround.c
yann@2437
   370
diff -durN glibc-2.12.1.orig/ports/sysdeps/arm/fpu/fpu_control.h glibc-2.12.1/ports/sysdeps/arm/fpu/fpu_control.h
yann@2437
   371
diff -durN glibc-2.12.1.orig/ports/sysdeps/arm/fpu/jmpbuf-offsets.h glibc-2.12.1/ports/sysdeps/arm/fpu/jmpbuf-offsets.h
yann@2437
   372
diff -durN glibc-2.12.1.orig/ports/sysdeps/arm/fpu/setjmp.S glibc-2.12.1/ports/sysdeps/arm/fpu/setjmp.S
yann@2437
   373
diff -durN glibc-2.12.1.orig/ports/sysdeps/arm/gccframe.h glibc-2.12.1/ports/sysdeps/arm/gccframe.h
yann@2437
   374
diff -durN glibc-2.12.1.orig/ports/sysdeps/arm/gmp-mparam.h glibc-2.12.1/ports/sysdeps/arm/gmp-mparam.h