vecttbl.c 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434
  1. /***********************************************************************************************************************
  2. * DISCLAIMER
  3. * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
  4. * other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
  5. * applicable laws, including copyright laws.
  6. * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
  7. * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
  8. * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
  9. * EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
  10. * SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
  11. * SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  12. * Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
  13. * this software. By using this software, you agree to the additional terms and conditions found by accessing the
  14. * following link:
  15. * http://www.renesas.com/disclaimer
  16. *
  17. * Copyright (C) 2016 Renesas Electronics Corporation. All rights reserved.
  18. ***********************************************************************************************************************/
  19. /***********************************************************************************************************************
  20. * File Name : vecttbl.c
  21. * Device(s) : RX65N
  22. * Description : Definition of the exception vector table, reset vector, and user boot options.
  23. ***********************************************************************************************************************/
  24. /***********************************************************************************************************************
  25. * History : DD.MM.YYYY Version Description
  26. * : 01.10.2016 1.00 First Release
  27. * : 15.05.2017 2.00 Deleted unnecessary comments.
  28. * Added the following setting.
  29. * - Setting of Expansion RAM.
  30. * - Setting of Bank Mode Select.
  31. * - Setting of Startup Bank Switch.
  32. * Added the bsp startup module disable function.
  33. * : 27.07.2018 2.01 Modified the comment of START_BANK_VALUE.
  34. * Changed the setting of ID code protection.
  35. * : xx.xx.xxxx 2.02 Added support for GNUC and ICCRX.
  36. ***********************************************************************************************************************/
  37. /***********************************************************************************************************************
  38. Includes <System Includes> , "Project Includes"
  39. ***********************************************************************************************************************/
  40. /* BSP configuration. */
  41. #include "platform.h"
  42. /* When using the user startup program, disable the following code. */
  43. #if (BSP_CFG_STARTUP_DISABLE == 0)
  44. /***********************************************************************************************************************
  45. Macro definitions
  46. ***********************************************************************************************************************/
  47. /* Defines CV, CO, CZ, CU, CX, and CE bits. */
  48. #define FPU_CAUSE_FLAGS (0x000000FC)
  49. /***********************************************************************************************************************
  50. Private global variables and functions
  51. ***********************************************************************************************************************/
  52. extern void PowerON_Reset_PC(void);
  53. #if defined(__CCRX__) || defined(__GNUC__)
  54. R_PRAGMA_INTERRUPT_FUNCTION(excep_supervisor_inst_isr)
  55. R_PRAGMA_INTERRUPT_FUNCTION(excep_access_isr)
  56. R_PRAGMA_INTERRUPT_FUNCTION(excep_undefined_inst_isr)
  57. R_PRAGMA_INTERRUPT_FUNCTION(excep_floating_point_isr)
  58. R_PRAGMA_INTERRUPT_FUNCTION(non_maskable_isr)
  59. R_PRAGMA_INTERRUPT_DEFAULT(undefined_interrupt_source_isr)
  60. #elif defined(__ICCRX__)
  61. R_PRAGMA_INTERRUPT_FUNCTION(__privileged_handler)
  62. R_PRAGMA_INTERRUPT_FUNCTION(__excep_access_inst)
  63. R_PRAGMA_INTERRUPT_FUNCTION(__undefined_handler)
  64. R_PRAGMA_INTERRUPT_FUNCTION(_float_placeholder)
  65. R_PRAGMA_INTERRUPT_FUNCTION(__NMI_handler)
  66. R_PRAGMA_INTERRUPT_DEFAULT(__undefined_interrupt_source_handler)
  67. #endif /* defined(__CCRX__), defined(__GNUC__), defined(__ICCRX__) */
  68. R_PRAGMA_INTERRUPT(bus_error_isr, VECT(BSC,BUSERR))
  69. /***********************************************************************************************************************
  70. * Function name: excep_supervisor_inst_isr
  71. * Description : Supervisor Instruction Violation ISR
  72. * Arguments : none
  73. * Return Value : none
  74. ***********************************************************************************************************************/
  75. #if defined(__CCRX__) || defined(__GNUC__)
  76. R_ATTRIB_INTERRUPT void excep_supervisor_inst_isr(void)
  77. #elif defined(__ICCRX__)
  78. R_ATTRIB_INTERRUPT void __privileged_handler(void)
  79. #endif /* defined(__CCRX__), defined(__GNUC__), defined(__ICCRX__) */
  80. {
  81. /* If user has registered a callback for this exception then call it. */
  82. R_BSP_InterruptControl(BSP_INT_SRC_EXC_SUPERVISOR_INSTR, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  83. }
  84. /***********************************************************************************************************************
  85. * Function name: excep_access_isr
  86. * Description : Access exception ISR
  87. * Arguments : none
  88. * Return Value : none
  89. ***********************************************************************************************************************/
  90. #if defined(__CCRX__) || defined(__GNUC__)
  91. R_ATTRIB_INTERRUPT void excep_access_isr(void)
  92. #elif defined(__ICCRX__)
  93. R_ATTRIB_INTERRUPT void __excep_access_inst(void)
  94. #endif /* defined(__CCRX__), defined(__GNUC__), defined(__ICCRX__) */
  95. {
  96. /* If user has registered a callback for this exception then call it. */
  97. R_BSP_InterruptControl(BSP_INT_SRC_EXC_ACCESS, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  98. }
  99. /***********************************************************************************************************************
  100. * Function name: excep_undefined_inst_isr
  101. * Description : Undefined instruction exception ISR
  102. * Arguments : none
  103. * Return Value : none
  104. ***********************************************************************************************************************/
  105. #if defined(__CCRX__) || defined(__GNUC__)
  106. R_ATTRIB_INTERRUPT void excep_undefined_inst_isr(void)
  107. #elif defined(__ICCRX__)
  108. R_ATTRIB_INTERRUPT void __undefined_handler(void)
  109. #endif /* defined(__CCRX__), defined(__GNUC__), defined(__ICCRX__) */
  110. {
  111. /* If user has registered a callback for this exception then call it. */
  112. R_BSP_InterruptControl(BSP_INT_SRC_EXC_UNDEFINED_INSTR, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  113. }
  114. /***********************************************************************************************************************
  115. * Function name: excep_floating_point_isr
  116. * Description : Floating point exception ISR
  117. * Arguments : none
  118. * Return Value : none
  119. ***********************************************************************************************************************/
  120. #if defined(__CCRX__) || defined(__GNUC__)
  121. R_ATTRIB_INTERRUPT void excep_floating_point_isr(void)
  122. #elif defined(__ICCRX__)
  123. R_ATTRIB_INTERRUPT void _float_placeholder(void)
  124. #endif /* defined(__CCRX__), defined(__GNUC__), defined(__ICCRX__) */
  125. {
  126. /* Used for reading FPSW register. */
  127. uint32_t temp_fpsw;
  128. /* If user has registered a callback for this exception then call it. */
  129. R_BSP_InterruptControl(BSP_INT_SRC_EXC_FPU, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  130. /* Get current FPSW. */
  131. temp_fpsw = (uint32_t)R_GET_FPSW();
  132. /* Clear only the FPU exception flags. */
  133. R_SET_FPSW(temp_fpsw & ((uint32_t)~FPU_CAUSE_FLAGS));
  134. }
  135. /***********************************************************************************************************************
  136. * Function name: non_maskable_isr
  137. * Description : Non-maskable interrupt ISR
  138. * Arguments : none
  139. * Return Value : none
  140. ***********************************************************************************************************************/
  141. #if defined(__CCRX__) || defined(__GNUC__)
  142. R_ATTRIB_INTERRUPT void non_maskable_isr(void)
  143. #elif defined(__ICCRX__)
  144. R_ATTRIB_INTERRUPT void __NMI_handler(void)
  145. #endif /* defined(__CCRX__), defined(__GNUC__), defined(__ICCRX__) */
  146. {
  147. /* Determine what is the cause of this interrupt. */
  148. if (1 == ICU.NMISR.BIT.NMIST)
  149. {
  150. /* NMI pin interrupt is requested. */
  151. R_BSP_InterruptControl(BSP_INT_SRC_EXC_NMI_PIN, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  152. /* Clear NMI pin interrupt flag. */
  153. ICU.NMICLR.BIT.NMICLR = 1;
  154. }
  155. if (1 == ICU.NMISR.BIT.OSTST)
  156. {
  157. /* Oscillation stop detection interrupt is requested. */
  158. R_BSP_InterruptControl(BSP_INT_SRC_OSC_STOP_DETECT, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  159. /* Clear oscillation stop detect flag. */
  160. ICU.NMICLR.BIT.OSTCLR = 1;
  161. }
  162. if (1 == ICU.NMISR.BIT.WDTST)
  163. {
  164. /* WDT underflow/refresh error interrupt is requested. */
  165. R_BSP_InterruptControl(BSP_INT_SRC_WDT_ERROR, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  166. /* Clear WDT flag. */
  167. ICU.NMICLR.BIT.WDTCLR = 1;
  168. }
  169. if (1 == ICU.NMISR.BIT.IWDTST)
  170. {
  171. /* IWDT underflow/refresh error interrupt is requested. */
  172. R_BSP_InterruptControl(BSP_INT_SRC_IWDT_ERROR, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  173. /* Clear IWDT flag. */
  174. ICU.NMICLR.BIT.IWDTCLR = 1;
  175. }
  176. if (1 == ICU.NMISR.BIT.LVD1ST)
  177. {
  178. /* Voltage monitoring 1 interrupt is requested. */
  179. R_BSP_InterruptControl(BSP_INT_SRC_LVD1, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  180. /* Clear LVD1 flag. */
  181. ICU.NMICLR.BIT.LVD1CLR = 1;
  182. }
  183. if (1 == ICU.NMISR.BIT.LVD2ST)
  184. {
  185. /* Voltage monitoring 1 interrupt is requested. */
  186. R_BSP_InterruptControl(BSP_INT_SRC_LVD2, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  187. /* Clear LVD2 flag. */
  188. ICU.NMICLR.BIT.LVD2CLR = 1;
  189. }
  190. if (1 == ICU.NMISR.BIT.RAMST)
  191. {
  192. if(1 == RAM.RAMSTS.BIT.RAMERR)
  193. {
  194. /* RAM Error interrupt is requested. */
  195. R_BSP_InterruptControl(BSP_INT_SRC_RAM, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  196. /* Clear RAM flags. */
  197. RAM.RAMSTS.BIT.RAMERR = 0;
  198. }
  199. if(1 == RAM.EXRAMSTS.BIT.EXRAMERR)
  200. {
  201. /* Expansion RAM Error interrupt is requested. */
  202. R_BSP_InterruptControl(BSP_INT_SRC_EXRAM, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  203. /* Clear Expansion RAM flags. */
  204. RAM.EXRAMSTS.BIT.EXRAMERR = 0;
  205. }
  206. }
  207. }
  208. /***********************************************************************************************************************
  209. * Function name: undefined_interrupt_source_isr
  210. * Description : All undefined interrupt vectors point to this function.
  211. * Set a breakpoint in this function to determine which source is creating unwanted interrupts.
  212. * Arguments : none
  213. * Return Value : none
  214. ***********************************************************************************************************************/
  215. #if defined(__CCRX__) || defined(__GNUC__)
  216. R_ATTRIB_INTERRUPT void undefined_interrupt_source_isr(void)
  217. #elif defined(__ICCRX__)
  218. R_ATTRIB_INTERRUPT void __undefined_interrupt_source_handler(void)
  219. #endif /* defined(__CCRX__), defined(__GNUC__), defined(__ICCRX__) */
  220. {
  221. /* If user has registered a callback for this exception then call it. */
  222. R_BSP_InterruptControl(BSP_INT_SRC_UNDEFINED_INTERRUPT, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  223. }
  224. /***********************************************************************************************************************
  225. * Function name: bus_error_isr
  226. * Description : By default, this demo code enables the Bus Error Interrupt. This interrupt will fire if the user tries
  227. * to access code or data from one of the reserved areas in the memory map, including the areas covered
  228. * by disabled chip selects. A nop() statement is included here as a convenient place to set a breakpoint
  229. * during debugging and development, and further handling should be added by the user for their
  230. * application.
  231. * Arguments : none
  232. * Return value : none
  233. ***********************************************************************************************************************/
  234. R_ATTRIB_INTERRUPT void bus_error_isr (void)
  235. {
  236. /* Clear the bus error */
  237. BSC.BERCLR.BIT.STSCLR = 1;
  238. /*
  239. To find the address that was accessed when the bus error occurred, read the register BSC.BERSR2.WORD. The upper
  240. 13 bits of this register contain the upper 13-bits of the offending address (in 512K byte units)
  241. */
  242. /* If user has registered a callback for this exception then call it. */
  243. R_BSP_InterruptControl(BSP_INT_SRC_BUS_ERROR, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
  244. }
  245. /***********************************************************************************************************************
  246. * The following array fills in the UB codes to get into User Boot Mode, the MDEB register, and the User Boot reset
  247. * vector.
  248. ***********************************************************************************************************************/
  249. #ifdef __BIG
  250. #define MDE_VALUE (0xfffffff8) /* big */
  251. #else
  252. #define MDE_VALUE (0xffffffff) /* little */
  253. #endif
  254. #if defined(BSP_MCU_RX65N_2MB) /* In the case of 1.5 or 2Mbyte ROM capacity. */
  255. #if (BSP_CFG_CODE_FLASH_BANK_MODE == 0)
  256. #define BANK_MODE_VALUE (0xffffff8f) /* dual */
  257. #else
  258. #define BANK_MODE_VALUE (0xffffffff) /* linear */
  259. #endif
  260. #else
  261. #define BANK_MODE_VALUE (0xffffffff) /* linear */
  262. #endif
  263. #if defined(BSP_MCU_RX65N_2MB) /* In the case of 1.5 or 2Mbyte ROM capacity. */
  264. #if (BSP_CFG_CODE_FLASH_START_BANK == 0)
  265. /* The address range of bank 1 from FFE00000h to FFEFFFFFh and bank 0 from FFF00000h to FFFFFFFFh. */
  266. #define START_BANK_VALUE (0xffffffff)
  267. #else
  268. /* The address range of bank 1 from FFF00000h to FFFFFFFFh and bank 0 from FFE00000h to FFEFFFFFh. */
  269. #define START_BANK_VALUE (0xfffffff8)
  270. #endif
  271. #endif
  272. #if defined(__CCRX__)
  273. #pragma address __MDEreg = 0xFE7F5D00
  274. #pragma address __OFS0reg = 0xFE7F5D04
  275. #pragma address __OFS1reg = 0xFE7F5D08
  276. #pragma address __TMINFreg = 0xFE7F5D10
  277. #if defined(BSP_MCU_RX65N_2MB)
  278. #pragma address __BANKSELreg = 0xFE7F5D20
  279. #endif
  280. #pragma address __SPCCreg = 0xFE7F5D40
  281. #pragma address __TMEFreg = 0xFE7F5D48
  282. #pragma address __OSIS1reg = 0xFE7F5D50
  283. #pragma address __OSIS2reg = 0xFE7F5D54
  284. #pragma address __OSIS3reg = 0xFE7F5D58
  285. #pragma address __OSIS4reg = 0xFE7F5D5C
  286. #pragma address __FAWreg = 0xFE7F5D64
  287. #pragma address __ROMCODEreg = 0xFE7F5D70
  288. const unsigned long __MDEreg = (MDE_VALUE & BANK_MODE_VALUE);
  289. const unsigned long __OFS0reg = BSP_CFG_OFS0_REG_VALUE;
  290. const unsigned long __OFS1reg = BSP_CFG_OFS1_REG_VALUE;
  291. const unsigned long __TMINFreg = 0xffffffff;
  292. #if defined(BSP_MCU_RX65N_2MB)
  293. const unsigned long __BANKSELreg = START_BANK_VALUE;
  294. #endif
  295. const unsigned long __SPCCreg = 0xffffffff;
  296. const unsigned long __TMEFreg = BSP_CFG_TRUSTED_MODE_FUNCTION;
  297. const unsigned long __OSIS1reg = BSP_CFG_ID_CODE_LONG_1;
  298. const unsigned long __OSIS2reg = BSP_CFG_ID_CODE_LONG_2;
  299. const unsigned long __OSIS3reg = BSP_CFG_ID_CODE_LONG_3;
  300. const unsigned long __OSIS4reg = BSP_CFG_ID_CODE_LONG_4;
  301. const unsigned long __FAWreg = BSP_CFG_FAW_REG_VALUE;
  302. const unsigned long __ROMCODEreg = BSP_CFG_ROMCODE_REG_VALUE;
  303. #elif defined(__GNUC__)
  304. const unsigned long __MDEreg __attribute__ ((section(".ofs1"))) = (MDE_VALUE & BANK_MODE_VALUE);
  305. const unsigned long __OFS0reg __attribute__ ((section(".ofs1"))) = BSP_CFG_OFS0_REG_VALUE;
  306. const unsigned long __OFS1reg __attribute__ ((section(".ofs1"))) = BSP_CFG_OFS1_REG_VALUE;
  307. const unsigned long __TMINFreg __attribute__ ((section(".ofs2"))) = 0xffffffff;
  308. #if defined(BSP_MCU_RX65N_2MB)
  309. //const unsigned long __BANKSELreg __attribute__ ((section(".ofs2"))) = START_BANK_VALUE;
  310. #endif
  311. const unsigned long __SPCCreg __attribute__ ((section(".ofs3"))) = 0xffffffff;
  312. const unsigned long __TMEFreg __attribute__ ((section(".ofs4"))) = BSP_CFG_TRUSTED_MODE_FUNCTION;
  313. const unsigned long __OSIS1reg __attribute__ ((section(".ofs5"))) = BSP_CFG_ID_CODE_LONG_1;
  314. const unsigned long __OSIS2reg __attribute__ ((section(".ofs5"))) = BSP_CFG_ID_CODE_LONG_2;
  315. const unsigned long __OSIS3reg __attribute__ ((section(".ofs5"))) = BSP_CFG_ID_CODE_LONG_3;
  316. const unsigned long __OSIS4reg __attribute__ ((section(".ofs5"))) = BSP_CFG_ID_CODE_LONG_4;
  317. const unsigned long __FAWreg __attribute__ ((section(".ofs6"))) = BSP_CFG_FAW_REG_VALUE;
  318. const unsigned long __ROMCODEreg __attribute__ ((section(".ofs7"))) = BSP_CFG_ROMCODE_REG_VALUE;
  319. #elif defined(__ICCRX__)
  320. #pragma public_equ = "__MDE", (MDE_VALUE & BANK_MODE_VALUE)
  321. #pragma public_equ = "__OFS0", BSP_CFG_OFS0_REG_VALUE
  322. #pragma public_equ = "__OFS1", BSP_CFG_OFS1_REG_VALUE
  323. #pragma public_equ = "__TMINF", 0xffffffff
  324. #pragma public_equ = "__BANKSEL", START_BANK_VALUE
  325. #pragma public_equ = "__SPCC", 0xffffffff
  326. #pragma public_equ = "__TMEF", BSP_CFG_TRUSTED_MODE_FUNCTION
  327. #pragma public_equ = "__OSIS_1", BSP_CFG_ID_CODE_LONG_1
  328. #pragma public_equ = "__OSIS_2", BSP_CFG_ID_CODE_LONG_2
  329. #pragma public_equ = "__OSIS_3", BSP_CFG_ID_CODE_LONG_3
  330. #pragma public_equ = "__OSIS_4", BSP_CFG_ID_CODE_LONG_4
  331. #pragma public_equ = "__FAW", BSP_CFG_FAW_REG_VALUE
  332. #pragma public_equ = "__ROMCODE", BSP_CFG_ROMCODE_REG_VALUE
  333. #endif /* defined(__CCRX__), defined(__GNUC__), defined(__ICCRX__) */
  334. /***********************************************************************************************************************
  335. * The following array fills in the exception vector table.
  336. ***********************************************************************************************************************/
  337. #if defined(__CCRX__) || defined(__GNUC__)
  338. R_ATTRIB_SECTION_CHANGE_EXCEPTVECT void * const Except_Vectors[] =
  339. {
  340. /* Offset from EXTB: Reserved area - must be all 0xFF */
  341. (void (*)(void))0xFFFFFFFF, /* 0x00 - Reserved */
  342. (void (*)(void))0xFFFFFFFF, /* 0x04 - Reserved */
  343. (void (*)(void))0xFFFFFFFF, /* 0x08 - Reserved */
  344. (void (*)(void))0xFFFFFFFF, /* 0x0c - Reserved */
  345. (void (*)(void))0xFFFFFFFF, /* 0x10 - Reserved */
  346. (void (*)(void))0xFFFFFFFF, /* 0x14 - Reserved */
  347. (void (*)(void))0xFFFFFFFF, /* 0x18 - Reserved */
  348. (void (*)(void))0xFFFFFFFF, /* 0x1c - Reserved */
  349. (void (*)(void))0xFFFFFFFF, /* 0x20 - Reserved */
  350. (void (*)(void))0xFFFFFFFF, /* 0x24 - Reserved */
  351. (void (*)(void))0xFFFFFFFF, /* 0x28 - Reserved */
  352. (void (*)(void))0xFFFFFFFF, /* 0x2c - Reserved */
  353. (void (*)(void))0xFFFFFFFF, /* 0x30 - Reserved */
  354. (void (*)(void))0xFFFFFFFF, /* 0x34 - Reserved */
  355. (void (*)(void))0xFFFFFFFF, /* 0x38 - Reserved */
  356. (void (*)(void))0xFFFFFFFF, /* 0x3c - Reserved */
  357. (void (*)(void))0xFFFFFFFF, /* 0x40 - Reserved */
  358. (void (*)(void))0xFFFFFFFF, /* 0x44 - Reserved */
  359. (void (*)(void))0xFFFFFFFF, /* 0x48 - Reserved */
  360. (void (*)(void))0xFFFFFFFF, /* 0x4c - Reserved */
  361. /* Exception vector table */
  362. excep_supervisor_inst_isr, /* 0x50 Exception(Supervisor Instruction) */
  363. excep_access_isr, /* 0x54 Exception(Access exception) */
  364. undefined_interrupt_source_isr, /* 0x58 Reserved */
  365. excep_undefined_inst_isr, /* 0x5c Exception(Undefined Instruction) */
  366. undefined_interrupt_source_isr, /* 0x60 Reserved */
  367. excep_floating_point_isr, /* 0x64 Exception(Floating Point) */
  368. undefined_interrupt_source_isr, /* 0x68 Reserved */
  369. undefined_interrupt_source_isr, /* 0x6c Reserved */
  370. undefined_interrupt_source_isr, /* 0x70 Reserved */
  371. undefined_interrupt_source_isr, /* 0x74 Reserved */
  372. non_maskable_isr, /* 0x78 NMI */
  373. };
  374. R_ATTRIB_SECTION_CHANGE_END
  375. #endif /* defined(__CCRX__) || defined(__GNUC__) */
  376. /***********************************************************************************************************************
  377. * The following array fills in the reset vector.
  378. ***********************************************************************************************************************/
  379. #if defined(__CCRX__) || defined(__GNUC__)
  380. R_ATTRIB_SECTION_CHANGE_RESETVECT void (* const Reset_Vector[])(void) =
  381. {
  382. PowerON_Reset_PC /* 0xfffffffc RESET */
  383. };
  384. R_ATTRIB_SECTION_CHANGE_END
  385. #endif /* defined(__CCRX__) || defined(__GNUC__) */
  386. #endif /* BSP_CFG_STARTUP_DISABLE == 0 */