📄 plf_intr.h
字号:
"mfc0 $3,$12\n" \ "la $2,0x00000400\n" \ "sllv $2,$2,%0\n" \ "nor $2,$2,$0\n" \ "and $3,$3,$2\n" \ "mtc0 $3,$12\n" \ "nop; nop; nop\n" \ : \ : "r"(_vector_) \ : "$2", "$3" \ ); \ } \ else \ { \ CYG_WORD32 _mask_; \ CYG_BYTE _shift_; \ HAL_IO_REGISTER _maskreg_ = CYGHWR_HAL_MIPS_VRC4373_INTC_MASK0 + \ cyg_hal_interrupt_level[_vector_] * \ CYGHWR_HAL_MIPS_VRC4373_INTC_MASK_OFF; \ HAL_READ_UINT32( _maskreg_, _mask_ ); \ _shift_ = _vector_-CYGNUM_HAL_INTERRUPT_REALTIME_A; \ _mask_ &= ~(1<<_shift_); \ HAL_WRITE_UINT32( _maskreg_, _mask_ ); \ } \CYG_MACRO_END#define HAL_INTERRUPT_UNMASK( _vector_ ) \CYG_MACRO_START \ if( _vector_ <= CYGNUM_HAL_INTERRUPT_COMPARE ) \ { \ asm volatile ( \ "mfc0 $3,$12\n" \ "la $2,0x00000400\n" \ "sllv $2,$2,%0\n" \ "or $3,$3,$2\n" \ "mtc0 $3,$12\n" \ "nop; nop; nop\n" \ : \ : "r"(_vector_) \ : "$2", "$3" \ ); \ } \ else \ { \ CYG_WORD32 _mask_; \ CYG_BYTE _shift_; \ HAL_IO_REGISTER _maskreg_ = CYGHWR_HAL_MIPS_VRC4373_INTC_MASK0 + \ cyg_hal_interrupt_level[_vector_] * \ CYGHWR_HAL_MIPS_VRC4373_INTC_MASK_OFF; \ HAL_READ_UINT32( _maskreg_, _mask_ ); \ _shift_ = _vector_-CYGNUM_HAL_INTERRUPT_REALTIME_A; \ _mask_ |= 1<<_shift_; \ HAL_WRITE_UINT32( _maskreg_, _mask_ ); \ } \CYG_MACRO_END#define HAL_INTERRUPT_ACKNOWLEDGE( _vector_ ) \CYG_MACRO_START \ CYG_WORD32 _srvector_ = _vector_; \ if( _vector_ > CYGNUM_HAL_INTERRUPT_COMPARE ) \ { \ CYG_WORD32 _stat_; \ CYG_BYTE _shift_; \ HAL_IO_REGISTER _statreg_ = CYGHWR_HAL_MIPS_VRC4373_INTC_STAT0 +\ cyg_hal_interrupt_level[_vector_] * \ CYGHWR_HAL_MIPS_VRC4373_INTC_MASK_OFF; \ HAL_READ_UINT32( _statreg_, _stat_ ); \ _shift_ = _vector_-CYGNUM_HAL_INTERRUPT_REALTIME_A; \ _stat_ &= ~(1<<_shift_); \ HAL_WRITE_UINT32( _statreg_, _stat_ ); \ _srvector_ = cyg_hal_interrupt_level[_vector_] + \ CYGNUM_HAL_INTERRUPT_IPL0; \ } \ asm volatile ( \ "mfc0 $3,$13\n" \ "la $2,0x00000400\n" \ "sllv $2,$2,%0\n" \ "nor $2,$2,$0\n" \ "and $3,$3,$2\n" \ "mtc0 $3,$13\n" \ "nop; nop; nop\n" \ : \ : "r"(_srvector_) \ : "$2", "$3" \ ); \CYG_MACRO_END#define HAL_INTERRUPT_CONFIGURE( _vector_, _level_, _up_ ) \CYG_MACRO_START \ if( (_vector_ >= CYGNUM_HAL_INTERRUPT_REALTIME_A) && \ (_vector_ <= CYGNUM_HAL_INTERRUPT_INT_13)) \ { \ CYG_WORD32 mask = 1<<(_vector_-CYGNUM_HAL_INTERRUPT_REALTIME_A); \ CYG_WORD32 pol; \ CYG_WORD32 trig; \ HAL_READ_UINT32( CYGHWR_HAL_MIPS_VRC4373_INTC_POL, pol ); \ HAL_READ_UINT32( CYGHWR_HAL_MIPS_VRC4373_INTC_TRIG, trig ); \ if( _level_ ) \ { \ pol &= ~mask; \ if( _up_ ) trig |= mask; \ else trig &= ~mask; \ } \ else \ { \ pol |= mask; \ if( !(_up_) ) trig |= mask; \ else trig &= ~mask; \ } \ HAL_WRITE_UINT32( CYGHWR_HAL_MIPS_VRC4373_INTC_POL, pol ); \ HAL_WRITE_UINT32( CYGHWR_HAL_MIPS_VRC4373_INTC_TRIG, trig ); \ } \CYG_MACRO_END#define HAL_INTERRUPT_SET_LEVEL( _vector_, _level_ ) \CYG_MACRO_START \ if( _vector_ > CYGNUM_HAL_INTERRUPT_COMPARE ) \ { \ cyg_uint32 _ilevel_ = _level_; \ while( _ilevel_ > 2 ) _ilevel_ -= 2; \ cyg_hal_interrupt_level[_vector_] = _ilevel_; \ } \CYG_MACRO_END#define CYGHWR_HAL_INTERRUPT_CONTROLLER_ACCESS_DEFINED//--------------------------------------------------------------------------// Control-C support.#if defined(CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT)# define CYGHWR_HAL_GDB_PORT_VECTOR CYGNUM_HAL_INTERRUPT_DUARTexternC cyg_uint32 hal_ctrlc_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data);#define HAL_CTRLC_ISR hal_ctrlc_isr#endif//--------------------------------------------------------------------------#endif // ifndef CYGONCE_HAL_PLF_INTR_H// End of plf_intr.h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -