On 20.04.2011, at 12:38, Aurelien Jarno wrote: > On Fri, Apr 15, 2011 at 05:32:52PM +0200, Alexander Graf wrote: >> When running system emulation, we need to transverse through the MMU and >> deliver interrupts according to the specification. >> >> This patch implements those two pieces and in addition adjusts the CPU >> initialization code to account for the new fields in CPUState. >> >> Signed-off-by: Alexander Graf <ag...@suse.de> >>
[...] >> >> +int cpu_s390x_handle_mmu_fault (CPUState *env, target_ulong _vaddr, int rw, >> int mmu_idx, int is_softmmu) >> { >> - target_ulong phys; >> + uint64_t asc = env->psw.mask & PSW_MASK_ASC; >> + target_ulong vaddr, raddr; >> int prot; >> >> - /* XXX: implement mmu */ >> + dprintf("%s: address 0x%" PRIx64 " rw %d mmu_idx %d is_softmmu %d\n", >> + __FUNCTION__, _vaddr, rw, mmu_idx, is_softmmu); >> + >> + _vaddr &= TARGET_PAGE_MASK; >> + vaddr = _vaddr; > > You don't need to use a second vaddr variable here, you can directly > apply the mast on _vaddr (and probably rename it to vaddr). Unfortunately, it's not that easy. Take a look at the next few lines - there we're masking vaddr in 31-bit (and 24-bit) mode. We still need to add the real vaddr that we got into the TLB though, so we somehow need to keep the non-masked version around. Alex