git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
arch
/
sparc64
/
kernel
/
semaphore.c
diff --git
a/arch/sparc64/kernel/semaphore.c
b/arch/sparc64/kernel/semaphore.c
index
9ddfcb9
..
a809e63
100644
(file)
--- a/
arch/sparc64/kernel/semaphore.c
+++ b/
arch/sparc64/kernel/semaphore.c
@@
-32,8
+32,9
@@
static __inline__ int __sem_update_count(struct semaphore *sem, int incr)
" add %1, %4, %1\n"
" cas [%3], %0, %1\n"
" cmp %0, %1\n"
" add %1, %4, %1\n"
" cas [%3], %0, %1\n"
" cmp %0, %1\n"
+" membar #StoreLoad | #StoreStore\n"
" bne,pn %%icc, 1b\n"
" bne,pn %%icc, 1b\n"
-"
membar #StoreLoad | #StoreStore
\n"
+"
nop
\n"
: "=&r" (old_count), "=&r" (tmp), "=m" (sem->count)
: "r" (&sem->count), "r" (incr), "m" (sem->count)
: "cc");
: "=&r" (old_count), "=&r" (tmp), "=m" (sem->count)
: "r" (&sem->count), "r" (incr), "m" (sem->count)
: "cc");
@@
-65,30
+66,26
@@
void up(struct semaphore *sem)
__asm__ __volatile__("\n"
" ! up sem(%0)\n"
" membar #StoreLoad | #LoadLoad\n"
__asm__ __volatile__("\n"
" ! up sem(%0)\n"
" membar #StoreLoad | #LoadLoad\n"
-"1: lduw [%0], %%g
5
\n"
-" add %%g
5
, 1, %%g7\n"
-" cas [%0], %%g
5
, %%g7\n"
-" cmp %%g
5
, %%g7\n"
+"1: lduw [%0], %%g
1
\n"
+" add %%g
1
, 1, %%g7\n"
+" cas [%0], %%g
1
, %%g7\n"
+" cmp %%g
1
, %%g7\n"
" bne,pn %%icc, 1b\n"
" addcc %%g7, 1, %%g0\n"
" bne,pn %%icc, 1b\n"
" addcc %%g7, 1, %%g0\n"
+" membar #StoreLoad | #StoreStore\n"
" ble,pn %%icc, 3f\n"
" ble,pn %%icc, 3f\n"
-"
membar #StoreLoad | #StoreStore
\n"
+"
nop
\n"
"2:\n"
" .subsection 2\n"
"2:\n"
" .subsection 2\n"
-"3: mov %0, %%g
5
\n"
+"3: mov %0, %%g
1
\n"
" save %%sp, -160, %%sp\n"
" save %%sp, -160, %%sp\n"
-" mov %%g1, %%l1\n"
-" mov %%g2, %%l2\n"
-" mov %%g3, %%l3\n"
" call %1\n"
" call %1\n"
-" mov %%g5, %%o0\n"
-" mov %%l1, %%g1\n"
-" mov %%l2, %%g2\n"
+" mov %%g1, %%o0\n"
" ba,pt %%xcc, 2b\n"
" ba,pt %%xcc, 2b\n"
-" restore
%%l3, %%g0, %%g3
\n"
+" restore\n"
" .previous\n"
: : "r" (sem), "i" (__up)
" .previous\n"
: : "r" (sem), "i" (__up)
- : "g
5
", "g7", "memory", "cc");
+ : "g
1", "g2", "g3
", "g7", "memory", "cc");
}
static void __sched __down(struct semaphore * sem)
}
static void __sched __down(struct semaphore * sem)
@@
-127,30
+124,26
@@
void __sched down(struct semaphore *sem)
__asm__ __volatile__("\n"
" ! down sem(%0)\n"
__asm__ __volatile__("\n"
" ! down sem(%0)\n"
-"1: lduw [%0], %%g
5
\n"
-" sub %%g
5
, 1, %%g7\n"
-" cas [%0], %%g
5
, %%g7\n"
-" cmp %%g
5
, %%g7\n"
+"1: lduw [%0], %%g
1
\n"
+" sub %%g
1
, 1, %%g7\n"
+" cas [%0], %%g
1
, %%g7\n"
+" cmp %%g
1
, %%g7\n"
" bne,pn %%icc, 1b\n"
" cmp %%g7, 1\n"
" bne,pn %%icc, 1b\n"
" cmp %%g7, 1\n"
+" membar #StoreLoad | #StoreStore\n"
" bl,pn %%icc, 3f\n"
" bl,pn %%icc, 3f\n"
-"
membar #StoreLoad | #StoreStore
\n"
+"
nop
\n"
"2:\n"
" .subsection 2\n"
"2:\n"
" .subsection 2\n"
-"3: mov %0, %%g
5
\n"
+"3: mov %0, %%g
1
\n"
" save %%sp, -160, %%sp\n"
" save %%sp, -160, %%sp\n"
-" mov %%g1, %%l1\n"
-" mov %%g2, %%l2\n"
-" mov %%g3, %%l3\n"
" call %1\n"
" call %1\n"
-" mov %%g5, %%o0\n"
-" mov %%l1, %%g1\n"
-" mov %%l2, %%g2\n"
+" mov %%g1, %%o0\n"
" ba,pt %%xcc, 2b\n"
" ba,pt %%xcc, 2b\n"
-" restore
%%l3, %%g0, %%g3
\n"
+" restore\n"
" .previous\n"
: : "r" (sem), "i" (__down)
" .previous\n"
: : "r" (sem), "i" (__down)
- : "g
5
", "g7", "memory", "cc");
+ : "g
1", "g2", "g3
", "g7", "memory", "cc");
}
int down_trylock(struct semaphore *sem)
}
int down_trylock(struct semaphore *sem)
@@
-175,20
+168,20
@@
int down_trylock(struct semaphore *sem)
__asm__ __volatile__("\n"
" ! down_trylock sem(%1) ret(%0)\n"
__asm__ __volatile__("\n"
" ! down_trylock sem(%1) ret(%0)\n"
-"1: lduw [%1], %%g
5
\n"
-" sub %%g
5
, 1, %%g7\n"
-" cmp %%g
5
, 1\n"
+"1: lduw [%1], %%g
1
\n"
+" sub %%g
1
, 1, %%g7\n"
+" cmp %%g
1
, 1\n"
" bl,pn %%icc, 2f\n"
" mov 1, %0\n"
" bl,pn %%icc, 2f\n"
" mov 1, %0\n"
-" cas [%1], %%g
5
, %%g7\n"
-" cmp %%g
5
, %%g7\n"
+" cas [%1], %%g
1
, %%g7\n"
+" cmp %%g
1
, %%g7\n"
" bne,pn %%icc, 1b\n"
" mov 0, %0\n"
" membar #StoreLoad | #StoreStore\n"
"2:\n"
: "=&r" (ret)
: "r" (sem)
" bne,pn %%icc, 1b\n"
" mov 0, %0\n"
" membar #StoreLoad | #StoreStore\n"
"2:\n"
: "=&r" (ret)
: "r" (sem)
- : "g
5
", "g7", "memory", "cc");
+ : "g
1
", "g7", "memory", "cc");
return ret;
}
return ret;
}
@@
-237,31
+230,26
@@
int __sched down_interruptible(struct semaphore *sem)
__asm__ __volatile__("\n"
" ! down_interruptible sem(%2) ret(%0)\n"
__asm__ __volatile__("\n"
" ! down_interruptible sem(%2) ret(%0)\n"
-"1: lduw [%2], %%g
5
\n"
-" sub %%g
5
, 1, %%g7\n"
-" cas [%2], %%g
5
, %%g7\n"
-" cmp %%g
5
, %%g7\n"
+"1: lduw [%2], %%g
1
\n"
+" sub %%g
1
, 1, %%g7\n"
+" cas [%2], %%g
1
, %%g7\n"
+" cmp %%g
1
, %%g7\n"
" bne,pn %%icc, 1b\n"
" cmp %%g7, 1\n"
" bne,pn %%icc, 1b\n"
" cmp %%g7, 1\n"
+" membar #StoreLoad | #StoreStore\n"
" bl,pn %%icc, 3f\n"
" bl,pn %%icc, 3f\n"
-"
membar #StoreLoad | #StoreStore
\n"
+"
nop
\n"
"2:\n"
" .subsection 2\n"
"2:\n"
" .subsection 2\n"
-"3: mov %2, %%g
5
\n"
+"3: mov %2, %%g
1
\n"
" save %%sp, -160, %%sp\n"
" save %%sp, -160, %%sp\n"
-" mov %%g1, %%l1\n"
-" mov %%g2, %%l2\n"
-" mov %%g3, %%l3\n"
" call %3\n"
" call %3\n"
-" mov %%g5, %%o0\n"
-" mov %%l1, %%g1\n"
-" mov %%l2, %%g2\n"
-" mov %%l3, %%g3\n"
+" mov %%g1, %%o0\n"
" ba,pt %%xcc, 2b\n"
" ba,pt %%xcc, 2b\n"
-" restore
%%o0, %%g0, %0
\n"
+" restore\n"
" .previous\n"
: "=r" (ret)
: "0" (ret), "r" (sem), "i" (__down_interruptible)
" .previous\n"
: "=r" (ret)
: "0" (ret), "r" (sem), "i" (__down_interruptible)
- : "g
5
", "g7", "memory", "cc");
+ : "g
1", "g2", "g3
", "g7", "memory", "cc");
return ret;
}
return ret;
}