/***********************************************************************/
/*  													               */
/*      PROJECT NAME :  test                                           */
/*      FILE         :  vector_table.c                                 */
/*      DESCRIPTION  :  Vector Table                                   */
/*      CPU SERIES   :  RL78 - G14                                     */
/*      CPU TYPE     :  R5F104PJ                                       */
/*  													               */
/*      This file is generated by e2studio.                        	   */
/*  													               */
/***********************************************************************/

#include "FreeRTOS.h"

extern void PowerON_Reset( void );
extern void vPortTickISR( void );
extern void vPortYield( void );

void Dummy_Handler( void ) __attribute__((interrupt));
void Dummy_Handler( void )
{
}

const unsigned char Option_Bytes[]  __attribute__ ((section (".option_bytes"))) = {
	0x6e, 0xff, 0xe8, 0x85
};

const unsigned char Security_Id[]  __attribute__ ((section (".security_id"))) = {
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

#define VEC          __attribute__ ((section (".vec")))
const void *HardwareVectors[] VEC = {
	// Address 0x0
	PowerON_Reset,
};

#define VECT_SECT          __attribute__ ((section (".vects")))
const void *Vectors[] VECT_SECT = {
	//(0x4)
	Dummy_Handler,
	//(0x6)
	Dummy_Handler,
	//(0x8)
	Dummy_Handler,
	//(0xA)
	Dummy_Handler,
	//(0xC)
	Dummy_Handler,
	//(0xE)
	Dummy_Handler,
	//(0x10)
	Dummy_Handler,
	//(0x12)
	Dummy_Handler,
	//(0x14)
	Dummy_Handler,
	//(0x16)
	Dummy_Handler,
	//(0x18)
	Dummy_Handler,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	//(0x1E)
	Dummy_Handler,
	//(0x20)
	Dummy_Handler,
	//(0x22)
	Dummy_Handler,
	//(0x24)
	Dummy_Handler,
	//(0x26)
	Dummy_Handler,
	//(0x28)
	Dummy_Handler,
	//(0x2A)
	Dummy_Handler,
	//(0x2C)
	Dummy_Handler,
	//(0x2E)
	Dummy_Handler,
	//(0x30)
	Dummy_Handler,
	//(0x32)
	Dummy_Handler,
	//(0x34)
	Dummy_Handler,
	//(0x36)
	Dummy_Handler,
	//(0x38)
#if INTIT_vect == 0x38
	vPortTickISR, /* Note this vector table definition is used with lots of RL78 chips, some of which have the INTIT vector here. */
#else
	Dummy_Handler,
#endif
	//(0x3A)
	Dummy_Handler,
	//(0x3C)
#if INTIT_vect == 0x3C
	vPortTickISR, /* Note this vector table definition is used with lots of RL78 chips, some of which have the INTIT vector here. */
#else
	Dummy_Handler,
#endif
	//(0x3E)
	Dummy_Handler,
	//(0x40)
	Dummy_Handler,
	//(0x42)
	Dummy_Handler,
	//(0x44)
	Dummy_Handler,
	//(0x46)
	Dummy_Handler,
	//(0x48)
	Dummy_Handler,
	//(0x4A)
	Dummy_Handler,
	//(0x4C)
	Dummy_Handler,
	//(0x4E)
	Dummy_Handler,
	//(0x50)
	Dummy_Handler,
	//(0x52)
	Dummy_Handler,
	//(0x54)
	Dummy_Handler,
	//(0x56)
	Dummy_Handler,
	//(0x58)
	Dummy_Handler,
	//(0x5A)
	Dummy_Handler,
	//(0x5C)
	Dummy_Handler,
	// Padding
	(void*)0xFFFF,
	//(0x60)
	Dummy_Handler,
	//(0x62)
	Dummy_Handler,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	// Padding
	(void*)0xFFFF,
	//INT_BRK_I (0x7E)
	vPortYield,
};

