mirror of https://github.com/zeldaret/mm.git
hardwareinterrupt
This commit is contained in:
parent
ec1e7a0f5e
commit
d3081239d3
|
|
@ -40,8 +40,8 @@ OSIntMask osSetIntMask(OSIntMask im);
|
|||
|
||||
|
||||
// Internal
|
||||
void __osSetHWIntrRoutine(OSHWIntr idx, OSMesgQueue* queue, OSMesg msg);
|
||||
void __osGetHWIntrRoutine(OSHWIntr idx, OSMesgQueue** outQueue, OSMesg* outMsg);
|
||||
void __osSetHWIntrRoutine(OSHWIntr interrupt, s32 (*handler)(void), void* stackEnd);
|
||||
void __osGetHWIntrRoutine(OSHWIntr interrupt, s32 (**handler)(void), void** stackEnd);
|
||||
void __osSetGlobalIntMask(OSHWIntr mask);
|
||||
void __osResetGlobalIntMask(OSHWIntr mask);
|
||||
|
||||
|
|
|
|||
|
|
@ -5,10 +5,9 @@
|
|||
#include "os_message.h"
|
||||
#include "os_pi.h"
|
||||
|
||||
|
||||
typedef struct __osHwInt {
|
||||
/* 0x00 */ OSMesgQueue* queue;
|
||||
/* 0x04 */ OSMesg msg;
|
||||
/* 0x00 */ s32 (*handler)(void);
|
||||
/* 0x04 */ void* stackEnd;
|
||||
} __osHwInt; // size = 0x08
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#include "PR/os_internal.h"
|
||||
#include "PR/osint.h"
|
||||
|
||||
void __osGetHWIntrRoutine(OSHWIntr interrupt, OSMesgQueue** outQueue, OSMesg* outMsg) {
|
||||
*outQueue = __osHwIntTable[interrupt].queue;
|
||||
*outMsg = __osHwIntTable[interrupt].msg;
|
||||
void __osGetHWIntrRoutine(OSHWIntr interrupt, s32 (**handler)(void), void** stackEnd) {
|
||||
*handler = __osHwIntTable[interrupt].handler;
|
||||
*stackEnd = __osHwIntTable[interrupt].stackEnd;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
#include "global.h"
|
||||
#include "PR/os_internal.h"
|
||||
#include "PR/osint.h"
|
||||
|
||||
void __osSetHWIntrRoutine(OSHWIntr idx, OSMesgQueue* queue, OSMesg msg) {
|
||||
void __osSetHWIntrRoutine(OSHWIntr interrupt, s32 (*handler)(void), void* stackEnd) {
|
||||
register s32 prevInt = __osDisableInt();
|
||||
|
||||
__osHwIntTable[idx].queue = queue;
|
||||
__osHwIntTable[idx].msg = msg;
|
||||
__osHwIntTable[interrupt].handler = handler;
|
||||
__osHwIntTable[interrupt].stackEnd = stackEnd;
|
||||
|
||||
__osRestoreInt(prevInt);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue