02_amd64-cpuid.patch 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. From 705916007fba0a845229a02dc6474cb523eff150 Mon Sep 17 00:00:00 2001
  2. From: David Schleef <ds@schleef.org>
  3. Date: Tue, 20 Jul 2010 21:05:26 +0000
  4. Subject: x86: Fix cpuid function on x86-64
  5. Fixes: #28956.
  6. ---
  7. diff --git a/liboil/liboilcpu-x86.c b/liboil/liboilcpu-x86.c
  8. index e7a1978..ef4d3f2 100644
  9. --- a/liboil/liboilcpu-x86.c
  10. +++ b/liboil/liboilcpu-x86.c
  11. @@ -162,13 +162,10 @@ get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d)
  12. static void
  13. get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d)
  14. {
  15. + *a = op;
  16. __asm__ (
  17. - " pushq %%rbx\n"
  18. " cpuid\n"
  19. - " mov %%ebx, %%esi\n"
  20. - " popq %%rbx\n"
  21. - : "=a" (*a), "=S" (*b), "=c" (*c), "=d" (*d)
  22. - : "0" (op));
  23. + : "+a" (*a), "=b" (*b), "=c" (*c), "=d" (*d));
  24. }
  25. #endif
  26. @@ -185,7 +182,7 @@ oil_cpu_detect_cpuid (void)
  27. {
  28. uint32_t eax, ebx, ecx, edx;
  29. uint32_t level;
  30. - char vendor[13] = { 0 };
  31. + char vendor[13+4] = { 0 };
  32. int ret;
  33. oil_fault_check_enable ();
  34. --
  35. cgit v0.8.3-6-g21f6