summaryrefslogtreecommitdiffstats
path: root/src/pulsecore/core-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-11-11 04:50:32 +0100
committerLennart Poettering <lennart@poettering.net>2009-11-11 04:50:32 +0100
commit22946427624afde1d53973fa5a2e9e2041ffc5b7 (patch)
tree9db77a271430da8abf7b6d11079bc660f7428094 /src/pulsecore/core-util.c
parentd9b5bbca017a8e578434e62ab6daeec24f2c11e1 (diff)
core: make cpuid code compile cleanly with 32bit PIC
Diffstat (limited to 'src/pulsecore/core-util.c')
-rw-r--r--src/pulsecore/core-util.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index 93ddf301..d596c481 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -117,6 +117,7 @@
#include <pulsecore/strbuf.h>
#include <pulsecore/usergroup.h>
#include <pulsecore/strlist.h>
+#include <pulsecore/cpu-x86.h>
#include "core-util.h"
@@ -3085,10 +3086,13 @@ pa_bool_t pa_running_in_vm(void) {
pa_zero(sig);
__asm__ __volatile__ (
- " xor %%ebx, %%ebx \n\t"
+ /* ebx/rbx is being used for PIC! */
+ " push %%"PA_REG_b" \n\t"
" cpuid \n\t"
+ " mov %%ebx, %1 \n\t"
+ " pop %%"PA_REG_b" \n\t"
- : "=a" (eax), "=b" (sig.sig32[0]), "=c" (sig.sig32[1]), "=d" (sig.sig32[2])
+ : "=a" (eax), "=r" (sig.sig32[0]), "=c" (sig.sig32[1]), "=d" (sig.sig32[2])
: "0" (eax)
);