blob: 9644d5949e17668ad18cf74dc2eecadd5591001a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
/* Linker script for RISC-V */
/* Define memory regions */
MEMORY
{
ROM (rx) : ORIGIN = 0x00010000, LENGTH = 0x1000 /* 1024 bytes for ROM */
RAM (rwx) : ORIGIN = 0x00100000, LENGTH = 0x1000 /* 1024 bytes for RAM */
}
ENTRY(_start)
/* Define sections */
SECTIONS
{
/* Code section */
.text :
{
KEEP(*(.init))
KEEP(*(.text))
KEEP(*(.fini))
KEEP(*(.rodata))
_etext = .;
} > ROM
/* Initialized data section */
.data : AT(_etext)
{
_sdata = .;
KEEP(*(.data))
_edata = .;
} > RAM
/* Uninitialized data section */
.bss :
{
_sbss = .;
KEEP(*(.bss))
KEEP(*(COMMON))
_ebss = .;
} > RAM
/* Stack section */
.stack (NOLOAD) :
{
_stack_start = .;
. += 0x100; /* Adjust the size as needed */
_stack_end = .;
} > RAM
/* Heap section */
.heap (NOLOAD) :
{
_heap_start = .;
. += 0x100; /* Adjust the size as needed */
_heap_end = .;
} > RAM
}
/* Define symbols for memory initialization */
PROVIDE(_start = 0x00010000);
PROVIDE(_etext = _etext);
PROVIDE(_sdata = _sdata);
PROVIDE(_edata = _edata);
PROVIDE(_sbss = _sbss);
PROVIDE(_ebss = _ebss);
PROVIDE(_sstack = _sstack);
PROVIDE(_estack = _estack);
|