From 6a15fd12ca1bccb72335132686db7adef5937a0a Mon Sep 17 00:00:00 2001 From: bellard Date: Wed, 12 Apr 2006 21:07:07 +0000 Subject: [PATCH] 64 bit disassembly git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1809 c046a42c-6fe2-441c-8c8c-71466251a162 --- monitor.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/monitor.c b/monitor.c index 3078b1d4bc..3c0fd916fa 100644 --- a/monitor.c +++ b/monitor.c @@ -457,10 +457,18 @@ static void memory_dump(int count, int format, int wsize, } else if (wsize == 4) { flags = 0; } else { - /* as default we use the current CS size */ + /* as default we use the current CS size */ flags = 0; - if (env && !(env->segs[R_CS].flags & DESC_B_MASK)) - flags = 1; + if (env) { +#ifdef TARGET_X86_64 + if ((env->efer & MSR_EFER_LMA) && + (env->segs[R_CS].flags & DESC_L_MASK)) + flags = 2; + else +#endif + if (!(env->segs[R_CS].flags & DESC_B_MASK)) + flags = 1; + } } #endif monitor_disas(env, addr, count, is_physical, flags); @@ -1549,6 +1557,7 @@ static target_long expr_unary(void) n = 0; break; default: + /* XXX: 64 bit version */ n = strtoul(pch, &p, 0); if (pch == p) { expr_error("invalid char in expression");