yann@402: Reconstructed from http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2003-December/018647.html yann@402: See also http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=1540 yann@402: yann@402: Message-ID: yann@402: Subject: Help cross compiling the kernel for arm. yann@402: From: dirk.behme at de.bosch.com yann@402: yann@402: Aitor Garcia wrote: yann@402: > Hello everybody, yann@402: > yann@402: > I am having problems cross compiling the kernel for arm. yann@402: > yann@402: > This is the error message I get: yann@402: > yann@402: > blkpg.c: In function `blk_ioctl': yann@402: > blkpg.c:252: error: asm-specifier for variable `__r1' conflicts with asm clobber list yann@402: > blkpg.c:252: confused by earlier errors, bailing out make[3]: *** [blkpg.o] Error 1 yann@402: > make[3]: Leaving directory `/root/toolchain/kernel-arm/linux-2.4.21/drivers/block' yann@402: > make[2]: *** [first_rule] Error 2 yann@402: > make[2]: Leaving directory `/root/toolchain/kernel-arm/linux-2.4.21/drivers/block' yann@402: > make[1]: *** [_subdir_block] Error 2 yann@402: > make[1]: Leaving directory `/root/toolchain/kernel-arm/linux-2.4.21/drivers' yann@402: > make: *** [_dir_drivers] Error 2 yann@402: > yann@402: > These are the toolchain versions I am using: yann@402: > host=i686-pc-linux-gnu yann@402: > binutils_version=2.14 yann@402: > gcc_version=3.3.2 yann@402: > glibc_version=2.3.2 yann@402: > kernel_version=2.4.21 yann@402: > and applied the kernel patch for arm. 2.4.21-rmk1. yann@402: > ... yann@402: > I have also seen references to this bug in ARM linux yann@402: > Developer. Patch Number = 1540. But this patch is yann@402: > classified as discarded. yann@402: yann@402: You need something like 1540 to compile 2.4.21 with gcc 3.3.2. 1540 was yann@402: discarded because of AFLAGS change. yann@402: yann@402: Try the attachment. yann@402: yann@402: Dirk yann@402: -------------- next part -------------- yann@402: --- linux/arch/arm/lib/getuser.S.orig Mon Nov 17 07:41:51 2003 yann@402: +++ linux/arch/arm/lib/getuser.S Mon Nov 17 07:43:16 2003 yann@402: @@ -17,7 +17,7 @@ yann@402: * yann@402: * Inputs: r0 contains the address yann@402: * Outputs: r0 is the error code yann@402: - * r1, r2 contains the zero-extended value yann@402: + * r1, ip contains the zero-extended value yann@402: * lr corrupted yann@402: * yann@402: * No other registers must be altered. (see include/asm-arm/uaccess.h yann@402: @@ -42,14 +42,14 @@ __get_user_1: yann@402: yann@402: .global __get_user_2 yann@402: __get_user_2: yann@402: - bic r2, sp, #0x1f00 yann@402: - bic r2, r2, #0x00ff yann@402: - ldr r2, [r2, #TSK_ADDR_LIMIT] yann@402: - sub r2, r2, #2 yann@402: - cmp r0, r2 yann@402: + bic ip, sp, #0x1f00 yann@402: + bic ip, ip, #0x00ff yann@402: + ldr ip, [ip, #TSK_ADDR_LIMIT] yann@402: + sub ip, ip, #2 yann@402: + cmp r0, ip yann@402: 2: ldrlsbt r1, [r0], #1 yann@402: -3: ldrlsbt r2, [r0] yann@402: - orrls r1, r1, r2, lsl #8 yann@402: +3: ldrlsbt ip, [r0] yann@402: + orrls r1, r1, ip, lsl #8 yann@402: movls r0, #0 yann@402: movls pc, lr yann@402: b __get_user_bad yann@402: @@ -68,20 +68,20 @@ __get_user_4: yann@402: yann@402: .global __get_user_8 yann@402: __get_user_8: yann@402: - bic r2, sp, #0x1f00 yann@402: - bic r2, r2, #0x00ff yann@402: - ldr r2, [r2, #TSK_ADDR_LIMIT] yann@402: - sub r2, r2, #8 yann@402: - cmp r0, r2 yann@402: + bic ip, sp, #0x1f00 yann@402: + bic ip, ip, #0x00ff yann@402: + ldr ip, [ip, #TSK_ADDR_LIMIT] yann@402: + sub ip, ip, #8 yann@402: + cmp r0, ip yann@402: 5: ldrlst r1, [r0], #4 yann@402: -6: ldrlst r2, [r0] yann@402: +6: ldrlst ip, [r0] yann@402: movls r0, #0 yann@402: movls pc, lr yann@402: yann@402: /* fall through */ yann@402: yann@402: __get_user_bad_8: yann@402: - mov r2, #0 yann@402: + mov ip, #0 yann@402: __get_user_bad: yann@402: mov r1, #0 yann@402: mov r0, #-14 yann@402: --- linux/arch/arm/lib/putuser.S.orig Mon Nov 17 07:41:57 2003 yann@402: +++ linux/arch/arm/lib/putuser.S Mon Nov 17 07:42:26 2003 yann@402: @@ -16,7 +16,7 @@ yann@402: * __put_user_X yann@402: * yann@402: * Inputs: r0 contains the address yann@402: - * r1, r2 contains the value yann@402: + * r1, ip contains the value yann@402: * Outputs: r0 is the error code yann@402: * lr corrupted yann@402: * yann@402: @@ -30,11 +30,11 @@ yann@402: yann@402: .global __put_user_1 yann@402: __put_user_1: yann@402: - bic r2, sp, #0x1f00 yann@402: - bic r2, r2, #0x00ff yann@402: - ldr r2, [r2, #TSK_ADDR_LIMIT] yann@402: - sub r2, r2, #1 yann@402: - cmp r0, r2 yann@402: + bic ip, sp, #0x1f00 yann@402: + bic ip, ip, #0x00ff yann@402: + ldr ip, [ip, #TSK_ADDR_LIMIT] yann@402: + sub ip, ip, #1 yann@402: + cmp r0, ip yann@402: 1: strlsbt r1, [r0] yann@402: movls r0, #0 yann@402: movls pc, lr yann@402: @@ -42,11 +42,11 @@ __put_user_1: yann@402: yann@402: .global __put_user_2 yann@402: __put_user_2: yann@402: - bic r2, sp, #0x1f00 yann@402: - bic r2, r2, #0x00ff yann@402: - ldr r2, [r2, #TSK_ADDR_LIMIT] yann@402: - sub r2, r2, #2 yann@402: - cmp r0, r2 yann@402: + bic ip, sp, #0x1f00 yann@402: + bic ip, ip, #0x00ff yann@402: + ldr ip, [ip, #TSK_ADDR_LIMIT] yann@402: + sub ip, ip, #2 yann@402: + cmp r0, ip yann@402: 2: strlsbt r1, [r0], #1 yann@402: movls r1, r1, lsr #8 yann@402: 3: strlsbt r1, [r0] yann@402: @@ -56,11 +56,11 @@ __put_user_2: yann@402: yann@402: .global __put_user_4 yann@402: __put_user_4: yann@402: - bic r2, sp, #0x1f00 yann@402: - bic r2, r2, #0x00ff yann@402: - ldr r2, [r2, #TSK_ADDR_LIMIT] yann@402: - sub r2, r2, #4 yann@402: - cmp r0, r2 yann@402: + bic ip, sp, #0x1f00 yann@402: + bic ip, ip, #0x00ff yann@402: + ldr ip, [ip, #TSK_ADDR_LIMIT] yann@402: + sub ip, ip, #4 yann@402: + cmp r0, ip yann@402: 4: strlst r1, [r0] yann@402: movls r0, #0 yann@402: movls pc, lr yann@402: @@ -74,7 +74,7 @@ __put_user_8: yann@402: sub ip, ip, #8 yann@402: cmp r0, ip yann@402: 5: strlst r1, [r0], #4 yann@402: -6: strlst r2, [r0] yann@402: +6: strlst ip, [r0] yann@402: movls r0, #0 yann@402: movls pc, lr yann@402: yann@402: --- linux/include/asm-arm/uaccess.h.orig Mon Nov 17 07:41:04 2003 yann@402: +++ linux/include/asm-arm/uaccess.h Mon Nov 17 07:41:37 2003 yann@402: @@ -86,7 +86,7 @@ extern int __get_user_bad(void); yann@402: __get_user_x(__r1, __p, __e, 1, "lr"); \ yann@402: break; \ yann@402: case 2: \ yann@402: - __get_user_x(__r1, __p, __e, 2, "r2", "lr"); \ yann@402: + __get_user_x(__r1, __p, __e, 2, "ip", "lr"); \ yann@402: break; \ yann@402: case 4: \ yann@402: __get_user_x(__r1, __p, __e, 4, "lr"); \ yann@402: @@ -122,13 +122,13 @@ extern int __put_user_bad(void); yann@402: register int __e asm("r0"); \ yann@402: switch (sizeof(*(p))) { \ yann@402: case 1: \ yann@402: - __put_user_x(__r1, __p, __e, 1, "r2", "lr"); \ yann@402: + __put_user_x(__r1, __p, __e, 1, "ip", "lr"); \ yann@402: break; \ yann@402: case 2: \ yann@402: - __put_user_x(__r1, __p, __e, 2, "r2", "lr"); \ yann@402: + __put_user_x(__r1, __p, __e, 2, "ip", "lr"); \ yann@402: break; \ yann@402: case 4: \ yann@402: - __put_user_x(__r1, __p, __e, 4, "r2", "lr"); \ yann@402: + __put_user_x(__r1, __p, __e, 4, "ip", "lr"); \ yann@402: break; \ yann@402: case 8: \ yann@402: __put_user_x(__r1, __p, __e, 8, "ip", "lr"); \