83#define REG_BYTE_CNT 256
117#define CONTEXT_PC(c) ((c).pc)
123#define CONTEXT_FP(c) ((c).r[14])
129#define CONTEXT_SP(c) ((c).r[15])
135#define CONTEXT_RET(c) ((c).r[0])
233#define IRQ_TRAP_CODE(code) (irq_t)(EXC_TRAP + (code))
241 __asm__
volatile(
"ldc %0, sr" : :
"r" (old));
247 __asm__
volatile(
"stc sr, %0" :
"=r" (mask));
256 __asm__
volatile(
"stc sr, %0" :
"=r" (mask));
271 uintptr_t stack_pointer,
273 const uintptr_t *args);
294#define IRQ_PRIO_MAX 15
295#define IRQ_PRIO_MIN 1
296#define IRQ_PRIO_MASKED 0
302typedef enum irq_src {
void hnd(const char *file, int line, const char *expr, const char *msg, const char *func)
Definition asserthnd.c:53
static struct @68 data[BARRIER_COUNT]
static float r
Definition bubbles.c:95
static pvr_poly_cxt_t cxt
Definition bubbles.c:28
Various common macros used throughout the codebase.
irq_context_t * arch_irq_get_context(void)
void arch_irq_create_context(irq_context_t *context, uintptr_t stack_pointer, uintptr_t routine, const uintptr_t *args)
int arch_irq_set_handler(irq_t code, irq_hdl_t hnd, void *data)
irq_cb_t arch_irq_get_global_handler(void)
int arch_irq_set_global_handler(irq_hdl_t hnd, void *data)
void arch_irq_set_context(irq_context_t *cxt)
irq_cb_t arch_irq_get_handler(irq_t code)
static void arch_irq_restore(irq_mask_t old)
Definition irq.h:240
irq_src_t
Interrupt sources.
Definition irq.h:302
void irq_set_priority(irq_src_t src, unsigned int prio)
Set the priority of a given IRQ source.
static int arch_irq_inside_int(void)
Definition irq.h:236
irq_exception
Interrupt exception codes.
Definition irq.h:163
unsigned int irq_get_priority(irq_src_t src)
Get the priority of a given IRQ source.
static void arch_irq_enable(void)
Definition irq.h:253
static irq_mask_t arch_irq_disable(void)
Definition irq.h:244
@ IRQ_SRC_IRL2
Definition irq.h:316
@ IRQ_SRC_REF
Definition irq.h:309
@ IRQ_SRC_TMU1
Definition irq.h:305
@ IRQ_SRC_GPIO
Definition irq.h:314
@ IRQ_SRC_RTC
Definition irq.h:303
@ IRQ_SRC_WDT
Definition irq.h:310
@ IRQ_SRC_TMU2
Definition irq.h:304
@ IRQ_SRC_TMU0
Definition irq.h:306
@ IRQ_SRC_HUDI
Definition irq.h:311
@ IRQ_SRC_IRL3
Definition irq.h:315
@ IRQ_SRC_IRL0
Definition irq.h:318
@ IRQ_SRC_DMAC
Definition irq.h:313
@ _IRQ_SRC_RESV
Definition irq.h:307
@ IRQ_SRC_SCIF
Definition irq.h:312
@ IRQ_SRC_SCI1
Definition irq.h:308
@ IRQ_SRC_IRL1
Definition irq.h:317
@ EXC_SCIF_TXI
[POST ] SCIF Transmit ready
Definition irq.h:227
@ EXC_TMU1_TUNI1
[POST ] TMU1 underflow
Definition irq.h:204
@ EXC_UNHANDLED_EXC
[SOFT ] Exception went unhandled
Definition irq.h:229
@ EXC_DTLB_MISS_READ
[REEXEC] Data TLB miss (read)
Definition irq.h:179
@ EXC_TMU2_TUNI2
[POST ] TMU2 underflow
Definition irq.h:205
@ EXC_DATA_ADDRESS_READ
[REEXEC] Data address (read)
Definition irq.h:177
@ EXC_DMAC_DMTE2
[POST ] DMAC transfer end (channel 2)
Definition irq.h:221
@ EXC_DTLB_MULTIPLE
[RESET ] Data TLB multiple hit
Definition irq.h:168
@ EXC_DTLB_PV_READ
[REEXEC] Data TLB protection violation (read)
Definition irq.h:181
@ EXC_ITLB_MISS
[REEXEC] Instruction TLB miss
Definition irq.h:171
@ EXC_SCI_ERI
[UNUSED] SCI Error receive
Definition irq.h:210
@ EXC_DMAC_DMTE1
[POST ] DMAC transfer end (channel 1)
Definition irq.h:220
@ EXC_IRQ9
[POST ] External IRQ request (level 9)
Definition irq.h:197
@ EXC_IRQ0
[POST ] External IRQ request (level 0)
Definition irq.h:188
@ EXC_INSTR_ADDRESS
[REEXEC] Instruction address
Definition irq.h:170
@ EXC_REF_RCMI
[POST ] Memory refresh compare-match interrupt
Definition irq.h:215
@ EXC_DMAC_DMTE0
[POST ] DMAC transfer end (channel 0)
Definition irq.h:219
@ EXC_ITLB_MULTIPLE
[RESET ] Instruction TLB multiple hit
Definition irq.h:167
@ EXC_IRQ7
[POST ] External IRQ request (level 7)
Definition irq.h:195
@ EXC_INITIAL_PAGE_WRITE
[REEXEC] Initial page write exception
Definition irq.h:184
@ EXC_DTLB_MISS_WRITE
[REEXEC] Data TLB miss (write)
Definition irq.h:180
@ EXC_SLOT_FPU
[REEXEC] Slot FPU exception
Definition irq.h:176
@ EXC_IRQA
[POST ] External IRQ request (level 10)
Definition irq.h:198
@ EXC_RESET_POWERON
[RESET ] Power-on reset
Definition irq.h:164
@ EXC_IRQ4
[POST ] External IRQ request (level 4)
Definition irq.h:192
@ EXC_IRQD
[POST ] External IRQ request (level 13)
Definition irq.h:201
@ EXC_RTC_ATI
[UNUSED] RTC alarm interrupt
Definition irq.h:207
@ EXC_RESET_MANUAL
[RESET ] Manual reset
Definition irq.h:165
@ EXC_DOUBLE_FAULT
[SOFT ] Exception happened in an ISR
Definition irq.h:228
@ EXC_DMAC_DMTE3
[POST ] DMAC transfer end (channel 3)
Definition irq.h:222
@ EXC_ILLEGAL_INSTR
[REEXEC] Illegal instruction
Definition irq.h:173
@ EXC_FPU
[REEXEC] FPU exception
Definition irq.h:183
@ EXC_IRQ8
[POST ] External IRQ request (level 8)
Definition irq.h:196
@ EXC_IRQC
[POST ] External IRQ request (level 12)
Definition irq.h:200
@ EXC_TMU0_TUNI0
[POST ] TMU0 underflow
Definition irq.h:203
@ EXC_IRQ1
[POST ] External IRQ request (level 1)
Definition irq.h:189
@ EXC_RTC_PRI
[UNUSED] RTC periodic interrupt
Definition irq.h:208
@ EXC_GPIO_GPIOI
[POST ] I/O port interrupt
Definition irq.h:218
@ EXC_DATA_ADDRESS_WRITE
[REEXEC] Data address (write)
Definition irq.h:178
@ EXC_IRQ6
[POST ] External IRQ request (level 6)
Definition irq.h:194
@ EXC_DMA_DMAE
[POST ] DMAC address error
Definition irq.h:223
@ EXC_REF_ROVI
[POST ] Memory refresh counter overflow interrupt
Definition irq.h:216
@ EXC_IRQ5
[POST ] External IRQ request (level 5)
Definition irq.h:193
@ EXC_SLOT_ILLEGAL_INSTR
[REEXEC] Slot illegal instruction
Definition irq.h:174
@ EXC_WDT_ITI
[POST ] Watchdog timer
Definition irq.h:214
@ EXC_IRQ2
[POST ] External IRQ request (level 2)
Definition irq.h:190
@ EXC_SCI_TXI
[UNUSED] SCI Transmit ready
Definition irq.h:212
@ EXC_ITLB_PV
[REEXEC] Instruction TLB protection violation
Definition irq.h:172
@ EXC_SCIF_BRI
[POST ] SCIF break
Definition irq.h:226
@ EXC_IRQB
[POST ] External IRQ request (level 11)
Definition irq.h:199
@ EXC_USER_BREAK_PRE
[REEXEC] User break before instruction
Definition irq.h:169
@ EXC_NMI
[POST ] Nonmaskable interrupt
Definition irq.h:187
@ EXC_RESET_UDI
[RESET ] Hitachi UDI reset
Definition irq.h:166
@ EXC_USER_BREAK_POST
[POST ] User break after instruction
Definition irq.h:186
@ EXC_SCIF_RXI
[POST ] SCIF Receive ready
Definition irq.h:225
@ EXC_DTLB_PV_WRITE
[REEXEC] Data TLB protection violation (write)
Definition irq.h:182
@ EXC_IRQ3
[POST ] External IRQ request (level 3)
Definition irq.h:191
@ EXC_TRAP
[TRAP ] Trap
Definition irq.h:230
@ EXC_TMU2_TICPI2
[UNUSED] TMU2 input capture
Definition irq.h:206
@ EXC_GENERAL_FPU
[REEXEC] General FPU exception
Definition irq.h:175
@ EXC_TRAPA
[POST ] Unconditional trap (TRAPA)
Definition irq.h:185
@ EXC_SCIF_ERI
[POST ] SCIF Error receive
Definition irq.h:224
@ EXC_SCI_RXI
[UNUSED] SCI Receive ready
Definition irq.h:211
@ EXC_UDI
[POST ] Hitachi UDI
Definition irq.h:217
@ EXC_SCI_TEI
[UNUSED] SCI Transmit error
Definition irq.h:213
@ EXC_IRQE
[POST ] External IRQ request (level 14)
Definition irq.h:202
@ EXC_RTC_CUI
[UNUSED] RTC carry interrupt
Definition irq.h:209
enum irq_exception irq_t
Architecture-specific interrupt exception codes.
Definition irq.h:51
uint32_t irq_mask_t
Type representing an interrupt mask state.
Definition irq.h:54
void(* irq_hdl_t)(irq_t code, irq_context_t *context, void *data)
The type of an IRQ handler.
Definition irq.h:62
The type of a full callback of an IRQ handler and userdata.
Definition irq.h:69
Architecture-specific structure for holding the processor state.
Definition irq.h:94
uint32_t fpul
Floating-point communication register.
Definition irq.h:102
uint32_t sr
Status register.
Definition irq.h:101
uint32_t mach
Multiply-and-accumulate register (high)
Definition irq.h:99
uint32_t fpscr
Floating-point status/control register.
Definition irq.h:106
uint32_t macl
Multiply-and-accumulate register (low)
Definition irq.h:100
uint32_t vbr
Vector base register.
Definition irq.h:98
uint32_t pc
Program counter.
Definition irq.h:95
uint32_t gbr
Global base register (TLS segment ptr)
Definition irq.h:97
uint32_t pr
Procedure register (aka return address)
Definition irq.h:96