## Automatically generated incremental diff
## From:   linux-2.4.22-bk60
## To:     linux-2.4.22-bk61
## Robot:  $Id: make-incremental-diff,v 1.11 2002/02/20 02:59:33 hpa Exp $

diff -urN linux-2.4.22-bk60/Documentation/Configure.help linux-2.4.22-bk61/Documentation/Configure.help
--- linux-2.4.22-bk60/Documentation/Configure.help	2003-11-25 02:49:57.000000000 -0800
+++ linux-2.4.22-bk61/Documentation/Configure.help	2003-11-25 02:50:10.000000000 -0800
@@ -27726,7 +27726,7 @@
 
 SH7751
 CONFIG_CPU_SUBTYPE_SH7751
-  Select SH7750 if you have a 166 Mhz SH-4 HD6417751 CPU.
+  Select SH7751 if you have a 166 Mhz SH-4 HD6417751 CPU.
 
 ST40RA/ST40STB1
 CONFIG_CPU_SUBTYPE_ST40STB1
diff -urN linux-2.4.22-bk60/Documentation/networking/bonding.txt linux-2.4.22-bk61/Documentation/networking/bonding.txt
--- linux-2.4.22-bk60/Documentation/networking/bonding.txt	2003-11-25 02:49:57.000000000 -0800
+++ linux-2.4.22-bk61/Documentation/networking/bonding.txt	2003-11-25 02:50:10.000000000 -0800
@@ -973,13 +973,12 @@
 You will also find a lot of information regarding Ethernet, NWay, MII, etc. at
 www.scyld.com.
 
-For new versions of the driver, patches for older kernels and the updated
-userspace tools, take a look at Willy Tarreau's site :
+Patches for 2.2 kernels are at Willy Tarreau's site :
  - http://wtarreau.free.fr/pub/bonding/
- - http://www-miaif.lip6.fr/willy/pub/bonding/
+ - http://www-miaif.lip6.fr/~tarreau/pub/bonding/
 
 To get latest informations about Linux Kernel development, please consult
 the Linux Kernel Mailing List Archives at :
-   http://boudicca.tux.org/hypermail/linux-kernel/latest/
+   http://www.ussg.iu.edu/hypermail/linux/kernel/
 
 -- END --
diff -urN linux-2.4.22-bk60/MAINTAINERS linux-2.4.22-bk61/MAINTAINERS
--- linux-2.4.22-bk60/MAINTAINERS	2003-11-25 02:49:57.000000000 -0800
+++ linux-2.4.22-bk61/MAINTAINERS	2003-11-25 02:50:10.000000000 -0800
@@ -1744,8 +1744,6 @@
 M:	lethal@linux-sh.org
 P:	Richard Curnow
 M:	richard.curnow@superh.com
-P:	Benedict Gaster
-M:	benedict.gaster@superh.com
 L:	linuxsh-shmedia-dev@lists.sourceforge.net
 W:	http://www.linux-sh.org
 W:	http://linux-shmedia.bkbits.net
diff -urN linux-2.4.22-bk60/Makefile linux-2.4.22-bk61/Makefile
--- linux-2.4.22-bk60/Makefile	2003-11-25 02:49:57.000000000 -0800
+++ linux-2.4.22-bk61/Makefile	2003-11-25 02:50:10.000000000 -0800
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 22
-EXTRAVERSION = -bk60
+EXTRAVERSION = -bk61
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
diff -urN linux-2.4.22-bk60/arch/sh/Makefile linux-2.4.22-bk61/arch/sh/Makefile
--- linux-2.4.22-bk60/arch/sh/Makefile	2003-11-25 02:49:58.000000000 -0800
+++ linux-2.4.22-bk61/arch/sh/Makefile	2003-11-25 02:50:11.000000000 -0800
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.1.1.1.2.4 2003/08/22 04:04:16 sugioka Exp $
+# $Id: Makefile,v 1.1.1.1.2.5 2003/10/23 22:08:56 yoshii Exp $
 #
 # This file is subject to the terms and conditions of the GNU General Public
 # License.  See the file "COPYING" in the main directory of this archive
