aboutsummaryrefslogtreecommitdiffstats
path: root/main/xen/xen-x86-pic.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/xen/xen-x86-pic.patch')
-rw-r--r--main/xen/xen-x86-pic.patch19
1 files changed, 19 insertions, 0 deletions
diff --git a/main/xen/xen-x86-pic.patch b/main/xen/xen-x86-pic.patch
new file mode 100644
index 0000000000..dcb4d0d817
--- /dev/null
+++ b/main/xen/xen-x86-pic.patch
@@ -0,0 +1,19 @@
+--- ./tools/misc/xen-detect.c.orig
++++ ./tools/misc/xen-detect.c
+@@ -41,8 +41,16 @@
+ int pv_context)
+ {
+ asm volatile (
++#if defined(__PIC__) && defined(__i386__)
++ "movl %%ebx, %%edi ;"
++ "test %1,%1 ; jz 1f ; ud2a ; .ascii \"xen\" ;"
++ "1: cpuid ; "
++ "xchg %%ebx, %%edi"
++ : "=a" (*eax), "=D" (*ebx), "=c" (*ecx), "=d" (*edx)
++#else
+ "test %1,%1 ; jz 1f ; ud2a ; .ascii \"xen\" ; 1: cpuid"
+ : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx)
++#endif
+ : "0" (idx), "1" (pv_context) );
+ }
+