📄 irq.c
字号:
#include "../inc/irq.h"
#include "../inc/def.h"
#include "../inc/utils.h"
#include "../inc/config.h"
#include "../inc/board.h"
#include "../inc/s3c4510b.h"
static void DummyIsr(void) {puts("\n into dummy \n");}
void (*InterruptHandlers[MAXHNDLRS])(void);
void InitIntHandlerTable(void);
void SwiHandler(void)
{
puts("Swi Interrupt detected\n");
while(1);
}
void DataAbortHandler(void)
{
puts("Data Abort detected\n");
while (1);
}
void FetchAbortHandler(void)
{
puts("Prefetch Abort detected\n");
while (1);
}
void UndefHandler()
{
puts("Halt on Undefined instruction\n");
while (1);
}
void FiqHandler(void)
{
puts("Halt on FIQ!\n");
while(1);
}
/*为相应的中断向量地址分配相应
处理程序的响应入口*/
void ClrIntStatus(void)
{
outl(0x3ffffff,INTMSK);
}
/*********************************************************/
/* InitInterrupt: Initialize Interrupt */
/*********************************************************/
void InitInterrupt(void)
{
ClrIntStatus(); // Clear All interrupt
InitIntHandlerTable() ;
SetIntMode();
}
void SetIntMode(void)
{
outl(0x0,INTMOD);
outl(0x1fffff,INTPND);
//puts("\rAll interrupt pending cleared!!!\r\r");
}
void ISR_IrqHandler(void)
{
unsigned int IntOffSet;
//puts("\n into irq \n");
IntOffSet = (unsigned int)inl(INTOFFSET);
Clear_PendingBit(IntOffSet>>2) ;
(*InterruptHandlers[IntOffSet>>2])(); // Call interrupt service routine
}
/*********************************************************/
/* SysSetInterrupt: Setup Interrupt Handler Vector Table */
/*********************************************************/
void SysSetInterrupt(unsigned int vector, void (*handler)())
{
InterruptHandlers[vector] = handler;
}
/***********************************************************************/
/* InitIntHandlerTable: Initialize the interrupt handler table */
/* NOTE(S): This should be called during system initialization */
/***********************************************************************/
void InitIntHandlerTable(void)
{
int i;
for (i = 0; i < MAXHNDLRS; i++)
InterruptHandlers[i] = DummyIsr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -