110 lines
2.1 KiB
Plaintext
110 lines
2.1 KiB
Plaintext
|
/*
|
||
|
This is free and unencumbered software released into the public domain.
|
||
|
|
||
|
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||
|
distribute this software, either in source code form or as a compiled
|
||
|
binary, for any purpose, commercial or non-commercial, and by any
|
||
|
means.
|
||
|
*/
|
||
|
OUTPUT_FORMAT("elf32-littleriscv", "elf32-littleriscv", "elf32-littleriscv")
|
||
|
OUTPUT_ARCH(riscv)
|
||
|
ENTRY(crtStart)
|
||
|
|
||
|
MEMORY {
|
||
|
onChipRam : ORIGIN = 0x80000000, LENGTH = 8k
|
||
|
}
|
||
|
|
||
|
_stack_size = DEFINED(_stack_size) ? _stack_size : 512;
|
||
|
_heap_size = DEFINED(_heap_size) ? _heap_size : 0;
|
||
|
|
||
|
SECTIONS {
|
||
|
|
||
|
.vector : {
|
||
|
*crt.o(.text);
|
||
|
} > onChipRam
|
||
|
|
||
|
.memory : {
|
||
|
*(.text);
|
||
|
end = .;
|
||
|
} > onChipRam
|
||
|
|
||
|
.rodata :
|
||
|
{
|
||
|
*(.rdata)
|
||
|
*(.rodata .rodata.*)
|
||
|
*(.gnu.linkonce.r.*)
|
||
|
} > onChipRam
|
||
|
|
||
|
.ctors :
|
||
|
{
|
||
|
. = ALIGN(4);
|
||
|
_ctors_start = .;
|
||
|
KEEP(*(.init_array*))
|
||
|
KEEP (*(SORT(.ctors.*)))
|
||
|
KEEP (*(.ctors))
|
||
|
. = ALIGN(4);
|
||
|
_ctors_end = .;
|
||
|
} > onChipRam
|
||
|
|
||
|
.data :
|
||
|
{
|
||
|
*(.rdata)
|
||
|
*(.rodata .rodata.*)
|
||
|
*(.gnu.linkonce.r.*)
|
||
|
*(.data .data.*)
|
||
|
*(.gnu.linkonce.d.*)
|
||
|
. = ALIGN(8);
|
||
|
PROVIDE( __global_pointer$ = . + 0x800 );
|
||
|
*(.sdata .sdata.*)
|
||
|
*(.gnu.linkonce.s.*)
|
||
|
. = ALIGN(8);
|
||
|
*(.srodata.cst16)
|
||
|
*(.srodata.cst8)
|
||
|
*(.srodata.cst4)
|
||
|
*(.srodata.cst2)
|
||
|
*(.srodata .srodata.*)
|
||
|
} > onChipRam
|
||
|
|
||
|
.bss (NOLOAD) : {
|
||
|
. = ALIGN(4);
|
||
|
/* This is used by the startup in order to initialize the .bss secion */
|
||
|
_bss_start = .;
|
||
|
*(.sbss*)
|
||
|
*(.gnu.linkonce.sb.*)
|
||
|
*(.bss .bss.*)
|
||
|
*(.gnu.linkonce.b.*)
|
||
|
*(COMMON)
|
||
|
. = ALIGN(4);
|
||
|
_bss_end = .;
|
||
|
} > onChipRam
|
||
|
|
||
|
.noinit (NOLOAD) : {
|
||
|
. = ALIGN(4);
|
||
|
*(.noinit .noinit.*)
|
||
|
. = ALIGN(4);
|
||
|
} > onChipRam
|
||
|
|
||
|
|
||
|
._user_heap (NOLOAD):
|
||
|
{
|
||
|
. = ALIGN(8);
|
||
|
PROVIDE ( end = . );
|
||
|
PROVIDE ( _end = . );
|
||
|
PROVIDE ( _heap_start = .);
|
||
|
. = . + _heap_size;
|
||
|
. = ALIGN(8);
|
||
|
PROVIDE ( _heap_end = .);
|
||
|
} > onChipRam
|
||
|
|
||
|
._stack (NOLOAD):
|
||
|
{
|
||
|
. = ALIGN(16);
|
||
|
PROVIDE (_stack_end = .);
|
||
|
. = . + _stack_size;
|
||
|
. = ALIGN(16);
|
||
|
PROVIDE (_stack_start = .);
|
||
|
} > onChipRam
|
||
|
|
||
|
}
|
||
|
|