diff -ur uc-origs/uClinux-2.4.27-uc1/arch/armnommu/kernel/init_task.c uClinux-2.4.27-uc1/arch/armnommu/kernel/init_task.c
--- uc-origs/uClinux-2.4.27-uc1/arch/armnommu/kernel/init_task.c	2004-12-12 21:48:45.000000000 +0100
+++ uClinux-2.4.27-uc1/arch/armnommu/kernel/init_task.c	2005-01-21 17:26:34.000000000 +0100
@@ -9,6 +9,7 @@
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
 
+static struct vm_area_struct init_mmap = INIT_MMAP;
 static struct fs_struct init_fs = INIT_FS;
 static struct files_struct init_files = INIT_FILES;
 static struct signal_struct init_signals = INIT_SIGNALS;
diff -ur uc-origs/uClinux-2.4.27-uc1/include/asm-armnommu/processor.h uClinux-2.4.27-uc1/include/asm-armnommu/processor.h
--- uc-origs/uClinux-2.4.27-uc1/include/asm-armnommu/processor.h	2004-12-12 21:48:49.000000000 +0100
+++ uClinux-2.4.27-uc1/include/asm-armnommu/processor.h	2005-01-21 17:27:35.000000000 +0100
@@ -69,6 +69,21 @@
 	EXTRA_THREAD_STRUCT
 };
 
+/*
+ * This initializes a vm_area_struct. According to the uClinux patch for 
+ * linux/mm.h, this struct is only used in do_mmap. Even though the m68knommu
+ * version initializes the vm_mm field, this field is not defined in the
+ * uClinux version of the struct. I think that's probably a bug so I won't do
+ * that.
+ * --gmcnutt
+ */
+#define INIT_MMAP { \
+	vm_start: PAGE_OFFSET, \
+	vm_end:	PAGE_OFFSET + 0x02000000, \
+	vm_flags: VM_READ | VM_WRITE | VM_EXEC,	\
+	vm_offset: 0				\
+}
+
 #define INIT_THREAD  {					\
 	refcount:	ATOMIC_INIT(1),			\
 	EXTRA_THREAD_STRUCT_INIT			\

