/*
 *
 *    Copyright (c) 2022 Project CHIP Authors
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

#include "rsi_ps_ram_func.h"
#include "system_RS1xxxx.h"
#include "system_si917.h"

/*----------Stack Configuration-----------------------------------------------*/
#define STACK_SIZE 0x00000C00 /*!< Stack size (in Words)           */
__attribute__((section(".co_stack"))) unsigned long pulStack[STACK_SIZE];

#define EXT_IRQ_COUNT 98 /**< Number of External (NVIC) interrupts */ // senthil copied from "efr32mg12p432f1024gl125.h"
#define TOTAL_INTERRUPTS (16 + EXT_IRQ_COUNT)

#ifndef __INITIAL_SP
#define __INITIAL_SP __StackTop
#endif
#ifndef __VECTOR_TABLE_ATTRIBUTE
#define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section(".vectors")))
#endif

/*----------Macro definition--------------------------------------------------*/
#define WEAK __attribute__((weak))

/*----------Declaration of the default fault handlers-------------------------*/
// #ifndef __START
// extern void  _start(void) __attribute__((noreturn));    /* Pre Main (C library entry point) */
// #else
// extern int  __START(void) __attribute__((noreturn));    /* main entry point */
// #endif

/* System exception vector handler */
__attribute__((used)) void WEAK Reset_Handler(void);
void WEAK NMI_Handler(void);
void WEAK HardFault_Handler(void);
void WEAK MemManage_Handler(void);
void WEAK BusFault_Handler(void);
void WEAK UsageFault_Handler(void);
void WEAK SVC_Handler(void);
void WEAK DebugMon_Handler(void);
void WEAK PendSV_Handler(void);
void WEAK SysTick_Handler(void);

/*Boot up functions*/
void RSI_Default_Reset_Handler(void);
void RSI_Default_WakeUp_Handler(void);
void RSI_PS_RestoreCpuContext(void);

void WEAK IRQ000_Handler(void);                                           /*!<  ULP Processor Interrupt   0      */
void WEAK IRQ001_Handler(void);                                           /*!<  ULP Processor Interrupt   1      */
void WEAK IRQ002_Handler(void);                                           /*!<  ULP Processor Interrupt   2      */
void WEAK IRQ003_Handler(void);                                           /*!<  ULP Processor Interrupt   3      */
void WEAK IRQ004_Handler(void);                                           /*!<  ULP Processor Interrupt   4      */
void WEAK IRQ005_Handler(void);                                           /*!<  ULP Processor Interrupt   5      */
void WEAK IRQ006_Handler(void);                                           /*!<  ULP Processor Interrupt   6      */
void WEAK IRQ007_Handler(void);                                           /*!<  ULP Processor Interrupt   7      */
void WEAK IRQ008_Handler(void);                                           /*!<  ULP Processor Interrupt   8      */
void WEAK IRQ009_Handler(void);                                           /*!<  ULP Processor Interrupt   9      */
void WEAK IRQ010_Handler(void);                                           /*!<  ULP Processor Interrupt   10     */
void WEAK IRQ011_Handler(void);                                           /*!<  ULP Processor Interrupt   11     */
void WEAK IRQ012_Handler(void);                                           /*!<  ULP Processor Interrupt   12     */
void WEAK IRQ013_Handler(void);                                           /*!<  ULP Processor Interrupt   13     */
void WEAK IRQ014_Handler(void);                                           /*!<  ULP Processor Interrupt   14     */
void WEAK IRQ015_Handler(void);                                           /*!<  ULP Processor Interrupt   15     */
void WEAK IRQ016_Handler(void);                                           /*!<  ULP Processor Interrupt   15     */
void WEAK IRQ017_Handler(void);                                           /*!<  ULP Processor Interrupt   17     */
void WEAK IRQ018_Handler(void);                                           /*!<  ULP Processor Interrupt   18     */
void WEAK IRQ019_Handler(void);                                           /*!<  ULP Processor Interrupt   19     */
void WEAK IRQ020_Handler(void); /*!<  Sleep Sensor Interrupts   0      */ /*WDT*/
void WEAK IRQ021_Handler(void);                                           /*!<  Sleep Sensor Interrupts   1      */
void WEAK IRQ022_Handler(void);                                           /*!<  Sleep Sensor Interrupts   2      */
void WEAK IRQ023_Handler(void);                                           /*!<  Sleep Sensor Interrupts   3      */
void WEAK IRQ024_Handler(void);                                           /*!<  Sleep Sensor Interrupts   4      */
void WEAK IRQ025_Handler(void);                                           /*!<  Sleep Sensor Interrupts   5      */
void WEAK IRQ026_Handler(void);                                           /*!<  Sleep Sensor Interrupts   6      */
void WEAK IRQ027_Handler(void);                                           /*!<  Sleep Sensor Interrupts   7      */
void WEAK IRQ028_Handler(void); /*!<  Sleep Sensor Interrupts   8      */ /*Alarm*/
void WEAK IRQ029_Handler(void); /*!<  Sleep Sensor Interrupts   9      */ /*Msec and sec interrupt */
void WEAK IRQ030_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ031_Handler(void);                                           /*!<  M4SS DMA interrupt               */
void WEAK IRQ032_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ033_Handler(void);                                           /*!<  M4SS DMA interrupt               */
void WEAK IRQ034_Handler(void);                                           /*!<  M4SS SCT interrupt               */
void WEAK HIF1_IRQHandler(void);                                          /*!<  HIF Interrupt 1                  */
void WEAK HIF2_IRQHandler(void);                                          /*!<  HIF Interrupt 2                  */
void WEAK IRQ037_Handler(void);                                           /*!<  SIO Interrupt                    */
void WEAK IRQ038_Handler(void);                                           /*!<  USART 1 Interrupt                */
void WEAK IRQ039_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ040_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ041_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ042_Handler(void);                                           /*!<  I2C Interrupt                    */
void WEAK IRQ043_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ044_Handler(void);                                           /*!<  SSI Slave Interrupt              */
void WEAK IRQ045_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ046_Handler(void);                                           /*!<  GSPI Master 1 Interrupt          */
void WEAK IRQ047_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ048_Handler(void);                                           /*!<  MCPWM Interrupt                  */
void WEAK IRQ049_Handler(void);                                           /*!<  QEI Interrupt                    */
void WEAK IRQ050_Handler(void);                                           /*!<  GPIO Group Interrupt 0           */
void WEAK IRQ051_Handler(void);                                           /*!<  GPIO Group Interrupt 1           */
void WEAK IRQ052_Handler(void);                                           /*!<  GPIO Pin Interrupt   0           */
void WEAK IRQ053_Handler(void);                                           /*!<  GPIO Pin Interrupt   1           */
void WEAK IRQ054_Handler(void);                                           /*!<  GPIO Pin Interrupt   2           */
void WEAK IRQ055_Handler(void);                                           /*!<  GPIO Pin Interrupt   3           */
void WEAK IRQ056_Handler(void);                                           /*!<  GPIO Pin Interrupt   4           */
void WEAK IRQ057_Handler(void);                                           /*!<  GPIO Pin Interrupt   5           */
void WEAK IRQ058_Handler(void);                                           /*!<  GPIO Pin Interrupt   6           */
void WEAK IRQ059_Handler(void);                                           /*!<  GPIO Pin Interrupt   7           */
void WEAK IRQ060_Handler(void);                                           /*!<  QSPI Interrupt                   */
void WEAK IRQ061_Handler(void);                                           /*!<  I2C 2 Interrupt                  */
void WEAK IRQ062_Handler(void);                                           /*!<  Ethernet Interrupt               */
void WEAK IRQ063_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ064_Handler(void);                                           /*!<  I2S master Interrupt             */
void WEAK IRQ065_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ066_Handler(void);                                           /*!<  Can 1 Interrupt                  */
void WEAK IRQ067_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ068_Handler(void);                                           /*!<  SDMEM Interrupt                  */
void WEAK IRQ069_Handler(void);                                           /*!<  PLL clock ind Interrupt          */
void WEAK IRQ070_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ071_Handler(void);                                           /*!<  CCI system Interrupt Out         */
void WEAK IRQ072_Handler(void);                                           /*!<  FPU exception                    */
void WEAK IRQ073_Handler(void);                                           /*!<  USB INTR                         */
void WEAK IRQ074_Handler(void);                                           /*!<  TASS_P2P_INTR                    */
void WEAK IRQ075_Handler(void);                                           /*!<  WLAN Band1 intr0                 */
void WEAK IRQ076_Handler(void);                                           /*!<  WLAN Band1 intr1                 */
void WEAK IRQ077_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ078_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ079_Handler(void);                                           /*!<  BT intr                          */
void WEAK IRQ080_Handler(void);                                           /*!<  ZB intr                          */
void WEAK IRQ081_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ082_Handler(void);                                           /*!<  Modem disabled mode trigger intr */
void WEAK IRQ083_Handler(void);                                           /*!<  gpio intr                        */
void WEAK IRQ084_Handler(void);                                           /*!<  uart intr                        */
void WEAK IRQ085_Handler(void);                                           /*!<  watch dog level intr             */
void WEAK IRQ086_Handler(void);                                           /*!<  ULP Sleep sensor interrupt       */
void WEAK IRQ087_Handler(void);                                           /*!<  ECDH intr                        */
void WEAK IRQ088_Handler(void);                                           /*!<  DH intr                          */
void WEAK IRQ089_Handler(void);                                           /*!<  QSPI intr                        */
void WEAK IRQ090_Handler(void);                                           /*!<  ULP processor interrupt TASS     */
void WEAK IRQ091_Handler(void);                                           /*!<  Sys Tick Timer                   */
void WEAK IRQ092_Handler(void);                                           /*!<  Real Timer interrupt             */
void WEAK IRQ093_Handler(void);                                           /*!<  PLL lock interrupt               */
void WEAK IRQ094_Handler(void);                                           /*!<  Reserved                         */
void WEAK IRQ095_Handler(void);                                           /*!<  UART2 Interrupt                  */
void WEAK IRQ096_Handler(void);                                           /*!<  I2S Interrupt                    */
void WEAK IRQ097_Handler(void);                                           /*!<  I2C Interrupt                    */
void WEAK IRQ098_Handler(void);                                           /*!<  RESERVED                         */

/*----------Symbols defined in linker script----------------------------------*/
extern unsigned long _sidata; /*!< Start address for the initialization
                                      values of the .data section.            */
extern unsigned long _sdata;  /*!< Start address for the .data section     */
extern unsigned long _edata;  /*!< End address for the .data section       */
extern unsigned long _sbss;   /*!< Start address for the .bss section      */
extern unsigned long _ebss;   /*!< End address for the .bss section        */
extern void _eram;            /*!< End address for ram                     */
extern uint32_t __etext;
extern unsigned long __StackTop;

/*----------Function prototypes-----------------------------------------------*/
extern int main(void);             /*!< The entry point for the application  */
void Default_Reset_Handler(void);  /*!< Default reset handler                */
static void Default_Handler(void); /*!< Default exception handler            */
/**
 *@brief The minimal vector table for a Cortex M4.  Note that the proper constructs
 *       must be placed on this to ensure that it ends up at physical address
 *       0x00000000.
 */

//(void *)0x300001
/*CCP new */
extern const tVectorEntry __VECTOR_TABLE[TOTAL_INTERRUPTS];
const tVectorEntry __VECTOR_TABLE[TOTAL_INTERRUPTS] __attribute__((aligned(512))) __VECTOR_TABLE_ATTRIBUTE = {
    /* Cortex-M Exception Handlers */
    { .topOfStack = &__INITIAL_SP }, /* Initial Stack Pointer */
    /*{ (void *)&pulStack[STACK_SIZE - 1] },*/
    { (void *) 0x300001 },  /* Reset Handler : IN CCP Platform system start
                                           from bootloader which inturn call reset handler */
    { NMI_Handler },        /* NMI Handler */
    { HardFault_Handler },  /* Hard Fault Handler */
    { MemManage_Handler },  /* MPU Fault Handler */
    { BusFault_Handler },   /* Bus Fault Handler */
    { UsageFault_Handler }, /* Usage Fault Handler */
    { 0 },                  /* Reserved */
    { 0 },                  /* Reserved */
    { 0 },                  /* Reserved */
    { 0 },                  /* Reserved */
    { SVC_Handler },        /* SVCall Handler */
    { DebugMon_Handler },   /* Debug Monitor Handler */
    { 0 },                  /* Application properties*/
    { PendSV_Handler },     /* PendSV Handler */
    { SysTick_Handler },    /* SysTick Handler */

    /* External interrupts */

    { IRQ000_Handler },              /* 0 */
    { IRQ001_Handler },              /* 1 */
    { IRQ002_Handler },              /* 2 */
    { IRQ003_Handler },              /* 3 */
    { IRQ004_Handler },              /* 4 */
    { IRQ005_Handler },              /* 5 */
    { IRQ006_Handler },              /* 6 */
    { IRQ007_Handler },              /* 7 */
    { IRQ008_Handler },              /* 8 */
    { IRQ009_Handler },              /* 9 */
    { IRQ010_Handler },              /* 10 */
    { IRQ011_Handler },              /* 11 */
    { IRQ012_Handler },              /* 12 */
    { IRQ013_Handler },              /* 13 */
    { IRQ014_Handler },              /* 14 */
    { IRQ015_Handler },              /* 15 */
    { IRQ016_Handler },              /* 16 */
    { IRQ017_Handler },              /* 17 */
    { IRQ018_Handler },              /* 18 */
    { IRQ019_Handler },              /* 19 */
    { IRQ020_Handler },              /* 20 */
    { IRQ021_Handler },              /* 21 */
    { IRQ022_Handler },              /* 22 */
    { IRQ023_Handler },              /* 23 */
    { IRQ024_Handler },              /* 24 */
    { IRQ025_Handler },              /* 25 */
    { IRQ026_Handler },              /* 26 */
    { IRQ027_Handler },              /* 27 */
    { IRQ028_Handler },              /* 28 */
    { IRQ029_Handler },              /* 29 */
    { (void *) &__StackTop - 0x0c }, /* 30 */
    { IRQ031_Handler },              /* 31 */
    { RSI_Default_Reset_Handler },   /* 32 */
    { IRQ033_Handler },              /* 33 */
    { IRQ034_Handler },              /* 34 */
    { HIF1_IRQHandler },             /* 35 */
    { HIF2_IRQHandler },             /* 36 */
    { IRQ037_Handler },              /* 37 */
    { IRQ038_Handler },              /* 38 */
    { IRQ039_Handler },              /* 39 */
    { RSI_PS_RestoreCpuContext },    /* 40 */
    { IRQ041_Handler },              /* 41 */
    { IRQ042_Handler },              /* 42 */
    { (void *) 0x10AD10AD },         /* 43 */
    { IRQ044_Handler },              /* 44 */
    { 0 },                           /* 45 */
    { IRQ046_Handler },              /* 46 */
    { IRQ047_Handler },              /* 47 */
    { IRQ048_Handler },              /* 48 */
    { IRQ049_Handler },              /* 49 */
    { IRQ050_Handler },              /* 50 - Reserved */
    { IRQ051_Handler },
    { IRQ052_Handler },
    { IRQ053_Handler },
    { IRQ054_Handler },
    { IRQ055_Handler },
    { IRQ056_Handler },
    { IRQ057_Handler },
    { IRQ058_Handler },
    { IRQ059_Handler },
    { IRQ060_Handler },
    { IRQ061_Handler },
    { IRQ062_Handler },
    { IRQ063_Handler },
    { IRQ064_Handler },
    { 0 },
    { IRQ066_Handler },
    { 0 },
    { IRQ068_Handler },
    { IRQ069_Handler },
    { 0 },
    { IRQ071_Handler },
    { IRQ072_Handler },
    { IRQ073_Handler },
    { IRQ074_Handler },
    { IRQ075_Handler },
    { IRQ076_Handler },
    { 0 },
    { 0 },
    { IRQ079_Handler },
    { IRQ080_Handler },
    { 0 },
    { IRQ082_Handler },
    { IRQ083_Handler },
    { IRQ084_Handler },
    { IRQ085_Handler },
    { IRQ086_Handler },
    { IRQ087_Handler },
    { IRQ088_Handler },
    { IRQ089_Handler },
    { IRQ090_Handler },
    { IRQ091_Handler },
    { IRQ092_Handler },
    { IRQ093_Handler },
    { 0 },
    { IRQ095_Handler },
    { 0 },
    { IRQ097_Handler },
};

