# HG changeset patch # User asl # Date 1092823067 0 # Node ID 202432a1c50dfcfab07f6718fa6c28d9a67d415a # Parent 6edb211aff5603f775aa15d20368aca9eb69b2b1 * cdl/hal_i386_pc.cdl: Added capability to build redboot with GRUB startup type. Also added capability to load applications into a higher RAM address (2MB) so they work with new GRUB based redboot. * include/pkgconf/mlt_i386_pc_ram_hi.mlt: * include/pkgconf/mlt_i386_pc_ram_hi.h: * include/pkgconf/mlt_i386_pc_ram_hi.ldi: New files for loading applications at 2MB. * misc/redboot_GRUB.ecm: New file for creating GRUB loadable redboot diff --git a/packages/hal/i386/pc/current/ChangeLog b/packages/hal/i386/pc/current/ChangeLog --- a/packages/hal/i386/pc/current/ChangeLog +++ b/packages/hal/i386/pc/current/ChangeLog @@ -1,3 +1,15 @@ +2004-08-14 David Brennan + + * cdl/hal_i386_pc.cdl: Added capability to build redboot with GRUB + startup type. Also added capability to load applications into a + higher RAM address (2MB) so they work with new GRUB based redboot. + * include/pkgconf/mlt_i386_pc_ram_hi.mlt: + * include/pkgconf/mlt_i386_pc_ram_hi.h: + * include/pkgconf/mlt_i386_pc_ram_hi.ldi: New files for loading + applications at 2MB. + * misc/redboot_GRUB.ecm: New file for creating GRUB loadable + redboot + 2004-04-22 Jani Monoses * cdl/hal_i386_pc.cdl : diff --git a/packages/hal/i386/pc/current/cdl/hal_i386_pc.cdl b/packages/hal/i386/pc/current/cdl/hal_i386_pc.cdl --- a/packages/hal/i386/pc/current/cdl/hal_i386_pc.cdl +++ b/packages/hal/i386/pc/current/cdl/hal_i386_pc.cdl @@ -242,7 +242,7 @@ cdl_package CYGPKG_HAL_I386_PC { cdl_option CYGBLD_BUILD_GDB_STUBS { display "Build GDB stub loader image" default_value 0 - requires { CYG_HAL_STARTUP == "FLOPPY" } + requires { CYG_HAL_STARTUP == "FLOPPY" || CYG_HAL_STARTUP == "GRUB" } requires CYGSEM_HAL_ROM_MONITOR requires CYGBLD_BUILD_COMMON_GDB_STUBS requires CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS @@ -266,11 +266,25 @@ cdl_package CYGPKG_HAL_I386_PC { } } + cdl_option CYGHWR_HAL_I386_PC_LOAD_HIGH { + display "Load into higher memory (2MB)" + flavor bool + default_value 0 + requires { CYG_HAL_STARTUP == "RAM" } + no_define + description "This option enables building RAM applications + which have a start address outside of the area + used by redboot_GRUB." + } + cdl_component CYGHWR_MEMORY_LAYOUT { display "Memory layout" flavor data no_define - calculated { CYG_HAL_STARTUP == "RAM" ? "i386_pc_ram" : \ + calculated { CYG_HAL_STARTUP == "RAM" ? \ + (CYGHWR_HAL_I386_PC_LOAD_HIGH ? \ + "i386_pc_ram_hi" : \ + "i386_pc_ram") : \ CYG_HAL_STARTUP == "ROM" ? "i386_pc_rom" : \ CYG_HAL_STARTUP == "GRUB" ? "i386_pc_grub" : \ "i386_pc_floppy" } @@ -280,7 +294,10 @@ cdl_package CYGPKG_HAL_I386_PC { flavor data no_define define -file system.h CYGHWR_MEMORY_LAYOUT_LDI - calculated { CYG_HAL_STARTUP == "RAM" ? "" : \ + calculated { CYG_HAL_STARTUP == "RAM" ? \ + (CYGHWR_HAL_I386_PC_LOAD_HIGH ? \ + "" : \ + "") : \ CYG_HAL_STARTUP == "ROM" ? "" : \ CYG_HAL_STARTUP == "GRUB" ? "" : \ "" } @@ -291,10 +308,13 @@ cdl_package CYGPKG_HAL_I386_PC { flavor data no_define define -file system.h CYGHWR_MEMORY_LAYOUT_H - calculated { CYG_HAL_STARTUP == "RAM" ? "" : \ + calculated { CYG_HAL_STARTUP == "RAM" ? \ + (CYGHWR_HAL_I386_PC_LOAD_HIGH ? \ + "" : \ + "") : \ CYG_HAL_STARTUP == "ROM" ? "" : \ CYG_HAL_STARTUP == "GRUB" ? "" : \ - "" } + "" } } } @@ -304,7 +324,7 @@ cdl_package CYGPKG_HAL_I386_PC { default_value 0 parent CYGPKG_HAL_ROM_MONITOR - requires { CYG_HAL_STARTUP == "FLOPPY" || CYG_HAL_STARTUP == "ROM" } + requires { CYG_HAL_STARTUP == "FLOPPY" || CYG_HAL_STARTUP == "ROM" || CYG_HAL_STARTUP == "GRUB" } requires { !CYGHWR_HAL_I386_FPU_SWITCH_LAZY } description " Enable this option if this program is to be used as a ROM monitor, diff --git a/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram_hi.h b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram_hi.h new file mode 100644 --- /dev/null +++ b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram_hi.h @@ -0,0 +1,22 @@ +// eCos memory layout - Fri Oct 20 08:15:20 2000 + +// This is a generated file - do not edit + +#ifndef __ASSEMBLER__ +#include +#include + +#endif +#define CYGMEM_REGION_ram (0x00200000) +#define CYGMEM_REGION_ram_SIZE (0x01000000) +#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W) +#ifndef __ASSEMBLER__ +extern char CYG_LABEL_NAME (__heap1) []; +#endif +#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1)) +#define CYGMEM_SECTION_heap1_SIZE (0x01000000 - (size_t) CYG_LABEL_NAME (__heap1)) +#ifndef __ASSEMBLER__ +extern char CYG_LABEL_NAME (__pci_window) []; +#endif +#define CYGMEM_SECTION_pci_window (CYG_LABEL_NAME (__pci_window)) +#define CYGMEM_SECTION_pci_window_SIZE (0x64000) diff --git a/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram_hi.ldi b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram_hi.ldi new file mode 100644 --- /dev/null +++ b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram_hi.ldi @@ -0,0 +1,29 @@ +// eCos memory layout - Fri Oct 20 08:15:20 2000 + +// This is a generated file - do not edit + +#include + +MEMORY +{ + ram : ORIGIN = 0x0, LENGTH = 0x1000000 +} + +SECTIONS +{ + SECTIONS_BEGIN + SECTION_vectors (ram, 0x208000, LMA_EQ_VMA) + SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA) + SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA) + SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rel__got (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA) + SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA) + CYG_LABEL_DEFN(__pci_window) = ALIGN(0x10); . = CYG_LABEL_DEFN(__pci_window) + 0x64000; + CYG_LABEL_DEFN(__heap1) = ALIGN (0x8); + SECTIONS_END +} diff --git a/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram_hi.mlt b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram_hi.mlt new file mode 100644 --- /dev/null +++ b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram_hi.mlt @@ -0,0 +1,15 @@ +version 0 +region ram 0 1000000 0 ! +section vectors 0 1 0 1 1 1 1 1 208000 10000 text text ! +section text 0 4 0 1 0 1 0 1 fini fini ! +section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 ! +section rodata1 0 8 0 1 0 1 0 1 rodata rodata ! +section rodata 0 8 0 1 0 1 0 1 fixup fixup ! +section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table ! +section gcc_except_table 0 1 0 1 0 1 0 1 rel.got rel.got ! +section rel.got 0 1 0 1 0 1 0 1 data data ! +section data 0 8 0 1 0 1 0 1 sbss sbss ! +section sbss 0 4 0 1 0 1 0 1 bss bss ! +section bss 0 10 0 1 0 1 0 1 pci_window pci_window ! +section pci_window 64000 10 0 0 0 1 0 1 heap1 heap1 ! +section heap1 0 8 0 0 0 0 0 0 ! diff --git a/packages/hal/i386/pc/current/misc/redboot_GRUB.ecm b/packages/hal/i386/pc/current/misc/redboot_GRUB.ecm new file mode 100644 --- /dev/null +++ b/packages/hal/i386/pc/current/misc/redboot_GRUB.ecm @@ -0,0 +1,50 @@ +cdl_savefile_version 1; +cdl_savefile_command cdl_savefile_version {}; +cdl_savefile_command cdl_savefile_command {}; +cdl_savefile_command cdl_configuration { description hardware template package }; +cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value }; +cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value }; + +cdl_configuration eCos { +# package CYGPKG_IO_FLASH current ; + package CYGPKG_IO_ETH_DRIVERS current ; +}; + +cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT { + user_value 0 +}; + +cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM { + user_value 0 +}; + +cdl_option CYGSEM_HAL_ROM_MONITOR { + user_value 1 +}; + +cdl_component CYG_HAL_STARTUP { + user_value GRUB +}; + +cdl_option CYGBLD_BUILD_REDBOOT { + user_value 1 +}; + +cdl_option CYGSEM_REDBOOT_VALIDATE_USER_RAM_LOADS { + user_value 0 +}; + +#cdl_option CYGSEM_REDBOOT_FLASH_CONFIG { +# user_value 1 +#}; +# +#cdl_option CYGBLD_REDBOOT_FLASH_BOOT_OFFSET { +# inferred_value 0x1C00000 +#}; + +cdl_option CYGSEM_REDBOOT_BSP_SYSCALLS { + user_value 1 +}; +