root/sys/arch/m68k/m68k/procfs_machdep.c
/*      $NetBSD: procfs_machdep.c,v 1.8 2026/03/29 14:48:38 thorpej Exp $ */

#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: procfs_machdep.c,v 1.8 2026/03/29 14:48:38 thorpej Exp $");

#include <sys/param.h>
#include <sys/systm.h>
#include <sys/mount.h>
#include <sys/vnode.h>
#include <miscfs/procfs/procfs.h>

#include <m68k/m68k.h>

/*
 * Linux-style /proc/cpuinfo.
 * Only used when procfs is mounted with -o linux.
 */
int
procfs_getcpuinfstr(char *buf, size_t *len)
{
        const char *cpu, *mmu, *fpu;
        size_t size = *len;

        switch (cputype) {
        case CPU_68010:
                cpu = "68010";
                break;
        case CPU_68020:
                cpu = "68020";
                break;
        case CPU_68030:
                cpu = "68030";
                break;
        case CPU_68040:
                cpu = "68040";
                break;
        case CPU_68060:
                cpu = "68060";
                break;
        default:
                cpu = "680x0";
                break;
        }

        switch (mmutype) {
        case MMU_68851:
                mmu = "68851";
                break;
        case MMU_68030:
                mmu = "68030";
                break;
        case MMU_68040:
                mmu = "68040";
                break;
        case MMU_68060:
                mmu = "68060";
                break;
        case MMU_HP:
                mmu = "HP";
                break;
        case MMU_SUN:
                mmu = "Sun";
                break;
        case MMU_CUSTOM:
                mmu = "Custom";
                break;
        default:
                mmu = "unknown";
                break;
        }

        switch (fputype) {
        case FPU_NONE:
                fpu = "none(soft float)";
                break;
        case FPU_68881:
                fpu = "68881";
                break;
        case FPU_68882:
                fpu = "68882";
                break;
        case FPU_68040:
                fpu = "68040";
                break;
        case FPU_68060:
                fpu = "68060";
                break;
        default:
                fpu = "unknown";
                break;
        }

        *len = snprintf(buf, size,
            /* as seen in Linux 2.4.27 */
            "CPU:\t\t%s\n"
            "MMU:\t\t%s\n"
            "FPU:\t\t%s\n",
            /*
             * in Linux m68k /proc/cpuinfo there are also "Clocking",
             * "BogoMips" and "Calibration".
             */
            cpu, mmu, fpu);
        return size < *len ? -1 : 0;
}