add better support for cpuid.80000001.dx for amd. Reference: /n/atom/patch/applied/cpuidamdext Date: Sun May 31 06:44:24 CES 2015 Signed-off-by: quanstro@quanstro.net --- /sys/src/cmd/aux/cpuid/cpuid.c Sun May 31 06:44:11 2015 +++ /sys/src/cmd/aux/cpuid/cpuid.c Sun May 31 06:44:12 2015 @@ -167,7 +167,7 @@ /* 31 */ "-31-", "reserved" }; -char *fn80000001dx[32*2] = { +char *intel80000001dx[32*2] = { /* 0 */ "-0-", "reserved", /* 1 */ "-1-", "reserved", /* 2 */ "-2-", "reserved", @@ -202,6 +202,41 @@ /* 31 */ "-31-", "reserved", }; +char *amd80000001dx[32*2] = { +/* 0 */ "x87onchip", "x87 on chip", +/* 1 */ "vme", "virtual x86 mode enhancement", +/* 2 */ "de", "debugging extensions", +/* 3 */ "pse", "page size extensions", +/* 4 */ "tsc", "timestamp counter", +/* 5 */ "msr", "rdmsr/wrmsr support", +/* 6 */ "pae", "page-size extensions", +/* 7 */ "mce", "machine check exception", +/* 8 */ "cmpxch8b", "cmpxch8b", +/* 9 */ "apic", "apic no chip", +/* 10 */ "-10-", "reserved", +/* 11 */ "syscall", "syscall instruction", +/* 12 */ "mtrr", "mtrr support", +/* 13 */ "pge", "pte global bit", +/* 14 */ "mca", "machine check architecture", +/* 15 */ "cmov", "conditional move", +/* 16 */ "pat", "page table attributes", +/* 17 */ "pse36", "page-size extensions (36-bits)", +/* 18 */ "-18-", "reserved", +/* 19 */ "-19-", "reserved", +/* 20 */ "nox", "execute disable", +/* 21 */ "-21-", "reserved", +/* 22 */ "mmx-ext", "mmx exteions", +/* 23 */ "fxsr", "fxsave/fxrestor", +/* 24 */ "ffxsr", "fxsave/fxrestor options", +/* 25 */ "-25-", "reserved", +/* 26 */ "gb", "1gb pages", +/* 27 */ "rdtscp", "RDTSCP supported", +/* 28 */ "-28-", "reserved", +/* 29 */ "amd64", "64-bit long mode supported", +/* 30 */ "3dnowext", "3d now exteions", +/* 31 */ "3dnow", "3d now", +}; + char *intel80000001cx[32*2] = { /* 0 */ "lahf64", "LAHF in 64-bit mode", /* 1 */ "cmp_leg", "hyperthreading not valid", @@ -497,13 +532,17 @@ memset(&r, 0, sizeof r); r.ax = 0x80000001; cpuid1(&r); - print("dx\t"); - decodetab(fn80000001dx, r.dx, 0); - print("cx\t"); - if(isamd()) + if(isamd()){ + print("dx\t"); + decodetab(amd80000001dx, r.dx, 0); + print("cx\t"); decodetab(amd80000001cx, r.cx, 0); - else + }else{ + print("dx\t"); + decodetab(intel80000001dx, r.dx, 0); + print("cx\t"); decodetab(intel80000001cx, r.cx, 0); + } break; case 'f': memset(&r, 0, sizeof r);