初级会员

- 积分
- 168
- 金钱
- 168
- 注册时间
- 2018-8-14
- 在线时间
- 17 小时
|

楼主 |
发表于 2021-2-21 12:22:06
|
显示全部楼层
- static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
- __disable_irq(void) {
- unsigned int cpsr;
- #if __ARM_ARCH >= 6
- #if defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M'
- __asm__ __volatile__("mrs %[cpsr], primask\n"
- "cpsid i\n"
- : [cpsr] "=r"(cpsr));
- return cpsr & 0x1;
- #else /* !defined(__ARM_ARCH_PROFILE) || __ARM_ARCH_PROFILE != 'M' */
- __asm__ __volatile__("mrs %[cpsr], cpsr\n"
- "cpsid i\n"
- : [cpsr] "=r"(cpsr));
- return cpsr & 0x80;
- #endif
- #else /* __ARM_ARCH < 6 */
- unsigned int tmp;
- __asm__ __volatile__(
- "mrs %[cpsr], CPSR\n"
- "bic %[tmp], %[cpsr], #0x80\n"
- "msr CPSR_c, %[tmp]\n"
- : [tmp]"=r"(tmp), [cpsr]"=r"(cpsr));
- return cpsr & 0x80;
- #endif
- }
复制代码
|
|