1.1 --- a/patches/linux/2.4.26/120-linux-2.4.21-allow-gcc-3.3-arm-lib.patch Fri Sep 05 16:15:34 2008 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,203 +0,0 @@
1.4 -Reconstructed from http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2003-December/018647.html
1.5 -See also http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=1540
1.6 -
1.7 -Message-ID: <DDA001.8070502@de.bosch.com>
1.8 -Subject: Help cross compiling the kernel for arm.
1.9 -From: dirk.behme at de.bosch.com
1.10 -
1.11 -Aitor Garcia wrote:
1.12 -> Hello everybody,
1.13 ->
1.14 -> I am having problems cross compiling the kernel for arm.
1.15 ->
1.16 -> This is the error message I get:
1.17 ->
1.18 -> blkpg.c: In function `blk_ioctl':
1.19 -> blkpg.c:252: error: asm-specifier for variable `__r1' conflicts with asm clobber list
1.20 -> blkpg.c:252: confused by earlier errors, bailing out make[3]: *** [blkpg.o] Error 1
1.21 -> make[3]: Leaving directory `/root/toolchain/kernel-arm/linux-2.4.21/drivers/block'
1.22 -> make[2]: *** [first_rule] Error 2
1.23 -> make[2]: Leaving directory `/root/toolchain/kernel-arm/linux-2.4.21/drivers/block'
1.24 -> make[1]: *** [_subdir_block] Error 2
1.25 -> make[1]: Leaving directory `/root/toolchain/kernel-arm/linux-2.4.21/drivers'
1.26 -> make: *** [_dir_drivers] Error 2
1.27 ->
1.28 -> These are the toolchain versions I am using:
1.29 -> host=i686-pc-linux-gnu
1.30 -> binutils_version=2.14
1.31 -> gcc_version=3.3.2
1.32 -> glibc_version=2.3.2
1.33 -> kernel_version=2.4.21
1.34 -> and applied the kernel patch for arm. 2.4.21-rmk1.
1.35 -> ...
1.36 -> I have also seen references to this bug in ARM linux
1.37 -> Developer. Patch Number = 1540. But this patch is
1.38 -> classified as discarded.
1.39 -
1.40 -You need something like 1540 to compile 2.4.21 with gcc 3.3.2. 1540 was
1.41 -discarded because of AFLAGS change.
1.42 -
1.43 -Try the attachment.
1.44 -
1.45 -Dirk
1.46 --------------- next part --------------
1.47 ---- linux/arch/arm/lib/getuser.S.orig Mon Nov 17 07:41:51 2003
1.48 -+++ linux/arch/arm/lib/getuser.S Mon Nov 17 07:43:16 2003
1.49 -@@ -17,7 +17,7 @@
1.50 - *
1.51 - * Inputs: r0 contains the address
1.52 - * Outputs: r0 is the error code
1.53 -- * r1, r2 contains the zero-extended value
1.54 -+ * r1, ip contains the zero-extended value
1.55 - * lr corrupted
1.56 - *
1.57 - * No other registers must be altered. (see include/asm-arm/uaccess.h
1.58 -@@ -42,14 +42,14 @@ __get_user_1:
1.59 -
1.60 - .global __get_user_2
1.61 - __get_user_2:
1.62 -- bic r2, sp, #0x1f00
1.63 -- bic r2, r2, #0x00ff
1.64 -- ldr r2, [r2, #TSK_ADDR_LIMIT]
1.65 -- sub r2, r2, #2
1.66 -- cmp r0, r2
1.67 -+ bic ip, sp, #0x1f00
1.68 -+ bic ip, ip, #0x00ff
1.69 -+ ldr ip, [ip, #TSK_ADDR_LIMIT]
1.70 -+ sub ip, ip, #2
1.71 -+ cmp r0, ip
1.72 - 2: ldrlsbt r1, [r0], #1
1.73 --3: ldrlsbt r2, [r0]
1.74 -- orrls r1, r1, r2, lsl #8
1.75 -+3: ldrlsbt ip, [r0]
1.76 -+ orrls r1, r1, ip, lsl #8
1.77 - movls r0, #0
1.78 - movls pc, lr
1.79 - b __get_user_bad
1.80 -@@ -68,20 +68,20 @@ __get_user_4:
1.81 -
1.82 - .global __get_user_8
1.83 - __get_user_8:
1.84 -- bic r2, sp, #0x1f00
1.85 -- bic r2, r2, #0x00ff
1.86 -- ldr r2, [r2, #TSK_ADDR_LIMIT]
1.87 -- sub r2, r2, #8
1.88 -- cmp r0, r2
1.89 -+ bic ip, sp, #0x1f00
1.90 -+ bic ip, ip, #0x00ff
1.91 -+ ldr ip, [ip, #TSK_ADDR_LIMIT]
1.92 -+ sub ip, ip, #8
1.93 -+ cmp r0, ip
1.94 - 5: ldrlst r1, [r0], #4
1.95 --6: ldrlst r2, [r0]
1.96 -+6: ldrlst ip, [r0]
1.97 - movls r0, #0
1.98 - movls pc, lr
1.99 -
1.100 - /* fall through */
1.101 -
1.102 - __get_user_bad_8:
1.103 -- mov r2, #0
1.104 -+ mov ip, #0
1.105 - __get_user_bad:
1.106 - mov r1, #0
1.107 - mov r0, #-14
1.108 ---- linux/arch/arm/lib/putuser.S.orig Mon Nov 17 07:41:57 2003
1.109 -+++ linux/arch/arm/lib/putuser.S Mon Nov 17 07:42:26 2003
1.110 -@@ -16,7 +16,7 @@
1.111 - * __put_user_X
1.112 - *
1.113 - * Inputs: r0 contains the address
1.114 -- * r1, r2 contains the value
1.115 -+ * r1, ip contains the value
1.116 - * Outputs: r0 is the error code
1.117 - * lr corrupted
1.118 - *
1.119 -@@ -30,11 +30,11 @@
1.120 -
1.121 - .global __put_user_1
1.122 - __put_user_1:
1.123 -- bic r2, sp, #0x1f00
1.124 -- bic r2, r2, #0x00ff
1.125 -- ldr r2, [r2, #TSK_ADDR_LIMIT]
1.126 -- sub r2, r2, #1
1.127 -- cmp r0, r2
1.128 -+ bic ip, sp, #0x1f00
1.129 -+ bic ip, ip, #0x00ff
1.130 -+ ldr ip, [ip, #TSK_ADDR_LIMIT]
1.131 -+ sub ip, ip, #1
1.132 -+ cmp r0, ip
1.133 - 1: strlsbt r1, [r0]
1.134 - movls r0, #0
1.135 - movls pc, lr
1.136 -@@ -42,11 +42,11 @@ __put_user_1:
1.137 -
1.138 - .global __put_user_2
1.139 - __put_user_2:
1.140 -- bic r2, sp, #0x1f00
1.141 -- bic r2, r2, #0x00ff
1.142 -- ldr r2, [r2, #TSK_ADDR_LIMIT]
1.143 -- sub r2, r2, #2
1.144 -- cmp r0, r2
1.145 -+ bic ip, sp, #0x1f00
1.146 -+ bic ip, ip, #0x00ff
1.147 -+ ldr ip, [ip, #TSK_ADDR_LIMIT]
1.148 -+ sub ip, ip, #2
1.149 -+ cmp r0, ip
1.150 - 2: strlsbt r1, [r0], #1
1.151 - movls r1, r1, lsr #8
1.152 - 3: strlsbt r1, [r0]
1.153 -@@ -56,11 +56,11 @@ __put_user_2:
1.154 -
1.155 - .global __put_user_4
1.156 - __put_user_4:
1.157 -- bic r2, sp, #0x1f00
1.158 -- bic r2, r2, #0x00ff
1.159 -- ldr r2, [r2, #TSK_ADDR_LIMIT]
1.160 -- sub r2, r2, #4
1.161 -- cmp r0, r2
1.162 -+ bic ip, sp, #0x1f00
1.163 -+ bic ip, ip, #0x00ff
1.164 -+ ldr ip, [ip, #TSK_ADDR_LIMIT]
1.165 -+ sub ip, ip, #4
1.166 -+ cmp r0, ip
1.167 - 4: strlst r1, [r0]
1.168 - movls r0, #0
1.169 - movls pc, lr
1.170 -@@ -74,7 +74,7 @@ __put_user_8:
1.171 - sub ip, ip, #8
1.172 - cmp r0, ip
1.173 - 5: strlst r1, [r0], #4
1.174 --6: strlst r2, [r0]
1.175 -+6: strlst ip, [r0]
1.176 - movls r0, #0
1.177 - movls pc, lr
1.178 -
1.179 ---- linux/include/asm-arm/uaccess.h.orig Mon Nov 17 07:41:04 2003
1.180 -+++ linux/include/asm-arm/uaccess.h Mon Nov 17 07:41:37 2003
1.181 -@@ -86,7 +86,7 @@ extern int __get_user_bad(void);
1.182 - __get_user_x(__r1, __p, __e, 1, "lr"); \
1.183 - break; \
1.184 - case 2: \
1.185 -- __get_user_x(__r1, __p, __e, 2, "r2", "lr"); \
1.186 -+ __get_user_x(__r1, __p, __e, 2, "ip", "lr"); \
1.187 - break; \
1.188 - case 4: \
1.189 - __get_user_x(__r1, __p, __e, 4, "lr"); \
1.190 -@@ -122,13 +122,13 @@ extern int __put_user_bad(void);
1.191 - register int __e asm("r0"); \
1.192 - switch (sizeof(*(p))) { \
1.193 - case 1: \
1.194 -- __put_user_x(__r1, __p, __e, 1, "r2", "lr"); \
1.195 -+ __put_user_x(__r1, __p, __e, 1, "ip", "lr"); \
1.196 - break; \
1.197 - case 2: \
1.198 -- __put_user_x(__r1, __p, __e, 2, "r2", "lr"); \
1.199 -+ __put_user_x(__r1, __p, __e, 2, "ip", "lr"); \
1.200 - break; \
1.201 - case 4: \
1.202 -- __put_user_x(__r1, __p, __e, 4, "r2", "lr"); \
1.203 -+ __put_user_x(__r1, __p, __e, 4, "ip", "lr"); \
1.204 - break; \
1.205 - case 8: \
1.206 - __put_user_x(__r1, __p, __e, 8, "ip", "lr"); \