Index: build/jam/board/beagle/BoardSetup
===================================================================
--- build/jam/board/beagle/BoardSetup	(revision 0)
+++ build/jam/board/beagle/BoardSetup	(revision 0)
@@ -0,0 +1,72 @@
+# BeagleBoard board-specific definitions
+
+HAIKU_BOARD_DESCRIPTION = "BeagleBoard" ;
+
+
+#
+# Various hardcoded addresses
+#
+
+# load address for haiku_loader
+HAIKU_BOARD_LOADER_BASE = 0x80008000 ;
+# entry points (raw binary, and netbsd loader emulation)
+HAIKU_BOARD_LOADER_ENTRY_RAW = 0x80008000 ;
+HAIKU_BOARD_LOADER_ENTRY_NBSD = 0x80008008 ;
+
+# load address for haiku_loader uimage
+# (must be different than real load address)
+HAIKU_BOARD_LOADER_UIBASE = 0x84000000 ;
+
+HAIKU_BOARD_LOADER_STACK_BASE = 0x84000000 ;
+
+#
+# Flash image
+#
+
+# u-boot binary image filename, to build the flash image
+# XXX: Locate it somehow (for now just put it in generated/)
+HAIKU_BOARD_UBOOT_IMAGE ?= u-boot.bin ;
+HAIKU_BOARD_UBOOT_IMAGE_URL = 
+	http://www.angstrom-distribution.org/demo/beagleboard/u-boot.bin ;
+
+#
+# mmc/SD image
+#
+
+# in MB
+HAIKU_BOARD_SDIMAGE_SIZE = 64 ;
+
+# in MB
+HAIKU_BOARD_SDIMAGE_FAT_SIZE = 32 ;
+
+# offset in blocks XXX: FIXME
+# (autodetect from sfdisk or use cylinder count for fat size)
+HAIKU_BOARD_SDIMAGE_BFS_OFFSET = ;
+
+# autoboot script
+HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME = beagle-factory.script ;
+HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT = "\
+setenv bootargs debug_screen true; \
+if mmc init; then \
+	fatload mmc 0 $(HAIKU_BOARD_LOADER_UIBASE) haiku_loader.ub; \
+	bootm $(HAIKU_BOARD_LOADER_UIBASE); \
+fi" ;
+
+HAIKU_BOARD_SDIMAGE_FILES =
+	haiku_loader
+	haiku_loader.ub
+	haiku_loader_nbsd.ub
+	$(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME)
+;
+
+
+#
+# gcc flags for the specific cpu
+#
+
+TARGET_KERNEL_CCFLAGS += -mcpu=cortex-a8 -mfpu=vfp -mfloat-abi=soft ;
+TARGET_KERNEL_C++FLAGS += -mcpu=cortex-a8 -mfpu=vfp -mfloat-abi=soft ;
+TARGET_CCFLAGS += -mcpu=cortex-a8 -mfpu=vfp -mfloat-abi=soft ;
+TARGET_C++FLAGS += -mcpu=cortex-a8 -mfpu=vfp -mfloat-abi=soft ;
+
+
Index: src/system/boot/platform/u-boot/mmu.cpp
===================================================================
--- src/system/boot/platform/u-boot/mmu.cpp	(revision 35410)
+++ src/system/boot/platform/u-boot/mmu.cpp	(working copy)
@@ -17,6 +17,8 @@
 #include <arm_mmu.h>
 #include <kernel.h>
 
+#include <board_config.h>
+
 #include <OS.h>
 
 #include <string.h>
@@ -99,20 +101,22 @@
 
 
 //memory used by the loader that should be identity mapped
-/*
+#ifdef BOARD_CPU_OMAP3
+
 static struct memblock LOADER_MEMORYMAP[] = {
         {
-                "vectors\0",//interrupt vectors
-		0x00000000,
-		0x00000fff,
+                "RAM_internal\0",//internal ram/interrupt vectors
+		0x40200000,
+		0x4020ffff,
 		MMU_L2_FLAG_AP_RW|MMU_L2_FLAG_B,
         },
         {
                 "devices\0",
 		0x48000000,
-		0x48FFFFFF,
-		MMU_L2_FLAG_AP_RW|MMU_L2_FLAG_B,
+		0x490FFFFF,
+		MMU_L2_FLAG_AP_RW, //|MMU_L2_FLAG_B,
         },
+	// TODO: also sgx, dsp and whatnot
         {
                 "RAM_image\0",//15MB for the initrd should be enough..
 		0x80000000,
@@ -138,8 +142,19 @@
 		MMU_L2_FLAG_AP_RW|MMU_L2_FLAG_C,
         },
 
+
+        {
+                "RAM_fb\0",//2MB framebuffer ram
+		0x88000000,
+		0x88200000,
+		MMU_L2_FLAG_AP_RW|MMU_L2_FLAG_C,
+        },
+
+
 };
-*/
+
+#else
+
 static struct memblock LOADER_MEMORYMAP[] = {
         {
                 "vectors\0",//interrupt vectors
@@ -191,6 +206,7 @@
         },
 
 };
