diff -ur linux/Documentation/Configure.help linux-sh-cvs/Documentation/Configure.help
--- linux/Documentation/Configure.help	Fri Dec 21 12:41:53 2001
+++ linux-sh-cvs/Documentation/Configure.help	Thu Jan 24 05:15:29 2002
@@ -10180,6 +10180,12 @@
   instead of an internal one.  Disabling this option will save some
   memory by making the code size smaller.  If unsure, say Y.
 
+Support for Dreamcast Broad Band Adaptor
+CONFIG_8139TOO_DREAMCAST
+  This enables support for the SEGA Broad Band Adaptor for Dreamcast.
+  It uses 16KB buffer and doesn't support mapping main memory to DMA.
+  If unsure, say N.
+ 
 SiS 900/7016 PCI Fast Ethernet Adapter support
 CONFIG_SIS900
   This is a driver for the Fast Ethernet PCI network cards based on
@@ -24081,6 +24087,17 @@
   <http://www.m17n.org/linux-sh/dreamcast/>.  There is a
   Dreamcast project is at <http://linuxdc.sourceforge.net/>.
 
+# Remove overdrive
+# Add SH7751 STB1_Harp, CAT68701, BigSur, ADX
+
+SH-2000
+CONFIG_SH_SH2000
+  SH-2000 is a single-board computer based around SH7709A chip
+  intended for embedded applications.
+  It has an Ethernet interface (CS8900A), direct connected
+  Compact Flash socket, three serial ports and PC-104 bus.
+  More information at <http://sh2000.sh-linux.org>.
+
 BareCPU
 CONFIG_SH_UNKNOWN
   "Bare CPU" aka "unknown" means an SH-based system which is not one
@@ -24124,6 +24141,14 @@
 CONFIG_CPU_SUBTYPE_SH7750
   Select SH7750 if you have a 200 Mhz SH-4 HD6417750 CPU.
 
+SH7751
+CONFIG_CPU_SUBTYPE_SH7751
+  Select SH7750 if you have a 166 Mhz SH-4 HD6417751 CPU.
+
+ST40STB1
+CONFIG_CPU_SUBTYPE_ST40STB1
+  Select ST40STB1 if you have a ST40STB1 CPU.
+
 Physical memory start address
 CONFIG_MEMORY_START
   Computers built with Hitachi SuperH processors always
@@ -24188,7 +24213,7 @@
   The default setting of the HD64465 IO base address is 0xb0000000.
 
   Do not change this unless you know what you are doing.
-  
+
 Early printk support
 CONFIG_SH_EARLY_PRINTK
   Say Y here to redirect kernel printk messages to the serial port
diff -ur linux/Documentation/cachetlb.txt linux-sh-cvs/Documentation/cachetlb.txt
--- linux/Documentation/cachetlb.txt	Fri Dec 21 12:41:53 2001
+++ linux-sh-cvs/Documentation/cachetlb.txt	Thu Jan 24 05:15:32 2002
@@ -222,7 +222,7 @@
 this value.
 
 NOTE: This does not fix shared mmaps, check out the sparc64 port for
-one way to solve this (in particular SPARC_FLAG_MMAPSHARED).
+one way to solve this (in particular arch_get_unmapped_area).
 
 Next, you have two methods to solve the D-cache aliasing issue for all
 other cases.  Please keep in mind that fact that, for a given page
diff -ur linux/Makefile linux-sh-cvs/Makefile
--- linux/Makefile	Fri Dec 21 12:41:53 2001
+++ linux-sh-cvs/Makefile	Thu Jan 24 05:15:28 2002
@@ -184,6 +184,7 @@
 DRIVERS-$(CONFIG_MD) += drivers/md/mddev.o
 DRIVERS-$(CONFIG_BLUEZ) += drivers/bluetooth/bluetooth.o
 DRIVERS-$(CONFIG_HOTPLUG_PCI) += drivers/hotplug/vmlinux-obj.o
+DRIVERS-$(CONFIG_MAPLE) += drivers/maple/maplebus.o
 
 DRIVERS := $(DRIVERS-y)
 
diff -ur linux/arch/sh/Makefile linux-sh-cvs/arch/sh/Makefile
--- linux/arch/sh/Makefile	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/Makefile	Tue Oct 16 15:39:50 2001
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.6 2000/06/10 03:03:52 gniibe Exp $
+# $Id: Makefile,v 1.1.1.1.2.1 2001/10/16 19:39:50 mrbrown 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
diff -ur linux/arch/sh/config.in linux-sh-cvs/arch/sh/config.in
--- linux/arch/sh/config.in	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/config.in	Fri Nov  2 19:52:47 2001
@@ -189,7 +189,7 @@
    if [ "$CONFIG_PCI_GODIRECT" = "y" -o "$CONFIG_PCI_GOANY" = "y" ]; then
       define_bool CONFIG_PCI_DIRECT y
    fi
-   define_bool CONFIG_SH_PCIDMA_NONCOHERENT n
+   bool 'Cache and PCI noncoherent' CONFIG_SH_PCIDMA_NONCOHERENT n
 fi
 
 source drivers/pci/Config.in
diff -ur linux/arch/sh/kernel/cf-enabler.c linux-sh-cvs/arch/sh/kernel/cf-enabler.c
--- linux/arch/sh/kernel/cf-enabler.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/cf-enabler.c	Mon Oct 15 16:44:47 2001
@@ -1,4 +1,4 @@
-/* $Id: cf-enabler.c,v 1.8 2001/07/18 12:32:21 gniibe Exp $
+/* $Id: cf-enabler.c,v 1.1.1.1 2001/10/15 20:44:47 mrbrown Exp $
  *
  *  linux/drivers/block/cf-enabler.c
  *
diff -ur linux/arch/sh/kernel/entry.S linux-sh-cvs/arch/sh/kernel/entry.S
--- linux/arch/sh/kernel/entry.S	Mon Oct  8 13:39:18 2001
+++ linux-sh-cvs/arch/sh/kernel/entry.S	Thu Jan 24 19:51:42 2002
@@ -1,4 +1,4 @@
-/* $Id: entry.S,v 1.71 2001/07/27 11:47:50 gniibe Exp $
+/* $Id: entry.S,v 1.1.1.1.2.1 2002/01/25 00:51:42 gniibe Exp $
  *
  *  linux/arch/sh/entry.S
  *
@@ -66,7 +66,6 @@
 tsk_ptrace	= 24
 
 PT_TRACESYS  = 0x00000002
-PF_USEDFPU   = 0x00100000
 
 ENOSYS = 38
 EINVAL = 22
@@ -567,12 +566,6 @@
 
 	.align 2
 restore_all:
-#if defined(__SH4__)
-	mov.l	__fpu_prepare_fd, r0
-	jsr	@r0
-	 stc	sr, r4
-#endif
-	!
 	mov.l	@r15+, r0
 	mov.l	@r15+, r1
 	mov.l	@r15+, r2
@@ -585,7 +578,7 @@
 	stc	sr, r8
 	mov.l	__blrb_flags, r9	! BL =1, RB=1
 	or	r9, r8
-	ldc	r8, sr		! here, change the register bank
+	ldc	r8, sr			! here, change the register bank
 	!
 	mov.l	@r15+, r8
 	mov.l	@r15+, r9
@@ -594,25 +587,25 @@
 	mov.l	@r15+, r12
 	mov.l	@r15+, r13
 	mov.l	@r15+, r14
-	mov.l	@r15+, k4	! original stack pointer
+	mov.l	@r15+, k4		! original stack pointer
 	ldc.l	@r15+, spc
 	lds.l	@r15+, pr
-	mov.l	@r15+, k3	! original SR
+	mov.l	@r15+, k3		! original SR
 	ldc.l	@r15+, gbr
 	lds.l	@r15+, mach
 	lds.l	@r15+, macl
-	add	#4, r15	! Skip syscall number
+	add	#4, r15			! Skip syscall number
 	!
 	! Calculate new SR value
-	mov	k3, k2	! original SR value
+	mov	k3, k2			! original SR value
 	mov.l	1f, k1
 	stc	sr, k0
-	and	k1, k0	! Get current FD-bit
+	and	k1, k0			! Get current FD-bit
 	mov.l	2f, k1
-	and	k1, k2	! Mask orignal SR value
-	or	k0, k2	! Inherit current FD-bit
+	and	k1, k2			! Mask orignal SR value
+	or	k0, k2			! Inherit current FD-bit
 	!
-	mov	k3, k0	! Calculate IMASK-bits
+	mov	k3, k0			! Calculate IMASK-bits
 	shlr2	k0
 	and	#0x3c, k0
 	cmp/eq	#0x3c, k0
@@ -620,69 +613,15 @@
 	 shll2	k0
 	mov	g_imask, k0
 	!
-7:	or	k0, k2	! Set the IMASK-bits
+7:	or	k0, k2			! Set the IMASK-bits
 	ldc	k2, ssr
 	!
-#if defined(__SH4__)
-	shll	k2
-	shll	k2
-	bf	9f		! user mode
-	/* Kernel to kernel transition */
-	mov.l	1f, k1
-	tst	k1, k3
-	bf	9f		! it hadn't FPU
-	! Kernel to kernel and FPU was used
-	! There's the case we don't get FPU now
-	stc	sr, k2
-	tst	k1, k2
-	bt	8f
-	! We need to grab FPU here
-	xor	k1, k2
-	ldc	k2, sr		! Grab FPU
-	mov.l	__init_task_flags, k1
-	mov.l	@k1, k2
-	mov.l	__PF_USEDFPU, k0
-	or	k0, k2
-	mov.l	k2, @k1		! Set init_task.flags |= PF_USEDFPU
-	!
-	! Restoring FPU...
-	!
-8:	mov.l	3f, k1
-	lds	k1, fpscr
-	fmov.s	@r15+, fr0
-	fmov.s	@r15+, fr1
-	fmov.s	@r15+, fr2
-	fmov.s	@r15+, fr3
-	fmov.s	@r15+, fr4
-	fmov.s	@r15+, fr5
-	fmov.s	@r15+, fr6
-	fmov.s	@r15+, fr7
-	fmov.s	@r15+, fr8
-	fmov.s	@r15+, fr9
-	fmov.s	@r15+, fr10
-	fmov.s	@r15+, fr11
-	fmov.s	@r15+, fr12
-	fmov.s	@r15+, fr13
-	fmov.s	@r15+, fr14
-	fmov.s	@r15+, fr15
-	lds.l	@r15+, fpscr
-	lds.l	@r15+, fpul
-9:
-#endif
 	mov	k4, r15
 	rte
 	 nop
 
 	.align	2
 __blrb_flags:	.long	0x30000000
-#if defined(__SH4__)
-__fpu_prepare_fd:
-	.long	SYMBOL_NAME(fpu_prepare_fd)
-__init_task_flags:
-	.long	SYMBOL_NAME(init_task_union)+4
-__PF_USEDFPU:
-	.long	PF_USEDFPU
-#endif
 1:	.long	0x00008000	! FD
 2:	.long	0xffff7f0f	! ~(IMASK+FD)
 3:	.long	0x00080000	! SZ=0, PR=1
@@ -732,61 +671,21 @@
 	! Using k0, k1 for scratch registers (r0_bank1, r1_bank),
 	! save all registers onto stack.
 	!
-	stc	ssr, k0	! from kernel space?
-	shll	k0		! Check MD bit (bit30) by shifting it into the T bit
-	shll	k0
-#if defined(__SH4__)
-	bf/s	8f		! it's from user to kernel transition
-	 mov	r15, k0	! save original stack to k0
-	/* It's a kernel to kernel transition. */
-	/* Is the FPU disabled? */
-	mov.l	2f, k1
-	stc	ssr, k0
-	tst	k1, k0
-	mov.l	4f, k1
-	bf/s	9f		! FPU is not enabled, no need to save it
-	 mov	r15, k0	! save original stack to k0
-	! FPU is enabled, save it
-	! /* XXX: Need to save another bank of FPU if all FPU feature is used */
-	! /* Currently it's not the case for GCC (only udivsi3_i4, divsi3_i4) */
-	sts.l	fpul,  @-r15
-	sts.l	fpscr, @-r15
-	mov.l	6f, k1
-	lds	k1, fpscr
-	mov.l	3f, k1
-	fmov.s	fr15, @-r15
-	fmov.s	fr14, @-r15
-	fmov.s	fr13, @-r15
-	fmov.s	fr12, @-r15
-	fmov.s	fr11, @-r15
-	fmov.s	fr10, @-r15
-	fmov.s	fr9, @-r15
-	fmov.s	fr8, @-r15
-	fmov.s	fr7, @-r15
-	fmov.s	fr6, @-r15
-	fmov.s	fr5, @-r15
-	fmov.s	fr4, @-r15
-	fmov.s	fr3, @-r15
-	fmov.s	fr2, @-r15
-	fmov.s	fr1, @-r15
-	bra 9f
-	 fmov.s	fr0, @-r15
-#else
-	mov.l	3f, k1
-	bt/s	9f		! it's a kernel to kernel transition, and skip the FPU save.
-	 mov	r15, k0	! save original stack to k0 anyway
-#endif
-8:	/* User space to kernel */
+	stc	ssr, k0		! Is it from kernel space?
+	shll	k0		! Check MD bit (bit30) by shifting it into...
+	shll	k0		!       ...the T bit
+	bt/s	9f		! It's a kernel to kernel transition.
+	 mov	r15, k0		! save original stack to k0
+	/* User space to kernel */
 	mov	#0x20, k1
-	shll8	k1			! k1 <= 8192 == THREAD_SIZE
+	shll8	k1		! k1 <= 8192 == THREAD_SIZE
 	add	current, k1
 	mov	k1, r15		! change to kernel stack
 	!
-	mov.l	4f, k1			! let kernel release FPU
-9:	! Save the user registers on the stack.
-	! At this point, k1 should have been set to the new SR value
-  	mov	#-1, k4
-	mov.l	k4, @-r15		! syscall_nr (default: -1)
+9:  	mov	#-1, k4
+	mov.l	3f, k1
+	! Save the user registers on the stack.
+	mov.l	k4, @-r15	! syscall_nr (default: -1)
 	!
 	sts.l	macl, @-r15
 	sts.l	mach, @-r15
@@ -806,11 +705,11 @@
 	mov.l	r9, @-r15
 	mov.l	r8, @-r15
 	!
-	stc	sr, r8	! Back to normal register bank, and
-	or	k1, r8	! Block all interrupts, may release FPU
+	stc	sr, r8		! Back to normal register bank, and
+	or	k1, r8		! Block all interrupts
 	mov.l	5f, k1
-	and	k1, r8	! ...
-	ldc	r8, sr	! ...changed here.
+	and	k1, r8		! ...
+	ldc	r8, sr		! ...changed here.
 	!
 	mov.l	r7, @-r15
 	mov.l	r6, @-r15
@@ -831,9 +730,7 @@
 	 nop
 	.align	2
 1:	.long	SYMBOL_NAME(exception_handling_table)
-2:	.long	0x00008000	! FD=1
 3:	.long	0x000000f0	! FD=0, IMASK=15
-4:	.long	0x000080f0	! FD=1, IMASK=15
 5:	.long	0xcfffffff	! RB=0, BL=0
 6:	.long	0x00080000	! SZ=0, PR=1
 
diff -ur linux/arch/sh/kernel/fpu.c linux-sh-cvs/arch/sh/kernel/fpu.c
--- linux/arch/sh/kernel/fpu.c	Sun Jan 28 21:56:00 2001
+++ linux-sh-cvs/arch/sh/kernel/fpu.c	Thu Jan 24 19:51:42 2002
@@ -1,4 +1,4 @@
-/* $Id: fpu.c,v 1.29 2000/03/22 13:42:10 gniibe Exp $
+/* $Id: fpu.c,v 1.1.1.1.2.1 2002/01/25 00:51:42 gniibe Exp $
  *
  * linux/arch/sh/kernel/fpu.c
  *
@@ -18,6 +18,10 @@
 #include <asm/processor.h>
 #include <asm/io.h>
 
+/*
+ * Save FPU registers onto task structure.
+ * Assume called with FPU enabled (SR.FD=0).
+ */
 void
 save_fpu(struct task_struct *tsk)
 {
@@ -118,7 +122,8 @@
  * double precission represents signaling NANS.  
  */
 
-void fpu_init(void)
+static void
+fpu_init(void)
 {
 	asm volatile("lds	%0, fpul\n\t"
 		     "lds	%1, fpscr\n\t"
@@ -160,15 +165,125 @@
 		     : "r" (0), "r" (FPSCR_INIT));
 }
 
+/**
+ *	denormal_to_double - Given denormalized float number,
+ *	                     store double float
+ *
+ *	@fpu: Pointer to sh_fpu_hard structure
+ *	@n: Index to FP register
+ */
+static void
+denormal_to_double (struct sh_fpu_hard_struct *fpu, int n)
+{
+	unsigned long du, dl;
+	unsigned long x = fpu->fpul;
+	int exp = 1023 - 126;
+
+	if (x != 0 && (x & 0x7f800000) == 0) {
+		du = (x & 0x80000000);
+		while ((x & 0x00800000) == 0) {
+			x <<= 1;
+			exp--;
+		}
+		x &= 0x007fffff;
+		du |= (exp << 20) | (x >> 3);
+		dl = x << 29;
+
+		fpu->fp_regs[n] = du;
+		fpu->fp_regs[n+1] = dl;
+	}
+}
+
+/**
+ *	ieee_fpe_handler - Handle denormalized number exception
+ *
+ *	@regs: Pointer to register structure
+ *
+ *	Returns 1 when it's handled (should not cause exception).
+ */
+static int
+ieee_fpe_handler (struct pt_regs *regs)
+{
+	unsigned short insn = *(unsigned short *) regs->pc;
+	unsigned short finsn;
+	unsigned long nextpc;
+	int nib[4] = {
+		(insn >> 12) & 0xf,
+		(insn >> 8) & 0xf,
+		(insn >> 4) & 0xf,
+		insn & 0xf};
+
+	if (nib[0] == 0xb ||
+	    (nib[0] == 0x4 && nib[2] == 0x0 && nib[3] == 0xb)) /* bsr & jsr */
+		regs->pr = regs->pc + 4;
+  
+	if (nib[0] == 0xa || nib[0] == 0xb) { /* bra & bsr */
+		nextpc = regs->pc + 4 + ((short) ((insn & 0xfff) << 4) >> 3);
+		finsn = *(unsigned short *) (regs->pc + 2);
+	} else if (nib[0] == 0x8 && nib[1] == 0xd) { /* bt/s */
+		if (regs->sr & 1)
+			nextpc = regs->pc + 4 + ((char) (insn & 0xff) << 1);
+		else
+			nextpc = regs->pc + 4;
+		finsn = *(unsigned short *) (regs->pc + 2);
+	} else if (nib[0] == 0x8 && nib[1] == 0xf) { /* bf/s */
+		if (regs->sr & 1)
+			nextpc = regs->pc + 4;
+		else
+			nextpc = regs->pc + 4 + ((char) (insn & 0xff) << 1);
+		finsn = *(unsigned short *) (regs->pc + 2);
+	} else if (nib[0] == 0x4 && nib[3] == 0xb &&
+		 (nib[2] == 0x0 || nib[2] == 0x2)) { /* jmp & jsr */
+		nextpc = regs->regs[nib[1]];
+		finsn = *(unsigned short *) (regs->pc + 2);
+	} else if (nib[0] == 0x0 && nib[3] == 0x3 &&
+		 (nib[2] == 0x0 || nib[2] == 0x2)) { /* braf & bsrf */
+		nextpc = regs->pc + 4 + regs->regs[nib[1]];
+		finsn = *(unsigned short *) (regs->pc + 2);
+	} else if (insn == 0x000b) { /* rts */
+		nextpc = regs->pr;
+		finsn = *(unsigned short *) (regs->pc + 2);
+	} else {
+		nextpc = regs->pc + 2;
+		finsn = insn;
+	}
+
+	if ((finsn & 0xf1ff) == 0xf0ad) { /* fcnvsd */
+		struct task_struct *tsk = current;
+
+		save_fpu(tsk);
+		if ((tsk->thread.fpu.hard.fpscr & (1 << 17))) {
+			/* FPU error */
+			denormal_to_double (&tsk->thread.fpu.hard,
+					    (finsn >> 8) & 0xf);
+			tsk->thread.fpu.hard.fpscr &=
+				~(FPSCR_CAUSE_MASK | FPSCR_FLAG_MASK);
+			grab_fpu();
+			restore_fpu(tsk);
+			tsk->flags |= PF_USEDFPU;
+		} else {
+			tsk->thread.trap_no = 11;
+			tsk->thread.error_code = 0;
+			force_sig(SIGFPE, tsk);
+		}
+
+		regs->pc = nextpc;
+		return 1;
+	}
+
+	return 0;
+}
+
 asmlinkage void
 do_fpu_error(unsigned long r4, unsigned long r5, unsigned long r6, unsigned long r7,
 	     struct pt_regs regs)
 {
 	struct task_struct *tsk = current;
 
-	regs.pc += 2;
+	if (ieee_fpe_handler (&regs))
+		return;
 
-	grab_fpu();
+	regs.pc += 2;
 	save_fpu(tsk);
 	tsk->thread.trap_no = 11;
 	tsk->thread.error_code = 0;
@@ -181,102 +296,12 @@
 {
 	struct task_struct *tsk = current;
 
-	if (!user_mode(&regs)) {
-		if (tsk != &init_task) {
-			unlazy_fpu(tsk);
-		}
-		tsk = &init_task;
-		if (tsk->flags & PF_USEDFPU) {
-			/*
-			 * This weird situation can be occurred.
-			 *
-			 * There's race condition in __cli:
-			 *
-			 *   (1) SR --> register
-			 *   (2) Set IMASK of register
-			 *   (3) SR <-- register
-			 *
-			 * Between (1) and (2), or (2) and (3) getting
-			 * interrupt, and interrupt handler (or
-			 * softirq) may use FPU.
-			 *
-			 * Then, SR.FD is overwritten by (3).
-			 *
-			 * This results init_task.PF_USEDFPU is on,
-			 * with SR.FD == 1.
-			 *
-			 */
-			release_fpu();
-			return;
-		}
-	}
-
 	grab_fpu();
-	if (tsk->used_math) {
-		/* Using the FPU again.  */
-		restore_fpu(tsk);
-	} else	{
-		/* First time FPU user.  */
-		fpu_init();
-		tsk->used_math = 1;
-	}
-	tsk->flags |= PF_USEDFPU;
-	release_fpu();
-}
-
-/*
- * Change current FD flag to set FD flag back to exception
- */
-asmlinkage void
-fpu_prepare_fd(unsigned long sr, unsigned long r5, unsigned long r6,
-	       unsigned long r7, struct pt_regs regs)
-{
-	__cli();
 	if (!user_mode(&regs)) {
-		if (init_task.flags & PF_USEDFPU)
-			grab_fpu();
-		else {
-			if (!(sr & SR_FD)) {
-				BUG();
-				release_fpu();
-			}
-		}
+		printk(KERN_ERR "BUG: FPU is used in kernel mode.\n");
 		return;
 	}
 
-	if (sr & SR_FD) { /* Kernel doesn't grab FPU */
-		if (current->flags & PF_USEDFPU)
-			grab_fpu();
-		else {
-			if (init_task.flags & PF_USEDFPU) {
-				/*
-				 * This weird situation can be occurred.
-				 * See the comment in do_fpu_state_restore.
-				 */
-				grab_fpu();
-				save_fpu(&init_task);
-			}
-		}
-	} else {
-		if (init_task.flags & PF_USEDFPU)
-			save_fpu(&init_task);
-		else {
-			BUG();
-			release_fpu();
-		}
-	}
-}
-
-/* Short cut for the FPU exception */
-asmlinkage void
-enable_fpu_in_danger(void)
-{
-	struct task_struct *tsk = current;
-
-	if (tsk != &init_task)
-		unlazy_fpu(tsk);
-
-	tsk = &init_task;
 	if (tsk->used_math) {
 		/* Using the FPU again.  */
 		restore_fpu(tsk);
diff -ur linux/arch/sh/kernel/hd64465_gpio.c linux-sh-cvs/arch/sh/kernel/hd64465_gpio.c
--- linux/arch/sh/kernel/hd64465_gpio.c	Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/arch/sh/kernel/hd64465_gpio.c	Mon Oct 15 16:44:48 2001
@@ -1,5 +1,5 @@
 /*
- * $Id: hd64465_gpio.c,v 1.2 2001/05/24 00:13:47 gniibe Exp $
+ * $Id: hd64465_gpio.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
  * by Greg Banks <gbanks@pocketpenguins.com>
  * (c) 2000 PocketPenguins Inc
  *
diff -ur linux/arch/sh/kernel/head.S linux-sh-cvs/arch/sh/kernel/head.S
--- linux/arch/sh/kernel/head.S	Sun Jan 28 21:56:00 2001
+++ linux-sh-cvs/arch/sh/kernel/head.S	Thu Jan 24 19:51:42 2002
@@ -1,4 +1,4 @@
-/* $Id: head.S,v 1.17 2000/03/06 12:44:24 gniibe Exp $
+/* $Id: head.S,v 1.1.1.1.2.1 2002/01/25 00:51:42 gniibe Exp $
  *
  *  arch/sh/kernel/head.S
  *
@@ -50,12 +50,6 @@
 	sub	r1, r0		!
 	ldc	r0, r7_bank	! ... and init_task
 	!
-#if defined(__SH4__)
-	!                       Initialize fpu
-	mov.l   7f, r0
-	jsr     @r0
-	 nop
-#endif
 	!			Enable cache
 	mov.l	6f, r0
 	jsr	@r0
@@ -74,12 +68,9 @@
 	 nop
 
 	.balign 4
-1:	.long	0x400000F0		! MD=1, RB=0, BL=0, FD=0, IMASK=0xF
+1:	.long	0x400080F0		! MD=1, RB=0, BL=0, FD=1, IMASK=0xF
 2:	.long	SYMBOL_NAME(stack)
 3:	.long	SYMBOL_NAME(__bss_start)
 4:	.long	SYMBOL_NAME(_end)
 5:	.long	SYMBOL_NAME(start_kernel)
 6:	.long	SYMBOL_NAME(cache_init)
-#if defined(__SH4__)
-7:	.long   SYMBOL_NAME(fpu_init)
-#endif
diff -ur linux/arch/sh/kernel/io_7751se.c linux-sh-cvs/arch/sh/kernel/io_7751se.c
--- linux/arch/sh/kernel/io_7751se.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/io_7751se.c	Fri Nov  2 19:52:47 2001
@@ -17,7 +17,7 @@
 #include <asm/hitachi_7751se.h>
 #include <asm/addrspace.h>
 
-#include <asm/pci.h>
+#include <linux/pci.h>
 #include <asm/pci-sh7751.h>
 
 #if 0
@@ -70,7 +70,7 @@
 	else
 		return (volatile __u16 *) (PA_SUPERIO + (port << 1));
 #endif
-	maybebadio(name,port);
+	maybebadio(name,(unsigned long)port);
 	return (volatile __u16*)port;
 }
 
@@ -276,6 +276,7 @@
 /* ISA page descriptor.  */
 static __u32 sh_isa_memmap[256];
 
+#if 0
 static int
 sh_isa_mmap(__u32 start, __u32 length, __u32 offset)
 {
@@ -286,12 +287,11 @@
 
 	idx = start >> 12;
 	sh_isa_memmap[idx] = 0xb8000000 + (offset &~ 0xfff);
-#if 0
 	printk("sh_isa_mmap: start %x len %x offset %x (idx %x paddr %x)\n",
 	       start, length, offset, idx, sh_isa_memmap[idx]);
-#endif
 	return 0;
 }
+#endif
 
 unsigned long
 sh7751se_isa_port2addr(unsigned long offset)
diff -ur linux/arch/sh/kernel/io_dc.c linux-sh-cvs/arch/sh/kernel/io_dc.c
--- linux/arch/sh/kernel/io_dc.c	Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/arch/sh/kernel/io_dc.c	Mon Oct 15 16:44:48 2001
@@ -1,5 +1,5 @@
 /*
- *	$Id: io_dc.c,v 1.2 2001/05/24 00:13:47 gniibe Exp $
+ *	$Id: io_dc.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
  *	I/O routines for SEGA Dreamcast
  */
 
diff -ur linux/arch/sh/kernel/io_generic.c linux-sh-cvs/arch/sh/kernel/io_generic.c
--- linux/arch/sh/kernel/io_generic.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/io_generic.c	Mon Oct 15 16:44:48 2001
@@ -1,4 +1,4 @@
-/* $Id: io_generic.c,v 1.12 2000/11/14 16:45:11 sugioka Exp $
+/* $Id: io_generic.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
  *
  * linux/arch/sh/kernel/io_generic.c
  *
diff -ur linux/arch/sh/kernel/io_hd64461.c linux-sh-cvs/arch/sh/kernel/io_hd64461.c
--- linux/arch/sh/kernel/io_hd64461.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/io_hd64461.c	Mon Oct 15 16:44:48 2001
@@ -1,5 +1,5 @@
 /*
- *	$Id: io_hd64461.c,v 1.6 2000/11/16 23:28:44 yaegashi Exp $
+ *	$Id: io_hd64461.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
  *	Copyright (C) 2000 YAEGASHI Takeshi
  *	Typical I/O routines for HD64461 system.
  */
diff -ur linux/arch/sh/kernel/io_hd64465.c linux-sh-cvs/arch/sh/kernel/io_hd64465.c
--- linux/arch/sh/kernel/io_hd64465.c	Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/arch/sh/kernel/io_hd64465.c	Mon Oct 15 16:44:48 2001
@@ -1,5 +1,5 @@
 /*
- * $Id: io_hd64465.c,v 1.7 2001/05/09 07:39:36 gniibe Exp $
+ * $Id: io_hd64465.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
  * by Greg Banks <gbanks@pocketpenguins.com>
  * (c) 2000 PocketPenguins Inc
  *
diff -ur linux/arch/sh/kernel/io_se.c linux-sh-cvs/arch/sh/kernel/io_se.c
--- linux/arch/sh/kernel/io_se.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/io_se.c	Mon Oct 15 16:44:48 2001
@@ -1,4 +1,4 @@
-/* $Id: io_se.c,v 1.12 2001/08/11 01:23:28 jzs Exp $
+/* $Id: io_se.c,v 1.1.1.1 2001/10/15 20:44:48 mrbrown Exp $
  *
  * linux/arch/sh/kernel/io_se.c
  *
diff -ur linux/arch/sh/kernel/irq.c linux-sh-cvs/arch/sh/kernel/irq.c
--- linux/arch/sh/kernel/irq.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/irq.c	Mon Oct 15 16:44:49 2001
@@ -1,4 +1,4 @@
-/* $Id: irq.c,v 1.21 2001/07/17 02:26:53 gniibe Exp $
+/* $Id: irq.c,v 1.1.1.1 2001/10/15 20:44:49 mrbrown Exp $
  *
  * linux/arch/sh/kernel/irq.c
  *
diff -ur linux/arch/sh/kernel/irq_imask.c linux-sh-cvs/arch/sh/kernel/irq_imask.c
--- linux/arch/sh/kernel/irq_imask.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/irq_imask.c	Mon Oct 15 16:44:49 2001
@@ -1,4 +1,4 @@
-/* $Id: irq_imask.c,v 1.13 2001/07/12 08:13:56 gniibe Exp $
+/* $Id: irq_imask.c,v 1.1.1.1 2001/10/15 20:44:49 mrbrown Exp $
  *
  * linux/arch/sh/kernel/irq_imask.c
  *
diff -ur linux/arch/sh/kernel/irq_ipr.c linux-sh-cvs/arch/sh/kernel/irq_ipr.c
--- linux/arch/sh/kernel/irq_ipr.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/irq_ipr.c	Mon Oct 15 16:44:49 2001
@@ -1,4 +1,4 @@
-/* $Id: irq_ipr.c,v 1.20 2001/07/15 23:26:56 gniibe Exp $
+/* $Id: irq_ipr.c,v 1.1.1.1 2001/10/15 20:44:49 mrbrown Exp $
  *
  * linux/arch/sh/kernel/irq_ipr.c
  *
diff -ur linux/arch/sh/kernel/mach_dc.c linux-sh-cvs/arch/sh/kernel/mach_dc.c
--- linux/arch/sh/kernel/mach_dc.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/mach_dc.c	Mon Oct 15 16:44:49 2001
@@ -1,5 +1,5 @@
 /*
- *	$Id: mach_dc.c,v 1.5 2001/09/01 14:34:31 mrbrown Exp $
+ *	$Id: mach_dc.c,v 1.1.1.1 2001/10/15 20:44:49 mrbrown Exp $
  *	SEGA Dreamcast machine vector
  */
 
diff -ur linux/arch/sh/kernel/pci-7751se.c linux-sh-cvs/arch/sh/kernel/pci-7751se.c
--- linux/arch/sh/kernel/pci-7751se.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/pci-7751se.c	Fri Nov  2 19:52:47 2001
@@ -37,7 +37,6 @@
  */
 int __init pcibios_init_platform(void)
 {
-   unsigned long data;
    unsigned long bcr1, wcr1, wcr2, wcr3, mcr;
    unsigned short bcr2;
 
diff -ur linux/arch/sh/kernel/pci-dc.c linux-sh-cvs/arch/sh/kernel/pci-dc.c
--- linux/arch/sh/kernel/pci-dc.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/pci-dc.c	Mon Oct 15 16:44:49 2001
@@ -1,5 +1,5 @@
 /*
- $	$Id: pci-dc.c,v 1.5 2001/08/24 12:38:19 dwmw2 Exp $
+ $	$Id: pci-dc.c,v 1.1.1.1 2001/10/15 20:44:49 mrbrown Exp $
  *	Dreamcast PCI: Supports SEGA Broadband Adaptor only.
  */
 
diff -ur linux/arch/sh/kernel/pcibios.c linux-sh-cvs/arch/sh/kernel/pcibios.c
--- linux/arch/sh/kernel/pcibios.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/pcibios.c	Mon Oct 15 16:44:53 2001
@@ -1,5 +1,5 @@
 /*
- * $Id: pcibios.c,v 1.1 2001/08/24 12:38:19 dwmw2 Exp $
+ * $Id: pcibios.c,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * arch/sh/kernel/pcibios.c
  *
diff -ur linux/arch/sh/kernel/process.c linux-sh-cvs/arch/sh/kernel/process.c
--- linux/arch/sh/kernel/process.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/process.c	Mon Oct 15 16:44:51 2001
@@ -1,4 +1,4 @@
-/* $Id: process.c,v 1.35 2001/10/11 09:18:17 gniibe Exp $
+/* $Id: process.c,v 1.1.1.1 2001/10/15 20:44:51 mrbrown Exp $
  *
  *  linux/arch/sh/kernel/process.c
  *
diff -ur linux/arch/sh/kernel/ptrace.c linux-sh-cvs/arch/sh/kernel/ptrace.c
--- linux/arch/sh/kernel/ptrace.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/ptrace.c	Mon Oct 15 16:44:51 2001
@@ -1,4 +1,4 @@
-/* $Id: ptrace.c,v 1.13 2001/10/01 02:21:50 gniibe Exp $
+/* $Id: ptrace.c,v 1.1.1.1 2001/10/15 20:44:51 mrbrown Exp $
  *
  * linux/arch/sh/kernel/ptrace.c
  *
diff -ur linux/arch/sh/kernel/rtc.c linux-sh-cvs/arch/sh/kernel/rtc.c
--- linux/arch/sh/kernel/rtc.c	Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/arch/sh/kernel/rtc.c	Tue Dec 11 23:34:02 2001
@@ -46,7 +46,7 @@
 	} while ((ctrl_inb(RCR1) & RCR1_CF) != 0);
 
 #if RTC_BIT_INVERTED != 0
-	/* Work around to avoid reading correct value. */
+	/* Work around to avoid reading incorrect value. */
 	if (sec128 == RTC_BIT_INVERTED) {
 		schedule_timeout(1);
 		goto again;
@@ -81,12 +81,18 @@
 		goto again;
 	}
 
+#if RTC_BIT_INVERTED != 0
+	if ((sec128 & RTC_BIT_INVERTED))
+		sec--;
+#endif
+
 	tv->tv_sec = mktime(yr100 * 100 + yr, mon, day, hr, min, sec);
-	tv->tv_usec = ((sec128 ^ RTC_BIT_INVERTED) * 1000000) / 128;
+	tv->tv_usec = (sec128 * 1000000) / 128;
 }
 
-static int set_rtc_time(unsigned long nowtime)
+int sh_rtc_settimeofday(const struct timeval *tv)
 {
+	unsigned long nowtime = tv->tv_sec;
 	int retval = 0;
 	int real_seconds, real_minutes, cmos_minutes;
 
@@ -123,12 +129,3 @@
 
 	return retval;
 }
-
-int sh_rtc_settimeofday(const struct timeval *tv)
-{
-#if RTC_BIT_INVERTED != 0
-	/* This is not accurate, but better than nothing. */
-	schedule_timeout(HZ/2);
-#endif
-	return set_rtc_time(tv->tv_sec);
-}
diff -ur linux/arch/sh/kernel/setup.c linux-sh-cvs/arch/sh/kernel/setup.c
--- linux/arch/sh/kernel/setup.c	Fri Nov 16 21:38:39 2001
+++ linux-sh-cvs/arch/sh/kernel/setup.c	Fri Nov 30 18:03:33 2001
@@ -1,4 +1,4 @@
-/* $Id: setup.c,v 1.31 2001/08/23 16:36:40 dwmw2 Exp $
+/* $Id: setup.c,v 1.1.1.1.2.1 2001/11/30 23:03:33 jzs Exp $
  *
  *  linux/arch/sh/kernel/setup.c
  *
diff -ur linux/arch/sh/kernel/setup_cqreek.c linux-sh-cvs/arch/sh/kernel/setup_cqreek.c
--- linux/arch/sh/kernel/setup_cqreek.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/setup_cqreek.c	Mon Oct 15 16:44:51 2001
@@ -1,4 +1,4 @@
-/* $Id: setup_cqreek.c,v 1.9 2001/07/30 12:43:28 gniibe Exp $
+/* $Id: setup_cqreek.c,v 1.1.1.1 2001/10/15 20:44:51 mrbrown Exp $
  *
  * arch/sh/kernel/setup_cqreek.c
  *
diff -ur linux/arch/sh/kernel/setup_hd64461.c linux-sh-cvs/arch/sh/kernel/setup_hd64461.c
--- linux/arch/sh/kernel/setup_hd64461.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/setup_hd64461.c	Mon Oct 15 16:44:52 2001
@@ -1,5 +1,5 @@
 /*
- *	$Id: setup_hd64461.c,v 1.9 2001/07/15 23:26:56 gniibe Exp $
+ *	$Id: setup_hd64461.c,v 1.1.1.1 2001/10/15 20:44:52 mrbrown Exp $
  *	Copyright (C) 2000 YAEGASHI Takeshi
  *	Hitachi HD64461 companion chip support
  */
diff -ur linux/arch/sh/kernel/setup_hd64465.c linux-sh-cvs/arch/sh/kernel/setup_hd64465.c
--- linux/arch/sh/kernel/setup_hd64465.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/setup_hd64465.c	Mon Oct 15 16:44:52 2001
@@ -1,5 +1,5 @@
 /*
- * $Id: setup_hd64465.c,v 1.4 2001/07/15 23:26:56 gniibe Exp $
+ * $Id: setup_hd64465.c,v 1.1.1.1 2001/10/15 20:44:52 mrbrown Exp $
  *
  * Setup and IRQ handling code for the HD64465 companion chip.
  * by Greg Banks <gbanks@pocketpenguins.com>
diff -ur linux/arch/sh/kernel/setup_se.c linux-sh-cvs/arch/sh/kernel/setup_se.c
--- linux/arch/sh/kernel/setup_se.c	Wed Aug  9 16:59:04 2000
+++ linux-sh-cvs/arch/sh/kernel/setup_se.c	Tue Oct 16 15:39:50 2001
@@ -1,4 +1,4 @@
-/* $Id: setup_se.c,v 1.6 2000/05/14 08:41:25 gniibe Exp $
+/* $Id: setup_se.c,v 1.1.1.1.2.1 2001/10/16 19:39:50 mrbrown Exp $
  *
  * linux/arch/sh/kernel/setup_se.c
  *
diff -ur linux/arch/sh/kernel/sh_bios.c linux-sh-cvs/arch/sh/kernel/sh_bios.c
--- linux/arch/sh/kernel/sh_bios.c	Sun Jan 28 21:56:00 2001
+++ linux-sh-cvs/arch/sh/kernel/sh_bios.c	Mon Oct 15 16:44:52 2001
@@ -1,4 +1,4 @@
-/* $Id: sh_bios.c,v 1.5 2001/01/08 08:42:32 gniibe Exp $
+/* $Id: sh_bios.c,v 1.1.1.1 2001/10/15 20:44:52 mrbrown Exp $
  *
  *  linux/arch/sh/kernel/sh_bios.c
  *  C interface for trapping into the standard LinuxSH BIOS.
diff -ur linux/arch/sh/kernel/signal.c linux-sh-cvs/arch/sh/kernel/signal.c
--- linux/arch/sh/kernel/signal.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/kernel/signal.c	Mon Oct 15 16:44:52 2001
@@ -1,4 +1,4 @@
-/* $Id: signal.c,v 1.21 2000/03/11 14:06:21 gniibe Exp $
+/* $Id: signal.c,v 1.1.1.1 2001/10/15 20:44:52 mrbrown Exp $
  *
  *  linux/arch/sh/kernel/signal.c
  *
diff -ur linux/arch/sh/kernel/time.c linux-sh-cvs/arch/sh/kernel/time.c
--- linux/arch/sh/kernel/time.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/time.c	Mon Oct 15 16:44:50 2001
@@ -1,4 +1,4 @@
-/* $Id: time.c,v 1.30 2001/09/01 14:34:31 mrbrown Exp $
+/* $Id: time.c,v 1.1.1.1 2001/10/15 20:44:50 mrbrown Exp $
  *
  *  linux/arch/sh/kernel/time.c
  *
diff -ur linux/arch/sh/kernel/traps.c linux-sh-cvs/arch/sh/kernel/traps.c
--- linux/arch/sh/kernel/traps.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/kernel/traps.c	Wed Dec 26 14:29:05 2001
@@ -1,4 +1,4 @@
-/* $Id: traps.c,v 1.14 2001/07/24 08:07:10 gniibe Exp $
+/* $Id: traps.c,v 1.1.1.1.2.2 2001/12/26 19:29:05 jzs Exp $
  *
  *  linux/arch/sh/traps.c
  *
@@ -300,10 +300,19 @@
 /*
  * handle an instruction that does an unaligned memory access
  * - have to be careful of branch delay-slot instructions that fault
+ *  SH3:
  *   - if the branch would be taken PC points to the branch
  *   - if the branch would not be taken, PC points to delay-slot
+ *  SH4:
+ *   - PC always points to delayed branch
  * - return 0 if handled, -EFAULT if failed (may not return if in kernel)
  */
+
+/* Macros to determine offset from current PC for branch instructions */
+/* Explicit type coercion is used to force sign extension where needed */
+#define SH_PC_8BIT_OFFSET(instr) ((((signed char)(instr))*2) + 4)
+#define SH_PC_12BIT_OFFSET(instr) ((((signed short)(instr<<4))>>3) + 4)
+
 static int handle_unaligned_access(u16 instruction, struct pt_regs *regs)
 {
 	u_int rm;
@@ -392,15 +401,27 @@
 			break;
 		case 0x0F00: /* bf/s lab */
 			ret = handle_unaligned_delayslot(regs);
-			if (ret==0)
-				regs->pc += (instruction&0x00FF)*2 + 4;
+			if (ret==0) {
+#if defined(__SH4__)
+				if ((regs->sr & 0x00000001) != 0)
+					regs->pc += 4; /* next after slot */
+				else
+#endif
+					regs->pc += SH_PC_8BIT_OFFSET(instruction);
+			}
 			break;
 		case 0x0900: /* bt   lab - no delayslot */
 			break;
 		case 0x0D00: /* bt/s lab */
 			ret = handle_unaligned_delayslot(regs);
-			if (ret==0)
-				regs->pc += (instruction&0x00FF)*2 + 4;
+			if (ret==0) {
+#if defined(__SH4__)
+				if ((regs->sr & 0x00000001) == 0)
+					regs->pc += 4; /* next after slot */
+				else
+#endif
+					regs->pc += SH_PC_8BIT_OFFSET(instruction);
+			}
 			break;
 		}
 		break;
@@ -408,14 +429,14 @@
 	case 0xA000: /* bra label */
 		ret = handle_unaligned_delayslot(regs);
 		if (ret==0)
-			regs->pc += (instruction&0x0FFF)*2 + 4;
+			regs->pc += SH_PC_12BIT_OFFSET(instruction);
 		break;
 
 	case 0xB000: /* bsr label */
 		ret = handle_unaligned_delayslot(regs);
 		if (ret==0) {
 			regs->pr = regs->pc + 4;
-			regs->pc += (instruction&0x0FFF)*2 + 4;
+			regs->pc += SH_PC_12BIT_OFFSET(instruction);
 		}
 		break;
 	}
@@ -560,3 +581,8 @@
 		}
 	}
 }
+
+void show_trace_task(struct task_struct *tsk)
+{
+	printk("Backtrace not yet implemented for SH.\n");
+}
diff -ur linux/arch/sh/lib/checksum.S linux-sh-cvs/arch/sh/lib/checksum.S
--- linux/arch/sh/lib/checksum.S	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/lib/checksum.S	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: checksum.S,v 1.10 2001/07/06 13:11:32 gniibe Exp $
+/* $Id: checksum.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * INET		An implementation of the TCP/IP protocol suite for the LINUX
  *		operating system.  INET is implemented using the  BSD Socket
diff -ur linux/arch/sh/lib/memchr.S linux-sh-cvs/arch/sh/lib/memchr.S
--- linux/arch/sh/lib/memchr.S	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/lib/memchr.S	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: memchr.S,v 1.1 2000/04/14 16:49:01 mjd Exp $
+/* $Id: memchr.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * "memchr" implementation of SuperH
  *
diff -ur linux/arch/sh/lib/memcpy.S linux-sh-cvs/arch/sh/lib/memcpy.S
--- linux/arch/sh/lib/memcpy.S	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/lib/memcpy.S	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: memcpy.S,v 1.3 2001/07/27 11:50:52 gniibe Exp $
+/* $Id: memcpy.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * "memcpy" implementation of SuperH
  *
diff -ur linux/arch/sh/lib/memmove.S linux-sh-cvs/arch/sh/lib/memmove.S
--- linux/arch/sh/lib/memmove.S	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/lib/memmove.S	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: memmove.S,v 1.2 2001/07/27 11:51:09 gniibe Exp $
+/* $Id: memmove.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * "memmove" implementation of SuperH
  *
diff -ur linux/arch/sh/lib/memset.S linux-sh-cvs/arch/sh/lib/memset.S
--- linux/arch/sh/lib/memset.S	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/lib/memset.S	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: memset.S,v 1.1 2000/04/14 16:49:01 mjd Exp $
+/* $Id: memset.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * "memset" implementation of SuperH
  *
diff -ur linux/arch/sh/lib/strlen.S linux-sh-cvs/arch/sh/lib/strlen.S
--- linux/arch/sh/lib/strlen.S	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/lib/strlen.S	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: strlen.S,v 1.2 2001/06/29 14:07:15 gniibe Exp $
+/* $Id: strlen.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * "strlen" implementation of SuperH
  *
diff -ur linux/arch/sh/mm/__clear_user_page-sh4.S linux-sh-cvs/arch/sh/mm/__clear_user_page-sh4.S
--- linux/arch/sh/mm/__clear_user_page-sh4.S	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/__clear_user_page-sh4.S	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id$
+/* $Id: __clear_user_page-sh4.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * __clear_user_page implementation of SuperH
  *
diff -ur linux/arch/sh/mm/__copy_user_page-sh4.S linux-sh-cvs/arch/sh/mm/__copy_user_page-sh4.S
--- linux/arch/sh/mm/__copy_user_page-sh4.S	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/__copy_user_page-sh4.S	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: __copy_user_page-sh4.S,v 1.1 2001/07/23 09:02:17 gniibe Exp $
+/* $Id: __copy_user_page-sh4.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * __copy_user_page implementation of SuperH
  *
diff -ur linux/arch/sh/mm/cache-sh3.c linux-sh-cvs/arch/sh/mm/cache-sh3.c
--- linux/arch/sh/mm/cache-sh3.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/mm/cache-sh3.c	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: cache-sh3.c,v 1.6 2001/09/10 08:59:59 dwmw2 Exp $
+/* $Id: cache-sh3.c,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  *  linux/arch/sh/mm/cache-sh3.c
  *
diff -ur linux/arch/sh/mm/cache-sh4.c linux-sh-cvs/arch/sh/mm/cache-sh4.c
--- linux/arch/sh/mm/cache-sh4.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/mm/cache-sh4.c	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: cache-sh4.c,v 1.16 2001/09/10 11:06:35 dwmw2 Exp $
+/* $Id: cache-sh4.c,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  *  linux/arch/sh/mm/cache.c
  *
diff -ur linux/arch/sh/mm/clear_page.S linux-sh-cvs/arch/sh/mm/clear_page.S
--- linux/arch/sh/mm/clear_page.S	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/clear_page.S	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: clear_page.S,v 1.1 2001/07/23 10:08:50 gniibe Exp $
+/* $Id: clear_page.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * clear_page implementation of SuperH
  *
diff -ur linux/arch/sh/mm/copy_page.S linux-sh-cvs/arch/sh/mm/copy_page.S
--- linux/arch/sh/mm/copy_page.S	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/copy_page.S	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: copy_page.S,v 1.2 2001/07/23 10:27:25 gniibe Exp $
+/* $Id: copy_page.S,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * copy_page implementation of SuperH
  *
diff -ur linux/arch/sh/mm/extable.c linux-sh-cvs/arch/sh/mm/extable.c
--- linux/arch/sh/mm/extable.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/extable.c	Mon Oct 15 16:44:53 2001
@@ -1,4 +1,4 @@
-/* $Id: extable.c,v 1.2 2001/03/31 10:43:18 gniibe Exp $
+/* $Id: extable.c,v 1.1.1.1 2001/10/15 20:44:53 mrbrown Exp $
  *
  * linux/arch/sh/mm/extable.c
  *  Taken from:
diff -ur linux/arch/sh/mm/fault.c linux-sh-cvs/arch/sh/mm/fault.c
--- linux/arch/sh/mm/fault.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/mm/fault.c	Wed Dec 26 14:29:05 2001
@@ -1,4 +1,4 @@
-/* $Id: fault.c,v 1.49 2001/10/06 19:46:00 lethal Exp $
+/* $Id: fault.c,v 1.1.1.1.2.1 2001/12/26 19:29:05 jzs Exp $
  *
  *  linux/arch/sh/mm/fault.c
  *  Copyright (C) 1999  Niibe Yutaka
@@ -249,6 +249,8 @@
 		dir = pgd_offset_k(address);
 	else if (address >= TASK_SIZE)
 		return 1;
+	else if (!current->mm)
+		return 1;
 	else
 		dir = pgd_offset(current->mm, address);
 
diff -ur linux/arch/sh/mm/init.c linux-sh-cvs/arch/sh/mm/init.c
--- linux/arch/sh/mm/init.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/arch/sh/mm/init.c	Mon Oct 15 16:44:54 2001
@@ -1,4 +1,4 @@
-/* $Id: init.c,v 1.19 2001/10/01 02:21:50 gniibe Exp $
+/* $Id: init.c,v 1.1.1.1 2001/10/15 20:44:54 mrbrown Exp $
  *
  *  linux/arch/sh/mm/init.c
  *
diff -ur linux/arch/sh/mm/ioremap.c linux-sh-cvs/arch/sh/mm/ioremap.c
--- linux/arch/sh/mm/ioremap.c	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/mm/ioremap.c	Mon Oct 15 16:44:54 2001
@@ -1,4 +1,4 @@
-/* $Id: ioremap.c,v 1.4 2001/06/30 09:18:39 gniibe Exp $
+/* $Id: ioremap.c,v 1.1.1.1 2001/10/15 20:44:54 mrbrown Exp $
  *
  * arch/sh/mm/ioremap.c
  *
diff -ur linux/arch/sh/vmlinux.lds.S linux-sh-cvs/arch/sh/vmlinux.lds.S
--- linux/arch/sh/vmlinux.lds.S	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/arch/sh/vmlinux.lds.S	Mon Oct 15 16:44:47 2001
@@ -1,4 +1,4 @@
-/* $Id: vmlinux.lds.in,v 1.5 2001/07/27 11:45:55 gniibe Exp $
+/* $Id: vmlinux.lds.S,v 1.1.1.1 2001/10/15 20:44:47 mrbrown Exp $
  * ld script to make SuperH Linux kernel
  * Written by Niibe Yutaka
  */
