diff -Nru linux-2.6.0-test6-uc0-develer/drivers/block/genhd.c linux-2.6.x/drivers/block/genhd.c
--- linux-2.6.0-test6-uc0-develer/drivers/block/genhd.c	2003-09-28 02:50:20.000000000 +0200
+++ linux-2.6.x/drivers/block/genhd.c	2003-09-30 03:37:48.000000000 +0200
@@ -38,25 +38,6 @@
 	return major % MAX_PROBE_HASH;
 }
 
-/* get block device names in somewhat random order */
-int get_blkdev_list(char *p)
-{
-	struct blk_major_name *n;
-	int i, len;
-
-	len = sprintf(p, "\nBlock devices:\n");
-
-	down_read(&block_subsys.rwsem);
-	for (i = 0; i < ARRAY_SIZE(major_names); i++) {
-		for (n = major_names[i]; n; n = n->next)
-			len += sprintf(p+len, "%3d %s\n",
-				       n->major, n->name);
-	}
-	up_read(&block_subsys.rwsem);
-
-	return len;
-}
-
 int register_blkdev(unsigned int major, const char *name)
 {
 	struct blk_major_name **n, *p;
@@ -141,6 +122,27 @@
 	return ret;
 }
 
+/* get block device names in somewhat random order */
+int get_blkdev_list(char *p)
+{
+	struct blk_major_name *n;
+	int i, len;
+
+	len = sprintf(p, "\nBlock devices:\n");
+
+	down_read(&block_subsys.rwsem);
+	for (i = 0; i < ARRAY_SIZE(major_names); i++) {
+		for (n = major_names[i]; n; n = n->next)
+			len += sprintf(p+len, "%3d %s\n",
+				       n->major, n->name);
+	}
+	up_read(&block_subsys.rwsem);
+
+	return len;
+}
+
+#ifdef CONFIG_PARTITIONS
+
 static struct kobj_map *bdev_map;
 
 /*
@@ -614,3 +616,5 @@
 EXPORT_SYMBOL(set_device_ro);
 EXPORT_SYMBOL(set_disk_ro);
 EXPORT_SYMBOL(invalidate_partition);
+
+#endif /* CONFIG_PARTITIONS */
diff -Nru linux-2.6.0-test6-uc0-develer/drivers/block/ioctl.c linux-2.6.x/drivers/block/ioctl.c
--- linux-2.6.0-test6-uc0-develer/drivers/block/ioctl.c	2003-09-28 02:50:07.000000000 +0200
+++ linux-2.6.x/drivers/block/ioctl.c	2003-09-30 03:31:24.000000000 +0200
@@ -5,6 +5,8 @@
 #include <linux/buffer_head.h>
 #include <asm/uaccess.h>
 
+#ifdef CONFIG_PARTITIONS
+
 static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg *arg)
 {
 	struct block_device *bdevp;
@@ -107,6 +109,8 @@
 	return res;
 }
 
