X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=seabios.git;a=blobdiff_plain;f=src%2Futil.c;h=53ef84ded96dfb230c3162b4bafded88fa3394cf;hp=ed73d632f11e619d1e83fbba7d7c581f82adc481;hb=9eb210023718c65a1300cb0b768ba478b0a2b211;hpb=e216ce8fb5470a375756574d65723cbf764a2919 diff --git a/src/util.c b/src/util.c index ed73d63..53ef84d 100644 --- a/src/util.c +++ b/src/util.c @@ -8,6 +8,22 @@ #include "bregs.h" // struct bregs #include "config.h" // BUILD_STACK_ADDR +void +cpuid(u32 index, u32 *eax, u32 *ebx, u32 *ecx, u32 *edx) +{ + // Check for cpu id + u32 origflags = save_flags(); + restore_flags(origflags ^ F_ID); + u32 newflags = save_flags(); + restore_flags(origflags); + + if (((origflags ^ newflags) & F_ID) != F_ID) + // no cpuid + *eax = *ebx = *ecx = *edx = 0; + else + __cpuid(index, eax, ebx, ecx, edx); +} + /**************************************************************** * 16bit calls