5e993f12 |
1 | Index: 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 | |