From b9c6a960808451d75acd9c048f418dd2c92ac59d Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Sat, 14 Sep 2013 13:01:30 -0400 Subject: Split x86 specific functions out of util.c/h to new files x86.c/h. Signed-off-by: Kevin O'Connor --- src/x86.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/x86.c (limited to 'src/x86.c') diff --git a/src/x86.c b/src/x86.c new file mode 100644 index 0000000..0fdf86f --- /dev/null +++ b/src/x86.c @@ -0,0 +1,23 @@ +// X86 utility functions. +// +// Copyright (C) 2013 Kevin O'Connor +// +// This file may be distributed under the terms of the GNU LGPLv3 license. + +#include "x86.h" // __cpuid + +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); +} -- cgit v1.1