ref: 7ae6508d7e804263662fe4595018f3782b483ce3
parent: d6da605605a1fd5948c46fae8a23a67e8fee3ede
parent: 6862f4ee0e056dc83ec70438916e46547edbb513
author: cinap_lenrek <[email protected]>
date: Sun Mar 17 15:41:39 EDT 2013
merge
--- a/sys/src/cmd/aux/cpuid.c
+++ b/sys/src/cmd/aux/cpuid.c
@@ -31,7 +31,7 @@
{
Res r;
char buf[13];
-
+
r = cpuid(0, 0);
((ulong *) buf)[0] = r.bx;
((ulong *) buf)[1] = r.dx;
@@ -44,7 +44,7 @@
printbits(char *id, ulong x, char **s)
{
int i, j;
-
+
for(i = 0, j = 0; i < 32; i++)
if((x & (1<<i)) != 0 && s[i] != nil){
if(j++ % 16 == 0){
@@ -63,17 +63,26 @@
{
Res r;
static char *bitsdx[32] = {
- "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", "cx8", "apic",
- nil, "sep", "mtrr", "pge", "mca", "cmov", "pat", "pse36", "pn", "clflush",
- nil, "dts", "acpi", "mmx", "fxsr", "sse", "sse2", "ss", "ht", "tm", "ia64", "pbe",
+ [0] "fpu", "vme", "de", "pse",
+ [4] "tsc", "msr", "pae", "mce",
+ [8] "cx8", "apic", nil, "sep",
+ [12] "mtrr", "pge", "mca", "cmov",
+ [16] "pat", "pse36", "pn", "clflush",
+ [20] nil, "dts", "acpi", "mmx",
+ [24] "fxsr", "sse", "sse2", "ss",
+ [28] "ht", "tm", "ia64", "pbe",
};
static char *bitscx[32] = {
- "pni", "pclmulqdq", "dtes64", "monitor", "ds_cpl", "vmx", "smx", "est", "tm2", "ssse3",
- "cid", nil, "fma", "cx16", "xtpr", "pdcm", nil, "pcid", "dca", "sse4_1", "sse4_2", "x2apic",
- "movbe", "popcnt", "tscdeadline", "aes", "xsave", "osxsave", "avx",
- "f16c", "rdrnd", "hypervisor"
+ [0] "pni", "pclmulqdq", "dtes64", "monitor",
+ [4] "ds_cpl", "vmx", "smx", "est",
+ [8] "tm2", "ssse3", "cid", nil,
+ [12] "fma", "cx16", "xtpr", "pdcm",
+ [16] nil, "pcid", "dca", "sse4_1",
+ [20] "sse4_2", "x2apic", "movbe", "popcnt",
+ [24] "tscdeadline", "aes", "xsave", "osxsave",
+ [28] "avx", "f16c", "rdrnd", "hypervisor",
};
-
+
r = cpuid(1, 0);
Bprint(out, "procmodel %.8ulx / %.8ulx\n", r.ax, r.bx);
printbits("features", r.dx, bitsdx);
@@ -81,20 +90,42 @@
}
void
+func13(ulong)
+{
+ Res r;
+ static char *bitsax[32] = {
+ [0] "xsaveopt",
+ };
+
+ r = cpuid(13, 1);
+ printbits("features", r.ax, bitsax);
+}
+
+void
extfunc1(ulong ax)
{
Res r;
static char *bitsdx[32] = {
- "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", "cx8", "apic", "sep", "mtrr", "pge",
- "mca", "cmov", "pat", "fcmov", "pse36", nil, "mp", "nx", nil, "mmx+", "mmx", nil,
- "ffxsr", "pg1g", "tscp", nil, "lm", "3dnow!+", "3dnow"
+ [0] "fpu", "vme", "de", "pse",
+ [4] "tsc", "msr", "pae", "mce",
+ [8] "cx8", "apic", nil, "syscall",
+ [12] "mtrr", "pge", "mca", "cmov",
+ [16] "pat", "pse36", nil, "mp",
+ [20] "nx", nil, "mmx+", "mmx",
+ [24] "fxsr", "ffxsr", "pg1g", "tscp",
+ [28] nil, "lm", "3dnow!+", "3dnow!",
};
static char *bitscx[32] = {
- "ahf64", "cmp", "svm", "eas", "cr8d", "lzcnt", "sse4a", "msse", "3dnow!p", "osvw", "ibs",
- "xop", "skinit", "wdt", nil, "lwp", "fma4", "tce", nil, "nodeid", nil, "tbm", "topx",
- "pcx_core", "pcx_nb",
+ [0] "ahf64", "cmp", "svm", "eas",
+ [4] "cr8d", "lzcnt", "sse4a", "msse",
+ [8] "3dnow!p", "osvw", "ibs", "xop",
+ [12] "skinit", "wdt", nil, "lwp",
+ [16] "fma4", "tce", nil, "nodeid",
+ [20] nil, "tbm", "topx", "pcx_core",
+ [24] "pcx_nb", nil, nil, nil,
+ [28] nil, nil, nil, nil,
};
-
+
r = cpuid(ax, 0);
Bprint(out, "extmodel %.8ulx / %.8ulx\n", r.ax, r.bx);
printbits("extfeatures", r.dx, bitsdx);
@@ -129,7 +160,7 @@
extfunc8(ulong ax)
{
Res r;
-
+
r = cpuid(ax, 0);
Bprint(out, "physbits %uld\n", CUT(r.ax, 0, 7));
Bprint(out, "virtbits %uld\n", CUT(r.ax, 8, 15));
@@ -138,8 +169,9 @@
}
void (*funcs[])(ulong) = {
- [0] func0,
- [1] func1,
+ [0] func0,
+ [1] func1,
+ [13] func13,
};
void (*extfuncs[])(ulong) = {
@@ -154,7 +186,7 @@
stdfunc(ulong ax)
{
Res r;
-
+
r = cpuid(ax, 0);
Bprint(out, "%.8ulx %.8ulx %.8ulx %.8ulx %.8ulx\n", ax, r.ax, r.bx, r.cx, r.dx);
}
@@ -176,7 +208,7 @@
int i, rflag, aflag;
ulong w;
static Biobuf buf;
-
+
rflag = aflag = 0;
ARGBEGIN {
case 'r': rflag++; break;