projects
/
coreboot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
port msrtool to darwin.
[coreboot.git]
/
util
/
msrtool
/
sys.c
diff --git
a/util/msrtool/sys.c
b/util/msrtool/sys.c
index cc2cc4e7c034ecf66e1699687f044176419f7a6b..f6aded52bc4a4f66b830a9b17df34bdacf3d6d06 100644
(file)
--- a/
util/msrtool/sys.c
+++ b/
util/msrtool/sys.c
@@
-2,6
+2,7
@@
* This file is part of msrtool.
*
* Copyright (c) 2008 Peter Stuge <peter@stuge.se>
* This file is part of msrtool.
*
* Copyright (c) 2008 Peter Stuge <peter@stuge.se>
+ * Copyright (c) 2009 coresystems GmbH
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@@
-25,7
+26,18
@@
static struct cpuid_t id;
struct cpuid_t *cpuid(void) {
uint32_t outeax;
struct cpuid_t *cpuid(void) {
uint32_t outeax;
+
+#if defined(__DARWIN__) && !defined(__LP64__)
+ asm volatile (
+ "pushl %%ebx \n"
+ "cpuid \n"
+ "popl %%ebx \n"
+ : "=a" (outeax) : "a" (1) : "%ecx", "%edx"
+ );
+#else
asm ("cpuid" : "=a" (outeax) : "a" (1) : "%ebx", "%ecx", "%edx");
asm ("cpuid" : "=a" (outeax) : "a" (1) : "%ebx", "%ecx", "%edx");
+#endif
+
id.stepping = outeax & 0xf;
outeax >>= 4;
id.model = outeax & 0xf;
id.stepping = outeax & 0xf;
outeax >>= 4;
id.model = outeax & 0xf;
@@
-40,6
+52,9
@@
struct cpuid_t *cpuid(void) {
id.model |= (id.ext_model << 4);
id.family += id.ext_family;
}
id.model |= (id.ext_model << 4);
id.family += id.ext_family;
}
+ printf_verbose("CPU: family %x, model %x, stepping %x\n",
+ id.family, id.model, id.stepping);
+
return &id;
}
return &id;
}