📄 armvic.c
字号:
/****************************************************************************** * * $RCSfile$ * $Revision: 124 $ * * This module provides the interface routines for setting up and * controlling the various interrupt modes present on the ARM processor. * Copyright 2004, R O SoftWare * No guarantees, warrantees, or promises, implied or otherwise. * May be used for hobby or commercial purposes provided copyright * notice remains intact. * *****************************************************************************/#include "type.h"#include "armVIC.h"#define IRQ_MASK 0x00000080#define FIQ_MASK 0x00000040#define INT_MASK (IRQ_MASK | FIQ_MASK)static inline unsigned __get_cpsr(void){ unsigned long retval; asm volatile (" mrs %0, cpsr" : "=r" (retval) : /* no inputs */ ); return retval;}static inline void __set_cpsr(unsigned val){ asm volatile (" msr cpsr, %0" : /* no outputs */ : "r" (val) ); }unsigned disableIRQ(void){ unsigned _cpsr; _cpsr = __get_cpsr(); __set_cpsr(_cpsr | IRQ_MASK); return _cpsr;}unsigned restoreIRQ(unsigned oldCPSR){ unsigned _cpsr; _cpsr = __get_cpsr(); __set_cpsr((_cpsr & ~IRQ_MASK) | (oldCPSR & IRQ_MASK)); return _cpsr;}unsigned enableIRQ(void){ unsigned _cpsr; _cpsr = __get_cpsr(); __set_cpsr(_cpsr & ~IRQ_MASK); return _cpsr;}unsigned disableFIQ(void){ unsigned _cpsr; _cpsr = __get_cpsr(); __set_cpsr(_cpsr | FIQ_MASK); return _cpsr;}unsigned restoreFIQ(unsigned oldCPSR){ unsigned _cpsr; _cpsr = __get_cpsr(); __set_cpsr((_cpsr & ~FIQ_MASK) | (oldCPSR & FIQ_MASK)); return _cpsr;}unsigned enableFIQ(void){ unsigned _cpsr; _cpsr = __get_cpsr(); __set_cpsr(_cpsr & ~FIQ_MASK); return _cpsr;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -