diff -Naurp linux-2.6.17-rc3.orig/arch/mips/Makefile linux-2.6.17-rc3/arch/mips/Makefile --- linux-2.6.17-rc3.orig/arch/mips/Makefile 2006-05-06 13:51:14.000000000 -0400 +++ linux-2.6.17-rc3/arch/mips/Makefile 2006-05-06 13:53:38.000000000 -0400 @@ -12,7 +12,7 @@ # for "archclean" cleaning up for this architecture. # -cflags-y := +cflags-y := -ffreestanding # # Select the object file format to substitute into the linker script. diff -Naurp linux-2.6.17-rc3.orig/arch/mips/kernel/traps.c linux-2.6.17-rc3/arch/mips/kernel/traps.c --- linux-2.6.17-rc3.orig/arch/mips/kernel/traps.c 2006-05-06 13:51:05.000000000 -0400 +++ linux-2.6.17-rc3/arch/mips/kernel/traps.c 2006-05-06 13:53:38.000000000 -0400 @@ -1288,7 +1288,8 @@ void __init per_cpu_trap_init(void) #ifdef CONFIG_64BIT status_set |= ST0_FR|ST0_KX|ST0_SX|ST0_UX; #endif - if (current_cpu_data.isa_level == MIPS_CPU_ISA_IV) + if (current_cpu_data.isa_level == MIPS_CPU_ISA_IV + || current_cpu_data.cputype == CPU_SB1) status_set |= ST0_XX; change_c0_status(ST0_CU|ST0_MX|ST0_RE|ST0_FR|ST0_BEV|ST0_TS|ST0_KX|ST0_SX|ST0_UX, status_set); diff -Naurp linux-2.6.17-rc3.orig/drivers/md/md.c linux-2.6.17-rc3/drivers/md/md.c --- linux-2.6.17-rc3.orig/drivers/md/md.c 2006-05-06 13:51:08.000000000 -0400 +++ linux-2.6.17-rc3/drivers/md/md.c 2006-05-06 13:53:38.000000000 -0400 @@ -573,6 +573,7 @@ abort: return ret; } +#if 0 static unsigned int calc_sb_csum(mdp_super_t * sb) { unsigned int disk_csum, csum; @@ -583,6 +584,23 @@ static unsigned int calc_sb_csum(mdp_sup sb->sb_csum = disk_csum; return csum; } +#else +unsigned long calc_sb_csum(mdp_super_t *super) +{ + unsigned int oldcsum = super->sb_csum; + unsigned long long newcsum = 0; + unsigned long csum; + int i; + unsigned int *superc = (int*) super; + super->sb_csum = 0; + + for(i=0; i>32); + super->sb_csum = oldcsum; + return csum; +} +#endif /* diff -Naurp linux-2.6.17-rc3.orig/drivers/video/console/newport_con.c linux-2.6.17-rc3/drivers/video/console/newport_con.c --- linux-2.6.17-rc3.orig/drivers/video/console/newport_con.c 2006-05-06 13:51:10.000000000 -0400 +++ linux-2.6.17-rc3/drivers/video/console/newport_con.c 2006-05-06 13:53:38.000000000 -0400 @@ -87,7 +87,7 @@ static inline void newport_render_backgr static inline void newport_init_cmap(void) { - unsigned short i; + unsigned long i; for (i = 0; i < 16; i++) { newport_bfwait(npregs); @@ -722,7 +722,7 @@ const struct consw newport_con = { .con_set_palette = newport_set_palette, .con_scrolldelta = newport_scrolldelta, .con_set_origin = DUMMY, - .con_save_screen = DUMMY + .con_save_screen = DUMMY, }; #ifdef MODULE diff -Naurp linux-2.6.17-rc3.orig/include/asm-mips/atomic.h linux-2.6.17-rc3/include/asm-mips/atomic.h --- linux-2.6.17-rc3.orig/include/asm-mips/atomic.h 2006-03-20 00:53:29.000000000 -0500 +++ linux-2.6.17-rc3/include/asm-mips/atomic.h 2006-05-06 13:53:38.000000000 -0400 @@ -67,8 +67,8 @@ static __inline__ void atomic_add(int i, " sc %0, %1 \n" " beqzl %0, 1b \n" " .set mips0 \n" - : "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter)); + : "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else if (cpu_has_llsc) { unsigned long temp; @@ -79,8 +79,8 @@ static __inline__ void atomic_add(int i, " sc %0, %1 \n" " beqz %0, 1b \n" " .set mips0 \n" - : "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter)); + : "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else { unsigned long flags; @@ -109,8 +109,8 @@ static __inline__ void atomic_sub(int i, " sc %0, %1 \n" " beqzl %0, 1b \n" " .set mips0 \n" - : "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter)); + : "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else if (cpu_has_llsc) { unsigned long temp; @@ -121,8 +121,8 @@ static __inline__ void atomic_sub(int i, " sc %0, %1 \n" " beqz %0, 1b \n" " .set mips0 \n" - : "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter)); + : "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else { unsigned long flags; @@ -151,9 +151,8 @@ static __inline__ int atomic_add_return( " addu %0, %1, %3 \n" " sync \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else if (cpu_has_llsc) { unsigned long temp; @@ -166,9 +165,8 @@ static __inline__ int atomic_add_return( " addu %0, %1, %3 \n" " sync \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else { unsigned long flags; @@ -198,9 +196,8 @@ static __inline__ int atomic_sub_return( " subu %0, %1, %3 \n" " sync \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else if (cpu_has_llsc) { unsigned long temp; @@ -213,9 +210,8 @@ static __inline__ int atomic_sub_return( " subu %0, %1, %3 \n" " sync \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else { unsigned long flags; @@ -257,9 +253,8 @@ static __inline__ int atomic_sub_if_posi " sync \n" "1: \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else if (cpu_has_llsc) { unsigned long temp; @@ -276,9 +271,8 @@ static __inline__ int atomic_sub_if_posi " sync \n" "1: \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else { unsigned long flags; @@ -421,8 +415,8 @@ static __inline__ void atomic64_add(long " scd %0, %1 \n" " beqzl %0, 1b \n" " .set mips0 \n" - : "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter)); + : "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else if (cpu_has_llsc) { unsigned long temp; @@ -433,8 +427,8 @@ static __inline__ void atomic64_add(long " scd %0, %1 \n" " beqz %0, 1b \n" " .set mips0 \n" - : "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter)); + : "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else { unsigned long flags; @@ -463,8 +457,8 @@ static __inline__ void atomic64_sub(long " scd %0, %1 \n" " beqzl %0, 1b \n" " .set mips0 \n" - : "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter)); + : "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else if (cpu_has_llsc) { unsigned long temp; @@ -475,8 +469,8 @@ static __inline__ void atomic64_sub(long " scd %0, %1 \n" " beqz %0, 1b \n" " .set mips0 \n" - : "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter)); + : "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else { unsigned long flags; @@ -505,9 +499,8 @@ static __inline__ long atomic64_add_retu " addu %0, %1, %3 \n" " sync \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else if (cpu_has_llsc) { unsigned long temp; @@ -520,9 +513,8 @@ static __inline__ long atomic64_add_retu " addu %0, %1, %3 \n" " sync \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else { unsigned long flags; @@ -552,9 +544,8 @@ static __inline__ long atomic64_sub_retu " subu %0, %1, %3 \n" " sync \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else if (cpu_has_llsc) { unsigned long temp; @@ -567,9 +558,8 @@ static __inline__ long atomic64_sub_retu " subu %0, %1, %3 \n" " sync \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else { unsigned long flags; @@ -611,9 +601,8 @@ static __inline__ long atomic64_sub_if_p " sync \n" "1: \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else if (cpu_has_llsc) { unsigned long temp; @@ -630,9 +619,8 @@ static __inline__ long atomic64_sub_if_p " sync \n" "1: \n" " .set mips0 \n" - : "=&r" (result), "=&r" (temp), "=m" (v->counter) - : "Ir" (i), "m" (v->counter) - : "memory"); + : "=&r" (result), "=&r" (temp), "+m" (v->counter) + : "Ir" (i)); } else { unsigned long flags;