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