irqflags.h
来自「linux 内核源代码」· C头文件 代码 · 共 69 行
H
69 行
/* * Copyright (C) 2004-2006 Atmel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#ifndef __ASM_AVR32_IRQFLAGS_H#define __ASM_AVR32_IRQFLAGS_H#include <asm/sysreg.h>static inline unsigned long __raw_local_save_flags(void){ return sysreg_read(SR);}#define raw_local_save_flags(x) \ do { (x) = __raw_local_save_flags(); } while (0)/* * This will restore ALL status register flags, not only the interrupt * mask flag. * * The empty asm statement informs the compiler of this fact while * also serving as a barrier. */static inline void raw_local_irq_restore(unsigned long flags){ sysreg_write(SR, flags); asm volatile("" : : : "memory", "cc");}static inline void raw_local_irq_disable(void){ asm volatile("ssrf %0" : : "n"(SYSREG_GM_OFFSET) : "memory");}static inline void raw_local_irq_enable(void){ asm volatile("csrf %0" : : "n"(SYSREG_GM_OFFSET) : "memory");}static inline int raw_irqs_disabled_flags(unsigned long flags){ return (flags & SYSREG_BIT(GM)) != 0;}static inline int raw_irqs_disabled(void){ unsigned long flags = __raw_local_save_flags(); return raw_irqs_disabled_flags(flags);}static inline unsigned long __raw_local_irq_save(void){ unsigned long flags = __raw_local_save_flags(); raw_local_irq_disable(); return flags;}#define raw_local_irq_save(flags) \ do { (flags) = __raw_local_irq_save(); } while (0)#endif /* __ASM_AVR32_IRQFLAGS_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?