blob: dca77d848335d44fe34b85ba6c813325fe2224a7 [file]
/*
* M68K specific proc functions for linux-user
*
* Copyright (c) 2026 Helge Deller
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef M68K_TARGET_PROC_H
#define M68K_TARGET_PROC_H
static int open_hardware(CPUArchState *cpu_env, int fd)
{
dprintf(fd, "Model:\t\tqemu-m68k\n");
return 0;
}
#define HAVE_ARCH_PROC_HARDWARE
static int open_cpuinfo(CPUArchState *cpu_env, int fd)
{
const char *cpu, *fpu;
struct timespec res;
double freq_mhz;
if (clock_getres(CLOCK_REALTIME, &res) == -1) {
res.tv_nsec = 1;
}
freq_mhz = 1000.0 / res.tv_nsec;
if (m68k_feature(cpu_env, M68K_FEATURE_M68010)) {
cpu = "68010";
} else if (m68k_feature(cpu_env, M68K_FEATURE_M68020)) {
cpu = "68020";
} else if (m68k_feature(cpu_env, M68K_FEATURE_M68030)) {
cpu = "68030";
} else if (m68k_feature(cpu_env, M68K_FEATURE_M68040)) {
cpu = "68040";
} else if (m68k_feature(cpu_env, M68K_FEATURE_M68060)) {
cpu = "68060";
} else {
cpu = "680x0";
}
if (m68k_feature(cpu_env, M68K_FEATURE_FPU)) {
fpu = cpu;
} else {
fpu = "none(soft float)";
}
dprintf(fd, "CPU:\t\t%s\n"
"MMU:\t\t%s\n"
"FPU:\t\t%s\n"
"Clocking:\t%.1fMHz\n"
"Model:\t\tQEMU user v" QEMU_VERSION "\n",
cpu, cpu, fpu, freq_mhz);
/* dropped BogoMips and Calibration for now */
return 0;
}
#define HAVE_ARCH_PROC_CPUINFO
#endif /* M68K_TARGET_PROC_H */