diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2006-04-12 21:07:07 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2006-04-12 21:07:07 +0000 |
commit | 6a15fd12ca1bccb72335132686db7adef5937a0a (patch) | |
tree | f30e89c9a7a4f971c418e3ac0464b51009398280 | |
parent | 3e749fe1f75f4b84ee6d8141b65acde9215484b7 (diff) |
64 bit disassembly
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1809 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r-- | monitor.c | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -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"); |