1 #include <stdint.h>
2
3 #include <cpuinfo/log.h>
4 #include <riscv/api.h>
5
cpuinfo_riscv_decode_vendor_uarch(uint32_t vendor_id,uint32_t arch_id,uint32_t imp_id,enum cpuinfo_vendor vendor[restrict static1],enum cpuinfo_uarch uarch[restrict static1])6 void cpuinfo_riscv_decode_vendor_uarch(
7 uint32_t vendor_id,
8 uint32_t arch_id,
9 uint32_t imp_id,
10 enum cpuinfo_vendor vendor[restrict static 1],
11 enum cpuinfo_uarch uarch[restrict static 1]) {
12 /* The vendor ID is sufficient to determine the cpuinfo_vendor. */
13 switch (vendor_id) {
14 case cpuinfo_riscv_chipset_vendor_sifive:
15 *vendor = cpuinfo_vendor_sifive;
16 break;
17 default:
18 *vendor = cpuinfo_vendor_unknown;
19 cpuinfo_log_warning("unknown vendor ID: %" PRIu32, vendor_id);
20 break;
21 }
22 /**
23 * TODO: Add support for parsing chipset architecture and implementation
24 * IDs here, when a chipset of interest comes along.
25 */
26 *uarch = cpuinfo_uarch_unknown;
27 }
28