| static inline uint32_t get_q_psr(void) | static inline uint32_t get_q_psr(void) | ||||
| { | { | ||||
| uint32_t out; | uint32_t out; | ||||
| asm volatile("mrs %0, APSR" : "=r" (out)); | |||||
| asm ("mrs %0, APSR" : "=r" (out)); | |||||
| return (out & 0x8000000)>>27; | return (out & 0x8000000)>>27; | ||||
| } | } | ||||
| static inline void clr_q_psr(void) | static inline void clr_q_psr(void) | ||||
| { | { | ||||
| uint32_t t; | uint32_t t; | ||||
| asm volatile("mrs %0,APSR " : "=r" (t)); | |||||
| asm volatile("bfc %0, #27, #1" : "=r" (t)); | |||||
| asm volatile("msr APSR_nzcvq,%0" : "=r" (t)); | |||||
| asm ("mov %[t],#0\n" | |||||
| "msr APSR_nzcvq,%0\n" : [t] "=&r" (t)::"cc")); | |||||
| } | } | ||||
| #endif | #endif |