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