linkcmds

来自「RTEMS (Real-Time Executive for Multiproc」· 代码 · 共 204 行

TXT
204
字号
/* *  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.rtems.com/license/LICENSE. * *  $Id: linkcmds,v 1.15.2.3 2004/09/27 21:53:46 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);	*(.gnu.linkonce.d*)	*(.gcc_except_table)        _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_SYMBOLS	text_start = . ;        _text_start = . ;        *(.text ) ;	/*	 * Special FreeBSD sysctl sections.	 */	. = ALIGN (16);	__start_set_sysctl_set = .;	*(set_sysctl_*);	__stop_set_sysctl_set = ABSOLUTE(.);	*(set_domain_*);	*(set_pseudo_*);	*(.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*)	*(.eh_frame)	*(.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 beginning     of 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  .  */}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?