📄 lpc2204intrctl.c
字号:
/* lpc2210IntrCtl.c - interrupt controller driver */
/* Copyright 1984-2001 Wind River Systems, Inc. */
#include "copyright_wrs.h"
#include "vxWorks.h"
#include "config.h"
#include "intLib.h"
#include "lpc2210.h" /* : modified */
#include "mytypes.h"
/* driver constants */
/*
#define LPC2210_INT_ALL_ENABLED (LPC2210_INTNUMLEVELS)
#define LPC2210_INT_ALL_DISABLED (LPC2210_INTNUMLEVELS-1)
*/
#define VICVECTBASE (0x80000000)
/* forward declarations */
STATUS lpc2210IntLvlVecChk (int*, int*);
STATUS lpc2210IntLvlEnable (int);
STATUS lpc2210IntLvlDisable (int);
/* : 中断确认 */
STATUS lpc2210IntLvlAck (int level, int vector)
{
VICVectAddr = 0;
return OK;
}
void lpc2210IntDevInit (void)
{
/* install the driver routines in the architecture hooks */
sysIntLvlVecChkRtn = lpc2210IntLvlVecChk;
sysIntLvlEnableRtn = lpc2210IntLvlEnable;
sysIntLvlDisableRtn = lpc2210IntLvlDisable;
sysIntLvlVecAckRtn = lpc2210IntLvlAck; /* : added */
VICIntEnClr = 0xffffffff; /* all sources disabled */
VICIntSelect = 0x00000000; /* set all to IRQ, no FIQ */
/* set int vector */
VICDefVectAddr = 0x40000000;
}
STATUS lpc2210IntLvlVecChk
(
int* pLevel, /* ptr to receive old interrupt level */
int* pVector /* ptr to receive current interrupt vector */
)
{
DWORD dwState = VICIRQStatus;
DWORD i;
for (i = 0; i < LPC2210_INTNUMLEVELS; i++)
{
if ((1<<i) & dwState)
{
break;
}
}
if (i >= LPC2210_INTNUMLEVELS)
return ERROR;
*pVector = i;
return OK;
}
STATUS lpc2210IntLvlEnable
(
int level /* level to be enabled */
)
{
int key;
if (level < 0 || level >= LPC2210_INTNUMLEVELS)
return ERROR;
/* clear bit in mask register */
key = intLock ();
VICIntEnable = VICIntEnable | (1<<level);
intUnlock (key);
return OK;
}
STATUS lpc2210IntLvlDisable
(
int level /* level to be disabled */
)
{
int key;
if (level < 0 ||
level >= LPC2210_INTNUMLEVELS)
return ERROR;
/* set bit in mask register */
key = intLock ();
VICIntEnClr = 1<<level;
intUnlock (key);
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -