⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plf_intr.h

📁 eCos1.31版
💻 H
📖 第 1 页 / 共 2 页
字号:
            "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 + -