2be5456430905b9fa6773b6850d847cce52d6042
[akaros.git] / kern / arch / riscv / kernel.ld
1 /* Simple linker script for the ROS kernel.
2    See the GNU ld 'info' manual ("info ld") to learn the syntax. */
3
4 OUTPUT_ARCH("riscv")
5 ENTRY(_start)
6
7 SECTIONS
8 {
9         /* Link the kernel for 0xFFFFFFFF80002000, but load it at 0x2000) */
10
11         .text 0xFFFFFFFF80002000 : AT(0x2000) {
12                 *(.text .stub .text.* .gnu.linkonce.t.*)
13                 PROVIDE(etext = .);     /* Define the 'etext' symbol to this value */
14         }
15
16         INCLUDE kern/linker_tables.ld
17         INCLUDE kern/build_id.ld
18
19         .rodata : {
20                 *(.rodata .rodata.* .gnu.linkonce.r.*)
21         }
22
23         /* Adjust the address for the data segment to the next page */
24         . = ALIGN(0x1000);
25
26         /* The data segment */
27         .data : {
28                 *(.data)
29                 *(.sdata)
30         }
31
32         .bss : {
33                 PROVIDE(__start_bss = .);
34                 *(.bss)
35                 *(.sbss)
36                 PROVIDE(__stop_bss = .);
37         }
38
39         .end : {
40                 PROVIDE(end = .);
41         }
42
43         /DISCARD/ : {
44                 *(.eh_frame .note.GNU-stack)
45         }
46 }