diff -ur linux/drivers/Makefile linux-sh-cvs/drivers/Makefile
--- linux/drivers/Makefile	Sun Nov 11 13:09:32 2001
+++ linux-sh-cvs/drivers/Makefile	Fri Nov 30 18:03:47 2001
@@ -8,7 +8,7 @@
 
 mod-subdirs :=	dio mtd sbus video macintosh usb input telephony sgi ide \
 		message/i2o message/fusion scsi md ieee1394 pnp isdn atm \
-		fc4 net/hamradio i2c acpi bluetooth
+		fc4 net/hamradio i2c acpi bluetooth maple
 
 subdir-y :=	parport char block net sound misc media cdrom hotplug
 subdir-m :=	$(subdir-y)
@@ -46,5 +46,6 @@
 subdir-$(CONFIG_ACPI)		+= acpi
 
 subdir-$(CONFIG_BLUEZ)		+= bluetooth
+subdir-$(CONFIG_MAPLE)		+= maple
 
 include $(TOPDIR)/Rules.make
diff -ur linux/drivers/cdrom/Config.in linux-sh-cvs/drivers/cdrom/Config.in
--- linux/drivers/cdrom/Config.in	Mon Jan 24 14:04:37 2000
+++ linux-sh-cvs/drivers/cdrom/Config.in	Mon Oct 15 16:44:57 2001
@@ -25,3 +25,4 @@
 tristate '  ISP16/MAD16/Mozart soft configurable cdrom interface support' CONFIG_ISP16_CDI
 tristate '  Sony CDU31A/CDU33A CDROM support' CONFIG_CDU31A
 tristate '  Sony CDU535 CDROM support' CONFIG_CDU535
+tristate '  SEGA Dreamcast GD-ROM device CD-R support' CONFIG_SEGA_GDROM
diff -ur linux/drivers/cdrom/Makefile linux-sh-cvs/drivers/cdrom/Makefile
--- linux/drivers/cdrom/Makefile	Fri Dec 29 17:07:21 2000
+++ linux-sh-cvs/drivers/cdrom/Makefile	Mon Oct 15 16:44:57 2001
@@ -42,6 +42,7 @@
 obj-$(CONFIG_SBPCD4)		+= sbpcd4.o     cdrom.o
 obj-$(CONFIG_SJCD)		+= sjcd.o
 obj-$(CONFIG_CDU535)		+= sonycd535.o
+obj-$(CONFIG_SEGA_GDROM)	+= gdrom.o	cdrom.o
 
 # Hand off to Rules.make.
 
diff -ur linux/drivers/char/Makefile linux-sh-cvs/drivers/char/Makefile
--- linux/drivers/char/Makefile	Sun Nov 11 13:09:32 2001
+++ linux-sh-cvs/drivers/char/Makefile	Fri Nov 30 18:03:52 2001
@@ -95,7 +95,7 @@
   endif
   ifeq ($(CONFIG_SH_DREAMCAST),y)
   KEYMAP   = defkeymap.o
-  KEYBD    =
+  KEYBD    = dc_keyb.o
   CONSOLE  = console.o
   endif
 endif
@@ -176,6 +176,9 @@
 obj-y += joystick/js.o
 endif
 
+obj-$(CONFIG_MAPLE_KEYBOARD) += maple_keyb.o
+obj-$(CONFIG_MAPLE_MOUSE) += maplemouse.o
+ 
 obj-$(CONFIG_BUSMOUSE) += busmouse.o
 obj-$(CONFIG_DTLK) += dtlk.o
 obj-$(CONFIG_R3964) += n_r3964.o
diff -ur linux/drivers/char/hp600_keyb.c linux-sh-cvs/drivers/char/hp600_keyb.c
--- linux/drivers/char/hp600_keyb.c	Thu Sep 13 18:21:32 2001
+++ linux-sh-cvs/drivers/char/hp600_keyb.c	Mon Oct 15 16:44:57 2001
@@ -1,5 +1,5 @@
 /*
- *	$Id$ 
+ *	$Id: hp600_keyb.c,v 1.1.1.1 2001/10/15 20:44:57 mrbrown Exp $ 
  *	Copyright (C) 2000 YAEGASHI Takeshi
  *	HP600 keyboard scan routine and translation table
  *	Copyright (C) 2000 Niibe Yutaka
diff -ur linux/drivers/char/joystick/Config.in linux-sh-cvs/drivers/char/joystick/Config.in
--- linux/drivers/char/joystick/Config.in	Wed Sep 12 18:34:06 2001
+++ linux-sh-cvs/drivers/char/joystick/Config.in	Mon Oct 15 16:44:59 2001
@@ -46,6 +46,11 @@
    if [ "$CONFIG_AMIGA" = "y" ]; then
       dep_tristate '  Amiga joysticks' CONFIG_INPUT_AMIJOY $CONFIG_INPUT
    fi
+
+   if [ "$CONFIG_MAPLE" != "n" ]; then
+   comment 'Dreamcast Maple Bus controllers'
+      dep_tristate '  Maple Bus controllers' CONFIG_INPUT_MAPLE_CONTROL $CONFIG_INPUT
+   fi
 else
    comment 'Input core support is needed for joysticks'
 fi
diff -ur linux/drivers/char/joystick/Makefile linux-sh-cvs/drivers/char/joystick/Makefile
--- linux/drivers/char/joystick/Makefile	Wed Sep 12 18:34:06 2001
+++ linux-sh-cvs/drivers/char/joystick/Makefile	Mon Oct 15 16:44:59 2001
@@ -65,6 +65,8 @@
 
 obj-$(CONFIG_INPUT_AMIJOY)	+= amijoy.o
 
+obj-$(CONFIG_INPUT_MAPLE_CONTROL)+= maplecontrol.o
+
 # The global Rules.make.
 
 include $(TOPDIR)/Rules.make
diff -ur linux/drivers/char/scan_keyb.c linux-sh-cvs/drivers/char/scan_keyb.c
--- linux/drivers/char/scan_keyb.c	Thu Apr 12 00:24:52 2001
+++ linux-sh-cvs/drivers/char/scan_keyb.c	Mon Oct 15 16:44:58 2001
@@ -1,5 +1,5 @@
 /*
- *	$Id: scan_keyb.c,v 1.2 2000/07/04 06:24:42 yaegashi Exp $ 
+ *	$Id: scan_keyb.c,v 1.1.1.1 2001/10/15 20:44:58 mrbrown Exp $ 
  *	Copyright (C) 2000 YAEGASHI Takeshi
  *	Generic scan keyboard driver
  */
diff -ur linux/drivers/char/sh-sci.c linux-sh-cvs/drivers/char/sh-sci.c
--- linux/drivers/char/sh-sci.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/drivers/char/sh-sci.c	Mon Oct 15 16:44:59 2001
@@ -1,4 +1,4 @@
-/* $Id: sh-sci.c,v 1.40 2000/04/15 06:57:29 gniibe Exp $
+/* $Id: sh-sci.c,v 1.1.1.1 2001/10/15 20:44:59 mrbrown Exp $
  *
  *  linux/drivers/char/sh-sci.c
  *
diff -ur linux/drivers/char/sh-sci.h linux-sh-cvs/drivers/char/sh-sci.h
--- linux/drivers/char/sh-sci.h	Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/drivers/char/sh-sci.h	Mon Oct 15 16:44:59 2001
@@ -1,4 +1,4 @@
-/* $Id: sh-sci.h,v 1.8 2000/03/08 15:19:39 gniibe Exp $
+/* $Id: sh-sci.h,v 1.1.1.1 2001/10/15 20:44:59 mrbrown Exp $
  *
  *  linux/drivers/char/sh-sci.h
  *
diff -ur linux/drivers/char/shwdt.c linux-sh-cvs/drivers/char/shwdt.c
--- linux/drivers/char/shwdt.c	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/drivers/char/shwdt.c	Thu Nov 29 19:27:08 2001
@@ -10,7 +10,6 @@
  * Free Software Foundation; either version 2 of the License, or (at your
  * option) any later version.
  */
