diff options
author | Sergi Granell | 2018-02-10 11:57:50 +0100 |
---|---|---|
committer | Sunguk Lee | 2018-02-10 23:13:49 +0900 |
commit | a3ee103b9a3864edc6fc8a8acd2f4a62b8365be5 (patch) | |
tree | 72a3c31c9330d9eae1453a5d9144986b39e99784 | |
parent | Merge pull request #291 from xerpi/kernelcond (diff) | |
download | vds-libraries-a3ee103b9a3864edc6fc8a8acd2f4a62b8365be5.tar.gz |
Update kernel/intrmgr.h
Diffstat (limited to '')
-rw-r--r-- | include/kernel/kernel/intrmgr.h | 37 | ||||
-rw-r--r-- | nids/360/SceKernelIntrMgr.yml | 3 |
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 |