diff -u -3 -p -r1.1.1.7 -r1.7
--- arch/m68knommu/Boards.mk	16 May 2003 01:06:13 -0000	1.1.1.7
+++ arch/m68knommu/Boards.mk	16 May 2003 17:05:55 -0000	1.7
@@ -104,6 +104,9 @@ endif
 ifdef CONFIG_COBRA5272
 BOARD := senTec
 endif
+ifdef CONFIG_DEVELER
+BOARD := Develer
+endif
 ifdef CONFIG_BOARD_UC5272
 BOARD := uC5272
 endif
diff -u -3 -p -r1.1.1.9 -r1.10
--- arch/m68knommu/config.in	16 May 2003 01:06:13 -0000	1.1.1.9
+++ arch/m68knommu/config.in	30 Jun 2003 03:08:20 -0000	1.10
@@ -194,6 +194,9 @@ fi
 
 if [ "$CONFIG_M5272" = "y" ]; then
 	bool 'Motorola M5272C3 board support' CONFIG_M5272C3
+	bool 'Develer/AMR board support' CONFIG_DEVELER_AMR
+	bool 'Develer/CDB4 board support' CONFIG_DEVELER_CDB4
+	bool 'Develer/SEAC board support' CONFIG_DEVELER_SEAC
 	bool 'SecureEdge SE1100 board support' CONFIG_SE1100
 	
 	bool 'Arcturus Networks uC5272 dimm board support' CONFIG_BOARD_UC5272
@@ -261,6 +264,11 @@ if [ "$CONFIG_M5206eC3" = "y" -o \
      "$CONFIG_M5307C3" = "y" -o \
      "$CONFIG_M5407C3" = "y" ]; then
 	define_bool CONFIG_MOTOROLA y
+fi
+if [ "$CONFIG_DEVELER_AMR" = "y" -o \
+     "$CONFIG_DEVELER_CDB4" = "y" -o \
+     "$CONFIG_DEVELER_SEAC" = "y" ]; then
+    define_bool CONFIG_DEVELER y
 fi
 
 choice 'RAM size' \
diff -u -3 -p -r1.1.1.4 init.c
--- arch/m68knommu/mm/init.c	28 Jan 2003 18:00:54 -0000	1.1.1.4
+++ arch/m68knommu/mm/init.c	27 Jul 2003 23:09:13 -0000
@@ -66,24 +66,19 @@ unsigned long empty_zero_page;
 
 extern unsigned long rom_length;
 
+#ifdef CONFIG_MAGIC_SYSRQ
 void show_mem(void)
 {
     unsigned long i;
     int free = 0, total = 0, reserved = 0, shared = 0;
-    int cached = 0;
 
     printk("\nMem-info:\n");
     show_free_areas();
-#if 0
-    printk("Free swap:       %6dkB\n",nr_swap_pages<<(PAGE_SHIFT-10));
-#endif
     i = max_mapnr;
     while (i-- > 0) {
 	total++;
 	if (PageReserved(mem_map+i))
 	    reserved++;
-	else if (PageSwapCache(mem_map+i))
-	    cached++;
 	else if (!page_count(mem_map+i))
 	    free++;
 	else
@@ -93,12 +88,9 @@ void show_mem(void)
     printk("%d free pages\n",free);
     printk("%d reserved pages\n",reserved);
     printk("%d pages shared\n",shared);
-    printk("%d pages swap cached\n",cached);
-#if 0
-    printk("%ld pages in page table cache\n",pgtable_cache_size);
-#endif
     show_buffers();
 }
+#endif /* CONFIG_MAGIC_SYSRQ */
 
 extern unsigned long memory_start;
 extern unsigned long memory_end;
diff -u -3 -p -r1.1.1.1 -r1.2
--- arch/m68knommu/mm/kmap.c	22 Jan 2002 00:34:24 -0000	1.1.1.1
+++ arch/m68knommu/mm/kmap.c	30 Jun 2003 05:00:28 -0000	1.2
@@ -9,7 +9,6 @@
 #include <linux/kernel.h>
 #include <linux/string.h>
 #include <linux/types.h>
-#include <linux/malloc.h>
 #include <linux/vmalloc.h>
 
 #include <asm/setup.h>
diff -u -3 -p -r1.1.1.4 -r1.5
--- arch/m68knommu/platform/5272/MOTOROLA/crt0_ram.S	16 May 2003 01:06:14 -0000	1.1.1.4
+++ arch/m68knommu/platform/5272/MOTOROLA/crt0_ram.S	29 May 2003 15:57:21 -0000	1.5
@@ -111,6 +111,7 @@ _start:
 	move.l	#0x80000100, %d0		/* Setup cache mask */
 	movec	%d0, %CACR			/* Enable cache */
 
+#ifdef CONFIG_ROMFS_FS
 	/*
 	 *	Move ROM filesystem above bss :-)
 	 */
@@ -139,6 +140,13 @@ _copy_romfs:
 	cmp.l	%a0, %a2			/* Check if at end */
 	bne	_copy_romfs
 
+#else /* !CONFIG_ROMFS_FS */
+
+	lea.l	_ebss, %a1			/* Get end of bss segment */
+	move.l	%a1, _ramstart			/* Set start of ram */
+
+#endif /* !CONFIG_ROMFS_FS */
+
 	/*
 	 *	Zero out the bss region.
 	 */
@@ -151,6 +159,7 @@ _clear_bss:
 	bne	_clear_bss
 
 #if CONFIG_BLK_DEV_INITRD
+# if CONFIG_ROMFS_FS
 	/*
 	 *	Setup up RAMdisk info if using it.
 	 *	(Must do this after clearing the bss :-)
@@ -158,7 +167,20 @@ _clear_bss:
 	move.l	%d2, initrd_start		/* Set up start of initrd */
 	add.l	%d1, %d2			/* Calculate end of initrd */
 	move.l	%d2, initrd_end
-#endif
+
+# else /* !CONFIG_ROMFS_FS */
+
+	/*
+	 * initrd support for Coldfire currently requires romfs.
+	 * Generic initrd support requires a bootloader protocol to 
+	 * tell the kernel where the image is located.
+	 */
+	moveq.l	#0, %d2
+	move.l	%d2, initrd_start
+	move.l	%d2, initrd_end
+
+# endif /* !CONFIG_ROMFS_FS */
+#endif /* CONFIG_BLK_DEV_INITRD */
 
 	/*
 	 *	Load the current task pointer and stack.
diff -u -3 -p -r1.1.1.3 -r1.2
--- arch/m68knommu/platform/5307/ints.c	16 May 2003 01:06:15 -0000	1.1.1.3
+++ arch/m68knommu/platform/5307/ints.c	30 Jun 2003 05:00:01 -0000	1.2
@@ -51,25 +51,22 @@ static void default_irq_handler(int irq,
 
 #if defined( CONFIG_BOARD_UC5272 )
  
-asm ("
-	.global _start, __ramend
-	.section .romvec
- 
-e_vectors:
-	.long _ramend-4, _start, buserr, trap, trap, trap, trap, trap
-	.long trap, trap, trap, trap, trap, trap, trap, trap
-	.long trap, trap, trap, trap, trap, trap, trap, trap
-	.long inthandler, inthandler, inthandler, inthandler
-	.long inthandler, inthandler, inthandler, inthandler
+__asm__ volatile (
+	".global _start, __ramend\n\t"
+	".section .romvec\n"
+"e_vectors:\n\t"
+	".long _ramend-4, _start, buserr, trap, trap, trap, trap, trap\n\t"
+	".long trap, trap, trap, trap, trap, trap, trap, trap\n\t"
+	".long trap, trap, trap, trap, trap, trap, trap, trap\n\t"
+	".long inthandler, inthandler, inthandler, inthandler\n\t"
+	".long inthandler, inthandler, inthandler, inthandler\n\t"
 	/* TRAP #0-15 */
-	.long system_call, trap, trap, trap, trap, trap, trap, trap
-	.long trap, trap, trap, trap, trap, trap, trap, trap
-	.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-	.text
-
-ignore: rte
- 
-");
+	".long system_call, trap, trap, trap, trap, trap, trap, trap\n\t"
+	".long trap, trap, trap, trap, trap, trap, trap, trap\n\t"
+	".long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n\t"
+	".text\n"
+"ignore: rte\n"
+);
 #endif /* CONFIG_BOARD_UC5272 */
 
 
diff -u -3 -p -r1.1.1.8 -r1.7
--- drivers/char/Config.in	16 May 2003 01:06:48 -0000	1.1.1.8
+++ drivers/char/Config.in	16 May 2003 17:05:55 -0000	1.7
@@ -82,6 +82,9 @@ fi
 
 if [ "$CONFIG_COLDFIRE" = "y" ]; then
   bool 'ColdFire serial support' CONFIG_COLDFIRE_SERIAL
+  if [ "$CONFIG_DEVELER_CDB4" = "y" ]; then
+    bool '16C554 serial support for AEP CDB4 board' CONFIG_SERIAL_CDB4
+  fi
   bool 'ColdFire MBUS Support' CONFIG_MCF_MBUS
   tristate 'ColdFire QSPI Support' CONFIG_MCF_QSPI
   bool 'Support for TEXT based LCD driver' CONFIG_LCDTXT
diff -u -3 -p -r1.1.1.8 -r1.7
--- drivers/char/Makefile	16 May 2003 01:06:48 -0000	1.1.1.8
+++ drivers/char/Makefile	16 May 2003 17:05:55 -0000	1.7
@@ -201,6 +201,7 @@ endif
 
 obj-$(CONFIG_VT) += vt.o vc_screen.o consolemap.o consolemap_deftbl.o $(CONSOLE) selection.o
 obj-$(CONFIG_SERIAL) += $(SERIAL)
+obj-$(CONFIG_SERIAL_CDB4) += $(SERIAL)
 obj-$(CONFIG_SERIAL_HCDP) += hcdp_serial.o
 obj-$(CONFIG_SERIAL_21285) += serial_21285.o
 obj-$(CONFIG_SERIAL_SA1100) += serial_sa1100.o
diff -u -3 -p -r1.1.1.1 -r1.2
--- drivers/char/ds1302.c	28 Jan 2003 18:01:05 -0000	1.1.1.1
+++ drivers/char/ds1302.c	1 Apr 2003 14:17:45 -0000	1.2
@@ -71,10 +71,21 @@ static volatile unsigned short	*ds1302_d
 static volatile unsigned short	*ds1302_dp =
 	(volatile unsigned short *) (MCF_MBAR + MCFSIM_PADAT);
 
+#ifdef CONFIG_DEVELER_CDB4
+
+#define	RTC_RESET	0x0200		/* PA9 of M5272 */
+#define	RTC_IODATA	0x0100		/* PA8 of M5272 */
+#define	RTC_SCLK	0x0080		/* PA7 of M5272 */
+
+#else /* !CONFIG_DEVELER_CDB4 */
+
 #define	RTC_RESET	0x0020		/* PA5 of M5272 */
 #define	RTC_IODATA	0x0040		/* PA6 of M5272 */
 #define	RTC_SCLK	0x0080		/* PA7 of M5272 */
-#endif
+
+#endif /* !CONFIG_DEVELER_CDB4 */
+
+#endif /* !CONFIG_VIOLA_RTC */
 
 void ds1302_sendbits(unsigned int val)
 {
diff -u -3 -p -r1.1.1.8 -r1.5
--- drivers/char/mcfserial.c	25 May 2003 12:23:32 -0000	1.1.1.8
+++ drivers/char/mcfserial.c	29 May 2003 15:58:02 -0000	1.5
@@ -1729,6 +1729,7 @@ static void mcfrs_irqinit(struct mcf_ser
 #if defined(CONFIG_M5272)
 	volatile unsigned long	*icrp;
 	volatile unsigned long	*portp;
+	volatile unsigned short *sportp;
 	volatile unsigned char	*uartp;
 
 	uartp = (volatile unsigned char *) info->addr;
@@ -1749,9 +1750,11 @@ static void mcfrs_irqinit(struct mcf_ser
 
 	/* Enable the output lines for the serial ports */
 	portp = (volatile unsigned long *) (MCF_MBAR + MCFSIM_PBCNT);
-	*portp = (*portp & ~0x000000ff) | 0x00000055;
+	*portp = (*portp & ~0x0000ffff) | 0x00000055;
 	portp = (volatile unsigned long *) (MCF_MBAR + MCFSIM_PDCNT);
 	*portp = (*portp & ~0x000003fc) | 0x000002a8;
+	sportp = (volatile unsigned short *) (MCF_MBAR + MCFSIM_PBDDR);
+	*sportp = (*sportp & ~0x00f0) | 0x0050;
 #elif defined(CONFIG_M5282)
 	volatile unsigned char *icrp, *uartp;
 	volatile unsigned long *imrp;
diff -u -3 -p -r1.1.1.5 -r1.7
--- drivers/char/serial.c	16 May 2003 01:06:50 -0000	1.1.1.5
+++ drivers/char/serial.c	4 Jun 2003 17:56:31 -0000	1.7
@@ -65,6 +65,9 @@
  *
  *  9/02: Add support for IXP425 uart chip. Intel Corporation.
  *	  <support@jungo.com>
+ *
+ * 04/03: Add ColdFire support, based on previous work by Andrea Tarani.
+ *	  Bernardo Innocenti <bernie@develer.com>
  */
 
 static char *serial_version = "5.05c";
@@ -228,6 +231,11 @@ static char *serial_revdate = "2001-07-0
 #ifdef CONFIG_LEDMAN
 #include <linux/ledman.h>
 #endif
+#ifdef CONFIG_COLDFIRE
+#include <asm/coldfire.h>
+#include <asm/mcfpci.h>
+#include <asm/mcfsim.h>
+#endif
 
 /*
  * All of the compatibilty code so we can compile serial.c against
@@ -272,6 +280,13 @@ static struct timer_list serial_timer;
 /* number of characters left in xmit buffer before we ask for more */
 #define WAKEUP_CHARS 256
 
+#ifdef CONFIG_COLDFIRE
+#undef	TTY_MAJOR
+#define	TTY_MAJOR	24
+#undef	TTYAUX_MAJOR
+#define	TTYAUX_MAJOR	25
+#endif
+
 /*
  * IRQ_timeout		- How long the timeout should be for each IRQ
  * 				should be after the IRQ has been active.
@@ -399,6 +414,36 @@ static struct semaphore tmp_buf_sem = MU
 #endif
 
 
+#ifdef CONFIG_COLDFIRE
+static inline void mcf_reset_irq(int irq)
+{
+	volatile unsigned long *icrp;
+
+	irq -= 65;
+	if (irq < 0 || irq >= 32)
+		return;
+
+	icrp = (volatile unsigned long *)(MCF_MBAR + MCFSIM_ICR1) + (irq >> 3);
+	*icrp = (*icrp & 0x77777777) | (0x80000000 >> ((irq & 7) << 2));
+}
+static inline void mcf_manage_sim(int irq, int pri)
+{
+	volatile unsigned long *icrp;
+
+	irq -= 65;
+	if(irq < 0 || irq >= 32)
+		return;
+
+	icrp = (volatile unsigned long *)(MCF_MBAR + MCFSIM_ICR1) + irq / 8;
+	irq = (7 - (irq % 8)) * 4;
+
+	*icrp = (*icrp & ((7 << irq) ^ 0x77777777)) | ((8 + pri) << irq);
+}
+#else /* !CONFIG_COLDFIRE */
+# define mcf_reset_irq(irq) do {} while(0)
+# define mcf_manage_sim(irq,pri) do {} while(0)
+#endif /* !CONFIG_COLDFIRE */
+
 static inline int serial_paranoia_check(struct async_struct *info,
 					kdev_t device, const char *routine)
 {
@@ -898,6 +943,9 @@ static void rs_interrupt(int irq, void *
 			continue;
 		}
 	} while (end_mark != info);
+
+	mcf_reset_irq(irq);
+
 #ifdef CONFIG_SERIAL_MULTIPORT	
 	if (multi->port_monitor)
 		printk("rs port monitor (normal) irq %d: 0x%x, 0x%x\n",
@@ -963,6 +1011,9 @@ static void rs_interrupt_single(int irq,
 #endif
 	} while ((iir & UART_IIR_NO_INT) == 0);
 	info->last_active = jiffies;
+
+	mcf_reset_irq(irq);
+	
 #ifdef CONFIG_SERIAL_MULTIPORT	
 	if (multi->port_monitor)
 		printk("rs port monitor (single) irq %d: 0x%x, 0x%x\n",
@@ -1056,6 +1107,9 @@ static void rs_interrupt_multi(int irq, 
 			continue;
 		break;
 	} 
+
+	mcf_reset_irq(irq);
+
 #ifdef SERIAL_DEBUG_INTR
 	printk("end.\n");
 #endif
@@ -1402,6 +1456,10 @@ static int startup(struct async_struct *
 			}
 			goto errout;
 		}
+#ifdef CONFIG_COLDFIRE
+		else if(handler == rs_interrupt_single)
+			mcf_manage_sim(state->irq, CDB4_COM_IRQPRI);
+#endif /* CONFIG_COLDFIRE */
 	}
 
 	/*
@@ -3878,6 +3936,11 @@ static void autoconfig(struct serial_sta
 	serial_outp(info, UART_IER, 0);
 	
 	restore_flags(flags);
+
+#ifdef CONFIG_SERIAL_CDB4
+	printk("serial: activating INTM workaround for CDB4 on ttyS%d\n", state->line);
+	serial_outp(info, UART_MCR, save_mcr | UART_MCR_OUT2);
+#endif /* CONFIG_SERIAL_CDB4 */
 }
 
 int register_serial(struct serial_struct *req);
@@ -5505,6 +5568,14 @@ static int __init rs_init(void)
 #endif
 	show_serial_version();
 
+#ifdef CONFIG_SERIAL_CDB4
+	printk("serial: Resetting CDB4 UART\n");
+	*((volatile uint16_t *)(MCF_MBAR + MCFSIM_PADDR)) |= (1<<CDB4_COM_RESET_BIT);
+	*((volatile uint16_t *)(MCF_MBAR + MCFSIM_PADAT)) |= (1<<CDB4_COM_RESET_BIT);
+	udelay(1); /* Hold reset for at least 1000ns */
+	*((volatile uint16_t *)(MCF_MBAR + MCFSIM_PADAT)) &= ~(1<<CDB4_COM_RESET_BIT);
+#endif
+
 	/* Initialize the tty_driver structure */
 	
 	memset(&serial_driver, 0, sizeof(struct tty_driver));
@@ -5642,8 +5713,9 @@ static int __init rs_init(void)
 	probe_serial_pci();
 #endif
 #ifdef ENABLE_SERIAL_PNP
-       probe_serial_pnp();
+	probe_serial_pnp();
 #endif
+
 	return 0;
 }
 
diff -u -3 -p -r1.1.1.4 -r1.2
--- drivers/mtd/ftl.c	28 Feb 2003 22:44:26 -0000	1.1.1.4
+++ drivers/mtd/ftl.c	30 Jun 2003 04:59:23 -0000	1.2
@@ -70,7 +70,6 @@
 #include <linux/fs.h>
 #include <linux/ioctl.h>
 #include <linux/hdreg.h>
-#include <stdarg.h>
 
 #if (LINUX_VERSION_CODE >= 0x20100)
 #include <linux/vmalloc.h>
diff -u -3 -p -r1.1.1.3 -r1.2
--- drivers/mtd/mtdcore.c	28 Jan 2003 18:01:11 -0000	1.1.1.3
+++ drivers/mtd/mtdcore.c	30 Jun 2003 04:59:08 -0000	1.2
@@ -17,7 +17,6 @@
 #include <linux/major.h>
 #include <linux/fs.h>
 #include <linux/ioctl.h>
-#include <stdarg.h>
 #include <linux/mtd/compatmac.h>
 #ifdef CONFIG_PROC_FS
 #include <linux/proc_fs.h>
diff -u -3 -p -r1.1.1.2 -r1.2
--- drivers/mtd/chips/Config.in	18 Feb 2002 10:27:09 -0000	1.1.1.2
+++ drivers/mtd/chips/Config.in	21 May 2003 12:55:44 -0000	1.2
@@ -43,6 +43,7 @@ if [ "$CONFIG_MTD_GEN_PROBE" = "y" -o "$
 fi
 dep_tristate '  Support for Intel/Sharp flash chips' CONFIG_MTD_CFI_INTELEXT $CONFIG_MTD_GEN_PROBE
 dep_tristate '  Support for AMD/Fujitsu flash chips' CONFIG_MTD_CFI_AMDSTD $CONFIG_MTD_GEN_PROBE
+bool '    Use BLOCK ERASE command (SST chips have blocks larger than sectors)' CONFIG_MTD_CFI_BLOCKERASE $CONFIG_MTD_CFI_AMDSTD
 
 dep_tristate '  Support for RAM chips in bus mapping' CONFIG_MTD_RAM $CONFIG_MTD
 dep_tristate '  Support for ROM chips in bus mapping' CONFIG_MTD_ROM $CONFIG_MTD
diff -u -3 -p -r1.1.1.3 -r1.4
--- drivers/mtd/chips/cfi_cmdset_0002.c	28 Jan 2003 18:01:11 -0000	1.1.1.3
+++ drivers/mtd/chips/cfi_cmdset_0002.c	21 May 2003 12:55:44 -0000	1.4
@@ -586,7 +586,11 @@ static inline int do_erase_oneblock(stru
 	cfi_send_gen_cmd(0x80, cfi->addr_unlock1, chip->start, map, cfi, CFI_DEVICETYPE_X8, NULL);
 	cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, CFI_DEVICETYPE_X8, NULL);
 	cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, CFI_DEVICETYPE_X8, NULL);
+#if defined(CONFIG_MTD_CFI_BLOCKERASE)
+	cfi_write(map, CMD(0x50), adr);
+#else
 	cfi_write(map, CMD(0x30), adr);
+#endif
 	
 	timeo = jiffies + (HZ*20);
 
diff -u -3 -p -r1.1.1.1 -r1.6
--- drivers/mtd/chips/jedec_probe.c	18 Feb 2002 10:27:09 -0000	1.1.1.1
+++ drivers/mtd/chips/jedec_probe.c	29 May 2003 15:58:44 -0000	1.6
@@ -76,191 +76,207 @@ struct amd_flash_info {
 
 static const struct amd_flash_info jedec_table[] = {
 	{
-		mfr_id: MANUFACTURER_AMD,
-		dev_id: AM29LV160DT,
-		name: "AMD AM29LV160DT",
-		DevSize: SIZE_2MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x10000,31),
+		.mfr_id = MANUFACTURER_AMD,
+		.dev_id = AM29LV160DT,
+		.name = "AMD AM29LV160DT",
+		.DevSize = SIZE_2MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x10000,31),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x04000,1)
 		}
 	}, {
-		mfr_id: MANUFACTURER_AMD,
-		dev_id: AM29LV160DB,
-		name: "AMD AM29LV160DB",
-		DevSize: SIZE_2MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x04000,1),
+		.mfr_id = MANUFACTURER_AMD,
+		.dev_id = AM29LV160DB,
+		.name = "AMD AM29LV160DB",
+		.DevSize = SIZE_2MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x04000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x10000,31)
 		}
 	}, {
-		mfr_id: MANUFACTURER_TOSHIBA,
-		dev_id: TC58FVT160,
-		name: "Toshiba TC58FVT160",
-		DevSize: SIZE_2MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x10000,31),
+		.mfr_id = MANUFACTURER_TOSHIBA,
+		.dev_id = TC58FVT160,
+		.name = "Toshiba TC58FVT160",
+		.DevSize = SIZE_2MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x10000,31),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x04000,1)
 		}
 	}, {
-		mfr_id: MANUFACTURER_FUJITSU,
-		dev_id: MBM29LV160TE,
-		name: "Fujitsu MBM29LV160TE",
-		DevSize: SIZE_2MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x10000,31),
+		.mfr_id = MANUFACTURER_FUJITSU,
+		.dev_id = MBM29LV160TE,
+		.name = "Fujitsu MBM29LV160TE",
+		.DevSize = SIZE_2MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x10000,31),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x04000,1)
 		}
 	}, {
-		mfr_id: MANUFACTURER_TOSHIBA,
-		dev_id: TC58FVB160,
-		name: "Toshiba TC58FVB160",
-		DevSize: SIZE_2MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x04000,1),
+		.mfr_id = MANUFACTURER_TOSHIBA,
+		.dev_id = TC58FVB160,
+		.name = "Toshiba TC58FVB160",
+		.DevSize = SIZE_2MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x04000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x10000,31)
 		}
 	}, {
-		mfr_id: MANUFACTURER_FUJITSU,
-		dev_id: MBM29LV160BE,
-		name: "Fujitsu MBM29LV160BE",
-		DevSize: SIZE_2MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x04000,1),
+		.mfr_id = MANUFACTURER_FUJITSU,
+		.dev_id = MBM29LV160BE,
+		.name = "Fujitsu MBM29LV160BE",
+		.DevSize = SIZE_2MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x04000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x10000,31)
 		}
 	}, {
-		mfr_id: MANUFACTURER_AMD,
-		dev_id: AM29LV800BB,
-		name: "AMD AM29LV800BB",
-		DevSize: SIZE_1MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x04000,1),
+		.mfr_id = MANUFACTURER_AMD,
+		.dev_id = AM29LV800BB,
+		.name = "AMD AM29LV800BB",
+		.DevSize = SIZE_1MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x04000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x10000,15),
 		}
 	}, {
-		mfr_id: MANUFACTURER_AMD,
-		dev_id: AM29F800BB,
-		name: "AMD AM29F800BB",
-		DevSize: SIZE_1MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x04000,1),
+		.mfr_id = MANUFACTURER_AMD,
+		.dev_id = AM29F800BB,
+		.name = "AMD AM29F800BB",
+		.DevSize = SIZE_1MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x04000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x10000,15),
 		}
 	}, {
-		mfr_id: MANUFACTURER_AMD,
-		dev_id: AM29LV800BT,
-		name: "AMD AM29LV800BT",
-		DevSize: SIZE_1MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x10000,15),
+		.mfr_id = MANUFACTURER_AMD,
+		.dev_id = AM29LV800BT,
+		.name = "AMD AM29LV800BT",
+		.DevSize = SIZE_1MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x10000,15),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x04000,1)
 		}
 	}, {
-		mfr_id: MANUFACTURER_AMD,
-		dev_id: AM29F800BT,
-		name: "AMD AM29F800BT",
-		DevSize: SIZE_1MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x10000,15),
+		.mfr_id = MANUFACTURER_AMD,
+		.dev_id = AM29F800BT,
+		.name = "AMD AM29F800BT",
+		.DevSize = SIZE_1MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x10000,15),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x04000,1)
 		}
 	}, {
-		mfr_id: MANUFACTURER_AMD,
-		dev_id: AM29LV800BB,
-		name: "AMD AM29LV800BB",
-		DevSize: SIZE_1MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x10000,15),
+		.mfr_id = MANUFACTURER_AMD,
+		.dev_id = AM29LV800BB,
+		.name = "AMD AM29LV800BB",
+		.DevSize = SIZE_1MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x10000,15),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x04000,1)
 		}
 	}, {
-		mfr_id: MANUFACTURER_ST,
-		dev_id: M29W800T,
-		name: "ST M29W800T",
-		DevSize: SIZE_1MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x10000,15),
+		.mfr_id = MANUFACTURER_ST,
+		.dev_id = M29W800T,
+		.name = "ST M29W800T",
+		.DevSize = SIZE_1MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x10000,15),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x04000,1)
 		}
 	}, {
-		mfr_id: MANUFACTURER_ST,
-		dev_id: M29W160DT,
-		name: "ST M29W160DT",
-		DevSize: SIZE_2MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x10000,31),
+		.mfr_id = MANUFACTURER_ST,
+		.dev_id = M29W160DT,
+		.name = "ST M29W160DT",
+		.DevSize = SIZE_2MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x10000,31),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x04000,1)
 		}
 	}, {
-		mfr_id: MANUFACTURER_ST,
-		dev_id: M29W160DB,
-		name: "ST M29W160DB",
-		DevSize: SIZE_2MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x04000,1),
+		.mfr_id = MANUFACTURER_ST,
+		.dev_id = M29W160DB,
+		.name = "ST M29W160DB",
+		.DevSize = SIZE_2MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x04000,1),
 			  ERASEINFO(0x02000,2),
 			  ERASEINFO(0x08000,1),
 			  ERASEINFO(0x10000,31)
 		}
 	}, {
-		mfr_id: MANUFACTURER_ATMEL,
-		dev_id: AT49BV16X4,
-		name: "Atmel AT49BV16X4",
-		DevSize: SIZE_2MiB,
-		NumEraseRegions: 3,
-		regions: {ERASEINFO(0x02000,8),
+		.mfr_id = MANUFACTURER_ATMEL,
+		.dev_id = AT49BV16X4,
+		.name = "Atmel AT49BV16X4",
+		.DevSize = SIZE_2MiB,
+		.NumEraseRegions = 3,
+		.regions = {ERASEINFO(0x02000,8),
 			  ERASEINFO(0x08000,2),
 			  ERASEINFO(0x10000,30)
 		}
 	}, {
-                mfr_id: MANUFACTURER_ATMEL,
-                dev_id: AT49BV16X4T,
-                name: "Atmel AT49BV16X4T",
-                DevSize: SIZE_2MiB,
-                NumEraseRegions: 3,
-                regions: {ERASEINFO(0x10000,30),
+                .mfr_id = MANUFACTURER_ATMEL,
+                .dev_id = AT49BV16X4T,
+                .name = "Atmel AT49BV16X4T",
+                .DevSize = SIZE_2MiB,
+                .NumEraseRegions = 3,
+                .regions = {ERASEINFO(0x10000,30),
                           ERASEINFO(0x08000,2),
 			  ERASEINFO(0x02000,8)
                 }
 	}, {
-		mfr_id: MANUFACTURER_FUJITSU,
-		dev_id: MBM29LV800BA,
-		name: "Fujitsu MBM29LV800BA",
-		DevSize: SIZE_1MiB,
-		NumEraseRegions: 4,
-		regions: {ERASEINFO(0x04000,1),
+		.mfr_id = MANUFACTURER_FUJITSU,
+		.dev_id = MBM29LV800BA,
+		.name = "Fujitsu MBM29LV800BA",
+		.DevSize = SIZE_1MiB,
+		.NumEraseRegions = 4,
+		.regions = {ERASEINFO(0x04000,1),
 		          ERASEINFO(0x02000,2),
 		          ERASEINFO(0x08000,1),
 		          ERASEINFO(0x10000,15),
-		}
-	} 
+				 }
+	}, {
+		.mfr_id = MANUFACTURER_SST,
+		.dev_id = SST39LF160,
+		.name = "SST 39LF160",
+		.DevSize = SIZE_2MiB,
+#if CONFIG_MTD_CFI_BLOCKERASE 
+		.NumEraseRegions = 1,
+		.regions = {ERASEINFO(0x10000,32)}
+#else
+		/* Split flash in two regions to work around 256 blocks limit */
+		.NumEraseRegions = 2,
+		.regions = {
+			ERASEINFO(0x01000,256),
+			ERASEINFO(0x01000,256)
+		} 
+#endif
+	}
 };
 
 
@@ -423,8 +439,8 @@ static int jedec_probe_chip(struct map_i
 }
 
 static struct chip_probe jedec_chip_probe = {
-	name: "JEDEC",
-	probe_chip: jedec_probe_chip
+	.name = "JEDEC",
+	.probe_chip = jedec_probe_chip
 };
 
 struct mtd_info *jedec_probe(struct map_info *map)
@@ -437,9 +453,9 @@ struct mtd_info *jedec_probe(struct map_
 }
 
 static struct mtd_chip_driver jedec_chipdrv = {
-	probe: jedec_probe,
-	name: "jedec_probe",
-	module: THIS_MODULE
+	.probe	= jedec_probe,
+	.name	= "jedec_probe",
+	.module	= THIS_MODULE
 };
 
 int __init jedec_probe_init(void)
diff -u -3 -p -r1.1.1.7 -r1.10
--- drivers/mtd/maps/Config.in	16 May 2003 01:07:04 -0000	1.1.1.7
+++ drivers/mtd/maps/Config.in	21 May 2003 12:55:44 -0000	1.10
@@ -101,6 +101,12 @@ if [ "$CONFIG_ARM" = "y" ]; then
    dep_tristate '  CFI Flash device mapped on Epxa10db' CONFIG_MTD_EPXA10DB $CONFIG_MTD_CFI  $CONFIG_MTD_PARTITIONS $CONFIG_ARCH_CAMELOT
    dep_tristate '  NV-RAM mapping AUTCPU12 board' CONFIG_MTD_AUTCPU12 $CONFIG_ARCH_AUTCPU12
    dep_tristate '  CFI Flash device mapped on IXP425' CONFIG_MTD_IXP425 $CONFIG_MTD_CFI $CONFIG_MTD_PARTITIONS
