diff options
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..308e313b40 --- /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-1997. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may in + * the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * 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); + } +} + + + |