ibex_demo/linker.ld

90 lines
1.5 KiB
Plaintext

_entry_point = _vectors_start + 0x80;
ENTRY(_entry_point)
_estack = 0x42040000;
_minimum_stack_size = 0x2000;
_minimum_heap_size = 0x2000;
MEMORY
{
RO_CODE (rx) : ORIGIN = 0x42000000, LENGTH = 192K
RW_DATA (xrw) : ORIGIN = 0x42030000, LENGTH = 64K
}
SECTIONS
{
.isr_vectors :
{
. = ALIGN(4);
_vectors_start = .;
KEEP(*(.isr_vectors))
_vectors_end = .;
. = ALIGN(4);
} >RO_CODE
.text :
{
. = ALIGN(4);
*(.text)
*(.text*)
KEEP (*(.init))
KEEP (*(.fini))
. = ALIGN(4);
} >RO_CODE
.data :
{
. = ALIGN(4);
_sdata = .;
__global_pointer$ = . + 0x800;
*(.data)
*(.data*)
*(.sdata)
*(.sdata*)
. = ALIGN(4);
_edata = .;
} >RW_DATA AT> RO_CODE
_sidata = LOADADDR(.data);
.rodata :
{
. = ALIGN(4);
*(.rodata)
*(.rodata*)
. = ALIGN(4);
} >RO_CODE
.bss :
{
. = ALIGN(4);
_sbss = .;
_bss_start = _sbss;
*(.bss)
*(.bss*)
*(.sbss)
*(.sbss*)
*(COMMON)
. = ALIGN(4);
_ebss = .;
_bss_end = _ebss;
} >RW_DATA
._heap_stack_space :
{
. = ALIGN(8);
_heap_start = .;
. = . + _minimum_heap_size;
_heap_end = .;
. = ALIGN(8);
. = . + _minimum_stack_size;
. = ALIGN(8);
} >RW_DATA
.riscv.attributes 0 :
{
*(.riscv.attributes)
}
}