Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHau Hsu <hau.hsu@sifive.com>2024-01-05 10:06:39 +0300
committerCorinna Vinschen <corinna@vinschen.de>2024-01-08 15:12:06 +0300
commit573458e7fc4f5247874b139a17e7e54827c92440 (patch)
tree1a13753c49be46c6ab64db903f9e9a9487898251 /libgloss
parent94d871eeac43657090138653ececd49dc97ee631 (diff)
RISC-V: Initialize the jvt CSR
Set symbol '__jvt_base$' as weak. So if the symbol is not set in the linker script, the address would be 0. We initialize jvt CSR only if the address is not 0. Also use csr number directly instead of using symbolic name to prevent the backward incompatible issue. psabi reference: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/2d770815dc9a8b11e61ea1abd487cb25ee56ad5e/riscv-elf.adoc#table-jump-relaxation
Diffstat (limited to 'libgloss')
-rw-r--r--libgloss/riscv/crt0.S11
1 files changed, 11 insertions, 0 deletions
diff --git a/libgloss/riscv/crt0.S b/libgloss/riscv/crt0.S
index 7a4e4e32c..f1c5419a5 100644
--- a/libgloss/riscv/crt0.S
+++ b/libgloss/riscv/crt0.S
@@ -26,6 +26,17 @@ _start:
addi gp, gp, %pcrel_lo(1b)
.option pop
+ /* Initialize jvt CSR (reg addr: 0x0017) */
+ .weak __jvt_base$
+ lla a0, __jvt_base$
+ beqz a0, .Ljvt_init_end
+.option push
+.option norelax
+.option arch, +zicsr
+ csrw 0x17, a0
+.option pop
+.Ljvt_init_end:
+
# Clear the bss segment
la a0, __bss_start
la a2, _end