+/**
+ * Struktur fuer die Infos aus CPUID, Level 1
+ * Enthaelt Infos ueber den APIC (ebx) sowie die Standardflags (edx, ecx)
+ */
+typedef struct {
+ dword eax;
+ union {
+ dword ebx;
+ struct {
+ byte apic_id;
+ byte cpu_count;
+ byte clflush;
+ byte brand_id;
+ };
+ };
+ dword ecx;
+ dword edx;
+} cpuid_1;
void cpuid(dword* eax, dword* ebx, dword* ecx, dword* edx)
{
asm volatile("cpuid"
- : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx)
- : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx));
+ : "=a"(*eax), "=b"(*ebx), "=c"(*ecx), "=d"(*edx)
+ : "a"(*eax), "b"(*ebx), "c"(*ecx), "d"(*edx)
+ );
}