Re: [PATCH] RISC-V: Initialize the jvt CSR

Kito Cheng <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CA+yXCZD1vmPSr-GTixoAuCmODLtg0i2=obt7EU7zjmqYJFGQbg@mail.gmail.com>
LGTM

Hau Hsu via Newlib <[email protected]> 於 2023年9月25日 週一 06:37 寫道:

> We 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.
>
> psabi reference:
>
> https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/2d770815dc9a8b11e61ea1abd487cb25ee56ad5e/riscv-elf.adoc#table-jump-relaxation
> ---
>  libgloss/riscv/crt0.S | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/libgloss/riscv/crt0.S b/libgloss/riscv/crt0.S
> index 7a4e4e32c..4744ba039 100644
> --- a/libgloss/riscv/crt0.S
> +++ b/libgloss/riscv/crt0.S
> @@ -26,6 +26,16 @@ _start:
>    addi  gp, gp, %pcrel_lo(1b)
>  .option pop
>
> +  /* Initialize jvt CSR */
> +  .weak __jvt_base$
> +.option push
> +.option arch, +zcmt, +zicsr
> +  lla a0, __jvt_base$
> +  beqz a0, .Ljvt_init_end
> +  csrw jvt, a0
> +.Ljvt_init_end:
> +.option pop
> +
>    # Clear the bss segment
>    la      a0, __bss_start
>    la      a2, _end
> --
> 2.42.0
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.