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>
Sat Jul 26 09:31:07 2008 +0000 (2008-07-26)
changeset 727 33c246763c8a
permissions -rw-r--r--
Update the PPC sample, add a new softfloat PPC sample, thanks to Thomas JOURDAN.

/trunk/samples/powerpc-unknown-linux-gnu/crosstool.config | 54 42 12 0 ++
/trunk/samples/powerpc-unknown_nofpu-linux-gnu/crosstool.config | 331 331 0 0 +++++++++++++++
/trunk/samples/powerpc-unknown_nofpu-linux-gnu/reported.by | 2 2 0 0 +
3 files changed, 375 insertions(+), 12 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");	\