-
 #include <linux/config.h>
 #include <linux/module.h>
 #include <linux/init.h>
@@ -177,7 +176,7 @@
  * 	sh_wdt_read - Read from Device
  *
  * 	@file: file handle of device
- * 	@char: buffer to write to
+ * 	@buf: buffer to write to
  * 	@count: length of buffer
  * 	@ppos: offset
  *
@@ -193,7 +192,7 @@
  * 	sh_wdt_write - Write to Device
  *
  * 	@file: file handle of device
- * 	@char: buffer to write
+ * 	@buf: buffer to write
  * 	@count: length of buffer
  * 	@ppos: offset
  *
@@ -269,7 +268,7 @@
 static int sh_wdt_notify_sys(struct notifier_block *this,
 			     unsigned long code, void *unused)
 {
-	if (code == SYS_DOWN || SYS_HALT) {
+	if (code == SYS_DOWN || code == SYS_HALT) {
 		sh_wdt_stop();
 	}
 
diff -ur linux/drivers/mtd/maps/Config.in linux-sh-cvs/drivers/mtd/maps/Config.in
--- linux/drivers/mtd/maps/Config.in	Thu Oct  4 18:13:18 2001
+++ linux-sh-cvs/drivers/mtd/maps/Config.in	Thu Nov  8 15:18:51 2001
@@ -1,6 +1,7 @@
 # drivers/mtd/maps/Config.in
 
-# $Id: Config.in,v 1.16 2001/09/19 18:28:37 dwmw2 Exp $
+# $Id: Config.in,v 1.19 2001/11/07 01:20:58 jsiegel Exp $
+#  -- with PCI MTD removed (not yet in linuxsh tree)
 
 mainmenu_option next_comment
 
@@ -46,8 +47,12 @@
    dep_tristate '  Momenco Ocelot boot flash device' CONFIG_MTD_OCELOT $CONFIG_MOMENCO_OCELOT
 fi
 
-if [ "$CONFIG_SH" = "y" ]; then
-   dep_tristate '  CFI Flash device mapped on Hitachi SolutionEngine' CONFIG_MTD_SOLUTIONENGINE $CONFIG_MTD_CFI $CONFIG_SH $CONFIG_MTD_REDBOOT_PARTS
+if [ "$CONFIG_SUPERH" = "y" ]; then
+   dep_tristate '  CFI Flash device mapped on Hitachi SolutionEngine' \
+      CONFIG_MTD_SOLUTIONENGINE $CONFIG_MTD_PARTITIONS $CONFIG_MTD_CFI
+   if [ "$CONFIG_MTD_SOLUTIONENGINE" != "n" ]; then
+      hex '  Default reserved Flash size'  CONFIG_MTD_SUPERH_RESERVE 0x00010000
+   fi
 fi
 
 if [ "$CONFIG_ARM" = "y" ]; then
diff -ur linux/drivers/mtd/maps/solutionengine.c linux-sh-cvs/drivers/mtd/maps/solutionengine.c
--- linux/drivers/mtd/maps/solutionengine.c	Thu Oct  4 18:14:59 2001
+++ linux-sh-cvs/drivers/mtd/maps/solutionengine.c	Thu Nov  8 15:18:51 2001
@@ -1,5 +1,5 @@
 /*
- * $Id: solutionengine.c,v 1.3 2001/10/02 15:05:14 dwmw2 Exp $
+ * $Id: solutionengine.c,v 1.4 2001/11/07 01:20:59 jsiegel Exp $
  *
  * Flash and EPROM on Hitachi Solution Engine and similar boards.
  *
@@ -15,6 +15,7 @@
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/map.h>
 #include <linux/mtd/partitions.h>
+#include <linux/config.h>
 
 
 extern int parse_redboot_partitions(struct mtd_info *master, struct mtd_partition **pparts);
@@ -57,20 +58,38 @@
 	write32: soleng_write32,
 };
 
+#ifdef CONFIG_MTD_SUPERH_RESERVE
+static struct mtd_partition superh_se_partitions[] = {
+	/* Reserved for boot code, read-only */
+	{
+		name: "flash_boot",
+		offset: 0x00000000,
+		size: CONFIG_MTD_SUPERH_RESERVE,
+		mask_flags: MTD_WRITEABLE,
+	},
+	/* All else is writable (e.g. JFFS) */
+	{
+		name: "Flash FS",
+		offset: MTDPART_OFS_NXTBLK,
+		size: MTDPART_SIZ_FULL,
+	}
+};
+#endif /* CONFIG_MTD_SUPERH_RESERVE */
+
 static int __init init_soleng_maps(void)
 {
-	int nr_parts;
+	int nr_parts = 0;
 
 	/* First probe at offset 0 */
 	soleng_flash_map.map_priv_1 = P2SEGADDR(0);
-	soleng_eprom_map.map_priv_1 = P1SEGADDR(0x400000);
+	soleng_eprom_map.map_priv_1 = P1SEGADDR(0x01000000);
 
-	printk(KERN_NOTICE "Probing for flash chips at 0x000000:\n");
+	printk(KERN_NOTICE "Probing for flash chips at 0x00000000:\n");
 	flash_mtd = do_map_probe("cfi_probe", &soleng_flash_map);
 	if (!flash_mtd) {
 		/* Not there. Try swapping */
-		printk(KERN_NOTICE "Probing for flash chips at 0x400000:\n");
-		soleng_flash_map.map_priv_1 = P2SEGADDR(0x400000);
+		printk(KERN_NOTICE "Probing for flash chips at 0x01000000:\n");
+		soleng_flash_map.map_priv_1 = P2SEGADDR(0x01000000);
 		soleng_eprom_map.map_priv_1 = P1SEGADDR(0);
 		flash_mtd = do_map_probe("cfi_probe", &soleng_flash_map);
 		if (!flash_mtd) {
@@ -90,9 +109,23 @@
 		add_mtd_device(eprom_mtd);
 	}
 
+#ifdef CONFIG_MTD_REDBOOT_PARTS
 	nr_parts = parse_redboot_partitions(flash_mtd, &parsed_parts);
+	if (nr_parts > 0)
+		printk(KERN_NOTICE "Found RedBoot partition table.\n");
+	else if (nr_parts < 0)
+		printk(KERN_NOTICE "Error looking for RedBoot partitions.\n");
+#endif /* CONFIG_MTD_REDBOOT_PARTS */
+#if CONFIG_MTD_SUPERH_RESERVE
+	if (nr_parts == 0) {
+		printk(KERN_NOTICE "Using configured partition at 0x%08x.\n",
+		       CONFIG_MTD_SUPERH_RESERVE);
+		parsed_parts = superh_se_partitions;
+		nr_parts = sizeof(superh_se_partitions)/sizeof(*parsed_parts);
+	}
+#endif /* CONFIG_MTD_SUPERH_RESERVE */
 
-	if (nr_parts)
+	if (nr_parts > 0)
 		add_mtd_partitions(flash_mtd, parsed_parts, nr_parts);
 	else
 		add_mtd_device(flash_mtd);
diff -ur linux/drivers/mtd/mtdpart.c linux-sh-cvs/drivers/mtd/mtdpart.c
--- linux/drivers/mtd/mtdpart.c	Thu Oct  4 18:14:59 2001
+++ linux-sh-cvs/drivers/mtd/mtdpart.c	Thu Nov  8 15:18:51 2001
@@ -5,7 +5,7 @@
  *
  * This code is GPL
  *
- * $Id: mtdpart.c,v 1.23 2001/10/02 15:05:11 dwmw2 Exp $
+ * $Id: mtdpart.c,v 1.24 2001/11/07 01:20:58 jsiegel Exp $
  */
 
 #include <linux/module.h>
@@ -225,6 +225,15 @@
 
 		if (slave->offset == MTDPART_OFS_APPEND)
 			slave->offset = cur_offset;
+		if (slave->offset == MTDPART_OFS_NXTBLK) {
+			u_int32_t emask = master->erasesize-1;
+			slave->offset = (cur_offset + emask) & ~emask;
+			if (slave->offset != cur_offset) {
+				printk(KERN_NOTICE "Moving partition %d: "
+				       "0x%08x -> 0x%08x\n", i,
+				       cur_offset, slave->offset);
+			}
+		}
 		if (slave->mtd.size == MTDPART_SIZ_FULL)
 			slave->mtd.size = master->size - slave->offset;
 		cur_offset = slave->offset + slave->mtd.size;
diff -ur linux/drivers/net/8139too.c linux-sh-cvs/drivers/net/8139too.c
--- linux/drivers/net/8139too.c	Fri Dec 21 12:41:54 2001
+++ linux-sh-cvs/drivers/net/8139too.c	Thu Jan 24 05:15:32 2002
@@ -109,9 +109,17 @@
 #include <linux/ethtool.h>
 #include <linux/mii.h>
 #include <linux/completion.h>
+
 #include <asm/io.h>
 #include <asm/uaccess.h>
 
+#ifdef CONFIG_8139TOO_DREAMCAST
+#define CONFIG_8139TOO_BUF16K	1
+#define USE_NO_DMAMAP		1
+#else
+#define USE_NO_DMAMAP		0
+#endif
+
 #define RTL8139_DRIVER_NAME   DRV_NAME " Fast Ethernet driver " DRV_VERSION
 #define PFX DRV_NAME ": "
 
@@ -160,7 +168,11 @@
 static int multicast_filter_limit = 32;
 
 /* Size of the in-memory receive ring. */
+#ifdef CONFIG_8139TOO_BUF16K
+#define RX_BUF_LEN_IDX	1	/* 0==8K, 1==16K, 2==32K, 3==64K */
+#else
 #define RX_BUF_LEN_IDX	2	/* 0==8K, 1==16K, 2==32K, 3==64K */
+#endif
 #define RX_BUF_LEN	(8192 << RX_BUF_LEN_IDX)
 #define RX_BUF_PAD	16
 #define RX_BUF_WRAP_PAD 2048 /* spare padding to handle lack of packet wrap */
@@ -212,6 +224,7 @@
 	ADDTRON8139,
 	DFE538TX,
 	DFE690TXD,
+	SEGABBA,
 	RTL8129,
 } board_t;
 
@@ -229,6 +242,7 @@
 	{ "Addtron Technolgy 8139 10/100BaseTX", RTL8139_CAPS },
 	{ "D-Link DFE-538TX (RealTek RTL8139)", RTL8139_CAPS },
 	{ "D-Link DFE-690TXD (RealTek RTL8139)", RTL8139_CAPS },
+	{ "SEGA Broadband Adapter", RTL8139_CAPS },
 	{ "RealTek RTL8129", RTL8129_CAPS },
 };
 
@@ -242,6 +256,7 @@
 	{0x4033, 0x1360, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ADDTRON8139 },
 	{0x1186, 0x1300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DFE538TX },
 	{0x1186, 0x1340, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DFE690TXD },
+	{0x11db, 0x1234, PCI_ANY_ID, PCI_ANY_ID, 0, 0, SEGABBA },
 
 #ifdef CONFIG_8139TOO_8129
 	{0x10ec, 0x8129, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8129 },
@@ -654,10 +669,17 @@
 	PCIErr | PCSTimeout | RxUnderrun | RxOverflow | RxFIFOOver |
 	TxErr | TxOK | RxErr | RxOK;
 
+#ifdef CONFIG_8139TOO_BUF16K 
+static const unsigned int rtl8139_rx_config =
+	RxCfgRcv16K | RxNoWrap |
+	(RX_FIFO_THRESH << RxCfgFIFOShift) |
+	(RX_DMA_BURST << RxCfgDMAShift);
+#else
 static const unsigned int rtl8139_rx_config =
 	RxCfgRcv32K | RxNoWrap |
 	(RX_FIFO_THRESH << RxCfgFIFOShift) |
 	(RX_DMA_BURST << RxCfgDMAShift);
+#endif
 
 static const unsigned int rtl8139_tx_config =
 	(TX_DMA_BURST << TxDMAShift) | (TX_RETRY << TxRetryShift);
@@ -1335,8 +1357,9 @@
 
 	tp->rx_config = rtl8139_rx_config | AcceptBroadcast | AcceptMyPhys;
 	RTL_W32 (RxConfig, tp->rx_config);
+	tp->rx_config = 0;
 
-	/* Check this value: the documentation for IFG contradicts ifself. */
+	/* Check this value: the documentation for IFG contradicts itself. */
 	RTL_W32 (TxConfig, rtl8139_tx_config);
 
 	tp->cur_rx = 0;
@@ -1653,7 +1676,7 @@
 	/* Note: the chip doesn't have auto-pad! */
 	spin_lock_irq(&tp->lock);
 	RTL_W32_F (TxStatus0 + (entry * sizeof (u32)),
-		   tp->tx_flag | max(len, (unsigned int)ETH_ZLEN));
+		   tp->tx_flag | max(len, (unsigned int) ETH_ZLEN));
 
 	dev->trans_start = jiffies;
 
