]> git.wh0rd.org - patches.git/blame - bfin-pthreads-gcc-constraints.patch
initial import
[patches.git] / bfin-pthreads-gcc-constraints.patch
CommitLineData
5e993f12 1Index: uClibc/libpthread/linuxthreads.old/sysdeps/bfin/pt-machine.h
2===================================================================
3--- uClibc/libpthread/linuxthreads.old/sysdeps/bfin/pt-machine.h (revision 1807)
4+++ uClibc/libpthread/linuxthreads.old/sysdeps/bfin/pt-machine.h (working copy)
5@@ -22,7 +22,7 @@
6 #define _PT_MACHINE_H 1
7
8 #ifndef PT_EI
9-# define PT_EI extern inline
10+# define PT_EI extern inline __attribute__((always_inline))
11 #endif
12
13 extern long int testandset (int *spinlock);
14@@ -41,11 +41,11 @@ testandset (int *spinlock)
15 {
16 long int res;
17
18- asm volatile ("R1 = 1; P0 = %2; CALL (%4); %0 = R0;"
19- : "=d" (res), "=m" (*spinlock)
20- : "da" (spinlock), "m" (*spinlock),
21- "a" (ATOMIC_XCHG32)
22- :"R0", "R1", "P0", "RETS", "cc", "memory");
23+ __asm__ __volatile__ (
24+ "CALL (%4);"
25+ : "=q0" (res), "=m" (*spinlock)
26+ : "qA" (spinlock), "m" (*spinlock), "a" (ATOMIC_XCHG32), "q1" (1)
27+ : "RETS", "cc", "memory");
28
29 return res;
30 }
31@@ -55,18 +55,15 @@ PT_EI int
32 __compare_and_swap (long int *p, long int oldval, long int newval)
33 {
34 long int readval;
35- asm volatile ("P0 = %2;\n\t"
36- "R1 = %3;\n\t"
37- "R2 = %4;\n\t"
38- "CALL (%5);\n\t"
39- "%0 = R0;\n\t"
40- : "=da" (readval), "=m" (*p)
41- : "da" (p),
42- "da" (oldval),
43- "da" (newval),
44+ __asm__ __volatile__ (
45+ "CALL (%5);"
46+ : "=q0" (readval), "=m" (*p)
47+ : "qA" (p),
48+ "q1" (oldval),
49+ "q2" (newval),
50 "a" (ATOMIC_CAS32),
51 "m" (*p)
52- : "P0", "R0", "R1", "R2", "RETS", "memory", "cc");
53+ : "RETS", "memory", "cc");
54 return readval == oldval;
55 }
56