[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 21/29] s390x/ioinst: Rework memory access in SSCH ins
From: |
Christian Borntraeger |
Subject: |
[Qemu-devel] [PULL 21/29] s390x/ioinst: Rework memory access in SSCH instruction |
Date: |
Wed, 18 Feb 2015 21:22:15 +0100 |
From: Thomas Huth <address@hidden>
Change the handler for SSCH to use the new logical memory
access functions.
Signed-off-by: Thomas Huth <address@hidden>
Signed-off-by: Jens Freimann <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
Signed-off-by: Christian Borntraeger <address@hidden>
---
target-s390x/ioinst.c | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)
diff --git a/target-s390x/ioinst.c b/target-s390x/ioinst.c
index 1569df6..0ef7a93 100644
--- a/target-s390x/ioinst.c
+++ b/target-s390x/ioinst.c
@@ -210,11 +210,10 @@ void ioinst_handle_ssch(S390CPU *cpu, uint64_t reg1,
uint32_t ipb)
{
int cssid, ssid, schid, m;
SubchDev *sch;
- ORB *orig_orb, orb;
+ ORB orig_orb, orb;
uint64_t addr;
int ret = -ENODEV;
int cc;
- hwaddr len = sizeof(*orig_orb);
CPUS390XState *env = &cpu->env;
addr = decode_basedisp_s(env, ipb);
@@ -222,16 +221,14 @@ void ioinst_handle_ssch(S390CPU *cpu, uint64_t reg1,
uint32_t ipb)
program_interrupt(env, PGM_SPECIFICATION, 2);
return;
}
- orig_orb = s390_cpu_physical_memory_map(env, addr, &len, 0);
- if (!orig_orb || len != sizeof(*orig_orb)) {
- program_interrupt(env, PGM_ADDRESSING, 2);
- goto out;
+ if (s390_cpu_virt_mem_read(cpu, addr, &orig_orb, sizeof(orb))) {
+ return;
}
- copy_orb_from_guest(&orb, orig_orb);
+ copy_orb_from_guest(&orb, &orig_orb);
if (ioinst_disassemble_sch_ident(reg1, &m, &cssid, &ssid, &schid) ||
!ioinst_orb_valid(&orb)) {
program_interrupt(env, PGM_OPERAND, 2);
- goto out;
+ return;
}
trace_ioinst_sch_id("ssch", cssid, ssid, schid);
sch = css_find_subch(m, cssid, ssid, schid);
@@ -253,9 +250,6 @@ void ioinst_handle_ssch(S390CPU *cpu, uint64_t reg1,
uint32_t ipb)
break;
}
setcc(cpu, cc);
-
-out:
- s390_cpu_physical_memory_unmap(env, orig_orb, len, 0);
}
void ioinst_handle_stcrw(S390CPU *cpu, uint32_t ipb)
--
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, 2015/02/18
- [Qemu-devel] [PULL 21/29] s390x/ioinst: Rework memory access in SSCH instruction,
Christian Borntraeger <=
- [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
- [Qemu-devel] [PULL 05/29] s390x/mmu: Move mmu_translate() and friends to separate file, Christian Borntraeger, 2015/02/18