@@ -1664,8 +1687,8 @@
 		netif_stop_queue (dev);
 	spin_unlock_irq(&tp->lock);
 
-	DPRINTK ("%s: Queued Tx packet size %u to slot %d.\n",
-		 dev->name, len, entry);
+	DPRINTK ("%s: Queued Tx packet at %p size %u to slot %d.\n",
+		 dev->name, skb->data, len, entry);
 
 	return 0;
 }
diff -ur linux/drivers/net/Config.in linux-sh-cvs/drivers/net/Config.in
--- linux/drivers/net/Config.in	Fri Dec 21 12:41:54 2001
+++ linux-sh-cvs/drivers/net/Config.in	Fri Nov 30 18:03:55 2001
@@ -10,7 +10,9 @@
 tristate 'EQL (serial line load balancing) support' CONFIG_EQUALIZER
 tristate 'Universal TUN/TAP device driver support' CONFIG_TUN
 if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-   tristate 'Ethertap network tap (OBSOLETE)' CONFIG_ETHERTAP
+   if [ "$CONFIG_NETLINK" = "y" ]; then
+      tristate 'Ethertap network tap (OBSOLETE)' CONFIG_ETHERTAP
+   fi
 fi
 
 if [ "$CONFIG_ISAPNP" = "y" -o "$CONFIG_ISAPNP" = "m" ]; then
@@ -137,6 +139,7 @@
       if [ "$CONFIG_OBSOLETE" = "y" ]; then
          tristate '    SK_G16 support' CONFIG_SK_G16
       fi
+      tristate '    CS89x0 support' CONFIG_CS89x0
    fi
    if [ "$CONFIG_MCA" = "y" ]; then
       tristate '  SKnet MCA support' CONFIG_SKMC
@@ -156,7 +159,6 @@
       fi
 
       dep_tristate '    Apricot Xen-II on board Ethernet' CONFIG_APRICOT $CONFIG_ISA
-      dep_tristate '    CS89x0 support' CONFIG_CS89x0 $CONFIG_ISA
       dep_tristate '    DECchip Tulip (dc21x4x) PCI support' CONFIG_TULIP $CONFIG_PCI
       if [ "$CONFIG_TULIP" = "y" -o "$CONFIG_TULIP" = "m" ]; then
          dep_bool '      New bus configuration (EXPERIMENTAL)' CONFIG_TULIP_MWI $CONFIG_EXPERIMENTAL
@@ -179,6 +181,7 @@
       dep_mbool '      Use PIO instead of MMIO' CONFIG_8139TOO_PIO $CONFIG_8139TOO
       dep_mbool '      Support for automatic channel equalization (EXPERIMENTAL)' CONFIG_8139TOO_TUNE_TWISTER $CONFIG_8139TOO $CONFIG_EXPERIMENTAL
       dep_mbool '      Support for older RTL-8129/8130 boards' CONFIG_8139TOO_8129 $CONFIG_8139TOO
+      dep_mbool '      Support for Dreamcast Broad Band Adaptor' CONFIG_8139TOO_DREAMCAST $CONFIG_8139TOO
       dep_tristate '    SiS 900/7016 PCI Fast Ethernet Adapter support' CONFIG_SIS900 $CONFIG_PCI
       dep_tristate '    SMC EtherPower II' CONFIG_EPIC100 $CONFIG_PCI
       dep_tristate '    Sundance Alta support' CONFIG_SUNDANCE $CONFIG_PCI
diff -ur linux/drivers/pci/pci.ids linux-sh-cvs/drivers/pci/pci.ids
--- linux/drivers/pci/pci.ids	Fri Nov  9 17:03:11 2001
+++ linux-sh-cvs/drivers/pci/pci.ids	Fri Nov 30 18:03:55 2001
@@ -7,7 +7,7 @@
 #	so if you have anything to contribute, please visit the home page or
 #	send a diff -u against the most recent pci.ids to pci-ids@ucw.cz.
 #
-#	$Id: pci.ids,v 1.24 2001/10/28 21:55:26 mares Exp $
+#	$Id: pci.ids,v 1.1.1.1.2.2 2001/11/30 23:03:55 jzs Exp $
 #
 
 # Vendors, devices and subsystems. Please keep sorted.
@@ -963,11 +963,12 @@
 	1000  QuickStep 1000
 	3000  QuickStep 3000
 1049  Fountain Technologies, Inc.
-104a  SGS Thomson Microelectronics
+104a  STMicroelectronics
 	0008  STG 2000X
 	0009  STG 1764X
 	1746  STG 1764X
 	3520  MPEG-II decoder card
+	2774  STE10/100A
 104b  BusLogic
 	0140  BT-946C (old) [multimaster  01]
 	1040  BT-946C (BA80C30) [MultiMaster 10]
@@ -2640,6 +2641,7 @@
 11aa  Actel
 11ab  Galileo Technology Ltd.
 	0146  GT-64010
+	4146  GT-64111
 	4801  GT-48001
 	f003  GT-64010 Primary Image Piranha Image Generator
 11ac  Canon Information Systems Research Aust.
@@ -2794,6 +2796,7 @@
 11d9  TEC Corporation
 11da  Novell
 11db  Sega Enterprises Ltd
+	1234  Broadband Adapter
 11dc  Questra Corporation
 11dd  Crosfield Electronics Limited
 11de  Zoran Corporation
diff -ur linux/drivers/pcmcia/hd64465_ss.c linux-sh-cvs/drivers/pcmcia/hd64465_ss.c
--- linux/drivers/pcmcia/hd64465_ss.c	Tue Jul 10 23:16:30 2001
+++ linux-sh-cvs/drivers/pcmcia/hd64465_ss.c	Mon Oct 15 16:45:05 2001
@@ -1,5 +1,5 @@
 /*
- * $Id$
+ * $Id: hd64465_ss.c,v 1.1.1.1 2001/10/15 20:45:05 mrbrown Exp $
  *
  * Device driver for the PCMCIA controller module of the
  * Hitachi HD64465 handheld companion chip.
diff -ur linux/drivers/video/hitfb.c linux-sh-cvs/drivers/video/hitfb.c
--- linux/drivers/video/hitfb.c	Thu Sep 13 19:04:43 2001
+++ linux-sh-cvs/drivers/video/hitfb.c	Mon Oct 15 16:45:05 2001
@@ -1,5 +1,5 @@
 /*
- * $Id: hitfb.c,v 1.2 2000/07/04 06:24:46 yaegashi Exp $
+ * $Id: hitfb.c,v 1.1.1.1 2001/10/15 20:45:05 mrbrown Exp $
  * linux/drivers/video/hitfb.c -- Hitachi LCD frame buffer device
  * (C) 1999 Mihai Spatar
  * (C) 2000 YAEGASHI Takeshi
diff -ur linux/include/asm-sh/cache.h linux-sh-cvs/include/asm-sh/cache.h
--- linux/include/asm-sh/cache.h	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/include/asm-sh/cache.h	Mon Oct 15 16:45:06 2001
@@ -1,4 +1,4 @@
-/* $Id: cache.h,v 1.3 2000/07/04 06:24:49 gniibe Exp $
+/* $Id: cache.h,v 1.1.1.1 2001/10/15 20:45:06 mrbrown Exp $
  *
  * include/asm-sh/cache.h
  *
diff -ur linux/include/asm-sh/hd64461.h linux-sh-cvs/include/asm-sh/hd64461.h
--- linux/include/asm-sh/hd64461.h	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/include/asm-sh/hd64461.h	Mon Oct 15 16:45:07 2001
@@ -1,7 +1,7 @@
 #ifndef __ASM_SH_HD64461
 #define __ASM_SH_HD64461
 /*
- *	$Id: hd64461.h,v 1.7 2001/07/07 11:43:58 yaegashi Exp $
+ *	$Id: hd64461.h,v 1.1.1.1 2001/10/15 20:45:07 mrbrown Exp $
  *	Copyright (C) 2000 YAEGASHI Takeshi
  *	Hitachi HD64461 companion chip support
  */
diff -ur linux/include/asm-sh/hd64465.h linux-sh-cvs/include/asm-sh/hd64465.h
--- linux/include/asm-sh/hd64465.h	Thu Apr 12 00:24:52 2001
+++ linux-sh-cvs/include/asm-sh/hd64465.h	Mon Oct 15 16:45:07 2001
@@ -1,7 +1,7 @@
 #ifndef _ASM_SH_HD64465_
 #define _ASM_SH_HD64465_ 1
 /*
- * $Id: hd64465.h,v 1.3 2001/02/07 18:31:20 stuart_menefy Exp $
+ * $Id: hd64465.h,v 1.1.1.1 2001/10/15 20:45:07 mrbrown Exp $
  *
  * Hitachi HD64465 companion chip support
  *
diff -ur linux/include/asm-sh/hd64465_gpio.h linux-sh-cvs/include/asm-sh/hd64465_gpio.h
--- linux/include/asm-sh/hd64465_gpio.h	Wed Jun 27 16:55:29 2001
+++ linux-sh-cvs/include/asm-sh/hd64465_gpio.h	Mon Oct 15 16:45:08 2001
@@ -1,7 +1,7 @@
 #ifndef _ASM_SH_HD64465_GPIO_
 #define _ASM_SH_HD64465_GPIO_ 1
 /*
- * $Id: hd64465_gpio.h,v 1.2 2001/05/24 00:14:13 gniibe Exp $
+ * $Id: hd64465_gpio.h,v 1.1.1.1 2001/10/15 20:45:08 mrbrown Exp $
  *
  * Hitachi HD64465 companion chip: General Purpose IO pins support.
  * This layer enables other device drivers to configure GPIO
diff -ur linux/include/asm-sh/io_dc.h linux-sh-cvs/include/asm-sh/io_dc.h
--- linux/include/asm-sh/io_dc.h	Thu Apr 12 00:24:52 2001
+++ linux-sh-cvs/include/asm-sh/io_dc.h	Mon Oct 15 16:45:08 2001
@@ -1,5 +1,5 @@
 /*
- *	$Id: io_dc.h,v 1.1 2001/04/01 15:02:56 yaegashi Exp $
+ *	$Id: io_dc.h,v 1.1.1.1 2001/10/15 20:45:08 mrbrown Exp $
  *	IO functions for SEGA Dreamcast
  */
 
diff -ur linux/include/asm-sh/ioctl.h linux-sh-cvs/include/asm-sh/ioctl.h
--- linux/include/asm-sh/ioctl.h	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/include/asm-sh/ioctl.h	Mon Oct 15 16:45:09 2001
@@ -1,4 +1,4 @@
-/* $Id: ioctl.h,v 1.1 2000/04/14 16:48:21 mjd Exp $
+/* $Id: ioctl.h,v 1.1.1.1 2001/10/15 20:45:09 mrbrown Exp $
  *
  * linux/ioctl.h for Linux by H.H. Bergman.
  */
diff -ur linux/include/asm-sh/keyboard.h linux-sh-cvs/include/asm-sh/keyboard.h
--- linux/include/asm-sh/keyboard.h	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/include/asm-sh/keyboard.h	Mon Oct 15 16:45:09 2001
@@ -1,7 +1,7 @@
 #ifndef	__ASM_SH_KEYBOARD_H
 #define	__ASM_SH_KEYBOARD_H
 /*
- *	$Id: keyboard.h,v 1.12 2001/09/06 04:01:41 gniibe Exp $
+ *	$Id: keyboard.h,v 1.1.1.1 2001/10/15 20:45:09 mrbrown Exp $
  */
 
 #include <linux/kd.h>
