SSBM Decomp
Loading...
Searching...
No Matches
OSInterrupt.h
Go to the documentation of this file.
1// https://github.com/kiwi515/open_rvl/blob/605e2a99ad053441f0ebb9b322a18433f92025e2/include/OS/OSInterrupt.h
2
3#ifndef _OS_INTERRUPT_H_
4#define _OS_INTERRUPT_H_
5
6#include <platform.h>
7#include <placeholder.h>
8
11
12#ifndef __MWERKS__
14#endif
15
16#define OS_INTRMASK_MEM_0 (0x80000000U >> OS_INTR_MEM_0)
17#define OS_INTRMASK_MEM_1 (0x80000000U >> OS_INTR_MEM_1)
18#define OS_INTRMASK_MEM_2 (0x80000000U >> OS_INTR_MEM_2)
19#define OS_INTRMASK_MEM_3 (0x80000000U >> OS_INTR_MEM_3)
20#define OS_INTRMASK_MEM_ADDRESS (0x80000000U >> OS_INTR_MEM_ADDRESS)
21#define OS_INTRMASK_DSP_AI (0x80000000U >> OS_INTR_DSP_AI)
22#define OS_INTRMASK_DSP_ARAM (0x80000000U >> OS_INTR_DSP_ARAM)
23#define OS_INTRMASK_DSP_DSP (0x80000000U >> OS_INTR_DSP_DSP)
24#define OS_INTRMASK_AI_AI (0x80000000U >> OS_INTR_AI_AI)
25#define OS_INTRMASK_EXI_0_EXI (0x80000000U >> OS_INTR_EXI_0_EXI)
26#define OS_INTRMASK_EXI_0_TC (0x80000000U >> OS_INTR_EXI_0_TC)
27#define OS_INTRMASK_EXI_0_EXT (0x80000000U >> OS_INTR_EXI_0_EXT)
28#define OS_INTRMASK_EXI_1_EXI (0x80000000U >> OS_INTR_EXI_1_EXI)
29#define OS_INTRMASK_EXI_1_TC (0x80000000U >> OS_INTR_EXI_1_TC)
30#define OS_INTRMASK_EXI_1_EXT (0x80000000U >> OS_INTR_EXI_1_EXT)
31#define OS_INTRMASK_EXI_2_EXI (0x80000000U >> OS_INTR_EXI_2_EXI)
32#define OS_INTRMASK_EXI_2_TC (0x80000000U >> OS_INTR_EXI_2_TC)
33#define OS_INTRMASK_PI_CP (0x80000000U >> OS_INTR_PI_CP)
34#define OS_INTRMASK_PI_PE_TOKEN (0x80000000U >> OS_INTR_PI_PE_TOKEN)
35#define OS_INTRMASK_PI_PE_FINISH (0x80000000U >> OS_INTR_PI_PE_FINISH)
36#define OS_INTRMASK_PI_SI (0x80000000U >> OS_INTR_PI_SI)
37#define OS_INTRMASK_PI_DI (0x80000000U >> OS_INTR_PI_DI)
38#define OS_INTRMASK_PI_RSW (0x80000000U >> OS_INTR_PI_RSW)
39#define OS_INTRMASK_PI_ERROR (0x80000000U >> OS_INTR_PI_ERROR)
40#define OS_INTRMASK_PI_VI (0x80000000U >> OS_INTR_PI_VI)
41#define OS_INTRMASK_PI_DEBUG (0x80000000U >> OS_INTR_PI_DEBUG)
42#define OS_INTRMASK_PI_HSP (0x80000000U >> OS_INTR_PI_HSP)
43
44#define OS_INTRMASK_MEM \
45 (OS_INTRMASK_MEM_0 | OS_INTRMASK_MEM_1 | OS_INTRMASK_MEM_2 | \
46 OS_INTRMASK_MEM_3 | OS_INTRMASK_MEM_ADDRESS)
47
48#define OS_INTRMASK_AI (OS_INTRMASK_AI_AI)
49
50#define OS_INTRMASK_DSP \
51 (OS_INTRMASK_DSP_AI | OS_INTRMASK_DSP_ARAM | OS_INTRMASK_DSP_DSP)
52
53#define OS_INTRMASK_EXI_0 \
54 (OS_INTRMASK_EXI_0_EXI | OS_INTRMASK_EXI_0_TC | OS_INTRMASK_EXI_0_EXT)
55#define OS_INTRMASK_EXI_1 \
56 (OS_INTRMASK_EXI_1_EXI | OS_INTRMASK_EXI_1_TC | OS_INTRMASK_EXI_1_EXT)
57#define OS_INTRMASK_EXI_2 (OS_INTRMASK_EXI_2_EXI | OS_INTRMASK_EXI_2_TC)
58#define OS_INTRMASK_EXI \
59 (OS_INTRMASK_EXI_0_EXI | OS_INTRMASK_EXI_0_TC | OS_INTRMASK_EXI_0_EXT | \
60 OS_INTRMASK_EXI_1_EXI | OS_INTRMASK_EXI_1_TC | OS_INTRMASK_EXI_1_EXT | \
61 OS_INTRMASK_EXI_2_EXI | OS_INTRMASK_EXI_2_TC)
62
63#define OS_INTRMASK_PI \
64 (OS_INTRMASK_PI_CP | OS_INTRMASK_PI_SI | OS_INTRMASK_PI_DI | \
65 OS_INTRMASK_PI_RSW | OS_INTRMASK_PI_ERROR | OS_INTRMASK_PI_VI | \
66 OS_INTRMASK_PI_PE_TOKEN | OS_INTRMASK_PI_PE_FINISH | \
67 OS_INTRMASK_PI_DEBUG | OS_INTRMASK_PI_HSP)
68
69#define OS_INTRMASK_PI_PE (OS_INTRMASK_PI_PE_TOKEN | OS_INTRMASK_PI_PE_FINISH)
70
107
109typedef void (*__OSInterruptHandler)(__OSInterrupt interrupt,
110 OSContext* context);
111
113
114extern volatile u32 __OSLastInterruptSrr0;
115extern volatile s16 __OSLastInterrupt;
116extern volatile s64 __OSLastInterruptTime;
117
119extern UNK_T lbl_804D738C;
120
123
124bool OSDisableInterrupts(void);
125bool OSEnableInterrupts(void);
126bool OSRestoreInterrupts(bool);
127
131
132void __OSInterruptInit(void);
133
136
138void __OSDispatchInterrupt(__OSException exception, OSContext* context);
139
140#endif
u8 __OSException
Definition OSException.h:13
void(* __OSInterruptHandler)(__OSInterrupt interrupt, OSContext *context)
Definition OSInterrupt.h:109
volatile s16 __OSLastInterrupt
Definition OSInterrupt.c:52
volatile s64 __OSLastInterruptTime
Definition OSInterrupt.c:51
volatile u32 __OSLastInterruptSrr0
Definition OSInterrupt.c:53
u32 __OSMaskInterrupts(u32)
Definition OSInterrupt.c:285
s16 __OSInterrupt
Definition OSInterrupt.h:108
bool OSEnableInterrupts(void)
Definition OSInterrupt.c:66
void __RAS_OSDisableInterrupts_end(void)
void __RAS_OSDisableInterrupts_begin(void)
__OSInterruptHandler __OSGetInterruptHandler(__OSInterrupt)
Definition OSInterrupt.c:105
void __OSInterruptInit(void)
Definition OSInterrupt.c:121
__OSInterruptHandler __OSSetInterruptHandler(__OSInterrupt, __OSInterruptHandler)
Definition OSInterrupt.c:97
bool OSRestoreInterrupts(bool)
Definition OSInterrupt.c:89
bool OSDisableInterrupts(void)
Definition OSInterrupt.c:45
OSInterruptType
Definition OSInterrupt.h:71
@ OS_INTR_EXI_2_EXI
Definition OSInterrupt.h:87
@ OS_INTR_EXI_0_TC
Definition OSInterrupt.h:82
@ OS_INTR_PI_HSP
Definition OSInterrupt.h:98
@ OS_INTR_PI_DI
Definition OSInterrupt.h:93
@ OS_INTR_MEM_ADDRESS
Definition OSInterrupt.h:76
@ OS_INTR_31
Definition OSInterrupt.h:103
@ OS_INTR_MEM_0
Definition OSInterrupt.h:72
@ OS_INTR_PI_VI
Definition OSInterrupt.h:96
@ OS_INTR_EXI_0_EXT
Definition OSInterrupt.h:83
@ OS_INTR_PI_DEBUG
Definition OSInterrupt.h:97
@ OS_INTR_PI_RSW
Definition OSInterrupt.h:94
@ OS_INTR_DSP_ARAM
Definition OSInterrupt.h:78
@ OS_INTR_PI_SI
Definition OSInterrupt.h:92
@ OS_INTR_PI_PE_TOKEN
Definition OSInterrupt.h:90
@ OS_INTR_MEM_3
Definition OSInterrupt.h:75
@ OS_INTR_AI_AI
Definition OSInterrupt.h:80
@ OS_INTR_EXI_1_EXI
Definition OSInterrupt.h:84
@ OS_INTR_PI_PE_FINISH
Definition OSInterrupt.h:91
@ OS_INTR_DSP_DSP
Definition OSInterrupt.h:79
@ OS_INTR_MEM_2
Definition OSInterrupt.h:74
@ OS_INTR_30
Definition OSInterrupt.h:102
@ OS_INTR_PI_CP
Definition OSInterrupt.h:89
@ OS_INTR_29
Definition OSInterrupt.h:101
@ OS_INTR_MEM_1
Definition OSInterrupt.h:73
@ OS_INTR_28
Definition OSInterrupt.h:100
@ OS_INTR_EXI_0_EXI
Definition OSInterrupt.h:81
@ OS_INTR_PI_ACR
Definition OSInterrupt.h:99
@ OS_INTR_EXI_1_TC
Definition OSInterrupt.h:85
@ OS_INTR_EXI_2_TC
Definition OSInterrupt.h:88
@ OS_INTR_DSP_AI
Definition OSInterrupt.h:77
@ OS_INTR_EXI_1_EXT
Definition OSInterrupt.h:86
@ OS_INTR_PI_ERROR
Definition OSInterrupt.h:95
@ OS_INTR_MAX
Definition OSInterrupt.h:105
u32 OSInterruptMask
Definition OSInterrupt.h:112
void __OSDispatchInterrupt(__OSException exception, OSContext *context)
Definition OSInterrupt.c:315
u32 __OSUnmaskInterrupts(u32)
Definition OSInterrupt.c:300
u32 SetInterruptMask(OSInterruptMask mask, OSInterruptMask current)
Definition OSInterrupt.c:132
UNK_T lbl_804D738C
static HSD_CObj * current
Definition cobj.c:28
#define UNK_T
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
signed long long s64
A signed 64-bit integer.
Definition platform.h:17
signed short s16
A signed 16-bit integer.
Definition platform.h:11
int mask
Definition state.c:133
Definition OSContext.h:133