mirror of
https://github.com/zeldaret/tp
synced 2026-06-07 20:11:27 -04:00
2453c0e333
* move dolsdk2004 over * cleanup some temp work * finish and cleanup gf * b_bh done * d_a_e_mb done
60 lines
1.4 KiB
C
60 lines
1.4 KiB
C
#include <dolphin/base/PPCArch.h>
|
|
#include <dolphin/db.h>
|
|
#include <dolphin/os.h>
|
|
|
|
u8 DBStack[0x1000];
|
|
u8* DBStackEnd = DBStack + (sizeof(DBStack) - 8);
|
|
BOOL DBVerbose;
|
|
DBInterface* __DBInterface;
|
|
|
|
void DBInit(void) {
|
|
__DBInterface = OSPhysicalToCached(0x40);
|
|
__DBInterface->ExceptionDestination = (void *)OSCachedToPhysical(__DBExceptionDestination);
|
|
DBVerbose = TRUE;
|
|
}
|
|
|
|
BOOL DBIsDebuggerPresent(void) {
|
|
if (__DBInterface == NULL)
|
|
return FALSE;
|
|
return __DBInterface->bPresent;
|
|
}
|
|
|
|
void __DBExceptionDestinationAux(void) {
|
|
u32* contextAddr;
|
|
OSContext* context;
|
|
|
|
contextAddr = (void*)0xC0;
|
|
context = OSPhysicalToCached(*contextAddr);
|
|
OSReport("DBExceptionDestination\n");
|
|
OSDumpContext(context);
|
|
PPCHalt();
|
|
}
|
|
|
|
asm void __DBExceptionDestination(void) {
|
|
nofralloc
|
|
mfmsr r3
|
|
ori r3, r3, 0x30
|
|
mtmsr r3
|
|
b __DBExceptionDestinationAux
|
|
}
|
|
|
|
BOOL __DBIsExceptionMarked(__OSException exception) {
|
|
u32 mask = (1 << exception);
|
|
return __DBInterface->exceptionMask & mask;
|
|
}
|
|
|
|
void __DBMarkException(__OSException exception, int value) {
|
|
u32 mask = (1 << exception);
|
|
|
|
if (value != 0)
|
|
__DBInterface->exceptionMask = __DBInterface->exceptionMask | mask;
|
|
else
|
|
__DBInterface->exceptionMask = __DBInterface->exceptionMask & ~mask;
|
|
}
|
|
|
|
void __DBSetPresent(u32 value) {
|
|
__DBInterface->bPresent = value;
|
|
}
|
|
|
|
void DBPrintf(char* str, ...) {}
|