/*
* 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 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 */