[prev in list] [next in list] [prev in thread] [next in thread]
List: openzaurus-devel
Subject: [Openzaurus-devel] patch for openzaurus kernel 2.4.18 to compile with gcc3.3
From: Alexander Enis <erich141 () yahoo ! com>
Date: 2004-02-16 4:14:30
Message-ID: 20040216041430.73342.qmail () web60306 ! mail ! yahoo ! com
[Download RAW message or body]
This is a patch to resolve compile errors for building
kernel with gcc 3.3. Someone in #oe asked me to post
this patch even though the kernel built with gcc 3.3
doesn't boot (yet). However it works well if compiled
with gcc 2.95 (provided you take original
arch/arm/Makefile).
As you probably already figured out, this patch is
intended for developers working on kernel and is not
ready to be put into build system.
Regards,
Alexander.
__________________________________
Do you Yahoo!?
Yahoo! Finance: Get your refund fast by filing online.
http://taxes.yahoo.com/filing.html
["linux-2.4.18-OZ-gcc3.3.diff" (text/x-diff)]
diff -urN linux.orig/arch/arm/kernel/process.c linux/arch/arm/kernel/process.c
--- linux.orig/arch/arm/kernel/process.c 2004-02-14 19:42:32.000000000 -0500
+++ linux/arch/arm/kernel/process.c 2004-02-14 23:40:54.000000000 -0500
@@ -387,16 +387,16 @@
pid_t __ret;
__asm__ __volatile__(
- "orr r0, %1, %2 @ kernel_thread sys_clone
- mov r1, #0
- "__syscall(clone)"
- movs %0, r0 @ if we are the child
- bne 1f
- mov fp, #0 @ ensure that fp is zero
- mov r0, %4
- mov lr, pc
- mov pc, %3
- b sys_exit
+ "orr r0, %1, %2 @ kernel_thread sys_clone \n\
+ mov r1, #0 \n\
+ "__syscall(clone)" \n\
+ movs %0, r0 @ if we are the child \n\
+ bne 1f \n\
+ mov fp, #0 @ ensure that fp is zero \n\
+ mov r0, %4 \n\
+ mov lr, pc \n\
+ mov pc, %3 \n\
+ b sys_exit \n\
1: "
: "=&r" (__ret)
: "Ir" (flags), "I" (CLONE_VM), "r" (fn), "r" (arg)
diff -urN linux.orig/arch/arm/kernel/semaphore.c linux/arch/arm/kernel/semaphore.c
--- linux.orig/arch/arm/kernel/semaphore.c 2004-02-14 12:54:10.000000000 -0500
+++ linux/arch/arm/kernel/semaphore.c 2004-02-14 23:14:12.000000000 -0500
@@ -177,76 +177,76 @@
* value in some cases..
*/
#ifdef CONFIG_CPU_26
-asm(" .align 5
- .globl __down_failed
-__down_failed:
- stmfd sp!, {r0 - r3, lr}
- mov r0, ip
- bl __down
- ldmfd sp!, {r0 - r3, pc}^
-
- .align 5
- .globl __down_interruptible_failed
-__down_interruptible_failed:
- stmfd sp!, {r0 - r3, lr}
- mov r0, ip
- bl __down_interruptible
- mov ip, r0
- ldmfd sp!, {r0 - r3, pc}^
-
- .align 5
- .globl __down_trylock_failed
-__down_trylock_failed:
- stmfd sp!, {r0 - r3, lr}
- mov r0, ip
- bl __down_trylock
- mov ip, r0
- ldmfd sp!, {r0 - r3, pc}^
-
- .align 5
- .globl __up_wakeup
-__up_wakeup:
- stmfd sp!, {r0 - r3, lr}
- mov r0, ip
- bl __up
- ldmfd sp!, {r0 - r3, pc}^
+asm(" .align 5 \n\
+ .globl __down_failed \n\
+__down_failed: \n\
+ stmfd sp!, {r0 - r3, lr} \n\
+ mov r0, ip \n\
+ bl __down \n\
+ ldmfd sp!, {r0 - r3, pc}^ \n\
+ \n\
+ .align 5 \n\
+ .globl __down_interruptible_failed \n\
+__down_interruptible_failed: \n\
+ stmfd sp!, {r0 - r3, lr} \n\
+ mov r0, ip \n\
+ bl __down_interruptible \n\
+ mov ip, r0 \n\
+ ldmfd sp!, {r0 - r3, pc}^ \n\
+ \n\
+ .align 5 \n\
+ .globl __down_trylock_failed \n\
+__down_trylock_failed: \n\
+ stmfd sp!, {r0 - r3, lr} \n\
+ mov r0, ip \n\
+ bl __down_trylock \n\
+ mov ip, r0 \n\
+ ldmfd sp!, {r0 - r3, pc}^ \n\
+ \n\
+ .align 5 \n\
+ .globl __up_wakeup \n\
+__up_wakeup: \n\
+ stmfd sp!, {r0 - r3, lr} \n\
+ mov r0, ip \n\
+ bl __up \n\
+ ldmfd sp!, {r0 - r3, pc}^ \n\
");
#else
/* 32 bit version */
-asm(" .align 5
- .globl __down_failed
-__down_failed:
- stmfd sp!, {r0 - r3, lr}
- mov r0, ip
- bl __down
- ldmfd sp!, {r0 - r3, pc}
-
- .align 5
- .globl __down_interruptible_failed
-__down_interruptible_failed:
- stmfd sp!, {r0 - r3, lr}
- mov r0, ip
- bl __down_interruptible
- mov ip, r0
- ldmfd sp!, {r0 - r3, pc}
-
- .align 5
- .globl __down_trylock_failed
-__down_trylock_failed:
- stmfd sp!, {r0 - r3, lr}
- mov r0, ip
- bl __down_trylock
- mov ip, r0
- ldmfd sp!, {r0 - r3, pc}
-
- .align 5
- .globl __up_wakeup
-__up_wakeup:
- stmfd sp!, {r0 - r3, lr}
- mov r0, ip
- bl __up
- ldmfd sp!, {r0 - r3, pc}
+asm(" .align 5 \n\
+ .globl __down_failed \n\
+__down_failed: \n\
+ stmfd sp!, {r0 - r3, lr} \n\
+ mov r0, ip \n\
+ bl __down \n\
+ ldmfd sp!, {r0 - r3, pc} \n\
+ \n\
+ .align 5 \n\
+ .globl __down_interruptible_failed \n\
+__down_interruptible_failed: \n\
+ stmfd sp!, {r0 - r3, lr} \n\
+ mov r0, ip \n\
+ bl __down_interruptible \n\
+ mov ip, r0 \n\
+ ldmfd sp!, {r0 - r3, pc} \n\
+ \n\
+ .align 5 \n\
+ .globl __down_trylock_failed \n\
+__down_trylock_failed: \n\
+ stmfd sp!, {r0 - r3, lr} \n\
+ mov r0, ip \n\
+ bl __down_trylock \n\
+ mov ip, r0 \n\
+ ldmfd sp!, {r0 - r3, pc} \n\
+ \n\
+ .align 5 \n\
+ .globl __up_wakeup \n\
+__up_wakeup: \n\
+ stmfd sp!, {r0 - r3, lr} \n\
+ mov r0, ip \n\
+ bl __up \n\
+ ldmfd sp!, {r0 - r3, pc} \n\
");
#endif
diff -urN linux.orig/arch/arm/lib/getuser.S linux/arch/arm/lib/getuser.S
--- linux.orig/arch/arm/lib/getuser.S 2004-02-14 12:54:10.000000000 -0500
+++ linux/arch/arm/lib/getuser.S 2004-02-14 22:42:03.000000000 -0500
@@ -42,14 +42,14 @@
.global __get_user_2
__get_user_2:
- bic r2, sp, #0x1f00
- bic r2, r2, #0x00ff
- ldr r2, [r2, #TSK_ADDR_LIMIT]
- sub r2, r2, #2
- cmp r0, r2
+ bic ip, sp, #0x1f00
+ bic ip, ip, #0x00ff
+ ldr ip, [ip, #TSK_ADDR_LIMIT]
+ sub ip, ip, #2
+ cmp r0, ip
2: ldrlsbt r1, [r0], #1
-3: ldrlsbt r2, [r0]
- orrls r1, r1, r2, lsl #8
+3: ldrlsbt ip, [r0]
+ orrls r1, r1, ip, lsl #8
movls r0, #0
movls pc, lr
b __get_user_bad
diff -urN linux.orig/arch/arm/lib/longlong.h linux/arch/arm/lib/longlong.h
--- linux.orig/arch/arm/lib/longlong.h 2001-10-11 12:04:57.000000000 -0400
+++ linux/arch/arm/lib/longlong.h 2004-02-14 23:08:08.000000000 -0500
@@ -75,7 +75,7 @@
#if defined (__arm__)
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("adds %1, %4, %5
+ __asm__ ("adds %1, %4, %5 \n\
adc %0, %2, %3" \
: "=r" ((USItype) (sh)), \
"=&r" ((USItype) (sl)) \
@@ -84,7 +84,7 @@
"%r" ((USItype) (al)), \
"rI" ((USItype) (bl)))
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("subs %1, %4, %5
+ __asm__ ("subs %1, %4, %5 \n\
sbc %0, %2, %3" \
: "=r" ((USItype) (sh)), \
"=&r" ((USItype) (sl)) \
@@ -94,18 +94,18 @@
"rI" ((USItype) (bl)))
#define umul_ppmm(xh, xl, a, b) \
{register USItype __t0, __t1, __t2; \
- __asm__ ("%@ Inlined umul_ppmm
- mov %2, %5, lsr #16
- mov %0, %6, lsr #16
- bic %3, %5, %2, lsl #16
- bic %4, %6, %0, lsl #16
- mul %1, %3, %4
- mul %4, %2, %4
- mul %3, %0, %3
- mul %0, %2, %0
- adds %3, %4, %3
- addcs %0, %0, #65536
- adds %1, %1, %3, lsl #16
+ __asm__ ("%@ Inlined umul_ppmm \n\
+ mov %2, %5, lsr #16 \n\
+ mov %0, %6, lsr #16 \n\
+ bic %3, %5, %2, lsl #16 \n\
+ bic %4, %6, %0, lsl #16 \n\
+ mul %1, %3, %4 \n\
+ mul %4, %2, %4 \n\
+ mul %3, %0, %3 \n\
+ mul %0, %2, %0 \n\
+ adds %3, %4, %3 \n\
+ addcs %0, %0, #65536 \n\
+ adds %1, %1, %3, lsl #16 \n\
adc %0, %0, %3, lsr #16" \
: "=&r" ((USItype) (xh)), \
"=r" ((USItype) (xl)), \
diff -urN linux.orig/arch/arm/lib/muldi3.c linux/arch/arm/lib/muldi3.c
--- linux.orig/arch/arm/lib/muldi3.c 2001-10-11 12:04:57.000000000 -0400
+++ linux/arch/arm/lib/muldi3.c 2004-02-14 23:12:19.000000000 -0500
@@ -33,18 +33,18 @@
#define umul_ppmm(xh, xl, a, b) \
{register USItype __t0, __t1, __t2; \
- __asm__ ("%@ Inlined umul_ppmm
- mov %2, %5, lsr #16
- mov %0, %6, lsr #16
- bic %3, %5, %2, lsl #16
- bic %4, %6, %0, lsl #16
- mul %1, %3, %4
- mul %4, %2, %4
- mul %3, %0, %3
- mul %0, %2, %0
- adds %3, %4, %3
- addcs %0, %0, #65536
- adds %1, %1, %3, lsl #16
+ __asm__ ("%@ Inlined umul_ppmm \n\
+ mov %2, %5, lsr #16 \n\
+ mov %0, %6, lsr #16 \n\
+ bic %3, %5, %2, lsl #16 \n\
+ bic %4, %6, %0, lsl #16 \n\
+ mul %1, %3, %4 \n\
+ mul %4, %2, %4 \n\
+ mul %3, %0, %3 \n\
+ mul %0, %2, %0 \n\
+ adds %3, %4, %3 \n\
+ addcs %0, %0, #65536 \n\
+ adds %1, %1, %3, lsl #16 \n\
adc %0, %0, %3, lsr #16" \
: "=&r" ((USItype) (xh)), \
"=r" ((USItype) (xl)), \
diff -urN linux.orig/arch/arm/lib/putuser.S linux/arch/arm/lib/putuser.S
--- linux.orig/arch/arm/lib/putuser.S 2001-10-11 12:04:57.000000000 -0400
+++ linux/arch/arm/lib/putuser.S 2004-02-14 22:45:19.000000000 -0500
@@ -30,11 +30,11 @@
.global __put_user_1
__put_user_1:
- bic r2, sp, #0x1f00
- bic r2, r2, #0x00ff
- ldr r2, [r2, #TSK_ADDR_LIMIT]
- sub r2, r2, #1
- cmp r0, r2
+ bic ip, sp, #0x1f00
+ bic ip, ip, #0x00ff
+ ldr ip, [ip, #TSK_ADDR_LIMIT]
+ sub ip, ip, #1
+ cmp r0, ip
1: strlsbt r1, [r0]
movls r0, #0
movls pc, lr
@@ -42,11 +42,11 @@
.global __put_user_2
__put_user_2:
- bic r2, sp, #0x1f00
- bic r2, r2, #0x00ff
- ldr r2, [r2, #TSK_ADDR_LIMIT]
- sub r2, r2, #2
- cmp r0, r2
+ bic ip, sp, #0x1f00
+ bic ip, ip, #0x00ff
+ ldr ip, [ip, #TSK_ADDR_LIMIT]
+ sub ip, ip, #2
+ cmp r0, ip
2: strlsbt r1, [r0], #1
movls r1, r1, lsr #8
3: strlsbt r1, [r0]
@@ -56,11 +56,11 @@
.global __put_user_4
__put_user_4:
- bic r2, sp, #0x1f00
- bic r2, r2, #0x00ff
- ldr r2, [r2, #TSK_ADDR_LIMIT]
- sub r2, r2, #4
- cmp r0, r2
+ bic ip, sp, #0x1f00
+ bic ip, ip, #0x00ff
+ ldr ip, [ip, #TSK_ADDR_LIMIT]
+ sub ip, ip, #4
+ cmp r0, ip
4: strlst r1, [r0]
movls r0, #0
movls pc, lr
diff -urN linux.orig/arch/arm/Makefile linux/arch/arm/Makefile
--- linux.orig/arch/arm/Makefile 2004-02-14 19:35:11.000000000 -0500
+++ linux/arch/arm/Makefile 2004-02-14 22:36:43.000000000 -0500
@@ -34,7 +34,7 @@
arch-$(CONFIG_CPU_32v3) :=-march=armv3
arch-$(CONFIG_CPU_32v4) :=-march=armv4
arch-$(CONFIG_CPU_32v5) :=-march=armv5
-arch-$(CONFIG_CPU_XSCALE) :=-march=armv4 -Wa,-mxscale #-march=armv5te
+arch-$(CONFIG_CPU_XSCALE) :=-Wa,-mcpu=xscale
# This selects how we optimise for the processor.
tune-y :=
@@ -46,11 +46,11 @@
tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi
tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110
tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100
-tune-$(CONFIG_CPU_XSCALE) :=-mtune=strongarm #-mtune=xscale
+tune-$(CONFIG_CPU_XSCALE) :=-mtune=xscale
CFLAGS_BOOT :=$(apcs-y) $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float
CFLAGS +=$(apcs-y) $(arch-y) $(tune-y) -mshort-load-bytes -msoft-float
-AFLAGS +=$(apcs-y) $(arch-y) -mno-fpu -msoft-float
+AFLAGS +=$(apcs-y) $(arch-y) -msoft-float -Wa,-mno-fpu
ifeq ($(CONFIG_CPU_26),y)
PROCESSOR = armo
diff -urN linux.orig/arch/arm/nwfpe/softfloat.c linux/arch/arm/nwfpe/softfloat.c
--- linux.orig/arch/arm/nwfpe/softfloat.c 2004-02-14 12:54:10.000000000 -0500
+++ linux/arch/arm/nwfpe/softfloat.c 2004-02-14 23:09:39.000000000 -0500
@@ -184,9 +184,9 @@
{
#if 0
float32 f;
- __asm__("@ packFloat32;
- mov %0, %1, asl #31;
- orr %0, %2, asl #23;
+ __asm__("@ packFloat32; \n\
+ mov %0, %1, asl #31; \n\
+ orr %0, %2, asl #23; \n\
orr %0, %3"
: /* no outputs */
: "g" (f), "g" (zSign), "g" (zExp), "g" (zSig)
diff -urN linux.orig/include/asm-arm/proc-armv/uncompress.h linux/include/asm-arm/proc-armv/uncompress.h
--- linux.orig/include/asm-arm/proc-armv/uncompress.h 2000-09-18 18:15:24.000000000 -0400
+++ linux/include/asm-arm/proc-armv/uncompress.h 2004-02-14 23:20:48.000000000 -0500
@@ -10,17 +10,17 @@
static inline void proc_decomp_setup (void)
{
- __asm__ __volatile__("
- mrc p15, 0, r0, c0, c0
- eor r0, r0, #0x44 << 24
- eor r0, r0, #0x01 << 16
- eor r0, r0, #0xA1 << 8
- movs r0, r0, lsr #5
- mcreq p15, 0, r0, c7, c5, 0 @ flush I cache
- mrceq p15, 0, r0, c1, c0
- orreq r0, r0, #1 << 12
- mcreq p15, 0, r0, c1, c0 @ enable I cache
- mov r0, #0
- mcreq p15, 0, r0, c15, c1, 2 @ enable clock switching
+ __asm__ __volatile__(" \n\
+ mrc p15, 0, r0, c0, c0 \n\
+ eor r0, r0, #0x44 << 24 \n\
+ eor r0, r0, #0x01 << 16 \n\
+ eor r0, r0, #0xA1 << 8 \n\
+ movs r0, r0, lsr #5 \n\
+ mcreq p15, 0, r0, c7, c5, 0 @ flush I cache \n\
+ mrceq p15, 0, r0, c1, c0 \n\
+ orreq r0, r0, #1 << 12 \n\
+ mcreq p15, 0, r0, c1, c0 @ enable I cache \n\
+ mov r0, #0 \n\
+ mcreq p15, 0, r0, c15, c1, 2 @ enable clock switching \n\
" : : : "r0", "cc", "memory");
}
diff -urN linux.orig/include/asm-arm/uaccess.h linux/include/asm-arm/uaccess.h
--- linux.orig/include/asm-arm/uaccess.h 2004-02-14 20:26:20.000000000 -0500
+++ linux/include/asm-arm/uaccess.h 2004-02-14 22:38:40.000000000 -0500
@@ -86,7 +86,7 @@
__get_user_x(__r1, __p, __e, 1, "lr"); \
break; \
case 2: \
- __get_user_x(__r1, __p, __e, 2, "r2", "lr"); \
+ __get_user_x(__r1, __p, __e, 2, "ip", "lr"); \
break; \
case 4: \
__get_user_x(__r1, __p, __e, 4, "lr"); \
@@ -122,13 +122,13 @@
register int __e asm("r0"); \
switch (sizeof(*(p))) { \
case 1: \
- __put_user_x(__r1, __p, __e, 1, "r2", "lr"); \
+ __put_user_x(__r1, __p, __e, 1, "ip", "lr"); \
break; \
case 2: \
- __put_user_x(__r1, __p, __e, 2, "r2", "lr"); \
+ __put_user_x(__r1, __p, __e, 2, "ip", "lr"); \
break; \
case 4: \
- __put_user_x(__r1, __p, __e, 4, "r2", "lr"); \
+ __put_user_x(__r1, __p, __e, 4, "ip", "lr"); \
break; \
case 8: \
__put_user_x(__r1, __p, __e, 8, "ip", "lr"); \
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
Openzaurus-devel mailing list
Openzaurus-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openzaurus-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic