[752cd8f] | 1 | /* |
---|
| 2 | * This file contains directives for the GNU linker which are specific |
---|
| 3 | * to the Intel 386ex evaluation board. |
---|
| 4 | * |
---|
[60b791ad] | 5 | * COPYRIGHT (c) 1989-1998. |
---|
[752cd8f] | 6 | * On-Line Applications Research Corporation (OAR). |
---|
[03f2154e] | 7 | * Copyright assigned to U.S. Government, 1994. |
---|
[752cd8f] | 8 | * |
---|
[98e4ebf5] | 9 | * The license and distribution terms for this file may be |
---|
| 10 | * found in the file LICENSE in this distribution or at |
---|
[03f2154e] | 11 | * http://www.OARcorp.com/rtems/license.html. |
---|
[752cd8f] | 12 | * |
---|
[6f9c75c3] | 13 | * $Id$ |
---|
[752cd8f] | 14 | */ |
---|
| 15 | |
---|
| 16 | |
---|
| 17 | ENTRY(reset) ; |
---|
| 18 | SECTIONS |
---|
| 19 | { |
---|
| 20 | _rom_ints = 0x3fb0000; |
---|
| 21 | .ints 0x0100 : |
---|
| 22 | AT ( _rom_ints ) /* was 0x3fb3300 */ |
---|
| 23 | { |
---|
| 24 | _sints = .; |
---|
| 25 | *(.ints); |
---|
| 26 | _eints = ALIGN (0x010); |
---|
| 27 | } |
---|
| 28 | _cs4_ints_segment = 0x0010 ; |
---|
| 29 | _cs4_ints_offset = 0x0000 ; |
---|
| 30 | _cs6_t_ints_segment = 0xF000 ; /* was 0xF000 */ |
---|
| 31 | _cs6_t_ints_offset = 0x0000 ; /* was 0x3300 */ |
---|
| 32 | _cs6_t_ints_size = _eints - _sints ; |
---|
| 33 | |
---|
| 34 | _rom_gdt = _rom_ints + _cs6_t_ints_size; |
---|
| 35 | .gdt 0x1000 : |
---|
| 36 | AT ( _rom_gdt ) |
---|
| 37 | { |
---|
| 38 | _sgdt = .; |
---|
| 39 | *(.gdt); |
---|
| 40 | _egdt = ALIGN (0x10); |
---|
| 41 | } |
---|
| 42 | _cs4_gdt_segment = 0x0100 ; /* evaluates to 0x1000 */ |
---|
| 43 | _cs4_gdt_offset = 0x0000 ; |
---|
| 44 | _cs6_t_gdt_segment = 0xF000; |
---|
| 45 | _cs6_t_gdt_offset = _cs6_t_ints_size; /* was 0x0 */ |
---|
| 46 | _cs6_t_gdt_size = _egdt - _sgdt; |
---|
| 47 | |
---|
| 48 | _rom_idt = _rom_gdt + _cs6_t_gdt_size + _cs6_t_ints_size ; |
---|
| 49 | .idt 0x1200 : |
---|
| 50 | AT ( _rom_idt ) |
---|
| 51 | { |
---|
| 52 | _sidt = .; |
---|
| 53 | *(.idt); |
---|
| 54 | _eidt = ALIGN (0x10); |
---|
| 55 | } |
---|
| 56 | _cs4_idt_segment = 0x0120; |
---|
| 57 | _cs4_idt_offset = 0x0000 ; |
---|
| 58 | _cs6_t_idt_segment = 0xF000 ; |
---|
| 59 | _cs6_t_idt_offset = _cs6_t_ints_size + _cs6_t_gdt_size ; /* was 0x1000 */ |
---|
| 60 | _cs6_t_idt_size = _eidt - _sidt; |
---|
| 61 | |
---|
| 62 | _rom_data_start = _rom_idt + _cs6_t_idt_size ; |
---|
| 63 | .data : |
---|
| 64 | AT ( _rom_data_start ) /* was 0x3fd0000 */ |
---|
| 65 | { |
---|
| 66 | _sdata = .; |
---|
| 67 | *(.data); |
---|
| 68 | _edata = ALIGN( 0x10 ) ; |
---|
| 69 | } |
---|
| 70 | _data_start = ADDR(.data) ; |
---|
| 71 | _data_size = _edata - _sdata ; |
---|
| 72 | _edata = _data_start + _data_size ; |
---|
| 73 | |
---|
| 74 | .bss : |
---|
| 75 | { |
---|
| 76 | _bss_start = .; |
---|
| 77 | *(.bss); |
---|
| 78 | *(COMMON); |
---|
| 79 | _ebss = ALIGN(0x10); |
---|
| 80 | end = _ebss; |
---|
| 81 | _end = end; |
---|
| 82 | __end = end; |
---|
| 83 | } |
---|
| 84 | _bss_size = _ebss - _bss_start ; |
---|
| 85 | |
---|
| 86 | |
---|
| 87 | .text ( 0x3f80000 ): |
---|
| 88 | { |
---|
| 89 | _text_start = . ; |
---|
| 90 | *(.text ) ; |
---|
[f86ec42] | 91 | . = ALIGN (16); |
---|
| 92 | |
---|
| 93 | *(.eh_fram) |
---|
| 94 | . = ALIGN (16); |
---|
| 95 | |
---|
| 96 | /* |
---|
| 97 | * C++ constructors |
---|
| 98 | */ |
---|
| 99 | __CTOR_LIST__ = .; |
---|
| 100 | LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) |
---|
| 101 | *(.ctors) |
---|
| 102 | LONG(0) |
---|
| 103 | __CTOR_END__ = .; |
---|
| 104 | __DTOR_LIST__ = .; |
---|
| 105 | LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) |
---|
| 106 | *(.dtors) |
---|
| 107 | LONG(0) |
---|
| 108 | __DTOR_END__ = .; |
---|
[752cd8f] | 109 | _etext = ALIGN( 0x10 ); |
---|
| 110 | } |
---|
| 111 | |
---|
| 112 | .initial 0x3ff1000: |
---|
| 113 | { |
---|
| 114 | *(.initial); |
---|
| 115 | } |
---|
| 116 | |
---|
| 117 | .reset 0x3fffff0: |
---|
| 118 | { |
---|
| 119 | *(.reset); |
---|
| 120 | } |
---|
| 121 | } |
---|
| 122 | |
---|
| 123 | |
---|
| 124 | |
---|