author | Markus Bröker <mbroeker@largo.dyndns.tv> |
Thu, 16 Apr 2009 12:49:12 +0200 | |
changeset 46 | 4b9e1ac40246 |
parent 6 | c3dc3eb3b541 |
child 77 | 49e0babccb23 |
permissions | -rw-r--r-- |
/* * cpuinfo.c */ #include <cpuid.h> char *get_cpu_brand (int function) { ULONG brand[4]; static char s[48]; __asm__ ("cpuid":"=a" (brand[0]), "=b" (brand[1]), "=c" (brand[2]), "=d" (brand[3]) : "a" (function) ); memcpy (s, brand, sizeof (brand)); return s; } char *get_cpu_vendor () { ULONG vendor[3]; static char s[15]; *s = 0; __asm__ ("cpuid":"=b" (vendor[0]), "=d" (vendor[1]), "=c" (vendor[2]) : "a" (0) ); memcpy (s, vendor, sizeof (vendor)); return s; } ULONG get_cpu_function (ULONG function, ULONG * ax, ULONG * bx, ULONG * cx, ULONG * dx) { __asm__ ("cpuid":"=a" (*ax), "=b" (*bx), "=c" (*cx), "=d" (*dx) : "a" (function) ); return (ULONG) (*ax); }