• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1OUTPUT_FORMAT("elf32-littleriscv", "elf32-littleriscv", "elf32-littleriscv")
2OUTPUT_ARCH("riscv")
3ENTRY(_start)
4
5RAM_ADDR_START            = 0x80000000;
6RAM_ADDR_SIZE             = 128M;
7FLASH_LOAD_START          = RAM_ADDR_START;
8FLASH_LOAD_SIZE           = RAM_ADDR_SIZE;
9EXCEPT_STACK_SIZE         = 2K;
10NMI_STACK_SIZE            = 1K;
11START_AND_IRQ_STACK_SIZE  = 8K;
12
13MEMORY
14{
15   ram(rwx) : ORIGIN = RAM_ADDR_START, LENGTH = RAM_ADDR_SIZE
16   flash(rwx) : ORIGIN = FLASH_LOAD_START, LENGTH = FLASH_LOAD_SIZE
17}
18SECTIONS
19{
20  .text : ALIGN(0x20)
21  {
22    __text_start = .;
23    . = ALIGN(0x10);
24    *(.start.text)
25    *(.interrupt.*)
26    *(.text.*)
27    . = ALIGN(0x20);
28    __rodata_start = .;
29    . = ALIGN(0x10);
30    *(.rodata.* .srodata.*)
31    . = ALIGN(0x20);
32    __text_end = .;
33    _hdf_drivers_start = .;
34    KEEP(*(.hdf.driver))
35    _hdf_drivers_end = .;
36  } > ram AT > flash
37  .data : ALIGN(0x20)
38  {
39    __global_pointer$ = . + 0x800;
40    __data_load_start = LOADADDR(.data);
41    __data_start = .;
42    . = ALIGN(0x10);
43    *(.data.* .sdata.*)
44    . = ALIGN(0x20);
45    __data_end = .;
46    _edata = .;
47  } > ram AT > flash
48  __data_load_size = SIZEOF(.data);
49  .bss (NOLOAD): ALIGN(0x20)
50  {
51    __bss_start = .;
52    . = ALIGN(0x10);
53    *(.kernel.bss*)
54    *(.bss.* .sbss.*)
55    . = ALIGN(0x20);
56    __bss_end = .;
57  } > ram
58  .stack (NOLOAD): ALIGN(0x40)
59  {
60    __stack_bootom = .;
61    . += EXCEPT_STACK_SIZE;
62    __except_stack_top = .;
63    . += START_AND_IRQ_STACK_SIZE;
64    __start_and_irq_stack_top = .;
65  } > ram
66
67  .heap (NOLOAD): ALIGN(0x40)
68  {
69    __heap_start = .;
70  } > ram
71
72  __heap_size = RAM_ADDR_SIZE - (__heap_start - __text_start);
73  _end = .;
74  end = .;
75}
76