~galfy/helenos/bird-port-mainline

« back to all changes in this revision

Viewing changes to kernel/arch/amd64/_link.ld.in

  • Committer: Martin Decky
  • Date: 2009-08-04 11:19:19 UTC
  • Revision ID: martin@uranus.dsrg.hide.ms.mff.cuni.cz-20090804111919-evyclddlr3v5lhmp
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/** AMD64 linker script
 
2
 *  
 
3
 * umapped section:
 
4
 *      kernel text
 
5
 *      kernel data
 
6
 * mapped section:
 
7
 *      kernel text
 
8
 *      kernel data 
 
9
 */
 
10
 
 
11
#include <arch/boot/boot.h>
 
12
#include <arch/mm/page.h>
 
13
 
 
14
SECTIONS {
 
15
        .unmapped BOOT_OFFSET: AT (0) {
 
16
                unmapped_ktext_start = .;
 
17
                *(K_TEXT_START);
 
18
                unmapped_ktext_end = .;
 
19
 
 
20
                unmapped_kdata_start = .;
 
21
                *(K_DATA_START);
 
22
                *(K_INI_PTLS);
 
23
                unmapped_kdata_end = .;
 
24
        }
 
25
 
 
26
        .mapped (PA2KA(BOOT_OFFSET)+SIZEOF(.unmapped)) : AT (SIZEOF(.unmapped)) {
 
27
                ktext_start = .;
 
28
                *(.text);
 
29
                ktext_end = .;
 
30
 
 
31
                kdata_start = .;
 
32
                *(.data);               /* initialized data */
 
33
                *(.rodata*);            /* string literals */
 
34
                hardcoded_load_address = .;
 
35
                QUAD(PA2KA(BOOT_OFFSET));
 
36
                hardcoded_ktext_size = .;
 
37
                QUAD(ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start));
 
38
                hardcoded_kdata_size = .;
 
39
                QUAD(kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start));
 
40
                hardcoded_unmapped_ktext_size = .;
 
41
                QUAD(unmapped_ktext_end - unmapped_ktext_start);
 
42
                hardcoded_unmapped_kdata_size = .;
 
43
                QUAD(unmapped_kdata_end - unmapped_kdata_start);
 
44
                *(COMMON);              /* global variables */
 
45
 
 
46
                symbol_table = .;
 
47
                *(symtab.*);            /* Symbol table, must be LAST symbol!*/
 
48
 
 
49
                *(.bss);                /* uninitialized static variables */
 
50
 
 
51
                kdata_end = .;
 
52
        }
 
53
 
 
54
        /DISCARD/ : {
 
55
                *(*);
 
56
        }
 
57
        
 
58
#ifdef CONFIG_SMP       
 
59
        _hardcoded_unmapped_size = (unmapped_ktext_end - unmapped_ktext_start) + (unmapped_kdata_end - unmapped_kdata_start);
 
60
        ap_boot = unmapped_ap_boot - BOOT_OFFSET + AP_BOOT_OFFSET;
 
61
        ap_gdtr = unmapped_ap_gdtr - BOOT_OFFSET + AP_BOOT_OFFSET;
 
62
        protected_ap_gdtr = PA2KA(ap_gdtr);
 
63
 
 
64
#endif /* CONFIG_SMP */
 
65
 
 
66
}