Compile fixes for non-i386 archs.
diff --git a/debugger/memory.c b/debugger/memory.c
index 453e3e0..d1feb93 100644
--- a/debugger/memory.c
+++ b/debugger/memory.c
@@ -19,6 +19,7 @@
#define DBG_V86_MODULE(seg) ((seg)>>16)
#define IS_SELECTOR_V86(seg) DBG_V86_MODULE(seg)
+#endif
static void DEBUG_Die(const char* msg)
{
@@ -51,6 +52,7 @@
return res;
}
+#ifdef __i386__
void DEBUG_FixAddress( DBG_ADDR *addr, DWORD def)
{
if (addr->seg == 0xffffffff) addr->seg = def;
@@ -67,21 +69,6 @@
return FALSE;
}
-DWORD DEBUG_ToLinear( const DBG_ADDR *addr )
-{
- LDT_ENTRY le;
-
- if (IS_SELECTOR_V86(addr->seg))
- return (DWORD) DOSMEM_MemoryBase(DBG_V86_MODULE(addr->seg)) + (((addr->seg)&0xFFFF)<<4) + addr->off;
- if (DEBUG_IsSelectorSystem(addr->seg))
- return addr->off;
-
- if (GetThreadSelectorEntry( DEBUG_CurrThread->handle, addr->seg, &le)) {
- return (le.HighWord.Bits.BaseHi << 24) + (le.HighWord.Bits.BaseMid << 16) + le.BaseLow + addr->off;
- }
- return 0;
-}
-
int DEBUG_GetSelectorType( WORD sel )
{
LDT_ENTRY le;
@@ -103,6 +90,25 @@
}
#endif /* __i386__ */
+DWORD DEBUG_ToLinear( const DBG_ADDR *addr )
+{
+#ifdef __i386__
+ LDT_ENTRY le;
+
+ if (IS_SELECTOR_V86(addr->seg))
+ return (DWORD) DOSMEM_MemoryBase(DBG_V86_MODULE(addr->seg)) + (((addr->seg)&0xFFFF)<<4) + addr->off;
+ if (DEBUG_IsSelectorSystem(addr->seg))
+ return addr->off;
+
+ if (GetThreadSelectorEntry( DEBUG_CurrThread->handle, addr->seg, &le)) {
+ return (le.HighWord.Bits.BaseHi << 24) + (le.HighWord.Bits.BaseMid << 16) + le.BaseLow + addr->off;
+ }
+ return 0;
+#else
+ return addr->off;
+#endif
+}
+
void DEBUG_GetCurrentAddress( DBG_ADDR *addr )
{
#ifdef __i386__
@@ -113,7 +119,7 @@
addr->off = DEBUG_context.Eip;
#else
addr->seg = 0;
- addr->off = 0;
+ addr->off = GET_IP( &DEBUG_context );
#endif
}
@@ -155,7 +161,9 @@
DBG_ADDR addr = val->addr;
void* lin;
+#ifdef __i386__
DEBUG_FixAddress( &addr, DEBUG_context.SegDs );
+#endif
lin = (void*)DEBUG_ToLinear( &addr );
DEBUG_READ_MEM_VERBOSE(lin, &value, os);
@@ -184,7 +192,9 @@
DBG_ADDR addr = val->addr;
void* lin;
+#ifdef __i386__
DEBUG_FixAddress( &addr, DEBUG_context.SegDs );
+#endif
lin = (void*)DEBUG_ToLinear( &addr );
DEBUG_WRITE_MEM_VERBOSE(lin, &value, os);
} else {
@@ -207,10 +217,12 @@
assert(_value->cookie == DV_TARGET || _value->cookie == DV_HOST);
+#ifdef __i386__
DEBUG_FixAddress( &value.addr,
(format == 'i') ?
DEBUG_context.SegCs :
DEBUG_context.SegDs );
+#endif
/*
* Dereference pointer to get actual memory address we need to be