Gets rust running rv64iM
This commit is contained in:
1
Makefile
1
Makefile
@@ -4,6 +4,7 @@ FPGA_BOARD = zybo_z7_10
|
|||||||
TOCLEAN = $(filter %log %.jou %.rpt %.mmi %.dcp %.csv\
|
TOCLEAN = $(filter %log %.jou %.rpt %.mmi %.dcp %.csv\
|
||||||
%.wdb vivado% updatemem% usage_statistics_webtalk%,$(wildcard *))
|
%.wdb vivado% updatemem% usage_statistics_webtalk%,$(wildcard *))
|
||||||
TOCLEAN += $(wildcard _*) .Xil out RTL build download.bit $(MEM_DIR)
|
TOCLEAN += $(wildcard _*) .Xil out RTL build download.bit $(MEM_DIR)
|
||||||
|
TOCLEAN += ./bench/programs_rust/target/riscv64i/release
|
||||||
|
|
||||||
# macro de verbosité
|
# macro de verbosité
|
||||||
VERB := 0
|
VERB := 0
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.section .text,"ax",@progbits
|
.section .text._start,"ax",@progbits
|
||||||
.equ STACK_SIZE, 1024
|
.equ STACK_SIZE, 1024
|
||||||
.globl _start
|
.globl _start
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,36 @@
|
|||||||
OUTPUT_ARCH( "riscv" )
|
OUTPUT_ARCH( "riscv" )
|
||||||
|
|
||||||
|
|
||||||
ENTRY (_start)
|
ENTRY (_start)
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
/* Ram */
|
||||||
|
ram (rawx) : ORIGIN = 0x00010000, LENGTH = 0x10000
|
||||||
|
}
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x10000;
|
|
||||||
.text : { *(.text) }
|
. = ORIGIN(ram);
|
||||||
|
.text : {
|
||||||
|
*(.text._start)
|
||||||
|
*(.text .text.*)
|
||||||
|
} >ram
|
||||||
|
|
||||||
. = ALIGN(8);
|
. = ALIGN(8);
|
||||||
.data : { *(.data) }
|
|
||||||
.bss : { *(.bss) }
|
.rodata : {
|
||||||
|
*(.rodata .rodata.*)
|
||||||
|
} >ram
|
||||||
|
|
||||||
. = ALIGN(8);
|
. = ALIGN(8);
|
||||||
|
|
||||||
|
.data : { *(.data .data.* ) } >ram
|
||||||
|
.bss : { *(.bss .bss.* ) } >ram
|
||||||
|
|
||||||
|
. = ALIGN(8);
|
||||||
|
|
||||||
PROVIDE(_memory_start = . );
|
PROVIDE(_memory_start = . );
|
||||||
PROVIDE(_memory_end = 0x20000);
|
PROVIDE(_memory_end = ORIGIN(ram) + LENGTH(ram));
|
||||||
PROVIDE(_stack_size = 1024); /* 1 KiB */
|
PROVIDE(_stack_size = 1024); /* 1 KiB */
|
||||||
PROVIDE(_stack_start = _memory_end);
|
PROVIDE(_stack_start = _memory_end);
|
||||||
PROVIDE(_stack_end = _stack_start - _stack_size);
|
PROVIDE(_stack_end = _stack_start - _stack_size);
|
||||||
|
|||||||
@@ -2,13 +2,14 @@
|
|||||||
target = "riscv64i.json"
|
target = "riscv64i.json"
|
||||||
|
|
||||||
[target.riscv64i]
|
[target.riscv64i]
|
||||||
linker = "riscv64-unknown-elf-ld"
|
#linker = "riscv64-unknown-elf-ld"
|
||||||
# linker = "rust-lld"
|
linker = "ld.lld"
|
||||||
|
|
||||||
rustflags = [
|
rustflags = [
|
||||||
# "-C", "link-arg=-nostartfiles",
|
# "-C", "link-arg=-nostartfiles",
|
||||||
"-C", "link-arg=-T../link.ld",
|
"-C", "link-arg=-T../link.ld",
|
||||||
"-C", "link-arg=../mem/crt.o",
|
"-C", "link-arg=../mem/crt.o",
|
||||||
|
"-C", "target-feature=+m",
|
||||||
]
|
]
|
||||||
|
|
||||||
[unstable]
|
[unstable]
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
"os": "none",
|
"os": "none",
|
||||||
"vendor": "unknown",
|
"vendor": "unknown",
|
||||||
"env": "",
|
"env": "",
|
||||||
"features": "+i",
|
"features": "+i,+m",
|
||||||
"linker-flavor": "ld.lld",
|
"linker": "ld.lld",
|
||||||
"linker": "riscv64-unknown-elf-ld",
|
"linker-flavor": "ld",
|
||||||
"executables": true,
|
"executables": true,
|
||||||
"panic-strategy": "abort",
|
"panic-strategy": "abort",
|
||||||
"relocation-model": "static",
|
"relocation-model": "static",
|
||||||
|
|||||||
Reference in New Issue
Block a user