patches/linux/2.4.26/120-linux-2.4.21-allow-gcc-3.3-arm-lib.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jul 13 10:32:38 2008 +0000 (2008-07-13)
changeset 645 8e58024f8e37
permissions -rw-r--r--
Ioannis E. VENETIS <venetis@mail.capsl.udel.edu> pointed out that GMP and MPFR were not used by gcc.
Turned out that none could use GMP and MPFR as the config option changed its name, but the change was not propagated to all users.

/trunk/scripts/build/binutils.sh | 2 1 1 0 +-
/trunk/scripts/build/debug/300-gdb.sh | 2 1 1 0 +-
/trunk/scripts/build/cc_gcc.sh | 6 3 3 0 +++---
3 files changed, 5 insertions(+), 5 deletions(-)
yann@402
     1
Reconstructed from http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2003-December/018647.html
yann@402
     2
See also http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=1540
yann@402
     3
yann@402
     4
Message-ID: <DDA001.8070502@de.bosch.com>
yann@402
     5
Subject: Help cross compiling the kernel for arm.
yann@402
     6
From: dirk.behme at de.bosch.com
yann@402
     7
yann@402
     8
Aitor Garcia wrote:
yann@402
     9
> Hello everybody,
yann@402
    10
> 
yann@402
    11
> I am having problems cross compiling the kernel for arm.
yann@402
    12
> 
yann@402
    13
> This is the error message I get:
yann@402
    14
> 
yann@402
    15
> blkpg.c: In function `blk_ioctl':
yann@402
    16
> blkpg.c:252: error: asm-specifier for variable `__r1' conflicts with asm clobber list
yann@402
    17
> blkpg.c:252: confused by earlier errors, bailing out make[3]: *** [blkpg.o] Error 1
yann@402
    18
> make[3]: Leaving directory `/root/toolchain/kernel-arm/linux-2.4.21/drivers/block'
yann@402
    19
> make[2]: *** [first_rule] Error 2
yann@402
    20
> make[2]: Leaving directory `/root/toolchain/kernel-arm/linux-2.4.21/drivers/block'
yann@402
    21
> make[1]: *** [_subdir_block] Error 2
yann@402
    22