+#endif
 
 
 
@@ -200,7 +216,6 @@
 
 
 
-
 //static const uint32 kDefaultPageTableFlags = MMU_FLAG_READWRITE;	// not cached not buffered, R/W
 static const size_t kMaxKernelSize = 0x200000;		// 2 MB for the kernel
 
@@ -322,7 +337,6 @@
 	asm volatile("MCR p15, 0, %[c1in], c3, c0, 0"::[c1in] "r" (value));
 }
 
-
 static uint32 *
 get_next_page_table(uint32 type)
 {
@@ -350,6 +364,14 @@
 void
 init_page_directory()
 {
+	uint32 smalltype;
+
+	// see if subpages disabled
+	if (mmu_read_C1() & (1<<23))
+		smalltype = MMU_L2_TYPE_SMALLNEW;
+	else
+		smalltype = MMU_L2_TYPE_SMALLEXT;
+
         TRACE(("init_page_directory\n"));
 
         gKernelArgs.arch_args.phys_pgdir = (uint32)sPageDirectory;
@@ -368,7 +390,7 @@
 		addr_t pos = LOADER_MEMORYMAP[i].start;
 		int c=0;
 		while(pos< LOADER_MEMORYMAP[i].end){
-			pageTable[c]=pos |  LOADER_MEMORYMAP[i].flags | MMU_L2_TYPE_SMALLEXT;
+			pageTable[c]=pos |  LOADER_MEMORYMAP[i].flags | smalltype;
 //			TRACE(("PAGE TABLE: %lx = [%lx] \n",c, pageTable[c]));				
 			c++;
 			if(c>255){ //we filled a pagetable => we need a new one
Index: src/system/boot/platform/u-boot/video.cpp
===================================================================
--- src/system/boot/platform/u-boot/video.cpp	(revision 35410)
+++ src/system/boot/platform/u-boot/video.cpp	(working copy)
@@ -88,7 +88,7 @@
 		return;
 
 	//XXX: not yet, DISABLED
-	return;
+	//return;
 
 	status_t err;
 
@@ -118,8 +118,8 @@
     	#warning ARM:TODO
 	arch_probe_video_mode();
 	//XXX for testing
-	//platform_switch_to_logo();
+	platform_switch_to_logo();
 	//return arch_probe_video_mode();
-	//return B_OK;
+	return B_OK;
 }
 
Index: headers/private/kernel/arch/arm/arm_mmu.h
===================================================================
--- headers/private/kernel/arch/arm/arm_mmu.h	(revision 35410)
+++ headers/private/kernel/arch/arm/arm_mmu.h	(working copy)
@@ -37,6 +37,9 @@
  */
 
 #define MMU_L2_TYPE_SMALLEXT 0x3
+/* for new format entries (cortex-a8) */
+#define MMU_L2_TYPE_SMALLNEW 0x2
+
 // for B C and TEX see ARM arm B4-11
 #define MMU_L2_FLAG_B 0x4
 #define MMU_L2_FLAG_C 0x8
Index: headers/private/kernel/arch/arm/board/beagle/board_config.h
===================================================================
--- headers/private/kernel/arch/arm/board/beagle/board_config.h	(revision 0)
+++ headers/private/kernel/arch/arm/board/beagle/board_config.h	(revision 0)
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2009
+ * Distributed under the terms of the MIT License.
+ */
+#ifndef _BOARD_OVERO_BOARD_CONFIG_H
+#define _BOARD_OVERO_BOARD_CONFIG_H
+
+#define BOARD_NAME_PRETTY "Beagle Board"
+
+#define BOARD_CPU_TYPE_OMAP 1
+#define BOARD_CPU_OMAP3 1
+
+#include <arch/arm/omap3.h>
+
+#define BOARD_UART1_BASE OMAP_UART1_BASE
+#define BOARD_UART2_BASE OMAP_UART2_BASE
+#define BOARD_UART3_BASE OMAP_UART3_BASE
+
+#define BOARD_DEBUG_UART 2
+
+#endif /* _BOARD_OVERO_BOARD_CONFIG_H */
