| return out; | return out; | ||||
| } | } | ||||
| //get Q from PSR | |||||
| static inline uint32_t get_q_psr(void) __attribute__((always_inline, unused)); | |||||
| static inline uint32_t get_q_psr(void) | |||||
| { | |||||
| uint32_t out; | |||||
| asm volatile("mrs %0, APSR" : "=r" (out)); | |||||
| return (out & 0x8000000)>>27; | |||||
| } | |||||
| //clear Q BIT in PSR | |||||
| static inline void clr_q_psr(void) __attribute__((always_inline, unused)); | |||||
| static inline void clr_q_psr(void) | |||||
| { | |||||
| 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)); | |||||
| } | |||||
| #endif | #endif |