📄 chandle.c
字号:
/******************************************************************************
C M O D U L E F I L E
(c) Copyright Motorola Semiconductors Hong Kong Limited 2000-2003
ALL RIGHTS RESERVED
*******************************************************************************
Project Name : Argon+ System Test Program
Project No. :
Title :
File Name : chandle.c
Last Modified : 04/27/2003
(MM/DD/YYYY)
Description : Interrupt Handlers
Comments :
History (MM/DD/YYYY):
04/27/2003 - Initial Proposal
******************************************************************************/
/*
* Copyright (C) ARM Limited, 1998. All rights reserved.
*/
#include <stdio.h>
#include "common.h"
#include "functions.h"
/******************************* Global Data *********************************/
#define NUM_INT_SOURCES 64
/* ISR flags */
#define IRQ_INT_BASE AVIC_IVR //0x1FFFFDDC
#define FIQ_INT_BASE AVIC_IFIR
typedef void (*funct_t)(void);
funct_t int_jumper;
void C_SWI_Handler( int32_t swi_num, int32_t *regs )
{
switch( swi_num )
{
case 0:
break;
default:
break;
}
}
void C_Undefined_Handler(void)
{
//read in ITC status reg
//test bit for dispatch
//call user ISR
return;
}
void C_Prefetch_Handler(void)
{
//read in ITC status reg
//test bit for dispatch
//call user ISR
return;
}
void C_Abort_Handler(void)
{
//read in ITC status reg
//test bit for dispatch
//call user ISR
return;
}
/******************************************************************************
* IRQ_Handler *
* This function handles IRQ interrupts. *
******************************************************************************/
void __irq C_IRQ_Handler(void)
{
int16_t vectNum;
uint32_t intjump, wheretojump;
vectNum = (*(p_uint32_t)(AVIC_NIVECSR)) >> 16;
intjump=IRQ_INT_BASE-(4*vectNum);
wheretojump=*(uint32_t *)intjump;
//__asm{
// LDR r0, =intjump
// LDR PC, [r0]
//}
int_jumper=(funct_t)wheretojump;// determine highest pending normal interrupt
//int_jumper=(funct_t)(*(uint32_t *)(IRQ_INT_BASE-(4*vectNum)));
int_jumper(); // find the pointer to correct ISR in the look up table
//printf("end of cirqhandler.\n");
}
/******************************************************************************
* FIQ_Handler *
* This function handles IRQ interrupts. *
******************************************************************************/
void __irq C_FIQ_Handler(void)
{
// find the pointer to correct ISR in the look up table
return;
}
/*******************************************************************************
*
* Interrupt Handlers (64 fast int sources and 64 normal int sources)
*
*******************************************************************************/
/***********************/
/* Fast Interrupt ISRs */
/***********************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -