Blackfin arch: Update some inline assembly, tweak some register constraints
authorRobin Getz <rgetz@blackfin.uclinux.org>
Wed, 7 Jan 2009 15:14:39 +0000 (23:14 +0800)
committerBryan Wu <cooloney@kernel.org>
Wed, 7 Jan 2009 15:14:39 +0000 (23:14 +0800)
Signed-off-by: Robin Getz <rgetz@blackfin.uclinux.org>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
arch/blackfin/include/asm/bfrom.h
arch/blackfin/include/asm/system.h
arch/blackfin/include/asm/thread_info.h

index cfe8024..9e4be5e 100644 (file)
@@ -43,6 +43,11 @@ __attribute__((__noreturn__))
 static inline void bfrom_SoftReset(void *new_stack)
 {
        while (1)
+               /*
+                * We don't declare the SP as clobbered on purpose, since
+                * it confuses the heck out of the compiler, and this function
+                * never returns
+                */
                __asm__ __volatile__(
                        "sp = %[stack];"
                        "jump (%[bfrom_syscontrol]);"
index dea9203..aa7d87b 100644 (file)
 /*
  * Force strict CPU ordering.
  */
-#define nop()  asm volatile ("nop;\n\t"::)
-#define mb()   asm volatile (""   : : :"memory")
-#define rmb()  asm volatile (""   : : :"memory")
-#define wmb()  asm volatile (""   : : :"memory")
+#define nop()  __asm__ __volatile__ ("nop;\n\t" : : )
+#define mb()   __asm__ __volatile__ (""   : : : "memory")
+#define rmb()  __asm__ __volatile__ (""   : : : "memory")
+#define wmb()  __asm__ __volatile__ (""   : : : "memory")
 #define set_mb(var, value) do { (void) xchg(&var, value); } while (0)
 #define read_barrier_depends()                 do { } while(0)
 
index 1d380de..7eaf2e2 100644 (file)
@@ -91,7 +91,7 @@ __attribute_const__
 static inline struct thread_info *current_thread_info(void)
 {
        struct thread_info *ti;
-      __asm__("%0 = sp;": "=&d"(ti):
+      __asm__("%0 = sp;" : "=da"(ti) :
        );
        return (struct thread_info *)((long)ti & ~((long)THREAD_SIZE-1));
 }