/** @file sys_vim.h | |
* @brief Vectored Interrupt Module Header File | |
* @date 05.November.2010 | |
* @version 1.01.000 | |
* | |
* This file contains: | |
* - VIM Type Definitions | |
* - VIM General Definitions | |
* . | |
* which are relevant for the Vectored Interrupt Controller. | |
*/ | |
/* (c) Texas Instruments 2010, All rights reserved. */ | |
#ifndef __SYS_VIM_H__ | |
#define __SYS_VIM_H__ | |
/* VIM Type Definitions */ | |
/** @typedef t_isrFuncPTR | |
* @brief ISR Function Pointer Type Definition | |
* | |
* This type is used to access the ISR handler. | |
*/ | |
typedef void (*t_isrFuncPTR)(); | |
/* VIM General Configuration */ | |
#define VIM_CHANNELS 96U | |
/* Interrupt Handlers */ | |
extern void phantomInterrupt(void); | |
extern void esmHighLevelInterrupt(void); | |
extern void vPortPreemptiveTick(void); | |
extern void vPortNonPreemptiveTick(void); | |
extern void vPortYeildWithinAPI(void); | |
/* Vim Register Frame Definition */ | |
/** @struct vimBase | |
* @brief Vim Register Frame Definition | |
* | |
* This type is used to access the Vim Registers. | |
*/ | |
/** @typedef vimBASE_t | |
* @brief VIM Register Frame Type Definition | |
* | |
* This type is used to access the VIM Registers. | |
*/ | |
typedef volatile struct vimBase | |
{ | |
unsigned : 24U; /* 0x0000 */ | |
unsigned IRQIVEC : 8U; /* 0x0000 */ | |
unsigned : 24U; /* 0x0004 */ | |
unsigned FIQIVEC : 8U; /* 0x0004 */ | |
unsigned : 32U; /* 0x0008 */ | |
unsigned : 32U; /* 0x000C */ | |
unsigned FIRQPR0; /* 0x0010 */ | |
unsigned FIRQPR1; /* 0x0014 */ | |
unsigned FIRQPR2; /* 0x0018 */ | |
unsigned FIRQPR3; /* 0x001C */ | |
unsigned INTREQ0; /* 0x0020 */ | |
unsigned INTREQ1; /* 0x0024 */ | |
unsigned INTREQ2; /* 0x0028 */ | |
unsigned INTREQ3; /* 0x002C */ | |
unsigned REQMASKSET0; /* 0x0030 */ | |
unsigned REQMASKSET1; /* 0x0034 */ | |
unsigned REQMASKSET2; /* 0x0038 */ | |
unsigned REQMASKSET3; /* 0x003C */ | |
unsigned REQMASKCLR0; /* 0x0040 */ | |
unsigned REQMASKCLR1; /* 0x0044 */ | |
unsigned REQMASKCLR2; /* 0x0048 */ | |
unsigned REQMASKCLR3; /* 0x004C */ | |
unsigned WAKEMASKSET0; /* 0x0050 */ | |
unsigned WAKEMASKSET1; /* 0x0054 */ | |
unsigned WAKEMASKSET2; /* 0x0058 */ | |
unsigned WAKEMASKSET3; /* 0x005C */ | |
unsigned WAKEMASKCLR0; /* 0x0060 */ | |
unsigned WAKEMASKCLR1; /* 0x0064 */ | |
unsigned WAKEMASKCLR2; /* 0x0068 */ | |
unsigned WAKEMASKCLR3; /* 0x006C */ | |
unsigned IRQVECREG; /* 0x0070 */ | |
unsigned FIQVECREQ; /* 0x0074 */ | |
unsigned : 9U; /* 0x0078 */ | |
unsigned CAPEVTSRC1 : 7U; /* 0x0078 */ | |
unsigned : 9U; /* 0x0078 */ | |
unsigned CAPEVTSRC0 : 7U; /* 0x0078 */ | |
unsigned : 32U; /* 0x007C */ | |
unsigned char CHANMAP[64U]; /* 0x0080-0x017C */ | |
} vimBASE_t; | |
#define vimREG ((vimBASE_t *)0xFFFFFE00U) | |
/** @typedef vimRAM_t | |
* @brief Vim Ram Type Definition | |
* | |
* This type is used to access the Vim Ram. | |
*/ | |
typedef volatile struct vimRam | |
{ | |
t_isrFuncPTR ISR[VIM_CHANNELS]; | |
} vimRAM_t; | |
#define vimRAM ((vimRAM_t *)0xFFF82000U) | |
#endif |