From 5177661447d16a4e454fb90af29cc1b44b1ee395 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Thu, 7 Aug 2025 16:36:46 -0700 Subject: [PATCH] XenonUtils: Use big endian for XRTL_CRITICAL_SECTION fields. --- XenonUtils/xbox.h | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/XenonUtils/xbox.h b/XenonUtils/xbox.h index 0361b0f..226e9f4 100644 --- a/XenonUtils/xbox.h +++ b/XenonUtils/xbox.h @@ -93,6 +93,32 @@ struct be set(v); return *this; } + + be& operator++ () + { + set(get() + 1); + return *this; + } + + be operator++ (int) + { + be old = *this; + set(get() + 1); + return old; + } + + be& operator-- () + { + set(get() - 1); + return *this; + } + + be operator-- (int) + { + be old = *this; + set(get() - 1); + return old; + } }; extern "C" void* MmGetHostAddress(uint32_t ptr); @@ -198,13 +224,12 @@ typedef struct _XDISPATCHER_HEADER XLIST_ENTRY WaitListHead; } XDISPATCHER_HEADER, * XPDISPATCHER_HEADER; -// These variables are never accessed in guest code, we can safely use them in little endian typedef struct _XRTL_CRITICAL_SECTION { XDISPATCHER_HEADER Header; - int32_t LockCount; - int32_t RecursionCount; - uint32_t OwningThread; + be LockCount; + be RecursionCount; + be OwningThread; } XRTL_CRITICAL_SECTION; typedef struct _XANSI_STRING {