diff options
Diffstat (limited to 'firmware/export')
-rw-r--r-- | firmware/export/thread.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/firmware/export/thread.h b/firmware/export/thread.h index 81c7c2374f..2915d23207 100644 --- a/firmware/export/thread.h +++ b/firmware/export/thread.h | |||
@@ -169,6 +169,20 @@ struct core_entry { | |||
169 | ); \ | 169 | ); \ |
170 | old; \ | 170 | old; \ |
171 | }) | 171 | }) |
172 | #elif CONFIG_CPU == SH7034 | ||
173 | #define test_and_set(x_, v_) \ | ||
174 | ({ \ | ||
175 | uint32_t old; \ | ||
176 | asm volatile ( \ | ||
177 | "tas.b @%[x] \r\n" \ | ||
178 | "mov #-1, %[old] \r\n" \ | ||
179 | "negc %[old], %[old] \r\n" \ | ||
180 | : [old]"=r"(old) \ | ||
181 | : [v]"M"((uint32_t)v_), /* Value of v_ must be 1 */ \ | ||
182 | [x]"r"((uint8_t *)x_) \ | ||
183 | ); \ | ||
184 | old; \ | ||
185 | }) | ||
172 | #else | 186 | #else |
173 | /* default for no asm version */ | 187 | /* default for no asm version */ |
174 | #define test_and_set(x_, v_) \ | 188 | #define test_and_set(x_, v_) \ |