📄 csl_intcaux.h
字号:
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_BitMask32 dropMask
...
CSL_intcIntrDropEnable (dropMask);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE
void CSL_intcInterruptDropEnable(
CSL_BitMask32 dropMask
)
{
((CSL_IntcRegsOvly)CSL_INTC_REGS)->INTDMASK &= ~dropMask;
}
/** ============================================================================
* @n@b CSL_intcIntrDropDisable
*
* @b Description
* This API disables interrupts for which drop detection
*
* @b Arguments
* @verbatim
dropMask Vector id mask
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_BitMask32 dropMask
...
CSL_intcIntrDropDisable (dropMask);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE
void CSL_intcInterruptDropDisable(
CSL_BitMask32 dropMask
)
{
((CSL_IntcRegsOvly)CSL_INTC_REGS)->INTDMASK |= dropMask;
}
/** ============================================================================
* @n@b CSL_intcInvokeEventHandle
*
* @b Description
* This API is for the purpose of excption handler which will need to be
* written by the user. This API invokes the event handler regisered by
* the user at the time of event Open and event handler registration
*
* @b Arguments
* @verbatim
evtId Event Id of the function to be invoked
@endverbatim
*
* <b> Return Value </b>
* CSL_SOK
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcEventId evtId;
CSL_Status status;
...
status = CSL_intcInvokeEventHandle (evtId);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE
CSL_Status CSL_intcInvokeEventHandle (
CSL_IntcEventId evtId /**< Event Id Handle */
)
{
if (_CSL_intcEventOffsetMap[evtId] != CSL_INTC_MAPPED_NONE)
_CSL_intcEventHandlerRecord[_CSL_intcEventOffsetMap[evtId]].handler (
_CSL_intcEventHandlerRecord[_CSL_intcEventOffsetMap[evtId]].arg );
return CSL_SOK;
}
/** ============================================================================
* @n@b CSL_intcQueryEventStatus
*
* @b Description
* This API is to check whether a specified event is enabled or not
*
* @b Arguments
* @verbatim
evtId Event Id of the query event
@endverbatim
*
* <b> Return Value </b>
* Bool
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcEventId evtId;
Bool return;
...
return = CSL_intcQueryEventStatus (evtId);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE
Bool CSL_intcQueryEventStatus(CSL_IntcEventId eventId)
{
int _x,_y;
_y = eventId >> 5;
_x = eventId & 0x1F;
return ((Bool)(CSL_FEXTR(((CSL_IntcRegsOvly)CSL_INTC_REGS)->EVTFLAG[_y], \
_x,_x)));
}
/* CPU Interrupt Handling routines */
/** ============================================================================
* @n@b CSL_intcInterruptEnable
*
* @b Description
* This API is enables Interrupt
*
* @b Arguments
* @verbatim
vectId Vector Id of the query event
@endverbatim
*
* <b> Return Value </b>
* Uint32 - previous state
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcVectId vectId;
Uint32 return;
...
return = CSL_intcInterruptEnable (vectId);
...
@endverbatim
* ===========================================================================
*/
Uint32 CSL_intcInterruptEnable (
CSL_IntcVectId vectId
);
/** ============================================================================
* @n@b CSL_intcInterruptDisable
*
* @b Description
* This API is disables Interrupt
*
* @b Arguments
* @verbatim
vectId Vector Id of the query event
@endverbatim
*
* <b> Return Value </b>
* Uint32 - previous state
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcVectId vectId;
Uint32 return;
...
return = CSL_intcInterruptDisable (vectId);
...
@endverbatim
* ===========================================================================
*/
Uint32 CSL_intcInterruptDisable (
CSL_IntcVectId vectId
);
/** ============================================================================
* @n@b CSL_intcInterruptRestore
*
* @b Description
* This API is restores Interrupt
*
* @b Arguments
* @verbatim
vectId Vector Id of the query event
restoreVal Value to be restored
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcVectId vectId;
Uint32 restore;
...
CSL_intcInterruptRestore (vectId, restore);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE
void CSL_intcInterruptRestore (
CSL_IntcVectId vectId,
Uint32 restoreVal
);
/** ============================================================================
* @n@b CSL_intcInterruptSet
*
* @b Description
* This API is sets interrupt(ISR)
*
* @b Arguments
* @verbatim
vectId Vector id to set
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcVectId vectId;
...
CSL_intcInterruptSet (vectId);
...
@endverbatim
* ===========================================================================
*/
void CSL_intcInterruptSet (
CSL_IntcVectId vectId
);
/** ============================================================================
* @n@b CSL_intcInterruptClear
*
* @b Description
* This API is clears specified interrupt
*
* @b Arguments
* @verbatim
vectId Vector id to cleared
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcVectId vectId;
...
CSL_intcInterruptClear (vectId);
...
@endverbatim
* ===========================================================================
*/
void CSL_intcInterruptClear (
CSL_IntcVectId vectId
);
/** ============================================================================
* @n@b CSL_intcQueryInterruptStatus
*
* @b Description
* This API is to check whether a specified CPU interrupt is pending or not
*
* @b Arguments
* @verbatim
vectId Vector id to cleared
@endverbatim
*
* <b> Return Value </b>
* Bool
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcVectId vectId;
Bool return;
...
return = CSL_intcQueryInterruptStatus (vectId);
...
@endverbatim
* ===========================================================================
*/
Bool CSL_intcQueryInterruptStatus (
CSL_IntcVectId vectId
);
/* Exception handling routines */
/** ============================================================================
* @n@b CSL_intcExcepEnable
*
* @b Description
* This API is enables the specific exception event
*
* @b Arguments
* @verbatim
eventId event id to be enabled
@endverbatim
*
* <b> Return Value </b>
* CSL_IntcEventEnableState
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
CSL_IntcEventEnableState return;
...
return = CSL_intcExcepEnable (eventId);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE
CSL_IntcEventEnableState CSL_intcExcepEnable(
CSL_IntcEventId eventId
)
{
int _x,_y,_regVal;
CSL_IntcEventEnableState _oldState;
_y = eventId >> 5;
_x = eventId & 0x1f;
_regVal = ((CSL_IntcRegsOvly)CSL_INTC_REGS)->EXPMASK[_y];
_oldState = CSL_FEXTR(_regVal,_x,_x);
CSL_FINSR(_regVal,_x,_x,0);
((CSL_IntcRegsOvly)CSL_INTC_REGS)->EXPMASK[_y] = _regVal;
return _oldState;
}
/** ============================================================================
* @n@b CSL_intcExcepDisable
*
* @b Description
* This API is disables the specific exception event
*
* @b Arguments
* @verbatim
eventId event id to be disabled
@endverbatim
*
* <b> Return Value </b>
* CSL_IntcEventEnableState
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
CSL_IntcEventEnableState return;
...
return = CSL_intcExcepDisable (eventId);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE
CSL_IntcEventEnableState CSL_intcExcepDisable(
CSL_IntcEventId eventId
)
{
int _x,_y,_regVal;
CSL_IntcEventEnableState oldState;
_y = eventId >> 5;
_x = eventId & 0x1f;
_regVal = ((CSL_IntcRegsOvly)CSL_INTC_REGS)->EXPMASK[_y];
oldState = CSL_FEXTR(_regVal,_x,_x);
CSL_FINSR(_regVal,_x,_x,1);
((CSL_IntcRegsOvly)CSL_INTC_REGS)->EXPMASK[_y] = _regVal;
return oldState;
}
/** ============================================================================
* @n@b CSL_intcExcepRestore
*
* @b Description
* This API restores the specific exception event
*
* @b Arguments
* @verbatim
eventId event id to be restored
restoreVal restore value
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
...
CSL_intcExcepRestore (eventId);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE
void CSL_intcExcepRestore(
CSL_IntcEventId eventId,
Uint32 restoreVal
)
{
int _x,_y;
_y = eventId >> 5;
_x = eventId & 0x1F;
CSL_FINSR(((CSL_IntcRegsOvly)CSL_INTC_REGS)->EXPMASK[_y],_x,_x,restoreVal);
}
/** ============================================================================
* @n@b CSL_intcExcepClear
*
* @b Description
* This API clears the specific exception event
*
* @b Arguments
* @verbatim
eventId event id to be cleared
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
...
CSL_intcExcepClear (eventId);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE
void CSL_intcExcepClear(
CSL_IntcEventId eventId
)
{
int _x,_y;
_y = eventId >> 5;
_x = eventId & 0x1F;
CSL_FINSR(((CSL_IntcRegsOvly)CSL_INTC_REGS)->EVTCLR[_y],_x,_x,1);
}
/**
@}
*/
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -