1ENTRY(cpu_primary_start_32)
2
3MEMORY
4{
5    /* Low 1MB of memory for secondary processor start-up */
6    lowram  :   ORIGIN = 0, LENGTH = 0x100000
7
8    /* 32 MBytes of RAM for HV */
9    ram     :   ORIGIN = CONFIG_HV_RAM_START, LENGTH = 0x80000000 - CONFIG_HV_RAM_START
10}
11
12SECTIONS
13{
14    .boot :
15    {
16        ld_ram_start = . ;
17        KEEP(*(multiboot_header)) ;
18    } > ram
19
20    .entry :
21    {
22        KEEP(*(entry)) ;
23	ld_entry_end = . ;
24
25    } > ram
26
27    .text :
28    {
29        *(.text .text*) ;
30        *(.gnu.linkonce.t*)
31        *(.note.gnu.build-id)
32        *(.retpoline_thunk)
33    } > ram
34
35     /*Align text top boundary to 2MBytes.*/
36     . = ALIGN(0x200000);
37     ld_text_end = . ;
38
39    .rodata :
40    {
41        *(.rodata*) ;
42
43    } > ram
44
45	.rela :
46	{
47		*(.rela*)
48		*(.dyn*)
49	} > ram
50
51	. = ALIGN(4) ;
52    ld_trampoline_load = .;
53
54    .trampoline : AT (ld_trampoline_load)
55    {
56        ld_trampoline_start = .;
57        *(.trampoline_reset);
58        . = ALIGN(4);
59        ld_trampoline_end = .;
60
61    } > lowram
62
63    ld_trampoline_size = ld_trampoline_end - ld_trampoline_start;
64
65    .data (ld_trampoline_load + ld_trampoline_size):
66    {
67        *(.data) ;
68        *(.data*) ;
69        *(.sdata)
70        *(.gnu.linkonce.d*)
71
72    } > ram
73
74    .boot_stack :
75    {
76    /* 4K for the boot stack */
77        . += 4096;
78        stack_for_boot = .;
79        . = ALIGN(4);
80    } > ram
81
82    .bss_noinit (NOLOAD):
83    {
84	. = ALIGN(4) ;
85	*(.bss_noinit) ;
86	*(.bss_noinit*) ;
87	. = ALIGN(4) ;
88    } > ram
89
90    .bss (NOLOAD):
91    {
92        . = ALIGN(4) ;
93        ld_bss_start = . ;
94        *(.bss) ;
95        *(.bss*) ;
96        *(COMMON) ;
97        . = ALIGN(4) ;
98        ld_bss_end = . ;
99    } > ram
100
101   . = ALIGN(0x200000) ;
102    ld_ram_end = . ;
103}
104