|
@@ -30,7 +30,12 @@ testandset (int *spinlock)
|
|
{
|
|
{
|
|
char ret;
|
|
char ret;
|
|
|
|
|
|
- __asm__ __volatile__("tas %1; sne %0"
|
|
+ __asm__ __volatile__(
|
|
|
|
+#ifdef __mcf5200__
|
|
|
|
+ "bset #7,%1; sne %0"
|
|
|
|
+#else
|
|
|
|
+ "tas %1; sne %0"
|
|
|
|
+#endif
|
|
: "=dm"(ret), "=m"(*spinlock)
|
|
: "=dm"(ret), "=m"(*spinlock)
|
|
: "m"(*spinlock)
|
|
: "m"(*spinlock)
|
|
: "cc");
|
|
: "cc");
|
|
@@ -47,6 +52,7 @@ register char * stack_pointer __asm__ ("%sp");
|
|
|
|
|
|
/* Compare-and-swap for semaphores. */
|
|
/* Compare-and-swap for semaphores. */
|
|
|
|
|
|
|
|
+#ifndef __mcf5200__
|
|
#define HAS_COMPARE_AND_SWAP
|
|
#define HAS_COMPARE_AND_SWAP
|
|
PT_EI int
|
|
PT_EI int
|
|
__compare_and_swap (long int *p, long int oldval, long int newval)
|
|
__compare_and_swap (long int *p, long int oldval, long int newval)
|
|
@@ -60,3 +66,5 @@ __compare_and_swap (long int *p, long int oldval, long int newval)
|
|
|
|
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
+#endif
|
|
|
|
+
|