xref: /netbsd/sys/arch/m68k/m68k/procfs_machdep.c (revision 720d1795)
1 /*	$NetBSD: procfs_machdep.c,v 1.7 2014/04/05 18:44:32 christos Exp $ */
2 
3 #include <sys/cdefs.h>
4 __KERNEL_RCSID(0, "$NetBSD: procfs_machdep.c,v 1.7 2014/04/05 18:44:32 christos Exp $");
5 
6 #include <sys/param.h>
7 #include <sys/systm.h>
8 #include <sys/mount.h>
9 #include <sys/vnode.h>
10 #include <miscfs/procfs/procfs.h>
11 
12 #include <m68k/m68k.h>
13 
14 /*
15  * Linux-style /proc/cpuinfo.
16  * Only used when procfs is mounted with -o linux.
17  */
18 int
procfs_getcpuinfstr(char * buf,size_t * len)19 procfs_getcpuinfstr(char *buf, size_t *len)
20 {
21 	const char *cpu, *mmu, *fpu;
22 	size_t size = *len;
23 
24 	switch (cputype) {
25 	case CPU_68020:
26 		cpu = "68020";
27 		break;
28 	case CPU_68030:
29 		cpu = "68030";
30 		break;
31 	case CPU_68040:
32 		cpu = "68040";
33 		break;
34 	case CPU_68060:
35 		cpu = "68060";
36 		break;
37 	default:
38 		cpu = "680x0";
39 		break;
40 	}
41 
42 	switch (mmutype) {
43 	case MMU_68851:
44 		mmu = "68851";
45 		break;
46 	case MMU_68030:
47 		mmu = "68030";
48 		break;
49 	case MMU_68040:
50 		mmu = "68040";
51 		break;
52 	case MMU_68060:
53 		mmu = "68060";
54 		break;
55 	default:
56 		mmu = "unknown";
57 		break;
58 	}
59 
60 	switch (fputype) {
61 	case FPU_NONE:
62 		fpu = "none(soft float)";
63 		break;
64 	case FPU_68881:
65 		fpu = "68881";
66 		break;
67 	case FPU_68882:
68 		fpu = "68882";
69 		break;
70 	case FPU_68040:
71 		fpu = "68040";
72 		break;
73 	case FPU_68060:
74 		fpu = "68060";
75 		break;
76 	default:
77 		fpu = "none";
78 		break;
79 	}
80 
81 	*len = snprintf(buf, size,
82 	    /* as seen in Linux 2.4.27 */
83 	    "CPU:\t\t%s\n"
84 	    "MMU:\t\t%s\n"
85 	    "FPU:\t\t%s\n",
86 	    /*
87 	     * in Linux m68k /proc/cpuinfo there are also "Clocking",
88 	     * "BogoMips" and "Calibration".
89 	     */
90 	    cpu, mmu, fpu);
91 	return size < *len ? -1 : 0;
92 }
93