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