From 66ba05b302005865def472048395be6b7fd877ec Mon Sep 17 00:00:00 2001 From: TuxSH <1922548+TuxSH@users.noreply.github.com> Date: Fri, 31 Jan 2020 23:23:41 +0000 Subject: [PATCH] thermosphere: pause at start, some cleanup, etc. --- thermosphere/src/debug_manager.c | 6 +++--- thermosphere/src/gdb/context.c | 8 -------- thermosphere/src/gdb/query.c | 2 +- thermosphere/src/main.c | 4 +++- 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/thermosphere/src/debug_manager.c b/thermosphere/src/debug_manager.c index b7d35a78d..1be8c75b3 100644 --- a/thermosphere/src/debug_manager.c +++ b/thermosphere/src/debug_manager.c @@ -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); } diff --git a/thermosphere/src/gdb/context.c b/thermosphere/src/gdb/context.c index 13373b0d7..5c7868c16 100644 --- a/thermosphere/src/gdb/context.c +++ b/thermosphere/src/gdb/context.c @@ -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)); diff --git a/thermosphere/src/gdb/query.c b/thermosphere/src/gdb/query.c index 09f18861a..9a5e29af2 100644 --- a/thermosphere/src/gdb/query.c +++ b/thermosphere/src/gdb/query.c @@ -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+", diff --git a/thermosphere/src/main.c b/thermosphere/src/main.c index 0ad547582..8aa9abac7 100644 --- a/thermosphere/src/main.c +++ b/thermosphere/src/main.c @@ -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)); } }