📄 vector_table.c
字号:
/*******************************************************************************
File Name: vector_table.c Current Release Level: 0.1
Compiler: Metrowerks Compiler for Motorola M-CORE (Cmcore.exe)
Target Device: MMC2107
Documentation: MMC2107/D Rev 2 MMC2107 Technical Data
MCORERM/AD M*CORE Meference Manual
Description: Define an array of 128 constant pointers to interrupt
service routines. (A full set of default ISR's are
provided in file isr_stubs.c)
The vector base register must contain the address of this
array. Usually this will be at the bottom of the memory
map. If your code relocates this array to RAM, it must
reside on a 1024-byte boundary, because the VBR's lowest
ten bits are wired to zero. The reset vector cannot be
relocated, because the VBR is cleared on reset.
------------------------------------------------------------------------------
Author: Brian LaPonsey
Motorola, East Kilbride, Scotland
First Release: 31May2001
Last Edit Date: 31May2001
Update History:
Rev Date Author Description of Change
--- ----------- ------------ -----------------------------------------------
0.1 31-May-2001 B LaPonsey Initial release
0.2 06-Jun-2001 E Styger Modified macro to fix pointer arithmetic
*******************************************************************************/
/* Includes, Exports and External References **********************************/
#include "isr_stubs.h" /* prototypes for ISR stub routines */
#include "inttypes.h" /* ANSI C9x integer typedefs */
#include "includes.h"
/* Macro Definitions **********************************************************/
/* Macro "set_low_bit" takes an even address and forces it to be odd by
setting the least significant bit in the address. This will generate a
Non-Standard Conversion warning, because we are casting a function pointer
to an object pointer, and then back again. This is why that message (C1805)
is disabled.
ISR addresses are always even numbers because the MCore has a fixed 16-bit
instruction set. If the address is forced to be odd by setting the
low-order bit, then that ISR will use the alternate registers when its
exception occurs, because the low-order bit is copied to the PSR(AF). */
#define set_low_bit(addr) ((void(*const)(void)) ((uint8_t *) (addr) + 1))
extern asm void _start(void);
/* Compiler directives ********************************************************/
/* Vector Table Initialization ************************************************/
void (*const __vector_table[128])(void) = {
&_start, /* 0 0x000 Reset vector */
&misaligned_access, /* 1 0x004 Misaligned Access */
&access_error, /* 2 0x008 Access Error */
÷_by_zero, /* 3 0x00C Divide by Zero */
&illegal_instruction, /* 4 0x010 Illegal Instruction */
&privilege_violation, /* 5 0x014 Privilege Violation */
&trace_exception, /* 6 0x018 Trace Exception */
&breakpoint_exception, /* 7 0x01C Breakpoint Exception */
&unrecoverable_error, /* 8 0x020 Unrecoverable Error */
&soft_reset, /* 9 0x024 Soft Reset */
&normal_autovector_interrupt, /* 10 0x028 Normal Autovector Interrupt */
set_low_bit(&fast_autovector_interrupt), /* 11 0x02C Fast Interrupt Autovector */
&hardware_accelerator, /* 12 0x030 Hardware Accelerator */
NULL, /* 13 0x034 Unused exception space */
NULL, /* 14 0x038 Unused exception space */
NULL, /* 15 0x03C Unused exception space */
&OSCtxSw, /* 16 0x040 Trap #0 Context Switch function */
&trap1, /* 17 0x044 Trap #1 */
&trap2, /* 18 0x048 Trap #2 */
&trap3, /* 19 0x04C Trap #3 */
NULL, /* 20 0x050 Unused exception space */
NULL, /* 21 0x054 Unused exception space */
NULL, /* 22 0x058 Unused exception space */
NULL, /* 23 0x05C Unused exception space */
NULL, /* 24 0x060 Unused exception space */
NULL, /* 25 0x064 Unused exception space */
NULL, /* 26 0x068 Unused exception space */
NULL, /* 27 0x06C Unused exception space */
NULL, /* 28 0x070 Unused exception space */
NULL, /* 29 0x074 Unused exception space */
NULL, /* 30 0x078 Unused exception space */
NULL, /* 31 0x07C Unused exception space */
&vectored_normal_p0, /* 32 0x080 Reserved for vectored controller */
&vectored_normal_p1, /* 33 0x084 Reserved for vectored controller */
&vectored_normal_p2, /* 34 0x088 Reserved for vectored controller */
&vectored_normal_p3, /* 35 0x08C Reserved for vectored controller */
&vectored_normal_p4, /* 36 0x090 Reserved for vectored controller */
&vectored_normal_p5, /* 37 0x094 Reserved for vectored controller */
&vectored_normal_p6, /* 38 0x098 Reserved for vectored controller */
&vectored_normal_p7, /* 39 0x09C Reserved for vectored controller */
&vectored_normal_p8, /* 40 0x0A0 Reserved for vectored controller */
&vectored_normal_p9, /* 41 0x0A4 Reserved for vectored controller */
&vectored_normal_p10, /* 42 0x0A8 Reserved for vectored controller */
&vectored_normal_p11, /* 43 0x0AC Reserved for vectored controller */
&vectored_normal_p12, /* 44 0x0B0 Reserved for vectored controller */
&vectored_normal_p13, /* 45 0x0B4 Reserved for vectored controller */
&vectored_normal_p14, /* 46 0x0B8 Reserved for vectored controller */
&vectored_normal_p15, /* 47 0x0BC Reserved for vectored controller */
&vectored_normal_p16, /* 48 0x0C0 Reserved for vectored controller */
&vectored_normal_p17, /* 49 0x0C4 Reserved for vectored controller */
&vectored_normal_p18, /* 50 0x0C8 Reserved for vectored controller */
&vectored_normal_p19, /* 51 0x0CC Reserved for vectored controller */
&vectored_normal_p20, /* 52 0x0D0 Reserved for vectored controller */
&vectored_normal_p21, /* 53 0x0D4 Reserved for vectored controller */
&vectored_normal_p22, /* 54 0x0D8 Reserved for vectored controller */
&vectored_normal_p23, /* 55 0x0DC Reserved for vectored controller */
&vectored_normal_p24, /* 56 0x0E0 Reserved for vectored controller */
&vectored_normal_p25, /* 57 0x0E4 Reserved for vectored controller */
&vectored_normal_p26, /* 58 0x0E8 Reserved for vectored controller */
&vectored_normal_p27, /* 59 0x0EC Reserved for vectored controller */
&vectored_normal_p28, /* 60 0x0F0 Reserved for vectored controller */
&vectored_normal_p29, /* 61 0x0F4 Reserved for vectored controller */
&vectored_normal_p30, /* 62 0x0F8 Reserved for vectored controller */
&vectored_normal_p31, /* 63 0x0FC Reserved for vectored controller */
&vectored_fast_p0, /* 64 0x100 Reserved for vectored controller */
&vectored_fast_p1, /* 65 0x104 Reserved for vectored controller */
&vectored_fast_p2, /* 66 0x108 Reserved for vectored controller */
&vectored_fast_p3, /* 67 0x10C Reserved for vectored controller */
&vectored_fast_p4, /* 68 0x110 Reserved for vectored controller */
&vectored_fast_p5, /* 69 0x114 Reserved for vectored controller */
&vectored_fast_p6, /* 70 0x118 Reserved for vectored controller */
&vectored_fast_p7, /* 71 0x11C Reserved for vectored controller */
&vectored_fast_p8, /* 72 0x120 Reserved for vectored controller */
&vectored_fast_p9, /* 73 0x124 Reserved for vectored controller */
&vectored_fast_p10, /* 74 0x128 Reserved for vectored controller */
&vectored_fast_p11, /* 75 0x12C Reserved for vectored controller */
&vectored_fast_p12, /* 76 0x130 Reserved for vectored controller */
&vectored_fast_p13, /* 77 0x134 Reserved for vectored controller */
&vectored_fast_p14, /* 78 0x138 Reserved for vectored controller */
&vectored_fast_p15, /* 79 0x13C Reserved for vectored controller */
&vectored_fast_p16, /* 80 0x140 Reserved for vectored controller */
&vectored_fast_p17, /* 81 0x144 Reserved for vectored controller */
&vectored_fast_p18, /* 82 0x148 Reserved for vectored controller */
&vectored_fast_p19, /* 83 0x14C Reserved for vectored controller */
&vectored_fast_p20, /* 84 0x150 Reserved for vectored controller */
&vectored_fast_p21, /* 85 0x154 Reserved for vectored controller */
&vectored_fast_p22, /* 86 0x158 Reserved for vectored controller */
&vectored_fast_p23, /* 87 0x15C Reserved for vectored controller */
&vectored_fast_p24, /* 88 0x160 Reserved for vectored controller */
&vectored_fast_p25, /* 89 0x164 Reserved for vectored controller */
&vectored_fast_p26, /* 90 0x168 Reserved for vectored controller */
&vectored_fast_p27, /* 91 0x16C Reserved for vectored controller */
&vectored_fast_p28, /* 92 0x170 Reserved for vectored controller */
&vectored_fast_p29, /* 93 0x174 Reserved for vectored controller */
&OSTickISR, /* 94 0x178 OS Tick function */
&vectored_fast_p31, /* 95 0x17C Reserved for vectored controller */
NULL, /* 96 0x180 Unused exception space */
NULL, /* 97 0x184 Unused exception space */
NULL, /* 98 0x188 Unused exception space */
NULL, /* 99 0x18C Unused exception space */
NULL, /* 100 0x190 Unused exception space */
NULL, /* 101 0x194 Unused exception space */
NULL, /* 102 0x198 Unused exception space */
NULL, /* 103 0x19C Unused exception space */
NULL, /* 104 0x1A0 Unused exception space */
NULL, /* 105 0x1A4 Unused exception space */
NULL, /* 106 0x1A8 Unused exception space */
NULL, /* 107 0x1AC Unused exception space */
NULL, /* 108 0x1B0 Unused exception space */
NULL, /* 109 0x1B4 Unused exception space */
NULL, /* 100 0x1B8 Unused exception space */
NULL, /* 111 0x1BC Unused exception space */
NULL, /* 112 0x1C0 Unused exception space */
NULL, /* 113 0x1C4 Unused exception space */
NULL, /* 114 0x1C8 Unused exception space */
NULL, /* 115 0x1CC Unused exception space */
NULL, /* 116 0x1D0 Unused exception space */
NULL, /* 117 0x1D4 Unused exception space */
NULL, /* 118 0x1D8 Unused exception space */
NULL, /* 119 0x1DC Unused exception space */
NULL, /* 110 0x1E0 Unused exception space */
NULL, /* 121 0x1E4 Unused exception space */
NULL, /* 122 0x1E8 Unused exception space */
NULL, /* 123 0x1EC Unused exception space */
NULL, /* 124 0x1F0 Unused exception space */
NULL, /* 125 0x1F4 Unused exception space */
NULL, /* 126 0x1F8 Unused exception space */
NULL /* 127 0x1FC Unused exception space */
};
/*******************************************************************************
* Motorola reserves the right to make changes without further notice to any *
* product herein to improve reliability, function, or design. Motorola does *
* not assume any liability arising out of the application or use of any *
* product, circuit, or software described herein; neither does it convey any *
* license under its patent rights nor the rights of others. Motorola products *
* are not designed, intended, or authorized for use as components in systems *
* intended for surgical implant into the body, or other applications intended *
* to support life, or for any other application in which the failure of the *
* Motorola product could create a situation where personal injury or death may *
* occur. Should Buyer purchase or use Motorola products for any such intended *
* or unauthorized application, Buyer shall indemnify and hold Motorola and its *
* officers, employees, subsidiaries, affiliates, and distributors harmless *
* against all claims, costs, damages, and expenses, and reasonable attorney *
* fees arising out of, directly or indirectly, any claim of personal injury or *
* death associated with such unintended or unauthorized use, even if such *
* claim alleges that Motorola was negligent regarding the design or *
* manufacture of the part. *
* *
* Motorola and the Motorola logo are registered trademarks of Motorola Ltd. *
*******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -