[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 16/29] s390x/mmu: Clean up mmu_translate_asc()
From: |
Christian Borntraeger |
Subject: |
[Qemu-devel] [PULL 16/29] s390x/mmu: Clean up mmu_translate_asc() |
Date: |
Wed, 18 Feb 2015 21:22:10 +0100 |
From: Thomas Huth <address@hidden>
We can get rid of the switch(asc) in mmu_translate_asc() by simply
selecting the right control register ASCE in the mmu_translate()
function already.
This patch is based on an original patch/idea by Ralf Hoppe.
Signed-off-by: Thomas Huth <address@hidden>
Signed-off-by: Jens Freimann <address@hidden>
Reviewed-by: David Hildenbrand <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
Signed-off-by: Christian Borntraeger <address@hidden>
---
target-s390x/mmu_helper.c | 39 +++++++++++++++------------------------
1 file changed, 15 insertions(+), 24 deletions(-)
diff --git a/target-s390x/mmu_helper.c b/target-s390x/mmu_helper.c
index c183958..32a51f3 100644
--- a/target-s390x/mmu_helper.c
+++ b/target-s390x/mmu_helper.c
@@ -214,29 +214,13 @@ static int mmu_translate_region(CPUS390XState *env,
target_ulong vaddr,
raddr, flags, rw, exc);
}
-static int mmu_translate_asc(CPUS390XState *env, target_ulong vaddr,
- uint64_t asc, target_ulong *raddr, int *flags,
- int rw, bool exc)
+static int mmu_translate_asce(CPUS390XState *env, target_ulong vaddr,
+ uint64_t asc, uint64_t asce, target_ulong *raddr,
+ int *flags, int rw, bool exc)
{
- uint64_t asce = 0;
int level;
int r;
- switch (asc) {
- case PSW_ASC_PRIMARY:
- PTE_DPRINTF("%s: asc=primary\n", __func__);
- asce = env->cregs[1];
- break;
- case PSW_ASC_SECONDARY:
- PTE_DPRINTF("%s: asc=secondary\n", __func__);
- asce = env->cregs[7];
- break;
- case PSW_ASC_HOME:
- PTE_DPRINTF("%s: asc=home\n", __func__);
- asce = env->cregs[13];
- break;
- }
-
if (asce & _ASCE_REAL_SPACE) {
/* direct mapping */
*raddr = vaddr;
@@ -326,21 +310,28 @@ int mmu_translate(CPUS390XState *env, target_ulong vaddr,
int rw, uint64_t asc,
switch (asc) {
case PSW_ASC_PRIMARY:
+ PTE_DPRINTF("%s: asc=primary\n", __func__);
+ r = mmu_translate_asce(env, vaddr, asc, env->cregs[1], raddr, flags,
+ rw, exc);
+ break;
case PSW_ASC_HOME:
- r = mmu_translate_asc(env, vaddr, asc, raddr, flags, rw, exc);
+ PTE_DPRINTF("%s: asc=home\n", __func__);
+ r = mmu_translate_asce(env, vaddr, asc, env->cregs[13], raddr, flags,
+ rw, exc);
break;
case PSW_ASC_SECONDARY:
+ PTE_DPRINTF("%s: asc=secondary\n", __func__);
/*
* Instruction: Primary
* Data: Secondary
*/
if (rw == 2) {
- r = mmu_translate_asc(env, vaddr, PSW_ASC_PRIMARY, raddr, flags,
- rw, exc);
+ r = mmu_translate_asce(env, vaddr, PSW_ASC_PRIMARY, env->cregs[1],
+ raddr, flags, rw, exc);
*flags &= ~(PAGE_READ | PAGE_WRITE);
} else {
- r = mmu_translate_asc(env, vaddr, PSW_ASC_SECONDARY, raddr, flags,
- rw, exc);
+ r = mmu_translate_asce(env, vaddr, PSW_ASC_SECONDARY,
env->cregs[7],
+ raddr, flags, rw, exc);
*flags &= ~(PAGE_EXEC);
}
break;
--
1.9.3
- [Qemu-devel] [PULL 00/29] s390x guest reipl and page table handling, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 12/29] s390x/mmu: Fix the exception codes for illegal table entries, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 13/29] s390x/mmu: Add support for read-only regions, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 16/29] s390x/mmu: Clean up mmu_translate_asc(),
Christian Borntraeger <=
- [Qemu-devel] [PULL 21/29] s390x/ioinst: Rework memory access in SSCH instruction, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 18/29] s390x/mmu: Add function for accessing guest memory, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 02/29] s390x/ipl: support diagnose 308 subcodes 5 and 6, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 19/29] s390x/css: Make schib parameter of css_do_msch const, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 09/29] s390x/mmu: Skip exceptions properly when translating addresses for debug, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 08/29] s390x/mmu: Check table length and offset fields, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 14/29] s390x/mmu: Renaming related to the ASCE confusion, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 04/29] s390x/ipl: make s390x ipl device aware of migration, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 25/29] s390x/ioinst: Rework memory access in STCRW instruction, Christian Borntraeger, 2015/02/18
- [Qemu-devel] [PULL 01/29] s390x/ipl: always load the bios for ccw machine, Christian Borntraeger, 2015/02/18