|
|
|
|
|
|
|
|
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 |