thermosphere: pause at start, some cleanup, etc.

This commit is contained in:
TuxSH 2020-01-31 23:23:41 +00:00
parent b929d76009
commit 3190d971a1
4 changed files with 7 additions and 13 deletions

View file

@ -79,6 +79,7 @@ void debugManagerInit(TransportInterfaceType gdbIfaceType, u32 gdbIfaceId, u32 g
{
memset(&g_debugManager, 0, sizeof(DebugManager));
GDB_InitializeContext(&g_gdbContext, gdbIfaceType, gdbIfaceId, gdbIfaceFlags);
GDB_MigrateRxIrq(&g_gdbContext, BIT(currentCoreCtx->coreId));
}
bool debugManagerHandlePause(void)
@ -95,8 +96,7 @@ bool debugManagerHandlePause(void)
if (!g_debugManager.debugEventInfos[coreId].handled) {
// Do we still have an unhandled debug event?
// TODO build
//GDB_TrySignalDebugEvent(&g_gdbContext, &g_debugManager.debugEventInfos[coreId]);
GDB_TrySignalDebugEvent(&g_gdbContext, &g_debugManager.debugEventInfos[coreId]);
return false;
}
}
@ -203,7 +203,7 @@ void debugManagerReportEvent(DebugEventType type, ...)
exceptionEnterInterruptibleHypervisorCode();
unmaskIrq();
// TODO GDB_TrySignalDebugEvent(&g_gdbContext, info);
GDB_TrySignalDebugEvent(&g_gdbContext, info);
restoreInterruptFlags(flags);
}

View file

@ -108,13 +108,6 @@ static int GDB_ProcessPacket(GDBContext *ctx, size_t len)
return -1;
}
if ((oldFlags & GDB_FLAG_CONTINUING) && !(ctx->flags & GDB_FLAG_CONTINUING)) {
// TODO
}
else if (!(oldFlags & GDB_FLAG_CONTINUING) && (ctx->flags & GDB_FLAG_CONTINUING)) {
// TODO
}
return ret;
}
@ -145,7 +138,6 @@ static void GDB_Disconnect(GDBContext *ctx)
ctx->processExited = false;
ctx->noAckSent = false;
// TODO memset(&ctx->latestDebugEvent, 0, sizeof(DebugEventInfo));
ctx->currentHioRequestTargetAddr = 0;
memset(&ctx->currentHioRequest, 0, sizeof(PackedGdbHioRequest));

View file

@ -88,7 +88,7 @@ GDB_DECLARE_QUERY_HANDLER(Supported)
// TODO!
return GDB_SendFormattedPacket(ctx,
"PacketSize=%x;"
"qXfer:features:read+;qXfer:osdata:read+;"
"qXfer:features:read+;"
"QStartNoAckMode+;QThreadEvents+"
"vContSupported+;swbreak+;hwbreak+",

View file

@ -100,7 +100,7 @@ void thermosphereMain(ExceptionStackFrame *frame, u64 pct)
if (currentCoreCtx->isBootCore) {
transportInterfaceInitLayer();
debugLogInit();
test();
//test();
debugManagerInit(TRANSPORT_INTERFACE_TYPE_UART, DEFAULT_UART, DEFAULT_UART_FLAGS);
DEBUG("EL2: core %u reached main first!\n", currentCoreCtx->coreId);
}
@ -136,5 +136,7 @@ void thermosphereMain(ExceptionStackFrame *frame, u64 pct)
if (!currentCoreCtx->isBootCore) {
debugManagerReportEvent(DBGEVENT_CORE_ON);
} else {
debugManagerPauseCores(BIT(currentCoreCtx->coreId));
}
}