diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1996-10-15 20:57:04 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1996-10-15 20:57:04 +0000 |
commit | 752cd8fb98f1c65b9f482bdbebeef0bd14d98856 (patch) | |
tree | 0defcc0e4f536c41e46d2d8e4dc5d34e25900cf4 /c/src/lib/libbsp/i386/i386ex/startup/linkcmds | |
parent | patches to erc32.h to correct handling of timer mirror from Jiri Gaisler. (diff) | |
download | rtems-752cd8fb98f1c65b9f482bdbebeef0bd14d98856.tar.bz2 |
initial version from Erik
Diffstat (limited to 'c/src/lib/libbsp/i386/i386ex/startup/linkcmds')
-rw-r--r-- | c/src/lib/libbsp/i386/i386ex/startup/linkcmds | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/i386/i386ex/startup/linkcmds b/c/src/lib/libbsp/i386/i386ex/startup/linkcmds new file mode 100644 index 0000000000..d8fe66f8bf --- /dev/null +++ b/c/src/lib/libbsp/i386/i386ex/startup/linkcmds @@ -0,0 +1,106 @@ +/* + * This file contains directives for the GNU linker which are specific + * to the Intel 386ex evaluation board. + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * linkcmds,v 1.0 1995/11/30 16:52:02 Erik Ivanenko + */ + + + ENTRY(reset) ; +SECTIONS +{ + _rom_ints = 0x3fb0000; + .ints 0x0100 : + AT ( _rom_ints ) /* was 0x3fb3300 */ + { + _sints = .; + *(.ints); + _eints = ALIGN (0x010); + } + _cs4_ints_segment = 0x0010 ; + _cs4_ints_offset = 0x0000 ; + _cs6_t_ints_segment = 0xF000 ; /* was 0xF000 */ + _cs6_t_ints_offset = 0x0000 ; /* was 0x3300 */ + _cs6_t_ints_size = _eints - _sints ; + + _rom_gdt = _rom_ints + _cs6_t_ints_size; + .gdt 0x1000 : + AT ( _rom_gdt ) + { + _sgdt = .; + *(.gdt); + _egdt = ALIGN (0x10); + } + _cs4_gdt_segment = 0x0100 ; /* evaluates to 0x1000 */ + _cs4_gdt_offset = 0x0000 ; + _cs6_t_gdt_segment = 0xF000; + _cs6_t_gdt_offset = _cs6_t_ints_size; /* was 0x0 */ + _cs6_t_gdt_size = _egdt - _sgdt; + + _rom_idt = _rom_gdt + _cs6_t_gdt_size + _cs6_t_ints_size ; + .idt 0x1200 : + AT ( _rom_idt ) + { + _sidt = .; + *(.idt); + _eidt = ALIGN (0x10); + } + _cs4_idt_segment = 0x0120; + _cs4_idt_offset = 0x0000 ; + _cs6_t_idt_segment = 0xF000 ; + _cs6_t_idt_offset = _cs6_t_ints_size + _cs6_t_gdt_size ; /* was 0x1000 */ + _cs6_t_idt_size = _eidt - _sidt; + + _rom_data_start = _rom_idt + _cs6_t_idt_size ; + .data : + AT ( _rom_data_start ) /* was 0x3fd0000 */ + { + _sdata = .; + *(.data); + _edata = ALIGN( 0x10 ) ; + } + _data_start = ADDR(.data) ; + _data_size = _edata - _sdata ; + _edata = _data_start + _data_size ; + + .bss : + { + _bss_start = .; + *(.bss); + *(COMMON); + _ebss = ALIGN(0x10); + end = _ebss; + _end = end; + __end = end; + } + _bss_size = _ebss - _bss_start ; + + + .text ( 0x3f80000 ): + { + _text_start = . ; + *(.text ) ; + _etext = ALIGN( 0x10 ); + } + + .initial 0x3ff1000: + { + *(.initial); + } + + .reset 0x3fffff0: + { + *(.reset); + } +} + + + |