/* * RISC-V specific proc functions for linux-user * * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef RISCV_TARGET_PROC_H #define RISCV_TARGET_PROC_H static int open_cpuinfo(CPUArchState *cpu_env, int fd) { int i; int num_cpus = sysconf(_SC_NPROCESSORS_ONLN); RISCVCPU *cpu = env_archcpu(cpu_env); const RISCVCPUConfig *cfg = riscv_cpu_cfg((CPURISCVState *) cpu_env); char *isa_string = riscv_isa_string(cpu); const char *mmu; if (cfg->mmu) { mmu = (cpu_env->xl == MXL_RV32) ? "sv32" : "sv48"; } else { mmu = "none"; } for (i = 0; i < num_cpus; i++) { dprintf(fd, "processor\t: %d\n", i); dprintf(fd, "hart\t\t: %d\n", i); dprintf(fd, "isa\t\t: %s\n", isa_string); dprintf(fd, "mmu\t\t: %s\n", mmu); dprintf(fd, "uarch\t\t: qemu\n\n"); } g_free(isa_string); return 0; } #define HAVE_ARCH_PROC_CPUINFO #endif /* RISCV_TARGET_PROC_H */