First stab at Bochs 2.2.6 upgrade (not yet tested).
[pintos-anon] / src / misc / bochs-2.2.6-big-endian.patch
diff --git a/src/misc/bochs-2.2.6-big-endian.patch b/src/misc/bochs-2.2.6-big-endian.patch
new file mode 100644 (file)
index 0000000..be95dae
--- /dev/null
@@ -0,0 +1,63 @@
+diff -urp bochs-2.2.6/gdbstub.cc bochs-2.2.6.orig/gdbstub.cc
+--- bochs-2.2.6/gdbstub.cc     2006-04-03 13:47:39.000000000 -0700
++++ bochs-2.2.6.orig/gdbstub.cc        2006-01-17 09:15:29.000000000 -0800
+@@ -672,36 +672,35 @@ static void debug_loop(void)
+             
+           case 'g':
+ #if !BX_SUPPORT_X86_64
+-            WriteHostDWordToLittleEndian(registers + 0, EAX);
+-            WriteHostDWordToLittleEndian(registers + 1, ECX);
+-            WriteHostDWordToLittleEndian(registers + 2, EDX);
+-            WriteHostDWordToLittleEndian(registers + 3, EBX);
+-            WriteHostDWordToLittleEndian(registers + 4, ESP);
+-            WriteHostDWordToLittleEndian(registers + 5, EBP);
+-            WriteHostDWordToLittleEndian(registers + 6, ESI);
+-            WriteHostDWordToLittleEndian(registers + 7, EDI);
++            registers[0] = EAX;
++            registers[1] = ECX;
++            registers[2] = EDX;
++            registers[3] = EBX;
++            registers[4] = ESP;
++            registers[5] = EBP;
++            registers[6] = ESI;
++            registers[7] = EDI;
+             if (last_stop_reason == GDBSTUB_EXECUTION_BREAKPOINT)
+               {
+-                WriteHostDWordToLittleEndian(registers + 8, EIP + 1);
++                 registers[8] = EIP + 1;
+               }
+             else
+               {
+-                WriteHostDWordToLittleEndian(registers + 8, EIP);
++                 registers[8] = EIP;
+               }
+-            WriteHostDWordToLittleEndian(registers + 9,
+-                                         BX_CPU_THIS_PTR read_eflags());
+-            WriteHostDWordToLittleEndian(registers + 10,
+-              BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].selector.value);
+-            WriteHostDWordToLittleEndian(registers + 11,
+-              BX_CPU_THIS_PTR sregs[BX_SEG_REG_SS].selector.value);
+-            WriteHostDWordToLittleEndian(registers + 12,
+-              BX_CPU_THIS_PTR sregs[BX_SEG_REG_DS].selector.value);
+-            WriteHostDWordToLittleEndian(registers + 13,
+-              BX_CPU_THIS_PTR sregs[BX_SEG_REG_ES].selector.value);
+-            WriteHostDWordToLittleEndian(registers + 14,
+-              BX_CPU_THIS_PTR sregs[BX_SEG_REG_FS].selector.value);
+-            WriteHostDWordToLittleEndian(registers + 15,
+-              BX_CPU_THIS_PTR sregs[BX_SEG_REG_GS].selector.value);
++            registers[9] = BX_CPU_THIS_PTR read_eflags();
++            registers[10] = 
++              BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].selector.value;
++            registers[11] = 
++              BX_CPU_THIS_PTR sregs[BX_SEG_REG_SS].selector.value;
++            registers[12] = 
++              BX_CPU_THIS_PTR sregs[BX_SEG_REG_DS].selector.value;
++            registers[13] = 
++              BX_CPU_THIS_PTR sregs[BX_SEG_REG_ES].selector.value;
++            registers[14] = 
++              BX_CPU_THIS_PTR sregs[BX_SEG_REG_FS].selector.value;
++            registers[15] = 
++              BX_CPU_THIS_PTR sregs[BX_SEG_REG_GS].selector.value;
+             mem2hex((char *)registers, obuf, NUMREGSBYTES);
+ #else
+ #define PUTREG(buf, val, len) do { \