aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-support/lzop/lzop/x32_abi_miniacc_h.patch
blob: 739be823113442b6a355713a891578f18606f8e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Fix get of FLAGS register in x32 ABI,

x32 ABI requires to have 64-bit variable to store FLAGS register
instead of size_t that is 32-bit variable, this fix operand
type mismatch when try to pop previous pushf value.

Upstream-Status: Submitted

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>

Index: lzop-1.03/src/miniacc.h
===================================================================
--- lzop-1.03.orig/src/miniacc.h
+++ lzop-1.03/src/miniacc.h
@@ -754,6 +754,9 @@
 #elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64)
 #  define ACC_ARCH_AMD64            1
 #  define ACC_INFO_ARCH             "amd64"
+#  if defined(__ILP32__)
+#    define ACC_ARCH_AMD64_X32      1
+#  endif
 #elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB))
 #  define ACC_ARCH_ARM              1
 #  define ACC_ARCH_ARM_THUMB        1
@@ -6787,7 +6790,11 @@ ACCLIB_PUBLIC_NOINLINE(void, acc_debug_n
 ACCLIB_PUBLIC_NOINLINE(int, acc_debug_align_check_query) (void)
 {
 #if (ACC_ARCH_AMD64 || ACC_ARCH_I386) && (ACC_ASM_SYNTAX_GNUC)
+#  if defined(ACC_ARCH_AMD64_X32)
+    unsigned long long r;
+#  else
     size_t r;
+#  endif
     __asm__ __volatile__("pushf\n pop %0\n" : "=a" (r) : : __ACC_ASM_CLOBBER);
     return (int)(r >> 18) & 1;
 #elif (ACC_ARCH_I386) && (ACC_ASM_SYNTAX_MSC)