mirror of
https://github.com/zeldaret/ss
synced 2026-05-24 23:21:41 -04:00
26af4db82d
* update from dtk-template and start work towards using clangd * include <a> -> "a" * Update build.yml * remove/add non-trivial class in union warning
77 lines
1.6 KiB
C
77 lines
1.6 KiB
C
#ifndef RVL_SDK_OS_INTERRUPT_H
|
|
#define RVL_SDK_OS_INTERRUPT_H
|
|
#include "common.h"
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// Forward declarations
|
|
typedef struct OSContext;
|
|
|
|
// Create mask from interrupt ID
|
|
#define OS_INTR_MASK(intr) (1 << (31 - intr))
|
|
|
|
typedef enum {
|
|
OS_INTR_MEM_0,
|
|
OS_INTR_MEM_1,
|
|
OS_INTR_MEM_2,
|
|
OS_INTR_MEM_3,
|
|
OS_INTR_MEM_ADDRESS,
|
|
OS_INTR_DSP_AI,
|
|
OS_INTR_DSP_ARAM,
|
|
OS_INTR_DSP_DSP,
|
|
OS_INTR_AI_AI,
|
|
OS_INTR_EXI_0_EXI,
|
|
OS_INTR_EXI_0_TC,
|
|
OS_INTR_EXI_0_EXT,
|
|
OS_INTR_EXI_1_EXI,
|
|
OS_INTR_EXI_1_TC,
|
|
OS_INTR_EXI_1_EXT,
|
|
OS_INTR_EXI_2_EXI,
|
|
OS_INTR_EXI_2_TC,
|
|
OS_INTR_PI_CP,
|
|
OS_INTR_PI_PE_TOKEN,
|
|
OS_INTR_PI_PE_FINISH,
|
|
OS_INTR_PI_SI,
|
|
OS_INTR_PI_DI,
|
|
OS_INTR_PI_RSW,
|
|
OS_INTR_PI_ERROR,
|
|
OS_INTR_PI_VI,
|
|
OS_INTR_PI_DEBUG,
|
|
OS_INTR_PI_HSP,
|
|
OS_INTR_PI_ACR,
|
|
OS_INTR_28,
|
|
OS_INTR_29,
|
|
OS_INTR_30,
|
|
OS_INTR_31,
|
|
|
|
OS_INTR_MAX
|
|
} OSInterruptType;
|
|
|
|
typedef void (*OSInterruptHandler)(s16 intr, struct OSContext *ctx);
|
|
|
|
extern u32 __OSLastInterruptSrr0;
|
|
extern s16 __OSLastInterrupt;
|
|
extern s64 __OSLastInterruptTime;
|
|
|
|
BOOL OSDisableInterrupts(void);
|
|
BOOL OSEnableInterrupts(void);
|
|
BOOL OSRestoreInterrupts(BOOL status);
|
|
|
|
OSInterruptHandler __OSSetInterruptHandler(OSInterruptType type, OSInterruptHandler handler);
|
|
OSInterruptHandler __OSGetInterruptHandler(OSInterruptType type);
|
|
|
|
void __OSInterruptInit(void);
|
|
|
|
u32 __OSMaskInterrupts(u32 userMask);
|
|
u32 __OSUnmaskInterrupts(u32 userMask);
|
|
void __OSDispatchInterrupt(u8 intr, struct OSContext *ctx);
|
|
|
|
void __RAS_OSDisableInterrupts_begin(void);
|
|
void __RAS_OSDisableInterrupts_end(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|