Submitted By: Jim Gifford (patches at jg555 dot com) Date: 2006-07-08 Initial Package Version: 2.6.17.4 Origin: Linux-MIPS Upstream Status: http://www.linux-mips.org/pub/linux/mips/kernel/v2.6/ Description: Merges Linux-MIPS and Kernel.org Tree's diff -Naur linux-2.6.17.4-kernel/arch/mips/cobalt/console.c linux-2.6.17.4-mips/arch/mips/cobalt/console.c --- linux-2.6.17.4-kernel/arch/mips/cobalt/console.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/cobalt/console.c 2006-07-06 16:58:16.000000000 -0700 @@ -41,3 +41,8 @@ printk("Cobalt: early console registered\n"); } + +void __init disable_early_printk(void) +{ + unregister_console(&cons_info); +} diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/atlas_defconfig linux-2.6.17.4-mips/arch/mips/configs/atlas_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/atlas_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/atlas_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_MIPS_BONITO64=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/bigsur_defconfig linux-2.6.17.4-mips/arch/mips/configs/bigsur_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/bigsur_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/bigsur_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -83,6 +83,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_COHERENT=y CONFIG_CPU_BIG_ENDIAN=y # CONFIG_CPU_LITTLE_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/capcella_defconfig linux-2.6.17.4-mips/arch/mips/configs/capcella_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/capcella_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/capcella_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -75,6 +75,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/cobalt_defconfig linux-2.6.17.4-mips/arch/mips/configs/cobalt_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/cobalt_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/cobalt_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -68,6 +68,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_I8259=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/db1000_defconfig linux-2.6.17.4-mips/arch/mips/configs/db1000_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/db1000_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/db1000_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/db1100_defconfig linux-2.6.17.4-mips/arch/mips/configs/db1100_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/db1100_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/db1100_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/db1200_defconfig linux-2.6.17.4-mips/arch/mips/configs/db1200_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/db1200_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/db1200_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_COHERENT=y CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/db1500_defconfig linux-2.6.17.4-mips/arch/mips/configs/db1500_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/db1500_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/db1500_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/db1550_defconfig linux-2.6.17.4-mips/arch/mips/configs/db1550_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/db1550_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/db1550_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ddb5476_defconfig linux-2.6.17.4-mips/arch/mips/configs/ddb5476_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ddb5476_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ddb5476_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_I8259=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ddb5477_defconfig linux-2.6.17.4-mips/arch/mips/configs/ddb5477_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ddb5477_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ddb5477_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -68,6 +68,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_I8259=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/decstation_defconfig linux-2.6.17.4-mips/arch/mips/configs/decstation_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/decstation_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/decstation_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -68,6 +68,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/e55_defconfig linux-2.6.17.4-mips/arch/mips/configs/e55_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/e55_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/e55_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -73,6 +73,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ev64120_defconfig linux-2.6.17.4-mips/arch/mips/configs/ev64120_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ev64120_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ev64120_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -68,6 +68,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_CPU_BIG_ENDIAN=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ev96100_defconfig linux-2.6.17.4-mips/arch/mips/configs/ev96100_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ev96100_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ev96100_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_CPU_BIG_ENDIAN=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ip22_defconfig linux-2.6.17.4-mips/arch/mips/configs/ip22_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ip22_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ip22_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_ARC=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ip27_defconfig linux-2.6.17.4-mips/arch/mips/configs/ip27_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ip27_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ip27_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -73,6 +73,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_ARC=y CONFIG_DMA_IP27=y CONFIG_CPU_BIG_ENDIAN=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ip32_defconfig linux-2.6.17.4-mips/arch/mips/configs/ip32_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ip32_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ip32_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_ARC=y CONFIG_DMA_IP32=y CONFIG_DMA_NONCOHERENT=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/it8172_defconfig linux-2.6.17.4-mips/arch/mips/configs/it8172_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/it8172_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/it8172_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -68,6 +68,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ivr_defconfig linux-2.6.17.4-mips/arch/mips/configs/ivr_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ivr_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ivr_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/jaguar-atx_defconfig linux-2.6.17.4-mips/arch/mips/configs/jaguar-atx_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/jaguar-atx_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/jaguar-atx_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -68,6 +68,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_LIMITED_DMA=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/jmr3927_defconfig linux-2.6.17.4-mips/arch/mips/configs/jmr3927_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/jmr3927_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/jmr3927_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_CPU_BIG_ENDIAN=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/lasat200_defconfig linux-2.6.17.4-mips/arch/mips/configs/lasat200_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/lasat200_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/lasat200_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -71,6 +71,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_MIPS_NILE4=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/malta_defconfig linux-2.6.17.4-mips/arch/mips/configs/malta_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/malta_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/malta_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/mipssim_defconfig linux-2.6.17.4-mips/arch/mips/configs/mipssim_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/mipssim_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/mipssim_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/mpc30x_defconfig linux-2.6.17.4-mips/arch/mips/configs/mpc30x_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/mpc30x_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/mpc30x_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -75,6 +75,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ocelot_3_defconfig linux-2.6.17.4-mips/arch/mips/configs/ocelot_3_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ocelot_3_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ocelot_3_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_CPU_BIG_ENDIAN=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ocelot_c_defconfig linux-2.6.17.4-mips/arch/mips/configs/ocelot_c_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ocelot_c_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ocelot_c_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_CPU_BIG_ENDIAN=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ocelot_defconfig linux-2.6.17.4-mips/arch/mips/configs/ocelot_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ocelot_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ocelot_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_CPU_BIG_ENDIAN=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/ocelot_g_defconfig linux-2.6.17.4-mips/arch/mips/configs/ocelot_g_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/ocelot_g_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/ocelot_g_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_CPU_BIG_ENDIAN=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/pb1100_defconfig linux-2.6.17.4-mips/arch/mips/configs/pb1100_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/pb1100_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/pb1100_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/pb1500_defconfig linux-2.6.17.4-mips/arch/mips/configs/pb1500_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/pb1500_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/pb1500_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/pb1550_defconfig linux-2.6.17.4-mips/arch/mips/configs/pb1550_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/pb1550_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/pb1550_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/pnx8550-jbs_defconfig linux-2.6.17.4-mips/arch/mips/configs/pnx8550-jbs_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/pnx8550-jbs_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/pnx8550-jbs_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/pnx8550-v2pci_defconfig linux-2.6.17.4-mips/arch/mips/configs/pnx8550-v2pci_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/pnx8550-v2pci_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/pnx8550-v2pci_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/qemu_defconfig linux-2.6.17.4-mips/arch/mips/configs/qemu_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/qemu_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/qemu_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_COHERENT=y CONFIG_GENERIC_ISA_DMA=y CONFIG_I8259=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/rbhma4500_defconfig linux-2.6.17.4-mips/arch/mips/configs/rbhma4500_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/rbhma4500_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/rbhma4500_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -74,6 +74,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y CONFIG_GENERIC_ISA_DMA=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/rm200_defconfig linux-2.6.17.4-mips/arch/mips/configs/rm200_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/rm200_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/rm200_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_ARC=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_DMA_NONCOHERENT=y diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/sb1250-swarm_defconfig linux-2.6.17.4-mips/arch/mips/configs/sb1250-swarm_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/sb1250-swarm_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/sb1250-swarm_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -84,6 +84,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_COHERENT=y CONFIG_CPU_BIG_ENDIAN=y # CONFIG_CPU_LITTLE_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/sead_defconfig linux-2.6.17.4-mips/arch/mips/configs/sead_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/sead_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/sead_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/tb0226_defconfig linux-2.6.17.4-mips/arch/mips/configs/tb0226_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/tb0226_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/tb0226_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -77,6 +77,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/tb0229_defconfig linux-2.6.17.4-mips/arch/mips/configs/tb0229_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/tb0229_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/tb0229_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -77,6 +77,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/workpad_defconfig linux-2.6.17.4-mips/arch/mips/configs/workpad_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/workpad_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/workpad_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -73,6 +73,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y # CONFIG_CPU_BIG_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/configs/yosemite_defconfig linux-2.6.17.4-mips/arch/mips/configs/yosemite_defconfig --- linux-2.6.17.4-kernel/arch/mips/configs/yosemite_defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/configs/yosemite_defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -68,6 +68,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_DMA_COHERENT=y CONFIG_CPU_BIG_ENDIAN=y # CONFIG_CPU_LITTLE_ENDIAN is not set diff -Naur linux-2.6.17.4-kernel/arch/mips/defconfig linux-2.6.17.4-mips/arch/mips/defconfig --- linux-2.6.17.4-kernel/arch/mips/defconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/defconfig 2006-07-06 16:58:16.000000000 -0700 @@ -67,6 +67,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_ARC=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NEED_PCI_MAP_STATE=y diff -Naur linux-2.6.17.4-kernel/arch/mips/Kconfig linux-2.6.17.4-mips/arch/mips/Kconfig --- linux-2.6.17.4-kernel/arch/mips/Kconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/Kconfig 2006-07-06 16:58:16.000000000 -0700 @@ -278,6 +278,7 @@ select SYS_SUPPORTS_64BIT_KERNEL select SYS_SUPPORTS_BIG_ENDIAN select SYS_SUPPORTS_LITTLE_ENDIAN + select SYS_SUPPORTS_MULTITHREADING if EXPERIMENTAL help This enables support for the MIPS Technologies Atlas evaluation board. @@ -294,6 +295,7 @@ select I8259 select MIPS_BOARDS_GEN select MIPS_BONITO64 + select MIPS_CPU_SCACHE select MIPS_GT64120 select MIPS_MSC select SWAP_IO_SPACE @@ -306,6 +308,7 @@ select SYS_SUPPORTS_64BIT_KERNEL select SYS_SUPPORTS_BIG_ENDIAN select SYS_SUPPORTS_LITTLE_ENDIAN + select SYS_SUPPORTS_MULTITHREADING help This enables support for the MIPS Technologies Malta evaluation board. @@ -438,11 +441,13 @@ config PNX8550_V2PCI bool "Philips PNX8550 based Viper2-PCI board" + depends on BROKEN select PNX8550 select SYS_SUPPORTS_LITTLE_ENDIAN config PNX8550_JBS bool "Philips PNX8550 based JBS board" + depends on BROKEN select PNX8550 select SYS_SUPPORTS_LITTLE_ENDIAN @@ -506,8 +511,6 @@ config MACH_VR41XX bool "NEC VR41XX-based machines" select SYS_HAS_CPU_VR41XX - select SYS_SUPPORTS_32BIT_KERNEL - select SYS_SUPPORTS_64BIT_KERNEL if EXPERIMENTAL config PMC_YOSEMITE bool "PMC-Sierra Yosemite eval board" @@ -522,6 +525,7 @@ select SYS_SUPPORTS_64BIT_KERNEL select SYS_SUPPORTS_BIG_ENDIAN select SYS_SUPPORTS_HIGHMEM + select SYS_SUPPORTS_SMP help Yosemite is an evaluation board for the RM9000x2 processor manufactured by PMC-Sierra. @@ -555,6 +559,7 @@ select HW_HAS_EISA select IP22_CPU_SCACHE select IRQ_CPU + select NO_ISA if ISA select SWAP_IO_SPACE select SYS_HAS_CPU_R4X00 select SYS_HAS_CPU_R5000 @@ -577,6 +582,7 @@ select SYS_HAS_CPU_R10000 select SYS_SUPPORTS_64BIT_KERNEL select SYS_SUPPORTS_BIG_ENDIAN + select SYS_SUPPORTS_SMP help This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics workstations. To compile a Linux kernel that runs on these, say Y @@ -1035,6 +1041,9 @@ config HAVE_STD_PC_SERIAL_PORT bool +config VR4181 + bool + config ARC_CONSOLE bool "ARC console support" depends on SGI_IP22 || SNI_RM200_PCI @@ -1155,7 +1164,7 @@ select CPU_SUPPORTS_32BIT_KERNEL select CPU_SUPPORTS_64BIT_KERNEL help - The options selects support for the NEC VR4100 series of processors. + The options selects support for the NEC VR41xx series of processors. Only choose this option if you have one of these processors as a kernel built with this option will not run on any other type of processor or vice versa. @@ -1211,7 +1220,7 @@ select CPU_SUPPORTS_32BIT_KERNEL help MIPS Technologies R6000 and R6000A series processors. Note these - processors are extremly rare and the support for them is incomplete. + processors are extremely rare and the support for them is incomplete. config CPU_NEVADA bool "RM52xx" @@ -1332,7 +1341,7 @@ endmenu # -# These two indicate any levelof the MIPS32 and MIPS64 architecture +# These two indicate any level of the MIPS32 and MIPS64 architecture # config CPU_MIPS32 bool @@ -1343,7 +1352,7 @@ default y if CPU_MIPS64_R1 || CPU_MIPS64_R2 # -# These two indicate the revision of the architecture, either 32 bot 64 bit. +# These two indicate the revision of the architecture, either Release 1 or Release 2 # config CPU_MIPSR1 bool @@ -1436,6 +1445,13 @@ bool select BOARD_SCACHE +# +# Support for a MIPS32 / MIPS64 style S-caches +# +config MIPS_CPU_SCACHE + bool + select BOARD_SCACHE + config R5000_CPU_SCACHE bool select BOARD_SCACHE @@ -1455,32 +1471,57 @@ config CPU_HAS_PREFETCH bool -config MIPS_MT - bool "Enable MIPS MT" - choice prompt "MIPS MT options" - depends on MIPS_MT + +config MIPS_MT_DISABLED + bool "Disable multithreading support." + help + Use this option if your workload can't take advantage of + MIPS hardware multithreading support. On systems that don't have + the option of an MT-enabled processor this option will be the only + option in this menu. config MIPS_MT_SMTC bool "SMTC: Use all TCs on all VPEs for SMP" + depends on CPU_MIPS32_R2 + #depends on CPU_MIPS64_R2 # once there is hardware ... + depends on SYS_SUPPORTS_MULTITHREADING select CPU_MIPSR2_IRQ_VI select CPU_MIPSR2_SRS + select MIPS_MT select SMP + help + This is a kernel model which is known a SMTC or lately has been + marketesed into SMVP. config MIPS_MT_SMP bool "Use 1 TC on each available VPE for SMP" + depends on SYS_SUPPORTS_MULTITHREADING + select CPU_MIPSR2_IRQ_VI + select CPU_MIPSR2_SRS + select MIPS_MT select SMP + help + This is a kernel model which is also known a VSMP or lately + has been marketesed into SMVP. config MIPS_VPE_LOADER bool "VPE loader support." - depends on MIPS_MT + depends on SYS_SUPPORTS_MULTITHREADING + select MIPS_MT help Includes a loader for loading an elf relocatable object onto another VPE and running it. endchoice +config MIPS_MT + bool + +config SYS_SUPPORTS_MULTITHREADING + bool + config MIPS_MT_FPAFF bool "Dynamic FPU affinity for FP-intensive threads" depends on MIPS_MT @@ -1537,32 +1578,23 @@ config CPU_HAS_WB bool +# +# Vectored interrupt mode is an R2 feature +# config CPU_MIPSR2_IRQ_VI - bool "Vectored interrupt mode" - depends on CPU_MIPSR2 - help - Vectored interrupt mode allowing faster dispatching of interrupts. - The board support code needs to be written to take advantage of this - mode. Compatibility code is included to allow the kernel to run on - a CPU that does not support vectored interrupts. It's safe to - say Y here. + bool +# +# Extended interrupt mode is an R2 feature +# config CPU_MIPSR2_IRQ_EI - bool "External interrupt controller mode" - depends on CPU_MIPSR2 - help - Extended interrupt mode takes advantage of an external interrupt - controller to allow fast dispatching from many possible interrupt - sources. Say N unless you know that external interrupt support is - required. + bool +# +# Shadow registers are an R2 feature +# config CPU_MIPSR2_SRS - bool "Make shadow set registers available for interrupt handlers" - depends on CPU_MIPSR2_IRQ_VI || CPU_MIPSR2_IRQ_EI - help - Allow the kernel to use shadow register sets for fast interrupts. - Interrupt handlers must be specially written to use shadow sets. - Say N unless you know that shadow register set upport is needed. + bool config CPU_HAS_SYNC bool @@ -1616,8 +1648,8 @@ config SMP bool "Multi-Processing support" - depends on CPU_RM9000 || ((SIBYTE_BCM1x80 || SIBYTE_BCM1x55 || SIBYTE_SB1250 || QEMU) && !SIBYTE_STANDALONE) || SGI_IP27 || MIPS_MT_SMP || MIPS_MT_SMTC - ---help--- + depends on SYS_SUPPORTS_SMP + help This enables support for systems with more than one CPU. If you have a system with only one CPU, like most personal computers, say N. If you have a system with more than one CPU, say Y. @@ -1636,6 +1668,9 @@ If you don't know what to do here, say N. +config SYS_SUPPORTS_SMP + bool + config NR_CPUS int "Maximum number of CPUs (2-64)" range 2 64 @@ -1710,6 +1745,9 @@ config ISA bool +config NO_ISA + bool + config EISA bool "EISA support" depends on HW_HAS_EISA diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/cpu-probe.c linux-2.6.17.4-mips/arch/mips/kernel/cpu-probe.c --- linux-2.6.17.4-kernel/arch/mips/kernel/cpu-probe.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/cpu-probe.c 2006-07-06 16:58:16.000000000 -0700 @@ -111,7 +111,6 @@ case CPU_R5000: case CPU_NEVADA: case CPU_RM7000: - case CPU_RM9000: case CPU_TX49XX: case CPU_4KC: case CPU_4KEC: @@ -137,6 +136,14 @@ } else printk(" unavailable.\n"); break; + case CPU_RM9000: + if ((c->processor_id & 0x00ff) >= 0x40) { + cpu_wait = r4k_wait; + printk(" available.\n"); + } else { + printk(" unavailable.\n"); + } + break; default: printk(" unavailable.\n"); break; @@ -243,9 +250,15 @@ break; case PRID_IMP_VR41XX: switch (c->processor_id & 0xf0) { +#ifndef CONFIG_VR4181 case PRID_REV_VR4111: c->cputype = CPU_VR4111; break; +#else + case PRID_REV_VR4181: + c->cputype = CPU_VR4181; + break; +#endif case PRID_REV_VR4121: c->cputype = CPU_VR4121; break; @@ -597,8 +610,6 @@ break; case PRID_IMP_25KF: c->cputype = CPU_25KF; - /* Probe for L2 cache */ - c->scache.flags &= ~MIPS_CACHE_NOT_PRESENT; break; case PRID_IMP_34K: c->cputype = CPU_34K; diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/entry.S linux-2.6.17.4-mips/arch/mips/kernel/entry.S --- linux-2.6.17.4-kernel/arch/mips/kernel/entry.S 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/entry.S 2006-07-06 16:58:16.000000000 -0700 @@ -87,7 +87,7 @@ ori v1, v0, TCSTATUS_IXMT mtc0 v1, CP0_TCSTATUS andi v0, TCSTATUS_IXMT - ehb + _ehb mfc0 t0, CP0_TCCONTEXT DMT 9 # dmt t1 jal mips_ihb @@ -95,7 +95,7 @@ andi t3, t0, 0xff00 or t2, t2, t3 mtc0 t2, CP0_STATUS - ehb + _ehb andi t1, t1, VPECONTROL_TE beqz t1, 1f EMT @@ -105,7 +105,7 @@ xori v1, v1, TCSTATUS_IXMT or v1, v0, v1 mtc0 v1, CP0_TCSTATUS - ehb + _ehb xor t0, t0, t3 mtc0 t0, CP0_TCCONTEXT #endif /* CONFIG_MIPS_MT_SMTC */ diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/gdb-low.S linux-2.6.17.4-mips/arch/mips/kernel/gdb-low.S --- linux-2.6.17.4-kernel/arch/mips/kernel/gdb-low.S 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/gdb-low.S 2006-07-06 16:58:16.000000000 -0700 @@ -291,7 +291,7 @@ ori t1, t2, TCSTATUS_IXMT mtc0 t1, CP0_TCSTATUS andi t2, t2, TCSTATUS_IXMT - ehb + _ehb DMT 9 # dmt t1 jal mips_ihb nop @@ -310,7 +310,7 @@ xori t1, t1, TCSTATUS_IXMT or t1, t1, t2 mtc0 t1, CP0_TCSTATUS - ehb + _ehb #endif /* CONFIG_MIPS_MT_SMTC */ LONG_L v0, GDB_FR_STATUS(sp) LONG_L v1, GDB_FR_EPC(sp) diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/genex.S linux-2.6.17.4-mips/arch/mips/kernel/genex.S --- linux-2.6.17.4-kernel/arch/mips/kernel/genex.S 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/genex.S 2006-07-06 16:58:16.000000000 -0700 @@ -214,7 +214,7 @@ mtc0 t0, CP0_TCCONTEXT xor t1, t1, t0 mtc0 t1, CP0_STATUS - ehb + _ehb #endif /* CONFIG_MIPS_MT_SMTC */ CLI move a0, sp diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/head.S linux-2.6.17.4-mips/arch/mips/kernel/head.S --- linux-2.6.17.4-kernel/arch/mips/kernel/head.S 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/head.S 2006-07-06 16:58:16.000000000 -0700 @@ -96,7 +96,7 @@ /* Clear TKSU, leave IXMT */ xori t0, 0x00001800 mtc0 t0, CP0_TCSTATUS - ehb + _ehb /* We need to leave the global IE bit set, but clear EXL...*/ mfc0 t0, CP0_STATUS or t0, ST0_CU0 | ST0_EXL | ST0_ERL | \set | \clr diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/ptrace.c linux-2.6.17.4-mips/arch/mips/kernel/ptrace.c --- linux-2.6.17.4-kernel/arch/mips/kernel/ptrace.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/ptrace.c 2006-07-06 16:58:16.000000000 -0700 @@ -21,12 +21,12 @@ #include #include #include -#include #include #include #include #include -#include +#include +#include #include #include @@ -482,12 +482,16 @@ */ asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit) { + /* do the secure computing check first */ + secure_computing(regs->orig_eax); + if (unlikely(current->audit_context) && entryexit) audit_syscall_exit(AUDITSC_RESULT(regs->regs[2]), regs->regs[2]); if (!(current->ptrace & PT_PTRACED)) goto out; + if (!test_thread_flag(TIF_SYSCALL_TRACE)) goto out; @@ -505,9 +509,14 @@ send_sig(current->exit_code, current, 1); current->exit_code = 0; } - out: + +out: + /* There is no ->orig_eax and that's quite intensional for now making + this work will require some work in various other place before it's + more than a placebo. */ + if (unlikely(current->audit_context) && !entryexit) - audit_syscall_entry(audit_arch(), regs->regs[2], - regs->regs[4], regs->regs[5], - regs->regs[6], regs->regs[7]); + audit_syscall_entry(audit_arch(), regs->orig_eax, + regs->regs[4], regs->regs[5], + regs->regs[6], regs->regs[7]); } diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/r4k_switch.S linux-2.6.17.4-mips/arch/mips/kernel/r4k_switch.S --- linux-2.6.17.4-kernel/arch/mips/kernel/r4k_switch.S 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/r4k_switch.S 2006-07-06 16:58:16.000000000 -0700 @@ -75,8 +75,8 @@ and t0, t0, t1 LONG_S t0, ST_OFF(t3) - fpu_save_double a0 t1 t0 t2 # c0_status passed in t1 - # clobbers t0 and t2 + fpu_save_double a0 t0 t1 # c0_status passed in t0 + # clobbers t1 1: /* @@ -94,7 +94,7 @@ ori t1, t2, TCSTATUS_IXMT mtc0 t1, CP0_TCSTATUS andi t2, t2, TCSTATUS_IXMT - ehb + _ehb DMT 8 # dmt t0 move t1,ra jal mips_ihb @@ -109,7 +109,7 @@ or a2, t1 mtc0 a2, CP0_STATUS #ifdef CONFIG_MIPS_MT_SMTC - ehb + _ehb andi t0, t0, VPECONTROL_TE beqz t0, 1f emt @@ -118,7 +118,7 @@ xori t1, t1, TCSTATUS_IXMT or t1, t1, t2 mtc0 t1, CP0_TCSTATUS - ehb + _ehb #endif /* CONFIG_MIPS_MT_SMTC */ move v0, a0 jr ra @@ -129,9 +129,9 @@ */ LEAF(_save_fp) #ifdef CONFIG_64BIT - mfc0 t1, CP0_STATUS + mfc0 t0, CP0_STATUS #endif - fpu_save_double a0 t1 t0 t2 # clobbers t1 + fpu_save_double a0 t0 t1 # clobbers t1 jr ra END(_save_fp) @@ -139,7 +139,10 @@ * Restore a thread's fp context. */ LEAF(_restore_fp) - fpu_restore_double a0, t1 # clobbers t1 +#ifdef CONFIG_64BIT + mfc0 t0, CP0_STATUS +#endif + fpu_restore_double a0 t0 t1 # clobbers t1 jr ra END(_restore_fp) diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/scall32-o32.S linux-2.6.17.4-mips/arch/mips/kernel/scall32-o32.S --- linux-2.6.17.4-kernel/arch/mips/kernel/scall32-o32.S 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/scall32-o32.S 2006-07-06 16:58:16.000000000 -0700 @@ -497,7 +497,7 @@ sys sys_sched_get_priority_min 1 sys sys_sched_rr_get_interval 2 /* 4165 */ sys sys_nanosleep, 2 - sys sys_mremap, 4 + sys sys_mremap, 5 sys sys_accept 3 sys sys_bind 3 sys sys_connect 3 /* 4170 */ @@ -647,6 +647,7 @@ sys sys_unshare 1 sys sys_splice 4 sys sys_sync_file_range 7 /* 4305 */ + sys sys_tee 4 .endm /* We pre-compute the number of _instruction_ bytes needed to diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/scall64-64.S linux-2.6.17.4-mips/arch/mips/kernel/scall64-64.S --- linux-2.6.17.4-kernel/arch/mips/kernel/scall64-64.S 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/scall64-64.S 2006-07-06 16:58:16.000000000 -0700 @@ -462,3 +462,4 @@ PTR sys_unshare PTR sys_splice PTR sys_sync_file_range + PTR sys_tee /* 5265 */ diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/scall64-n32.S linux-2.6.17.4-mips/arch/mips/kernel/scall64-n32.S --- linux-2.6.17.4-kernel/arch/mips/kernel/scall64-n32.S 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/scall64-n32.S 2006-07-06 16:58:16.000000000 -0700 @@ -388,3 +388,4 @@ PTR sys_unshare PTR sys_splice PTR sys_sync_file_range + PTR sys_tee diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/scall64-o32.S linux-2.6.17.4-mips/arch/mips/kernel/scall64-o32.S --- linux-2.6.17.4-kernel/arch/mips/kernel/scall64-o32.S 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/scall64-o32.S 2006-07-06 16:58:16.000000000 -0700 @@ -510,4 +510,5 @@ PTR sys_unshare PTR sys_splice PTR sys32_sync_file_range /* 4305 */ + PTR sys_tee .size sys_call_table,.-sys_call_table diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/smp.c linux-2.6.17.4-mips/arch/mips/kernel/smp.c --- linux-2.6.17.4-kernel/arch/mips/kernel/smp.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/smp.c 2006-07-06 16:58:16.000000000 -0700 @@ -336,7 +336,7 @@ preempt_disable(); if ((atomic_read(&mm->mm_users) != 1) || (current->mm != mm)) { - smp_call_function(flush_tlb_mm_ipi, (void *)mm, 1, 1); + __on_other_cores(flush_tlb_mm_ipi, (void *)mm); } else { int i; for (i = 0; i < num_online_cpus(); i++) @@ -372,7 +372,7 @@ fd.vma = vma; fd.addr1 = start; fd.addr2 = end; - smp_call_function(flush_tlb_range_ipi, (void *)&fd, 1, 1); + __on_other_cores(flush_tlb_range_ipi, (void *)&fd); } else { int i; for (i = 0; i < num_online_cpus(); i++) @@ -414,7 +414,7 @@ fd.vma = vma; fd.addr1 = page; - smp_call_function(flush_tlb_page_ipi, (void *)&fd, 1, 1); + __on_other_cores(flush_tlb_page_ipi, (void *)&fd); } else { int i; for (i = 0; i < num_online_cpus(); i++) @@ -434,8 +434,7 @@ void flush_tlb_one(unsigned long vaddr) { - smp_call_function(flush_tlb_one_ipi, (void *) vaddr, 1, 1); - local_flush_tlb_one(vaddr); + __on_each_core(flush_tlb_one_ipi, (void *) vaddr); } static DEFINE_PER_CPU(struct cpu, cpu_devices); diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/smtc-asm.S linux-2.6.17.4-mips/arch/mips/kernel/smtc-asm.S --- linux-2.6.17.4-kernel/arch/mips/kernel/smtc-asm.S 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/smtc-asm.S 2006-07-06 16:58:16.000000000 -0700 @@ -52,12 +52,12 @@ .set noat /* Disable thread scheduling to make Status update atomic */ DMT 27 # dmt k1 - ehb + _ehb /* Set EXL */ mfc0 k0,CP0_STATUS ori k0,k0,ST0_EXL mtc0 k0,CP0_STATUS - ehb + _ehb /* Thread scheduling now inhibited by EXL. Restore TE state. */ andi k1,k1,VPECONTROL_TE beqz k1,1f @@ -82,7 +82,7 @@ li k1,ST0_CU0 or k1,k1,k0 mtc0 k1,CP0_STATUS - ehb + _ehb get_saved_sp /* Interrupting TC will have pre-set values in slots in the new frame */ 2: subu k1,k1,PT_SIZE @@ -90,7 +90,7 @@ lw k0,PT_TCSTATUS(k1) /* Write it to TCStatus to restore CU/KSU/IXMT state */ mtc0 k0,$2,1 - ehb + _ehb lw k0,PT_EPC(k1) mtc0 k0,CP0_EPC /* Save all will redundantly recompute the SP, but use it for now */ @@ -116,7 +116,7 @@ mfc0 t0,CP0_TCSTATUS ori t1,t0,TCSTATUS_IXMT mtc0 t1,CP0_TCSTATUS - ehb + _ehb /* We know we're in kernel mode, so prepare stack frame */ subu t1,sp,PT_SIZE sw ra,PT_EPC(t1) diff -Naur linux-2.6.17.4-kernel/arch/mips/kernel/traps.c linux-2.6.17.4-mips/arch/mips/kernel/traps.c --- linux-2.6.17.4-kernel/arch/mips/kernel/traps.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/kernel/traps.c 2006-07-06 16:58:16.000000000 -0700 @@ -1051,7 +1051,7 @@ return (void *)old_handler; } -#ifdef CONFIG_CPU_MIPSR2 +#ifdef CONFIG_CPU_MIPSR2_SRS /* * MIPSR2 shadow register set allocation * FIXME: SMP... @@ -1070,11 +1070,9 @@ static void mips_srs_init(void) { -#ifdef CONFIG_CPU_MIPSR2_SRS shadow_registers.sr_supported = ((read_c0_srsctl() >> 26) & 0x0f) + 1; printk(KERN_INFO "%d MIPSR2 register sets available\n", shadow_registers.sr_supported); -#endif shadow_registers.sr_allocated = 1; /* Set 0 used by kernel */ } @@ -1199,7 +1197,14 @@ { return set_vi_srs_handler(n, addr, 0); } -#endif + +#else + +static inline void mips_srs_init(void) +{ +} + +#endif /* CONFIG_CPU_MIPSR2_SRS */ /* * This is used by native signal handling @@ -1389,9 +1394,7 @@ else ebase = CAC_BASE; -#ifdef CONFIG_CPU_MIPSR2 mips_srs_init(); -#endif per_cpu_trap_init(); diff -Naur linux-2.6.17.4-kernel/arch/mips/lib/iomap.c linux-2.6.17.4-mips/arch/mips/lib/iomap.c --- linux-2.6.17.4-kernel/arch/mips/lib/iomap.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/lib/iomap.c 1969-12-31 16:00:00.000000000 -0800 @@ -1,78 +0,0 @@ -/* - * iomap.c, Memory Mapped I/O routines for MIPS architecture. - * - * This code is based on lib/iomap.c, by Linus Torvalds. - * - * Copyright (C) 2004-2005 Yoichi Yuasa - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#include -#include -#include - -#include - -void __iomem *ioport_map(unsigned long port, unsigned int nr) -{ - unsigned long end; - - end = port + nr - 1UL; - if (ioport_resource.start > port || - ioport_resource.end < end || port > end) - return NULL; - - return (void __iomem *)(mips_io_port_base + port); -} - -void ioport_unmap(void __iomem *addr) -{ -} -EXPORT_SYMBOL(ioport_map); -EXPORT_SYMBOL(ioport_unmap); - -void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen) -{ - unsigned long start, len, flags; - - if (dev == NULL) - return NULL; - - start = pci_resource_start(dev, bar); - len = pci_resource_len(dev, bar); - if (!start || !len) - return NULL; - - if (maxlen != 0 && len > maxlen) - len = maxlen; - - flags = pci_resource_flags(dev, bar); - if (flags & IORESOURCE_IO) - return ioport_map(start, len); - if (flags & IORESOURCE_MEM) { - if (flags & IORESOURCE_CACHEABLE) - return ioremap_cachable(start, len); - return ioremap_nocache(start, len); - } - - return NULL; -} - -void pci_iounmap(struct pci_dev *dev, void __iomem *addr) -{ - iounmap(addr); -} -EXPORT_SYMBOL(pci_iomap); -EXPORT_SYMBOL(pci_iounmap); diff -Naur linux-2.6.17.4-kernel/arch/mips/lib/Makefile linux-2.6.17.4-mips/arch/mips/lib/Makefile --- linux-2.6.17.4-kernel/arch/mips/lib/Makefile 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/lib/Makefile 2006-07-06 16:58:16.000000000 -0700 @@ -5,6 +5,7 @@ lib-y += csum_partial_copy.o memcpy.o promlib.o strlen_user.o strncpy_user.o \ strnlen_user.o uncached.o -obj-y += iomap.o +# libgcc-style stuff needed in the kernel +lib-y += ashldi3.o ashrdi3.o lshrdi3.o EXTRA_AFLAGS := $(CFLAGS) diff -Naur linux-2.6.17.4-kernel/arch/mips/lib-32/dump_tlb.c linux-2.6.17.4-mips/arch/mips/lib-32/dump_tlb.c --- linux-2.6.17.4-kernel/arch/mips/lib-32/dump_tlb.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/lib-32/dump_tlb.c 2006-07-06 16:58:16.000000000 -0700 @@ -41,8 +41,6 @@ return "256Mb"; #endif } - - return "unknown"; } #define BARRIER() \ diff -Naur linux-2.6.17.4-kernel/arch/mips/lib-64/dump_tlb.c linux-2.6.17.4-mips/arch/mips/lib-64/dump_tlb.c --- linux-2.6.17.4-kernel/arch/mips/lib-64/dump_tlb.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/lib-64/dump_tlb.c 2006-07-06 16:58:16.000000000 -0700 @@ -32,8 +32,6 @@ case PM_256M: return "256Mb"; #endif } - - return "unknown"; } #define BARRIER() \ diff -Naur linux-2.6.17.4-kernel/arch/mips/Makefile linux-2.6.17.4-mips/arch/mips/Makefile --- linux-2.6.17.4-kernel/arch/mips/Makefile 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/Makefile 2006-07-06 16:58:16.000000000 -0700 @@ -83,6 +83,8 @@ LDFLAGS_vmlinux += -G 0 -static -n -nostdlib MODFLAGS += -mlong-calls +cflags-y += -ffreestanding + # # We explicitly add the endianness specifier if needed, this allows # to compile kernels with a toolchain for the other endianness. We @@ -365,6 +367,7 @@ cflags-$(CONFIG_PMC_YOSEMITE) += -Iinclude/asm-mips/mach-yosemite load-$(CONFIG_PMC_YOSEMITE) += 0xffffffff80100000 +# # Qemu simulating MIPS32 4Kc # core-$(CONFIG_QEMU) += arch/mips/qemu/ diff -Naur linux-2.6.17.4-kernel/arch/mips/mips-boards/generic/memory.c linux-2.6.17.4-mips/arch/mips/mips-boards/generic/memory.c --- linux-2.6.17.4-kernel/arch/mips/mips-boards/generic/memory.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/mips-boards/generic/memory.c 2006-07-06 16:58:16.000000000 -0700 @@ -48,34 +48,45 @@ }; #endif +/* determined physical memory size, not overridden by command line args */ +unsigned long physical_memsize = 0L; + struct prom_pmemblock * __init prom_getmdesc(void) { char *memsize_str; unsigned int memsize; char cmdline[CL_SIZE], *ptr; - /* Check the command line first for a memsize directive */ + /* otherwise look in the environment */ + memsize_str = prom_getenv("memsize"); + if (!memsize_str) { + prom_printf("memsize not set in boot prom, set to default (32Mb)\n"); + physical_memsize = 0x02000000; + } else { +#ifdef DEBUG + prom_printf("prom_memsize = %s\n", memsize_str); +#endif + physical_memsize = simple_strtol(memsize_str, NULL, 0); + } + +#ifdef CONFIG_CPU_BIG_ENDIAN + /* SOC-it swaps, or perhaps doesn't swap, when DMA'ing the last + word of physical memory */ + physical_memsize -= PAGE_SIZE; +#endif + + /* Check the command line for a memsize directive that overrides + the physical/default amount */ strcpy(cmdline, arcs_cmdline); ptr = strstr(cmdline, "memsize="); if (ptr && (ptr != cmdline) && (*(ptr - 1) != ' ')) ptr = strstr(ptr, " memsize="); - if (ptr) { + if (ptr) memsize = memparse(ptr + 8, &ptr); - } - else { - /* otherwise look in the environment */ - memsize_str = prom_getenv("memsize"); - if (!memsize_str) { - prom_printf("memsize not set in boot prom, set to default (32Mb)\n"); - memsize = 0x02000000; - } else { -#ifdef DEBUG - prom_printf("prom_memsize = %s\n", memsize_str); -#endif - memsize = simple_strtol(memsize_str, NULL, 0); - } - } + else + memsize = physical_memsize; + memset(mdesc, 0, sizeof(mdesc)); mdesc[0].type = yamon_dontuse; diff -Naur linux-2.6.17.4-kernel/arch/mips/mips-boards/malta/malta_int.c linux-2.6.17.4-mips/arch/mips/mips-boards/malta/malta_int.c --- linux-2.6.17.4-kernel/arch/mips/mips-boards/malta/malta_int.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/mips-boards/malta/malta_int.c 2006-07-06 16:58:16.000000000 -0700 @@ -208,23 +208,23 @@ unsigned int a0 = 7; unsigned int t0; - t0 = s0 & 0xf000; + t0 = pending & 0xf000; t0 = t0 < 1; t0 = t0 << 2; a0 = a0 - t0; - s0 = s0 << t0; + pending = pending << t0; - t0 = s0 & 0xc000; + t0 = pending & 0xc000; t0 = t0 < 1; t0 = t0 << 1; a0 = a0 - t0; - s0 = s0 << t0; + pending = pending << t0; - t0 = s0 & 0x8000; + t0 = pending & 0x8000; t0 = t0 < 1; //t0 = t0 << 2; a0 = a0 - t0; - //s0 = s0 << t0; + //pending = pending << t0; return a0; #endif diff -Naur linux-2.6.17.4-kernel/arch/mips/mm/c-r4k.c linux-2.6.17.4-mips/arch/mips/mm/c-r4k.c --- linux-2.6.17.4-kernel/arch/mips/mm/c-r4k.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/mm/c-r4k.c 2006-07-06 16:58:16.000000000 -0700 @@ -24,32 +24,12 @@ #include #include #include +#include #include #include #include #include /* for run_uncached() */ - -/* - * Special Variant of smp_call_function for use by cache functions: - * - * o No return value - * o collapses to normal function call on UP kernels - * o collapses to normal function call on systems with a single shared - * primary cache. - */ -static inline void r4k_on_each_cpu(void (*func) (void *info), void *info, - int retry, int wait) -{ - preempt_disable(); - -#if !defined(CONFIG_MIPS_MT_SMP) && !defined(CONFIG_MIPS_MT_SMTC) - smp_call_function(func, info, retry, wait); -#endif - func(info); - preempt_enable(); -} - /* * Must die. */ @@ -60,13 +40,13 @@ /* * Dummy cache handling routines for machines without boardcaches */ -static void no_sc_noop(void) {} +static void cache_noop(void) {} static struct bcache_ops no_sc_ops = { - .bc_enable = (void *)no_sc_noop, - .bc_disable = (void *)no_sc_noop, - .bc_wback_inv = (void *)no_sc_noop, - .bc_inv = (void *)no_sc_noop + .bc_enable = (void *)cache_noop, + .bc_disable = (void *)cache_noop, + .bc_wback_inv = (void *)cache_noop, + .bc_inv = (void *)cache_noop }; struct bcache_ops *bcops = &no_sc_ops; @@ -94,7 +74,9 @@ { unsigned long dc_lsize = cpu_dcache_line_size(); - if (dc_lsize == 16) + if (dc_lsize == 0) + r4k_blast_dcache_page = (void *)cache_noop; + else if (dc_lsize == 16) r4k_blast_dcache_page = blast_dcache16_page; else if (dc_lsize == 32) r4k_blast_dcache_page = r4k_blast_dcache_page_dc32; @@ -106,7 +88,9 @@ { unsigned long dc_lsize = cpu_dcache_line_size(); - if (dc_lsize == 16) + if (dc_lsize == 0) + r4k_blast_dcache_page_indexed = (void *)cache_noop; + else if (dc_lsize == 16) r4k_blast_dcache_page_indexed = blast_dcache16_page_indexed; else if (dc_lsize == 32) r4k_blast_dcache_page_indexed = blast_dcache32_page_indexed; @@ -118,7 +102,9 @@ { unsigned long dc_lsize = cpu_dcache_line_size(); - if (dc_lsize == 16) + if (dc_lsize == 0) + r4k_blast_dcache = (void *)cache_noop; + else if (dc_lsize == 16) r4k_blast_dcache = blast_dcache16; else if (dc_lsize == 32) r4k_blast_dcache = blast_dcache32; @@ -201,7 +187,9 @@ { unsigned long ic_lsize = cpu_icache_line_size(); - if (ic_lsize == 16) + if (ic_lsize == 0) + r4k_blast_icache_page = (void *)cache_noop; + else if (ic_lsize == 16) r4k_blast_icache_page = blast_icache16_page; else if (ic_lsize == 32) r4k_blast_icache_page = blast_icache32_page; @@ -216,7 +204,9 @@ { unsigned long ic_lsize = cpu_icache_line_size(); - if (ic_lsize == 16) + if (ic_lsize == 0) + r4k_blast_icache_page_indexed = (void *)cache_noop; + else if (ic_lsize == 16) r4k_blast_icache_page_indexed = blast_icache16_page_indexed; else if (ic_lsize == 32) { if (R4600_V1_INDEX_ICACHEOP_WAR && cpu_is_r4600_v1_x()) @@ -238,7 +228,9 @@ { unsigned long ic_lsize = cpu_icache_line_size(); - if (ic_lsize == 16) + if (ic_lsize == 0) + r4k_blast_icache = (void *)cache_noop; + else if (ic_lsize == 16) r4k_blast_icache = blast_icache16; else if (ic_lsize == 32) { if (R4600_V1_INDEX_ICACHEOP_WAR && cpu_is_r4600_v1_x()) @@ -258,7 +250,7 @@ unsigned long sc_lsize = cpu_scache_line_size(); if (scache_size == 0) - r4k_blast_scache_page = (void *)no_sc_noop; + r4k_blast_scache_page = (void *)cache_noop; else if (sc_lsize == 16) r4k_blast_scache_page = blast_scache16_page; else if (sc_lsize == 32) @@ -276,7 +268,7 @@ unsigned long sc_lsize = cpu_scache_line_size(); if (scache_size == 0) - r4k_blast_scache_page_indexed = (void *)no_sc_noop; + r4k_blast_scache_page_indexed = (void *)cache_noop; else if (sc_lsize == 16) r4k_blast_scache_page_indexed = blast_scache16_page_indexed; else if (sc_lsize == 32) @@ -294,7 +286,7 @@ unsigned long sc_lsize = cpu_scache_line_size(); if (scache_size == 0) - r4k_blast_scache = (void *)no_sc_noop; + r4k_blast_scache = (void *)cache_noop; else if (sc_lsize == 16) r4k_blast_scache = blast_scache16; else if (sc_lsize == 32) @@ -320,7 +312,7 @@ if (!cpu_has_dc_aliases) return; - r4k_on_each_cpu(local_r4k_flush_cache_all, NULL, 1, 1); + __on_each_core(local_r4k_flush_cache_all, NULL); } static inline void local_r4k___flush_cache_all(void * args) @@ -342,7 +334,7 @@ static void r4k___flush_cache_all(void) { - r4k_on_each_cpu(local_r4k___flush_cache_all, NULL, 1, 1); + __on_each_core(local_r4k___flush_cache_all, NULL); } static inline void local_r4k_flush_cache_range(void * args) @@ -363,7 +355,7 @@ static void r4k_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) { - r4k_on_each_cpu(local_r4k_flush_cache_range, vma, 1, 1); + __on_each_core(local_r4k_flush_cache_range, vma); } static inline void local_r4k_flush_cache_mm(void * args) @@ -392,7 +384,7 @@ if (!cpu_has_dc_aliases) return; - r4k_on_each_cpu(local_r4k_flush_cache_mm, mm, 1, 1); + __on_each_core(local_r4k_flush_cache_mm, mm); } struct flush_cache_page_args { @@ -483,7 +475,7 @@ args.addr = addr; args.pfn = pfn; - r4k_on_each_cpu(local_r4k_flush_cache_page, &args, 1, 1); + __on_each_core(local_r4k_flush_cache_page, &args); } static inline void local_r4k_flush_data_cache_page(void * addr) @@ -493,7 +485,7 @@ static void r4k_flush_data_cache_page(unsigned long addr) { - r4k_on_each_cpu(local_r4k_flush_data_cache_page, (void *) addr, 1, 1); + __on_each_core(local_r4k_flush_data_cache_page, (void *) addr); } struct flush_icache_range_args { @@ -508,7 +500,7 @@ unsigned long end = fir_args->end; if (!cpu_has_ic_fills_f_dc) { - if (end - start > dcache_size) { + if (end - start >= dcache_size) { r4k_blast_dcache(); } else { R4600_HIT_CACHEOP_WAR_IMPL; @@ -536,7 +528,7 @@ args.start = start; args.end = end; - r4k_on_each_cpu(local_r4k_flush_icache_range, &args, 1, 1); + __on_each_core(local_r4k_flush_icache_range, &args); instruction_hazard(); } @@ -612,7 +604,7 @@ args.vma = vma; args.page = page; - r4k_on_each_cpu(local_r4k_flush_icache_page, &args, 1, 1); + __on_each_core(local_r4k_flush_icache_page, &args); } @@ -683,10 +675,12 @@ unsigned long addr = (unsigned long) arg; R4600_HIT_CACHEOP_WAR_IMPL; - protected_writeback_dcache_line(addr & ~(dc_lsize - 1)); + if (dc_lsize) + protected_writeback_dcache_line(addr & ~(dc_lsize - 1)); if (!cpu_icache_snoops_remote_store && scache_size) protected_writeback_scache_line(addr & ~(sc_lsize - 1)); - protected_flush_icache_line(addr & ~(ic_lsize - 1)); + if (ic_lsize) + protected_flush_icache_line(addr & ~(ic_lsize - 1)); if (MIPS4K_ICACHE_REFILL_WAR) { __asm__ __volatile__ ( ".set push\n\t" @@ -711,7 +705,7 @@ static void r4k_flush_cache_sigtramp(unsigned long addr) { - r4k_on_each_cpu(local_r4k_flush_cache_sigtramp, (void *) addr, 1, 1); + __on_each_core(local_r4k_flush_cache_sigtramp, (void *) addr); } static void r4k_flush_icache_all(void) @@ -973,8 +967,10 @@ c->icache.waysize = icache_size / c->icache.ways; c->dcache.waysize = dcache_size / c->dcache.ways; - c->icache.sets = icache_size / (c->icache.linesz * c->icache.ways); - c->dcache.sets = dcache_size / (c->dcache.linesz * c->dcache.ways); + c->icache.sets = c->icache.linesz ? + icache_size / (c->icache.linesz * c->icache.ways) : 0; + c->dcache.sets = c->dcache.linesz ? + dcache_size / (c->dcache.linesz * c->dcache.ways) : 0; /* * R10000 and R12000 P-caches are odd in a positive way. They're 32kB @@ -993,10 +989,15 @@ break; case CPU_24K: case CPU_34K: - if (!(read_c0_config7() & (1 << 16))) + if ((read_c0_config7() & (1 << 16))) { + /* effectively physically indexed dcache, + thus no virtual aliases. */ + c->dcache.flags |= MIPS_CACHE_PINDEX; + break; + } default: - if (c->dcache.waysize > PAGE_SIZE) - c->dcache.flags |= MIPS_CACHE_ALIASES; + if (c->dcache.waysize > PAGE_SIZE) + c->dcache.flags |= MIPS_CACHE_ALIASES; } switch (c->cputype) { @@ -1092,6 +1093,7 @@ extern int r5k_sc_init(void); extern int rm7k_sc_init(void); +extern int mips_sc_init(void); static void __init setup_scache(void) { @@ -1139,17 +1141,29 @@ return; default: + if (c->isa_level == MIPS_CPU_ISA_M32R1 || + c->isa_level == MIPS_CPU_ISA_M32R2 || + c->isa_level == MIPS_CPU_ISA_M64R1 || + c->isa_level == MIPS_CPU_ISA_M64R2) { +#ifdef CONFIG_MIPS_CPU_SCACHE + if (mips_sc_init ()) { + scache_size = c->scache.ways * c->scache.sets * c->scache.linesz; + printk("MIPS secondary cache %ldkB, %s, linesize %d bytes.\n", + scache_size >> 10, + way_string[c->scache.ways], c->scache.linesz); + } +#else + if (!(c->scache.flags & MIPS_CACHE_NOT_PRESENT)) + panic("Dunno how to handle MIPS32 / MIPS64 second level cache"); +#endif + return; + } sc_present = 0; } if (!sc_present) return; - if ((c->isa_level == MIPS_CPU_ISA_M32R1 || - c->isa_level == MIPS_CPU_ISA_M64R1) && - !(c->scache.flags & MIPS_CACHE_NOT_PRESENT)) - panic("Dunno how to handle MIPS32 / MIPS64 second level cache"); - /* compute a couple of other cache variables */ c->scache.waysize = scache_size / c->scache.ways; @@ -1246,10 +1260,12 @@ * This code supports virtually indexed processors and will be * unnecessarily inefficient on physically indexed processors. */ - shm_align_mask = max_t( unsigned long, - c->dcache.sets * c->dcache.linesz - 1, - PAGE_SIZE - 1); - + if (c->dcache.linesz) + shm_align_mask = max_t( unsigned long, + c->dcache.sets * c->dcache.linesz - 1, + PAGE_SIZE - 1); + else + shm_align_mask = PAGE_SIZE-1; flush_cache_all = r4k_flush_cache_all; __flush_cache_all = r4k___flush_cache_all; flush_cache_mm = r4k_flush_cache_mm; diff -Naur linux-2.6.17.4-kernel/arch/mips/mm/Makefile linux-2.6.17.4-mips/arch/mips/mm/Makefile --- linux-2.6.17.4-kernel/arch/mips/mm/Makefile 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/mm/Makefile 2006-07-06 16:58:16.000000000 -0700 @@ -30,6 +30,7 @@ obj-$(CONFIG_IP22_CPU_SCACHE) += sc-ip22.o obj-$(CONFIG_R5000_CPU_SCACHE) += sc-r5k.o obj-$(CONFIG_RM7000_CPU_SCACHE) += sc-rm7k.o +obj-$(CONFIG_MIPS_CPU_SCACHE) += sc-mips.o # # Choose one DMA coherency model diff -Naur linux-2.6.17.4-kernel/arch/mips/pci/fixup-tb0219.c linux-2.6.17.4-mips/arch/mips/pci/fixup-tb0219.c --- linux-2.6.17.4-kernel/arch/mips/pci/fixup-tb0219.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/pci/fixup-tb0219.c 2006-07-06 16:58:16.000000000 -0700 @@ -2,7 +2,7 @@ * fixup-tb0219.c, The TANBAC TB0219 specific PCI fixups. * * Copyright (C) 2003 Megasolution Inc. - * Copyright (C) 2004 Yoichi Yuasa + * Copyright (C) 2004-2005 Yoichi Yuasa * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -Naur linux-2.6.17.4-kernel/arch/mips/qemu/Makefile linux-2.6.17.4-mips/arch/mips/qemu/Makefile --- linux-2.6.17.4-kernel/arch/mips/qemu/Makefile 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/qemu/Makefile 2006-07-06 16:58:16.000000000 -0700 @@ -4,4 +4,5 @@ obj-y = q-firmware.o q-irq.o q-mem.o q-setup.o +obj-$(CONFIG_VT) += q-vga.o obj-$(CONFIG_SMP) += q-smp.o diff -Naur linux-2.6.17.4-kernel/arch/mips/qemu/q-setup.c linux-2.6.17.4-mips/arch/mips/qemu/q-setup.c --- linux-2.6.17.4-kernel/arch/mips/qemu/q-setup.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/qemu/q-setup.c 2006-07-06 16:58:16.000000000 -0700 @@ -2,6 +2,8 @@ #include #include +extern void qvga_init(void); + #define QEMU_PORT_BASE 0xb4000000 const char *get_system_type(void) @@ -21,5 +23,8 @@ void __init plat_setup(void) { set_io_port_base(QEMU_PORT_BASE); +#ifdef CONFIG_VT + qvga_init(); +#endif board_timer_setup = qemu_timer_setup; } diff -Naur linux-2.6.17.4-kernel/arch/mips/sgi-ip27/ip27-irq.c linux-2.6.17.4-mips/arch/mips/sgi-ip27/ip27-irq.c --- linux-2.6.17.4-kernel/arch/mips/sgi-ip27/ip27-irq.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/sgi-ip27/ip27-irq.c 2006-07-06 16:58:16.000000000 -0700 @@ -360,7 +360,7 @@ static unsigned long irq_map[NR_IRQS / BITS_PER_LONG]; -static int allocate_irqno(void) +int allocate_irqno(void) { int irq; diff -Naur linux-2.6.17.4-kernel/arch/mips/sgi-ip27/ip27-timer.c linux-2.6.17.4-mips/arch/mips/sgi-ip27/ip27-timer.c --- linux-2.6.17.4-kernel/arch/mips/sgi-ip27/ip27-timer.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/sgi-ip27/ip27-timer.c 2006-07-06 16:58:16.000000000 -0700 @@ -89,11 +89,13 @@ } #endif +static unsigned int rt_timer_irq; + void ip27_rt_timer_interrupt(struct pt_regs *regs) { int cpu = smp_processor_id(); int cpuA = cputoslice(cpu) == 0; - int irq = 9; /* XXX Assign number */ + unsigned int irq = rt_timer_irq; irq_enter(); write_seqlock(&xtime_lock); @@ -179,13 +181,68 @@ return mktime(year, month, date, hour, min, sec); } +static void startup_rt_irq(unsigned int irq) +{ +} + +static void shutdown_rt_irq(unsigned int irq) +{ +} + +static void enable_rt_irq(unsigned int irq) +{ +} + +static void disable_rt_irq(unsigned int irq) +{ +} + +static void mask_and_ack_rt(unsigned int irq) +{ +} + +static void end_rt_irq(unsigned int irq) +{ +} + +static struct hw_interrupt_type rt_irq_type = { + .typename = "SN HUB RT timer", + .startup = startup_rt_irq, + .shutdown = shutdown_rt_irq, + .enable = enable_rt_irq, + .disable = disable_rt_irq, + .ack = mask_and_ack_rt, + .end = end_rt_irq, +}; + +static struct irqaction rt_irqaction = { + .handler = ip27_rt_timer_interrupt, + .flags = SA_INTERRUPT, + .mask = CPU_MASK_NONE, + .name = "timer" +}; + +extern int allocate_irqno(void); + static void ip27_timer_setup(struct irqaction *irq) { + int irqno = allocate_irqno(); + + if (irqno < 0) + panic("Can't allocate interrupt number for timer interrupt"); + + irq_desc[irqno].status = IRQ_DISABLED; + irq_desc[irqno].action = NULL; + irq_desc[irqno].depth = 1; + irq_desc[irqno].handler = &rt_irq_type; + /* over-write the handler, we use our own way */ irq->handler = no_action; /* setup irqaction */ -// setup_irq(IP27_TIMER_IRQ, irq); /* XXX Can't do this yet. */ + irq_desc[irqno].status |= IRQ_PER_CPU; + + rt_timer_irq = irqno; } void __init ip27_time_init(void) diff -Naur linux-2.6.17.4-kernel/arch/mips/sgi-ip27/Kconfig linux-2.6.17.4-mips/arch/mips/sgi-ip27/Kconfig --- linux-2.6.17.4-kernel/arch/mips/sgi-ip27/Kconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/sgi-ip27/Kconfig 2006-07-06 16:58:16.000000000 -0700 @@ -35,12 +35,13 @@ depends on SGI_IP27 help Change the way a Linux kernel is loaded into memory on a MIPS64 - machine. This is required in order to support text replication and + machine. This is required in order to support text replication on NUMA. If you need to understand it, read the source code. config REPLICATE_KTEXT bool "Kernel text replication support" depends on SGI_IP27 + select MAPPED_KERNEL help Say Y here to enable replicating the kernel text across multiple nodes in a NUMA cluster. This trades memory for speed. diff -Naur linux-2.6.17.4-kernel/arch/mips/sibyte/bcm1480/irq.c linux-2.6.17.4-mips/arch/mips/sibyte/bcm1480/irq.c --- linux-2.6.17.4-kernel/arch/mips/sibyte/bcm1480/irq.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/sibyte/bcm1480/irq.c 2006-07-06 16:58:16.000000000 -0700 @@ -503,22 +503,23 @@ #ifdef CONFIG_SIBYTE_BCM1480_PROF if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ sbprof_cpu_intr(exception_epc(regs)); + else #endif if (pending & CAUSEF_IP4) bcm1480_timer_interrupt(regs); #ifdef CONFIG_SMP - if (pending & CAUSEF_IP3) + else if (pending & CAUSEF_IP3) bcm1480_mailbox_interrupt(regs); #endif #ifdef CONFIG_KGDB - if (pending & CAUSEF_IP6) + else if (pending & CAUSEF_IP6) bcm1480_kgdb_interrupt(regs); /* KGDB (uart 1) */ #endif - if (pending & CAUSEF_IP2) { + else if (pending & CAUSEF_IP2) { unsigned long long mask_h, mask_l; unsigned long base; @@ -534,7 +535,7 @@ mask_l = __raw_readq( IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_L)); - if (!mask_h) { + if (mask_h) { if (mask_h ^ 1) do_IRQ(63 - dclz(mask_h), regs); else diff -Naur linux-2.6.17.4-kernel/arch/mips/sibyte/bcm1480/time.c linux-2.6.17.4-mips/arch/mips/sibyte/bcm1480/time.c --- linux-2.6.17.4-kernel/arch/mips/sibyte/bcm1480/time.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/sibyte/bcm1480/time.c 2006-07-06 16:58:16.000000000 -0700 @@ -110,17 +110,18 @@ __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS, IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); - /* - * CPU 0 handles the global timer interrupt job - */ if (cpu == 0) { + /* + * CPU 0 handles the global timer interrupt job + */ ll_timer_interrupt(irq, regs); } - - /* - * every CPU should do profiling and process accouting - */ - ll_local_timer_interrupt(irq, regs); + else { + /* + * other CPUs should just do profiling and process accounting + */ + ll_local_timer_interrupt(irq, regs); + } } /* diff -Naur linux-2.6.17.4-kernel/arch/mips/sibyte/Kconfig linux-2.6.17.4-mips/arch/mips/sibyte/Kconfig --- linux-2.6.17.4-kernel/arch/mips/sibyte/Kconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/sibyte/Kconfig 2006-07-06 16:58:16.000000000 -0700 @@ -3,6 +3,7 @@ select HW_HAS_PCI select SIBYTE_HAS_LDT select SIBYTE_SB1xxx_SOC + select SYS_SUPPORTS_SMP config SIBYTE_BCM1120 bool @@ -30,11 +31,13 @@ bool select HW_HAS_PCI select SIBYTE_SB1xxx_SOC + select SYS_SUPPORTS_SMP config SIBYTE_BCM1x55 bool select HW_HAS_PCI select SIBYTE_SB1xxx_SOC + select SYS_SUPPORTS_SMP config SIBYTE_SB1xxx_SOC bool diff -Naur linux-2.6.17.4-kernel/arch/mips/sibyte/sb1250/irq.c linux-2.6.17.4-mips/arch/mips/sibyte/sb1250/irq.c --- linux-2.6.17.4-kernel/arch/mips/sibyte/sb1250/irq.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/sibyte/sb1250/irq.c 2006-07-06 16:58:16.000000000 -0700 @@ -435,13 +435,17 @@ return lz; } +extern void sb1250_timer_interrupt(struct pt_regs *regs); +extern void sb1250_mailbox_interrupt(struct pt_regs *regs); +extern void sb1250_kgdb_interrupt(struct pt_regs *regs); + asmlinkage void plat_irq_dispatch(struct pt_regs *regs) { unsigned int pending; #ifdef CONFIG_SIBYTE_SB1250_PROF /* Set compare to count to silence count/compare timer interrupts */ - write_c0_count(read_c0_count()); + write_c0_compare(read_c0_count()); #endif /* @@ -457,32 +461,32 @@ pending = read_c0_cause(); #ifdef CONFIG_SIBYTE_SB1250_PROF - if (pending & CAUSEF_IP7) { /* Cpu performance counter interrupt */ + if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ sbprof_cpu_intr(exception_epc(regs)); - } + else #endif if (pending & CAUSEF_IP4) sb1250_timer_interrupt(regs); #ifdef CONFIG_SMP - if (pending & CAUSEF_IP3) + else if (pending & CAUSEF_IP3) sb1250_mailbox_interrupt(regs); #endif #ifdef CONFIG_KGDB - if (pending & CAUSEF_IP6) /* KGDB (uart 1) */ + else if (pending & CAUSEF_IP6) /* KGDB (uart 1) */ sb1250_kgdb_interrupt(regs); #endif - if (pending & CAUSEF_IP2) { + else if (pending & CAUSEF_IP2) { unsigned long long mask; /* * Default...we've hit an IP[2] interrupt, which means we've * got to check the 1250 interrupt registers to figure out what * to do. Need to detect which CPU we're on, now that - ~ smp_affinity is supported. + * smp_affinity is supported. */ mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(), R_IMR_INTERRUPT_STATUS_BASE))); diff -Naur linux-2.6.17.4-kernel/arch/mips/sibyte/swarm/setup.c linux-2.6.17.4-mips/arch/mips/sibyte/swarm/setup.c --- linux-2.6.17.4-kernel/arch/mips/sibyte/swarm/setup.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/arch/mips/sibyte/swarm/setup.c 2006-07-06 16:58:16.000000000 -0700 @@ -72,8 +72,10 @@ void __init swarm_time_init(void) { +#if defined(CONFIG_SIBYTE_SB1250) || defined(CONFIG_SIBYTE_BCM112X) /* Setup HPT */ sb1250_hpt_setup(); +#endif } void __init swarm_timer_setup(struct irqaction *irq) diff -Naur linux-2.6.17.4-kernel/Documentation/feature-removal-schedule.txt linux-2.6.17.4-mips/Documentation/feature-removal-schedule.txt --- linux-2.6.17.4-kernel/Documentation/feature-removal-schedule.txt 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/Documentation/feature-removal-schedule.txt 2006-07-06 16:58:16.000000000 -0700 @@ -147,16 +147,6 @@ --------------------------- -What: au1x00_uart driver -When: January 2006 -Why: The 8250 serial driver now has the ability to deal with the differences - between the standard 8250 family of UARTs and their slightly strange - brother on Alchemy SOCs. The loss of features is not considered an - issue. -Who: Ralf Baechle - ---------------------------- - What: eepro100 network driver When: January 2007 Why: replaced by the e100 driver diff -Naur linux-2.6.17.4-kernel/drivers/char/decserial.c linux-2.6.17.4-mips/drivers/char/decserial.c --- linux-2.6.17.4-kernel/drivers/char/decserial.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/char/decserial.c 2006-07-06 16:58:16.000000000 -0700 @@ -14,87 +14,85 @@ * device. Added support for PROM console in drivers/char/tty_io.c * instead. Although it may work to enable more than one * console device I strongly recommend to use only one. + * + * Copyright (C) 2004 Maciej W. Rozycki */ #include +#include #include -#include - -#ifdef CONFIG_ZS -extern int zs_init(void); -#endif -#ifdef CONFIG_DZ -extern int dz_init(void); -#endif +#include +#include -#ifdef CONFIG_SERIAL_CONSOLE +extern int register_zs_hook(unsigned int channel, + struct dec_serial_hook *hook); +extern int unregister_zs_hook(unsigned int channel); +int register_dec_serial_hook(unsigned int channel, + struct dec_serial_hook *hook) +{ #ifdef CONFIG_ZS -extern void zs_serial_console_init(void); -#endif - -#ifdef CONFIG_DZ -extern void dz_serial_console_init(void); + if (IOASIC) + return register_zs_hook(channel, hook); #endif + return 0; +} +int unregister_dec_serial_hook(unsigned int channel) +{ +#ifdef CONFIG_ZS + if (IOASIC) + return unregister_zs_hook(channel); #endif + return 0; +} -/* rs_init - starts up the serial interface - - handle normal case of starting up the serial interface */ -#ifdef CONFIG_SERIAL +extern int zs_init(void); +extern int dz_init(void); +/* + * rs_init - starts up the serial interface - + * handle normal case of starting up the serial interface + */ int __init rs_init(void) { - -#if defined(CONFIG_ZS) && defined(CONFIG_DZ) - if (IOASIC) - return zs_init(); - else - return dz_init(); -#else - #ifdef CONFIG_ZS - return zs_init(); + if (IOASIC) + return zs_init(); #endif - #ifdef CONFIG_DZ - return dz_init(); -#endif - + if (!IOASIC) + return dz_init(); #endif + return -ENXIO; } __initcall(rs_init); -#endif -#ifdef CONFIG_SERIAL_CONSOLE +#ifdef CONFIG_SERIAL_DEC_CONSOLE + +extern void zs_serial_console_init(void); +extern void dz_serial_console_init(void); -/* serial_console_init handles the special case of starting - * up the console on the serial port +/* + * dec_serial_console_init handles the special case of starting + * up the console on the serial port */ -static int __init decserial_console_init(void) +static int __init dec_serial_console_init(void) { -#if defined(CONFIG_ZS) && defined(CONFIG_DZ) - if (IOASIC) - zs_serial_console_init(); - else - dz_serial_console_init(); -#else - #ifdef CONFIG_ZS - zs_serial_console_init(); + if (IOASIC) + zs_serial_console_init(); #endif - #ifdef CONFIG_DZ - dz_serial_console_init(); -#endif - + if (!IOASIC) + dz_serial_console_init(); #endif return 0; } -console_initcall(decserial_console_init); +console_initcall(dec_serial_console_init); #endif diff -Naur linux-2.6.17.4-kernel/drivers/char/Kconfig linux-2.6.17.4-mips/drivers/char/Kconfig --- linux-2.6.17.4-kernel/drivers/char/Kconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/char/Kconfig 2006-07-06 16:58:16.000000000 -0700 @@ -340,23 +340,68 @@ To compile this driver as a module, choose M here: the module will be called istallion. -config AU1000_UART - bool "Enable Au1000 UART Support" - depends on SERIAL_NONSTANDARD && MIPS - help - If you have an Alchemy AU1000 processor (MIPS based) and you want - to use serial ports, say Y. Otherwise, say N. - -config AU1000_SERIAL_CONSOLE - bool "Enable Au1000 serial console" - depends on AU1000_UART +config AU1X00_GPIO + tristate "Alchemy Au1000 GPIO device support" + depends on MIPS && SOC_AU1X00 + +config TS_AU1X00_ADS7846 + tristate "Au1000/ADS7846 touchscreen support" + depends on MIPS && SOC_AU1X00 + +config AU1X00_USB_TTY + tristate "Au1000 USB TTY Device support" + depends on MIPS && MIPS_AU1000 && AU1000_USB_DEVICE=y && AU1000_USB_DEVICE + +config AU1X00_USB_RAW + tristate "Au1000 USB Raw Device support" + depends on MIPS && MIPS_AU1000 && AU1000_USB_DEVICE=y && AU1000_USB_TTY!=y && AU1X00_USB_DEVICE + +config SIBYTE_SB1250_DUART + bool "Support for BCM1xxx onchip DUART" + depends on MIPS && SIBYTE_SB1xxx_SOC=y + +config SIBYTE_SB1250_DUART_CONSOLE + bool "Console on BCM1xxx DUART" + depends on SIBYTE_SB1250_DUART + +config SERIAL_DEC + bool "DECstation serial support" + depends on MACH_DECSTATION + default y help - If you have an Alchemy AU1000 processor (MIPS based) and you want - to use a console on a serial port, say Y. Otherwise, say N. + This selects whether you want to be asked about drivers for + DECstation serial ports. + + Note that the answer to this question won't directly affect the + kernel: saying N will just cause the configurator to skip all + the questions about DECstation serial ports. + + If unsure, say Y. + +config SERIAL_DEC_CONSOLE + bool "Support for console on a DECstation serial port" + depends on SERIAL_DEC + default y + help + If you say Y here, it will be possible to use a serial port as the + system console (the system console is the device which receives all + kernel messages and warnings and which allows logins in single user + mode). Note that the firmware uses ttyS0 as the serial console on + the Maxine and ttyS2 on the others. + + If unsure, say Y. + +config ZS + bool "Z85C30 Serial Support" + depends on SERIAL_DEC + default y + help + Documentation on the Zilog 85C350 serial communications controller + is downloadable at . config QTRONIX_KEYBOARD bool "Enable Qtronix 990P Keyboard Support" - depends on IT8712 + depends on MIPS && (MIPS_ITE8172 || MIPS_IVR) help Images of Qtronix keyboards are at . @@ -368,7 +413,7 @@ config IT8172_SCR0 bool "Enable Smart Card Reader 0 Support " - depends on IT8712 + depends on MIPS && (MIPS_ITE8172 || MIPS_IVR) help Say Y here to support smart-card reader 0 (SCR0) on the Integrated Technology Express, Inc. ITE8172 SBC. Vendor page at @@ -377,13 +422,17 @@ config IT8172_SCR1 bool "Enable Smart Card Reader 1 Support " - depends on IT8712 + depends on MIPS && (MIPS_ITE8172 || MIPS_IVR) help Say Y here to support smart-card reader 1 (SCR1) on the Integrated Technology Express, Inc. ITE8172 SBC. Vendor page at ; picture of the board at . +config ITE_GPIO + tristate "ITE GPIO" + depends on MIPS && MIPS_ITE8172 + config A2232 tristate "Commodore A2232 serial support (EXPERIMENTAL)" depends on EXPERIMENTAL && ZORRO && BROKEN_ON_SMP diff -Naur linux-2.6.17.4-kernel/drivers/char/Makefile linux-2.6.17.4-mips/drivers/char/Makefile --- linux-2.6.17.4-kernel/drivers/char/Makefile 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/char/Makefile 2006-07-06 16:58:16.000000000 -0700 @@ -31,6 +31,7 @@ obj-$(CONFIG_A2232) += ser_a2232.o generic_serial.o obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o obj-$(CONFIG_MOXA_SMARTIO) += mxser.o +obj-$(CONFIG_SIBYTE_SB1250_DUART) += sb1250_duart.o obj-$(CONFIG_COMPUTONE) += ip2/ obj-$(CONFIG_RISCOM8) += riscom8.o obj-$(CONFIG_ISI) += isicom.o @@ -51,6 +52,7 @@ obj-$(CONFIG_VIOTAPE) += viotape.o obj-$(CONFIG_HVCS) += hvcs.o obj-$(CONFIG_SGI_MBCS) += mbcs.o +obj-$(CONFIG_SERIAL_DEC) += decserial.o obj-$(CONFIG_PRINTER) += lp.o obj-$(CONFIG_TIPAR) += tipar.o @@ -78,6 +80,10 @@ obj-$(CONFIG_HW_RANDOM) += hw_random.o obj-$(CONFIG_FTAPE) += ftape/ obj-$(CONFIG_COBALT_LCD) += lcd.o +obj-$(CONFIG_ITE_GPIO) += ite_gpio.o +obj-$(CONFIG_AU1000_GPIO) += au1000_gpio.o +obj-$(CONFIG_AU1000_USB_TTY) += au1000_usbtty.o +obj-$(CONFIG_AU1000_USB_RAW) += au1000_usbraw.o obj-$(CONFIG_PPDEV) += ppdev.o obj-$(CONFIG_NWBUTTON) += nwbutton.o obj-$(CONFIG_NWFLASH) += nwflash.o diff -Naur linux-2.6.17.4-kernel/drivers/char/qtronix.c linux-2.6.17.4-mips/drivers/char/qtronix.c --- linux-2.6.17.4-kernel/drivers/char/qtronix.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/char/qtronix.c 2006-07-06 16:58:16.000000000 -0700 @@ -535,8 +535,7 @@ i--; } if (count-i) { - struct inode *inode = file->f_dentry->d_inode; - inode->i_atime = current_fs_time(inode->i_sb); + file->f_dentry->d_inode->i_atime = get_seconds(); return count-i; } if (signal_pending(current)) diff -Naur linux-2.6.17.4-kernel/drivers/char/rtc.c linux-2.6.17.4-mips/drivers/char/rtc.c --- linux-2.6.17.4-kernel/drivers/char/rtc.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/char/rtc.c 2006-07-06 16:58:16.000000000 -0700 @@ -35,23 +35,22 @@ * 1.09a Pete Zaitcev: Sun SPARC * 1.09b Jeff Garzik: Modularize, init cleanup * 1.09c Jeff Garzik: SMP cleanup - * 1.10 Paul Barton-Davis: add support for async I/O + * 1.10 Paul Barton-Davis: add support for async I/O * 1.10a Andrea Arcangeli: Alpha updates * 1.10b Andrew Morton: SMP lock fix * 1.10c Cesar Barros: SMP locking fixes and cleanup * 1.10d Paul Gortmaker: delete paranoia check in rtc_exit * 1.10e Maciej W. Rozycki: Handle DECstation's year weirdness. - * 1.11 Takashi Iwai: Kernel access functions + * 1.11 Takashi Iwai: Kernel access functions * rtc_register/rtc_unregister/rtc_control * 1.11a Daniele Bellucci: Audit create_proc_read_entry in rtc_init - * 1.12 Venkatesh Pallipadi: Hooks for emulating rtc on HPET base-timer + * 1.12 Venkatesh Pallipadi: Hooks for emulating rtc on HPET base-timer * CONFIG_HPET_EMULATE_RTC + * 1.12a Maciej W. Rozycki: Handle memory-mapped chips properly. * 1.12ac Alan Cox: Allow read access to the day of week register */ -#define RTC_VERSION "1.12ac" - -#define RTC_IO_EXTENT 0x8 +#define RTC_VERSION "1.12a" /* * Note that *all* calls to CMOS_READ and CMOS_WRITE are done with @@ -338,7 +337,15 @@ if (rtc_has_irq == 0) return -EIO; - if (count < sizeof(unsigned)) + /* + * Historically this function used to assume that sizeof(unsigned long) + * is the same in userspace and kernelspace. This lead to problems + * for configurations with multiple ABIs such a the MIPS o32 and 64 + * ABIs supported on the same kernel. So now we support read of both + * 4 and 8 bytes and assume that's the sizeof(unsigned long) in the + * userspace ABI. + */ + if (count != sizeof(unsigned int) && count != sizeof(unsigned long)) return -EINVAL; add_wait_queue(&rtc_wait, &wait); @@ -369,10 +376,12 @@ schedule(); } while (1); - if (count < sizeof(unsigned long)) - retval = put_user(data, (unsigned int __user *)buf) ?: sizeof(int); + if (count == sizeof(unsigned int)) + retval = put_user(data, (unsigned int __user *)buf) ?: sizeof(int); else retval = put_user(data, (unsigned long __user *)buf) ?: sizeof(long); + if (!retval) + retval = count; out: current->state = TASK_RUNNING; remove_wait_queue(&rtc_wait, &wait); @@ -924,6 +933,9 @@ struct sparc_isa_device *isa_dev; #endif #endif +#ifndef __sparc__ + void *r; +#endif #ifdef __sparc__ for_each_ebus(ebus) { @@ -969,8 +981,13 @@ } no_irq: #else - if (!request_region(RTC_PORT(0), RTC_IO_EXTENT, "rtc")) { - printk(KERN_ERR "rtc: I/O port %d is not free.\n", RTC_PORT (0)); + if (RTC_IOMAPPED) + r = request_region(RTC_PORT(0), RTC_IO_EXTENT, "rtc"); + else + r = request_mem_region(RTC_PORT(0), RTC_IO_EXTENT, "rtc"); + if (!r) { + printk(KERN_ERR "rtc: I/O resource %lx is not free.\n", + (long)(RTC_PORT(0))); return -EIO; } @@ -984,7 +1001,10 @@ if(request_irq(RTC_IRQ, rtc_int_handler_ptr, SA_INTERRUPT, "rtc", NULL)) { /* Yeah right, seeing as irq 8 doesn't even hit the bus. */ printk(KERN_ERR "rtc: IRQ %d is not free.\n", RTC_IRQ); - release_region(RTC_PORT(0), RTC_IO_EXTENT); + if (RTC_IOMAPPED) + release_region(RTC_PORT(0), RTC_IO_EXTENT); + else + release_mem_region(RTC_PORT(0), RTC_IO_EXTENT); return -EIO; } hpet_rtc_timer_init(); @@ -1084,7 +1104,10 @@ if (rtc_has_irq) free_irq (rtc_irq, &rtc_port); #else - release_region (RTC_PORT (0), RTC_IO_EXTENT); + if (RTC_IOMAPPED) + release_region(RTC_PORT(0), RTC_IO_EXTENT); + else + release_mem_region(RTC_PORT(0), RTC_IO_EXTENT); #ifdef RTC_IRQ if (rtc_has_irq) free_irq (RTC_IRQ, NULL); diff -Naur linux-2.6.17.4-kernel/drivers/ide/mips/Makefile linux-2.6.17.4-mips/drivers/ide/mips/Makefile --- linux-2.6.17.4-kernel/drivers/ide/mips/Makefile 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/ide/mips/Makefile 2006-07-06 16:58:16.000000000 -0700 @@ -1,4 +1,4 @@ obj-$(CONFIG_BLK_DEV_IDE_SWARM) += swarm.o obj-$(CONFIG_BLK_DEV_IDE_AU1XXX) += au1xxx-ide.o -EXTRA_CFLAGS := -Idrivers/ide +CFLAGS_au1xxx-ide.o := -Idrivers/ide diff -Naur linux-2.6.17.4-kernel/drivers/mtd/devices/docprobe.c linux-2.6.17.4-mips/drivers/mtd/devices/docprobe.c --- linux-2.6.17.4-kernel/drivers/mtd/devices/docprobe.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/mtd/devices/docprobe.c 2006-07-06 16:58:16.000000000 -0700 @@ -84,10 +84,10 @@ 0xe4000000, #elif defined(CONFIG_MOMENCO_OCELOT) 0x2f000000, - 0xff000000, + 0xff000000, #elif defined(CONFIG_MOMENCO_OCELOT_G) || defined (CONFIG_MOMENCO_OCELOT_C) - 0xff000000, -##else + 0xff000000, +#else #warning Unknown architecture for DiskOnChip. No default probe locations defined #endif 0xffffffff }; diff -Naur linux-2.6.17.4-kernel/drivers/mtd/devices/Kconfig linux-2.6.17.4-mips/drivers/mtd/devices/Kconfig --- linux-2.6.17.4-kernel/drivers/mtd/devices/Kconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/mtd/devices/Kconfig 2006-07-06 16:58:16.000000000 -0700 @@ -47,6 +47,11 @@ accelerator. Say Y here if you have a DECstation 5000/2x0 or a DECsystem 5900 equipped with such a module. + If you want to compile this driver as a module ( = code which can be + inserted in and removed from the running kernel whenever you want), + say M here and read . The module will + be called ms02-nv.o. + config MTD_DATAFLASH tristate "Support for AT45xxx DataFlash" depends on MTD && SPI_MASTER && EXPERIMENTAL diff -Naur linux-2.6.17.4-kernel/drivers/mtd/maps/Kconfig linux-2.6.17.4-mips/drivers/mtd/maps/Kconfig --- linux-2.6.17.4-kernel/drivers/mtd/maps/Kconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/mtd/maps/Kconfig 2006-07-06 16:58:16.000000000 -0700 @@ -200,8 +200,8 @@ Support for the flash chip on Tsunami TIG bus. config MTD_LASAT - tristate "Flash chips on LASAT board" - depends on LASAT + tristate "LASAT flash device" + depends on LASAT && MTD_CFI help Support for the flash chips on the Lasat 100 and 200 boards. @@ -299,6 +299,18 @@ Mapping for the Flaga digital module. If you don't have one, ignore this setting. +config MTD_XXS1500 + tristate "MyCable XXS1500 Flash device" + depends on MIPS && MIPS_XXS1500 + help + Flash memory access on MyCable XXS1500 Board + +config MTD_MTX1 + tristate "4-G Systems MTX-1 Flash device" + depends on MIPS && MIPS_MTX1 + help + Flash memory access on 4-G Systems MTX-1 Board + config MTD_BEECH tristate "CFI Flash device mapped on IBM 405LP Beech" depends on MTD_CFI && BEECH diff -Naur linux-2.6.17.4-kernel/drivers/mtd/maps/lasat.c linux-2.6.17.4-mips/drivers/mtd/maps/lasat.c --- linux-2.6.17.4-kernel/drivers/mtd/maps/lasat.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/mtd/maps/lasat.c 2006-07-06 16:58:16.000000000 -0700 @@ -7,7 +7,7 @@ * modify it under the terms of the GNU General Public License version * 2 as published by the Free Software Foundation. * - * $Id: lasat.c,v 1.9 2004/11/04 13:24:15 gleixner Exp $ + * $Id: lasat.c,v 1.7 2004/07/12 21:59:44 dwmw2 Exp $ * */ @@ -50,7 +50,7 @@ ENABLE_VPP((&lasat_map)); lasat_map.phys = lasat_flash_partition_start(LASAT_MTD_BOOTLOADER); - lasat_map.virt = ioremap_nocache( + lasat_map.virt = (unsigned long)ioremap_nocache( lasat_map.phys, lasat_board_info.li_flash_size); lasat_map.size = lasat_board_info.li_flash_size; diff -Naur linux-2.6.17.4-kernel/drivers/net/declance.c linux-2.6.17.4-mips/drivers/net/declance.c --- linux-2.6.17.4-kernel/drivers/net/declance.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/net/declance.c 2006-07-06 16:58:16.000000000 -0700 @@ -704,8 +704,8 @@ return IRQ_HANDLED; } -static irqreturn_t -lance_interrupt(const int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t lance_interrupt(const int irq, void *dev_id, + struct pt_regs *regs) { struct net_device *dev = (struct net_device *) dev_id; struct lance_private *lp = netdev_priv(dev); @@ -1255,7 +1255,7 @@ return 0; err_out_free_dev: - kfree(dev); + free_netdev(dev); err_out: return ret; @@ -1301,6 +1301,7 @@ while (root_lance_dev) { struct net_device *dev = root_lance_dev; struct lance_private *lp = netdev_priv(dev); + unregister_netdev(dev); #ifdef CONFIG_TC if (lp->slot >= 0) diff -Naur linux-2.6.17.4-kernel/drivers/net/gt64240eth.h linux-2.6.17.4-mips/drivers/net/gt64240eth.h --- linux-2.6.17.4-kernel/drivers/net/gt64240eth.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/net/gt64240eth.h 2006-07-06 16:58:16.000000000 -0700 @@ -9,6 +9,7 @@ * Copyright 2000 MontaVista Software Inc. * Author: MontaVista Software, Inc. * stevel@mvista.com or support@mvista.com + * Copyright 2004, 05 Ralf Baechle (ralf@linux-mips.org) * * This program is free software; you can distribute it and/or modify it * under the terms of the GNU General Public License (Version 2) as @@ -31,6 +32,7 @@ #ifndef _GT64240ETH_H #define _GT64240ETH_H +#include #include #define ETHERNET_PORTS_DIFFERENCE_OFFSETS 0x400 @@ -108,10 +110,10 @@ #define REV_GT64240A 0x10 #define GT64240ETH_READ(gp, offset) \ - GT_READ((gp)->port_offset + (offset)) + MV_READ((gp)->port_offset + (offset)) #define GT64240ETH_WRITE(gp, offset, data) \ - GT_WRITE((gp)->port_offset + (offset), (data)) + MV_WRITE((gp)->port_offset + (offset), (data)) #define GT64240ETH_SETBIT(gp, offset, bits) \ GT64240ETH_WRITE((gp), (offset), \ @@ -121,8 +123,8 @@ GT64240ETH_WRITE((gp), (offset), \ GT64240ETH_READ((gp), (offset)) & ~(bits)) -#define GT64240_READ(ofs) GT_READ(ofs) -#define GT64240_WRITE(ofs, data) GT_WRITE((ofs), (data)) +#define GT64240_READ(ofs) MV_READ(ofs) +#define GT64240_WRITE(ofs, data) MV_WRITE((ofs), (data)) /* Bit definitions of the SMI Reg */ enum { diff -Naur linux-2.6.17.4-kernel/drivers/net/Kconfig linux-2.6.17.4-mips/drivers/net/Kconfig --- linux-2.6.17.4-kernel/drivers/net/Kconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/net/Kconfig 2006-07-06 16:58:16.000000000 -0700 @@ -438,6 +438,14 @@ This is the driver for the onboard card of MIPS Magnum 4000, Acer PICA, Olivetti M700-10 and a few other identical OEM systems. +config GALILEO_64240_ETH + tristate "Galileo GT64240 Ethernet support" + depends on NET_ETHERNET && MOMENCO_OCELOT_G + select MII + help + This is the driver for the ethernet interfaces integrated into + the Galileo (now Marvell) GT64240 chipset. + config MIPS_GT96100ETH bool "MIPS GT96100 Ethernet support" depends on NET_ETHERNET && MIPS_GT96100 @@ -452,10 +460,6 @@ If you have an Alchemy Semi AU1X00 based system say Y. Otherwise, say N. -config NET_SB1250_MAC - tristate "SB1250 Ethernet support" - depends on NET_ETHERNET && SIBYTE_SB1xxx_SOC - config SGI_IOC3_ETH bool "SGI IOC3 Ethernet" depends on NET_ETHERNET && PCI && SGI_IP27 @@ -494,6 +498,14 @@ emulated by the MIPS Simulator. If you are not using a MIPSsim or are unsure, say N. +config MIPS_SIM_NET + tristate "MIPS simulator Network device (EXPERIMENTAL)" + depends on NETDEVICES && MIPS_SIM && EXPERIMENTAL + help + The MIPSNET device is a simple Ethernet network device which is + emulated by the MIPS Simulator. + If you are not using a MIPSsim or are unsure, say N. + config SGI_O2MACE_ETH tristate "SGI O2 MACE Fast Ethernet support" depends on NET_ETHERNET && SGI_IP32=y @@ -1993,6 +2005,10 @@ If in doubt, say N. +config NET_SB1250_MAC + tristate "SB1250 Ethernet support" + depends on SIBYTE_SB1xxx_SOC + config R8169_VLAN bool "VLAN support" depends on R8169 && VLAN_8021Q @@ -2195,8 +2211,8 @@ select MII help This driver supports the gigabit Ethernet on the Marvell MV643XX - chipset which is used in the Momenco Ocelot C and Jaguar ATX and - Pegasos II, amongst other PPC and MIPS boards. + chipset which is used in the Momenco Ocelot C Ocelot, Jaguar ATX + and Pegasos II, amongst other PPC and MIPS boards. config MV643XX_ETH_0 bool "MV-643XX Port 0" @@ -2219,6 +2235,20 @@ This enables support for Port 2 of the Marvell MV643XX Gigabit Ethernet. +config BIG_SUR_FE + bool "PMC-Sierra TITAN Fast Ethernet Support" + depends on NET_ETHERNET && PMC_BIG_SUR + help + This enables support for the the integrated ethernet of + PMC-Sierra's Big Sur SoC. + +config TITAN_GE + bool "PMC-Sierra TITAN Gigabit Ethernet Support" + depends on PMC_YOSEMITE + help + This enables support for the the integrated ethernet of + PMC-Sierra's Titan SoC. + endmenu # diff -Naur linux-2.6.17.4-kernel/drivers/net/Makefile linux-2.6.17.4-mips/drivers/net/Makefile --- linux-2.6.17.4-kernel/drivers/net/Makefile 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/net/Makefile 2006-07-06 16:58:16.000000000 -0700 @@ -111,6 +111,11 @@ obj-$(CONFIG_MV643XX_ETH) += mv643xx_eth.o +obj-$(CONFIG_GALILEO_64240_ETH) += gt64240eth.o +obj-$(CONFIG_MV64340_ETH) += mv64340_eth.o +obj-$(CONFIG_BIG_SUR_FE) += big_sur_ge.o +obj-$(CONFIG_TITAN_GE) += titan_mdio.o titan_ge.o + obj-$(CONFIG_PPP) += ppp_generic.o slhc.o obj-$(CONFIG_PPP_ASYNC) += ppp_async.o obj-$(CONFIG_PPP_SYNC_TTY) += ppp_synctty.o diff -Naur linux-2.6.17.4-kernel/drivers/net/sb1250-mac.c linux-2.6.17.4-mips/drivers/net/sb1250-mac.c --- linux-2.6.17.4-kernel/drivers/net/sb1250-mac.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/net/sb1250-mac.c 2006-07-06 16:58:16.000000000 -0700 @@ -156,6 +156,10 @@ #define NUMCACHEBLKS(x) (((x)+SMP_CACHE_BYTES-1)/SMP_CACHE_BYTES) +#define SBMAC_READCSR(t) __raw_readq((unsigned long)t) +#define SBMAC_WRITECSR(t,v) __raw_writeq(v, (unsigned long)t) + + #define SBMAC_MAX_TXDESCR 32 #define SBMAC_MAX_RXDESCR 32 @@ -2416,6 +2420,11 @@ sc->sbm_dev->name); } + if (periph_rev >= 2) { + printk(KERN_INFO "%s: enabling TCP rcv checksum\n", + sc->sbm_dev->name); + } + /* * Display Ethernet address (this is called during the config * process so we need to finish off the config message that diff -Naur linux-2.6.17.4-kernel/drivers/scsi/dec_esp.c linux-2.6.17.4-mips/drivers/scsi/dec_esp.c --- linux-2.6.17.4-kernel/drivers/scsi/dec_esp.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/scsi/dec_esp.c 2006-07-06 16:58:16.000000000 -0700 @@ -55,7 +55,7 @@ static int dma_bytes_sent(struct NCR_ESP *esp, int fifo_count); static void dma_drain(struct NCR_ESP *esp); -static int dma_can_transfer(struct NCR_ESP *esp, struct scsi_cmnd *sp); +static int dma_can_transfer(struct NCR_ESP *esp, struct scsi_cmnd * sp); static void dma_dump_state(struct NCR_ESP *esp); static void dma_init_read(struct NCR_ESP *esp, u32 vaddress, int length); static void dma_init_write(struct NCR_ESP *esp, u32 vaddress, int length); @@ -230,7 +230,7 @@ mem_start = get_tc_base_addr(slot); /* Store base addr into esp struct */ - esp->slot = CPHYSADDR(mem_start); + esp->slot = mem_start; esp->dregs = 0; esp->eregs = (void *)CKSEG1ADDR(mem_start + diff -Naur linux-2.6.17.4-kernel/drivers/scsi/NCR53C9x.h linux-2.6.17.4-mips/drivers/scsi/NCR53C9x.h --- linux-2.6.17.4-kernel/drivers/scsi/NCR53C9x.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/scsi/NCR53C9x.h 2006-07-06 16:58:16.000000000 -0700 @@ -145,12 +145,7 @@ #ifndef MULTIPLE_PAD_SIZES -#ifdef CONFIG_CPU_HAS_WB -#include -#define esp_write(__reg, __val) do{(__reg) = (__val); wbflush();} while(0) -#else -#define esp_write(__reg, __val) ((__reg) = (__val)) -#endif +#define esp_write(__reg, __val) do{(__reg) = (__val); iob();} while(0) #define esp_read(__reg) (__reg) struct ESP_regs { diff -Naur linux-2.6.17.4-kernel/drivers/scsi/sgiwd93.c linux-2.6.17.4-mips/drivers/scsi/sgiwd93.c --- linux-2.6.17.4-kernel/drivers/scsi/sgiwd93.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/scsi/sgiwd93.c 2006-07-06 16:58:16.000000000 -0700 @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -197,6 +198,7 @@ udelay(50); hregs->ctrl = 0; } +EXPORT_SYMBOL_GPL(sgiwd93_reset); static inline void init_hpc_chain(struct hpc_data *hd) { diff -Naur linux-2.6.17.4-kernel/drivers/serial/ip22zilog.c linux-2.6.17.4-mips/drivers/serial/ip22zilog.c --- linux-2.6.17.4-kernel/drivers/serial/ip22zilog.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/serial/ip22zilog.c 2006-07-06 16:58:16.000000000 -0700 @@ -866,6 +866,7 @@ up->cflag = termios->c_cflag; ip22zilog_maybe_update_regs(up, ZILOG_CHANNEL_FROM_PORT(port)); + uart_update_timeout(port, termios->c_cflag, baud); spin_unlock_irqrestore(&up->port.lock, flags); } @@ -1027,6 +1028,8 @@ } con->cflag = cflag | CS8; /* 8N1 */ + + uart_update_timeout(&ip22zilog_port_table[con->index].port, cflag, baud); } static int __init ip22zilog_console_setup(struct console *con, char *options) diff -Naur linux-2.6.17.4-kernel/drivers/serial/Kconfig linux-2.6.17.4-mips/drivers/serial/Kconfig --- linux-2.6.17.4-kernel/drivers/serial/Kconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/serial/Kconfig 2006-07-06 16:58:16.000000000 -0700 @@ -647,6 +647,25 @@ depends on SERIAL_SH_SCI=y select SERIAL_CORE_CONSOLE +config SERIAL_IP3106 + bool "Enable IP3106 UART Support (Philips PNX 8xx0 SoCs)" + depends on MIPS && (SOC_PNX8550 || SOC_PNX8330) + select SERIAL_CORE + help + If you have a Philips SoC with an IP 3106 UART in it, such as + the PNX8550 or PNX8330 (MIPS based) and you want to use + serial ports, say Y. Otherwise, say N. + +config SERIAL_IP3106_CONSOLE + bool "Enable PNX8XX0 serial console" + depends on SERIAL_IP3106 + select SERIAL_CORE_CONSOLE + help + If you have a Philips SoC with an IP 3106 UART in it, such as + the PNX8550 or PNX8330 (MIPS based) and you want to use + a serial console, say Y. + Otherwise, say N. + config SERIAL_CORE tristate diff -Naur linux-2.6.17.4-kernel/drivers/serial/Makefile linux-2.6.17.4-mips/drivers/serial/Makefile --- linux-2.6.17.4-kernel/drivers/serial/Makefile 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/serial/Makefile 2006-07-06 16:58:16.000000000 -0700 @@ -39,6 +39,7 @@ obj-$(CONFIG_V850E_UART) += v850e_uart.o obj-$(CONFIG_SERIAL_PMACZILOG) += pmac_zilog.o obj-$(CONFIG_SERIAL_LH7A40X) += serial_lh7a40x.o +obj-$(CONFIG_SERIAL_IP3106) += ip3106_uart.o obj-$(CONFIG_SERIAL_DZ) += dz.o obj-$(CONFIG_SERIAL_SH_SCI) += sh-sci.o obj-$(CONFIG_SERIAL_SGI_L1_CONSOLE) += sn_console.o diff -Naur linux-2.6.17.4-kernel/drivers/usb/gadget/net2280.c linux-2.6.17.4-mips/drivers/usb/gadget/net2280.c --- linux-2.6.17.4-kernel/drivers/usb/gadget/net2280.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/usb/gadget/net2280.c 2006-07-06 16:58:16.000000000 -0700 @@ -468,7 +468,8 @@ #elif defined(CONFIG_PPC) && !defined(CONFIG_NOT_COHERENT_CACHE) #define USE_KMALLOC -#elif defined(CONFIG_MIPS) && !defined(CONFIG_DMA_NONCOHERENT) +#elif defined(CONFIG_MIPS) && \ + (defined(CONFIG_DMA_COHERENT) || defined(CONFIG_DMA_IP27)) #define USE_KMALLOC /* FIXME there are other cases, including an x86-64 one ... */ diff -Naur linux-2.6.17.4-kernel/drivers/usb/host/ohci-hcd.c linux-2.6.17.4-mips/drivers/usb/host/ohci-hcd.c --- linux-2.6.17.4-kernel/drivers/usb/host/ohci-hcd.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/usb/host/ohci-hcd.c 2006-07-06 16:58:16.000000000 -0700 @@ -906,6 +906,10 @@ #include "ohci-au1xxx.c" #endif +#ifdef CONFIG_PNX8550 +#include "ohci-pnx8550.c" +#endif + #ifdef CONFIG_USB_OHCI_HCD_PPC_SOC #include "ohci-ppc-soc.c" #endif diff -Naur linux-2.6.17.4-kernel/drivers/video/au1100fb.c linux-2.6.17.4-mips/drivers/video/au1100fb.c --- linux-2.6.17.4-kernel/drivers/video/au1100fb.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/video/au1100fb.c 2006-07-06 16:58:16.000000000 -0700 @@ -38,6 +38,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ + #include #include #include diff -Naur linux-2.6.17.4-kernel/drivers/video/Kconfig linux-2.6.17.4-mips/drivers/video/Kconfig --- linux-2.6.17.4-kernel/drivers/video/Kconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/video/Kconfig 2006-07-06 16:58:16.000000000 -0700 @@ -1142,6 +1142,17 @@ Please read the for supported options and other important info support. +config FB_SMIVGX + tristate "Silicon Motion VoyagerGX support" + depends on FB && PCI && (MIPS || EXPERIMENTAL) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + This drivers supports SMI VoyagerGX 501 based PCI boards + The default settings drive both a CRT and LCD. The CRT + can be turned off by passing in the no_crt option + config FB_CYBLA tristate "Cyberblade/i1 support" depends on FB && PCI && X86_32 && !64BIT @@ -1206,7 +1217,25 @@ config FB_AU1100 bool "Au1100 LCD Driver" - depends on (FB = y) && EXPERIMENTAL && PCI && MIPS && MIPS_PB1100=y + depends on FB && MIPS && SOC_AU1100 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the framebuffer driver for the AMD Au1100 SOC. It can drive + various panels and CRTs by passing in kernel cmd line option + au1100fb:panel=. + +config FB_AU1200 + bool "Au1200 LCD Driver" + depends on FB && MIPS && SOC_AU1200 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the framebuffer driver for the AMD Au1200 SOC. It can drive + various panels and CRTs by passing in kernel cmd line option + au1200fb:panel=. config FB_AU1200 bool "Au1200 LCD Driver" @@ -1322,8 +1351,8 @@ select FB_CFB_IMAGEBLIT help Support for the PMAGB-B TURBOchannel framebuffer card used mainly - in the MIPS-based DECstation series. The card is currently only - supported in 1280x1024x8 mode. + in the MIPS-based DECstation series. The card is currently only + supported in 1280x1024x8 mode. config FB_MAXINE bool "Maxine (Personal DECstation) onboard framebuffer support" diff -Naur linux-2.6.17.4-kernel/drivers/video/Makefile linux-2.6.17.4-mips/drivers/video/Makefile --- linux-2.6.17.4-kernel/drivers/video/Makefile 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/drivers/video/Makefile 2006-07-06 16:58:16.000000000 -0700 @@ -93,6 +93,7 @@ obj-$(CONFIG_FB_TX3912) += tx3912fb.o obj-$(CONFIG_FB_S1D13XXX) += s1d13xxxfb.o obj-$(CONFIG_FB_IMX) += imxfb.o +obj-$(CONFIG_FB_SMIVGX) += smivgxfb.o obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o # Platform or fallback drivers go here diff -Naur linux-2.6.17.4-kernel/include/asm-mips/asmmacro-32.h linux-2.6.17.4-mips/include/asm-mips/asmmacro-32.h --- linux-2.6.17.4-kernel/include/asm-mips/asmmacro-32.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/asmmacro-32.h 2006-07-06 16:58:16.000000000 -0700 @@ -12,7 +12,7 @@ #include #include - .macro fpu_save_double thread status tmp1=t0 tmp2 + .macro fpu_save_double thread status tmp1=t0 cfc1 \tmp1, fcr31 sdc1 $f0, THREAD_FPR0(\thread) sdc1 $f2, THREAD_FPR2(\thread) @@ -70,7 +70,7 @@ sw \tmp, THREAD_FCR31(\thread) .endm - .macro fpu_restore_double thread tmp=t0 + .macro fpu_restore_double thread status tmp=t0 lw \tmp, THREAD_FCR31(\thread) ldc1 $f0, THREAD_FPR0(\thread) ldc1 $f2, THREAD_FPR2(\thread) diff -Naur linux-2.6.17.4-kernel/include/asm-mips/asmmacro-64.h linux-2.6.17.4-mips/include/asm-mips/asmmacro-64.h --- linux-2.6.17.4-kernel/include/asm-mips/asmmacro-64.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/asmmacro-64.h 2006-07-06 16:58:16.000000000 -0700 @@ -53,12 +53,12 @@ sdc1 $f31, THREAD_FPR31(\thread) .endm - .macro fpu_save_double thread status tmp1 tmp2 - sll \tmp2, \tmp1, 5 - bgez \tmp2, 2f + .macro fpu_save_double thread status tmp + sll \tmp, \status, 5 + bgez \tmp, 2f fpu_save_16odd \thread 2: - fpu_save_16even \thread \tmp1 # clobbers t1 + fpu_save_16even \thread \tmp .endm .macro fpu_restore_16even thread tmp=t0 @@ -101,13 +101,12 @@ ldc1 $f31, THREAD_FPR31(\thread) .endm - .macro fpu_restore_double thread tmp - mfc0 t0, CP0_STATUS - sll t1, t0, 5 - bgez t1, 1f # 16 register mode? + .macro fpu_restore_double thread status tmp + sll \tmp, \status, 5 + bgez \tmp, 1f # 16 register mode? - fpu_restore_16odd a0 -1: fpu_restore_16even a0, t0 # clobbers t0 + fpu_restore_16odd \thread +1: fpu_restore_16even \thread \tmp .endm .macro cpu_save_nonscratch thread diff -Naur linux-2.6.17.4-kernel/include/asm-mips/asmmacro.h linux-2.6.17.4-mips/include/asm-mips/asmmacro.h --- linux-2.6.17.4-kernel/include/asm-mips/asmmacro.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/asmmacro.h 2006-07-06 16:58:16.000000000 -0700 @@ -27,14 +27,14 @@ ori \reg, \reg, TCSTATUS_IXMT xori \reg, \reg, TCSTATUS_IXMT mtc0 \reg, CP0_TCSTATUS - ehb + _ehb .endm .macro local_irq_disable reg=t0 mfc0 \reg, CP0_TCSTATUS ori \reg, \reg, TCSTATUS_IXMT mtc0 \reg, CP0_TCSTATUS - ehb + _ehb .endm #else .macro local_irq_enable reg=t0 diff -Naur linux-2.6.17.4-kernel/include/asm-mips/cpu-features.h linux-2.6.17.4-mips/include/asm-mips/cpu-features.h --- linux-2.6.17.4-kernel/include/asm-mips/cpu-features.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/cpu-features.h 2006-07-06 16:58:16.000000000 -0700 @@ -144,12 +144,8 @@ #define cpu_has_dsp (cpu_data[0].ases & MIPS_ASE_DSP) #endif -#ifdef CONFIG_MIPS_MT #ifndef cpu_has_mipsmt -# define cpu_has_mipsmt (cpu_data[0].ases & MIPS_ASE_MIPSMT) -#endif -#else -# define cpu_has_mipsmt 0 +#define cpu_has_mipsmt (cpu_data[0].ases & MIPS_ASE_MIPSMT) #endif #ifdef CONFIG_32BIT @@ -188,19 +184,15 @@ # endif #endif -#ifdef CONFIG_CPU_MIPSR2 -# if defined(CONFIG_CPU_MIPSR2_IRQ_VI) && !defined(cpu_has_vint) -# define cpu_has_vint (cpu_data[0].options & MIPS_CPU_VINT) -# else -# define cpu_has_vint 0 -# endif -# if defined(CONFIG_CPU_MIPSR2_IRQ_EI) && !defined(cpu_has_veic) -# define cpu_has_veic (cpu_data[0].options & MIPS_CPU_VEIC) -# else -# define cpu_has_veic 0 -# endif -#else +#if defined(CONFIG_CPU_MIPSR2_IRQ_VI) && !defined(cpu_has_vint) +# define cpu_has_vint (cpu_data[0].options & MIPS_CPU_VINT) +#elif !defined(cpu_has_vint) # define cpu_has_vint 0 +#endif + +#if defined(CONFIG_CPU_MIPSR2_IRQ_EI) && !defined(cpu_has_veic) +# define cpu_has_veic (cpu_data[0].options & MIPS_CPU_VEIC) +#elif !defined(cpu_has_veic) # define cpu_has_veic 0 #endif diff -Naur linux-2.6.17.4-kernel/include/asm-mips/futex.h linux-2.6.17.4-mips/include/asm-mips/futex.h --- linux-2.6.17.4-kernel/include/asm-mips/futex.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/futex.h 2006-07-06 16:58:16.000000000 -0700 @@ -22,51 +22,53 @@ " .set push \n" \ " .set noat \n" \ " .set mips3 \n" \ - "1: ll %1, (%3) # __futex_atomic_op \n" \ + "1: ll %1, %4 # __futex_atomic_op \n" \ " .set mips0 \n" \ " " insn " \n" \ " .set mips3 \n" \ - "2: sc $1, (%3) \n" \ + "2: sc $1, %2 \n" \ " beqzl $1, 1b \n" \ __FUTEX_SMP_SYNC \ "3: \n" \ " .set pop \n" \ " .set mips0 \n" \ " .section .fixup,\"ax\" \n" \ - "4: li %0, %5 \n" \ + "4: li %0, %6 \n" \ " j 2b \n" \ " .previous \n" \ " .section __ex_table,\"a\" \n" \ " "__UA_ADDR "\t1b, 4b \n" \ " "__UA_ADDR "\t2b, 4b \n" \ " .previous \n" \ - : "=r" (ret), "=r" (oldval) \ - : "0" (0), "r" (uaddr), "Jr" (oparg), "i" (-EFAULT)); \ + : "=r" (ret), "=&r" (oldval), "=R" (*uaddr) \ + : "0" (0), "R" (*uaddr), "Jr" (oparg), "i" (-EFAULT) \ + : "memory"); \ } else if (cpu_has_llsc) { \ __asm__ __volatile__( \ " .set push \n" \ " .set noat \n" \ " .set mips3 \n" \ - "1: ll %1, (%3) # __futex_atomic_op \n" \ + "1: ll %1, %4 # __futex_atomic_op \n" \ " .set mips0 \n" \ " " insn " \n" \ " .set mips3 \n" \ - "2: sc $1, (%3) \n" \ + "2: sc $1, %2 \n" \ " beqz $1, 1b \n" \ __FUTEX_SMP_SYNC \ "3: \n" \ " .set pop \n" \ " .set mips0 \n" \ " .section .fixup,\"ax\" \n" \ - "4: li %0, %5 \n" \ + "4: li %0, %6 \n" \ " j 2b \n" \ " .previous \n" \ " .section __ex_table,\"a\" \n" \ " "__UA_ADDR "\t1b, 4b \n" \ " "__UA_ADDR "\t2b, 4b \n" \ " .previous \n" \ - : "=r" (ret), "=r" (oldval) \ - : "0" (0), "r" (uaddr), "Jr" (oparg), "i" (-EFAULT)); \ + : "=r" (ret), "=&r" (oldval), "=R" (*uaddr) \ + : "0" (0), "R" (*uaddr), "Jr" (oparg), "i" (-EFAULT) \ + : "memory"); \ } else \ ret = -ENOSYS; \ } @@ -89,23 +91,23 @@ switch (op) { case FUTEX_OP_SET: - __futex_atomic_op("move $1, %z4", ret, oldval, uaddr, oparg); + __futex_atomic_op("move $1, %z5", ret, oldval, uaddr, oparg); break; case FUTEX_OP_ADD: - __futex_atomic_op("addu $1, %1, %z4", + __futex_atomic_op("addu $1, %1, %z5", ret, oldval, uaddr, oparg); break; case FUTEX_OP_OR: - __futex_atomic_op("or $1, %1, %z4", + __futex_atomic_op("or $1, %1, %z5", ret, oldval, uaddr, oparg); break; case FUTEX_OP_ANDN: - __futex_atomic_op("and $1, %1, %z4", + __futex_atomic_op("and $1, %1, %z5", ret, oldval, uaddr, ~oparg); break; case FUTEX_OP_XOR: - __futex_atomic_op("xor $1, %1, %z4", + __futex_atomic_op("xor $1, %1, %z5", ret, oldval, uaddr, oparg); break; default: diff -Naur linux-2.6.17.4-kernel/include/asm-mips/hazards.h linux-2.6.17.4-mips/include/asm-mips/hazards.h --- linux-2.6.17.4-kernel/include/asm-mips/hazards.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/hazards.h 2006-07-06 16:58:16.000000000 -0700 @@ -70,10 +70,10 @@ * Use a macro for ehb unless explicit support for MIPSR2 is enabled */ -#define irq_enable_hazard +#define irq_enable_hazard \ _ehb -#define irq_disable_hazard +#define irq_disable_hazard \ _ehb #elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_RM9000) diff -Naur linux-2.6.17.4-kernel/include/asm-mips/io.h linux-2.6.17.4-mips/include/asm-mips/io.h --- linux-2.6.17.4-kernel/include/asm-mips/io.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/io.h 2006-07-06 16:58:16.000000000 -0700 @@ -519,34 +519,6 @@ } /* - * Memory Mapped I/O - */ -#define ioread8(addr) readb(addr) -#define ioread16(addr) readw(addr) -#define ioread32(addr) readl(addr) - -#define iowrite8(b,addr) writeb(b,addr) -#define iowrite16(w,addr) writew(w,addr) -#define iowrite32(l,addr) writel(l,addr) - -#define ioread8_rep(a,b,c) readsb(a,b,c) -#define ioread16_rep(a,b,c) readsw(a,b,c) -#define ioread32_rep(a,b,c) readsl(a,b,c) - -#define iowrite8_rep(a,b,c) writesb(a,b,c) -#define iowrite16_rep(a,b,c) writesw(a,b,c) -#define iowrite32_rep(a,b,c) writesl(a,b,c) - -/* Create a virtual mapping cookie for an IO port range */ -extern void __iomem *ioport_map(unsigned long port, unsigned int nr); -extern void ioport_unmap(void __iomem *); - -/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */ -struct pci_dev; -extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); -extern void pci_iounmap(struct pci_dev *dev, void __iomem *); - -/* * ISA space is 'always mapped' on currently supported MIPS systems, no need * to explicitly ioremap() it. The fact that the ISA IO space is mapped * to PAGE_OFFSET is pure coincidence - it does not mean ISA values diff -Naur linux-2.6.17.4-kernel/include/asm-mips/irq.h linux-2.6.17.4-mips/include/asm-mips/irq.h --- linux-2.6.17.4-kernel/include/asm-mips/irq.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/irq.h 2006-07-06 16:58:16.000000000 -0700 @@ -77,4 +77,8 @@ unsigned long hwmask); #endif /* CONFIG_MIPS_MT_SMTC */ +#ifdef CONFIG_SMP +#define ARCH_HAS_IRQ_PER_CPU +#endif + #endif /* _ASM_IRQ_H */ diff -Naur linux-2.6.17.4-kernel/include/asm-mips/mach-au1x00/au1xxx_ide.h linux-2.6.17.4-mips/include/asm-mips/mach-au1x00/au1xxx_ide.h --- linux-2.6.17.4-kernel/include/asm-mips/mach-au1x00/au1xxx_ide.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/mach-au1x00/au1xxx_ide.h 2006-07-06 16:58:16.000000000 -0700 @@ -84,6 +84,7 @@ } _auide_hwif; #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA + /* HD white list */ static const struct drive_list_entry dma_white_list [] = { /* diff -Naur linux-2.6.17.4-kernel/include/asm-mips/mach-mips/irq.h linux-2.6.17.4-mips/include/asm-mips/mach-mips/irq.h --- linux-2.6.17.4-kernel/include/asm-mips/mach-mips/irq.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/mach-mips/irq.h 2006-07-06 16:58:16.000000000 -0700 @@ -5,10 +5,4 @@ #define NR_IRQS 256 -#ifdef CONFIG_SMP - -#define ARCH_HAS_IRQ_PER_CPU - -#endif - #endif /* __ASM_MACH_MIPS_IRQ_H */ diff -Naur linux-2.6.17.4-kernel/include/asm-mips/mipsregs.h linux-2.6.17.4-mips/include/asm-mips/mipsregs.h --- linux-2.6.17.4-kernel/include/asm-mips/mipsregs.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/mipsregs.h 2006-07-06 16:58:16.000000000 -0700 @@ -1462,7 +1462,8 @@ static inline void __ehb(void) { __asm__ __volatile__( - " ehb \n"); + " .set mips32r2 \n" + " ehb \n" " .set mips0 \n"); } /* diff -Naur linux-2.6.17.4-kernel/include/asm-mips/smp.h linux-2.6.17.4-mips/include/asm-mips/smp.h --- linux-2.6.17.4-kernel/include/asm-mips/smp.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/smp.h 2006-07-06 16:58:16.000000000 -0700 @@ -114,4 +114,33 @@ #endif /* CONFIG_SMP */ +int smp_call_function(void(*func)(void *info), void *info, int retry, int wait); + +/* + * Special Variant of smp_call_function for use by cache functions: + * + * o No return value + * o collapses to normal function call on UP kernels + * o collapses to normal function call on systems with a single shared + * primary cache. + * o Both CONFIG_MIPS_MT_SMP and CONFIG_MIPS_MT_SMTC currently imply there + * is only one physical core. + */ +static inline void __on_other_cores(void (*func) (void *info), void *info) +{ +#if !defined(CONFIG_MIPS_MT_SMP) && !defined(CONFIG_MIPS_MT_SMTC) + smp_call_function(func, info, 1, 1); +#endif +} + +static inline void __on_each_core(void (*func) (void *info), void *info) +{ + preempt_disable(); + + __on_other_cores(func, info); + func(info); + + preempt_enable(); +} + #endif /* __ASM_SMP_H */ diff -Naur linux-2.6.17.4-kernel/include/asm-mips/stackframe.h linux-2.6.17.4-mips/include/asm-mips/stackframe.h --- linux-2.6.17.4-kernel/include/asm-mips/stackframe.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/stackframe.h 2006-07-06 16:58:16.000000000 -0700 @@ -305,7 +305,7 @@ mfc0 v0, CP0_TCSTATUS ori v0, TCSTATUS_IXMT mtc0 v0, CP0_TCSTATUS - ehb + _ehb DMT 5 # dmt a1 jal mips_ihb #endif /* CONFIG_MIPS_MT_SMTC */ @@ -326,14 +326,14 @@ * restore TCStatus.IXMT. */ LONG_L v1, PT_TCSTATUS(sp) - ehb + _ehb mfc0 v0, CP0_TCSTATUS andi v1, TCSTATUS_IXMT /* We know that TCStatua.IXMT should be set from above */ xori v0, v0, TCSTATUS_IXMT or v0, v0, v1 mtc0 v0, CP0_TCSTATUS - ehb + _ehb andi a1, a1, VPECONTROL_TE beqz a1, 1f emt @@ -412,7 +412,7 @@ /* Clear TKSU, leave IXMT */ xori t0, 0x00001800 mtc0 t0, CP0_TCSTATUS - ehb + _ehb /* We need to leave the global IE bit set, but clear EXL...*/ mfc0 t0, CP0_STATUS ori t0, ST0_EXL | ST0_ERL @@ -439,7 +439,7 @@ * and enable interrupts only for the * current TC, using the TCStatus register. */ - ehb + _ehb mfc0 t0,CP0_TCSTATUS /* Fortunately CU 0 is in the same place in both registers */ /* Set TCU0, TKSU (for later inversion) and IXMT */ @@ -448,7 +448,7 @@ /* Clear TKSU *and* IXMT */ xori t0, 0x00001c00 mtc0 t0, CP0_TCSTATUS - ehb + _ehb /* We need to leave the global IE bit set, but clear EXL...*/ mfc0 t0, CP0_STATUS ori t0, ST0_EXL @@ -480,7 +480,7 @@ andi v1, v0, TCSTATUS_IXMT ori v0, TCSTATUS_IXMT mtc0 v0, CP0_TCSTATUS - ehb + _ehb DMT 2 # dmt v0 /* * We don't know a priori if ra is "live" @@ -496,7 +496,7 @@ xori t0, 0x1e mtc0 t0, CP0_STATUS #ifdef CONFIG_MIPS_MT_SMTC - ehb + _ehb andi v0, v0, VPECONTROL_TE beqz v0, 2f nop /* delay slot */ diff -Naur linux-2.6.17.4-kernel/include/asm-mips/unistd.h linux-2.6.17.4-mips/include/asm-mips/unistd.h --- linux-2.6.17.4-kernel/include/asm-mips/unistd.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/asm-mips/unistd.h 2006-07-06 16:58:16.000000000 -0700 @@ -326,16 +326,17 @@ #define __NR_unshare (__NR_Linux + 303) #define __NR_splice (__NR_Linux + 304) #define __NR_sync_file_range (__NR_Linux + 305) +#define __NR_tee (__NR_Linux + 306) /* * Offset of the last Linux o32 flavoured syscall */ -#define __NR_Linux_syscalls 305 +#define __NR_Linux_syscalls 306 #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ #define __NR_O32_Linux 4000 -#define __NR_O32_Linux_syscalls 305 +#define __NR_O32_Linux_syscalls 306 #if _MIPS_SIM == _MIPS_SIM_ABI64 @@ -608,16 +609,17 @@ #define __NR_unshare (__NR_Linux + 262) #define __NR_splice (__NR_Linux + 263) #define __NR_sync_file_range (__NR_Linux + 264) +#define __NR_tee (__NR_Linux + 265) /* * Offset of the last Linux 64-bit flavoured syscall */ -#define __NR_Linux_syscalls 264 +#define __NR_Linux_syscalls 265 #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ #define __NR_64_Linux 5000 -#define __NR_64_Linux_syscalls 264 +#define __NR_64_Linux_syscalls 265 #if _MIPS_SIM == _MIPS_SIM_NABI32 @@ -894,16 +896,17 @@ #define __NR_unshare (__NR_Linux + 266) #define __NR_splice (__NR_Linux + 267) #define __NR_sync_file_range (__NR_Linux + 268) +#define __NR_tee (__NR_Linux + 269) /* * Offset of the last N32 flavoured syscall */ -#define __NR_Linux_syscalls 268 +#define __NR_Linux_syscalls 269 #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ #define __NR_N32_Linux 6000 -#define __NR_N32_Linux_syscalls 268 +#define __NR_N32_Linux_syscalls 269 #ifndef __ASSEMBLY__ diff -Naur linux-2.6.17.4-kernel/include/linux/elf.h linux-2.6.17.4-mips/include/linux/elf.h --- linux-2.6.17.4-kernel/include/linux/elf.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/linux/elf.h 2006-07-06 16:58:16.000000000 -0700 @@ -67,7 +67,7 @@ #define EM_MIPS 8 /* MIPS R3000 (officially, big-endian only) */ -#define EM_MIPS_RS4_BE 10 /* MIPS R4000 big-endian */ +#define EM_MIPS_RS3_LE 10 /* MIPS R3000 little-endian */ #define EM_PARISC 15 /* HPPA */ diff -Naur linux-2.6.17.4-kernel/include/linux/mc146818rtc.h linux-2.6.17.4-mips/include/linux/mc146818rtc.h --- linux-2.6.17.4-kernel/include/linux/mc146818rtc.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/linux/mc146818rtc.h 2006-07-06 16:58:16.000000000 -0700 @@ -89,4 +89,12 @@ # define RTC_VRT 0x80 /* valid RAM and time */ /**********************************************************************/ +#ifndef RTC_IO_EXTENT +#define RTC_IO_EXTENT 0x8 +#endif + +#ifndef RTC_IOMAPPED +#define RTC_IOMAPPED 1 /* Default to I/O mapping. */ +#endif + #endif /* _MC146818RTC_H */ diff -Naur linux-2.6.17.4-kernel/include/linux/pci_ids.h linux-2.6.17.4-mips/include/linux/pci_ids.h --- linux-2.6.17.4-kernel/include/linux/pci_ids.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/linux/pci_ids.h 2006-07-06 16:58:16.000000000 -0700 @@ -1569,6 +1569,9 @@ #define PCI_VENDOR_ID_SATSAGEM 0x1267 #define PCI_DEVICE_ID_SATSAGEM_NICCY 0x1016 +#define PCI_VENDOR_ID_SILICON_MOTION 0x126f +#define PCI_DEVICE_ID_SM501_VOYAGER_GX_REV_AA 0x0501 +#define PCI_DEVICE_ID_SM501_VOYAGER_GX_REV_B 0x0510 #define PCI_VENDOR_ID_ENSONIQ 0x1274 #define PCI_DEVICE_ID_ENSONIQ_CT5880 0x5880 diff -Naur linux-2.6.17.4-kernel/include/linux/serial.h linux-2.6.17.4-mips/include/linux/serial.h --- linux-2.6.17.4-kernel/include/linux/serial.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/linux/serial.h 2006-07-06 16:58:16.000000000 -0700 @@ -76,7 +76,8 @@ #define PORT_16654 11 #define PORT_16850 12 #define PORT_RSA 13 /* RSA-DV II/S card */ -#define PORT_MAX 13 +#define PORT_SB1250 14 +#define PORT_MAX 14 #define SERIAL_IO_PORT 0 #define SERIAL_IO_HUB6 1 diff -Naur linux-2.6.17.4-kernel/include/linux/serial_ip3106.h linux-2.6.17.4-mips/include/linux/serial_ip3106.h --- linux-2.6.17.4-kernel/include/linux/serial_ip3106.h 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/include/linux/serial_ip3106.h 2006-07-06 16:58:16.000000000 -0700 @@ -78,4 +78,16 @@ #define IP3106_UART_FIFO_RXFIFO 0x00001F00 #define IP3106_UART_FIFO_RBRTHR 0x000000FF +#define ip3106_lcr(base,port) *(volatile u32 *)(base+(port*0x1000) + 0x000) +#define ip3106_mcr(base, port) *(volatile u32 *)(base+(port*0x1000) + 0x004) +#define ip3106_baud(base, port) *(volatile u32 *)(base+(port*0x1000) + 0x008) +#define ip3106_cfg(base, port) *(volatile u32 *)(base+(port*0x1000) + 0x00C) +#define ip3106_fifo(base, port) *(volatile u32 *)(base+(port*0x1000) + 0x028) +#define ip3106_istat(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFE0) +#define ip3106_ien(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFE4) +#define ip3106_iclr(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFE8) +#define ip3106_iset(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFEC) +#define ip3106_pd(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFF4) +#define ip3106_mid(base, port) *(volatile u32 *)(base+(port*0x1000) + 0xFFC) + #endif diff -Naur linux-2.6.17.4-kernel/sound/oss/au1550_ac97.c linux-2.6.17.4-mips/sound/oss/au1550_ac97.c --- linux-2.6.17.4-kernel/sound/oss/au1550_ac97.c 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/sound/oss/au1550_ac97.c 2006-07-06 16:58:16.000000000 -0700 @@ -60,6 +60,7 @@ #include #include #include +#include #undef OSS_DOCUMENTED_MIXER_SEMANTICS diff -Naur linux-2.6.17.4-kernel/sound/oss/Kconfig linux-2.6.17.4-mips/sound/oss/Kconfig --- linux-2.6.17.4-kernel/sound/oss/Kconfig 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/sound/oss/Kconfig 2006-07-06 16:58:16.000000000 -0700 @@ -117,6 +117,10 @@ tristate "Au1550 AC97 Sound" depends on SOUND_PRIME && SOC_AU1550 +config SOUND_AU1550_I2S + tristate "Au1550 I2S Sound" + depends on SOUND_PRIME && SOC_AU1550 + config SOUND_TRIDENT tristate "Trident 4DWave DX/NX, SiS 7018 or ALi 5451 PCI Audio Core" depends on SOUND_PRIME && PCI diff -Naur linux-2.6.17.4-kernel/sound/oss/Makefile linux-2.6.17.4-mips/sound/oss/Makefile --- linux-2.6.17.4-kernel/sound/oss/Makefile 2006-07-06 13:02:28.000000000 -0700 +++ linux-2.6.17.4-mips/sound/oss/Makefile 2006-07-06 16:58:16.000000000 -0700 @@ -66,6 +66,7 @@ obj-$(CONFIG_SOUND_VRC5477) += nec_vrc5477.o ac97_codec.o obj-$(CONFIG_SOUND_AU1000) += au1000.o ac97_codec.o obj-$(CONFIG_SOUND_AU1550_AC97) += au1550_ac97.o ac97_codec.o +obj-$(CONFIG_SOUND_AU1550_I2S) += au1550_i2s.o obj-$(CONFIG_SOUND_ESSSOLO1) += esssolo1.o obj-$(CONFIG_SOUND_FUSION) += cs46xx.o ac97_codec.o obj-$(CONFIG_SOUND_MAESTRO) += maestro.o