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

📄 chandle.c

📁 i.MX31 NOR_flash(SPANSION_S71WS256ND0) bootloader src
💻 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 + -