OpenSBI: Boot HART ISA display
Atish Patra
atishp at atishpatra.org
Tue Sep 29 15:05:12 EDT 2020
On Mon, Sep 28, 2020 at 3:18 AM Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> Hello Atish,
>
> on the Kendryte 210 MaixDuino the OpenSBI output line
>
> Boot HART ISA : rv64cicacsidcacsi
>
> looks a bit strange to me (see full output at the end of the mail).
Yeah. It doesn't make any sense.
> Assuming that the characters after rv64 are related to extensions I
> would expect every letter appearing only once.
>
That's correct. See 3.1.1. Machine ISA Register misa in priv spec.
> I tried to add sbi_printf() statements to lib/sbi/riscv_asm.c but they
> do not print out correctly.
>
> After the following change:
>
> diff --git a/lib/sbi/riscv_asm.c b/lib/sbi/riscv_asm.c
> index 8c54c11..a0c95a2 100644
> --- a/lib/sbi/riscv_asm.c
> +++ b/lib/sbi/riscv_asm.c
> @@ -81,7 +81,7 @@ void misa_string(int xlen, char *out, unsigned int out_sz)
>
> for (i = 0; i < array_size(valid_isa_order) && (pos < out_sz);
> i++) {
> if (misa_extension_imp(valid_isa_order[i]))
> - out[pos++] = valid_isa_order[i];
> + out[pos++] = '0' + i;
> }
>
> if (pos < out_sz)
>
> the output becomes
>
> Boot HART ISA : rv6403567;<@BCDHI
>
> I am clueless why valid_isa_order[i] is not evaluated correctly.
>
> When my changes are:
>
> diff --git a/lib/sbi/riscv_asm.c b/lib/sbi/riscv_asm.c
> index 8c54c11..b1bbfc4 100644
> --- a/lib/sbi/riscv_asm.c
> +++ b/lib/sbi/riscv_asm.c
> @@ -12,6 +12,8 @@
> #include <sbi/sbi_error.h>
> #include <sbi/sbi_platform.h>
>
> +static const char valid_isa_order[] = "iemafdqclbjtpvnsuhkorwxyzg";
> +
> /* determine CPU extension, return non-zero support */
> int misa_extension_imp(char ext)
> {
> @@ -52,7 +54,6 @@ int misa_xlen(void)
> void misa_string(int xlen, char *out, unsigned int out_sz)
> {
> unsigned int i, pos = 0;
> - const char valid_isa_order[] = "iemafdqclbjtpvnsuhkorwxyzg";
>
> if (!out)
> return;
>
> the output is:
>
> Boot HART ISA : rv64imafdcsu
>
That's odd. Why does declaring valid_isa_order as static solve the issue ?
Can you print the "misa" in misa_extension_imp () ?
Just a guess: What if misa is not read correctly ?
> I disassembled build/lib/sbi/riscv_asm.o but could not find a problem.
>
> Do you have a suggestion how to analyze this further?
>
> Best regards
>
> Heinrich
>
>
>
> OpenSBI v0.8-29-g7701ea1
> ____ _____ ____ _____
> / __ \ / ____| _ \_ _|
> | | | |_ __ ___ _ __ | (___ | |_) || |
> | | | | '_ \ / _ \ '_ \ \___ \| _ < | |
> | |__| | |_) | __/ | | |____) | |_) || |_
> \____/| .__/ \___|_| |_|_____/|____/_____|
> | |
> |_|
>
> Platform Name : Kendryte K210
> Platform Features : timer
> Platform HART Count : 2
> Boot HART ID : 0
> Boot HART ISA : rv64cicacsidcacsi
> BOOT HART Features : none
> BOOT HART PMP Count : 0
> BOOT HART MHPM Count: 0
> Firmware Base : 0x80000000
> Firmware Size : 100 KB
> Runtime SBI Version : 0.2
>
> MIDELEG : 0x0000000000000222
> MEDELEG : 0x0000000000000109
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi
--
Regards,
Atish
More information about the opensbi
mailing list