Subversion Repositories HelenOS

Rev

Rev 65 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 65 Rev 105
Line 1... Line 1...
1
/** IA-32 linker script
1
/** IA-32 linker script
2
 *  
2
 *  
-
 
3
 * umapped section:
3
 *  kernel text
4
 * 	kernel text
4
 *  kernel data
5
 * 	kernel data
-
 
6
 * mapped section:
-
 
7
 *	kernel text
5
 *  
8
 *	kernel data 
6
 */
9
 */
7
 
10
 
8
OUTPUT_FORMAT(binary)
11
OUTPUT_FORMAT(binary)
9
ENTRY(kernel_image_start)
12
ENTRY(kernel_image_start)
10
 
13
 
11
SECTIONS {
14
SECTIONS {
12
    .image 0x8000: AT (0x8000) { 
15
    .unmapped 0x8000: AT (0x8000) {
13
	ktext_start = .;
16
	unmapped_ktext_start = .;
14
	*(K_TEXT_START);
17
	*(K_TEXT_START);
-
 
18
	unmapped_ktext_end = .;
15
	delta_start = .;
19
	unmapped_kdata_start = .;
16
	*(K_DATA_START);
20
	*(K_DATA_START);
17
	delta_end = .;			
21
	unmapped_kdata_end = .;
-
 
22
    }
-
 
23
    
-
 
24
    .mapped (0x80000000+SIZEOF(.unmapped)+0x8000) : AT (0x8000+SIZEOF(.unmapped)) { 
-
 
25
	ktext_start = .;
18
	*(.text);
26
	*(.text);
19
	ktext_end = .;
27
	ktext_end = .;
20
 
28
 
21
	kdata_start = .;
29
	kdata_start = .;
22
	*(.data);		/* initialized data */
30
	*(.data);		/* initialized data */
Line 25... Line 33...
25
	*(.bss);		/* uninitialized static variables */
33
	*(.bss);		/* uninitialized static variables */
26
	*(K_DATA_END);
34
	*(K_DATA_END);
27
	kdata_end = .;
35
	kdata_end = .;
28
    }
36
    }
29
 
37
 
30
    . = ABSOLUTE(hardcoded_ktext_size);
-
 
31
    .patch_1 : {
-
 
32
        LONG(ktext_end - ktext_start - (delta_end - delta_start));
38
    _hardcoded_ktext_size = ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start);
33
    }
-
 
34
 
-
 
35
    . = ABSOLUTE(hardcoded_kdata_size);
-
 
36
    .patch_2 : {
-
 
37
        LONG(kdata_end - kdata_start + (delta_end - delta_start));
39
    _hardcoded_kdata_size = kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start);
38
    }
-
 
39
 
-
 
40
    . = ABSOLUTE(hardcoded_load_address);
40
    _hardcoded_load_address = 0x80008000;
41
    .patch_3 : {
-
 
42
        LONG(0x8000);
-
 
43
    }
-
 
44
 
41
 
45
}
42
}