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