From 89a41e0a37f3c749f3038ac2544f74257bc7b94d Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 12 Feb 2015 18:09:19 +0100 Subject: s390x/mmu: Fix the check for the real-space designation bit The real-space designation bits live in the ASCEs, not in the table entries, so the check must be done before we start walking the MMU table. Signed-off-by: Thomas Huth Signed-off-by: Jens Freimann Reviewed-by: David Hildenbrand Signed-off-by: Christian Borntraeger --- target-s390x/mmu_helper.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'target-s390x/mmu_helper.c') diff --git a/target-s390x/mmu_helper.c b/target-s390x/mmu_helper.c index fc4f7c5428..c845cd4339 100644 --- a/target-s390x/mmu_helper.c +++ b/target-s390x/mmu_helper.c @@ -180,13 +180,6 @@ static int mmu_translate_asce(CPUS390XState *env, target_ulong vaddr, return -1; } - if (asce & _ASCE_REAL_SPACE) { - /* direct mapping */ - - *raddr = vaddr; - return 0; - } - origin = asce & _ASCE_ORIGIN; switch (level) { @@ -252,6 +245,12 @@ static int mmu_translate_asc(CPUS390XState *env, target_ulong vaddr, break; } + if (asce & _ASCE_REAL_SPACE) { + /* direct mapping */ + *raddr = vaddr; + return 0; + } + switch (asce & _ASCE_TYPE_MASK) { case _ASCE_TYPE_REGION1: break; -- cgit v1.2.3-55-g7522