hrev44321 adds 1 changeset to branch 'master' old head: 8c51cca27ef0f61a7b0b99c2179ca77e0b5c25a2 new head: 7dc738b0fb075b6eedc27e1efddb5661c085c7d8 ---------------------------------------------------------------------------- 7dc738b: Fixed ordering of registers in arch_debug_gdb_get_registers. Current code was sending EAX, EBX, ECX, EDX..., GDB (all versions as far as I can tell) expects EAX, ECX, EDX, EBX... Also added missing FS and GS. [ Alex Smith <alex@xxxxxxxxxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev44321 Commit: 7dc738b0fb075b6eedc27e1efddb5661c085c7d8 URL: http://cgit.haiku-os.org/haiku/commit/?id=7dc738b Author: Alex Smith <alex@xxxxxxxxxxxxxxxx> Date: Thu Jul 12 14:59:50 2012 UTC ---------------------------------------------------------------------------- 1 file changed, 6 insertions(+), 5 deletions(-) src/system/kernel/arch/x86/arch_debug.cpp | 11 ++++++----- ---------------------------------------------------------------------------- diff --git a/src/system/kernel/arch/x86/arch_debug.cpp b/src/system/kernel/arch/x86/arch_debug.cpp index d3c6b8b..1cd4dad 100644 --- a/src/system/kernel/arch/x86/arch_debug.cpp +++ b/src/system/kernel/arch/x86/arch_debug.cpp @@ -1188,21 +1188,22 @@ arch_debug_gdb_get_registers(char* buffer, size_t bufferSize) // For x86 the register order is: // - // eax, ebx, ecx, edx, + // eax, ecx, edx, ebx, // esp, ebp, esi, edi, // eip, eflags, - // cs, ss, ds, es + // cs, ss, ds, es, fs, gs // // Note that even though the segment descriptors are actually 16 bits wide, // gdb requires them as 32 bit integers. Note also that for some reason // gdb wants the register dump in *big endian* format. - static const int32 kRegisterCount = 14; + static const int32 kRegisterCount = 16; uint32 registers[kRegisterCount] = { - frame->eax, frame->ebx, frame->ecx, frame->edx, + frame->eax, frame->ecx, frame->edx, frame->ebx, frame->esp, frame->ebp, frame->esi, frame->edi, frame->eip, frame->flags, - frame->cs, frame->ds, frame->ds, frame->es + frame->cs, frame->ds, frame->ds, frame->es, // assume ss == ds + frame->fs, frame->gs }; const char* const bufferStart = buffer;