HPM SDK
HPMicro Software Development Kit
trap.c File Reference
#include "hpm_common.h"
#include "hpm_soc.h"

Macros

#define MCAUSE_INSTR_ADDR_MISALIGNED   (0U) /* !< Instruction Address misaligned */
 
#define MCAUSE_INSTR_ACCESS_FAULT   (1U) /* !< Instruction access fault */
 
#define MCAUSE_ILLEGAL_INSTR   (2U) /* !< Illegal instruction */
 
#define MCAUSE_BREAKPOINT   (3U) /* !< Breakpoint */
 
#define MCAUSE_LOAD_ADDR_MISALIGNED   (4U) /* !< Load address misaligned */
 
#define MCAUSE_LOAD_ACCESS_FAULT   (5U) /* !< Load access fault */
 
#define MCAUSE_STORE_AMO_ADDR_MISALIGNED   (6U) /* !< Store/AMO address misaligned */
 
#define MCAUSE_STORE_AMO_ACCESS_FAULT   (7U) /* !< Store/AMO access fault */
 
#define MCAUSE_ECALL_FROM_USER_MODE   (8U) /* !< Environment call from User mode */
 
#define MCAUSE_ECALL_FROM_SUPERVISOR_MODE   (9U) /* !< Environment call from Supervisor mode */
 
#define MCAUSE_ECALL_FROM_MACHINE_MODE   (11U) /* !< Environment call from machine mode */
 
#define MCAUSE_INSTR_PAGE_FAULT   (12U) /* !< Instruction page fault */
 
#define MCAUSE_LOAD_PAGE_FAULT   (13) /* !< Load page fault */
 
#define MCAUSE_STORE_AMO_PAGE_FAULT   (15U) /* !< Store/AMO page fault */
 
#define IRQ_S_SOFT   1
 
#define IRQ_H_SOFT   2
 
#define IRQ_M_SOFT   3
 
#define IRQ_S_TIMER   5
 
#define IRQ_H_TIMER   6
 
#define IRQ_M_TIMER   7
 
#define IRQ_S_EXT   9
 
#define IRQ_H_EXT   10
 
#define IRQ_M_EXT   11
 
#define IRQ_COP   12
 
#define IRQ_HOST   13
 
#define IRQ_HANDLER_TRAP_AS_ISR   1
 
#define IRQ_HANDLER_TRAP_AS_ISR   1
 

Functions

HPM_ATTR_MACHINE_INTERRUPT void irq_handler_trap (void)
 
HPM_ATTR_SUPERVISOR_INTERRUPT void irq_handler_s_trap (void)
 

Macro Definition Documentation

◆ IRQ_COP

#define IRQ_COP   12

◆ IRQ_H_EXT

#define IRQ_H_EXT   10

◆ IRQ_H_SOFT

#define IRQ_H_SOFT   2

◆ IRQ_H_TIMER

#define IRQ_H_TIMER   6

◆ IRQ_HANDLER_TRAP_AS_ISR [1/2]

#define IRQ_HANDLER_TRAP_AS_ISR   1

◆ IRQ_HANDLER_TRAP_AS_ISR [2/2]

#define IRQ_HANDLER_TRAP_AS_ISR   1

◆ IRQ_HOST

#define IRQ_HOST   13

◆ IRQ_M_EXT

#define IRQ_M_EXT   11

◆ IRQ_M_SOFT

#define IRQ_M_SOFT   3

◆ IRQ_M_TIMER

#define IRQ_M_TIMER   7

◆ IRQ_S_EXT

#define IRQ_S_EXT   9

◆ IRQ_S_SOFT

#define IRQ_S_SOFT   1

◆ IRQ_S_TIMER

#define IRQ_S_TIMER   5

◆ MCAUSE_BREAKPOINT

#define MCAUSE_BREAKPOINT   (3U) /* !< Breakpoint */

◆ MCAUSE_ECALL_FROM_MACHINE_MODE

#define MCAUSE_ECALL_FROM_MACHINE_MODE   (11U) /* !< Environment call from machine mode */

◆ MCAUSE_ECALL_FROM_SUPERVISOR_MODE

#define MCAUSE_ECALL_FROM_SUPERVISOR_MODE   (9U) /* !< Environment call from Supervisor mode */

◆ MCAUSE_ECALL_FROM_USER_MODE

#define MCAUSE_ECALL_FROM_USER_MODE   (8U) /* !< Environment call from User mode */

◆ MCAUSE_ILLEGAL_INSTR

#define MCAUSE_ILLEGAL_INSTR   (2U) /* !< Illegal instruction */

◆ MCAUSE_INSTR_ACCESS_FAULT

#define MCAUSE_INSTR_ACCESS_FAULT   (1U) /* !< Instruction access fault */

◆ MCAUSE_INSTR_ADDR_MISALIGNED

#define MCAUSE_INSTR_ADDR_MISALIGNED   (0U) /* !< Instruction Address misaligned */

◆ MCAUSE_INSTR_PAGE_FAULT

#define MCAUSE_INSTR_PAGE_FAULT   (12U) /* !< Instruction page fault */

◆ MCAUSE_LOAD_ACCESS_FAULT

#define MCAUSE_LOAD_ACCESS_FAULT   (5U) /* !< Load access fault */

◆ MCAUSE_LOAD_ADDR_MISALIGNED

#define MCAUSE_LOAD_ADDR_MISALIGNED   (4U) /* !< Load address misaligned */

◆ MCAUSE_LOAD_PAGE_FAULT

#define MCAUSE_LOAD_PAGE_FAULT   (13) /* !< Load page fault */

◆ MCAUSE_STORE_AMO_ACCESS_FAULT

#define MCAUSE_STORE_AMO_ACCESS_FAULT   (7U) /* !< Store/AMO access fault */

◆ MCAUSE_STORE_AMO_ADDR_MISALIGNED

#define MCAUSE_STORE_AMO_ADDR_MISALIGNED   (6U) /* !< Store/AMO address misaligned */

◆ MCAUSE_STORE_AMO_PAGE_FAULT

#define MCAUSE_STORE_AMO_PAGE_FAULT   (15U) /* !< Store/AMO page fault */

Function Documentation

◆ irq_handler_s_trap()

void irq_handler_s_trap ( void  )

◆ irq_handler_trap()

HPM_ATTR_MACHINE_INTERRUPT void irq_handler_trap ( void  )