URL
https://opencores.org/ocsvn/or1k_old/or1k_old/trunk
Subversion Repositories or1k_old
[/] [or1k_old/] [trunk/] [rtems-20020807/] [c/] [src/] [lib/] [libbsp/] [i386/] [i386ex/] [startup/] [linkcmds] - Rev 1782
Compare with Previous | Blame | View Log
/** This file contains directives for the GNU linker which are specific* to the Intel 386ex evaluation board.** COPYRIGHT (c) 1989-1999.* On-Line Applications Research Corporation (OAR).** The license and distribution terms for this file may be* found in the file LICENSE in this distribution or at* http://www.OARcorp.com/rtems/license.html.** linkcmds,v 1.14 2002/05/09 21:36:05 joel Exp** Memory layout:** 0x3f80000 -> 0x3ff0000 : text section* 0x3ff0000 -> 0x3ff0028 : global descriptor table in ROM* 0x3ff0028 -> 0x3fff000 : data section ( copied by start.s to RAM )* 0x3fff000 -> 0x3fffff0 : initial section ( init 386ex, goto protected mode, copy ROM-RAM )* 0x3fffff0 -> 0x4000000 : reset section ( jmp to initial only )*/ENTRY(reset) ;SECTIONS{/***************************************************************************************** data section:** This section defines the locations of the data section in ROM as well as in RAM.* start.s copies the data section to RAM in real mode. This is done PRIOR to the lgdt* instruction since the data section contains the Global_descriptor_table and GDTR.***********************************************************************************/_rom_data_start = 0x3ff0000;_rom_data_segment = 0xF000;_rom_data_offset = 0x0;_ram_data_segment = 0x0000 ;_ram_data_offset = 0x0;_ram_data_location = _ram_data_segment * 16 + _ram_data_offset;.init : { _init = .; *(.init) } = 0x9090.fini : { _fini = .; *(.fini) } = 0x9090.data :AT ( _rom_data_start ){_sdata = .;*(.data);_edata = .;}_data_start = ADDR(.data) ;data_start = _data_start ;_data_size = _edata - _sdata ;/*************************************************************************************** bss section:** The bss section is the last section in RAM.*************************************************************************************/_edata = ALIGN( 0x10 );.bss :{_bss_start = .;*(.bss);*(COMMON);_ebss = ALIGN(0x10);end = _ebss;_end = end;__end = end;}_bss_size = _ebss - _bss_start ;/*************************************************************************************** General variables:** The stack_size variable is customizable here. The heap is located directly after* The stack in RAM. A routine within bspstart.c uses these variables to ensure that* the heap used by RTEMS is as large as the RAM remaining after all workspace configurations* are complete.*************************************************************************************/stack_size = 0x8000 ;stack_origin = end + stack_size ;heap_bottom = stack_origin + 4 ;/**************************************************************************************** text section:** This section is NOT copied into RAM. It is left in ROM, as the flash ROM is quick enough.***************************************************************************************/.text ( 0x3f80000 ):{CREATE_OBJECT_SYMBOLStext_start = . ;_text_start = . ;*(.text ) ;. = ALIGN (16);*(.eh_fram). = ALIGN (16);/** C++ constructors*/__CTOR_LIST__ = .;LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)*(.ctors)LONG(0)__CTOR_END__ = .;. = ALIGN (4) ;__DTOR_LIST__ = .;LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)*(.dtors)LONG(0)__DTOR_END__ = .;_rodata_start = . ;*(.rodata*)*(.gnu.linkonce.r*)_erodata = ALIGN( 0x10 ) ;_etext = ALIGN( 0x10 );_endtext = . ;}/******************************************************************************************** initial section:** This section is defined after the data section. It must be in the top 64K of memory* to enable the initial short jmp from the reset section while still in real-mode. It* initializes the i386ex, moves the gdt from ROM to RAM,loads the gdt,* jumps to protected mode, copies the data section from ROM to RAM and loads the idt.******************************************************************************************/.initial _rom_data_start + _data_size :{*(.initial);}/******************************************************************************************** board reset section:** This section contains the short jmp from the reset section to the initial section. It is* the first code executed on reset/power on.******************************************************************************************/.reset 0x3fffff0:{*(.reset);}/* Stabs debugging sections. */.stab 0 : { *(.stab) }.stabstr 0 : { *(.stabstr) }.stab.excl 0 : { *(.stab.excl) }.stab.exclstr 0 : { *(.stab.exclstr) }.stab.index 0 : { *(.stab.index) }.stab.indexstr 0 : { *(.stab.indexstr) }.comment 0 : { *(.comment) }/* DWARF debug sections.Symbols in the DWARF debugging sections are relative to the beginningof the section so we begin them at 0. *//* DWARF 1 */.debug 0 : { *(.debug) }.line 0 : { *(.line) }/* GNU DWARF 1 extensions */.debug_srcinfo 0 : { *(.debug_srcinfo) }.debug_sfnames 0 : { *(.debug_sfnames) }/* DWARF 1.1 and DWARF 2 */.debug_aranges 0 : { *(.debug_aranges) }.debug_pubnames 0 : { *(.debug_pubnames) }/* DWARF 2 */.debug_info 0 : { *(.debug_info) }.debug_abbrev 0 : { *(.debug_abbrev) }.debug_line 0 : { *(.debug_line) }.debug_frame 0 : { *(.debug_frame) }.debug_str 0 : { *(.debug_str) }.debug_loc 0 : { *(.debug_loc) }.debug_macinfo 0 : { *(.debug_macinfo) }/* SGI/MIPS DWARF 2 extensions */.debug_weaknames 0 : { *(.debug_weaknames) }.debug_funcnames 0 : { *(.debug_funcnames) }.debug_typenames 0 : { *(.debug_typenames) }.debug_varnames 0 : { *(.debug_varnames) }/* These must appear regardless of . */}
