Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-5]: src/sys/arch/i386/i386 Pull up revisions 1.1-1.6 (new, requ...



details:   https://anonhg.NetBSD.org/src/rev/333c60702d1e
branches:  netbsd-1-5
changeset: 490973:333c60702d1e
user:      he <he%NetBSD.org@localhost>
date:      Fri Mar 30 21:30:54 2001 +0000

description:
Pull up revisions 1.1-1.6 (new, requested by fvdl):
  Add some required Linux emulation bits to support the Linux
  version of VMware.

diffstat:

 sys/arch/i386/i386/procfs_machdep.c |  152 ++++++++++++++++++++++++++++++++++++
 1 files changed, 152 insertions(+), 0 deletions(-)

diffs (156 lines):

diff -r 19b01800f2a4 -r 333c60702d1e sys/arch/i386/i386/procfs_machdep.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/i386/procfs_machdep.c       Fri Mar 30 21:30:54 2001 +0000
@@ -0,0 +1,152 @@
+/*     $NetBSD: procfs_machdep.c,v 1.6.4.2 2001/03/30 21:30:54 he Exp $        */
+
+/*
+ * Copyright (c) 2001 Wasabi Systems, Inc.
+ * All rights reserved.
+ *
+ * Written by Frank van der Linden for Wasabi Systems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed for the NetBSD Project by
+ *      Wasabi Systems, Inc.
+ * 4. The name of Wasabi Systems, Inc. may not be used to endorse
+ *    or promote products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/mount.h>
+#include <sys/vnode.h>
+#include <miscfs/procfs/procfs.h>
+#include <machine/cpu.h>
+#include <machine/specialreg.h>
+
+extern int i386_fpu_present, i386_fpu_exception, i386_fpu_fdivbug;
+extern u_int64_t cpu_tsc_freq;
+extern int cpu_feature;
+extern char cpu_model[];
+extern char cpu_vendor[];
+extern int cpu_id, cpu_class;
+
+static const char * const i386_features[] = {
+       "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
+       "cx8", "apic", "10", "sep", "mtrr", "pge", "mca", "cmov",
+       "fgpat", "pse36", "psn", "19", "20", "21", "22", "mmx",
+       "fxsr", "xmm", "26", "27", "28", "29", "30", "31"
+};
+
+
+/*
+ * Linux-style /proc/cpuinfo.
+ * Only used when procfs is mounted with -o linux.
+ *
+ * In the multiprocessor case, this should be a loop over all CPUs.
+ */
+int
+procfs_getcpuinfstr(char *buf, int *len)
+{
+       int left, l, i;
+       char featurebuf[256], *p;
+       u_int64_t freq, fraq;
+
+       if (cpu_tsc_freq != 0) {
+               freq = (cpu_tsc_freq + 4999) / 1000000;
+               fraq = ((cpu_tsc_freq + 4999) / 10000) % 100;
+       }
+
+       p = featurebuf;
+       left = sizeof featurebuf;
+       for (i = 0; i < 32; i++) {
+               if (cpu_feature & (1 << i)) {
+                       l = snprintf(p, left, "%s ", i386_features[i]);
+                       left -= l;
+                       p += l;
+                       if (left <= 0)
+                               break;
+               }
+       }
+
+       p = buf;
+       left = *len;
+       l = snprintf(p, left,
+               "processor\t: %d\n"
+               "vendor_id\t: %s\n"
+               "cpu family\t: %d\n"
+               "model\t\t: %d\n"
+               "model name\t: %s\n"
+               "stepping\t: ",
+               0,
+               cpu_vendor,
+               cpuid_level >= 0 ? ((cpu_id >> 8) & 15) : cpu_class + 3,
+               cpuid_level >= 0 ? ((cpu_id >> 4) & 15) : 0,
+               cpu_model
+           );
+
+       left -= l;
+       p += l;
+       if (left <= 0)
+               return 0;
+
+       if (cpuid_level >= 0)
+               l = snprintf(p, left, "%d\n", cpu_id & 15);
+       else
+               l = snprintf(p, left, "unknown\n");
+
+       left -= l;
+       p += l;
+       if (left <= 0)
+               return 0;
+
+               
+       if (cpu_tsc_freq != 0)
+               l = snprintf(p, left, "cpu MHz\t\t: %qd.%qd\n",
+                   freq, fraq);
+       else
+               l = snprintf(p, left, "cpu MHz\t\t: unknown\n");
+
+       left -= l;
+       p += l;
+       if (left <= 0)
+               return 0;
+
+       l = snprintf(p, left,
+               "fdiv_bug\t: %s\n"
+               "fpu\t\t: %s\n"
+               "fpu_exception:\t: %s\n"
+               "cpuid level\t: %d\n"
+               "wp\t\t: %s\n"
+               "flags\t\t: %s\n",
+               i386_fpu_fdivbug ? "yes" : "no",
+               i386_fpu_present ? "yes" : "no",
+               i386_fpu_exception ? "yes" : "no",
+               cpuid_level,
+               (rcr0() & CR0_WP) ? "yes" : "no",
+               featurebuf);
+
+       *len = (p + l) - buf;
+
+       return 0;
+}



Home | Main Index | Thread Index | Old Index