[haiku-commits] r37319 - in haiku/trunk: build/jam/board build/jam/board/beagle headers/private/kernel/arch/arm headers/private/kernel/arch/arm/board headers/private/kernel/arch/arm/board/beagle ...

  • From: revol@xxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 30 Jun 2010 19:24:11 +0200 (CEST)

Author: mmu_man
Date: 2010-06-30 19:24:11 +0200 (Wed, 30 Jun 2010)
New Revision: 37319
Changeset: http://dev.haiku-os.org/changeset/37319/haiku
Ticket: http://dev.haiku-os.org/ticket/5368

Added:
   haiku/trunk/build/jam/board/beagle/
   haiku/trunk/build/jam/board/beagle/BoardSetup
   haiku/trunk/headers/private/kernel/arch/arm/board/beagle/
   haiku/trunk/headers/private/kernel/arch/arm/board/beagle/board_config.h
Modified:
   haiku/trunk/headers/private/kernel/arch/arm/arm_mmu.h
   haiku/trunk/src/system/boot/platform/u-boot/Jamfile
   haiku/trunk/src/system/boot/platform/u-boot/mmu.cpp
Log:
Patch by "notzed" (ticket #5368) (modified): Add bootloader support for 
BeagleBoard.


Added: haiku/trunk/build/jam/board/beagle/BoardSetup
===================================================================
--- haiku/trunk/build/jam/board/beagle/BoardSetup                               
(rev 0)
+++ haiku/trunk/build/jam/board/beagle/BoardSetup       2010-06-30 17:24:11 UTC 
(rev 37319)
@@ -0,0 +1,67 @@
+# 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
+#
+
+# OMAP x-loader image, must be first file on FAT partition
+HAIKU_BOARD_MLO_IMAGE ?= MLO ;
+HAIKU_BOARD_MLO_IMAGE_URL = 
+       http://www.angstrom-distribution.org/demo/beagleboard/MLO ;
+
+# 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 = ;
+
+HAIKU_BOARD_SDIMAGE_FILES =
+       $(HAIKU_BOARD_MLO_IMAGE)
+       $(HAIKU_BOARD_UBOOT_IMAGE)
+       haiku_loader_nbsd.ub
+;
+
+
+#
+# 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 ;
+
+

Modified: haiku/trunk/headers/private/kernel/arch/arm/arm_mmu.h
===================================================================
--- haiku/trunk/headers/private/kernel/arch/arm/arm_mmu.h       2010-06-30 
15:52:54 UTC (rev 37318)
+++ haiku/trunk/headers/private/kernel/arch/arm/arm_mmu.h       2010-06-30 
17:24:11 UTC (rev 37319)
@@ -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

Added: haiku/trunk/headers/private/kernel/arch/arm/board/beagle/board_config.h
===================================================================
--- haiku/trunk/headers/private/kernel/arch/arm/board/beagle/board_config.h     
                        (rev 0)
+++ haiku/trunk/headers/private/kernel/arch/arm/board/beagle/board_config.h     
2010-06-30 17:24:11 UTC (rev 37319)
@@ -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 */

Modified: haiku/trunk/src/system/boot/platform/u-boot/Jamfile
===================================================================
--- haiku/trunk/src/system/boot/platform/u-boot/Jamfile 2010-06-30 15:52:54 UTC 
(rev 37318)
+++ haiku/trunk/src/system/boot/platform/u-boot/Jamfile 2010-06-30 17:24:11 UTC 
(rev 37319)
@@ -198,6 +198,10 @@
                $(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT) ;
 }
 
+if $(HAIKU_BOARD_MLO_IMAGE) && $(HAIKU_BOARD_MLO_IMAGE_URL) {
+       DownloadFile $(HAIKU_BOARD_MLO_IMAGE) $(HAIKU_BOARD_MLO_IMAGE_URL) ;
+}
+
 if $(HAIKU_BOARD_UBOOT_IMAGE) && $(HAIKU_BOARD_UBOOT_IMAGE_URL) {
        # Download the u-boot binary file.
        ubootFile = [ DownloadFile $(HAIKU_BOARD_UBOOT_IMAGE) 

Modified: haiku/trunk/src/system/boot/platform/u-boot/mmu.cpp
===================================================================
--- haiku/trunk/src/system/boot/platform/u-boot/mmu.cpp 2010-06-30 15:52:54 UTC 
(rev 37318)
+++ haiku/trunk/src/system/boot/platform/u-boot/mmu.cpp 2010-06-30 17:24:11 UTC 
(rev 37319)
@@ -17,6 +17,8 @@
 #include <arm_mmu.h>
 #include <kernel.h>
 
+#include <board_config.h>
+
 #include <OS.h>
 
 #include <string.h>
@@ -99,7 +101,7 @@
 
 
 //memory used by the loader that should be identity mapped
-/*
+#if 0/*BOARD_CPU_OMAP3*/
 static struct memblock LOADER_MEMORYMAP[] = {
         {
                 "vectors",//interrupt vectors
@@ -138,27 +140,25 @@
                MMU_L2_FLAG_AP_RW | MMU_L2_FLAG_C,
         },
 
+
+
 };
-*/
+
+#else
+
 static struct memblock LOADER_MEMORYMAP[] = {
         {
                 "vectors",//interrupt vectors
-               0x00000000,
-               0x00000fff,
+               VECT_BASE,
+               VECT_BASE + VECT_SIZE - 1,
                MMU_L2_FLAG_B,
         },
         {
                 "devices",
-               0x40000000,
-               0x44FFFFFF,
+               DEVICE_BASE,
+               DEVICE_BASE + DEVICE_SIZE - 1,
                MMU_L2_FLAG_B,
         },
-/*        {
-                "RAM_image",//15MB for the initrd should be enough..
-               0xA0000000,
-               0xA1ffffff,
-               MMU_L2_FLAG_C,
-        },*/
         {
                 "RAM_loader",//1MB loader
                SDRAM_BASE + 0,
@@ -190,7 +190,18 @@
                MMU_L2_FLAG_C,
         },
 
+#ifdef FB_BASE
+        {
+                "framebuffer",//2MB framebuffer ram
+               FB_BASE,
+               FB_BASE + FB_SIZE - 1,
+               MMU_L2_FLAG_AP_RW|MMU_L2_FLAG_C,
+        },
+#endif
+
+
 };
+#endif
 
 
 
@@ -350,6 +361,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 +387,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


Other related posts:

  • » [haiku-commits] r37319 - in haiku/trunk: build/jam/board build/jam/board/beagle headers/private/kernel/arch/arm headers/private/kernel/arch/arm/board headers/private/kernel/arch/arm/board/beagle ... - revol