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