> make[1]: Leaving directory `/root/toolchain/kernel-arm/linux-2.4.21/drivers'
yann@402
    23
> make: *** [_dir_drivers] Error 2
yann@402
    24
> 
yann@402
    25
> These are the toolchain versions I am using:
yann@402
    26
>  host=i686-pc-linux-gnu
yann@402
    27
>  binutils_version=2.14           
yann@402
    28
>  gcc_version=3.3.2                
yann@402
    29
>  glibc_version=2.3.2             
yann@402
    30
>  kernel_version=2.4.21  
yann@402
    31
> and applied the kernel patch for arm. 2.4.21-rmk1.
yann@402
    32
> ... 
yann@402
    33
> I have also seen references to this bug in ARM linux
yann@402
    34
> Developer. Patch Number = 1540. But this patch is
yann@402
    35
> classified as discarded.
yann@402
    36
yann@402
    37
You need something like 1540 to compile 2.4.21 with gcc 3.3.2. 1540 was 
yann@402
    38
discarded because of AFLAGS change.
yann@402
    39
yann@402
    40
Try the attachment.
yann@402
    41
yann@402
    42
Dirk
yann@402
    43
-------------- next part --------------
yann@402
    44
--- linux/arch/arm/lib/getuser.S.orig	Mon Nov 17 07:41:51 2003
yann@402
    45
+++ linux/arch/arm/lib/getuser.S	Mon Nov 17 07:43:16 2003
yann@402
    46
@@ -17,7 +17,7 @@
yann@402
    47
  *
yann@402
    48
  * Inputs:	r0 contains the address
yann@402
    49
  * Outputs:	r0 is the error code
yann@402
    50
- *		r1, r2 contains the zero-extended value
yann@402
    51
+ *		r1, ip contains the zero-extended value
yann@402
    52
  *		lr corrupted
yann@402
    53
  *
yann@402
    54
  * No other registers must be altered.  (see include/asm-arm/uaccess.h
yann@402
    55
@@ -42,14 +42,14 @@ __get_user_1:
yann@402
    56
 
yann@402
    57
 	.global	__get_user_2
yann@402
    58
 __get_user_2:
yann@402
    59
-	bic	r2, sp, #0x1f00
yann@402
    60
-	bic	r2, r2, #0x00ff
yann@402
    61
-	ldr	r2, [r2, #TSK_ADDR_LIMIT]
yann@402
    62
-	sub	r2, r2, #2
yann@402
    63
-	cmp	r0, r2
yann@402
    64
+	bic	ip, sp, #0x1f00
yann@402
    65
+	bic	ip, ip, #0x00ff
yann@402
    66
+	ldr	ip, [ip, #TSK_ADDR_LIMIT]
yann@402
    67
+	sub	ip, ip, #2
yann@402
    68
+	cmp	r0, ip
yann@402
    69
 2:	ldrlsbt	r1, [r0], #1
yann@402
    70
-3:	ldrlsbt	r2, [r0]
yann@402
    71
-	orrls	r1, r1, r2, lsl #8
yann@402
    72
+3:	ldrlsbt	ip, [r0]
yann@402
    73
+	orrls	r1, r1, ip, lsl #8
yann@402
    74
 	movls	r0, #0
yann@402
    75
 	movls	pc, lr
yann@402
    76
 	b	__get_user_bad
yann@402
    77
@@ -68,20 +68,20 @@ __get_user_4:
yann@402
    78
 
yann@402
    79
 	.global	__get_user_8
yann@402
    80
 __get_user_8:
yann@402
    81
-	bic	r2, sp, #0x1f00
yann@402
    82
-	bic	r2, r2, #0x00ff
yann@402
    83
-	ldr	r2, [r2, #TSK_ADDR_LIMIT]
yann@402
    84
-	sub	r2, r2, #8
yann@402
    85
-	cmp	r0, r2
yann@402
    86
+	bic	ip, sp, #0x1f00
yann@402
    87
+	bic	ip, ip, #0x00ff
yann@402
    88
+	ldr	ip, [ip, #TSK_ADDR_LIMIT]
yann@402
    89
+	sub	ip, ip, #8
yann@402
    90
+	cmp	r0, ip
yann@402
    91
 5:	ldrlst	r1, [r0], #4
yann@402
    92
-6:	ldrlst	r2, [r0]
yann@402
    93
+6:	ldrlst	ip, [r0]
yann@402
    94
 	movls	r0, #0
yann@402
    95
 	movls	pc, lr
yann@402
    96
 
yann@402
    97
 	/* fall through */
yann@402
    98
 
yann@402
    99
 __get_user_bad_8:
yann@402
   100
-	mov	r2, #0
yann@402
   101
+	mov	ip, #0
yann@402
   102
 __get_user_bad:
yann@402
   103
 	mov	r1, #0
yann@402
   104
 	mov	r0, #-14
yann@402
   105
--- linux/arch/arm/lib/putuser.S.orig	Mon Nov 17 07:41:57 2003
yann@402
   106
+++ linux/arch/arm/lib/putuser.S	Mon Nov 17 07:42:26 2003
yann@402
   107
@@ -16,7 +16,7 @@
yann@402
   108
  * __put_user_X
yann@402
   109
  *
yann@402
   110
  * Inputs:	r0 contains the address
yann@402
   111
- *		r1, r2 contains the value
yann@402
   112
+ *		r1, ip contains the value
yann@402
   113
  * Outputs:	r0 is the error code
yann@402
   114
  *		lr corrupted
yann@402
   115
  *
yann@402
   116
@@ -30,11 +30,11 @@
yann@402
   117
 
yann@402
   118
 	.global	__put_user_1
yann@402
   119
 __put_user_1:
yann@402
   120
-	bic	r2, sp, #0x1f00
yann@402
   121
-	bic	r2, r2, #0x00ff
yann@402
   122
-	ldr	r2, [r2, #TSK_ADDR_LIMIT]
yann@402
   123
-	sub	r2, r2, #1
yann@402
   124
-	cmp	r0, r2
yann@402
   125
+	bic	ip, sp, #0x1f00
yann@402
   126
+	bic	ip, ip, #0x00ff
yann@402
   127
+	ldr	ip, [ip, #TSK_ADDR_LIMIT]
yann@402
   128
+	sub	ip, ip, #1
yann@402
   129
+	cmp	r0, ip
yann@402
   130
 1:	strlsbt	r1, [r0]
yann@402
   131
 	movls	r0, #0
yann@402
   132
 	movls	pc, lr
yann@402
   133
@@ -42,11 +42,11 @@ __put_user_1:
yann@402
   134
 
yann@402
   135
 	.global	__put_user_2
yann@402
   136
 __put_user_2:
yann@402
   137
-	bic	r2, sp, #0x1f00
yann@402
   138
-	bic	r2, r2, #0x00ff
yann@402
   139
-	ldr	r2, [r2, #TSK_ADDR_LIMIT]
yann@402
   140
-	sub	r2, r2, #2
yann@402
   141
-	cmp	r0, r2
yann@402
   142
+	bic	ip, sp, #0x1f00
yann@402
   143
+	bic	ip, ip, #0x00ff
yann@402
   144
+	ldr	ip, [ip, #TSK_ADDR_LIMIT]
yann@402
   145
+	sub	ip, ip, #2
yann@402
   146
+	cmp	r0, ip
yann@402
   147
 2:	strlsbt	r1, [r0], #1
yann@402
   148
 	movls	r1, r1, lsr #8
yann@402
   149
 3:	strlsbt	r1, [r0]
yann@402
   150
@@ -56,11 +56,11 @@ __put_user_2:
yann@402
   151
 
yann@402
   152
 	.global	__put_user_4
yann@402
   153
 __put_user_4:
yann@402
   154
-	bic	r2, sp, #0x1f00
yann@402
   155
-	bic	r2, r2, #0x00ff
yann@402
   156
-	ldr	r2, [r2, #TSK_ADDR_LIMIT]
yann@402
   157
-	sub	r2, r2, #4
yann@402
   158
-	cmp	r0, r2
yann@402
   159
+	bic	ip, sp, #0x1f00
yann@402
   160
+	bic	ip, ip, #0x00ff
yann@402
   161
+	ldr	ip, [ip, #TSK_ADDR_LIMIT]
yann@402
   162
+	sub	ip, ip, #4
yann@402
   163
+	cmp	r0, ip
yann@402
   164
 4:	strlst	r1, [r0]
yann@402
   165
 	movls	r0, #0
yann@402
   166
 	movls	pc, lr
yann@402
   167
@@ -74,7 +74,7 @@ __put_user_8:
yann@402
   168
 	sub	ip, ip, #8
yann@402
   169
 	cmp	r0, ip
yann@402
   170
 5:	strlst	r1, [r0], #4
yann@402
   171
-6:	strlst	r2, [r0]
yann@402
   172
+6:	strlst	ip, [r0]
yann@402
   173
 	movls	r0, #0
yann@402
   174
 	movls	pc, lr
yann@402
   175
 
yann@402
   176
--- linux/include/asm-arm/uaccess.h.orig	Mon Nov 17 07:41:04 2003
yann@402
   177
+++ linux/include/asm-arm/uaccess.h	Mon Nov 17 07:41:37 2003
yann@402
   178
@@ -86,7 +86,7 @@ extern int __get_user_bad(void);
yann@402
   179
 			__get_user_x(__r1, __p, __e, 1, "lr");		\
yann@402
   180
 	       		break;						\
yann@402
   181
 		case 2:							\
yann@402
   182
-			__get_user_x(__r1, __p, __e, 2, "r2", "lr");	\
yann@402
   183
+			__get_user_x(__r1, __p, __e, 2, "ip", "lr");	\
yann@402
   184
 			break;						\
yann@402
   185
 		case 4:							\
yann@402
   186
 	       		__get_user_x(__r1, __p, __e, 4, "lr");		\
yann@402
   187
@@ -122,13 +122,13 @@ extern int __put_user_bad(void);
yann@402
   188
 		register int __e asm("r0");				\
yann@402
   189
 		switch (sizeof(*(p))) {					\
yann@402
   190
 		case 1:							\
yann@402
   191
-			__put_user_x(__r1, __p, __e, 1, "r2", "lr");	\
yann@402
   192
+			__put_user_x(__r1, __p, __e, 1, "ip", "lr");	\
yann@402
   193
 			break;						\
yann@402
   194
 		case 2:							\
yann@402
   195
-			__put_user_x(__r1, __p, __e, 2, "r2", "lr");	\
yann@402
   196
+			__put_user_x(__r1, __p, __e, 2, "ip", "lr");	\
yann@402
   197
 			break;						\
yann@402
   198
 		case 4:							\
yann@402
   199
-			__put_user_x(__r1, __p, __e, 4, "r2", "lr");	\
yann@402
   200
+			__put_user_x(__r1, __p, __e, 4, "ip", "lr");	\
yann@402
   201
 			break;						\
yann@402
   202
 		case 8:							\
yann@402
   203
 			__put_user_x(__r1, __p, __e, 8, "ip", "lr");	\