diff --git a/lsflib/tools/main.c b/lsflib/tools/main.c new file mode 100644 --- /dev/null +++ b/lsflib/tools/main.c @@ -0,0 +1,54 @@ +/* + * cpuinfo + */ + +#include +#include +#include + +int main (int argc, char **argv) +{ + signed long i; + ULONG ax = 0, bx = 0, cx = 0, dx = 0; + + printf ("Vendor : %s\n", get_cpu_vendor ()); + printf ("Type : %ld\n", (get_cpu_function (1, &ax, &bx, &cx, &dx) >> 12) & 0x1); + printf ("Family : %ld\n", (get_cpu_function (1, &ax, &bx, &cx, &dx) >> 8) & 0xF); + printf ("Model : %ld\n", (get_cpu_function (1, &ax, &bx, &cx, &dx) >> 4) & 0xF); + printf ("Step : %ld\n", (get_cpu_function (1, &ax, &bx, &cx, &dx) & 0xF)); + + if (strcmp (get_cpu_vendor (), "AuthenticAMD")) { + printf ("Cannot handle NON-AMD-CPUs\n"); + return EXIT_SUCCESS; + } + + printf ("Extensions : %ld\n", (get_cpu_function (0x80000000, &ax, &bx, &cx, &dx)) & 0xFF); + printf ("Generation : %ld\n", (get_cpu_function (0x80000001, &ax, &bx, &cx, &dx) >> 8) & 0xF); + printf ("Model : %ld\n", (get_cpu_function (0x80000001, &ax, &bx, &cx, &dx) >> 4) & 0xF); + printf ("Step : %ld\n", (get_cpu_function (0x80000001, &ax, &bx, &cx, &dx)) & 0xF); + + get_cpu_function (0x80000006, &ax, &bx, &cx, &dx); + printf ("L2Cache : %ld Kb\n", (cx >> 16) & 0xFFFF); + + printf ("Brand : %s", get_cpu_brand (0x80000002)); + printf ("%s", get_cpu_brand (0x80000003)); + printf ("%s\n", get_cpu_brand (0x80000004)); + + if ((get_cpu_function (0x80000000, &ax, &bx, &cx, &dx) & 0xFF) >= 8) { + printf ("Hammer : 0x%.8lx\n\n", (get_cpu_function (0x80000008, &ax, &bx, &cx, &dx))); + } + + for (i = 0x0; i < 0x2; i++) { + get_cpu_function (i, &ax, &bx, &cx, &dx); + printf ("EAX:%.8lx: %.8lx EBX:%.8lx: %.8lx ECX:%.8lx: %.8lx EDX:%.8lx: %.8lx\n", i, ax, i, bx, i, cx, i, dx); + } + + printf ("\n"); + + for (i = 0x80000000; i <= 0x80000008; i++) { + get_cpu_function (i, &ax, &bx, &cx, &dx); + printf ("EAX:%.8lx: %.8lx EBX:%.8lx: %.8lx ECX:%.8lx: %.8lx EDX:%.8lx: %.8lx\n", i, ax, i, bx, i, cx, i, dx); + } + + return 0; +}