+fi
+
+if [ "$CONFIG_M5272" = "y" ]; then
+	dep_tristate '  CFI Flash device mapped on Motorola M5272C3' CONFIG_MTD_M5272C3 $CONFIG_MTD_CFI
+	dep_tristate '  CFI Flash Develer mapping' CONFIG_MTD_DEVELER_CFI $CONFIG_MTD_CFI
+	dep_tristate '  JEDEC Flash Develer mapping' CONFIG_MTD_DEVELER_JEDEC $CONFIG_MTD_CFI
 fi
 
 if [ "$CONFIG_COBRA5272" = "y" ]; then
diff -u -3 -p -r1.1.1.7 -r1.8
--- drivers/mtd/maps/Makefile	16 May 2003 01:07:04 -0000	1.1.1.7
+++ drivers/mtd/maps/Makefile	16 May 2003 17:05:55 -0000	1.8
@@ -43,7 +43,9 @@ obj-$(CONFIG_MTD_SNAPGEODE)	+= snapgeode
 obj-$(CONFIG_MTD_SOLUTIONENGINE)+= solutionengine.o
 obj-$(CONFIG_MTD_ADVANTA)	+= advanta.o
 obj-$(CONFIG_MTD_KeyTechnology)	+= keyTechnology.o
-obj-$(CONFIG_MTD_COBRA5272)     += cobra5272.o
+obj-$(CONFIG_MTD_DEVELER_CFI)	+= develer_cfi.o
+obj-$(CONFIG_MTD_DEVELER_JEDEC)	+= develer_jedec.o
+obj-$(CONFIG_MTD_COBRA5272)	+= cobra5272.o
 obj-$(CONFIG_MTD_M5272C3)	+= m5272c3.o
 obj-$(CONFIG_MTD_PCI)		+= pci.o
 obj-$(CONFIG_MTD_PB1000)        += pb1xxx-flash.o
