aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gen-posix-lock-obj.c20
-rw-r--r--src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h2
2 files changed, 12 insertions, 10 deletions
diff --git a/src/gen-posix-lock-obj.c b/src/gen-posix-lock-obj.c
index 22de456..83356ad 100644
--- a/src/gen-posix-lock-obj.c
+++ b/src/gen-posix-lock-obj.c
@@ -43,15 +43,15 @@
#endif
/* Special requirements for certain platforms. */
-#if defined(__hppa__) && defined(__linux__)
-# define USE_16BYTE_ALIGNMENT 1
+#if defined(__solaris__) && (defined (__ILP32__) || defined(_ILP32))
+# define USE_DOUBLE_FOR_ALIGNMENT 1
#else
-# define USE_16BYTE_ALIGNMENT 0
+# define USE_DOUBLE_FOR_ALIGNMENT 0
#endif
-
-
-#if USE_16BYTE_ALIGNMENT && !HAVE_GCC_ATTRIBUTE_ALIGNED
-# error compiler is not able to enforce a 16 byte alignment
+#if defined(__hppa__)
+# define USE_LONG_DOUBLE_FOR_ALIGNMENT 1
+#else
+# define USE_LONG_DOUBLE_FOR_ALIGNMENT 0
#endif
#ifdef USE_POSIX_THREADS
@@ -116,8 +116,10 @@ main (void)
"\n"
"#define GPGRT_LOCK_INITIALIZER {%d,{{",
SIZEOF_PTHREAD_MUTEX_T,
-# if USE_16BYTE_ALIGNMENT
- " int _x16_align __attribute__ ((aligned (16)));\n",
+# if USE_DOUBLE_FOR_ALIGNMENT
+ " double _xd_align;\n",
+# elif USE_LONG_DOUBLE_FOR_ALIGNMENT
+ " long double _xld_align;\n",
# else
"",
# endif
diff --git a/src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h b/src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h
index b57bb76..3682577 100644
--- a/src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h
+++ b/src/syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h
@@ -7,7 +7,7 @@ typedef struct
long _vers;
union {
volatile char _priv[48];
- int _x16_align __attribute__ ((aligned (16)));
+ long double _xld_align;
long _x_align;
long *_xp_align;
} u;