+#endif /* CONFIG_PARTITIONS */
+
 static int put_ushort(unsigned long arg, unsigned short val)
 {
 	return put_user(val, (unsigned short *)arg);
@@ -180,10 +184,12 @@
 		ret = set_blocksize(bdev, n);
 		bd_release(bdev);
 		return ret;
+#ifdef CONFIG_PARTITIONS
 	case BLKPG:
 		return blkpg_ioctl(bdev, (struct blkpg_ioctl_arg *) arg);
 	case BLKRRPART:
 		return blkdev_reread_part(bdev);
+#endif /* CONFIG_PARTITIONS */
 	case BLKGETSIZE:
 		if ((bdev->bd_inode->i_size >> 9) > ~0UL)
 			return -EFBIG;
@@ -201,6 +207,7 @@
 		fsync_bdev(bdev);
 		invalidate_bdev(bdev, 0);
 		return 0;
+#ifdef CONFIG_PARTITIONS
 	case BLKROSET:
 		if (disk->fops->ioctl) {
 			ret = disk->fops->ioctl(inode, file, cmd, arg);
@@ -213,6 +220,7 @@
 			return -EFAULT;
 		set_device_ro(bdev, n);
 		return 0;
+#endif /* CONFIG_PARTITIONS */
 	default:
 		if (disk->fops->ioctl)
 			return disk->fops->ioctl(inode, file, cmd, arg);
diff -Nru linux-2.6.0-test6-uc0-develer/drivers/mtd/chips/jedec_probe.c linux-2.6.x/drivers/mtd/chips/jedec_probe.c
--- linux-2.6.0-test6-uc0-develer/drivers/mtd/chips/jedec_probe.c	2003-09-28 23:49:29.000000000 +0200
+++ linux-2.6.x/drivers/mtd/chips/jedec_probe.c	2003-09-29 00:03:15.000000000 +0200
@@ -1115,6 +1115,25 @@
 		}
 	}, {
 		.mfr_id		= MANUFACTURER_SST,
+		.dev_id		= SST39LF160,
+		.name		= "SST 39LF160",
+		.DevSize	= SIZE_2MiB,
+		.CmdSet		= P_ID_AMD_STD,
+#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
+	}, {
+		.mfr_id		= MANUFACTURER_SST,
 		.dev_id		= SST49LF030A,
 		.name		= "SST 49LF030A",
  		.uaddr		= {
diff -Nru linux-2.6.0-test6-uc0-develer/fs/Makefile linux-2.6.x/fs/Makefile
--- linux-2.6.0-test6-uc0-develer/fs/Makefile	2003-09-28 02:50:29.000000000 +0200
+++ linux-2.6.x/fs/Makefile	2003-09-30 03:09:15.000000000 +0200
@@ -38,7 +38,7 @@
 obj-$(CONFIG_QUOTACTL)		+= quota.o
 
 obj-$(CONFIG_PROC_FS)		+= proc/
-obj-y				+= partitions/
+obj-$(CONFIG_PARTITIONS)	+= partitions/
 obj-y				+= sysfs/
 obj-y				+= devpts/
 
diff -Nru linux-2.6.0-test6-uc0-develer/fs/binfmt_flat.c linux-2.6.x/fs/binfmt_flat.c
--- linux-2.6.0-test6-uc0-develer/fs/binfmt_flat.c	2003-09-28 02:50:05.000000000 +0200
+++ linux-2.6.x/fs/binfmt_flat.c	2003-10-07 04:05:37.000000000 +0200
@@ -344,7 +344,7 @@
 	if (!flat_reloc_valid(r, start_brk - start_data + text_len)) {
 		printk("BINFMT_FLAT: reloc outside program 0x%x (0 - 0x%x/0x%x)",
 		       (int) r,(int)(start_brk-start_code),(int)text_len);
-		goto failed;
+//		goto failed;
 	}
 
 	if (r < text_len)			/* In text segment */
diff -Nru linux-2.6.0-test6-uc0-develer/fs/block_dev.c linux-2.6.x/fs/block_dev.c
--- linux-2.6.0-test6-uc0-develer/fs/block_dev.c	2003-09-28 02:51:22.000000000 +0200
+++ linux-2.6.x/fs/block_dev.c	2003-09-30 03:41:37.000000000 +0200
@@ -518,9 +518,11 @@
 	struct module *owner = NULL;
 	struct gendisk *disk;
 	int ret = -ENXIO;
-	int part;
+	int part = 0;
 
 	lock_kernel();
+
+#ifdef CONFIG_PARTITIONS
 	disk = get_gendisk(bdev->bd_dev, &part);
 	if (!disk) {
 		unlock_kernel();
@@ -528,28 +530,35 @@
 		return ret;
 	}
 	owner = disk->fops->owner;
+#endif /* CONFIG_PARTITIONS */
 
 	down(&bdev->bd_sem);
 	if (!bdev->bd_openers) {
 		bdev->bd_disk = disk;
 		bdev->bd_contains = bdev;
 		if (!part) {
-			struct backing_dev_info *bdi;
+#ifdef CONFIG_PARTITIONS
 			if (disk->fops->open) {
 				ret = disk->fops->open(inode, file);
 				if (ret)
 					goto out_first;
 			}
+#endif /* CONFIG_PARTITIONS */
 			if (!bdev->bd_openers) {
+				struct backing_dev_info *bdi;
 				bd_set_size(bdev,(loff_t)get_capacity(disk)<<9);
 				bdi = blk_get_backing_dev_info(bdev);
 				if (bdi == NULL)
 					bdi = &default_backing_dev_info;
 				bdev->bd_inode->i_data.backing_dev_info = bdi;
 			}
+#ifdef CONFIG_PARTITIONS
 			if (bdev->bd_invalidated)
 				rescan_partitions(disk, bdev);
-		} else {
+#endif /* CONFIG_PARTITIONS */
+		}
+#ifdef CONFIG_PARTITIONS
+		else {
 			struct hd_struct *p;
 			struct block_device *whole;
 			whole = bdget_disk(disk, 0);
@@ -576,10 +585,14 @@
 			bd_set_size(bdev, (loff_t) p->nr_sects << 9);
 			up(&whole->bd_sem);
 		}
+#endif /* CONFIG_PARTITIONS */
 	} else {
+#ifdef CONFIG_PARTITIONS
 		put_disk(disk);
 		module_put(owner);
+#endif /* CONFIG_PARTITIONS */
 		if (bdev->bd_contains == bdev) {
+#ifdef CONFIG_PARTITIONS
 			if (bdev->bd_disk->fops->open) {
 				ret = bdev->bd_disk->fops->open(inode, file);
 				if (ret)
@@ -587,12 +600,14 @@
 			}
 			if (bdev->bd_invalidated)
 				rescan_partitions(bdev->bd_disk, bdev);
+#endif /* CONFIG_PARTITIONS */
 		} else {
 			down(&bdev->bd_contains->bd_sem);
 			bdev->bd_contains->bd_part_count++;
 			up(&bdev->bd_contains->bd_sem);
 		}
 	}
+
 	bdev->bd_openers++;
 	up(&bdev->bd_sem);
 	unlock_kernel();
@@ -604,7 +619,9 @@
 	if (bdev != bdev->bd_contains)
 		blkdev_put(bdev->bd_contains, BDEV_RAW);
 	bdev->bd_contains = NULL;
+#ifdef CONFIG_PARTITIONS
 	put_disk(disk);
+#endif
 	module_put(owner);
 out:
 	up(&bdev->bd_sem);
@@ -680,18 +697,21 @@
 		kill_bdev(bdev);
 	}
 	if (bdev->bd_contains == bdev) {
+#ifdef CONFIG_PARTITIONS
 		if (disk->fops->release)
 			ret = disk->fops->release(bd_inode, NULL);
+#endif
 	} else {
 		down(&bdev->bd_contains->bd_sem);
 		bdev->bd_contains->bd_part_count--;
 		up(&bdev->bd_contains->bd_sem);
 	}
 	if (!bdev->bd_openers) {
+#ifdef CONFIG_PARTITIONS
 		struct module *owner = disk->fops->owner;
-
 		put_disk(disk);
 		module_put(owner);
+#endif
 
 		if (bdev->bd_contains != bdev) {
 			kobject_put(&bdev->bd_part->kobj);
diff -Nru linux-2.6.0-test6-uc0-develer/fs/partitions/Kconfig linux-2.6.x/fs/partitions/Kconfig
--- linux-2.6.0-test6-uc0-develer/fs/partitions/Kconfig	2003-09-28 02:50:56.000000000 +0200
+++ linux-2.6.x/fs/partitions/Kconfig	2003-09-30 00:56:34.000000000 +0200
@@ -2,7 +2,7 @@
 # Partition configuration
 #
 config PARTITION_ADVANCED
-	bool "Advanced partition selection"
+	bool "Advanced partition selection" if PARTITION
 	help
 	  Say Y here if you would like to use hard disks under Linux which
 	  were partitioned under an operating system running on a different
diff -Nru linux-2.6.0-test6-uc0-develer/fs/proc/proc_misc.c linux-2.6.x/fs/proc/proc_misc.c
--- linux-2.6.0-test6-uc0-develer/fs/proc/proc_misc.c	2003-09-28 02:50:09.000000000 +0200
+++ linux-2.6.x/fs/proc/proc_misc.c	2003-09-30 03:08:37.000000000 +0200
@@ -304,6 +304,7 @@
 }
 #endif
 
+#ifdef CONFIG_PARTITIONS
 extern struct seq_operations partitions_op;
 static int partitions_open(struct inode *inode, struct file *file)
 {
@@ -327,6 +328,7 @@
 	.llseek		= seq_lseek,
 	.release	= seq_release,
 };
+#endif /* CONFIG_PARTITIONS */
 
 #ifdef CONFIG_MODULES
 extern struct seq_operations modules_op;
@@ -675,13 +677,15 @@
 	if (entry)
 		entry->proc_fops = &proc_kmsg_operations;
 	create_seq_entry("cpuinfo", 0, &proc_cpuinfo_operations);
+#ifdef CONFIG_PARTITIONS
 	create_seq_entry("partitions", 0, &proc_partitions_operations);
+	create_seq_entry("diskstats", 0, &proc_diskstats_operations);
+#endif /* CONFIG_PARTITIONS */
 	create_seq_entry("stat", 0, &proc_stat_operations);
 	create_seq_entry("interrupts", 0, &proc_interrupts_operations);
 	create_seq_entry("slabinfo",S_IWUSR|S_IRUGO,&proc_slabinfo_operations);
 	create_seq_entry("buddyinfo",S_IRUGO, &fragmentation_file_operations);
 	create_seq_entry("vmstat",S_IRUGO, &proc_vmstat_file_operations);
-	create_seq_entry("diskstats", 0, &proc_diskstats_operations);
 #ifdef CONFIG_MODULES
 	create_seq_entry("modules", 0, &proc_modules_operations);
 #endif
diff -Nru linux-2.6.0-test6-uc0-develer/include/linux/fs.h linux-2.6.x/include/linux/fs.h
--- linux-2.6.0-test6-uc0-develer/include/linux/fs.h	2003-09-28 02:50:14.000000000 +0200
+++ linux-2.6.x/include/linux/fs.h	2003-09-30 03:09:55.000000000 +0200
@@ -1153,8 +1153,6 @@
 
 /* fs/block_dev.c */
 #define BDEVNAME_SIZE	32	/* Largest string for a blockdev identifier */
-extern const char *__bdevname(dev_t, char *buffer);
-extern const char *bdevname(struct block_device *bdev, char *buffer);
 extern struct block_device *lookup_bdev(const char *);
 extern struct block_device *open_bdev_excl(const char *, int, int, void *);
 extern void close_bdev_excl(struct block_device *, int);
@@ -1187,7 +1185,6 @@
 extern int check_disk_change(struct block_device *);
 extern int invalidate_inodes(struct super_block *);
 extern int __invalidate_device(struct block_device *, int);
-extern int invalidate_partition(struct gendisk *, int);
 unsigned long invalidate_mapping_pages(struct address_space *mapping,
 					pgoff_t start, pgoff_t end);
 unsigned long invalidate_inode_pages(struct address_space *mapping);
@@ -1285,7 +1282,27 @@
 extern void file_kill(struct file *f);
 struct bio;
 extern int submit_bio(int, struct bio *);
+
+#ifdef CONFIG_PARTITIONS
+extern int invalidate_partition(struct gendisk *, int);
 extern int bdev_read_only(struct block_device *);
+extern const char *__bdevname(dev_t dev, char *buffer);
+extern const char *bdevname(struct block_device *bdev, char *buffer);
+
+#else /* !CONFIG_PARTITIONS */
+
+#define bdev_read_only(bdev) (0)
+static inline const char *__bdevname(dev_t dev, char *buffer)
+{
+	snprintf(buffer, BDEVNAME_SIZE, "block(%u,%u)", MAJOR(dev), MINOR(dev));
+	return buffer;
+}
+static inline const char *bdevname(struct block_device *bdev, char *buffer)
+{
+	return __bdevname(bdev->bd_dev, buffer);
+}
+#endif /* !CONFIG_PARTITIONS */
+
 extern int set_blocksize(struct block_device *, int);
 extern int sb_set_blocksize(struct super_block *, int);
 extern int sb_min_blocksize(struct super_block *, int);
diff -Nru linux-2.6.0-test6-uc0-develer/init/Kconfig linux-2.6.x/init/Kconfig
--- linux-2.6.0-test6-uc0-develer/init/Kconfig	2003-09-28 02:50:48.000000000 +0200
+++ linux-2.6.x/init/Kconfig	2003-09-30 03:54:33.000000000 +0200
@@ -194,6 +194,13 @@
 	  Disabling this option will cause the kernel to be built without
 	  support for epoll family of system calls.
 
+config PARTITIONS
+	bool "Enable disk partitioning support" if EMBEDDED
+	default y
+	help
+	  Disabling this option will cause the kernel to be built without
+	  support for disk partitions.
+
 source "drivers/block/Kconfig.iosched"
 
 endmenu		# General setup
diff -Nru linux-2.6.0-test6-uc0-develer/init/do_mounts.c linux-2.6.x/init/do_mounts.c
--- linux-2.6.0-test6-uc0-develer/init/do_mounts.c	2003-09-28 02:50:16.000000000 +0200
+++ linux-2.6.x/init/do_mounts.c	2003-09-30 01:21:16.000000000 +0200
@@ -285,12 +285,10 @@
 		 * Allow the user to distinguish between failed open
 		 * and bad superblock on root device.
 		 */
-		__bdevname(ROOT_DEV, b);
-		printk("VFS: Cannot open root device \"%s\" or %s\n",
-				root_device_name, b);
+		printk("VFS: Cannot open root device \"%s\"\n",
+				root_device_name);
 		printk("Please append a correct \"root=\" boot option\n");
-
-		panic("VFS: Unable to mount root fs on %s", b);
+		break; /* Go to panic() */
 	}
 	panic("VFS: Unable to mount root fs on %s", __bdevname(ROOT_DEV, b));
 out:
diff -Nru linux-2.6.0-test6-uc0-develer/mm/memory.c linux-2.6.x/mm/memory.c
--- linux-2.6.0-test6-uc0-develer/mm/memory.c	2003-09-28 23:46:52.000000000 +0200
+++ linux-2.6.x/mm/memory.c	2003-09-29 04:23:47.000000000 +0200
@@ -45,6 +45,7 @@
 #include <linux/pagemap.h>
 #include <linux/rmap-locking.h>
 #include <linux/module.h>
+#include <linux/slab.h>
 
 #include <asm/pgalloc.h>
 #include <asm/rmap.h>
