From: Hervé Poussineau <hpous...@reactos.org> In that case, we want to access memory space instead of I/O controller interface address space.
Signed-off-by: Hervé Poussineau <hpous...@reactos.org> Simplify by avoiding reindentation of existing code. Cc: Alexander Graf <ag...@suse.de> Signed-off-by: Andreas Färber <andreas.faer...@web.de> --- Hello Alex, This patch fixes a hang when booting 40p, please review. The only vaguely related section in Power ISA 2.06B I could find was the Programming Note on p. 764 (5.7.1). 6xx_pem.pdf identifies the masked SR bits as Bus unit ID, says nothing about the 0x07f value though - might that be machine-specific? Andreas target-ppc/helper.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/target-ppc/helper.c b/target-ppc/helper.c index cf2a368..cdf8d15 100644 --- a/target-ppc/helper.c +++ b/target-ppc/helper.c @@ -949,8 +949,18 @@ static inline int get_segment(CPUState *env, mmu_ctx_t *ctx, ret = -3; } } else { + target_ulong sr; LOG_MMU("direct store...\n"); /* Direct-store segment : absolutely *BUGGY* for now */ + + sr = env->sr[eaddr >> 28]; + if ((sr & 0x1FF00000) >> 20 == 0x07f) { + /* Memory forced */ + ctx->raddr = ((sr & 0xF) << 28) | (eaddr & 0x0FFFFFFF); + ctx->prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC; + return 0; + } + switch (type) { case ACCESS_INT: /* Integer load/store : only access allowed */ -- 1.7.5.3