|
228 | 228 |
|
229 | 229 | #ifndef __ASSEMBLER__ |
230 | 230 |
|
231 | | -#define CSRS_GEN_ACCESSORS_NAMED(csr_name, csr_id) \ |
232 | | - static inline unsigned long csrs_##csr_name##_read(void) \ |
233 | | - { \ |
234 | | - unsigned long csr_value; \ |
235 | | - __asm__ volatile("csrr %0," XSTR(csr_id) : "=r"(csr_value)::"memory"); \ |
236 | | - return csr_value; \ |
237 | | - } \ |
238 | | - static inline void csrs_##csr_name##_write(unsigned long csr_value) \ |
239 | | - { \ |
240 | | - __asm__ volatile("csrw " XSTR(csr_id) ",%0" ::"r"(csr_value) : "memory"); \ |
241 | | - } \ |
242 | | - static inline void csrs_##csr_name##_set(unsigned long csr_value) \ |
243 | | - { \ |
244 | | - __asm__ volatile("csrs " XSTR(csr_id) ",%0" ::"r"(csr_value) : "memory"); \ |
245 | | - } \ |
246 | | - static inline void csrs_##csr_name##_clear(unsigned long csr_value) \ |
247 | | - { \ |
248 | | - __asm__ volatile("csrc " XSTR(csr_id) ",%0" ::"r"(csr_value) : "memory"); \ |
| 231 | +#define CSRS_GEN_ACCESSORS_NAMED(csr_name, csr_id) \ |
| 232 | + static inline unsigned long csrs_##csr_name##_read(void) \ |
| 233 | + { \ |
| 234 | + unsigned long csr_value; \ |
| 235 | + __asm__ volatile("csrr %0," XSTR(csr_id) : "=r"(csr_value)::"memory"); \ |
| 236 | + return csr_value; \ |
| 237 | + } \ |
| 238 | + static inline void csrs_##csr_name##_write(unsigned long csr_value) \ |
| 239 | + { \ |
| 240 | + __asm__ volatile("csrw " XSTR(csr_id) ",%0" ::"r"(csr_value) : "memory"); \ |
| 241 | + } \ |
| 242 | + static inline void csrs_##csr_name##_set(unsigned long csr_value) \ |
| 243 | + { \ |
| 244 | + __asm__ volatile("csrs " XSTR(csr_id) ",%0" ::"r"(csr_value) : "memory"); \ |
| 245 | + } \ |
| 246 | + static inline void csrs_##csr_name##_clear(unsigned long csr_value) \ |
| 247 | + { \ |
| 248 | + __asm__ volatile("csrc " XSTR(csr_id) ",%0" ::"r"(csr_value) : "memory"); \ |
| 249 | + } \ |
| 250 | + static inline unsigned long csrs_##csr_name##_swap(unsigned long csr_value) \ |
| 251 | + { \ |
| 252 | + unsigned long reg_val; \ |
| 253 | + __asm__ volatile("csrrw %0," XSTR(csr_id) ",%1" : "=r"(reg_val) : "rK"(csr_value) \ |
| 254 | + : "memory"); \ |
| 255 | + return reg_val; \ |
249 | 256 | } |
250 | 257 |
|
251 | 258 | #define CSRS_GEN_ACCESSORS(csr) CSRS_GEN_ACCESSORS_NAMED(csr, csr) |
|
0 commit comments