diff -ur linux/include/asm-sh/linux_logo.h linux-sh-cvs/include/asm-sh/linux_logo.h
--- linux/include/asm-sh/linux_logo.h	Sat Sep  8 15:29:09 2001
+++ linux-sh-cvs/include/asm-sh/linux_logo.h	Mon Oct 15 16:45:08 2001
@@ -1,4 +1,4 @@
-/* $Id: linux_logo.h,v 1.4 2001/08/08 07:39:36 gnb Exp $
+/* $Id: linux_logo.h,v 1.1.1.1 2001/10/15 20:45:08 mrbrown Exp $
  * include/linux/linux_logo.h: This is a linux logo
  *                             to be displayed on boot.
  *
diff -ur linux/include/asm-sh/namei.h linux-sh-cvs/include/asm-sh/namei.h
--- linux/include/asm-sh/namei.h	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/include/asm-sh/namei.h	Mon Oct 15 16:45:10 2001
@@ -1,4 +1,4 @@
-/* $Id: namei.h,v 1.3 2000/07/04 06:24:49 gniibe Exp $
+/* $Id: namei.h,v 1.1.1.1 2001/10/15 20:45:10 mrbrown Exp $
  * linux/include/asm-sh/namei.h
  *
  * Included from linux/fs/namei.c
diff -ur linux/include/asm-sh/pci.h linux-sh-cvs/include/asm-sh/pci.h
--- linux/include/asm-sh/pci.h	Fri Oct 12 18:35:54 2001
+++ linux-sh-cvs/include/asm-sh/pci.h	Tue Oct 30 18:22:18 2001
@@ -196,6 +196,11 @@
 	return 1;
 }
 
+/* Not supporting more than 32-bit PCI bus addresses now, but
+ * must satisfy references to this function.  Change if needed.
+ */
+#define pci_dac_dma_supported(pci_dev, mask) (0)
+
 /* Return the index of the PCI controller for device PDEV. */
 #define pci_controller_num(PDEV)	(0)
 
diff -ur linux/include/asm-sh/processor.h linux-sh-cvs/include/asm-sh/processor.h
--- linux/include/asm-sh/processor.h	Fri Oct  5 15:11:05 2001
+++ linux-sh-cvs/include/asm-sh/processor.h	Thu Jan 24 19:51:42 2002
@@ -184,19 +184,23 @@
 
 #define unlazy_fpu(tsk) do { 			\
 	if ((tsk)->flags & PF_USEDFPU) {	\
-		grab_fpu();			\
 		save_fpu(tsk); 			\
 	}					\
 } while (0)
 
 #define clear_fpu(tsk) do { 			\
-	if ((tsk)->flags & PF_USEDFPU)	 	\
+	if ((tsk)->flags & PF_USEDFPU) { 	\
 		(tsk)->flags &= ~PF_USEDFPU; 	\
+		release_fpu();			\
+	}					\
 } while (0)
 
 /* Double presision, NANS as NANS, rounding to nearest, no exceptions */
 #define FPSCR_INIT  0x00080000
 
+#define	FPSCR_CAUSE_MASK	0x0001f000	/* Cause bits */
+#define	FPSCR_FLAG_MASK		0x0000007c	/* Flag bits */
+
 /*
  * Return saved PC of a blocked thread.
  */
diff -ur linux/include/asm-sh/stat.h linux-sh-cvs/include/asm-sh/stat.h
--- linux/include/asm-sh/stat.h	Mon Jul 31 20:38:07 2000
+++ linux-sh-cvs/include/asm-sh/stat.h	Fri Nov  2 19:52:47 2001
@@ -42,8 +42,16 @@
  * insane amounts of padding around dev_t's.
  */
 struct stat64 {
+#if defined(__BIG_ENDIAN__)
+	unsigned char   __pad0b[6];
 	unsigned short	st_dev;
-	unsigned char	__pad0[10];
+#elif defined(__LITTLE_ENDIAN__)
+	unsigned short	st_dev;
+	unsigned char	__pad0b[6];
+#else
+#error Must know endian to build stat64 structure!
+#endif
+	unsigned char	__pad0[4];
 
 	unsigned long	st_ino;
 	unsigned int	st_mode;
@@ -52,14 +60,25 @@
 	unsigned long	st_uid;
 	unsigned long	st_gid;
 
+#if defined(__BIG_ENDIAN__)
+	unsigned char	__pad3b[6];
+	unsigned short	st_rdev;
+#else /* Must be little */
 	unsigned short	st_rdev;
-	unsigned char	__pad3[10];
+	unsigned char	__pad3b[6];
+#endif
+	unsigned char	__pad3[4];
 
 	long long	st_size;
 	unsigned long	st_blksize;
 
+#if defined(__BIG_ENDIAN__)
+	unsigned long	__pad4;		/* Future possible st_blocks hi bits */
+	unsigned long	st_blocks;	/* Number 512-byte blocks allocated. */
+#else /* Must be little */
 	unsigned long	st_blocks;	/* Number 512-byte blocks allocated. */
-	unsigned long	__pad4;		/* future possible st_blocks high bits */
+	unsigned long	__pad4;		/* Future possible st_blocks hi bits */
+#endif
 
 	unsigned long	st_atime;
 	unsigned long	__pad5;
diff -ur linux/include/asm-sh/uaccess.h linux-sh-cvs/include/asm-sh/uaccess.h
--- linux/include/asm-sh/uaccess.h	Mon Oct 15 16:36:48 2001
+++ linux-sh-cvs/include/asm-sh/uaccess.h	Fri Nov  2 19:52:47 2001
@@ -1,4 +1,4 @@
-/* $Id: uaccess.h,v 1.13 2001/10/01 02:22:01 gniibe Exp $
+/* $Id: uaccess.h,v 1.1.1.1.2.1 2001/11/03 00:52:47 jzs Exp $
  *
  * User space memory access functions
  *
@@ -216,6 +216,7 @@
 	: "r" (val), "m" (__m(addr)), "i" (-EFAULT) \
         : "memory"); })
 #else
+#define __put_user_u64(val,addr,retval) \
 ({ \
 __asm__ __volatile__( \
 	"1:\n\t" \
diff -ur linux/include/linux/input.h linux-sh-cvs/include/linux/input.h
--- linux/include/linux/input.h	Wed Sep 12 18:34:06 2001
+++ linux-sh-cvs/include/linux/input.h	Mon Oct 15 16:45:12 2001
@@ -2,7 +2,7 @@
 #define _INPUT_H
 
 /*
- * $Id: input.h,v 1.34 2001/05/28 09:06:44 vojtech Exp $
+ * $Id: input.h,v 1.2 2001/10/15 04:32:06 mrbrown Exp $
  *
  *  Copyright (c) 1999-2000 Vojtech Pavlik
  *
@@ -478,6 +478,7 @@
 #define BUS_AMIGA		0x16
 #define BUS_ADB			0x17
 #define BUS_I2C			0x18
+#define BUS_MAPLE		0x19
 
 /*
  * Structures used in ioctls to upload effects to a device
diff -ur linux/include/linux/mtd/partitions.h linux-sh-cvs/include/linux/mtd/partitions.h
--- linux/include/linux/mtd/partitions.h	Tue Jun 12 13:30:27 2001
+++ linux-sh-cvs/include/linux/mtd/partitions.h	Thu Nov  8 15:18:51 2001
@@ -5,7 +5,7 @@
  *
  * This code is GPL
  *
- * $Id: partitions.h,v 1.6 2001/03/17 17:10:21 dwmw2 Exp $
+ * $Id: partitions.h,v 1.7 2001/11/07 01:20:59 jsiegel Exp $
  */
 
 #ifndef MTD_PARTITIONS_H
@@ -26,14 +26,14 @@
  * 	will extend to the end of the master MTD device.
  * offset: absolute starting position within the master MTD device; if 
  * 	defined as MTDPART_OFS_APPEND, the partition will start where the 
- * 	previous one ended.
+ * 	previous one ended; if MTDPART_OFS_NXTBLK, at the next erase block.
  * mask_flags: contains flags that have to be masked (removed) from the 
  * 	master MTD flag set for the corresponding MTD partition.
  * 	For example, to force a read-only partition, simply adding 
  * 	MTD_WRITEABLE to the mask_flags will do the trick.
  *
  * Note: writeable partitions require their size and offset be 
- * erasesize aligned.
+ * erasesize aligned (e.g. use MTDPART_OFS_NEXTBLK).
  */ 
 
 struct mtd_partition {
@@ -43,6 +43,7 @@
 	u_int32_t mask_flags;	/* master MTD flags to mask out for this partition */
 };
 
+#define MTDPART_OFS_NXTBLK	(-2)
 #define MTDPART_OFS_APPEND	(-1)
 #define MTDPART_SIZ_FULL	(0)
 
diff -ur linux/include/net/inet_ecn.h linux-sh-cvs/include/net/inet_ecn.h
--- linux/include/net/inet_ecn.h	Tue Oct 30 18:08:12 2001
+++ linux-sh-cvs/include/net/inet_ecn.h	Sat Jan 19 15:20:17 2002
@@ -1,6 +1,10 @@
 #ifndef _INET_ECN_H_
 #define _INET_ECN_H_
 
+#include <linux/config.h>
+
+#ifdef CONFIG_INET_ECN
+
 static inline int INET_ECN_is_ce(__u8 dsfield)
 {
 	return (dsfield&3) == 3;
@@ -36,6 +40,18 @@
 		(label) |= __constant_htons(2 << 4);		\
     } while (0)
 
+
+#else
+#define INET_ECN_is_ce(x...)		(0)
+#define INET_ECN_is_not_ce(x...)	(0)
+#define INET_ECN_is_capable(x...)	(0)
+#define INET_ECN_encapsulate(x, y)	(x)
+#define IP6_ECN_flow_init(x...)		do { } while (0)
+#define	IP6_ECN_flow_xmit(x...)		do { } while (0)
+#define	INET_ECN_xmit(x...)		do { } while (0)
+#define	INET_ECN_dontxmit(x...)		do { } while (0)
+#endif
+
 static inline void IP_ECN_set_ce(struct iphdr *iph)
 {
 	u32 check = iph->check;
diff -ur linux/init/main.c linux-sh-cvs/init/main.c
--- linux/init/main.c	Fri Dec 21 12:42:04 2001
+++ linux-sh-cvs/init/main.c	Sun Dec  2 22:26:35 2001
@@ -195,6 +195,7 @@
 	{ "scd",     0x0b00 },
 	{ "mcd",     0x1700 },
 	{ "cdu535",  0x1800 },
+	{ "gdrom",   0xFA00 },
 	{ "sonycd",  0x1800 },
 	{ "aztcd",   0x1d00 },
 	{ "cm206cd", 0x2000 },
diff -ur linux/kernel/ptrace.c linux-sh-cvs/kernel/ptrace.c
--- linux/kernel/ptrace.c	Fri Dec 21 12:42:04 2001
+++ linux-sh-cvs/kernel/ptrace.c	Thu Jan 24 05:15:32 2002
@@ -163,6 +163,7 @@
 		maddr = kmap(page);
 		if (write) {
 			memcpy(maddr + offset, buf, bytes);
+			flush_dcache_page(page);
 			flush_page_to_ram(page);
 			flush_icache_page(vma, page);
 		} else {
diff -ur linux/mm/memory.c linux-sh-cvs/mm/memory.c
--- linux/mm/memory.c	Fri Dec 21 12:42:05 2001
+++ linux-sh-cvs/mm/memory.c	Thu Jan 24 05:15:32 2002
@@ -891,7 +891,9 @@
 		pte_t *page_table)
 {
 	flush_page_to_ram(new_page);
+#if 0 /* This is not needed for VIPT cache, performance goes bad if we flush */
 	flush_cache_page(vma, address);
+#endif
 	establish_pte(vma, address, page_table, pte_mkwrite(pte_mkdirty(mk_pte(new_page, vma->vm_page_prot))));
 }
 
@@ -928,7 +930,9 @@
 		int reuse = can_share_swap_page(old_page);
 		unlock_page(old_page);
 		if (reuse) {
+#if 0 /* This is not needed for VIPT cache, performance goes bad if we flush */
 			flush_cache_page(vma, address);
+#endif
 			establish_pte(vma, address, page_table, pte_mkyoung(pte_mkdirty(pte_mkwrite(pte))));
 			spin_unlock(&mm->page_table_lock);
 			return 1;	/* Minor fault */