@@ -24,6 +24,10 @@
 LDFLAGS		:= -EB
 endif
 
+ifdef CONFIG_SH_DSP
+AFLAGS += -Wa,-dsp
+endif
+
 ifdef CONFIG_SH_KGDB
 CFLAGS :=$(CFLAGS:-fomit-frame-pointer=) -g
 AFLAGS += -g
diff -urN linux-2.4.22-bk60/arch/sh/config.in linux-2.4.22-bk61/arch/sh/config.in
--- linux-2.4.22-bk60/arch/sh/config.in	2003-11-25 02:49:58.000000000 -0800
+++ linux-2.4.22-bk61/arch/sh/config.in	2003-11-25 02:50:11.000000000 -0800
@@ -177,6 +177,7 @@
 hex 'Link address offset for booting' CONFIG_BOOT_LINK_OFFSET 00210000
 
 dep_bool 'Enable OC RAM zone (experimental)' CONFIG_SCRATCH_SPACE $CONFIG_EXPERIMENTAL
+bool 'DSP mode support' CONFIG_SH_DSP
 
 if [ "$CONFIG_CPU_SUBTYPE_ST40" = "y" ]; then
    bool 'PCI emulation of on-chip peripherals' CONFIG_SH_PCI_EMULATION
diff -urN linux-2.4.22-bk60/arch/sh/kernel/entry.S linux-2.4.22-bk61/arch/sh/kernel/entry.S
--- linux-2.4.22-bk60/arch/sh/kernel/entry.S	2003-11-25 02:49:58.000000000 -0800
+++ linux-2.4.22-bk61/arch/sh/kernel/entry.S	2003-11-25 02:50:11.000000000 -0800
@@ -1,4 +1,4 @@
-/* $Id: entry.S,v 1.1.1.1.2.16 2003/07/16 18:41:20 yoshii Exp $
+/* $Id: entry.S,v 1.1.1.1.2.18 2003/10/23 22:08:56 yoshii Exp $
  *
  *  linux/arch/sh/entry.S
  *
@@ -561,6 +561,41 @@
 	lds.l	@r15+, mach
 	lds.l	@r15+, macl
 	add	#4, r15			! skip placeholder
+ 
+#ifdef CONFIG_SH_DSP
+	mov.l	@r15+, k0		! DSP mode marker
+	mov.l	5f, k1
+	cmp/eq	k0, k1			! Do we have a DSP stack frame?
+	bf	skip_restore
+
+	stc	sr, k0			! Enable CPU DSP mode
+	or	k1, k0			! (within kernel it may be disabled)
+	ldc	k0, sr
+	mov	r2, k0			! Backup r2
+
+	! Restore DSP registers from stack
+	mov	r15, r2
+	movs.l	@r2+, a1
+	movs.l	@r2+, a0g
+	movs.l	@r2+, a1g
+	movs.l	@r2+, m0
+	movs.l	@r2+, m1
+	mov	r2, r15
+
+	lds.l	@r15+, a0
+	lds.l	@r15+, x0
+	lds.l	@r15+, x1
+	lds.l	@r15+, y0
+	lds.l	@r15+, y1
+	lds.l	@r15+, dsr
+	ldc.l	@r15+, rs
+	ldc.l	@r15+, re
+	ldc.l	@r15+, mod
+
+	mov	k0, r2			! Restore r2
+skip_restore:
+#endif
+
 	!
 	!
 	! Calculate new SR value
@@ -602,6 +637,7 @@
 #if defined(CONFIG_KGDB_NMI)
 4:	.long	SYMBOL_NAME(in_nmi)
 #endif
+5:	.long	0x00001000	! DSP
 
 
 ! Exception Vector Base
@@ -678,6 +714,41 @@
 	!
 9:	mov.l	3f, k1
 	!
+#ifdef CONFIG_SH_DSP
+	mov.l	r2, @-r15		! Save r2, we need another reg
+	stc	sr, k4
+	mov.l	4f, r2
+	tst	r2, k4			! Check if in DSP mode
+	mov.l	@r15+, r2		! Restore r2 now
+	bt/s	skip_save
+	 mov	#0, k4			! Set marker for no stack frame
+
+	mov	r2, k4			! Backup r2 (in k4) for later
+
+	! Save DSP registers on stack
+	stc.l	mod, @-r15
+	stc.l	re, @-r15
+	stc.l	rs, @-r15
+	sts.l	dsr, @-r15
+	sts.l	y1, @-r15
+	sts.l	y0, @-r15
+	sts.l	x1, @-r15
+	sts.l	x0, @-r15
+	sts.l	a0, @-r15
+	mov     r15, r2
+	movs.l	a1, @-r2
+	movs.l	a0g, @-r2
+	movs.l	a1g, @-r2
+	movs.l	m0, @-r2
+	movs.l	m1, @-r2
+	mov	r2, r15
+
+	mov	k4, r2			! Restore r2
+	mov.l	4f, k4			! Force DSP stack frame
+skip_save:
+	mov.l	k4, @-r15		! Push DSP mode marker onto stack
+#endif
+
 	! Save the user registers on the stack.
 	mov.l	k2, @-r15	! EXPEVT
 	add	#-4, r15	! placeholder
@@ -726,6 +797,7 @@
 	.align	2
 1:	.long	SYMBOL_NAME(exception_handling_table)
 3:	.long	0x000000f0	! FD=0, IMASK=15
+4:	.long	0x00001000	! DSP bit set
 5:	.long	0xcfffffff	! RB=0, BL=0
 6:	.long	0x00080000	! SZ=0, PR=1
 
diff -urN linux-2.4.22-bk60/arch/sh/kernel/irq.c linux-2.4.22-bk61/arch/sh/kernel/irq.c
--- linux-2.4.22-bk60/arch/sh/kernel/irq.c	2001-09-08 12:29:09.000000000 -0700
+++ linux-2.4.22-bk61/arch/sh/kernel/irq.c	2003-11-25 02:50:11.000000000 -0800
@@ -246,7 +246,7 @@
 	   REPLAY is when Linux resends an IRQ that was dropped earlier
 	   WAITING is used by probe to mark irqs that are being tested
 	   */
-	status = desc->status & ~(IRQ_REPLAY | IRQ_WAITING);
+	status = desc->status & ~(IRQ_REPLAY | IRQ_WAITING | IRQ_INPROGRESS);
 	status |= IRQ_PENDING; /* we _want_ to handle it */
 
 	/*
diff -urN linux-2.4.22-bk60/arch/sh/kernel/ptrace.c linux-2.4.22-bk61/arch/sh/kernel/ptrace.c
--- linux-2.4.22-bk60/arch/sh/kernel/ptrace.c	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.22-bk61/arch/sh/kernel/ptrace.c	2003-11-25 02:50:11.000000000 -0800
@@ -1,4 +1,4 @@
-/* $Id: ptrace.c,v 1.1.1.1.2.1 2002/11/12 02:24:19 jzs Exp $
+/* $Id: ptrace.c,v 1.1.1.1.2.3 2003/10/23 22:11:08 yoshii Exp $
  *
  * linux/arch/sh/kernel/ptrace.c
  *
@@ -350,6 +350,37 @@
 		break;
 	}
 
+#ifdef CONFIG_SH_DSP
+	case PTRACE_GETDSPREGS: {
+		unsigned long dp;
+
+		ret = -EIO;
+		dp = ((unsigned long) child) + THREAD_SIZE -
+			 sizeof(struct pt_dspregs);
+		if (*((int *) (dp - 4)) == SR_DSP) {
+			copy_to_user(addr, (void *) dp,
+				sizeof(struct pt_dspregs));
+			ret = 0;
+		}
+		break;
+	}
+
+	case PTRACE_SETDSPREGS: {
+		unsigned long dp;
+		int i;
+
+		ret = -EIO;
+		dp = ((unsigned long) child) + THREAD_SIZE -
+			 sizeof(struct pt_dspregs);
+		if (*((int *) (dp - 4)) == SR_DSP) {
+			copy_from_user((void *) dp, addr,
+				sizeof(struct pt_dspregs));
+			ret = 0;
+		}
+		break;
+	}
+#endif
+
 	default:
 		ret = -EIO;
 		break;
diff -urN linux-2.4.22-bk60/arch/sh/kernel/traps.c linux-2.4.22-bk61/arch/sh/kernel/traps.c
--- linux-2.4.22-bk60/arch/sh/kernel/traps.c	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.22-bk61/arch/sh/kernel/traps.c	2003-11-25 02:50:11.000000000 -0800
@@ -1,4 +1,4 @@
-/* $Id: traps.c,v 1.1.1.1.2.4 2002/05/10 17:58:54 jzs Exp $
+/* $Id: traps.c,v 1.1.1.1.2.5 2003/10/23 22:08:56 yoshii Exp $
  *
  *  linux/arch/sh/traps.c
  *
@@ -52,6 +52,13 @@
 { \
 	unsigned long error_code; \
  \
+	/* Check if it's a DSP instruction */ \
+ 	if (is_dsp_inst(&regs)) { \
+		/* Enable DSP mode, and restart instruction. */ \
+		regs.sr |= SR_DSP; \
+		return; \
+	} \
+ \
 	asm volatile("stc	r2_bank, %0": "=r" (error_code)); \
 	sti(); \
 	tsk->thread.error_code = error_code; \
@@ -527,6 +534,28 @@
 	}
 }
 
+#ifdef CONFIG_SH_DSP
+/*
+ *	SH-DSP support gerg@snapgear.com.
+ */
+int is_dsp_inst(struct pt_regs *regs)
+{
+	unsigned short inst;
+
+	get_user(inst, ((unsigned short *) regs->pc));
+
+	inst &= 0xf000;
+
+	/* Check for any type of DSP or support instruction */
+	if ((inst == 0xf000) || (inst == 0x4000))
+		return 1;
+
+	return 0;
+}
+#else
+#define is_dsp_inst(regs)	(0)
+#endif /* CONFIG_SH_DSP */
+
 DO_ERROR(12, SIGILL,  "reserved instruction", reserved_inst, current)
 DO_ERROR(13, SIGILL,  "illegal slot instruction", illegal_slot_inst, current)
 
diff -urN linux-2.4.22-bk60/arch/sh64/boot/compressed/head.S linux-2.4.22-bk61/arch/sh64/boot/compressed/head.S
--- linux-2.4.22-bk60/arch/sh64/boot/compressed/head.S	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.22-bk61/arch/sh64/boot/compressed/head.S	2003-11-25 02:50:11.000000000 -0800
@@ -18,6 +18,7 @@
 #include <asm/registers.h>
 #include <asm/cache.h>
 #include <asm/mmu_context.h>
+#include <asm/tlb.h>
 
 /*
  * Fixed TLB entries to identity map the beginning of RAM
diff -urN linux-2.4.22-bk60/arch/sh64/defconfig linux-2.4.22-bk61/arch/sh64/defconfig
--- linux-2.4.22-bk60/arch/sh64/defconfig	2003-11-25 02:49:58.000000000 -0800
+++ linux-2.4.22-bk61/arch/sh64/defconfig	2003-11-25 02:50:12.000000000 -0800
@@ -94,6 +94,7 @@
 # CONFIG_BLK_CPQ_DA is not set
 # CONFIG_BLK_CPQ_CISS_DA is not set
 # CONFIG_CISS_SCSI_TAPE is not set
+# CONFIG_CISS_MONITOR_THREAD is not set
 # CONFIG_BLK_DEV_DAC960 is not set
 # CONFIG_BLK_DEV_UMEM is not set
 CONFIG_BLK_DEV_LOOP=y
@@ -126,6 +127,12 @@
 # CONFIG_SYN_COOKIES is not set
 # CONFIG_IPV6 is not set
 # CONFIG_KHTTPD is not set
+
+#
+#    SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
 # CONFIG_ATM is not set
 # CONFIG_VLAN_8021Q is not set
 
@@ -208,6 +215,7 @@
 # CONFIG_AMD8111_ETH is not set
 # CONFIG_ADAPTEC_STARFIRE is not set
 # CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
 # CONFIG_CS89x0 is not set
 CONFIG_TULIP=y
 # CONFIG_TULIP_MWI is not set
@@ -235,7 +243,6 @@
 # CONFIG_SUNDANCE is not set
 # CONFIG_SUNDANCE_MMIO is not set
 # CONFIG_TLAN is not set
-# CONFIG_TC35815 is not set
 # CONFIG_VIA_RHINE is not set
 # CONFIG_VIA_RHINE_MMIO is not set
 # CONFIG_WINBOND_840 is not set
@@ -472,6 +479,11 @@
 # CONFIG_USB is not set
 
 #
+# Support for USB gadgets
+#
+# CONFIG_USB_GADGET is not set
+
+#
 # Kernel hacking
 #
 # CONFIG_MAGIC_SYSRQ is not set
diff -urN linux-2.4.22-bk60/arch/sh64/kernel/irq.c linux-2.4.22-bk61/arch/sh64/kernel/irq.c
--- linux-2.4.22-bk60/arch/sh64/kernel/irq.c	2003-08-25 04:44:40.000000000 -0700
+++ linux-2.4.22-bk61/arch/sh64/kernel/irq.c	2003-11-25 02:50:12.000000000 -0800
@@ -301,7 +301,7 @@
 	   REPLAY is when Linux resends an IRQ that was dropped earlier
 	   WAITING is used by probe to mark irqs that are being tested
 	   */
-	status = desc->status & ~(IRQ_REPLAY | IRQ_WAITING);
+	status = desc->status & ~(IRQ_REPLAY | IRQ_WAITING | IRQ_INPROGRESS);
 	status |= IRQ_PENDING; /* we _want_ to handle it */
 
 	/*
diff -urN linux-2.4.22-bk60/drivers/ide/Makefile linux-2.4.22-bk61/drivers/ide/Makefile
--- linux-2.4.22-bk60/drivers/ide/Makefile	2003-11-25 02:49:59.000000000 -0800
+++ linux-2.4.22-bk61/drivers/ide/Makefile	2003-11-25 02:50:19.000000000 -0800
@@ -9,7 +9,7 @@
 #
 
 
-export-objs := ide-iops.o ide-taskfile.o ide-proc.o ide.o ide-probe.o ide-dma.o ide-lib.o setup-pci.o ide-io.o ide-disk.o
+export-objs := ide-iops.o ide-taskfile.o ide-proc.o ide.o ide-probe.o ide-probe-mini.o ide-dma.o ide-lib.o setup-pci.o ide-io.o ide-disk.o
 
 all-subdirs	:= arm legacy pci ppc raid
 mod-subdirs	:= arm legacy pci ppc raid
@@ -28,9 +28,8 @@
 
 # Core IDE code - must come before legacy
 
-ide-core-objs	:= ide-iops.o ide-taskfile.o ide.o ide-lib.o ide-io.o ide-default.o ide-proc.o
-ide-detect-objs	:= ide-probe.o ide-geometry.o
-
+ide-core-objs	:= ide-iops.o ide-taskfile.o ide.o ide-lib.o ide-io.o ide-default.o ide-proc.o ide-probe.o ide-geometry.o
+ide-detect-objs	:= ide-probe-mini.o
 
 ifeq ($(CONFIG_BLK_DEV_IDEPCI),y)
 ide-core-objs += setup-pci.o
diff -urN linux-2.4.22-bk60/drivers/ide/ide-probe-mini.c linux-2.4.22-bk61/drivers/ide/ide-probe-mini.c
--- linux-2.4.22-bk60/drivers/ide/ide-probe-mini.c	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.22-bk61/drivers/ide/ide-probe-mini.c	2003-11-25 02:50:19.000000000 -0800
@@ -0,0 +1,29 @@
+/*
+ *  linux/drivers/ide/ide-probe-mini.c	Version 1
+ *
+ *  Copyright (C) 1994-1998  Linus Torvalds & authors (see below)
+ */
+
+#include <linux/config.h>
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/string.h>
+#include <linux/kernel.h>
+#include <linux/kmod.h>
+
+#ifdef MODULE
+extern int ideprobe_init_module(void);
+
+int init_module (void)
+{
+    return ideprobe_init_module();
+}
+
+extern void ideprobe_cleanup_module(void);
+
+void cleanup_module (void)
+{
+    ideprobe_cleanup_module();
+}
+MODULE_LICENSE("GPL");
+#endif /* MODULE */
diff -urN linux-2.4.22-bk60/drivers/ide/ide-probe.c linux-2.4.22-bk61/drivers/ide/ide-probe.c
--- linux-2.4.22-bk60/drivers/ide/ide-probe.c	2003-11-25 02:49:59.000000000 -0800
+++ linux-2.4.22-bk61/drivers/ide/ide-probe.c	2003-11-25 02:50:19.000000000 -0800
@@ -1416,22 +1416,30 @@
 #ifdef MODULE
 extern int (*ide_xlate_1024_hook)(kdev_t, int, int, const char *);
 
-int init_module (void)
+static int ideprobe_done = 0;
+
+int ideprobe_init_module (void)
 {
 	unsigned int index;
+
+	if (ideprobe_done)
+    		return -EBUSY;
 	
 	for (index = 0; index < MAX_HWIFS; ++index)
 		ide_unregister(index);
 	ideprobe_init();
 	create_proc_ide_interfaces();
 	ide_xlate_1024_hook = ide_xlate_1024;
+	ideprobe_done++;
 	return 0;
 }
 
-void cleanup_module (void)
+void ideprobe_cleanup_module (void)
 {
 	ide_probe = NULL;
 	ide_xlate_1024_hook = 0;
 }
+EXPORT_SYMBOL(ideprobe_init_module);
+EXPORT_SYMBOL(ideprobe_cleanup_module);
 MODULE_LICENSE("GPL");
 #endif /* MODULE */
diff -urN linux-2.4.22-bk60/include/asm-sh/processor.h linux-2.4.22-bk61/include/asm-sh/processor.h
--- linux-2.4.22-bk60/include/asm-sh/processor.h	2003-11-25 02:50:05.000000000 -0800
+++ linux-2.4.22-bk61/include/asm-sh/processor.h	2003-11-25 02:50:31.000000000 -0800
@@ -68,6 +68,7 @@
  *     Interrupt level mask
  */
 #define SR_FD    0x00008000
+#define SR_DSP   0x00001000
 #define SR_IMASK 0x000000f0
 
 /*
diff -urN linux-2.4.22-bk60/include/asm-sh/ptrace.h linux-2.4.22-bk61/include/asm-sh/ptrace.h
--- linux-2.4.22-bk60/include/asm-sh/ptrace.h	2003-08-25 04:44:44.000000000 -0700
+++ linux-2.4.22-bk61/include/asm-sh/ptrace.h	2003-11-25 02:50:31.000000000 -0800
@@ -65,6 +65,30 @@
 	unsigned long dummy;
 };
 
+/*
+ * This struct defines the way the DSP registers are stored on the
+ * kernel stack during a system call or other kernel entry.
+ */
+struct pt_dspregs {
+	unsigned long	a1;
+	unsigned long	a0g;
+	unsigned long	a1g;
+	unsigned long	m0;
+	unsigned long	m1;
+	unsigned long	a0;
+	unsigned long	x0;
+	unsigned long	x1;
+	unsigned long	y0;
+	unsigned long	y1;
+	unsigned long	dsr;
+	unsigned long	rs;
+	unsigned long	re;
+	unsigned long	mod;
+};
+
+#define	PTRACE_GETDSPREGS	55
+#define	PTRACE_SETDSPREGS	56
+
 #ifdef __KERNEL__
 #define user_mode(regs) (((regs)->sr & 0x40000000)==0)
 #define instruction_pointer(regs) ((regs)->pc)