/**
 * @brief  This is the code that gets never called, Dummy handler
 * @param  None
 * @retval None
 */
void Default_Reset_Handler(void)
{
    /*Generic Default reset handler for CM4 */
    while (1)
        ;
}

void Copy_Table()
{
    uint32_t *pSrc, *pDest;
    extern uint32_t __etext;
    extern uint32_t __data_start__;
    extern uint32_t __data_end__;
    pSrc  = &__etext;
    pDest = &__data_start__;

    for (; pDest < &__data_end__;)
    {
        *pDest++ = *pSrc++;
    }
}

void Zero_Table()
{
    uint32_t * pDest;
    extern uint32_t __bss_start__;
    extern uint32_t __bss_end__;
    pDest = &__bss_start__;

    for (; pDest < &__bss_end__;)
    {
        *pDest++ = 0UL;
    }
}
void Reset_Handler(void)
{
#ifndef __NO_SYSTEM_INIT
    SystemInit(); /* CMSIS System Initialization */
#endif

#ifdef BOOTLOADER_ENABLE
    SystemInit2();
#endif /* BOOTLOADER_ENABLE */

#if defined(__GNUC__) && defined(__START)
    Copy_Table();
    Zero_Table();
    __START();
#else
#if 0 // senthil_ccp
  __PROGRAM_START();               /* Enter PreMain (C library entry point) */
#else
    Copy_Table();
    Zero_Table();
    _start();
#endif
#endif /* __GNUC__ */
}

void RSI_Default_Reset_Handler(void)
{
#ifndef __NO_SYSTEM_INIT
    SystemInit(); /* CMSIS System Initialization */
#endif

#ifdef BOOTLOADER_ENABLE
    SystemInit2();
#endif /* BOOTLOADER_ENABLE */

#if defined(__GNUC__) && defined(__START)
    Copy_Table();
    Zero_Table();
    __START();
#else
#if 0 // senthil_ccp
  __PROGRAM_START();               /* Enter PreMain (C library entry point) */
#else
    Copy_Table();
    Zero_Table();
    _start();
#endif
#endif /* __GNUC__ */
}

/**
 *@brief Provide weak aliases for each Exception handler to the Default_Handler.
 *       As they are weak aliases, any function with the same name will override
 *       this definition.
 */
//#pragma weak Reset_Handler      = RSI_Default_Reset_Handler
#pragma weak NMI_Handler        = Default_Handler
#pragma weak HardFault_Handler  = Default_Handler
#pragma weak MemManage_Handler  = Default_Handler
#pragma weak BusFault_Handler   = Default_Handler
#pragma weak UsageFault_Handler = Default_Handler
#pragma weak SVC_Handler        = Default_Handler
#pragma weak DebugMon_Handler   = Default_Handler
#pragma weak PendSV_Handler     = Default_Handler
#pragma weak SysTick_Handler    = Default_Handler
/*----------------------------------external interrupts------------------------------ */
#pragma weak IRQ000_Handler  = Default_Handler
#pragma weak IRQ001_Handler  = Default_Handler
#pragma weak IRQ002_Handler  = Default_Handler
#pragma weak IRQ003_Handler  = Default_Handler
#pragma weak IRQ004_Handler  = Default_Handler
#pragma weak IRQ005_Handler  = Default_Handler
#pragma weak IRQ006_Handler  = Default_Handler
#pragma weak IRQ007_Handler  = Default_Handler
#pragma weak IRQ008_Handler  = Default_Handler
#pragma weak IRQ009_Handler  = Default_Handler
#pragma weak IRQ010_Handler  = Default_Handler
#pragma weak IRQ011_Handler  = Default_Handler
#pragma weak IRQ012_Handler  = Default_Handler
#pragma weak IRQ013_Handler  = Default_Handler
#pragma weak IRQ014_Handler  = Default_Handler
#pragma weak IRQ015_Handler  = Default_Handler
#pragma weak IRQ016_Handler  = Default_Handler
#pragma weak IRQ017_Handler  = Default_Handler
#pragma weak IRQ018_Handler  = Default_Handler
#pragma weak IRQ019_Handler  = Default_Handler
#pragma weak IRQ020_Handler  = Default_Handler
#pragma weak IRQ021_Handler  = Default_Handler
#pragma weak IRQ022_Handler  = Default_Handler
#pragma weak IRQ023_Handler  = Default_Handler
#pragma weak IRQ024_Handler  = Default_Handler
#pragma weak IRQ025_Handler  = Default_Handler
#pragma weak IRQ026_Handler  = Default_Handler
#pragma weak IRQ027_Handler  = Default_Handler
#pragma weak IRQ028_Handler  = Default_Handler
#pragma weak IRQ029_Handler  = Default_Handler
#pragma weak IRQ030_Handler  = Default_Handler
#pragma weak IRQ031_Handler  = Default_Handler
#pragma weak IRQ032_Handler  = Default_Handler
#pragma weak IRQ033_Handler  = Default_Handler
#pragma weak IRQ034_Handler  = Default_Handler
#pragma weak HIF1_IRQHandler = Default_Handler
#pragma weak HIF2_IRQHandler = Default_Handler
#pragma weak IRQ037_Handler  = Default_Handler
#pragma weak IRQ038_Handler  = Default_Handler
#pragma weak IRQ039_Handler  = Default_Handler
#pragma weak IRQ040_Handler  = Default_Handler
#pragma weak IRQ041_Handler  = Default_Handler
#pragma weak IRQ042_Handler  = Default_Handler
#pragma weak IRQ043_Handler  = Default_Handler
#pragma weak IRQ044_Handler  = Default_Handler
#pragma weak IRQ045_Handler  = Default_Handler
#pragma weak IRQ046_Handler  = Default_Handler
#pragma weak IRQ047_Handler  = Default_Handler
#pragma weak IRQ048_Handler  = Default_Handler
#pragma weak IRQ049_Handler  = Default_Handler
#pragma weak IRQ050_Handler  = Default_Handler
#pragma weak IRQ051_Handler  = Default_Handler
#pragma weak IRQ052_Handler  = Default_Handler
#pragma weak IRQ053_Handler  = Default_Handler
#pragma weak IRQ054_Handler  = Default_Handler
#pragma weak IRQ055_Handler  = Default_Handler
#pragma weak IRQ056_Handler  = Default_Handler
#pragma weak IRQ057_Handler  = Default_Handler
#pragma weak IRQ058_Handler  = Default_Handler
#pragma weak IRQ059_Handler  = Default_Handler
#pragma weak IRQ060_Handler  = Default_Handler
#pragma weak IRQ061_Handler  = Default_Handler
#pragma weak IRQ062_Handler  = Default_Handler
#pragma weak IRQ063_Handler  = Default_Handler
#pragma weak IRQ064_Handler  = Default_Handler
#pragma weak IRQ065_Handler  = Default_Handler
#pragma weak IRQ066_Handler  = Default_Handler
#pragma weak IRQ067_Handler  = Default_Handler
#pragma weak IRQ068_Handler  = Default_Handler
#pragma weak IRQ069_Handler  = Default_Handler
#pragma weak IRQ070_Handler  = Default_Handler
#pragma weak IRQ071_Handler  = Default_Handler
#pragma weak IRQ072_Handler  = Default_Handler
#pragma weak IRQ073_Handler  = Default_Handler
#pragma weak IRQ074_Handler  = Default_Handler
#pragma weak IRQ075_Handler  = Default_Handler
#pragma weak IRQ076_Handler  = Default_Handler
#pragma weak IRQ077_Handler  = Default_Handler
#pragma weak IRQ078_Handler  = Default_Handler
#pragma weak IRQ079_Handler  = Default_Handler
#pragma weak IRQ080_Handler  = Default_Handler
#pragma weak IRQ081_Handler  = Default_Handler
#pragma weak IRQ082_Handler  = Default_Handler
#pragma weak IRQ083_Handler  = Default_Handler
#pragma weak IRQ084_Handler  = Default_Handler
#pragma weak IRQ085_Handler  = Default_Handler
#pragma weak IRQ086_Handler  = Default_Handler
#pragma weak IRQ087_Handler  = Default_Handler
#pragma weak IRQ088_Handler  = Default_Handler
#pragma weak IRQ089_Handler  = Default_Handler
#pragma weak IRQ090_Handler  = Default_Handler
#pragma weak IRQ091_Handler  = Default_Handler
#pragma weak IRQ092_Handler  = Default_Handler
#pragma weak IRQ093_Handler  = Default_Handler
#pragma weak IRQ094_Handler  = Default_Handler
#pragma weak IRQ095_Handler  = Default_Handler
#pragma weak IRQ096_Handler  = Default_Handler
#pragma weak IRQ097_Handler  = Default_Handler
#pragma weak IRQ098_Handler  = Default_Handler

/**
 * @brief  This is the code that gets called when the processor receives an
 *         unexpected interrupt.  This simply enters an infinite loop,
 *         preserving the system state for examination by a debugger.
 * @param  None
 * @retval None
 */
static void Default_Handler(void)
{
    /* Go into an infinite loop. */
    while (1)
    {
    }
}

/*********************** (C) COPYRIGHT 2009 Coocox ************END OF FILE*****/
