On Mon, Jun 30, 2025 at 03:32:23PM -0700, Jesse Taube wrote:
...
> +static unsigned long gen_tdata1(enum McontrolType type, enum Tdata1Value 
> value, enum Tdata1Mode mode)
> +{
> +     switch (type) {
> +     case SBI_DBTR_TDATA1_TYPE_MCONTROL:
> +             return gen_tdata1_mcontrol(mode, value);
> +     case SBI_DBTR_TDATA1_TYPE_MCONTROL6:
> +             return gen_tdata1_mcontrol6(mode, value);
> +     default:
> +             assert_msg(false, "Invalid mcontrol type: %lu", type);
> +     }
> +}

Please don't forget to also test with rv32. Enums have ambiguous sizes. It
appears rv64 uses a long and rv32 uses an int so this assert doesn't
compile on rv32 due to the use of the %lu format. There's not much we can
do here other than specify the enum type with the

'enum <name> : <type> {...}'

syntax, but that's a C23 feature, so I think it's better to just cast.
I've done

  assert_msg(false, "Invalid mcontrol type: %u", (int)type);

to resolve that.

But, the tests also hang when running with rv32. I haven't tried to debug
yet.

Thanks,
drew

Reply via email to