Gets rust running rv64iM

This commit is contained in:
2025-11-16 12:19:49 +01:00
parent 674c399ef6
commit 4955f9b952
5 changed files with 33 additions and 11 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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]

View File

@@ -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",