diff --git a/litex/soc/cores/cpu/cv32e40p/crt0.S b/litex/soc/cores/cpu/cv32e40p/crt0.S index d654998b2..904cecde8 100644 --- a/litex/soc/cores/cpu/cv32e40p/crt0.S +++ b/litex/soc/cores/cpu/cv32e40p/crt0.S @@ -90,7 +90,7 @@ trap_entry: crt_init: - la sp, _fstack + 4 + la sp, _fstack la a0, vector_table csrw mtvec, a0 diff --git a/litex/soc/cores/cpu/vexriscv/crt0.S b/litex/soc/cores/cpu/vexriscv/crt0.S index 90beab953..0496c84be 100644 --- a/litex/soc/cores/cpu/vexriscv/crt0.S +++ b/litex/soc/cores/cpu/vexriscv/crt0.S @@ -54,7 +54,7 @@ trap_entry: crt_init: - la sp, _fstack + 4 + la sp, _fstack la a0, trap_entry csrw mtvec, a0 diff --git a/litex/soc/cores/cpu/vexriscv_smp/crt0.S b/litex/soc/cores/cpu/vexriscv_smp/crt0.S index 3e466fdd0..95bc0949a 100644 --- a/litex/soc/cores/cpu/vexriscv_smp/crt0.S +++ b/litex/soc/cores/cpu/vexriscv_smp/crt0.S @@ -58,7 +58,7 @@ trap_entry: .text crt_init: - la sp, _fstack + 4 + la sp, _fstack la a0, trap_entry csrw mtvec, a0 sw x0, smp_lottery_lock, a1 diff --git a/litex/soc/software/bios/linker.ld b/litex/soc/software/bios/linker.ld index af6c43be2..a29795b1e 100644 --- a/litex/soc/software/bios/linker.ld +++ b/litex/soc/software/bios/linker.ld @@ -85,7 +85,7 @@ SECTIONS } } -PROVIDE(_fstack = ORIGIN(sram) + LENGTH(sram) - 8); +PROVIDE(_fstack = ORIGIN(sram) + LENGTH(sram)); PROVIDE(_fdata_rom = LOADADDR(.data)); PROVIDE(_edata_rom = LOADADDR(.data) + SIZEOF(.data));