diff options
author | Robin Getz <rgetz@blackfin.uclinux.org> | 2009-01-07 10:14:39 -0500 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2009-01-07 10:14:39 -0500 |
commit | 26fe19f76027b05c39faa9b728912631e91ec182 (patch) | |
tree | b66ea7b4f8d56dac40aa8af919d64f71c8c0a18c /arch/blackfin/include | |
parent | 2377feb4ce1cd42b7c1d266f466d69597d9dac7f (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/blackfin/include')
-rw-r--r-- | arch/blackfin/include/asm/bfrom.h | 5 | ||||
-rw-r--r-- | arch/blackfin/include/asm/system.h | 8 | ||||
-rw-r--r-- | arch/blackfin/include/asm/thread_info.h | 2 |
3 files changed, 10 insertions, 5 deletions
diff --git a/arch/blackfin/include/asm/bfrom.h b/arch/blackfin/include/asm/bfrom.h index cfe8024c3b2f..9e4be5e5e767 100644 --- a/arch/blackfin/include/asm/bfrom.h +++ b/arch/blackfin/include/asm/bfrom.h | |||
@@ -43,6 +43,11 @@ __attribute__((__noreturn__)) | |||
43 | static inline void bfrom_SoftReset(void *new_stack) | 43 | static 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 dea92037dff5..aa7d87b62b28 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 1d380def2410..7eaf2e2606d9 100644 --- a/arch/blackfin/include/asm/thread_info.h +++ b/arch/blackfin/include/asm/thread_info.h | |||
@@ -91,7 +91,7 @@ __attribute_const__ | |||
91 | static inline struct thread_info *current_thread_info(void) | 91 | static 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 | } |