1 | /* |
---|
2 | * This file contains directives for the GNU linker which are specific |
---|
3 | * to the Intel 386ex evaluation board. |
---|
4 | * |
---|
5 | * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. |
---|
6 | * On-Line Applications Research Corporation (OAR). |
---|
7 | * All rights assigned to U.S. Government, 1994. |
---|
8 | * |
---|
9 | * This material may be reproduced by or for the U.S. Government pursuant |
---|
10 | * to the copyright license under the clause at DFARS 252.227-7013. This |
---|
11 | * notice must appear in all copies of this file and its derivatives. |
---|
12 | * |
---|
13 | * linkcmds,v 1.0 1995/11/30 16:52:02 Erik Ivanenko |
---|
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 ) ; |
---|
91 | _etext = ALIGN( 0x10 ); |
---|
92 | } |
---|
93 | |
---|
94 | .initial 0x3ff1000: |
---|
95 | { |
---|
96 | *(.initial); |
---|
97 | } |
---|
98 | |
---|
99 | .reset 0x3fffff0: |
---|
100 | { |
---|
101 | *(.reset); |
---|
102 | } |
---|
103 | } |
---|
104 | |
---|
105 | |
---|
106 | |
---|