[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[patches] Backport m68k futex fix



I've backported the following patch from trunk to eglibc-2_12 branch to fix alignment issue with futex variables on m68k/ColdFire.

--
Maxim Kuvyrkov
CodeSourcery
maxim@xxxxxxxxxxxxxxxx
(650) 331-3385 x724
commit 0df56592854fa25ce091883cb60fc417283383b8
Author: Andreas Schwab <schwab@xxxxxxxxxxxxxx>
Date:   Fri Jun 11 21:58:32 2010 +0200

    m68k: force alignment of futex variables

diff --git a/ChangeLog.m68k b/ChangeLog.m68k
index cdc0ab5..6cf5d39 100644
--- a/ChangeLog.m68k
+++ b/ChangeLog.m68k
@@ -1,3 +1,8 @@
+2010-06-11  Andreas Schwab  <schwab@xxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/m68k/nptl/bits/pthreadtypes.h: Force
+	alignment of futex variables.
+
 2010-05-22  Andreas Schwab  <schwab@xxxxxxxxxxxxxx>
 
 	* data/c++-types-m68k-linux-gnu.data: New file.
diff --git a/sysdeps/unix/sysv/linux/m68k/nptl/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/m68k/nptl/bits/pthreadtypes.h
index 0140810..832609d 100644
--- a/sysdeps/unix/sysv/linux/m68k/nptl/bits/pthreadtypes.h
+++ b/sysdeps/unix/sysv/linux/m68k/nptl/bits/pthreadtypes.h
@@ -57,7 +57,7 @@ typedef union
 {
   struct __pthread_mutex_s
   {
-    int __lock;
+    int __lock __attribute__ ((__aligned__ (4)));
     unsigned int __count;
     int __owner;
     /* KIND must stay at this position in the structure to maintain
@@ -87,7 +87,7 @@ typedef union
 {
   struct
   {
-    int __lock;
+    int __lock __attribute__ ((__aligned__ (4)));
     unsigned int __futex;
     __extension__ unsigned long long int __total_seq;
     __extension__ unsigned long long int __wakeup_seq;
@@ -112,7 +112,7 @@ typedef unsigned int pthread_key_t;
 
 
 /* Once-only execution */
-typedef int pthread_once_t;
+typedef int __attribute__ ((__aligned__ (4))) pthread_once_t;
 
 
 #if defined __USE_UNIX98 || defined __USE_XOPEN2K
@@ -122,7 +122,7 @@ typedef union
 {
   struct
   {
-    int __lock;
+    int __lock __attribute__ ((__aligned__ (4)));
     unsigned int __nr_readers;
     unsigned int __readers_wakeup;
     unsigned int __writer_wakeup;
@@ -158,7 +158,7 @@ typedef volatile int pthread_spinlock_t;
 typedef union
 {
   char __size[__SIZEOF_PTHREAD_BARRIER_T];
-  long int __align;
+  long int __align __attribute__ ((__aligned__ (4)));
 } pthread_barrier_t;
 
 typedef union