git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
Kernel/arm7 - Fixed SPINLOCK to use the swap opcode
[tpg/acess2.git]
/
Kernel
/
arch
/
arm7
/
include
/
lock.h
diff --git
a/Kernel/arch/arm7/include/lock.h
b/Kernel/arch/arm7/include/lock.h
index
e270145
..
dbcac93
100644
(file)
--- a/
Kernel/arch/arm7/include/lock.h
+++ b/
Kernel/arch/arm7/include/lock.h
@@
-28,12
+28,16
@@
static inline int SHORTLOCK(struct sShortSpinlock *Lock)
{
#if 0
while( __sync_lock_test_and_set( &Lock->Lock, 1 ) == 1 );
- #endif
- #if 1
+ #elif 0
while( Lock->Lock ) ;
Lock->Lock = 1;
- #endif
- #if 0
+ #elif 1
+ int v = 1;
+ while( v )
+ {
+ __asm__ __volatile__ ("swp [%0], %1" : "=r" (v) : "r" (&lock));
+ }
+ #elif 0
// Shamelessly copied from linux (/arch/arm/include/asm/spinlock.h) until I can fix stuff
Uint tmp;
__asm__ __volatile__ (
UCC
git Repository :: git.ucc.asn.au