diff --git a/tools/firmware/hvmloader/util.h b/tools/firmware/hvmloader/util.h index 644450c51c..765a013ddd 100644 --- a/tools/firmware/hvmloader/util.h +++ b/tools/firmware/hvmloader/util.h @@ -190,6 +190,17 @@ static inline void cpuid_count( uint32_t *ecx, uint32_t *edx) { + uint32_t tmp; + + if ( !eax ) + eax = &tmp; + if ( !ebx ) + ebx = &tmp; + if ( !ecx ) + ecx = &tmp; + if ( !edx ) + edx = &tmp; + asm volatile ( "cpuid" : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "a" (leaf), "c" (subleaf) );