From 9beb5df3c4c35ddefa35742633a7876852065fae Mon Sep 17 00:00:00 2001 From: Mathias Krause Date: Mon, 27 Jun 2011 14:35:00 +0200 Subject: [PATCH] inteltool: fixed 64 bit build The inline assembly for cpuid() was 32 bit specific. Additionally a format string referencing a size_t argument wasn't using the %z length modifier. Change-Id: Iac4a4d5ca81f9bf67bb7b8772013bf6c289e4301 Signed-off-by: Mathias Krause Reviewed-on: http://review.coreboot.org/211 Tested-by: build bot (Jenkins) Reviewed-by: Marc Jones --- util/inteltool/cpu.c | 12 +++++++++--- util/inteltool/inteltool.c | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/util/inteltool/cpu.c b/util/inteltool/cpu.c index 9037d5df66..20748bda44 100644 --- a/util/inteltool/cpu.c +++ b/util/inteltool/cpu.c @@ -26,6 +26,12 @@ #include "inteltool.h" +#ifdef __x86_64__ +# define BREG "%%rbx" +#else +# define BREG "%%ebx" +#endif + int fd_msr; unsigned int cpuid(unsigned int op) @@ -34,9 +40,9 @@ unsigned int cpuid(unsigned int op) #if defined(__PIC__) || defined(__DARWIN__) && !defined(__LP64__) asm volatile ( - "pushl %%ebx\n" - "cpuid\n" - "popl %%ebx\n" + "push " BREG "\n\t" + "cpuid\n\t" + "pop " BREG "\n\t" : "=a" (ret) : "a" (op) : "%ecx", "%edx" ); #else diff --git a/util/inteltool/inteltool.c b/util/inteltool/inteltool.c index 93169d398c..6fab11864b 100644 --- a/util/inteltool/inteltool.c +++ b/util/inteltool/inteltool.c @@ -95,7 +95,7 @@ void *map_physical(uint64_t phys_addr, size_t len) fd_mem, (off_t) phys_addr); if (virt_addr == MAP_FAILED) { - printf("Error mapping physical memory 0x%08lx[0x%x]\n", phys_addr, len); + printf("Error mapping physical memory 0x%08lx[0x%zx]\n", phys_addr, len); return NULL; }