Hello group, I have two questions, both regarding the virtual-physical translation of addresses (all in the virtual machine context).
1> Can somebody tell me if the program counter value available in the following snippet from target-i386/translate.c is virtual or physical? I learnt it may be virtual, in which case is there a way to extract the physical address corresponding to the virtual address, or if it is physical, then is there a way to translate to its virtual address (within the virtual machine context)? ************************************************ /* convert one instruction. s->is_jmp is set if the translation must be stopped. Return the next pc value */ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start) { int b, prefixes, aflag, dflag; int shift, ot; int modrm, reg, rm, mod, reg_addr, op, opreg, offset_addr, val; target_ulong next_eip, tval; int rex_w, rex_r; s->pc = pc_start; // This s->pc is what I am using to extract all executed PC values ************************************************ 2> Second question I have is - Within the functions from target-i386/ops_mem.h for example, void OPPROTO glue(glue(op_ldub, MEMSUFFIX), _T0_A0)(void) { T0 = glue(ldub, MEMSUFFIX)(A0); } Is A0 the physical address? or is it virtual? And how to I translate from one to another in either case? Thanks in advance. -Shashi.