120 lines
4.1 KiB
C
120 lines
4.1 KiB
C
/**
|
|
* Copyright (c) 2024 Wei-Lun Hsu. All Rights Reserved.
|
|
*/
|
|
/** @file interrupt.c
|
|
*
|
|
* @author Wei-Lun Hsu
|
|
* @version 0.1
|
|
* @date 2024/08/29
|
|
* @license
|
|
* @description
|
|
*/
|
|
|
|
|
|
#include "device.h"
|
|
//=============================================================================
|
|
// Constant Definition
|
|
//=============================================================================
|
|
|
|
//=============================================================================
|
|
// Macro Definition
|
|
//=============================================================================
|
|
|
|
//=============================================================================
|
|
// Structure Definition
|
|
//=============================================================================
|
|
|
|
//=============================================================================
|
|
// Global Data Definition
|
|
//=============================================================================
|
|
extern void default_handler(void);
|
|
|
|
//=============================================================================
|
|
// Private Function Definition
|
|
//=============================================================================
|
|
/**
|
|
* \brief System Timer ISR
|
|
*
|
|
* \return None
|
|
*/
|
|
void eclic_mtim_handler(void)
|
|
{
|
|
g_SysTicks++;
|
|
|
|
// Reload Timer Interrupt
|
|
SysTick_Reload(g_SysTickPeriod);
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* \brief System Software ISR
|
|
*
|
|
* \return None
|
|
*/
|
|
__INTERRUPT void eclic_mswi_handler(void)
|
|
{
|
|
SAVE_IRQ_CSR_CONTEXT();
|
|
|
|
sys_clear_swi();
|
|
sys_clear_IRQFlag(SysSW_IRQn);
|
|
|
|
RESTORE_IRQ_CSR_CONTEXT();
|
|
return;
|
|
}
|
|
|
|
__INTERRUPT void eclic_bwei_handler(void)
|
|
{
|
|
return;
|
|
}
|
|
|
|
__INTERRUPT void eclic_pmovi_handler(void)
|
|
{
|
|
return;
|
|
}
|
|
//=============================================================================
|
|
// Public Function Definition
|
|
//=============================================================================
|
|
|
|
/**
|
|
* irq vector table
|
|
*/
|
|
const fp_isr_t __Vectors[__ECLIC_INTNUM] __USED __attribute__((section (".mintvec"))) =
|
|
{
|
|
(fp_isr_t)0, /* 0: Reserved */
|
|
default_handler, /* 1: Reserved */
|
|
default_handler, /* 2: Reserved */
|
|
eclic_mswi_handler, /* 3: Machine software interrupt */
|
|
default_handler, /* 4: Reserved */
|
|
default_handler, /* 5: Reserved */
|
|
default_handler, /* 6: Reserved */
|
|
eclic_mtim_handler, /* 7: Machine timer interrupt */
|
|
default_handler, /* 8: Reserved */
|
|
default_handler, /* 9: Reserved */
|
|
default_handler, /* 10: Reserved */
|
|
default_handler, /* 11: Reserved */
|
|
default_handler, /* 12: Reserved */
|
|
default_handler, /* 13: Reserved */
|
|
default_handler, /* 14: Reserved */
|
|
default_handler, /* 15: Reserved */
|
|
default_handler, /* 16: Reserved */
|
|
eclic_bwei_handler, /* 17: Bus Error interrupt */
|
|
eclic_pmovi_handler, /* 18: Performance Monitor */
|
|
|
|
/*========= external interrupt ================*/
|
|
default_handler, /* 19: ext_irq Reserved */
|
|
default_handler, /* 20: ext_irq Reserved */
|
|
default_handler, /* 21: ext_irq Reserved */
|
|
default_handler, /* 22: ext_irq Reserved */
|
|
default_handler, /* 23: ext_irq Reserved */
|
|
default_handler, /* 24: ext_irq Reserved */
|
|
default_handler, /* 25: ext_irq Reserved */
|
|
default_handler, /* 26: ext_irq Reserved */
|
|
default_handler, /* 27: ext_irq Reserved */
|
|
default_handler, /* 28: ext_irq Reserved */
|
|
default_handler, /* 29: ext_irq Reserved */
|
|
default_handler, /* 30: ext_irq Reserved */
|
|
default_handler, /* 31: ext_irq Reserved */
|
|
default_handler, /* 32: ext_irq Reserved */
|
|
default_handler, /* 33: ext_irq Reserved */
|
|
};
|