aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRobin Getz <rgetz@blackfin.uclinux.org>2009-01-07 10:14:39 -0500
committerBryan Wu <cooloney@kernel.org>2009-01-07 10:14:39 -0500
commit26fe19f76027b05c39faa9b728912631e91ec182 (patch)
treeb66ea7b4f8d56dac40aa8af919d64f71c8c0a18c /arch
parent2377feb4ce1cd42b7c1d266f466d69597d9dac7f (diff)
Blackfin arch: Update some inline assembly, tweak some register constraints
Signed-off-by: Robin Getz <rgetz@blackfin.uclinux.org> Signed-off-by: Bryan Wu <cooloney@kernel.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/blackfin/include/asm/bfrom.h5
-rw-r--r--arch/blackfin/include/asm/system.h8
-rw-r--r--arch/blackfin/include/asm/thread_info.h2
3 files changed, 10 insertions, 5 deletions
diff --git a/arch/blackfin/include/asm/bfrom.h b/arch/blackfin/include/asm/bfrom.h
index cfe8024c3b2..9e4be5e5e76 100644
--- a/arch/blackfin/include/asm/bfrom.h
+++ b/arch/blackfin/include/asm/bfrom.h
@@ -43,6 +43,11 @@ __attribute__((__noreturn__))
43static inline void bfrom_SoftReset(void *new_stack) 43static inline void bfrom_SoftReset(void *new_stack)
44{ 44{
45 while (1) 45 while (1)
46 /*
47 * We don't declare the SP as clobbered on purpose, since
48 * it confuses the heck out of the compiler, and this function
49 * never returns
50 */
46 __asm__ __volatile__( 51 __asm__ __volatile__(
47 "sp = %[stack];" 52 "sp = %[stack];"
48 "jump (%[bfrom_syscontrol]);" 53 "jump (%[bfrom_syscontrol]);"
diff --git a/arch/blackfin/include/asm/system.h b/arch/blackfin/include/asm/system.h
index dea92037dff..aa7d87b62b2 100644
--- a/arch/blackfin/include/asm/system.h
+++ b/arch/blackfin/include/asm/system.h
@@ -44,10 +44,10 @@
44/* 44/*
45 * Force strict CPU ordering. 45 * Force strict CPU ordering.
46 */ 46 */
47#define nop() asm volatile ("nop;\n\t"::) 47#define nop() __asm__ __volatile__ ("nop;\n\t" : : )
48#define mb() asm volatile ("" : : :"memory") 48#define mb() __asm__ __volatile__ ("" : : : "memory")
49#define rmb() asm volatile ("" : : :"memory") 49#define rmb() __asm__ __volatile__ ("" : : : "memory")
50#define wmb() asm volatile ("" : : :"memory") 50#define wmb() __asm__ __volatile__ ("" : : : "memory")
51#define set_mb(var, value) do { (void) xchg(&var, value); } while (0) 51#define set_mb(var, value) do { (void) xchg(&var, value); } while (0)
52#define read_barrier_depends() do { } while(0) 52#define read_barrier_depends() do { } while(0)
53 53
diff --git a/arch/blackfin/include/asm/thread_info.h b/arch/blackfin/include/asm/thread_info.h
index 1d380def241..7eaf2e2606d 100644
--- a/arch/blackfin/include/asm/thread_info.h
+++ b/arch/blackfin/include/asm/thread_info.h
@@ -91,7 +91,7 @@ __attribute_const__
91static inline struct thread_info *current_thread_info(void) 91static inline struct thread_info *current_thread_info(void)
92{ 92{
93 struct thread_info *ti; 93 struct thread_info *ti;
94 __asm__("%0 = sp;": "=&d"(ti): 94 __asm__("%0 = sp;" : "=da"(ti) :
95 ); 95 );
96 return (struct thread_info *)((long)ti & ~((long)THREAD_SIZE-1)); 96 return (struct thread_info *)((long)ti & ~((long)THREAD_SIZE-1));
97} 97}