forked from M-Labs/artiq
firmware: merge runtime and satman linker scripts
This commit is contained in:
parent
333b81f789
commit
f3c79e71e1
|
@ -6,7 +6,7 @@ ENTRY(_reset_handler)
|
||||||
* ld does not allow this expression here.
|
* ld does not allow this expression here.
|
||||||
*/
|
*/
|
||||||
MEMORY {
|
MEMORY {
|
||||||
runtime (RWX) : ORIGIN = 0x40000000, LENGTH = 0x4000000 /* 64M */
|
firmware (RWX) : ORIGIN = 0x40000000, LENGTH = 0x4000000 /* 64M */
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
|
@ -14,24 +14,24 @@ SECTIONS
|
||||||
.vectors :
|
.vectors :
|
||||||
{
|
{
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
} > runtime
|
} > firmware
|
||||||
|
|
||||||
.text :
|
.text :
|
||||||
{
|
{
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
} > runtime
|
} > firmware
|
||||||
|
|
||||||
.eh_frame :
|
.eh_frame :
|
||||||
{
|
{
|
||||||
__eh_frame_start = .;
|
__eh_frame_start = .;
|
||||||
KEEP(*(.eh_frame))
|
KEEP(*(.eh_frame))
|
||||||
__eh_frame_end = .;
|
__eh_frame_end = .;
|
||||||
} > runtime
|
} > firmware
|
||||||
|
|
||||||
.eh_frame_hdr :
|
.eh_frame_hdr :
|
||||||
{
|
{
|
||||||
KEEP(*(.eh_frame_hdr))
|
KEEP(*(.eh_frame_hdr))
|
||||||
} > runtime
|
} > firmware
|
||||||
|
|
||||||
__eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0;
|
__eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0;
|
||||||
__eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0;
|
__eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0;
|
||||||
|
@ -39,35 +39,35 @@ SECTIONS
|
||||||
.gcc_except_table :
|
.gcc_except_table :
|
||||||
{
|
{
|
||||||
*(.gcc_except_table)
|
*(.gcc_except_table)
|
||||||
} > runtime
|
} > firmware
|
||||||
|
|
||||||
/* https://sourceware.org/bugzilla/show_bug.cgi?id=20475 */
|
/* https://sourceware.org/bugzilla/show_bug.cgi?id=20475 */
|
||||||
.got :
|
.got :
|
||||||
{
|
{
|
||||||
*(.got)
|
*(.got)
|
||||||
} > runtime
|
} > firmware
|
||||||
|
|
||||||
.got.plt :
|
.got.plt :
|
||||||
{
|
{
|
||||||
*(.got.plt)
|
*(.got.plt)
|
||||||
} > runtime
|
} > firmware
|
||||||
|
|
||||||
.rodata :
|
.rodata :
|
||||||
{
|
{
|
||||||
*(.rodata .rodata.*)
|
*(.rodata .rodata.*)
|
||||||
} > runtime
|
} > firmware
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
{
|
{
|
||||||
*(.data .data.*)
|
*(.data .data.*)
|
||||||
} > runtime
|
} > firmware
|
||||||
|
|
||||||
.bss (NOLOAD) : ALIGN(4)
|
.bss (NOLOAD) : ALIGN(4)
|
||||||
{
|
{
|
||||||
_fbss = .;
|
_fbss = .;
|
||||||
*(.sbss .sbss.* .bss .bss.*);
|
*(.sbss .sbss.* .bss .bss.*);
|
||||||
_ebss = .;
|
_ebss = .;
|
||||||
} > runtime
|
} > firmware
|
||||||
|
|
||||||
.stack (NOLOAD) : ALIGN(0x1000)
|
.stack (NOLOAD) : ALIGN(0x1000)
|
||||||
{
|
{
|
||||||
|
@ -76,12 +76,12 @@ SECTIONS
|
||||||
_estack = .;
|
_estack = .;
|
||||||
. += 0x10000;
|
. += 0x10000;
|
||||||
_fstack = . - 16;
|
_fstack = . - 16;
|
||||||
} > runtime
|
} > firmware
|
||||||
|
|
||||||
.heap (NOLOAD) : ALIGN(16)
|
.heap (NOLOAD) : ALIGN(16)
|
||||||
{
|
{
|
||||||
_fheap = .;
|
_fheap = .;
|
||||||
. = ORIGIN(runtime) + LENGTH(runtime);
|
. = ORIGIN(firmware) + LENGTH(firmware);
|
||||||
_eheap = .;
|
_eheap = .;
|
||||||
} > runtime
|
} > firmware
|
||||||
}
|
}
|
|
@ -21,7 +21,7 @@ $(RUSTOUT)/libruntime.a:
|
||||||
--target $(RUNTIME_DIRECTORY)/../$(CARGO_TRIPLE).json
|
--target $(RUNTIME_DIRECTORY)/../$(CARGO_TRIPLE).json
|
||||||
|
|
||||||
runtime.elf: $(RUSTOUT)/libruntime.a ksupport_data.o
|
runtime.elf: $(RUSTOUT)/libruntime.a ksupport_data.o
|
||||||
$(link) -T $(RUNTIME_DIRECTORY)/runtime.ld \
|
$(link) -T $(RUNTIME_DIRECTORY)/../firmware.ld \
|
||||||
-lunwind-vexriscv-bare -m elf32lriscv
|
-lunwind-vexriscv-bare -m elf32lriscv
|
||||||
|
|
||||||
ksupport_data.o: ../ksupport/ksupport.elf
|
ksupport_data.o: ../ksupport/ksupport.elf
|
||||||
|
|
|
@ -21,7 +21,7 @@ $(RUSTOUT)/libsatman.a:
|
||||||
--target $(SATMAN_DIRECTORY)/../$(CARGO_TRIPLE).json
|
--target $(SATMAN_DIRECTORY)/../$(CARGO_TRIPLE).json
|
||||||
|
|
||||||
satman.elf: $(RUSTOUT)/libsatman.a ksupport_data.o
|
satman.elf: $(RUSTOUT)/libsatman.a ksupport_data.o
|
||||||
$(link) -T $(SATMAN_DIRECTORY)/satman.ld \
|
$(link) -T $(SATMAN_DIRECTORY)/../firmware.ld \
|
||||||
-lunwind-vexriscv-bare -m elf32lriscv
|
-lunwind-vexriscv-bare -m elf32lriscv
|
||||||
|
|
||||||
ksupport_data.o: ../ksupport/ksupport.elf
|
ksupport_data.o: ../ksupport/ksupport.elf
|
||||||
|
|
|
@ -1,91 +0,0 @@
|
||||||
INCLUDE generated/output_format.ld
|
|
||||||
INCLUDE generated/regions.ld
|
|
||||||
ENTRY(_reset_handler)
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
.vectors :
|
|
||||||
{
|
|
||||||
*(.vectors)
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
*(.text .text.*)
|
|
||||||
. = ALIGN(0x40000);
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.eh_frame :
|
|
||||||
{
|
|
||||||
__eh_frame_start = .;
|
|
||||||
KEEP(*(.eh_frame))
|
|
||||||
__eh_frame_end = .;
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.eh_frame_hdr :
|
|
||||||
{
|
|
||||||
KEEP(*(.eh_frame_hdr))
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
__eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0;
|
|
||||||
__eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0;
|
|
||||||
|
|
||||||
.gcc_except_table :
|
|
||||||
{
|
|
||||||
*(.gcc_except_table)
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
/* https://sourceware.org/bugzilla/show_bug.cgi?id=20475 */
|
|
||||||
.got :
|
|
||||||
{
|
|
||||||
PROVIDE(_GLOBAL_OFFSET_TABLE_ = .);
|
|
||||||
*(.got)
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.got.plt :
|
|
||||||
{
|
|
||||||
*(.got.plt)
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.rodata :
|
|
||||||
{
|
|
||||||
_frodata = .;
|
|
||||||
*(.rodata .rodata.*)
|
|
||||||
_erodata = .;
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.data :
|
|
||||||
{
|
|
||||||
*(.data .data.*)
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.sdata :
|
|
||||||
{
|
|
||||||
*(.sdata .sdata.*)
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.bss (NOLOAD) : ALIGN(4)
|
|
||||||
{
|
|
||||||
_fbss = .;
|
|
||||||
*(.sbss .sbss.* .bss .bss.*);
|
|
||||||
. = ALIGN(4);
|
|
||||||
_ebss = .;
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
.stack (NOLOAD) : ALIGN(0x1000)
|
|
||||||
{
|
|
||||||
_sstack_guard = .;
|
|
||||||
. += 0x1000;
|
|
||||||
_estack = .;
|
|
||||||
. += 0x10000;
|
|
||||||
_fstack = . - 16;
|
|
||||||
} > main_ram
|
|
||||||
|
|
||||||
/* remainder of 64MB for heap for alloc use */
|
|
||||||
.heap (NOLOAD) : ALIGN(16)
|
|
||||||
{
|
|
||||||
_fheap = .;
|
|
||||||
. = 0x44000000; // not to overwrite RPC queue
|
|
||||||
_eheap = .;
|
|
||||||
} > main_ram
|
|
||||||
}
|
|
Loading…
Reference in New Issue