diff -u -3 -p -r1.1.1.8 -r1.3
--- drivers/net/cs89x0.c	25 May 2003 12:23:47 -0000	1.1.1.8
+++ drivers/net/cs89x0.c	25 May 2003 14:35:48 -0000	1.3
@@ -1920,10 +1920,14 @@ static int set_mac_address(struct net_de
 
 	if (netif_running(dev))
 		return -EBUSY;
+
+	for (i = 0; i < 6; i++)
+		dev->dev_addr[i] = ((unsigned char *)addr)[i];
+
 	if (net_debug) {
 		printk("%s: Setting MAC address to ", dev->name);
 		for (i = 0; i < 6; i++)
-			printk(" %2.2x", dev->dev_addr[i] = ((unsigned char *)addr)[i]);
+			printk(" %2.2x", dev->dev_addr[i]);
 		printk(".\n");
 	}
 	/* set the Ethernet address */
diff -u -3 -p -r1.1.1.4 -r1.2
--- fs/Config.in	28 Feb 2003 22:44:48 -0000	1.1.1.4
+++ fs/Config.in	6 Mar 2003 15:24:52 -0000	1.2
@@ -45,6 +45,7 @@ fi
 dep_tristate 'Journalling Flash File System v2 (JFFS2) support' CONFIG_JFFS2_FS $CONFIG_MTD
 if [ "$CONFIG_JFFS2_FS" = "y" -o "$CONFIG_JFFS2_FS" = "m" ] ; then
    int 'JFFS2 debugging verbosity (0 = quiet, 2 = noisy)' CONFIG_JFFS2_FS_DEBUG 0
+   dep_tristate '  Tweak garbage collection parms for AMR AMD AM29PL160 flash' CONFIG_TWEAK_JFFS2_GC_PARMS $CONFIG_MTD_AMR_CFI
 fi
 tristate 'Compressed ROM file system support' CONFIG_CRAMFS
 bool 'Virtual memory file system support (former shm fs)' CONFIG_TMPFS
diff -u -3 -p -r1.1.1.7 -r1.12
--- fs/binfmt_flat.c	16 May 2003 01:07:35 -0000	1.1.1.7
+++ fs/binfmt_flat.c	25 Jul 2003 03:49:41 -0000	1.12
@@ -79,14 +79,15 @@ static int load_flat_shared_library(int 
 #endif
 
 static int load_flat_binary(struct linux_binprm *, struct pt_regs * regs);
-static int load_flat_library(struct file*);
 static int flat_core_dump(long signr, struct pt_regs * regs, struct file *file);
 
 extern void dump_thread(struct pt_regs *, struct user *);
 
 static struct linux_binfmt flat_format = {
-	NULL, THIS_MODULE, load_flat_binary, load_flat_library,
-	flat_core_dump, PAGE_SIZE
+	.module		= THIS_MODULE,
+	.load_binary	= load_flat_binary,
+	.core_dump	= flat_core_dump,
+	.min_coredump	= PAGE_SIZE
 };
 
 
@@ -479,9 +480,12 @@ calc_reloc(unsigned long r, struct lib_i
 	text_len = p->lib_list[id].text_len;
 
 	if (r > start_brk - start_data + text_len) {
-		printk("BINFMT_FLAT: reloc outside program 0x%x (0 - 0x%x/0x%x)",
+		printk("BINFMT_FLAT: reloc outside program 0x%x (0 - 0x%x/0x%x)\n",
 				(int) r,(int)(start_brk-start_code),(int)text_len);
-		goto failed;
+
+		return(start_brk); /* return something safe to write to */
+
+		/*	goto failed; */
 	}
 
 	if (r < text_len)			/* In text segment */
@@ -492,11 +496,13 @@ calc_reloc(unsigned long r, struct lib_i
 	/* Range checked already above so doing the range tests is redundant...*/
 	return(addr);
 
+#ifdef CONFIG_BINFMT_SHARED_FLAT
 failed:
 	printk(", killing %s!\n", current->comm);
 	send_sig(SIGSEGV, current, 0);
-
+	
 	return RELOC_FAILED;
+#endif
 }
 
 /****************************************************************************/
@@ -662,6 +668,11 @@ static int load_flat_file(struct linux_b
 	}
 
 	/*
+	 * calculate the extra space we need to map in
+	 */
+	extra = MAX(bss_len + stack_len, relocs * sizeof(unsigned long));
+
+	/*
 	 * there are a couple of cases here,  the seperate code/data
 	 * case,  and then the fully copied to RAM case which lumps
 	 * it all together.
@@ -683,8 +694,6 @@ static int load_flat_file(struct linux_b
 			return(textpos);
 		}
 
-		extra = MAX(bss_len + stack_len, relocs * sizeof(unsigned long));
-
 		down_write(&current->mm->mmap_sem);
 		realdatastart = do_mmap(0, 0, data_len + extra +
 				MAX_SHARED_LIBS * sizeof(unsigned long),
@@ -726,13 +735,6 @@ static int load_flat_file(struct linux_b
 		memp = realdatastart;
 
 	} else {
-
-		/*
-		 * calculate the extra space we need to map in
-		 */
-
-		extra = MAX(bss_len + stack_len, relocs * sizeof(unsigned long));
-
 		down_write(&current->mm->mmap_sem);
 		textpos = do_mmap(0, 0, text_len + data_len + extra +
 					MAX_SHARED_LIBS * sizeof(unsigned long),
@@ -1050,11 +1052,6 @@ static int load_flat_binary(struct linux
 }
 
 /****************************************************************************/
-
-static int load_flat_library(struct file *file)
-{
-	return(-ENOEXEC);
-}
 
 static int __init init_flat_binfmt(void)
 {
diff -u -3 -p -r1.1.1.4 -r1.2
--- fs/exec.c	28 Feb 2003 22:44:49 -0000	1.1.1.4
+++ fs/exec.c	26 May 2003 08:03:28 -0000	1.2
@@ -444,12 +444,14 @@ static int exec_mmap(void)
 			return -ENOMEM;
 		}
 
+#ifndef NO_MM
 		/* Add it to the list of mm's */
 		spin_lock(&mmlist_lock);
 		list_add(&mm->mmlist, &init_mm.mmlist);
 		mmlist_nr++;
 		spin_unlock(&mmlist_lock);
-
+#endif /* NO_MM */
+		
 		task_lock(current);
 		active_mm = current->active_mm;
 		current->mm = mm;
diff -u -3 -p -r1.1.1.3 locks.c
--- fs/locks.c	28 Feb 2003 22:44:49 -0000	1.1.1.3
+++ fs/locks.c	27 Jul 2003 23:09:25 -0000
@@ -1668,6 +1668,7 @@ int fcntl_setlk64(unsigned int fd, unsig
 	error = -EINVAL;
 	inode = filp->f_dentry->d_inode;
 
+#ifndef NO_MM
 	/* Don't allow mandatory locks on files that may be memory mapped
 	 * and shared.
 	 */
@@ -1680,6 +1681,7 @@ int fcntl_setlk64(unsigned int fd, unsig
 			goto out_putf;
 		}
 	}
+#endif /* NO_MM */
 
 	error = flock64_to_posix_lock(filp, file_lock, &flock);
 	if (error)
diff -u -3 -p -r1.1.1.5 -r1.7
--- fs/jffs2/nodelist.h	28 Feb 2003 22:44:51 -0000	1.1.1.5
+++ fs/jffs2/nodelist.h	6 Mar 2003 15:25:10 -0000	1.7
@@ -222,13 +222,26 @@ struct jffs2_eraseblock
 #define ALLOC_DELETION	1	/* Deletion node. Best to allow it */
 #define ALLOC_GC	2	/* Space requested for GC. Give it or die */
 
-#define JFFS2_RESERVED_BLOCKS_BASE 3						/* Number of free blocks there must be before we... */
-#define JFFS2_RESERVED_BLOCKS_WRITE (JFFS2_RESERVED_BLOCKS_BASE + 2)		/* ... allow a normal filesystem write */
-#define JFFS2_RESERVED_BLOCKS_DELETION (JFFS2_RESERVED_BLOCKS_BASE + 1)		/* ... allow a normal filesystem deletion */
+#ifdef CONFIG_TWEAK_JFFS2_GC_PARMS
+
+/* Settings for Develer AMD flash, with big 256k blocks */
+#define JFFS2_RESERVED_BLOCKS_BASE 1						
+#define JFFS2_RESERVED_BLOCKS_WRITE (JFFS2_RESERVED_BLOCKS_BASE + 1)		
+#define JFFS2_RESERVED_BLOCKS_DELETION (JFFS2_RESERVED_BLOCKS_BASE)		
+#define JFFS2_RESERVED_BLOCKS_GCTRIGGER (JFFS2_RESERVED_BLOCKS_BASE + 1)
+#define JFFS2_RESERVED_BLOCKS_GCBAD (JFFS2_RESERVED_BLOCKS_BASE)
+#define JFFS2_RESERVED_BLOCKS_GCMERGE (JFFS2_RESERVED_BLOCKS_BASE)	
+
+#else
+
+#define JFFS2_RESERVED_BLOCKS_BASE 3   /* Number of free blocks there must be before we... */
+#define JFFS2_RESERVED_BLOCKS_WRITE (JFFS2_RESERVED_BLOCKS_BASE + 2)	/* ... allow a normal filesystem write */
+#define JFFS2_RESERVED_BLOCKS_DELETION (JFFS2_RESERVED_BLOCKS_BASE + 1)/* ... allow a normal filesystem deletion */
 #define JFFS2_RESERVED_BLOCKS_GCTRIGGER (JFFS2_RESERVED_BLOCKS_BASE + 3)	/* ... wake up the GC thread */
 #define JFFS2_RESERVED_BLOCKS_GCBAD (JFFS2_RESERVED_BLOCKS_BASE + 1)		/* ... pick a block from the bad_list to GC */
-#define JFFS2_RESERVED_BLOCKS_GCMERGE (JFFS2_RESERVED_BLOCKS_BASE)		/* ... merge pages when garbage collecting */
+#define JFFS2_RESERVED_BLOCKS_GCMERGE (JFFS2_RESERVED_BLOCKS_BASE)	/* ... merge pages when garbage collecting */
 
+#endif /* CONFIG_TWEAK_JFFS2_GC_PARMS */
 
 #define PAD(x) (((x)+3)&~3)
 
diff -u -3 -p -r1.1.1.4 proc_misc.c
--- fs/proc/proc_misc.c	28 Feb 2003 22:44:53 -0000	1.1.1.4
+++ fs/proc/proc_misc.c	27 Jul 2003 23:09:26 -0000
@@ -182,8 +182,10 @@ static int meminfo_read_proc(char *page,
 		"MemFree:      %8lu kB\n"
 		"MemShared:    %8lu kB\n"
 		"Buffers:      %8lu kB\n"
+#ifndef NO_MM
 		"Cached:       %8lu kB\n"
 		"SwapCached:   %8lu kB\n"
+#endif /* NO_MM */
 		"Active:       %8u kB\n"
 		"Inactive:     %8u kB\n"
 		"HighTotal:    %8lu kB\n"
@@ -196,8 +198,10 @@ static int meminfo_read_proc(char *page,
 		K(i.freeram),
 		K(i.sharedram),
 		K(i.bufferram),
+#ifndef NO_MM
 		K(pg_size - swapper_space.nrpages),
 		K(swapper_space.nrpages),
+#endif /* NO_MM */
 		K(nr_active_pages),
 		K(nr_inactive_pages),
 		K(i.totalhigh),
diff -u -3 -p -r1.1.1.3 -r1.5
--- include/asm-m68knommu/nettel.h	28 Feb 2003 22:45:03 -0000	1.1.1.3
+++ include/asm-m68knommu/nettel.h	12 Mar 2003 15:23:30 -0000	1.5
@@ -16,7 +16,7 @@
 #include <linux/config.h>
 
 /****************************************************************************/
-#ifdef CONFIG_NETtel
+#if defined(CONFIG_NETtel) || defined(CONFIG_DEVELER_AMR) || defined(CONFIG_DEVELER_CDB4)
 /****************************************************************************/
 
 #ifdef CONFIG_COLDFIRE
@@ -98,6 +98,10 @@ static __inline__ void mcf_setppleds(uns
  */
 #define	MCF_HAVEDCD0
 #define	MCF_HAVEDTR0
+#if defined(CONFIG_DEVELER_AMR) || defined(CONFIG_DEVELER_CDB4)
+#define	MCF_HAVEDCD1
+#define	MCF_HAVEDTR1
+#endif
 
 #ifndef __ASSEMBLY__
 static __inline__ unsigned int mcf_getppdcd(unsigned int portnr)
@@ -107,6 +111,13 @@ static __inline__ unsigned int mcf_getpp
 		pp = (volatile unsigned short *) (MCF_MBAR + MCFSIM_PBDAT);
 		return((*pp & 0x0080) ? 0 : 1);
 	}
+#if defined(HAVE_DCD1)
+	else if (portnr == 1) {
+		pp = (volatile unsigned short *) (MCF_MBAR + MCFSIM_PBDAT);
+		return((*pp & 0x0020) ? 0 : 1);
+	}
+#endif
+
 	return(0);
 }
 
@@ -117,6 +128,12 @@ static __inline__ unsigned int mcf_getpp
 		pp = (volatile unsigned short *) (MCF_MBAR + MCFSIM_PBDAT);
 		return((*pp & 0x0040) ? 0 : 1);
 	}
+#if defined(HAVE_DTR1)
+	else if (portnr == 1) {
+		pp = (volatile unsigned short *) (MCF_MBAR + MCFSIM_PBDAT);
+		return((*pp & 0x0010) ? 0 : 1);
+	}
+#endif
 	return(0);
 }
 
@@ -134,6 +151,6 @@ static __inline__ void mcf_setppdtr(unsi
 /*---------------------------------------------------------------------------*/
 
 /****************************************************************************/
-#endif /* CONFIG_NETtel */
+#endif /* CONFIG_NETtel || CONFIG_DEVELER_AMR || CONFIG_DEVELER_CDB4 */
 /****************************************************************************/
 #endif	/* nettel_h */
diff -u -3 -p -r1.1.1.2 -r1.2
--- include/asm-m68knommu/semaphore.h	28 Feb 2003 22:45:03 -0000	1.1.1.2
+++ include/asm-m68knommu/semaphore.h	27 Jun 2003 15:03:59 -0000	1.2
@@ -146,7 +146,7 @@ extern inline int down_trylock(struct se
 		".previous"
 		: "=d" (result)
 		: "a" (sem1)
-		: "%d0", "memory");
+		: "memory");
 	return result;
 }
 
diff -u -3 -p -r1.1.1.6 -r1.5
--- include/asm-m68knommu/system.h	16 May 2003 01:08:09 -0000	1.1.1.6
+++ include/asm-m68knommu/system.h	30 Jun 2003 04:58:40 -0000	1.5
@@ -217,8 +217,8 @@ static inline unsigned long __xchg(unsig
 #endif
 
 #ifdef CONFIG_COLDFIRE
-#if defined(CONFIG_M5272) && (defined(CONFIG_NETtel) || \
-	defined(CONFIG_GILBARCONAP) || defined(CONFIG_SE1100))
+#if defined(CONFIG_M5272)
+#if defined(CONFIG_NETtel) || defined(CONFIG_GILBARCONAP) || defined(CONFIG_SE1100)
 /*
  *	Need to account for broken early mask of 5272 silicon. So don't
  *	jump through the original start address. Jump strait into the
@@ -230,6 +230,14 @@ static inline unsigned long __xchg(unsig
         jmp 0xf0000400;			\
         ");				\
 })
+#elif defined(CONFIG_DEVELER_AMR) || defined(CONFIG_DEVELER_CDB4) || defined(CONFIG_DEVELER_SEAC)
+#define HARD_RESET_NOW() ({			\
+	asm(					\
+		"movew #0x2700, %sr\n\t"	\
+		"jmp 0xffe00400\n"		\
+	);					\
+})
+#endif
 /* 
  * HARD_RESET_NOW() for senTec COBRA5272:
  *
diff -u -3 -p -r1.1.1.4 -r1.2
--- include/linux/fs.h	28 Feb 2003 22:45:12 -0000	1.1.1.4
+++ include/linux/fs.h	25 Jul 2003 03:49:14 -0000	1.2
@@ -405,9 +405,11 @@ struct address_space {
 	unsigned long		nrpages;	/* number of total pages */
 	struct address_space_operations *a_ops;	/* methods */
 	struct inode		*host;		/* owner: inode, block_device */
+#ifndef NO_MM
 	struct vm_area_struct	*i_mmap;	/* list of private mappings */
 	struct vm_area_struct	*i_mmap_shared; /* list of shared mappings */
 	spinlock_t		i_shared_lock;  /* and spinlock protecting it */
+#endif /* NO_MM */
 	int			gfp_mask;	/* how to allocate the pages */
 };
 
diff -u -3 -p -r1.1.1.4 mm.h
--- include/linux/mm.h	28 Jan 2003 18:01:42 -0000	1.1.1.4
+++ include/linux/mm.h	27 Jul 2003 23:09:31 -0000
@@ -547,8 +547,10 @@ extern void swapin_readahead(swp_entry_t
 #define swap_count(page) 0
 #endif /* CONFIG_UCLINUX */
 
+#ifndef NO_MM
 extern struct address_space swapper_space;
 #define PageSwapCache(page) ((page)->mapping == &swapper_space)
+#endif /* NO_MM */
 
 static inline int is_page_cache_freeable(struct page * page)
 {
diff -u -3 -p -r1.1.1.2 -r1.2
--- include/linux/serialP.h	28 Jan 2003 18:01:43 -0000	1.1.1.2
+++ include/linux/serialP.h	5 Apr 2003 17:25:18 -0000	1.2
@@ -126,11 +126,14 @@ struct rs_multiport_struct {
 	int		port_monitor;
 };
 
-#if defined(__alpha__) && !defined(CONFIG_PCI)
+#if (defined(__alpha__) && !defined(CONFIG_PCI)) || defined(CONFIG_SERIAL_CDB4)
 /*
  * Digital did something really horribly wrong with the OUT1 and OUT2
  * lines on at least some ALPHA's.  The failure mode is that if either
  * is cleared, the machine locks up with endless interrupts.
+ *
+ * CDB4 board has the very same problem, so we're using the very same
+ * workaround.
  */
 #define ALPHA_KLUDGE_MCR  (UART_MCR_OUT2 | UART_MCR_OUT1)
 #else
diff -u -3 -p -r1.1.1.5 -r1.2
--- kernel/fork.c	28 Feb 2003 22:45:16 -0000	1.1.1.5
+++ kernel/fork.c	26 May 2003 08:12:45 -0000	1.2
@@ -381,34 +381,6 @@ fail_nomem:
 
 #else /* !CONFIG_UCLINUX */
 
-spinlock_t mmlist_lock __cacheline_aligned = SPIN_LOCK_UNLOCKED;
-int mmlist_nr;
-
-static inline int dup_mmap(struct mm_struct * mm)
-{
-	struct mm_tblock_struct * tmp = &current->mm->tblock;
-	struct mm_tblock_struct * newtmp = &mm->tblock;
-	extern long realalloc, askedalloc;	
-
-	/* Kill me slowly. UGLY! FIXME! */
-	memcpy(&mm->start_code, &current->mm->start_code, 15*sizeof(unsigned long));
-	mm->tblock.rblock = 0;
-	mm->tblock.next = 0;
-
-	while((tmp = tmp->next)) {
-		newtmp->next = kmalloc(sizeof(struct mm_tblock_struct), GFP_KERNEL);
-		if (!newtmp->next) return -ENOMEM; /* FIXME:  Does not unwind */
-		realalloc += ksize(newtmp->next);
-		askedalloc += sizeof(struct mm_tblock_struct);
-		newtmp->next->rblock = tmp->rblock;
-		if (tmp->rblock)
-			tmp->rblock->refcount++;
-		newtmp->next->next = 0;
-		newtmp = newtmp->next;
-	}
-	return 0;
-}
-
 /*
  * Allocate and initialize an mm_struct.
  */
diff -u -3 -p -r1.1.1.3 Makefile
--- mmnommu/Makefile	28 Jan 2003 18:01:45 -0000	1.1.1.3
+++ mmnommu/Makefile	27 Jul 2003 23:09:32 -0000
@@ -11,7 +11,7 @@ O_TARGET := mmnommu.o
 obj-y	 := bootmem.o filemap.o mlock.o mmap.o \
 			mprotect.o mremap.o numa.o \
 			slab.o swapfile.o vmalloc.o vmscan.o memory.o \
-			swap.o swap_state.o oom_kill.o
+			swap.o oom_kill.o
 
 ifdef CONFIG_CONTIGUOUS_PAGE_ALLOC
 obj-y    += page_alloc2.o
diff -u -3 -p -r1.1.1.4 filemap.c
--- mmnommu/filemap.c	28 Feb 2003 22:45:17 -0000	1.1.1.4
+++ mmnommu/filemap.c	27 Jul 2003 23:09:32 -0000
@@ -124,7 +124,7 @@ static inline void remove_page_from_hash
  */
 void __remove_inode_page(struct page *page)
 {
-	if (PageDirty(page) && !PageSwapCache(page))
+	if (PageDirty(page))
 		BUG();
 	remove_page_from_inode_queue(page);
 	remove_page_from_hash_queue(page);
@@ -1431,12 +1431,14 @@ found_page:
 			goto page_not_up_to_date;
 		generic_file_readahead(reada_ok, filp, inode, page);
 page_ok:
+#ifndef NO_MM
 		/* If users can be writing to this page using arbitrary
 		 * virtual addresses, take care about potential aliasing
 		 * before reading the page on the kernel side.
 		 */
 		if (mapping->i_mmap_shared != NULL)
 			flush_dcache_page(page);
+#endif /* NO_MM */
 
 		/*
 		 * Mark the page accessed if we read the
diff -u -3 -p -r1.1.1.5 mmap.c
--- mmnommu/mmap.c	28 Feb 2003 22:45:17 -0000	1.1.1.5
+++ mmnommu/mmap.c	27 Jul 2003 23:09:32 -0000
@@ -1246,20 +1246,18 @@ unsigned long get_unmapped_area(struct f
 #ifdef DEBUG
 static void show_process_blocks(void)
 {
-	struct mm_tblock_struct * tblock, *tmp;
+	struct mm_tblock_struct *tblock;
 	
 	printk("Process blocks %d:", current->pid);
-	
-	tmp = &current->mm->tblock;
-	while (tmp) {
-		printk(" %p: %p", tmp, tmp->rblock);
-		if (tmp->rblock)
-			printk(" (%d @%p #%d)", ksize(tmp->rblock->kblock), tmp->rblock->kblock, tmp->rblock->refcount);
-		if (tmp->next)
+
+	for (tblock = &current->mm->tblock; tblock; tblock = tblock->next) {
+		printk(" %p: %p", tblock, tblock->rblock);
+		if (tblock->rblock)
+			printk(" (%d @%p #%d)", ksize(tblock->rblock), tblock->rblock->kblock, tblock->rblock->refcount);
+		if (tblock->next)
 			printk(" ->");
 		else
 			printk(".");
-		tmp = tmp->next;
 	}
 	printk("\n");
 }
@@ -1348,8 +1346,7 @@ unsigned long do_mmap_pgoff(
 	if (file) {
 		struct vm_area_struct vma;
 		int error;
-		
-		
+
 		if (!file->f_op)
 			return -ENODEV;
 
@@ -1375,7 +1372,7 @@ unsigned long do_mmap_pgoff(
 #endif /* MAGIC_ROM_PTR */
 		/* Then try full mmap routine, which might return a RAM pointer,
 		   or do something truly complicated. */
-		   
+
 		if (file->f_op->mmap) {
 			error = file->f_op->mmap(file, &vma);
 				   
diff -u -3 -p -r1.1.1.5 page_alloc2.c
--- mmnommu/page_alloc2.c	28 Feb 2003 22:45:17 -0000	1.1.1.5
+++ mmnommu/page_alloc2.c	27 Jul 2003 23:09:32 -0000
@@ -225,8 +225,6 @@ void free_pages(unsigned long addr, unsi
 
 void __free_pages(struct page *page, unsigned int order)
 {
-	int flags;
-
 	DBG_ALLOC("%s,%d: %s(0x%x[0x%x], %d)\n", __FILE__, __LINE__,
 			__FUNCTION__, page, page_address(page), order);
 
@@ -870,8 +868,7 @@ mem_map_read_proc(char *page, char **sta
 # endif
 #endif
 					PRINTK("X");
-			} else if (PageSwapCache(p))
-				PRINTK("S");
+			}
 			else if (PageLocked(p))
 				PRINTK("L");
 			else if (PageActive(p))
diff -u -3 -p -r1.1.1.3 swap_state.c
--- mmnommu/swap_state.c	28 Feb 2003 22:45:17 -0000	1.1.1.3
+++ mmnommu/swap_state.c	27 Jul 2003 23:09:32 -0000
@@ -40,22 +40,14 @@ static struct address_space_operations s
 	sync_page: block_sync_page,
 };
 
-#endif /* NO_MM */
-
 struct address_space swapper_space = {
 	LIST_HEAD_INIT(swapper_space.clean_pages),
 	LIST_HEAD_INIT(swapper_space.dirty_pages),
 	LIST_HEAD_INIT(swapper_space.locked_pages),
 	0,				/* nrpages	*/
-#ifndef NO_MM
 	&swap_aops,
-#else
-	NULL,
-#endif
 };
 
-#ifndef NO_MM
-
 #ifdef SWAP_CACHE_INFO
 #define INC_CACHE_INFO(x)	(swap_cache_info.x++)
 
@@ -101,7 +93,6 @@ int add_to_swap_cache(struct page *page,
 	return 0;
 }
 
-#endif /* NO_MM */
 
 /*
  * This must be called only on pages that have
@@ -109,7 +100,6 @@ int add_to_swap_cache(struct page *page,
  */
 void __delete_from_swap_cache(struct page *page)
 {
-#ifndef NO_MM
 	if (!PageLocked(page))
 		BUG();
 	if (!PageSwapCache(page))
@@ -117,9 +107,6 @@ void __delete_from_swap_cache(struct pag
 	ClearPageDirty(page);
 	__remove_inode_page(page);
 	INC_CACHE_INFO(del_total);
-#else
-	BUG();
-#endif /* NO_MM */
 }
 
 /*
@@ -130,7 +117,6 @@ void __delete_from_swap_cache(struct pag
  */
 void delete_from_swap_cache(struct page *page)
 {
-#ifndef NO_MM
 	swp_entry_t entry;
 
 	if (!PageLocked(page))
@@ -147,9 +133,6 @@ void delete_from_swap_cache(struct page 
 
 	swap_free(entry);
 	page_cache_release(page);
-#else
-	BUG();
-#endif /* NO_MM */
 }
 
 /* 
@@ -168,9 +151,7 @@ void free_page_and_swap_cache(struct pag
 	 * 					- Marcelo
 	 */
 	if (PageSwapCache(page) && !TryLockPage(page)) {
-#ifndef NO_MM
 		remove_exclusive_swap_page(page);
-#endif
 		UnlockPage(page);
 	}
 	page_cache_release(page);
@@ -184,7 +165,6 @@ void free_page_and_swap_cache(struct pag
  */
 struct page * lookup_swap_cache(swp_entry_t entry)
 {
-#ifndef NO_MM
 	struct page *found;
 
 	found = find_get_page(&swapper_space, entry.val);
@@ -198,10 +178,6 @@ struct page * lookup_swap_cache(swp_entr
 	if (found)
 		INC_CACHE_INFO(find_success);
 	return found;
-#else
-	BUG();
-	return((struct page *) 0);
-#endif /* NO_MM */
 }
 
 /* 
@@ -213,7 +189,6 @@ struct page * lookup_swap_cache(swp_entr
 
 struct page * read_swap_cache_async(swp_entry_t entry)
 {
-#ifndef NO_MM
 	struct page *found_page, *new_page = NULL;
 	int err;
 
@@ -259,8 +234,6 @@ struct page * read_swap_cache_async(swp_
 	if (new_page)
 		page_cache_release(new_page);
 	return found_page;
-#else
-	BUG();
-	return((struct page *) 0);
-#endif
 }
+
+#endif /* NO_MM */
diff -u -3 -p -r1.1.1.4 vmscan.c
--- mmnommu/vmscan.c	28 Feb 2003 22:45:17 -0000	1.1.1.4
+++ mmnommu/vmscan.c	27 Jul 2003 23:09:32 -0000
@@ -511,21 +511,22 @@ page_mapped:
 		}
 
 		/* point of no return */
+#ifdef NO_MM
+		__remove_inode_page(page);
+		spin_unlock(&pagecache_lock);
+#else /* !NO_MM */
 		if (likely(!PageSwapCache(page))) {
 			__remove_inode_page(page);
 			spin_unlock(&pagecache_lock);
 		} else {
 			swp_entry_t swap;
 			swap.val = page->index;
-#ifndef NO_MM
 			__delete_from_swap_cache(page);
 			/* must drop lru lock if getting swap_list lock */
-#endif
 			spin_unlock(&pagecache_lock);
-#ifndef NO_MM
 			swap_free(swap);
-#endif
 		}
+#endif /* !NO_MM */
 
 		__lru_cache_del(page);
 		UnlockPage(page);
diff -u -3 -p -r1.1.1.3 -r1.2
--- net/Config.in	28 Jan 2003 18:01:45 -0000	1.1.1.3
+++ net/Config.in	5 Apr 2003 07:48:00 -0000	1.2
@@ -94,11 +94,6 @@ fi
 #bool 'Network code profiler' CONFIG_NET_PROFILE
 endmenu
 
-tristate 'IP Security Protocol (FreeS/WAN IPSEC)' CONFIG_IPSEC
-if [ "$CONFIG_IPSEC" != "n" ]; then
-  source ../freeswan/klips/net/ipsec/Config.in
-fi
-
 mainmenu_option next_comment
 comment 'Network testing'
 tristate 'Packet Generator (USE WITH CAUTION)' CONFIG_NET_PKTGEN
diff -u -3 -p -r1.1.1.4 -r1.2
--- net/core/rtnetlink.c	28 Feb 2003 22:45:18 -0000	1.1.1.4
+++ net/core/rtnetlink.c	30 Jun 2003 04:58:13 -0000	1.2
@@ -394,7 +394,7 @@ err_inval:
  * Malformed skbs with wrong lengths of messages are discarded silently.
  */
 
-extern __inline__ int rtnetlink_rcv_skb(struct sk_buff *skb)
+static inline int rtnetlink_rcv_skb(struct sk_buff *skb)
 {
 	int err;
 	struct nlmsghdr * nlh;
