[haiku-commits] haiku: hrev44321 - src/system/kernel/arch/x86

  • From: alex@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 12 Jul 2012 17:03:36 +0200 (CEST)

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;


Other related posts:

  • » [haiku-commits] haiku: hrev44321 - src/system/kernel/arch/x86 - alex