summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergi Granell2018-02-10 11:57:50 +0100
committerSunguk Lee2018-02-10 23:13:49 +0900
commita3ee103b9a3864edc6fc8a8acd2f4a62b8365be5 (patch)
tree72a3c31c9330d9eae1453a5d9144986b39e99784
parentMerge pull request #291 from xerpi/kernelcond (diff)
downloadvds-libraries-a3ee103b9a3864edc6fc8a8acd2f4a62b8365be5.tar.gz
Update kernel/intrmgr.h
Diffstat (limited to '')
-rw-r--r--include/kernel/kernel/intrmgr.h37
-rw-r--r--nids/360/SceKernelIntrMgr.yml3
2 files changed, 24 insertions, 16 deletions
diff --git a/include/kernel/kernel/intrmgr.h b/include/kernel/kernel/intrmgr.h
index ca11136..22028c8 100644
--- a/include/kernel/kernel/intrmgr.h
+++ b/include/kernel/kernel/intrmgr.h
@@ -7,32 +7,34 @@
extern "C" {
#endif
-typedef int (*SceKernelIntrOptParam2Callback)(int intr_code, int subintr_code);
+typedef int (*SceKernelIntrHandler)(int unk, void *userCtx);
+typedef int (*SceKernelSubIntrHandler)(void *subintr_arg, void *register_arg, unsigned char intr_priority);
+
+typedef int (*SceKernelIntrOptHandlersCb1)(int intr_code, int subintr_code);
+typedef int (*SceKernelIntrOptHandlersCb2)(int intr_code, int subintr_code, void *arg);
+typedef int (*SceKernelIntrOptHandlersCb3)(int intr_code, int subintr_code, SceKernelSubIntrHandler handler, void *register_arg);
-typedef struct SceKernelIntrOptParam2 {
+typedef struct SceKernelIntrOptHandlers {
uint32_t size; // 0x28
- uint32_t unk_4;
- uint32_t unk_8;
- uint32_t unk_C;
- SceKernelIntrOptParam2Callback *fptr0; // function pointer
- SceKernelIntrOptParam2Callback *enable_subinterrupt_cb;
- SceKernelIntrOptParam2Callback *fptr2; // function pointer
- uint32_t unk_1C;
- uint32_t unk_20;
- uint32_t unk_24;
+ SceKernelIntrOptHandlersCb3 *pre_register_subintr_cb;
+ SceKernelIntrOptHandlersCb3 *post_register_subintr_cb;
+ SceKernelIntrOptHandlersCb1 *release_subintr_cb;
+ SceKernelIntrOptHandlersCb1 *fptr0;
+ SceKernelIntrOptHandlersCb1 *enable_subintr_cb;
+ SceKernelIntrOptHandlersCb1 *disable_subintr_cb;
+ SceKernelIntrOptHandlersCb2 *fptr3;
+ SceKernelIntrOptHandlersCb1 *fptr4;
+ SceKernelIntrOptHandlersCb1 *fptr5;
} SceKernelIntrOptParam2;
typedef struct SceKernelIntrOptParam {
uint32_t size; // 0x14
uint32_t num;
- SceKernelIntrOptParam2 *opt2;
+ SceKernelIntrOptHandlers *handlers;
uint32_t unk_C;
uint32_t unk_10;
} SceKernelIntrOptParam;
-typedef int (*SceKernelIntrHandler)(int unk, void *userCtx);
-typedef int (*SceKernelSubIntrHandler)(void *arg, int unk0, int unk1);
-
int sceKernelRegisterIntrHandler(int intr_code, const char *name, int interrupt_type,
SceKernelIntrHandler *handler, void *userCtx, int priority, int targetcpu, SceKernelIntrOptParam *opt);
int sceKernelReleaseIntrHandler(int intr_code);
@@ -42,12 +44,15 @@ int sceKernelSetIntrMasked(int intr_code, int masked);
int sceKernelGetIntrMasked(int intr_code, int *masked);
int sceKernelIsIntrPending(int intr_code);
int sceKernelClearIntrPending(int intr_code);
-int sceKernelSetIntrPriority(int intr_code, unsigned char priority);
+int sceKernelSetIntrPriority(int intr_code, int priority);
+int sceKernelGetIntrPriority(int intr_code, int *priority);
int sceKernelSetIntrTarget(int intr_code, int cpu_target_list);
+int sceKernelGetIntrTarget(int intr_code, int *cpu_target_list);
int sceKernelTriggerSGI(int intr_code, unsigned int target_list_filter, unsigned int cpu_target_list);
int sceKernelIsIntrAllowedInCurrentContext(int intr_code);
int sceKernelRegisterSubIntrHandler(int intr_code, int subintr_code, const char *name,
SceKernelSubIntrHandler handler, void *register_arg);
+int sceKernelReleaseSubIntrHandler(int intr_code, int subintr_code);
int sceKernelTriggerSubIntr(int intr_code, int subintr_code, void *subintr_arg);
int sceKernelEnableSubIntr(int intr_code, int subintr_code);
int sceKernelDisableSubIntr(int intr_code, int subintr_code);
diff --git a/nids/360/SceKernelIntrMgr.yml b/nids/360/SceKernelIntrMgr.yml
index 1164649..61fe5fe 100644
--- a/nids/360/SceKernelIntrMgr.yml
+++ b/nids/360/SceKernelIntrMgr.yml
@@ -9,12 +9,15 @@ modules:
sceKernelDisableSubIntr: 0x259C6D9E
sceKernelEnableSubIntr: 0x901E41D8
sceKernelGetIntrMasked: 0x6EC07C56
+ sceKernelGetIntrPriority: 0xE427D050
+ sceKernelGetIntrTarget: 0x353CFAAE
sceKernelIsIntrAllowedInCurrentContext: 0x182EE3E3
sceKernelIsIntrPending: 0xA269003D
sceKernelMaskIntr: 0x180435EC
sceKernelRegisterIntrHandler: 0x5C1FEB29
sceKernelRegisterSubIntrHandler: 0x96576C18
sceKernelReleaseIntrHandler: 0xD6009B98
+ sceKernelReleaseSubIntrHandler: 0x7B9657B3
sceKernelSetIntrMasked: 0x7117E827
sceKernelSetIntrPriority: 0x71020E29
sceKernelSetIntrTarget: 0x973BACCC