From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613542; cv=none; d=zoho.com; s=zohoarc; b=GL9TpmNVqn8uz9bDuz5f8ukC2TD1U+FtsYBNJUxauI16exLmWwCGk6IFZLvAOo3ftD2cwbID1g8rrHPK4JWNfSPz70Y7Z2TzYAG9k+S6SLp0JKYLmehmDG4uzY5blY8Hs9bJlEqZ5bNc9pcXfHIEo2TiqKA375s9gOiZNFHPoyQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613542; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=w2Q9PJQfueojRR+QKppS6QU37PaRJeAezOuF/SJtJSk=; b=n5Wgb8D/L6Wq6YHnqxcgNAeL+InkGbrQGHyhkR806mHELakWLs73mKZmpU/AutgIovlE4jEl7SQoHYm4+PZeVU6+kxHfiYFjiaDrUgyrJNMJvpT2aF7HiP3kKTgSMa6q6BtReFLkyTsJGeNlShBcwq0Je9nAn5nqt12hlFAojBo= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613542487506.7298997902517; Fri, 27 Sep 2019 12:45:42 -0700 (PDT) Received: from localhost ([::1]:56806 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwBO-0000bi-Au for importer@patchew.org; Fri, 27 Sep 2019 15:45:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46378) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5W-000391-LO for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5V-0006BL-8G for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:34 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]:39940) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5V-0006Ay-2C for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:33 -0400 Received: by mail-pg1-x52a.google.com with SMTP id w10so4002787pgj.7 for ; Fri, 27 Sep 2019 12:39:32 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=w2Q9PJQfueojRR+QKppS6QU37PaRJeAezOuF/SJtJSk=; b=bARj/F152KNyjvJ9HpAQMsNuD8coka1Aqez1QksdNMkKVM9LEVJJjQ0fgdP3uRQ0WO zJ1f4Ksi7g+R9rnzz8J8NAvRfFzMZxkUw4Gl4BwfgMsCt9aaa7pHdOZplD8mJUnxzW5o 4TqLfHpPT0L+JEB+km5PgSl80Pix278710A16a8XswxyAT/a8rfB/LyZVolFeX3F7VR1 GqZ7zthy17FAgRlPEpUNvsbPpqlOD1uMuclzwZSgEDNyufx8IhtacCCAXpBPzK+tQRqQ /NM26OhND6/vUjByRvN/OFU68a4Dspef2GWORmlwMYMGbKrfF85vIO2up+6XOTqgmQ0i /40w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=w2Q9PJQfueojRR+QKppS6QU37PaRJeAezOuF/SJtJSk=; b=n8yhx9WTLxQJ9+8ojyHCWRqCka5ss+JOwxRnbtAOHXekm2PQS2GplhNEBPl5P8anhI x7duNe9GkXo1TTQd7CtcKuXSglvbFKf25SMRGAUuJYadDWBKxlAH3KmciXLsDSK9Mdxm 5f4ZDFInMIayv5gd95xGsahji/B0CvEw1QHgANH+WjTX2vou9v/PpaEZelzQMKrM8N0C jSj82ai18VRt8+FZLHNxpWDEGZWdoKclFR5/garFZhAwovAK58gkSBW1aMKIK7jZZfRk pMx9zmreHaru+Oli9gT8kI9ZEIU2Iik9Al/yqZQTALqmgWhlecRLmrtroMy3PlqSibom hdiQ== X-Gm-Message-State: APjAAAXIkwMaMviI4adVZU3kerul0JnBlRMqjIpLAXgRMIy5mX/eSsuB ER/izDK82KEGEsMP21DcAQpuQOOHQ1s= X-Google-Smtp-Source: APXvYqypAM5/JCXubU4AD1mP6sCaptS5ItHMD29GAn3PlqOjr+01s5KNTIv+WCENQeyouSEhCnCkwA== X-Received: by 2002:a62:64ca:: with SMTP id y193mr6380720pfb.164.1569613171657; Fri, 27 Sep 2019 12:39:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 01/18] target/s390x: Add ilen to unwind data Date: Fri, 27 Sep 2019 12:39:08 -0700 Message-Id: <20190927193925.23567-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::52a X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, Richard Henderson , david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Use ILEN_UNWIND to signal that we have in fact that cpu_restore_state will have been called by the time we arrive in do_program_interrupt. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand --- target/s390x/cpu.h | 4 +++- target/s390x/interrupt.c | 5 ++++- target/s390x/translate.c | 20 +++++++++++++++++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 1996f44baa..b7d408bf81 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -30,7 +30,7 @@ /* The z/Architecture has a strong memory model with some store-after-load= re-ordering */ #define TCG_GUEST_DEFAULT_MO (TCG_MO_ALL & ~TCG_MO_ST_LD) =20 -#define TARGET_INSN_START_EXTRA_WORDS 1 +#define TARGET_INSN_START_EXTRA_WORDS 2 =20 #define MMU_MODE0_SUFFIX _primary #define MMU_MODE1_SUFFIX _secondary @@ -803,6 +803,8 @@ int cpu_s390x_signal_handler(int host_signum, void *pin= fo, void *puc); void s390_crw_mchk(void); void s390_io_interrupt(uint16_t subchannel_id, uint16_t subchannel_nr, uint32_t io_int_parm, uint32_t io_int_word); +/* instruction length set by unwind info */ +#define ILEN_UNWIND 0 /* automatically detect the instruction length */ #define ILEN_AUTO 0xff #define RA_IGNORED 0 diff --git a/target/s390x/interrupt.c b/target/s390x/interrupt.c index a841f7187d..30a9fb8852 100644 --- a/target/s390x/interrupt.c +++ b/target/s390x/interrupt.c @@ -28,7 +28,10 @@ void trigger_pgm_exception(CPUS390XState *env, uint32_t = code, uint32_t ilen) =20 cs->exception_index =3D EXCP_PGM; env->int_pgm_code =3D code; - env->int_pgm_ilen =3D ilen; + /* If ILEN_UNWIND, int_pgm_ilen already has the correct value. */ + if (ilen !=3D ILEN_UNWIND) { + env->int_pgm_ilen =3D ilen; + } } =20 void s390_program_interrupt(CPUS390XState *env, uint32_t code, int ilen, diff --git a/target/s390x/translate.c b/target/s390x/translate.c index a3e43ff9ec..151dfa91fb 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -6309,6 +6309,9 @@ static DisasJumpType translate_one(CPUS390XState *env= , DisasContext *s) /* Search for the insn in the table. */ insn =3D extract_insn(env, s, &f); =20 + /* Emit insn_start now that we know the ILEN. */ + tcg_gen_insn_start(s->base.pc_next, s->cc_op, s->ilen); + /* Not found means unimplemented/illegal opcode. */ if (insn =3D=3D NULL) { qemu_log_mask(LOG_UNIMP, "unimplemented opcode 0x%02x%02x\n", @@ -6463,9 +6466,6 @@ static void s390x_tr_tb_start(DisasContextBase *db, C= PUState *cs) =20 static void s390x_tr_insn_start(DisasContextBase *dcbase, CPUState *cs) { - DisasContext *dc =3D container_of(dcbase, DisasContext, base); - - tcg_gen_insn_start(dc->base.pc_next, dc->cc_op); } =20 static bool s390x_tr_breakpoint_check(DisasContextBase *dcbase, CPUState *= cs, @@ -6473,6 +6473,14 @@ static bool s390x_tr_breakpoint_check(DisasContextBa= se *dcbase, CPUState *cs, { DisasContext *dc =3D container_of(dcbase, DisasContext, base); =20 + /* + * Emit an insn_start to accompany the breakpoint exception. + * The ILEN value is a dummy, since this does not result in + * an s390x exception, but an internal qemu exception which + * brings us back to interact with the gdbstub. + */ + tcg_gen_insn_start(dc->base.pc_next, dc->cc_op, 2); + dc->base.is_jmp =3D DISAS_PC_STALE; dc->do_debug =3D true; /* The address covered by the breakpoint must be included in @@ -6567,8 +6575,14 @@ void restore_state_to_opc(CPUS390XState *env, Transl= ationBlock *tb, target_ulong *data) { int cc_op =3D data[1]; + env->psw.addr =3D data[0]; + + /* Update the CC opcode if it is not already up-to-date. */ if ((cc_op !=3D CC_OP_DYNAMIC) && (cc_op !=3D CC_OP_STATIC)) { env->cc_op =3D cc_op; } + + /* Record ILEN. */ + env->int_pgm_ilen =3D data[2]; } --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613375; cv=none; d=zoho.com; s=zohoarc; b=lCKI7wXQjywrDh5Fm3taEJlNdAErP5E2eDBuFzGyfgv4e+jpp3yusY5qu4ou4wOQZDfV8w5O1dVeUAeqyeqiheg7jP2bWpOkwGpE9sQ2oXgPPvqHkJczFKiCsf5ZE79ft8OpvR6oafFwvUlczdu3b9Jou98f2GJYCUFTqcBBU2Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613375; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=mEJpPDOXw0D5Zksw9BQVNR7N9VOlOrM1zivyUmzXqRI=; b=Iv/A9ZxVV1n66W+cOgysHr7eV4h0E3cHMqNUDNywOoUtKynkIcz1waooNI8EPLPSwCG3FM1UVUPUXF0G9QMiM4sFKg8GQnixBqW1D8W7FmvgtobxpNiU4uV54erj++tzBA/ERvslNiL9xuBhAa8UUNpVBECc7ayCWzMwcR0gHmU= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613375630127.15408924998053; Fri, 27 Sep 2019 12:42:55 -0700 (PDT) Received: from localhost ([::1]:56754 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw8d-00055D-Jv for importer@patchew.org; Fri, 27 Sep 2019 15:42:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46409) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5Y-0003A9-In for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5X-0006Co-1q for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:36 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]:45292) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5W-0006Bp-Sj for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:34 -0400 Received: by mail-pf1-x434.google.com with SMTP id y72so2118151pfb.12 for ; Fri, 27 Sep 2019 12:39:34 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=mEJpPDOXw0D5Zksw9BQVNR7N9VOlOrM1zivyUmzXqRI=; b=jsTR0IyCMuEVZx9Lx8RFssEvG/ohK4uRRxVYFjzEWqTlxb3UnWmDVNRTUCupuFxeP1 xWiTFh8WIjC9w3EhBfSsA8wVsL/AgY92ajqYoF2fJHsV9Rk83ow0T1B2HXIvFOfBPBoa DtoTQpFqf4WmE9DJPdc+0uztksJe2Bqy5BV7zpz6yFefhvsRXP798KSSaqvc/WZ+deKG dX86WiR1/4vt6t6/M6E+/itdLiToKLhMyy33zyoE2Ow+acOvczMMxr+brTe05AIISmg+ dYxKkmUF8wbtiWYWpOx87Vk6/a6F3qcququ+5LrDNnOiTM4JwkZ8Iyze/84b1czIpdFC +w8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=mEJpPDOXw0D5Zksw9BQVNR7N9VOlOrM1zivyUmzXqRI=; b=g2kOJV7U6VyHJ7qkDsIcuv5Hh2UusvY4tEdznuK/pZdzYma8E5wrTwx0s2Ng8JcBTM wqqP9AGLDz98LspkccVOSBc3HqXHp2fGiShRWjm1uSewN0vgeLniJxPyiyx0xDTvBXKW VXZKVj1ZD9CpawptrJHYqTRX8INsjlrxGucb/qtBRwxwGlgQQPN5qbK3Y+HaJvPcdu+V /FLAf8NHliOtKLU0wL9GXRCK9SH4UBT0AJzpdUE0Z0bdprjHQ9TkWPUm4FKrCAm5KSI6 PvsSHL+bASR4oP8IMRWq+rSfNRyKALNSM20FzjWHiZNIIeLcoYtqKv8WksUR+mSYfHZW EkGw== X-Gm-Message-State: APjAAAXLCFH6Le35xIRmCGodY/TetRq/4vOt33DBmDScFYBvEXWQwXSm QdtAZdJ2ZJd9YV5EcNN7NJ/Nbcy0OsQ= X-Google-Smtp-Source: APXvYqwYYbM8jO9Vi/lRdNZ/7LivPL9oETd9esgPbLd9IFKBO93WdB6LCzUlA8ilON3XoUFkx5mc3A== X-Received: by 2002:a63:1d02:: with SMTP id d2mr11106385pgd.190.1569613173324; Fri, 27 Sep 2019 12:39:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 02/18] target/s390x: Remove ilen parameter from tcg_s390_program_interrupt Date: Fri, 27 Sep 2019 12:39:09 -0700 Message-Id: <20190927193925.23567-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::434 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Since we begin the operation with an unwind, we have the proper value of ilen immediately available. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/tcg_s390x.h | 4 ++-- target/s390x/excp_helper.c | 8 ++++---- target/s390x/interrupt.c | 2 +- target/s390x/tcg-stub.c | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/target/s390x/tcg_s390x.h b/target/s390x/tcg_s390x.h index 2813f9d48e..2f54ccb027 100644 --- a/target/s390x/tcg_s390x.h +++ b/target/s390x/tcg_s390x.h @@ -14,8 +14,8 @@ #define TCG_S390X_H =20 void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque); -void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t= code, - int ilen, uintptr_t ra); +void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, + uint32_t code, uintptr_t ra); void QEMU_NORETURN tcg_s390_data_exception(CPUS390XState *env, uint32_t dx= c, uintptr_t ra); void QEMU_NORETURN tcg_s390_vector_exception(CPUS390XState *env, uint32_t = vxc, diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index 892f659d5a..681a9c59e1 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -34,15 +34,15 @@ #include "hw/boards.h" #endif =20 -void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t= code, - int ilen, uintptr_t ra) +void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, + uint32_t code, uintptr_t ra) { CPUState *cs =3D env_cpu(env); =20 cpu_restore_state(cs, ra, true); qemu_log_mask(CPU_LOG_INT, "program interrupt at %#" PRIx64 "\n", env->psw.addr); - trigger_pgm_exception(env, code, ilen); + trigger_pgm_exception(env, code, ILEN_UNWIND); cpu_loop_exit(cs); } =20 @@ -60,7 +60,7 @@ void QEMU_NORETURN tcg_s390_data_exception(CPUS390XState = *env, uint32_t dxc, if (env->cregs[0] & CR0_AFP) { env->fpc =3D deposit32(env->fpc, 8, 8, dxc); } - tcg_s390_program_interrupt(env, PGM_DATA, ILEN_AUTO, ra); + tcg_s390_program_interrupt(env, PGM_DATA, ra); } =20 void QEMU_NORETURN tcg_s390_vector_exception(CPUS390XState *env, uint32_t = vxc, diff --git a/target/s390x/interrupt.c b/target/s390x/interrupt.c index 30a9fb8852..b798e2ecbe 100644 --- a/target/s390x/interrupt.c +++ b/target/s390x/interrupt.c @@ -40,7 +40,7 @@ void s390_program_interrupt(CPUS390XState *env, uint32_t = code, int ilen, if (kvm_enabled()) { kvm_s390_program_interrupt(env_archcpu(env), code); } else if (tcg_enabled()) { - tcg_s390_program_interrupt(env, code, ilen, ra); + tcg_s390_program_interrupt(env, code, ra); } else { g_assert_not_reached(); } diff --git a/target/s390x/tcg-stub.c b/target/s390x/tcg-stub.c index 32adb7276a..d22c898802 100644 --- a/target/s390x/tcg-stub.c +++ b/target/s390x/tcg-stub.c @@ -18,8 +18,8 @@ void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque) { } -void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, uint32_t= code, - int ilen, uintptr_t ra) +void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XState *env, + uint32_t code, uintptr_t ra) { g_assert_not_reached(); } --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613989; cv=none; d=zoho.com; s=zohoarc; b=OfMiC8WBISRsXYEolSFXs5DnQgCWoGn0qQlL/8LXlNfHEYYSZ8w6gPFp2xjxyyo/IO879+YaMC6UkP64Z1sIk2v+KTTAwCM/fUqNqP/AsjG/DOmv7gWq63obsyVk4r+X/j0w25rYYOPeOBfc8/LjRjYS2UcmjEkJpprlt/XJ3Kw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613989; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=cOr/j2swL6x+TNgS9oubk3VZWNSao1nhLd3EVmod6Xg=; b=ffC355ACP+LoTx26PqkFTCrsa0kS1fPB14UvPbYCjOqketQXByOhmLHAe6brydGqT6wOctm+9dbVmicfuFPEOoevRxtlIp+rIvnkUBalfjahlfnvHUkdgBMcITL8SQDVXE/osNemc4njaUG225WMiKqJJXAkv+YO8/+6agGGp8E= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613989429595.6535776679958; Fri, 27 Sep 2019 12:53:09 -0700 (PDT) Received: from localhost ([::1]:56954 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwIe-0007nT-4g for importer@patchew.org; Fri, 27 Sep 2019 15:53:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46574) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5l-0003L1-C9 for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5b-0006H7-6B for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:48 -0400 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]:46755) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5a-0006FG-Rm for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:39 -0400 Received: by mail-pf1-x442.google.com with SMTP id q5so2112755pfg.13 for ; Fri, 27 Sep 2019 12:39:37 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=cOr/j2swL6x+TNgS9oubk3VZWNSao1nhLd3EVmod6Xg=; b=KHI9HEbuu9ciWyYePpO4V2FHtcSeROC+6Do0ls0O0D+uztZG5QUz5V1nYYNelPyymb Gd+Fp+D+SPp9U+VUS6bSsVzzfEv5ULJYKOpKRyfW1iadibeuUGx5MKqnP2EyAFODcMLZ YphZj2K/25FyCp+5hvRJPGded813r3Ea/bAAzGwL/F8TpLkLjFKPtzxSMQ1UoySNLmPy 9B2FF+At3lFrlrn5fbiUyvgraIB5DHmYzeZj7ptLyKz2fPZOlrD1m2SbUwTosPwHJIX3 7cAbkX13U5g8WsS7DAK6QexZcyOQXGlX9zTfFsGYAfT6l2DUOXPh1zG6uFYz+iOWBeB4 zF0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=cOr/j2swL6x+TNgS9oubk3VZWNSao1nhLd3EVmod6Xg=; b=LCYMsRStcIlhZWI17WMv9bN5rRGzgBcyKHwqy5av8duizThBtYDngfG2vzAk2AyXed TKpT0ib5Jj9oIhE9d4PK7dwfvP4jYWoJhnD8+nxtAp/S+w4UL3N03qoqYY4DEBEGb8T2 UMghRQtF4qd5oAPPCgaS9FlN5pUPK9fNPHPmhopDmmoZYtfJtvmLO7HSKvuQr0dB2Tfq UUt0txIHVkMId+Wilk4I0dZVaw69teOb46qpV5+nWgZ0GaqzlZ4HssIjGzoX8UgCJ8vQ Ni7ddufsMaC0+oR6sxe3ZDJfSVPFAGXShgb2b11yLqCNFScpxkUwzv2Wz3gdUDRUbXRf d9cA== X-Gm-Message-State: APjAAAXMlLXvBnfcsiPQb0wz10y6prTK8XC/qnoJdYUWQHa7xYGvCorm AyNmEu9GK+MhMcKXtiRx4bSuVC25H04= X-Google-Smtp-Source: APXvYqz4qEag+3JO9KsrKEv7wp0KHKCOLxjR1x7KndjWKLdogVsTvgkDFAee8TWwVGSetGQCWXkcSQ== X-Received: by 2002:a63:9742:: with SMTP id d2mr10698294pgo.356.1569613175567; Fri, 27 Sep 2019 12:39:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 03/18] target/s390x: Remove ilen parameter from s390_program_interrupt Date: Fri, 27 Sep 2019 12:39:10 -0700 Message-Id: <20190927193925.23567-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::442 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This is no longer used, and many of the existing uses -- particularly within hw/s390x -- seem questionable. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/cpu.h | 3 +- hw/s390x/s390-pci-inst.c | 58 ++++++++++++++++++------------------ target/s390x/cc_helper.c | 2 +- target/s390x/crypto_helper.c | 4 +-- target/s390x/diag.c | 14 ++++----- target/s390x/excp_helper.c | 4 +-- target/s390x/fpu_helper.c | 6 ++-- target/s390x/int_helper.c | 14 ++++----- target/s390x/interrupt.c | 3 +- target/s390x/ioinst.c | 40 ++++++++++++------------- target/s390x/mem_helper.c | 43 +++++++++++++------------- target/s390x/misc_helper.c | 27 ++++++----------- 12 files changed, 103 insertions(+), 115 deletions(-) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index b7d408bf81..67126acc99 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -808,8 +808,7 @@ void s390_io_interrupt(uint16_t subchannel_id, uint16_t= subchannel_nr, /* automatically detect the instruction length */ #define ILEN_AUTO 0xff #define RA_IGNORED 0 -void s390_program_interrupt(CPUS390XState *env, uint32_t code, int ilen, - uintptr_t ra); +void s390_program_interrupt(CPUS390XState *env, uint32_t code, uintptr_t r= a); /* service interrupts are floating therefore we must not pass an cpustate = */ void s390_sclp_extint(uint32_t parm); =20 diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index 4b3bd4a804..92c7e45df5 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -157,7 +157,7 @@ int clp_service_call(S390CPU *cpu, uint8_t r2, uintptr_= t ra) int i; =20 if (env->psw.mask & PSW_MASK_PSTATE) { - s390_program_interrupt(env, PGM_PRIVILEGED, 4, ra); + s390_program_interrupt(env, PGM_PRIVILEGED, ra); return 0; } =20 @@ -168,7 +168,7 @@ int clp_service_call(S390CPU *cpu, uint8_t r2, uintptr_= t ra) reqh =3D (ClpReqHdr *)buffer; req_len =3D lduw_p(&reqh->len); if (req_len < 16 || req_len > 8184 || (req_len % 8 !=3D 0)) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } =20 @@ -180,11 +180,11 @@ int clp_service_call(S390CPU *cpu, uint8_t r2, uintpt= r_t ra) resh =3D (ClpRspHdr *)(buffer + req_len); res_len =3D lduw_p(&resh->len); if (res_len < 8 || res_len > 8176 || (res_len % 8 !=3D 0)) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } if ((req_len + res_len) > 8192) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } =20 @@ -390,12 +390,12 @@ int pcilg_service_call(S390CPU *cpu, uint8_t r1, uint= 8_t r2, uintptr_t ra) uint8_t pcias; =20 if (env->psw.mask & PSW_MASK_PSTATE) { - s390_program_interrupt(env, PGM_PRIVILEGED, 4, ra); + s390_program_interrupt(env, PGM_PRIVILEGED, ra); return 0; } =20 if (r2 & 0x1) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return 0; } =20 @@ -429,25 +429,25 @@ int pcilg_service_call(S390CPU *cpu, uint8_t r1, uint= 8_t r2, uintptr_t ra) switch (pcias) { case ZPCI_IO_BAR_MIN...ZPCI_IO_BAR_MAX: if (!len || (len > (8 - (offset & 0x7)))) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } result =3D zpci_read_bar(pbdev, pcias, offset, &data, len); if (result !=3D MEMTX_OK) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } break; case ZPCI_CONFIG_BAR: if (!len || (len > (4 - (offset & 0x3))) || len =3D=3D 3) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } data =3D pci_host_config_read_common( pbdev->pdev, offset, pci_config_size(pbdev->pdev), len); =20 if (zpci_endian_swap(&data, len)) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } break; @@ -489,12 +489,12 @@ int pcistg_service_call(S390CPU *cpu, uint8_t r1, uin= t8_t r2, uintptr_t ra) uint8_t pcias; =20 if (env->psw.mask & PSW_MASK_PSTATE) { - s390_program_interrupt(env, PGM_PRIVILEGED, 4, ra); + s390_program_interrupt(env, PGM_PRIVILEGED, ra); return 0; } =20 if (r2 & 0x1) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return 0; } =20 @@ -536,13 +536,13 @@ int pcistg_service_call(S390CPU *cpu, uint8_t r1, uin= t8_t r2, uintptr_t ra) * A length of 0 is invalid and length should not cross a double w= ord */ if (!len || (len > (8 - (offset & 0x7)))) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } =20 result =3D zpci_write_bar(pbdev, pcias, offset, data, len); if (result !=3D MEMTX_OK) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } break; @@ -550,7 +550,7 @@ int pcistg_service_call(S390CPU *cpu, uint8_t r1, uint8= _t r2, uintptr_t ra) /* ZPCI uses the pseudo BAR number 15 as configuration space */ /* possible access lengths are 1,2,4 and must not cross a word */ if (!len || (len > (4 - (offset & 0x3))) || len =3D=3D 3) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } /* len =3D 1,2,4 so we do not need to test */ @@ -622,12 +622,12 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint= 8_t r2, uintptr_t ra) hwaddr start, end; =20 if (env->psw.mask & PSW_MASK_PSTATE) { - s390_program_interrupt(env, PGM_PRIVILEGED, 4, ra); + s390_program_interrupt(env, PGM_PRIVILEGED, ra); return 0; } =20 if (r2 & 0x1) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return 0; } =20 @@ -709,7 +709,7 @@ int pcistb_service_call(S390CPU *cpu, uint8_t r1, uint8= _t r3, uint64_t gaddr, uint8_t buffer[128]; =20 if (env->psw.mask & PSW_MASK_PSTATE) { - s390_program_interrupt(env, PGM_PRIVILEGED, 6, ra); + s390_program_interrupt(env, PGM_PRIVILEGED, ra); return 0; } =20 @@ -772,7 +772,7 @@ int pcistb_service_call(S390CPU *cpu, uint8_t r1, uint8= _t r3, uint64_t gaddr, =20 if (!memory_region_access_valid(mr, offset, len, true, MEMTXATTRS_UNSPECIFIED)) { - s390_program_interrupt(env, PGM_OPERAND, 6, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } =20 @@ -786,7 +786,7 @@ int pcistb_service_call(S390CPU *cpu, uint8_t r1, uint8= _t r3, uint64_t gaddr, ldq_p(buffer + i * 8), MO_64, MEMTXATTRS_UNSPECIFIE= D); if (result !=3D MEMTX_OK) { - s390_program_interrupt(env, PGM_OPERAND, 6, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } } @@ -797,7 +797,7 @@ int pcistb_service_call(S390CPU *cpu, uint8_t r1, uint8= _t r3, uint64_t gaddr, return 0; =20 specification_error: - s390_program_interrupt(env, PGM_SPECIFICATION, 6, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return 0; } =20 @@ -871,14 +871,14 @@ static int reg_ioat(CPUS390XState *env, S390PCIIOMMU = *iommu, ZpciFib fib, pba &=3D ~0xfff; pal |=3D 0xfff; if (pba > pal || pba < ZPCI_SDMA_ADDR || pal > ZPCI_EDMA_ADDR) { - s390_program_interrupt(env, PGM_OPERAND, 6, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return -EINVAL; } =20 /* currently we only support designation type 1 with translation */ if (!(dt =3D=3D ZPCI_IOTA_RTTO && t)) { error_report("unsupported ioat dt %d t %d", dt, t); - s390_program_interrupt(env, PGM_OPERAND, 6, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return -EINVAL; } =20 @@ -1003,7 +1003,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uin= t64_t fiba, uint8_t ar, uint64_t cc =3D ZPCI_PCI_LS_OK; =20 if (env->psw.mask & PSW_MASK_PSTATE) { - s390_program_interrupt(env, PGM_PRIVILEGED, 6, ra); + s390_program_interrupt(env, PGM_PRIVILEGED, ra); return 0; } =20 @@ -1012,7 +1012,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uin= t64_t fiba, uint8_t ar, fh =3D env->regs[r1] >> 32; =20 if (fiba & 0x7) { - s390_program_interrupt(env, PGM_SPECIFICATION, 6, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return 0; } =20 @@ -1040,7 +1040,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uin= t64_t fiba, uint8_t ar, } =20 if (fib.fmt !=3D 0) { - s390_program_interrupt(env, PGM_OPERAND, 6, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return 0; } =20 @@ -1151,7 +1151,7 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uin= t64_t fiba, uint8_t ar, break; } default: - s390_program_interrupt(&cpu->env, PGM_OPERAND, 6, ra); + s390_program_interrupt(&cpu->env, PGM_OPERAND, ra); cc =3D ZPCI_PCI_LS_ERR; } =20 @@ -1171,7 +1171,7 @@ int stpcifc_service_call(S390CPU *cpu, uint8_t r1, ui= nt64_t fiba, uint8_t ar, uint64_t cc =3D ZPCI_PCI_LS_OK; =20 if (env->psw.mask & PSW_MASK_PSTATE) { - s390_program_interrupt(env, PGM_PRIVILEGED, 6, ra); + s390_program_interrupt(env, PGM_PRIVILEGED, ra); return 0; } =20 @@ -1185,7 +1185,7 @@ int stpcifc_service_call(S390CPU *cpu, uint8_t r1, ui= nt64_t fiba, uint8_t ar, } =20 if (fiba & 0x7) { - s390_program_interrupt(env, PGM_SPECIFICATION, 6, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return 0; } =20 diff --git a/target/s390x/cc_helper.c b/target/s390x/cc_helper.c index cf68792733..3cb00bcb09 100644 --- a/target/s390x/cc_helper.c +++ b/target/s390x/cc_helper.c @@ -588,7 +588,7 @@ void HELPER(sacf)(CPUS390XState *env, uint64_t a1) break; default: HELPER_LOG("unknown sacf mode: %" PRIx64 "\n", a1); - s390_program_interrupt(env, PGM_SPECIFICATION, 2, GETPC()); + s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); break; } } diff --git a/target/s390x/crypto_helper.c b/target/s390x/crypto_helper.c index 5c79790187..1f83987e9d 100644 --- a/target/s390x/crypto_helper.c +++ b/target/s390x/crypto_helper.c @@ -34,7 +34,7 @@ uint32_t HELPER(msa)(CPUS390XState *env, uint32_t r1, uin= t32_t r2, uint32_t r3, case S390_FEAT_TYPE_PCKMO: case S390_FEAT_TYPE_PCC: if (mod) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return 0; } break; @@ -42,7 +42,7 @@ uint32_t HELPER(msa)(CPUS390XState *env, uint32_t r1, uin= t32_t r2, uint32_t r3, =20 s390_get_feat_block(type, subfunc); if (!test_be_bit(fc, subfunc)) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return 0; } =20 diff --git a/target/s390x/diag.c b/target/s390x/diag.c index 65eabf0461..53c2f81f2a 100644 --- a/target/s390x/diag.c +++ b/target/s390x/diag.c @@ -61,12 +61,12 @@ void handle_diag_308(CPUS390XState *env, uint64_t r1, u= int64_t r3, uintptr_t ra) IplParameterBlock *iplb; =20 if (env->psw.mask & PSW_MASK_PSTATE) { - s390_program_interrupt(env, PGM_PRIVILEGED, ILEN_AUTO, ra); + s390_program_interrupt(env, PGM_PRIVILEGED, ra); return; } =20 if ((subcode & ~0x0ffffULL) || (subcode > 6)) { - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return; } =20 @@ -82,13 +82,13 @@ void handle_diag_308(CPUS390XState *env, uint64_t r1, u= int64_t r3, uintptr_t ra) break; case 5: if ((r1 & 1) || (addr & 0x0fffULL)) { - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return; } if (!address_space_access_valid(&address_space_memory, addr, sizeof(IplParameterBlock), false, MEMTXATTRS_UNSPECIFIED)) { - s390_program_interrupt(env, PGM_ADDRESSING, ILEN_AUTO, ra); + s390_program_interrupt(env, PGM_ADDRESSING, ra); return; } iplb =3D g_new0(IplParameterBlock, 1); @@ -112,13 +112,13 @@ out: return; case 6: if ((r1 & 1) || (addr & 0x0fffULL)) { - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return; } if (!address_space_access_valid(&address_space_memory, addr, sizeof(IplParameterBlock), true, MEMTXATTRS_UNSPECIFIED)) { - s390_program_interrupt(env, PGM_ADDRESSING, ILEN_AUTO, ra); + s390_program_interrupt(env, PGM_ADDRESSING, ra); return; } iplb =3D s390_ipl_get_iplb(); @@ -130,7 +130,7 @@ out: } return; default: - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); break; } } diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index 681a9c59e1..089623a248 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -75,7 +75,7 @@ void QEMU_NORETURN tcg_s390_vector_exception(CPUS390XStat= e *env, uint32_t vxc, =20 /* Always store the VXC into the FPC, without AFP it is undefined */ env->fpc =3D deposit32(env->fpc, 8, 8, vxc); - tcg_s390_program_interrupt(env, PGM_VECTOR_PROCESSING, ILEN_AUTO, ra); + tcg_s390_program_interrupt(env, PGM_VECTOR_PROCESSING, ra); } =20 void HELPER(data_exception)(CPUS390XState *env, uint32_t dxc) @@ -614,7 +614,7 @@ void s390x_cpu_do_unaligned_access(CPUState *cs, vaddr = addr, S390CPU *cpu =3D S390_CPU(cs); CPUS390XState *env =3D &cpu->env; =20 - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, retaddr); + s390_program_interrupt(env, PGM_SPECIFICATION, retaddr); } =20 #endif /* CONFIG_USER_ONLY */ diff --git a/target/s390x/fpu_helper.c b/target/s390x/fpu_helper.c index 5faf973c6c..7228eb96e2 100644 --- a/target/s390x/fpu_helper.c +++ b/target/s390x/fpu_helper.c @@ -825,7 +825,7 @@ void HELPER(sfpc)(CPUS390XState *env, uint64_t fpc) { if (fpc_to_rnd[fpc & 0x7] =3D=3D -1 || fpc & 0x03030088u || (!s390_has_feat(S390_FEAT_FLOATING_POINT_EXT) && fpc & 0x4)) { - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, GETPC()); + s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } =20 /* Install everything in the main FPC. */ @@ -843,7 +843,7 @@ void HELPER(sfas)(CPUS390XState *env, uint64_t fpc) =20 if (fpc_to_rnd[fpc & 0x7] =3D=3D -1 || fpc & 0x03030088u || (!s390_has_feat(S390_FEAT_FLOATING_POINT_EXT) && fpc & 0x4)) { - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, GETPC()); + s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } =20 /* @@ -880,7 +880,7 @@ void HELPER(sfas)(CPUS390XState *env, uint64_t fpc) void HELPER(srnm)(CPUS390XState *env, uint64_t rnd) { if (rnd > 0x7 || fpc_to_rnd[rnd & 0x7] =3D=3D -1) { - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, GETPC()); + s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } =20 env->fpc =3D deposit32(env->fpc, 0, 3, rnd); diff --git a/target/s390x/int_helper.c b/target/s390x/int_helper.c index d13cc49be6..1d29a1fc1f 100644 --- a/target/s390x/int_helper.c +++ b/target/s390x/int_helper.c @@ -39,7 +39,7 @@ int64_t HELPER(divs32)(CPUS390XState *env, int64_t a, int= 64_t b64) int64_t q; =20 if (b =3D=3D 0) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, ILEN_AUTO, GETPC()); + s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } =20 ret =3D q =3D a / b; @@ -47,7 +47,7 @@ int64_t HELPER(divs32)(CPUS390XState *env, int64_t a, int= 64_t b64) =20 /* Catch non-representable quotient. */ if (ret !=3D q) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, ILEN_AUTO, GETPC()); + s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } =20 return ret; @@ -60,7 +60,7 @@ uint64_t HELPER(divu32)(CPUS390XState *env, uint64_t a, u= int64_t b64) uint64_t q; =20 if (b =3D=3D 0) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, ILEN_AUTO, GETPC()); + s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } =20 ret =3D q =3D a / b; @@ -68,7 +68,7 @@ uint64_t HELPER(divu32)(CPUS390XState *env, uint64_t a, u= int64_t b64) =20 /* Catch non-representable quotient. */ if (ret !=3D q) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, ILEN_AUTO, GETPC()); + s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } =20 return ret; @@ -79,7 +79,7 @@ int64_t HELPER(divs64)(CPUS390XState *env, int64_t a, int= 64_t b) { /* Catch divide by zero, and non-representable quotient (MIN / -1). */ if (b =3D=3D 0 || (b =3D=3D -1 && a =3D=3D (1ll << 63))) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, ILEN_AUTO, GETPC()); + s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } env->retxl =3D a % b; return a / b; @@ -92,7 +92,7 @@ uint64_t HELPER(divu64)(CPUS390XState *env, uint64_t ah, = uint64_t al, uint64_t ret; /* Signal divide by zero. */ if (b =3D=3D 0) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, ILEN_AUTO, GETPC()); + s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } if (ah =3D=3D 0) { /* 64 -> 64/64 case */ @@ -106,7 +106,7 @@ uint64_t HELPER(divu64)(CPUS390XState *env, uint64_t ah= , uint64_t al, env->retxl =3D a % b; ret =3D q; if (ret !=3D q) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, ILEN_AUTO, GETPC= ()); + s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } #else /* 32-bit hosts would need special wrapper functionality - just ab= ort if diff --git a/target/s390x/interrupt.c b/target/s390x/interrupt.c index b798e2ecbe..2b71e03914 100644 --- a/target/s390x/interrupt.c +++ b/target/s390x/interrupt.c @@ -34,8 +34,7 @@ void trigger_pgm_exception(CPUS390XState *env, uint32_t c= ode, uint32_t ilen) } } =20 -void s390_program_interrupt(CPUS390XState *env, uint32_t code, int ilen, - uintptr_t ra) +void s390_program_interrupt(CPUS390XState *env, uint32_t code, uintptr_t r= a) { if (kvm_enabled()) { kvm_s390_program_interrupt(env_archcpu(env), code); diff --git a/target/s390x/ioinst.c b/target/s390x/ioinst.c index 83c164a168..c437a1d8c6 100644 --- a/target/s390x/ioinst.c +++ b/target/s390x/ioinst.c @@ -44,7 +44,7 @@ void ioinst_handle_xsch(S390CPU *cpu, uint64_t reg1, uint= ptr_t ra) SubchDev *sch; =20 if (ioinst_disassemble_sch_ident(reg1, &m, &cssid, &ssid, &schid)) { - s390_program_interrupt(&cpu->env, PGM_OPERAND, 4, ra); + s390_program_interrupt(&cpu->env, PGM_OPERAND, ra); return; } trace_ioinst_sch_id("xsch", cssid, ssid, schid); @@ -62,7 +62,7 @@ void ioinst_handle_csch(S390CPU *cpu, uint64_t reg1, uint= ptr_t ra) SubchDev *sch; =20 if (ioinst_disassemble_sch_ident(reg1, &m, &cssid, &ssid, &schid)) { - s390_program_interrupt(&cpu->env, PGM_OPERAND, 4, ra); + s390_program_interrupt(&cpu->env, PGM_OPERAND, ra); return; } trace_ioinst_sch_id("csch", cssid, ssid, schid); @@ -80,7 +80,7 @@ void ioinst_handle_hsch(S390CPU *cpu, uint64_t reg1, uint= ptr_t ra) SubchDev *sch; =20 if (ioinst_disassemble_sch_ident(reg1, &m, &cssid, &ssid, &schid)) { - s390_program_interrupt(&cpu->env, PGM_OPERAND, 4, ra); + s390_program_interrupt(&cpu->env, PGM_OPERAND, ra); return; } trace_ioinst_sch_id("hsch", cssid, ssid, schid); @@ -116,7 +116,7 @@ void ioinst_handle_msch(S390CPU *cpu, uint64_t reg1, ui= nt32_t ipb, uintptr_t ra) =20 addr =3D decode_basedisp_s(env, ipb, &ar); if (addr & 3) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return; } if (s390_cpu_virt_mem_read(cpu, addr, ar, &schib, sizeof(schib))) { @@ -125,7 +125,7 @@ void ioinst_handle_msch(S390CPU *cpu, uint64_t reg1, ui= nt32_t ipb, uintptr_t ra) } if (ioinst_disassemble_sch_ident(reg1, &m, &cssid, &ssid, &schid) || !ioinst_schib_valid(&schib)) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return; } trace_ioinst_sch_id("msch", cssid, ssid, schid); @@ -173,7 +173,7 @@ void ioinst_handle_ssch(S390CPU *cpu, uint64_t reg1, ui= nt32_t ipb, uintptr_t ra) =20 addr =3D decode_basedisp_s(env, ipb, &ar); if (addr & 3) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return; } if (s390_cpu_virt_mem_read(cpu, addr, ar, &orig_orb, sizeof(orb))) { @@ -183,7 +183,7 @@ void ioinst_handle_ssch(S390CPU *cpu, uint64_t reg1, ui= nt32_t ipb, uintptr_t ra) copy_orb_from_guest(&orb, &orig_orb); if (ioinst_disassemble_sch_ident(reg1, &m, &cssid, &ssid, &schid) || !ioinst_orb_valid(&orb)) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return; } trace_ioinst_sch_id("ssch", cssid, ssid, schid); @@ -205,7 +205,7 @@ void ioinst_handle_stcrw(S390CPU *cpu, uint32_t ipb, ui= ntptr_t ra) =20 addr =3D decode_basedisp_s(env, ipb, &ar); if (addr & 3) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return; } =20 @@ -236,7 +236,7 @@ void ioinst_handle_stsch(S390CPU *cpu, uint64_t reg1, u= int32_t ipb, =20 addr =3D decode_basedisp_s(env, ipb, &ar); if (addr & 3) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return; } =20 @@ -247,7 +247,7 @@ void ioinst_handle_stsch(S390CPU *cpu, uint64_t reg1, u= int32_t ipb, * access execption if it is not) first. */ if (!s390_cpu_virt_mem_check_write(cpu, addr, ar, sizeof(schib))) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); } else { s390_cpu_virt_mem_handle_exc(cpu, ra); } @@ -299,13 +299,13 @@ int ioinst_handle_tsch(S390CPU *cpu, uint64_t reg1, u= int32_t ipb, uintptr_t ra) uint8_t ar; =20 if (ioinst_disassemble_sch_ident(reg1, &m, &cssid, &ssid, &schid)) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return -EIO; } trace_ioinst_sch_id("tsch", cssid, ssid, schid); addr =3D decode_basedisp_s(env, ipb, &ar); if (addr & 3) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return -EIO; } =20 @@ -613,7 +613,7 @@ void ioinst_handle_chsc(S390CPU *cpu, uint32_t ipb, uin= tptr_t ra) addr =3D env->regs[reg]; /* Page boundary? */ if (addr & 0xfff) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); return; } /* @@ -629,7 +629,7 @@ void ioinst_handle_chsc(S390CPU *cpu, uint32_t ipb, uin= tptr_t ra) len =3D be16_to_cpu(req->len); /* Length field valid? */ if ((len < 16) || (len > 4088) || (len & 7)) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return; } memset((char *)req + len, 0, TARGET_PAGE_SIZE - len); @@ -678,7 +678,7 @@ void ioinst_handle_schm(S390CPU *cpu, uint64_t reg1, ui= nt64_t reg2, trace_ioinst("schm"); =20 if (SCHM_REG1_RES(reg1)) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return; } =20 @@ -687,7 +687,7 @@ void ioinst_handle_schm(S390CPU *cpu, uint64_t reg1, ui= nt64_t reg2, dct =3D SCHM_REG1_DCT(reg1); =20 if (update && (reg2 & 0x000000000000001f)) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return; } =20 @@ -700,7 +700,7 @@ void ioinst_handle_rsch(S390CPU *cpu, uint64_t reg1, ui= ntptr_t ra) SubchDev *sch; =20 if (ioinst_disassemble_sch_ident(reg1, &m, &cssid, &ssid, &schid)) { - s390_program_interrupt(&cpu->env, PGM_OPERAND, 4, ra); + s390_program_interrupt(&cpu->env, PGM_OPERAND, ra); return; } trace_ioinst_sch_id("rsch", cssid, ssid, schid); @@ -724,7 +724,7 @@ void ioinst_handle_rchp(S390CPU *cpu, uint64_t reg1, ui= ntptr_t ra) CPUS390XState *env =3D &cpu->env; =20 if (RCHP_REG1_RES(reg1)) { - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return; } =20 @@ -747,7 +747,7 @@ void ioinst_handle_rchp(S390CPU *cpu, uint64_t reg1, ui= ntptr_t ra) break; default: /* Invalid channel subsystem. */ - s390_program_interrupt(env, PGM_OPERAND, 4, ra); + s390_program_interrupt(env, PGM_OPERAND, ra); return; } setcc(cpu, cc); @@ -758,6 +758,6 @@ void ioinst_handle_sal(S390CPU *cpu, uint64_t reg1, uin= tptr_t ra) { /* We do not provide address limit checking, so let's suppress it. */ if (SAL_REG1_INVALID(reg1) || reg1 & 0x000000000000ffff) { - s390_program_interrupt(&cpu->env, PGM_OPERAND, 4, ra); + s390_program_interrupt(&cpu->env, PGM_OPERAND, ra); } } diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 08c5cc6a99..77d2eb96d4 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -71,7 +71,7 @@ static inline void check_alignment(CPUS390XState *env, ui= nt64_t v, int wordsize, uintptr_t ra) { if (v % wordsize) { - s390_program_interrupt(env, PGM_SPECIFICATION, 6, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } } =20 @@ -730,7 +730,7 @@ void HELPER(srst)(CPUS390XState *env, uint32_t r1, uint= 32_t r2) =20 /* Bits 32-55 must contain all 0. */ if (env->regs[0] & 0xffffff00u) { - s390_program_interrupt(env, PGM_SPECIFICATION, 6, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 str =3D get_address(env, r2); @@ -767,7 +767,7 @@ void HELPER(srstu)(CPUS390XState *env, uint32_t r1, uin= t32_t r2) =20 /* Bits 32-47 of R0 must be zero. */ if (env->regs[0] & 0xffff0000u) { - s390_program_interrupt(env, PGM_SPECIFICATION, 6, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 str =3D get_address(env, r2); @@ -846,7 +846,7 @@ uint32_t HELPER(mvpg)(CPUS390XState *env, uint64_t r0, = uint64_t r1, uint64_t r2) S390Access srca, desta; =20 if ((f && s) || extract64(r0, 12, 4)) { - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, GETPC()); + s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } =20 r1 =3D wrap_address(env, r1 & TARGET_PAGE_MASK); @@ -879,7 +879,7 @@ uint32_t HELPER(mvst)(CPUS390XState *env, uint32_t r1, = uint32_t r2) int i; =20 if (env->regs[0] & 0xffffff00ull) { - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 /* @@ -911,8 +911,7 @@ void HELPER(lam)(CPUS390XState *env, uint32_t r1, uint6= 4_t a2, uint32_t r3) int i; =20 if (a2 & 0x3) { - /* we either came here by lam or lamy, which have different length= s */ - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -932,7 +931,7 @@ void HELPER(stam)(CPUS390XState *env, uint32_t r1, uint= 64_t a2, uint32_t r3) int i; =20 if (a2 & 0x3) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -1888,7 +1887,7 @@ static uint32_t do_csst(CPUS390XState *env, uint32_t = r3, uint64_t a1, return cc; =20 spec_exception: - s390_program_interrupt(env, PGM_SPECIFICATION, 6, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); g_assert_not_reached(); } =20 @@ -1912,7 +1911,7 @@ void HELPER(lctlg)(CPUS390XState *env, uint32_t r1, u= int64_t a2, uint32_t r3) uint32_t i; =20 if (src & 0x7) { - s390_program_interrupt(env, PGM_SPECIFICATION, 6, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -1945,7 +1944,7 @@ void HELPER(lctl)(CPUS390XState *env, uint32_t r1, ui= nt64_t a2, uint32_t r3) uint32_t i; =20 if (src & 0x3) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -1976,7 +1975,7 @@ void HELPER(stctg)(CPUS390XState *env, uint32_t r1, u= int64_t a2, uint32_t r3) uint32_t i; =20 if (dest & 0x7) { - s390_program_interrupt(env, PGM_SPECIFICATION, 6, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -1996,7 +1995,7 @@ void HELPER(stctl)(CPUS390XState *env, uint32_t r1, u= int64_t a2, uint32_t r3) uint32_t i; =20 if (dest & 0x3) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -2168,7 +2167,7 @@ uint32_t HELPER(mvcs)(CPUS390XState *env, uint64_t l,= uint64_t a1, uint64_t a2) =20 if (!(env->psw.mask & PSW_MASK_DAT) || !(env->cregs[0] & CR0_SECONDARY= ) || psw_as =3D=3D AS_HOME || psw_as =3D=3D AS_ACCREG) { - s390_program_interrupt(env, PGM_SPECIAL_OP, ILEN_AUTO, ra); + s390_program_interrupt(env, PGM_SPECIAL_OP, ra); } =20 l =3D wrap_length32(env, l); @@ -2199,7 +2198,7 @@ uint32_t HELPER(mvcp)(CPUS390XState *env, uint64_t l,= uint64_t a1, uint64_t a2) =20 if (!(env->psw.mask & PSW_MASK_DAT) || !(env->cregs[0] & CR0_SECONDARY= ) || psw_as =3D=3D AS_HOME || psw_as =3D=3D AS_ACCREG) { - s390_program_interrupt(env, PGM_SPECIAL_OP, ILEN_AUTO, ra); + s390_program_interrupt(env, PGM_SPECIAL_OP, ra); } =20 l =3D wrap_length32(env, l); @@ -2226,7 +2225,7 @@ void HELPER(idte)(CPUS390XState *env, uint64_t r1, ui= nt64_t r2, uint32_t m4) uint16_t entries, i, index =3D 0; =20 if (r2 & 0xff000) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 if (!(r2 & 0x800)) { @@ -2370,7 +2369,7 @@ uint64_t HELPER(lra)(CPUS390XState *env, uint64_t add= r) =20 /* XXX incomplete - has more corner cases */ if (!(env->psw.mask & PSW_MASK_64) && (addr >> 32)) { - s390_program_interrupt(env, PGM_SPECIAL_OP, 2, GETPC()); + s390_program_interrupt(env, PGM_SPECIAL_OP, GETPC()); } =20 old_exc =3D cs->exception_index; @@ -2539,7 +2538,7 @@ uint32_t HELPER(mvcos)(CPUS390XState *env, uint64_t d= est, uint64_t src, __func__, dest, src, len); =20 if (!(env->psw.mask & PSW_MASK_DAT)) { - s390_program_interrupt(env, PGM_SPECIAL_OP, 6, ra); + s390_program_interrupt(env, PGM_SPECIAL_OP, ra); } =20 /* OAC (operand access control) for the first operand -> dest */ @@ -2570,14 +2569,14 @@ uint32_t HELPER(mvcos)(CPUS390XState *env, uint64_t= dest, uint64_t src, } =20 if (dest_a && dest_as =3D=3D AS_HOME && (env->psw.mask & PSW_MASK_PSTA= TE)) { - s390_program_interrupt(env, PGM_SPECIAL_OP, 6, ra); + s390_program_interrupt(env, PGM_SPECIAL_OP, ra); } if (!(env->cregs[0] & CR0_SECONDARY) && (dest_as =3D=3D AS_SECONDARY || src_as =3D=3D AS_SECONDARY)) { - s390_program_interrupt(env, PGM_SPECIAL_OP, 6, ra); + s390_program_interrupt(env, PGM_SPECIAL_OP, ra); } if (!psw_key_valid(env, dest_key) || !psw_key_valid(env, src_key)) { - s390_program_interrupt(env, PGM_PRIVILEGED, 6, ra); + s390_program_interrupt(env, PGM_PRIVILEGED, ra); } =20 len =3D wrap_length32(env, len); @@ -2591,7 +2590,7 @@ uint32_t HELPER(mvcos)(CPUS390XState *env, uint64_t d= est, uint64_t src, (env->psw.mask & PSW_MASK_PSTATE)) { qemu_log_mask(LOG_UNIMP, "%s: AR-mode and PSTATE support missing\n= ", __func__); - s390_program_interrupt(env, PGM_ADDRESSING, 6, ra); + s390_program_interrupt(env, PGM_ADDRESSING, ra); } =20 /* FIXME: Access using correct keys and AR-mode */ diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c index 7530dcb8f3..9fbb37cfb9 100644 --- a/target/s390x/misc_helper.c +++ b/target/s390x/misc_helper.c @@ -106,7 +106,7 @@ uint32_t HELPER(servc)(CPUS390XState *env, uint64_t r1,= uint64_t r2) int r =3D sclp_service_call(env, r1, r2); qemu_mutex_unlock_iothread(); if (r < 0) { - s390_program_interrupt(env, -r, 4, GETPC()); + s390_program_interrupt(env, -r, GETPC()); } return r; } @@ -143,7 +143,7 @@ void HELPER(diag)(CPUS390XState *env, uint32_t r1, uint= 32_t r3, uint32_t num) } =20 if (r) { - s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, GETPC()); + s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } } =20 @@ -222,7 +222,7 @@ void HELPER(sckpf)(CPUS390XState *env, uint64_t r0) uint32_t val =3D r0; =20 if (val & 0xffff0000) { - s390_program_interrupt(env, PGM_SPECIFICATION, 2, GETPC()); + s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } env->todpr =3D val; } @@ -266,7 +266,7 @@ uint32_t HELPER(stsi)(CPUS390XState *env, uint64_t a0, = uint64_t r0, uint64_t r1) } =20 if ((r0 & STSI_R0_RESERVED_MASK) || (r1 & STSI_R1_RESERVED_MASK)) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 if ((r0 & STSI_R0_FC_MASK) =3D=3D STSI_R0_FC_CURRENT) { @@ -276,7 +276,7 @@ uint32_t HELPER(stsi)(CPUS390XState *env, uint64_t a0, = uint64_t r0, uint64_t r1) } =20 if (a0 & ~TARGET_PAGE_MASK) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 /* count the cpus and split them into configured and reserved ones */ @@ -509,7 +509,7 @@ uint32_t HELPER(tpi)(CPUS390XState *env, uint64_t addr) LowCore *lowcore; =20 if (addr & 0x3) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 qemu_mutex_lock_iothread(); @@ -573,17 +573,8 @@ void HELPER(chsc)(CPUS390XState *env, uint64_t inst) #ifndef CONFIG_USER_ONLY void HELPER(per_check_exception)(CPUS390XState *env) { - uint32_t ilen; - if (env->per_perc_atmid) { - /* - * FIXME: ILEN_AUTO is most probably the right thing to use. ilen - * always has to match the instruction referenced in the PSW. E.g. - * if a PER interrupt is triggered via EXECUTE, we have to use ilen - * of EXECUTE, while per_address contains the target of EXECUTE. - */ - ilen =3D get_ilen(cpu_ldub_code(env, env->per_address)); - s390_program_interrupt(env, PGM_PER, ilen, GETPC()); + s390_program_interrupt(env, PGM_PER, GETPC()); } } =20 @@ -673,7 +664,7 @@ uint32_t HELPER(stfle)(CPUS390XState *env, uint64_t add= r) int i; =20 if (addr & 0x7) { - s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra); + s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 prepare_stfl(); @@ -746,7 +737,7 @@ void HELPER(sic)(CPUS390XState *env, uint64_t r1, uint6= 4_t r3) qemu_mutex_unlock_iothread(); /* css_do_sic() may actually return a PGM_xxx value to inject */ if (r) { - s390_program_interrupt(env, -r, 4, GETPC()); + s390_program_interrupt(env, -r, GETPC()); } } =20 --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613852; cv=none; d=zoho.com; s=zohoarc; b=JrhzpOUD7p5rM6lp2NIC9Fm9J5yYjIRpAD7K+HZ/13zgF5fbC8/VEflrFDQjsp2eYU1bipJ1MT0gbFYG9mwtdBSpaPk3xgT/CH2XTLxj85Y8RdTN9v3kBAAt5K571f8p2rNfjMeJoMiQVNswVjcsDhkEDRBE8N3k64rV8p0HYLA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613852; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=q9Mr42wDaAqxtgZGR7xHO1prxR6bIhQ0Pkgg+dKZZYM=; b=RxybJsFDczIyEtInlAyaRUFCpAai8vKrSlXd0UtYpRTK/VCQFhs5n0qi1CC1hZzs73cjtAeHdFh8IoIWbs0WRTGPLu8MALBiT1m3GBxkq7zhf5PehUxHrVuvHXaI3Fy2O9vCeVfWG4v3eIoPTfMfTs/2riXYuNoYjf1T1/+z5Qg= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613852618267.42945981311243; Fri, 27 Sep 2019 12:50:52 -0700 (PDT) Received: from localhost ([::1]:56918 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwGO-0004xS-Nh for importer@patchew.org; Fri, 27 Sep 2019 15:50:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46487) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5g-0003IK-BA for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5b-0006Hu-RO for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:43 -0400 Received: from mail-pf1-x444.google.com ([2607:f8b0:4864:20::444]:36970) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5b-0006Gj-AH for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:39 -0400 Received: by mail-pf1-x444.google.com with SMTP id y5so2139185pfo.4 for ; Fri, 27 Sep 2019 12:39:39 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=q9Mr42wDaAqxtgZGR7xHO1prxR6bIhQ0Pkgg+dKZZYM=; b=WsQEOkFFJ+TCVYhVxANe1S616BnSiOeAt8ShBCD1nI/puYWNa1oEA48lP67xMRgxw+ aIWTPKhb7iLr/RbJrYZqFcSeXqq1O2IKFi8Xbmjs6AAKBaODAYAgdwEpwYcb1jFQdHtf 0ZqbP7qhnTZS6ul/a8keVp9doRaJ8nWwyW72MyD3N7MXEIJ8poi+nSmCx8URRyYCFnGA rJUoQKGHAGaZVzyszQk5dX5tgFcN8e0roqxcp7boZEyGiZuM21CrZP06VQ0BZ5nBvY6F ZFv+R4KorSFzCVidZpTgfGlYoakPwaAYdYF0SIw70AiYkBChNnDxqjSspDo35+61OqSp 1OOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=q9Mr42wDaAqxtgZGR7xHO1prxR6bIhQ0Pkgg+dKZZYM=; b=BPZrMOl4ThZFS8kICxy3WR73dvaQqq2ROmJjyTFuRq+Yzk78z1RfYgyeM3BY58HZ12 YWe1RoAM8ExfItGT9KrbL3KFDrQ/PdABlI2iNWfTL1kLpKsO6BZT3cUyYPFgu46IHCjy 0u4tUBtaIdW59nojAeuJB0QLEVjyVMBRsfWJjMOEyNv7+0EVgiJCpHfMKMEk5B8sOURl D4kgPYkMhTWs4mBBViuDW9jY8UIWTlWkQauWt5KvGqgXyv40VYLBVMHeDHa8tVfEp5o0 5gFnvql7TKTTP9Elcfz6KGsPGme4ZgDuQq7fSuhO09Plb8suLC+tD4rRDQL/BXckxlgl dHyg== X-Gm-Message-State: APjAAAVuUmQ0RlAVyNbaMv/KyKOLr/D7lAFHOgnvLAvD/djGXtmdqRWs HTKGWlGbMKSVqJXE9Y9pohZeRRp2Gp8= X-Google-Smtp-Source: APXvYqyIKCJGNTSBKJSrJAN1EiDNGtvY/FJxCGZ2hEfue7FPv6Ledk5ozlllsliEhjf4wrATTTQMjw== X-Received: by 2002:a63:5fcf:: with SMTP id t198mr10838130pgb.270.1569613177419; Fri, 27 Sep 2019 12:39:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 04/18] target/s390x: Use tcg_s390_program_interrupt in TCG helpers Date: Fri, 27 Sep 2019 12:39:11 -0700 Message-Id: <20190927193925.23567-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::444 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Replace all uses of s390_program_interrupt within files that are marked CONFIG_TCG. These are necessarily tcg-only. This lets each of these users benefit from the QEMU_NORETURN attribute on tcg_s390_program_interrupt. Acked-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/cc_helper.c | 4 ++-- target/s390x/crypto_helper.c | 7 +++---- target/s390x/excp_helper.c | 2 +- target/s390x/fpu_helper.c | 6 +++--- target/s390x/int_helper.c | 15 +++++++------- target/s390x/mem_helper.c | 40 ++++++++++++++++++------------------ target/s390x/misc_helper.c | 18 ++++++++-------- 7 files changed, 46 insertions(+), 46 deletions(-) diff --git a/target/s390x/cc_helper.c b/target/s390x/cc_helper.c index 3cb00bcb09..44731e4a85 100644 --- a/target/s390x/cc_helper.c +++ b/target/s390x/cc_helper.c @@ -21,6 +21,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "internal.h" +#include "tcg_s390x.h" #include "exec/exec-all.h" #include "exec/helper-proto.h" #include "qemu/host-utils.h" @@ -588,8 +589,7 @@ void HELPER(sacf)(CPUS390XState *env, uint64_t a1) break; default: HELPER_LOG("unknown sacf mode: %" PRIx64 "\n", a1); - s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); - break; + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } } #endif diff --git a/target/s390x/crypto_helper.c b/target/s390x/crypto_helper.c index 1f83987e9d..ff3fbc3950 100644 --- a/target/s390x/crypto_helper.c +++ b/target/s390x/crypto_helper.c @@ -13,6 +13,7 @@ #include "qemu/osdep.h" #include "qemu/main-loop.h" #include "internal.h" +#include "tcg_s390x.h" #include "exec/helper-proto.h" #include "exec/exec-all.h" #include "exec/cpu_ldst.h" @@ -34,16 +35,14 @@ uint32_t HELPER(msa)(CPUS390XState *env, uint32_t r1, u= int32_t r2, uint32_t r3, case S390_FEAT_TYPE_PCKMO: case S390_FEAT_TYPE_PCC: if (mod) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); - return 0; + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } break; } =20 s390_get_feat_block(type, subfunc); if (!test_be_bit(fc, subfunc)) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); - return 0; + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 switch (fc) { diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index 089623a248..dbff772d34 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -614,7 +614,7 @@ void s390x_cpu_do_unaligned_access(CPUState *cs, vaddr = addr, S390CPU *cpu =3D S390_CPU(cs); CPUS390XState *env =3D &cpu->env; =20 - s390_program_interrupt(env, PGM_SPECIFICATION, retaddr); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, retaddr); } =20 #endif /* CONFIG_USER_ONLY */ diff --git a/target/s390x/fpu_helper.c b/target/s390x/fpu_helper.c index 7228eb96e2..8bb9f54fd0 100644 --- a/target/s390x/fpu_helper.c +++ b/target/s390x/fpu_helper.c @@ -825,7 +825,7 @@ void HELPER(sfpc)(CPUS390XState *env, uint64_t fpc) { if (fpc_to_rnd[fpc & 0x7] =3D=3D -1 || fpc & 0x03030088u || (!s390_has_feat(S390_FEAT_FLOATING_POINT_EXT) && fpc & 0x4)) { - s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } =20 /* Install everything in the main FPC. */ @@ -843,7 +843,7 @@ void HELPER(sfas)(CPUS390XState *env, uint64_t fpc) =20 if (fpc_to_rnd[fpc & 0x7] =3D=3D -1 || fpc & 0x03030088u || (!s390_has_feat(S390_FEAT_FLOATING_POINT_EXT) && fpc & 0x4)) { - s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } =20 /* @@ -880,7 +880,7 @@ void HELPER(sfas)(CPUS390XState *env, uint64_t fpc) void HELPER(srnm)(CPUS390XState *env, uint64_t rnd) { if (rnd > 0x7 || fpc_to_rnd[rnd & 0x7] =3D=3D -1) { - s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } =20 env->fpc =3D deposit32(env->fpc, 0, 3, rnd); diff --git a/target/s390x/int_helper.c b/target/s390x/int_helper.c index 1d29a1fc1f..658507dd6d 100644 --- a/target/s390x/int_helper.c +++ b/target/s390x/int_helper.c @@ -21,6 +21,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "internal.h" +#include "tcg_s390x.h" #include "exec/exec-all.h" #include "qemu/host-utils.h" #include "exec/helper-proto.h" @@ -39,7 +40,7 @@ int64_t HELPER(divs32)(CPUS390XState *env, int64_t a, int= 64_t b64) int64_t q; =20 if (b =3D=3D 0) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); + tcg_s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } =20 ret =3D q =3D a / b; @@ -47,7 +48,7 @@ int64_t HELPER(divs32)(CPUS390XState *env, int64_t a, int= 64_t b64) =20 /* Catch non-representable quotient. */ if (ret !=3D q) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); + tcg_s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } =20 return ret; @@ -60,7 +61,7 @@ uint64_t HELPER(divu32)(CPUS390XState *env, uint64_t a, u= int64_t b64) uint64_t q; =20 if (b =3D=3D 0) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); + tcg_s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } =20 ret =3D q =3D a / b; @@ -68,7 +69,7 @@ uint64_t HELPER(divu32)(CPUS390XState *env, uint64_t a, u= int64_t b64) =20 /* Catch non-representable quotient. */ if (ret !=3D q) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); + tcg_s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } =20 return ret; @@ -79,7 +80,7 @@ int64_t HELPER(divs64)(CPUS390XState *env, int64_t a, int= 64_t b) { /* Catch divide by zero, and non-representable quotient (MIN / -1). */ if (b =3D=3D 0 || (b =3D=3D -1 && a =3D=3D (1ll << 63))) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); + tcg_s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } env->retxl =3D a % b; return a / b; @@ -92,7 +93,7 @@ uint64_t HELPER(divu64)(CPUS390XState *env, uint64_t ah, = uint64_t al, uint64_t ret; /* Signal divide by zero. */ if (b =3D=3D 0) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); + tcg_s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } if (ah =3D=3D 0) { /* 64 -> 64/64 case */ @@ -106,7 +107,7 @@ uint64_t HELPER(divu64)(CPUS390XState *env, uint64_t ah= , uint64_t al, env->retxl =3D a % b; ret =3D q; if (ret !=3D q) { - s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); + tcg_s390_program_interrupt(env, PGM_FIXPT_DIVIDE, GETPC()); } #else /* 32-bit hosts would need special wrapper functionality - just ab= ort if diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 77d2eb96d4..7d2a652823 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -21,6 +21,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "internal.h" +#include "tcg_s390x.h" #include "exec/helper-proto.h" #include "exec/exec-all.h" #include "exec/cpu_ldst.h" @@ -71,7 +72,7 @@ static inline void check_alignment(CPUS390XState *env, ui= nt64_t v, int wordsize, uintptr_t ra) { if (v % wordsize) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } } =20 @@ -730,7 +731,7 @@ void HELPER(srst)(CPUS390XState *env, uint32_t r1, uint= 32_t r2) =20 /* Bits 32-55 must contain all 0. */ if (env->regs[0] & 0xffffff00u) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 str =3D get_address(env, r2); @@ -767,7 +768,7 @@ void HELPER(srstu)(CPUS390XState *env, uint32_t r1, uin= t32_t r2) =20 /* Bits 32-47 of R0 must be zero. */ if (env->regs[0] & 0xffff0000u) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 str =3D get_address(env, r2); @@ -846,7 +847,7 @@ uint32_t HELPER(mvpg)(CPUS390XState *env, uint64_t r0, = uint64_t r1, uint64_t r2) S390Access srca, desta; =20 if ((f && s) || extract64(r0, 12, 4)) { - s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } =20 r1 =3D wrap_address(env, r1 & TARGET_PAGE_MASK); @@ -879,7 +880,7 @@ uint32_t HELPER(mvst)(CPUS390XState *env, uint32_t r1, = uint32_t r2) int i; =20 if (env->regs[0] & 0xffffff00ull) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 /* @@ -911,7 +912,7 @@ void HELPER(lam)(CPUS390XState *env, uint32_t r1, uint6= 4_t a2, uint32_t r3) int i; =20 if (a2 & 0x3) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -931,7 +932,7 @@ void HELPER(stam)(CPUS390XState *env, uint32_t r1, uint= 64_t a2, uint32_t r3) int i; =20 if (a2 & 0x3) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -1887,8 +1888,7 @@ static uint32_t do_csst(CPUS390XState *env, uint32_t = r3, uint64_t a1, return cc; =20 spec_exception: - s390_program_interrupt(env, PGM_SPECIFICATION, ra); - g_assert_not_reached(); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 uint32_t HELPER(csst)(CPUS390XState *env, uint32_t r3, uint64_t a1, uint64= _t a2) @@ -1911,7 +1911,7 @@ void HELPER(lctlg)(CPUS390XState *env, uint32_t r1, u= int64_t a2, uint32_t r3) uint32_t i; =20 if (src & 0x7) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -1944,7 +1944,7 @@ void HELPER(lctl)(CPUS390XState *env, uint32_t r1, ui= nt64_t a2, uint32_t r3) uint32_t i; =20 if (src & 0x3) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -1975,7 +1975,7 @@ void HELPER(stctg)(CPUS390XState *env, uint32_t r1, u= int64_t a2, uint32_t r3) uint32_t i; =20 if (dest & 0x7) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -1995,7 +1995,7 @@ void HELPER(stctl)(CPUS390XState *env, uint32_t r1, u= int64_t a2, uint32_t r3) uint32_t i; =20 if (dest & 0x3) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 for (i =3D r1;; i =3D (i + 1) % 16) { @@ -2225,7 +2225,7 @@ void HELPER(idte)(CPUS390XState *env, uint64_t r1, ui= nt64_t r2, uint32_t m4) uint16_t entries, i, index =3D 0; =20 if (r2 & 0xff000) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 if (!(r2 & 0x800)) { @@ -2369,7 +2369,7 @@ uint64_t HELPER(lra)(CPUS390XState *env, uint64_t add= r) =20 /* XXX incomplete - has more corner cases */ if (!(env->psw.mask & PSW_MASK_64) && (addr >> 32)) { - s390_program_interrupt(env, PGM_SPECIAL_OP, GETPC()); + tcg_s390_program_interrupt(env, PGM_SPECIAL_OP, GETPC()); } =20 old_exc =3D cs->exception_index; @@ -2538,7 +2538,7 @@ uint32_t HELPER(mvcos)(CPUS390XState *env, uint64_t d= est, uint64_t src, __func__, dest, src, len); =20 if (!(env->psw.mask & PSW_MASK_DAT)) { - s390_program_interrupt(env, PGM_SPECIAL_OP, ra); + tcg_s390_program_interrupt(env, PGM_SPECIAL_OP, ra); } =20 /* OAC (operand access control) for the first operand -> dest */ @@ -2569,14 +2569,14 @@ uint32_t HELPER(mvcos)(CPUS390XState *env, uint64_t= dest, uint64_t src, } =20 if (dest_a && dest_as =3D=3D AS_HOME && (env->psw.mask & PSW_MASK_PSTA= TE)) { - s390_program_interrupt(env, PGM_SPECIAL_OP, ra); + tcg_s390_program_interrupt(env, PGM_SPECIAL_OP, ra); } if (!(env->cregs[0] & CR0_SECONDARY) && (dest_as =3D=3D AS_SECONDARY || src_as =3D=3D AS_SECONDARY)) { - s390_program_interrupt(env, PGM_SPECIAL_OP, ra); + tcg_s390_program_interrupt(env, PGM_SPECIAL_OP, ra); } if (!psw_key_valid(env, dest_key) || !psw_key_valid(env, src_key)) { - s390_program_interrupt(env, PGM_PRIVILEGED, ra); + tcg_s390_program_interrupt(env, PGM_PRIVILEGED, ra); } =20 len =3D wrap_length32(env, len); @@ -2590,7 +2590,7 @@ uint32_t HELPER(mvcos)(CPUS390XState *env, uint64_t d= est, uint64_t src, (env->psw.mask & PSW_MASK_PSTATE)) { qemu_log_mask(LOG_UNIMP, "%s: AR-mode and PSTATE support missing\n= ", __func__); - s390_program_interrupt(env, PGM_ADDRESSING, ra); + tcg_s390_program_interrupt(env, PGM_ADDRESSING, ra); } =20 /* FIXME: Access using correct keys and AR-mode */ diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c index 9fbb37cfb9..bfb457fb63 100644 --- a/target/s390x/misc_helper.c +++ b/target/s390x/misc_helper.c @@ -106,7 +106,7 @@ uint32_t HELPER(servc)(CPUS390XState *env, uint64_t r1,= uint64_t r2) int r =3D sclp_service_call(env, r1, r2); qemu_mutex_unlock_iothread(); if (r < 0) { - s390_program_interrupt(env, -r, GETPC()); + tcg_s390_program_interrupt(env, -r, GETPC()); } return r; } @@ -143,7 +143,7 @@ void HELPER(diag)(CPUS390XState *env, uint32_t r1, uint= 32_t r3, uint32_t num) } =20 if (r) { - s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } } =20 @@ -222,7 +222,7 @@ void HELPER(sckpf)(CPUS390XState *env, uint64_t r0) uint32_t val =3D r0; =20 if (val & 0xffff0000) { - s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, GETPC()); } env->todpr =3D val; } @@ -266,7 +266,7 @@ uint32_t HELPER(stsi)(CPUS390XState *env, uint64_t a0, = uint64_t r0, uint64_t r1) } =20 if ((r0 & STSI_R0_RESERVED_MASK) || (r1 & STSI_R1_RESERVED_MASK)) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 if ((r0 & STSI_R0_FC_MASK) =3D=3D STSI_R0_FC_CURRENT) { @@ -276,7 +276,7 @@ uint32_t HELPER(stsi)(CPUS390XState *env, uint64_t a0, = uint64_t r0, uint64_t r1) } =20 if (a0 & ~TARGET_PAGE_MASK) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 /* count the cpus and split them into configured and reserved ones */ @@ -509,7 +509,7 @@ uint32_t HELPER(tpi)(CPUS390XState *env, uint64_t addr) LowCore *lowcore; =20 if (addr & 0x3) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 qemu_mutex_lock_iothread(); @@ -574,7 +574,7 @@ void HELPER(chsc)(CPUS390XState *env, uint64_t inst) void HELPER(per_check_exception)(CPUS390XState *env) { if (env->per_perc_atmid) { - s390_program_interrupt(env, PGM_PER, GETPC()); + tcg_s390_program_interrupt(env, PGM_PER, GETPC()); } } =20 @@ -664,7 +664,7 @@ uint32_t HELPER(stfle)(CPUS390XState *env, uint64_t add= r) int i; =20 if (addr & 0x7) { - s390_program_interrupt(env, PGM_SPECIFICATION, ra); + tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra); } =20 prepare_stfl(); @@ -737,7 +737,7 @@ void HELPER(sic)(CPUS390XState *env, uint64_t r1, uint6= 4_t r3) qemu_mutex_unlock_iothread(); /* css_do_sic() may actually return a PGM_xxx value to inject */ if (r) { - s390_program_interrupt(env, -r, GETPC()); + tcg_s390_program_interrupt(env, -r, GETPC()); } } =20 --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613376; cv=none; d=zoho.com; s=zohoarc; b=HXDm/CBvhkV0lkUghsYTPNsPBd3sxiDvSp1YOOyWbd207rByIzxxttp01B4ew20u+NFb1YRqIAQHha/7i+8fRFOUlyFenZI/crtPcHQc6My8UqpbjAcKdjXc6RH/Oquo/cDG+69e9IOM31pWh4HG0+yn77eb+4FCeyBktPwxWUM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613376; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=/oqnU8JxcWk92yTF6oHqZ+/jW9Yk0vbg0OCD6IUFg00=; b=CjEM16bqqKiMkLgdcyXUuAeCggP/X9xffmivagRA3i6cIzYQfMrKJaAEoFnnWm25BBTAN2Zc8/AgqEpDFlI/beJGRsCA48BWzyx/ykophSd9BAbQQeBhnkT+TNJMAMOgKU29KuPEoyuIc2q60/5YI8aaxaNeMD98xjYsRFG18kQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613376513874.2918601441596; Fri, 27 Sep 2019 12:42:56 -0700 (PDT) Received: from localhost ([::1]:56758 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw8i-0005FI-K3 for importer@patchew.org; Fri, 27 Sep 2019 15:42:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46489) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5g-0003IP-ID for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5d-0006JS-Gz for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:44 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:40518) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5c-0006I8-TK for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:41 -0400 Received: by mail-pf1-x443.google.com with SMTP id x127so2133175pfb.7 for ; Fri, 27 Sep 2019 12:39:40 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/oqnU8JxcWk92yTF6oHqZ+/jW9Yk0vbg0OCD6IUFg00=; b=HDp+bEsDpl3Iwi+Cr90KoX4UN5uuGIkjbqsmAT++WG0QGM2kyzO0v18CeYwBNLRiI0 A3nwh0MXL6o0YF0SJEX0SPem8DbTsIEsfRd0ynyCS9WtY4Myxr4ldi4tfkbemhc380Yr lwagiwhuxLILs4zNVByPe/TBEjLoeuRsvUN+B/vkdmFAT3SZRGu8V8UT2Cn3P0nXwGyX dcaESLsXzR0mm7d5R3+jDkbsghY4M0Fs1IZI4GPY9hEP53egIcQ+JdtiAVVNueGnHQXQ K8tf7U5a2tgxmIoWdhfaFjkOf4FC4+3VBHt0q5rcjYiVvBAwskaCJSCRyDpWijFjYocy NnvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/oqnU8JxcWk92yTF6oHqZ+/jW9Yk0vbg0OCD6IUFg00=; b=tMW010k8Ji9XR65xWWsA2XyCCYMCp7mSPyA32Adv89VYG07QTrHzn+PqN04u9R9fan R3TWAl4n5hirhobQM0X8UhomfDbLbrnlFDQFIKgeNOPFkiJk5iVDDZi3m2miHC2ENswj RfmNrCCm3YccWCnCbaAM4OnFNL6yWN6+OKCwdz5e4eylf2bYkzke8klYXIcAubpmZKsf hBgLI5Ps8kbrA2a2VlLIDGA1Ow4c3hoUT2/Ff9xI4kzV1h0ndIlOs6boGwOi9vH8wwtt vm4fmGGAOC6K6z7vd1wYtzI8BaD0cxCYRTRaIFZVCiCbpTMk8mWBXOQuLUwrDWPBR5+x HybA== X-Gm-Message-State: APjAAAV1IqRzn4s0gsmbWwtE204PzfbKPhpGE5Ogjl8+XqR+tR7hGzeF FJM+5d+R08uqWPXJUZzMGj5IvlOKjT8= X-Google-Smtp-Source: APXvYqx/PRD0hs7Ml0S+OO50B3UqgQeOb+uxvgZFv4QZQSC2XlyHjMNQkpjwnjPB5YPp+Ap94VIZ2w== X-Received: by 2002:a63:cb07:: with SMTP id p7mr11056760pgg.232.1569613179317; Fri, 27 Sep 2019 12:39:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 05/18] target/s390x: Push trigger_pgm_exception lower in s390_cpu_tlb_fill Date: Fri, 27 Sep 2019 12:39:12 -0700 Message-Id: <20190927193925.23567-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::443 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Delay triggering an exception until the end, after we have determined ultimate success or failure, and also taken into account whether this is a non-faulting probe. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/excp_helper.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index dbff772d34..552098be5f 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -127,7 +127,7 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int= size, CPUS390XState *env =3D &cpu->env; target_ulong vaddr, raddr; uint64_t asc; - int prot, fail; + int prot, fail, excp; =20 qemu_log_mask(CPU_LOG_MMU, "%s: addr 0x%" VADDR_PRIx " rw %d mmu_idx %= d\n", __func__, address, access_type, mmu_idx); @@ -141,12 +141,14 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, i= nt size, vaddr &=3D 0x7fffffff; } fail =3D mmu_translate(env, vaddr, access_type, asc, &raddr, &prot= , true); + excp =3D 0; /* exception already raised */ } else if (mmu_idx =3D=3D MMU_REAL_IDX) { /* 31-Bit mode */ if (!(env->psw.mask & PSW_MASK_64)) { vaddr &=3D 0x7fffffff; } fail =3D mmu_translate_real(env, vaddr, access_type, &raddr, &prot= ); + excp =3D 0; /* exception already raised */ } else { g_assert_not_reached(); } @@ -159,7 +161,7 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int= size, qemu_log_mask(CPU_LOG_MMU, "%s: raddr %" PRIx64 " > ram_size %" PRIx64 "\n", __func__, (uint64_t)raddr, (uint64_t)ram_size); - trigger_pgm_exception(env, PGM_ADDRESSING, ILEN_AUTO); + excp =3D PGM_ADDRESSING; fail =3D 1; } =20 @@ -175,6 +177,9 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int= size, return false; } =20 + if (excp) { + trigger_pgm_exception(env, excp, ILEN_AUTO); + } cpu_restore_state(cs, retaddr, true); =20 /* --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613544; cv=none; d=zoho.com; s=zohoarc; b=hJSGAj1JLOfHVNaR7Fe+AhnxKzufxNK+huXlxjxQ1NEvCogoiHPycAseqUu2/BNYtkhc7XM/anf+fOTExF/rz56yK1F06yjmJHUXetEJEL79BuPSIUO4iT4310bdh1MItR8k1VmeRQOYkbLDmVUbVpotuwre/LrwGZP3IYUvlcc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613544; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=H3DBi0mNjNbESSisGeli3T+KiEWE4J/mD2CVZfFgXJw=; b=ZDDah46VOgT7qN0OA7ab2zxJ3Izhc1tk1uuB+Aax/IrvlTRNmCkwd4bA1nsZtDPQU2WJ7L7m6sWs4DEOwfsNm+Pb5GBJDOFm30avlaGLWHly0ynKZNzWnJvu+RV6c/5mAXtNWYwujFMINou3LMh6E1ZmKdTz4XEout54KgLgkmY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613544642909.1070960668825; Fri, 27 Sep 2019 12:45:44 -0700 (PDT) Received: from localhost ([::1]:56810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwBS-0000fN-En for importer@patchew.org; Fri, 27 Sep 2019 15:45:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46523) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5i-0003JW-PB for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5f-0006Le-2k for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:45 -0400 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]:38606) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5e-0006K5-K3 for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:42 -0400 Received: by mail-pf1-x441.google.com with SMTP id h195so2133390pfe.5 for ; Fri, 27 Sep 2019 12:39:42 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=H3DBi0mNjNbESSisGeli3T+KiEWE4J/mD2CVZfFgXJw=; b=KNX6fbR8apO+g8LVDSzEEfiqlm1PbknhpJtagRAUlwitBE/EqjnrOibnDMhzOpuDjZ iHzRylMJzzq/fbpVoh2+FseNSoikft2QddbFT/sfZ9niUQycGM2ow55/AMAdrceZC0SJ WcYUZBTGvKxqBA8qhw2xZ698qe049xyBfVhNo5M9OCIH5t1QVQNXcTUFsGCxg8gShsh4 NaraKIDDdQAUw92+PVCPxqt0mbC0LmZqu7fcVV4w1WT0oeK0bkuzwd9Lx3nEjuXZHL4y lKggtvdaswB4kzHXa16ZaGkreYahE9YUJQfhTkxoEgcb11XIUv6z1TS7Z6xurFAzlW12 F5lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=H3DBi0mNjNbESSisGeli3T+KiEWE4J/mD2CVZfFgXJw=; b=c0HRmma1hJpbR8g74Pkp8tdsMYJs4MxfuiQJ9yw5jpUyPToUJkzX2dVeyoXAHQpQzF 45gcxY9KnSGaqgZMV6zetwxxJuTChrC8EuL7H7dvUe/UzfNm+AfIom6T4s0Ocu6dI0w4 YbeldD3Fxl15opkw+nfAU+m+lsUb0eOI1JxU+gd1wCQ7WLGcQBhMQqfaXXwNrLuMgzkj Y5Ve+kVZE9fF5pLg9cytXEX6CZFy9jOcjIDr9K3gataG1tI43mszM0b1xmsTCx2FQ8oD PwS//o9qpIAUQLzzMBdUOOj1ROma9xyPoGJsFmHkJXsNlizXhFR20EKFD6BrOzCWrgbg 0Geg== X-Gm-Message-State: APjAAAVsyyqla90eRv+GD7Urq+Tcenn3Ps3FS5k0FYe7SYHqMWyKCSUc T3BN/VC7qgbJK5L/rILvJAK0HKpKlY4= X-Google-Smtp-Source: APXvYqyCIWYAY6NYRnUqV0ossQkp61f1dZbxhOiAYiaypmaNqpARdR9TURFY68TgfFNAnPlrYz6eqw== X-Received: by 2002:a63:b102:: with SMTP id r2mr10894222pgf.370.1569613180880; Fri, 27 Sep 2019 12:39:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 06/18] target/s390x: Handle tec in s390_cpu_tlb_fill Date: Fri, 27 Sep 2019 12:39:13 -0700 Message-Id: <20190927193925.23567-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::441 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" As a step toward moving all excption handling out of mmu_translate, copy handling of the LowCore tec value from trigger_access_exception into s390_cpu_tlb_fill. So far this new plumbing isn't used. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/excp_helper.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index 552098be5f..ab2ed47fef 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -126,7 +126,7 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int= size, S390CPU *cpu =3D S390_CPU(cs); CPUS390XState *env =3D &cpu->env; target_ulong vaddr, raddr; - uint64_t asc; + uint64_t asc, tec; int prot, fail, excp; =20 qemu_log_mask(CPU_LOG_MMU, "%s: addr 0x%" VADDR_PRIx " rw %d mmu_idx %= d\n", @@ -162,6 +162,7 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int= size, "%s: raddr %" PRIx64 " > ram_size %" PRIx64 "\n", __func__, (uint64_t)raddr, (uint64_t)ram_size); excp =3D PGM_ADDRESSING; + tec =3D 0; /* unused */ fail =3D 1; } =20 @@ -178,6 +179,10 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, } =20 if (excp) { + if (excp !=3D PGM_ADDRESSING) { + stq_phys(env_cpu(env)->as, + env->psa + offsetof(LowCore, trans_exc_code), tec); + } trigger_pgm_exception(env, excp, ILEN_AUTO); } cpu_restore_state(cs, retaddr, true); --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613548; cv=none; d=zoho.com; s=zohoarc; b=ekuzbkCNLXW44MCStmHsuc+cosqdIihgXzYcGKglHucdM5wOg6t40h0HIwC0wymIAb6Ikw36D8+TTddH2Q+LiyNCrpXmmKRDyIh/l54PigWnN7GR64k+OLfB+NnEVb/N7J+5yiOk0B6swAVjUKz1vFQ7TVAivLPsHKxPf8HeM38= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613548; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=S7TwNfUbxZvOxX36TdLooJsySBiwUy20PbV1xw5QyNY=; b=Snhngpphdsop1Ry4J2Wk6O6I5aquq8ybnPW25Bc4yPuwARUMLOrSCKr0irOmvWR9Ty8M0VppHN/EV7K1NJvLBkHrPtYmNIENtj7gSLh4A38Ktqkp1eVjcUs0FVvUryfz5/J5jiw4Yy9VXvojEKLihY/Z+Svb3foAnBs5Uw9Ur8Y= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613548465276.63674982529426; Fri, 27 Sep 2019 12:45:48 -0700 (PDT) Received: from localhost ([::1]:56820 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwBX-0000lq-0E for importer@patchew.org; Fri, 27 Sep 2019 15:45:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46545) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5j-0003Jz-Uo for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5h-0006P9-2N for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:47 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:46314) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5g-0006Mj-K0 for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:44 -0400 Received: by mail-pl1-x643.google.com with SMTP id q24so1462443plr.13 for ; Fri, 27 Sep 2019 12:39:44 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=S7TwNfUbxZvOxX36TdLooJsySBiwUy20PbV1xw5QyNY=; b=VACet4xWLPtmVsJUjLes8xV7QrVTQ7KilCF+gMzuGu0ReWcOty3yE6f+eCfqSgYlP9 8pktspZcdYSk+F5a2EKrtaQVIOYmfwA0i+kU3JjIi2ibyBQRM590vWCpx4iPU1zKTFTK EAHMb93wA+cFVyTk+Vhxkc2Dn7FVo8eaMGuWE93XUtayjGGT/BqEdKQVG/qWc3wOUMTI 0eJRDsU29LhlFu+GOYH59Q5kTv6m/+Yv66OGHKl2TyO+LY9o/rJT3bG/CcMk357ACBMA EJ+vF6mS6kQs029Vljz6iHJnlinEIZyB3k3ICjN0qG88kMoLKyiHcO1vr5ID844x1J4Y VUyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=S7TwNfUbxZvOxX36TdLooJsySBiwUy20PbV1xw5QyNY=; b=JqdzqVGQKE8ru6Rq049RNG1G/8n1G2PS12hnX1pzD6g4goa/xv0zPn3mV0MZv5qrmB Ge16kBofSRSGEK4oygo191TQ/XL5hPAI1Lls5gJP0CKrJh6XGSdYwHPvRM5StLLLZb7P ZsTv6hTGVY/pvkN/Nm4deFpUS0Hjwgf1dx/oXBP5RghGPMUd+lE+7mKYIUmqiatPRUd9 IobMpHFiaV+qoTlSIAQkt8qrISwAX2qbcGlxi5Op6XYSLdTjJ9CVePGi8KgoQh3XdSaS P4Ahb1yasLZYFPzuC76ILhcDj+/fxevOh/X2A/hd7gNPLUT/8pT+sjakfrFiW7qdySxh qsjA== X-Gm-Message-State: APjAAAVue1DMnUm2rjd/eIcXPNQEG58zkyJGOaQyIzGEpI314oW3KVNQ QEBOUkK1+FwGY5S91x4jcr4LXO62GuU= X-Google-Smtp-Source: APXvYqwiyPgIjLsRTMLHuQ3ObZ6aP8HWsLE8+lUMcEnz9A9FsJAD1+mLZnXwyOs9vkxGaPcUswmflQ== X-Received: by 2002:a17:902:9a0b:: with SMTP id v11mr6491744plp.202.1569613182765; Fri, 27 Sep 2019 12:39:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 07/18] target/s390x: Return exception from mmu_translate_real Date: Fri, 27 Sep 2019 12:39:14 -0700 Message-Id: <20190927193925.23567-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::643 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Do not raise the exception directly within mmu_translate_real, but pass it back so that caller may do so. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/internal.h | 2 +- target/s390x/excp_helper.c | 4 ++-- target/s390x/mmu_helper.c | 15 ++++++--------- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/target/s390x/internal.h b/target/s390x/internal.h index c243fa725b..c4388aaf23 100644 --- a/target/s390x/internal.h +++ b/target/s390x/internal.h @@ -362,7 +362,7 @@ void probe_write_access(CPUS390XState *env, uint64_t ad= dr, uint64_t len, int mmu_translate(CPUS390XState *env, target_ulong vaddr, int rw, uint64_t= asc, target_ulong *raddr, int *flags, bool exc); int mmu_translate_real(CPUS390XState *env, target_ulong raddr, int rw, - target_ulong *addr, int *flags); + target_ulong *addr, int *flags, uint64_t *tec); =20 =20 /* misc_helper.c */ diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index ab2ed47fef..906b87c071 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -147,8 +147,8 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int= size, if (!(env->psw.mask & PSW_MASK_64)) { vaddr &=3D 0x7fffffff; } - fail =3D mmu_translate_real(env, vaddr, access_type, &raddr, &prot= ); - excp =3D 0; /* exception already raised */ + excp =3D mmu_translate_real(env, vaddr, access_type, &raddr, &prot= , &tec); + fail =3D excp; } else { g_assert_not_reached(); } diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c index a142663b0f..48ebc62497 100644 --- a/target/s390x/mmu_helper.c +++ b/target/s390x/mmu_helper.c @@ -555,15 +555,11 @@ void s390_cpu_virt_mem_handle_exc(S390CPU *cpu, uintp= tr_t ra) * @param rw 0 =3D read, 1 =3D write, 2 =3D code fetch * @param addr the translated address is stored to this pointer * @param flags the PAGE_READ/WRITE/EXEC flags are stored to this pointer - * @return 0 if the translation was successful, < 0 if a fault occur= red + * @return 0 =3D success, !=3D 0, the exception to raise */ int mmu_translate_real(CPUS390XState *env, target_ulong raddr, int rw, - target_ulong *addr, int *flags) + target_ulong *addr, int *flags, uint64_t *tec) { - /* Code accesses have an undefined ilc, let's use 2 bytes. */ - const int ilen =3D (rw =3D=3D MMU_INST_FETCH) ? 2 : ILEN_AUTO; - uint64_t tec =3D (raddr & TARGET_PAGE_MASK) | - (rw =3D=3D MMU_DATA_STORE ? FS_WRITE : FS_READ); const bool lowprot_enabled =3D env->cregs[0] & CR0_LOWPROT; =20 *flags =3D PAGE_READ | PAGE_WRITE | PAGE_EXEC; @@ -572,9 +568,10 @@ int mmu_translate_real(CPUS390XState *env, target_ulon= g raddr, int rw, *flags |=3D PAGE_WRITE_INV; if (is_low_address(raddr) && rw =3D=3D MMU_DATA_STORE) { /* LAP sets bit 56 */ - tec |=3D 0x80; - trigger_access_exception(env, PGM_PROTECTION, ilen, tec); - return -EACCES; + *tec =3D (raddr & TARGET_PAGE_MASK) + | (rw =3D=3D MMU_DATA_STORE ? FS_WRITE : FS_READ) + | 0x80; + return PGM_PROTECTION; } } =20 --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613984; cv=none; d=zoho.com; s=zohoarc; b=AIblkJOXIyffoBRlIFEDBrenaRK84j46275HVOWBte6VER+9fJKBRdkoDOzNI/mm/cfjNCkx/abRU1wXBWs/y91ywPtGfhYaRVTZ82HJMjczzk3R1NorURJVIA5OJSmcsR+qBRW8sBKlqIdUvwj6gqWqXgIWxC7lkU3ptxN9rj8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613984; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=ik4J8OMJJMJA7G5grjrKf+gGfUAWSTXqqgidtWRv3bs=; b=c32fCGm26v1gIghP7JwCGRXi/sbJReVkGl4grvPCA+IPkXiVhCC38BSaXijhiUFllU8Y7BgJ1ucHwxIqJ8dMjtsYsgzkSFLljJXVpCoDt3mLNx7FEY7qofgzw0H92bHkb+tcKO7/LhbKdjVGb6Wbj5iA0ZjcMMXQes66SuXvIw4= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613984872338.19637126401403; Fri, 27 Sep 2019 12:53:04 -0700 (PDT) Received: from localhost ([::1]:56950 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwIZ-0007l9-J2 for importer@patchew.org; Fri, 27 Sep 2019 15:53:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46550) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5k-0003KA-6c for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5i-0006Pz-9y for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:47 -0400 Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543]:43385) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5h-0006PY-Tv for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:46 -0400 Received: by mail-pg1-x543.google.com with SMTP id v27so3989885pgk.10 for ; Fri, 27 Sep 2019 12:39:45 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ik4J8OMJJMJA7G5grjrKf+gGfUAWSTXqqgidtWRv3bs=; b=YliPyxt7NJLKMzxHwiMdJkQKeRxqyOn/ftluoNdVD678Pey9mOggbD2uVZAVdMBGhc mNArwFJBnDulRVmsyF+pAp2NCnqOAHb+uZFsavwVzkkubmasfPhrNNe73YSEkEO2CzG+ 5fEUtFAB3dYD2sTmoGfnZVvhtY2RUZsL6c71kMNIkNrB9aYVTznQMfnqKqpkPlDOfU9p 7GsrxWVGif4qXcMPHqTPAfQkqlseDyDKH1loNWaGYjgLhy3+1uihRpeftZGbwX0EUHSy zkL5BWPszLwSERYE7rnHUpgpW0RSygZEeMdUihGcHwxv29KiBXzTEv3invg32NzM+O+1 bOoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ik4J8OMJJMJA7G5grjrKf+gGfUAWSTXqqgidtWRv3bs=; b=mlCAU+vNQ7l/r3P6EAhLDZt96DUQcjHUJsDiNHq3t66huvnT5MjpS0oNvAzhhPxDSW 1JvOoQ9y45ACCGKqXUWcSlbs4+A+Wn4orhgUJG3JQl40PvrC+r6i+XK9y2DftOs2z2QS 2cdBOvSp0VPF3r02UtyomuNxypZ4xb5ZxLV6IJv+9fow+YSpdQEQlkiZ0rbMUiPrlrF2 6WVh1zDUjP+kJWd4FXv6cJxEmhQfblLdg0Ewwel5PKH2zB6P5hyg3QrKo5b0cRDZuLh9 4bwwOAFdh3cCFHU0HnF1tDLN3rzj6x7j8BQfKHXrWfycXKeWfDMPzGRTqrpRRPrR2wO8 H8JA== X-Gm-Message-State: APjAAAXw/JPjRLgwctsfITePKXsTDicjpIEhD/N84WasnMx5iGzMxghN j14d6tyFxlec9XpCehkijukTtBBgXXA= X-Google-Smtp-Source: APXvYqzu90Pq6U7Ar5Max1Fm3549ICzazFZ8rVbH10pyjt1OYNSLfihy52J3jlRRUwVbMP0hp8jEgQ== X-Received: by 2002:a63:6e4c:: with SMTP id j73mr11002096pgc.452.1569613184332; Fri, 27 Sep 2019 12:39:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 08/18] target/s390x: Remove exc argument to mmu_translate_asce Date: Fri, 27 Sep 2019 12:39:15 -0700 Message-Id: <20190927193925.23567-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::543 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Now that mmu_translate_asce returns the exception instead of raising it, the argument is unused. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/mmu_helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c index 48ebc62497..aa8712221e 100644 --- a/target/s390x/mmu_helper.c +++ b/target/s390x/mmu_helper.c @@ -113,7 +113,7 @@ static inline int read_table_entry(hwaddr gaddr, uint64= _t *entry) =20 static int mmu_translate_asce(CPUS390XState *env, target_ulong vaddr, uint64_t asc, uint64_t asce, target_ulong *r= addr, - int *flags, int rw, bool exc) + int *flags, int rw) { const bool edat1 =3D (env->cregs[0] & CR0_EDAT) && s390_has_feat(S390_FEAT_EDAT); @@ -424,7 +424,7 @@ int mmu_translate(CPUS390XState *env, target_ulong vadd= r, int rw, uint64_t asc, } =20 /* perform the DAT translation */ - r =3D mmu_translate_asce(env, vaddr, asc, asce, raddr, flags, rw, exc); + r =3D mmu_translate_asce(env, vaddr, asc, asce, raddr, flags, rw); if (unlikely(r)) { if (exc) { trigger_access_exception(env, r, ilen, tec); --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613850; cv=none; d=zoho.com; s=zohoarc; b=d4h4woSk3Os6ouqT2M5WlNeYsi56pkFFwroZkhB1azxQ7EJKIg6xA2h9ktPEEuaFjo4f9NrE/tk7IzI1yAj5g5bIy5PFY76NY3mcqGGrU+wYroV6OPAtWAYkllEPD55nJnLJ74wEdV2ESGb3RciLnKcVB4CvkeXVBzYesyxIr90= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613850; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=ak+VOWc6okClWONn4gard/YXgbDpDWFzvgKrpXSoeP8=; b=E4itaHPIQLDTFjXAwey09DTQEjelmxFU4JtEo/B3gb0okv/ynhqZDl4GMb0Vezzep4qucaWiI8cyKBWX5NLfW3dbx3d5TvHuEUrzVJ4dLQjmy3a+Swzc8D7Dv/hdeglTOhnZSsCsiTIuRhPG835dOz7qXgAmCLDsalAmq3tg954= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613850816706.4046110435316; Fri, 27 Sep 2019 12:50:50 -0700 (PDT) Received: from localhost ([::1]:56914 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwGL-0004wr-R2 for importer@patchew.org; Fri, 27 Sep 2019 15:50:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46616) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5o-0003NM-1t for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5j-0006Rf-SW for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:51 -0400 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]:37597) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5j-0006QJ-E3 for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:47 -0400 Received: by mail-pg1-x52c.google.com with SMTP id c17so4018734pgg.4 for ; Fri, 27 Sep 2019 12:39:47 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ak+VOWc6okClWONn4gard/YXgbDpDWFzvgKrpXSoeP8=; b=GpKReYWrJ7jr+HUdxoamO+ireLCHZBc4hb52BZNZIbpNRvNhOHHxv8Qu03ZjeznSXd LR/Ebl+Jix/ssSRBByF4nyKAserJSKCgWHvmWBdGN7CYeDq7Hhz+h/D+YZLC11Ebf1kM ZMzPfF0sbrDxBND9eNsenf5EidPp/s1cDjjPaALId1Oa/mv6R1Y6iquC1NtxpZti4b0c wDYRZl7QCGOTeTkyk9OhYqh7QmHxMRthjudOQK8OoAQ9A65/E4DqlDwvOOh0t2/N6uQO lFpKhbkBSKP+B7oKUG8Roy+dxBm0nzoBr1FM/aafEKVIxJ1c4xe8lGi90d2sauxlxAjc xYHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ak+VOWc6okClWONn4gard/YXgbDpDWFzvgKrpXSoeP8=; b=ml0lkkO4vPxQjTfbZg2Z6QhPzWrR4lz5BM90W3d4wt27aEHH1CrJ/3oo0s5wEh/XbW pWOBM6/1pXsdLqFRd3T+LEWDqiM4RRObAKWgbUTISZnnCX1k0GSbEvMV7Ez/mBMUKwY7 Qi+MOBKoyKNlfcFFGxHiWNUlnHflsM377mYUA5fnU9+utFCpOQWHEzlg95SY8aSaV57t tJ45B4NkGs2Fygfnv/OZo2CJ3uNNusskEOQmDNKGDVxeQ9lLwfMNDUnRegmdqbwfc0Rf fHn+bSI0/tLNqib59QwC6J0qScHSxVvuvvuBCE6/nLtxEX81HV00dZL8AZ2jwetGK+zo HQvA== X-Gm-Message-State: APjAAAXz+jprUEyZSOXhDbHocNpJ3GVzQhw8IjpwYzvT9cRal2/Sigeg r/IwkrGpeY1u6rhDu4Zum85Y0Jfit10= X-Google-Smtp-Source: APXvYqwRb/WcvrL+54AufhkMF0rLPxMrTMYqsBSnLzoXdHJocEx/AGxzfwRD8OtQL814C7zalwozKg== X-Received: by 2002:a62:a509:: with SMTP id v9mr6183224pfm.180.1569613185936; Fri, 27 Sep 2019 12:39:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 09/18] target/s390x: Return exception from mmu_translate Date: Fri, 27 Sep 2019 12:39:16 -0700 Message-Id: <20190927193925.23567-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::52c X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Do not raise the exception directly within mmu_translate, but pass it back so that caller may do so. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand --- target/s390x/internal.h | 2 +- target/s390x/excp_helper.c | 4 ++-- target/s390x/mem_helper.c | 13 +++++++--- target/s390x/mmu_helper.c | 49 +++++++++++++++----------------------- 4 files changed, 32 insertions(+), 36 deletions(-) diff --git a/target/s390x/internal.h b/target/s390x/internal.h index c4388aaf23..c993c3ef40 100644 --- a/target/s390x/internal.h +++ b/target/s390x/internal.h @@ -360,7 +360,7 @@ void probe_write_access(CPUS390XState *env, uint64_t ad= dr, uint64_t len, =20 /* mmu_helper.c */ int mmu_translate(CPUS390XState *env, target_ulong vaddr, int rw, uint64_t= asc, - target_ulong *raddr, int *flags, bool exc); + target_ulong *raddr, int *flags, uint64_t *tec); int mmu_translate_real(CPUS390XState *env, target_ulong raddr, int rw, target_ulong *addr, int *flags, uint64_t *tec); =20 diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index 906b87c071..6a0728b65f 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -140,8 +140,8 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int= size, if (!(env->psw.mask & PSW_MASK_64)) { vaddr &=3D 0x7fffffff; } - fail =3D mmu_translate(env, vaddr, access_type, asc, &raddr, &prot= , true); - excp =3D 0; /* exception already raised */ + excp =3D mmu_translate(env, vaddr, access_type, asc, &raddr, &prot= , &tec); + fail =3D excp; } else if (mmu_idx =3D=3D MMU_REAL_IDX) { /* 31-Bit mode */ if (!(env->psw.mask & PSW_MASK_64)) { diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index 7d2a652823..e15aa296dd 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -2364,8 +2364,8 @@ uint64_t HELPER(lra)(CPUS390XState *env, uint64_t add= r) CPUState *cs =3D env_cpu(env); uint32_t cc =3D 0; uint64_t asc =3D env->psw.mask & PSW_MASK_ASC; - uint64_t ret; - int old_exc, flags; + uint64_t ret, tec; + int old_exc, flags, exc; =20 /* XXX incomplete - has more corner cases */ if (!(env->psw.mask & PSW_MASK_64) && (addr >> 32)) { @@ -2373,7 +2373,14 @@ uint64_t HELPER(lra)(CPUS390XState *env, uint64_t ad= dr) } =20 old_exc =3D cs->exception_index; - if (mmu_translate(env, addr, 0, asc, &ret, &flags, true)) { + exc =3D mmu_translate(env, addr, 0, asc, &ret, &flags, &tec); + if (exc) { + /* + * We don't care about ILEN or TEC, as we're not going to + * deliver the exception -- thus resetting exception_index below. + * TODO: clean this up. + */ + trigger_pgm_exception(env, exc, ILEN_UNWIND); cc =3D 3; } if (cs->exception_index =3D=3D EXCP_PGM) { diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c index aa8712221e..8ea1c95549 100644 --- a/target/s390x/mmu_helper.c +++ b/target/s390x/mmu_helper.c @@ -369,17 +369,15 @@ static void mmu_handle_skey(target_ulong addr, int rw= , int *flags) * @return 0 if the translation was successful, -1 if a fault occurr= ed */ int mmu_translate(CPUS390XState *env, target_ulong vaddr, int rw, uint64_t= asc, - target_ulong *raddr, int *flags, bool exc) + target_ulong *raddr, int *flags, uint64_t *tec) { - /* Code accesses have an undefined ilc, let's use 2 bytes. */ - const int ilen =3D (rw =3D=3D MMU_INST_FETCH) ? 2 : ILEN_AUTO; - uint64_t tec =3D (vaddr & TARGET_PAGE_MASK) | (asc >> 46) | - (rw =3D=3D MMU_DATA_STORE ? FS_WRITE : FS_READ); uint64_t asce; int r; =20 - + *tec =3D (vaddr & TARGET_PAGE_MASK) | (asc >> 46) | + (rw =3D=3D MMU_DATA_STORE ? FS_WRITE : FS_READ); *flags =3D PAGE_READ | PAGE_WRITE | PAGE_EXEC; + if (is_low_address(vaddr & TARGET_PAGE_MASK) && lowprot_enabled(env, a= sc)) { /* * If any part of this page is currently protected, make sure the @@ -391,12 +389,9 @@ int mmu_translate(CPUS390XState *env, target_ulong vad= dr, int rw, uint64_t asc, */ *flags |=3D PAGE_WRITE_INV; if (is_low_address(vaddr) && rw =3D=3D MMU_DATA_STORE) { - if (exc) { - /* LAP sets bit 56 */ - tec |=3D 0x80; - trigger_access_exception(env, PGM_PROTECTION, ilen, tec); - } - return -EACCES; + /* LAP sets bit 56 */ + *tec |=3D 0x80; + return PGM_PROTECTION; } } =20 @@ -426,30 +421,21 @@ int mmu_translate(CPUS390XState *env, target_ulong va= ddr, int rw, uint64_t asc, /* perform the DAT translation */ r =3D mmu_translate_asce(env, vaddr, asc, asce, raddr, flags, rw); if (unlikely(r)) { - if (exc) { - trigger_access_exception(env, r, ilen, tec); - } - return -1; + return r; } =20 /* check for DAT protection */ if (unlikely(rw =3D=3D MMU_DATA_STORE && !(*flags & PAGE_WRITE))) { - if (exc) { - /* DAT sets bit 61 only */ - tec |=3D 0x4; - trigger_access_exception(env, PGM_PROTECTION, ilen, tec); - } - return -1; + /* DAT sets bit 61 only */ + *tec |=3D 0x4; + return PGM_PROTECTION; } =20 /* check for Instruction-Execution-Protection */ if (unlikely(rw =3D=3D MMU_INST_FETCH && !(*flags & PAGE_EXEC))) { - if (exc) { - /* IEP sets bit 56 and 61 */ - tec |=3D 0x84; - trigger_access_exception(env, PGM_PROTECTION, ilen, tec); - } - return -1; + /* IEP sets bit 56 and 61 */ + *tec |=3D 0x84; + return PGM_PROTECTION; } =20 nodat: @@ -473,9 +459,12 @@ static int translate_pages(S390CPU *cpu, vaddr addr, i= nt nr_pages, int ret, i, pflags; =20 for (i =3D 0; i < nr_pages; i++) { - ret =3D mmu_translate(env, addr, is_write, asc, &pages[i], &pflags= , true); + uint64_t tec; + + ret =3D mmu_translate(env, addr, is_write, asc, &pages[i], &pflags= , &tec); if (ret) { - return ret; + trigger_access_exception(env, ret, ILEN_AUTO, tec); + return -EFAULT; } if (!address_space_access_valid(&address_space_memory, pages[i], TARGET_PAGE_SIZE, is_write, --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569614121; cv=none; d=zoho.com; s=zohoarc; b=ZpuU43R1D2VHy0CSETYEMHzWTbaJ2yaSNNDcSlf//yI8ag2MYG1ns2uXyK3GN4FSgFC0L7uEfKbBaz1mur69PRD2zGaveuEJPMYl3+b4SHbdnhXgtsCjnHlMr+8Y1lXnBkBh6r2os2BRbfoQgz8g76BsVxHfTPvGeuiLcptVjQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569614121; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=qj0g/zRgOiSEpMHPGaPSUxN7m4nHw3kwz18pUXG2uUM=; b=gJG5TsG6VUNMGjStOQit9ic3G7I2c68E4qdt7Xs+QdOCug5UHeuH0eegd2wK0KKhYnOW6Q2YFdj2mJ6s6tx/wz+Y9S2kdN7PppPHOplf/HUuUqFGgpPQzm9Sm0Et8/X0l/dVeFtRohMu0v6yGPm5986YZwHu0hB76th7mEfZSJ8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569614121561249.36808692896273; Fri, 27 Sep 2019 12:55:21 -0700 (PDT) Received: from localhost ([::1]:57046 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwKm-0002Sz-3F for importer@patchew.org; Fri, 27 Sep 2019 15:55:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46646) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5q-0003PK-9M for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5m-0006Tr-Mc for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:53 -0400 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]:37121) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5l-0006S0-OK for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:50 -0400 Received: by mail-pg1-x541.google.com with SMTP id c17so4018769pgg.4 for ; Fri, 27 Sep 2019 12:39:49 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=qj0g/zRgOiSEpMHPGaPSUxN7m4nHw3kwz18pUXG2uUM=; b=CJg7JnWIhNVoShk6MsAe8LCPCoHm4beqWO3oG3HlQnt17f75trH+ZwCNpUEzCYrokK 6iHTtRxdOqXkUJeRSYpooCPlOti9ME8YLxkOPXP5p3FqTzOmVgBH0sbUqPsOv3ceuvH8 VsLV31AVHbcALvpHi1T4Oyqp+gEN0PB18dm+MWw+RLy1cTXQeL3yhMh0Ei+BeH+veMsu WFa/QghcENqWIluPrLQ89/jUtRR4fWvNGSk9YH5jlbGu7JxF7IirLNZEW48UXhhU0Vbw asj6XfAiuMO/xdagkTFznLWlvlIsnX/SmymG6BivSiO6JI1E/7fpvwPg/ggQ+ORMoKbd 1IbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qj0g/zRgOiSEpMHPGaPSUxN7m4nHw3kwz18pUXG2uUM=; b=SfZya3OgyeBIVYPWakGCWTMyLIaGXo3rlomOGk6MruDcp5fS6ivmxfiuanyDn7KMqG JsIqL9yJdtP0ONPda7yT+0cXB90dXX9bM1sPwgIYMooCKMu4eVHqeCQnjMQgwbDJPtg9 rw17uPbr8jwesCn8RxRDYPdoRcdIhliSahuxWUqJK1tMgNa1vI7tAhkQfLOEnVEQ7ZET 1ed9F9uqitJBuuWQ9oql7ZKVOd9fwNgmQ2UFs6GIkLtpKYj/Vl3xivXocz/DOIkaVFzx o7GzjhwTQx3KlnJxb8Rg7arMINRgIozir5MygRA9nnmgxN61QKUdUTxymww+Fgai8qZ3 2Z5Q== X-Gm-Message-State: APjAAAXqVl8fTmSrJEb4N75any1uSKdnlXSozsV6r6DlFTqAkaydLInr GdzS75Zb3+8KNiVsGvT4ep8R9w1MLQg= X-Google-Smtp-Source: APXvYqxoHQr6aXDQE0XLdYjy5bmg5TGx98j6IWRBs0ofjmLu4KYoXlGCYroAw8oxr8m9cDFNkZKTZg== X-Received: by 2002:a63:cf0a:: with SMTP id j10mr10818410pgg.388.1569613187487; Fri, 27 Sep 2019 12:39:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 10/18] target/s390x: Return exception from translate_pages Date: Fri, 27 Sep 2019 12:39:17 -0700 Message-Id: <20190927193925.23567-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::541 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Do not raise the exception directly within translate_pages, but pass it back so that caller may do so. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/mmu_helper.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c index 8ea1c95549..98ac58574c 100644 --- a/target/s390x/mmu_helper.c +++ b/target/s390x/mmu_helper.c @@ -452,25 +452,22 @@ nodat: * the MEMOP interface. */ static int translate_pages(S390CPU *cpu, vaddr addr, int nr_pages, - target_ulong *pages, bool is_write) + target_ulong *pages, bool is_write, uint64_t *t= ec) { uint64_t asc =3D cpu->env.psw.mask & PSW_MASK_ASC; CPUS390XState *env =3D &cpu->env; int ret, i, pflags; =20 for (i =3D 0; i < nr_pages; i++) { - uint64_t tec; - - ret =3D mmu_translate(env, addr, is_write, asc, &pages[i], &pflags= , &tec); + ret =3D mmu_translate(env, addr, is_write, asc, &pages[i], &pflags= , tec); if (ret) { - trigger_access_exception(env, ret, ILEN_AUTO, tec); - return -EFAULT; + return ret; } if (!address_space_access_valid(&address_space_memory, pages[i], TARGET_PAGE_SIZE, is_write, MEMTXATTRS_UNSPECIFIED)) { - trigger_access_exception(env, PGM_ADDRESSING, ILEN_AUTO, 0); - return -EFAULT; + *tec =3D 0; /* unused */ + return PGM_ADDRESSING; } addr +=3D TARGET_PAGE_SIZE; } @@ -498,6 +495,7 @@ int s390_cpu_virt_mem_rw(S390CPU *cpu, vaddr laddr, uin= t8_t ar, void *hostbuf, { int currlen, nr_pages, i; target_ulong *pages; + uint64_t tec; int ret; =20 if (kvm_enabled()) { @@ -511,8 +509,10 @@ int s390_cpu_virt_mem_rw(S390CPU *cpu, vaddr laddr, ui= nt8_t ar, void *hostbuf, + 1; pages =3D g_malloc(nr_pages * sizeof(*pages)); =20 - ret =3D translate_pages(cpu, laddr, nr_pages, pages, is_write); - if (ret =3D=3D 0 && hostbuf !=3D NULL) { + ret =3D translate_pages(cpu, laddr, nr_pages, pages, is_write, &tec); + if (ret) { + trigger_access_exception(&cpu->env, ret, ILEN_AUTO, tec); + } else if (hostbuf !=3D NULL) { /* Copy data by stepping through the area page by page */ for (i =3D 0; i < nr_pages; i++) { currlen =3D MIN(len, TARGET_PAGE_SIZE - (laddr % TARGET_PAGE_S= IZE)); --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613383; cv=none; d=zoho.com; s=zohoarc; b=XfvJWl2PrAMu2diO0xNWIqO+eKfgoZZyYCKnSd0nK6FrYzapzsdUu/UB0Bm9N8xUpsnEAuM7cxijsLMpHyv11njt6Ktg+fvohn33LCEmrempRAoQxuicx7MjLYThvXTpHbkdduPVy8N2Xyfzu2J6SfuVBZUinQMJ5kR/OX9N88Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613383; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=kOQn8fqkcBbOOtc4Nsvslx7elS0LZpOm6Sn3ku0T4zo=; b=cliYHj4loBGuZjfm84ZiZfc4hDdibjs/bC4hxtw6TfnBDQ+CRGljm9OGfXywQCSOEAwqGUdGtSRd0pKMbV594xNvrNAM4wFvShCIoHCpnvDHfOEvM3iIZBSBpLv04RLcSrXpBuXrBpaLkk/ywvy4EB8RMiCKyTUi2U8yl3GJ1cQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613383437899.0564728510093; Fri, 27 Sep 2019 12:43:03 -0700 (PDT) Received: from localhost ([::1]:56762 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw8r-0005Pl-RY for importer@patchew.org; Fri, 27 Sep 2019 15:43:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46682) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5r-0003QA-SG for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5o-0006VO-4i for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:55 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]:37601) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5n-0006TV-4E for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:51 -0400 Received: by mail-pg1-x530.google.com with SMTP id c17so4018794pgg.4 for ; Fri, 27 Sep 2019 12:39:50 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=kOQn8fqkcBbOOtc4Nsvslx7elS0LZpOm6Sn3ku0T4zo=; b=AHG7gKZVLFXKWAsW6M1b7gJlGnmm+IvtxGokLYxlv+9dun69blIUp6XEnDN4Im72Iy tEo202NQCCJtZ3BQapjZvjIYfHRxbBgjeS3cGje4nVWGLutLxKMeLBGrQ126qL1hx7JN QQqpwsjthQGxSv190zbM82yZDjCMdcf3Dci+7uG7bgsXZb0i/tNFZiw5UylOimeEaKaZ 36GOoCmOwok6li8iC615rvQtgd/VpklgFISyory2Q0NMSje+jBE/sr+RxdVKC5Qbjv2f tnJQysS8gsrdlx9qzMLG49cZ4OBx+IFsLLrqrU0nLfVKuxW3LS24XEprlqFEM8vDsGiN plIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=kOQn8fqkcBbOOtc4Nsvslx7elS0LZpOm6Sn3ku0T4zo=; b=Wr1TEkqQh9Al0c5kZtwAzirYUUgBEvoY7b8n5LtxrZgLyd4NqabwWyVvU5hSvCF1Vz KvVbWp0Ni+istCVqq22wN8xEMDE9vz3btYel1ARocX3/xE+g5kvPai95NunXY/QJhxzh +/IEs3K16OlhODfGbBJQNP+0ATstxJypc9s6I+5JFNx5gv6B6G/Pr8/izwCoIwWHHVdc ph+8cdJzSBxVFaYLGjemGKqfpRQG2hmiSI57kbtMXj4sLnKe+awX4IK5ST8KEqk8hQu+ 8QJoXFUoz5W3MD/PWX/1X7XS8T81vh0aq9VSWjqMQ+EvjaQod8e9WgEUr0mFJ+xpCY84 SODg== X-Gm-Message-State: APjAAAXstxVKnJcXbbkNiScTg+9q2OFJEjAPlEvDOKO/R/fPf9lTilv0 Tap+De6MVb/kZ1G1fDfgLZdF2T2zHhw= X-Google-Smtp-Source: APXvYqzAlc7bFHue5cSmhqH32wIIlB0o1cmx03MuWcZ9BvTgYul39ig453r5UfQpHDKl9FqDGGe9sg== X-Received: by 2002:a63:f5f:: with SMTP id 31mr10859655pgp.265.1569613189080; Fri, 27 Sep 2019 12:39:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 11/18] target/s390x: Remove fail variable from s390_cpu_tlb_fill Date: Fri, 27 Sep 2019 12:39:18 -0700 Message-Id: <20190927193925.23567-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::530 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Now that excp always contains a real exception number, we can use that instead of a separate fail variable. This allows a redundant test to be removed. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/excp_helper.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index 6a0728b65f..98a1ee8317 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -127,7 +127,7 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int= size, CPUS390XState *env =3D &cpu->env; target_ulong vaddr, raddr; uint64_t asc, tec; - int prot, fail, excp; + int prot, excp; =20 qemu_log_mask(CPU_LOG_MMU, "%s: addr 0x%" VADDR_PRIx " rw %d mmu_idx %= d\n", __func__, address, access_type, mmu_idx); @@ -141,20 +141,18 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, i= nt size, vaddr &=3D 0x7fffffff; } excp =3D mmu_translate(env, vaddr, access_type, asc, &raddr, &prot= , &tec); - fail =3D excp; } else if (mmu_idx =3D=3D MMU_REAL_IDX) { /* 31-Bit mode */ if (!(env->psw.mask & PSW_MASK_64)) { vaddr &=3D 0x7fffffff; } excp =3D mmu_translate_real(env, vaddr, access_type, &raddr, &prot= , &tec); - fail =3D excp; } else { g_assert_not_reached(); } =20 /* check out of RAM access */ - if (!fail && + if (!excp && !address_space_access_valid(&address_space_memory, raddr, TARGET_PAGE_SIZE, access_type, MEMTXATTRS_UNSPECIFIED)) { @@ -163,10 +161,9 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, __func__, (uint64_t)raddr, (uint64_t)ram_size); excp =3D PGM_ADDRESSING; tec =3D 0; /* unused */ - fail =3D 1; } =20 - if (!fail) { + if (!excp) { qemu_log_mask(CPU_LOG_MMU, "%s: set tlb %" PRIx64 " -> %" PRIx64 " (%x)\n", __func__, (uint64_t)vaddr, (uint64_t)raddr, prot); @@ -178,13 +175,11 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, i= nt size, return false; } =20 - if (excp) { - if (excp !=3D PGM_ADDRESSING) { - stq_phys(env_cpu(env)->as, - env->psa + offsetof(LowCore, trans_exc_code), tec); - } - trigger_pgm_exception(env, excp, ILEN_AUTO); + if (excp !=3D PGM_ADDRESSING) { + stq_phys(env_cpu(env)->as, + env->psa + offsetof(LowCore, trans_exc_code), tec); } + trigger_pgm_exception(env, excp, ILEN_AUTO); cpu_restore_state(cs, retaddr, true); =20 /* --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569614309; cv=none; d=zoho.com; s=zohoarc; b=czSgAgERRupc2tOtEar+FkEecWDIxLVCSdazFkfVNhgLLEW81nftwpPi2qMOWBAVgbWxqrgQ5zy9LCGJZayHife1ZGO58Uum07AC+MZVFdclt46q7rTQu/CmKZVmxJT22pxwVCU7azms9KfbWaS8x8rRqBDKEXo9wD7oyPOGuL4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569614309; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=vJYZZP2e9BNSzbbwHk+HhznESdz192Yke+3plcKoZ6o=; b=dddrMexmTQq1EjDBb8V9UqQqA2j5lm47dKJgSi51sG3Dhk0avt0LYz16iF9fUyfs3GEOvRnd8EFWQjyCTYGnWJnxYFvDCtcXU+/MmLBkidStswWEKwjGgp0VgdV8OTi47gvmajvsDjhpYcz6ME9OmV03Z7GGf20/aNp6rf3rAeQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569614309126970.657571504266; Fri, 27 Sep 2019 12:58:29 -0700 (PDT) Received: from localhost ([::1]:57080 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwNn-0005fi-DX for importer@patchew.org; Fri, 27 Sep 2019 15:58:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46681) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5r-0003Q9-Sh for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5p-0006X1-8f for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:55 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:41002) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5o-0006V1-N4 for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:52 -0400 Received: by mail-pf1-x443.google.com with SMTP id q7so2129405pfh.8 for ; Fri, 27 Sep 2019 12:39:52 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=vJYZZP2e9BNSzbbwHk+HhznESdz192Yke+3plcKoZ6o=; b=dHqQcKcS5KBF6O77Plq4rDj88JAbk5pu6LwtBQU8M0h8gG5Xw8hAxzb6qIuHHkqLF2 cDkV41xYHWCRAQ1Cx7DvZcHOwJPNMUyUtumdCXb1Y6MoyYPAyglmn3b/eCL3M+S+tq6o PeoYDRYs+2Xi17wO9jh4HL7QcmAFuzB3i+A1Gu2F46/9Z4Pf5FMkpGRGfC01kYxrv/F5 vzk4KJZ3IgilHkyH773copXHutd+QW6ynYY+kZHjFGd93yQUK/IurGINa/TeXeJvJFwT lpYpKkMCHqR7FAJOrpIN4iw4WDbs3CV0WXaliZ0ZigeNhAUIXQ52iznTxTQz1D/zxjOY +Kvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=vJYZZP2e9BNSzbbwHk+HhznESdz192Yke+3plcKoZ6o=; b=L8Twkh8vHCaeX2vyyXwxztibMvRr3l+EBN5Lh5X0ZsC0pCcE2926LEUC8GTyJShml7 BVk3iRyoNVInq0dXK1jPENNahyWbxjQoYa0AeRMCIBPTwhPqivZ2XGw8gGT48MaSEFTZ 0QK/dDKLf6Sl60Z/PGfc3Gdm9XQPBzPPrmc6G5GtoTuoUB31eeG/uL/F0+PUJVx48Uzc se5Jcd6CgFPnvvjsIQQb7bB+z2+OnIbRnHVZ0pMTBPbqPbtCBjZ5QG4L+Go0G80aUKF5 DOpWpz5IIHSeYzdl3/uxkFWiZ4S+m74HZb2ng/hIS5OSGQfInS4SXtfDHKtbAJfmqTIp hudw== X-Gm-Message-State: APjAAAUt7MuptgXlJFF/It9yoOdK/8UCF0l1wWM3WuMiuugSQHoszMye AAKLWeZq7yD20tJRgUNtgiEWctPY19s= X-Google-Smtp-Source: APXvYqwmt2EGMGUa/8ndt/R4eNJMdH/aAOGqbHlMWLYFNgVmNvspgMU8TDyDkdVMavUt74tsamtwbw== X-Received: by 2002:a63:eb18:: with SMTP id t24mr10939654pgh.214.1569613190764; Fri, 27 Sep 2019 12:39:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 12/18] target/s390x: Simplify helper_lra Date: Fri, 27 Sep 2019 12:39:19 -0700 Message-Id: <20190927193925.23567-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::443 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" We currently call trigger_pgm_exception to set cs->exception_index and env->int_pgm_code and then read the values back and then reset cs->exception_index so that the exception is not delivered. Instead, use the exception type that we already have directly without ever triggering an exception that must be suppressed. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/mem_helper.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/target/s390x/mem_helper.c b/target/s390x/mem_helper.c index e15aa296dd..4254548935 100644 --- a/target/s390x/mem_helper.c +++ b/target/s390x/mem_helper.c @@ -2361,34 +2361,23 @@ void HELPER(sturg)(CPUS390XState *env, uint64_t add= r, uint64_t v1) /* load real address */ uint64_t HELPER(lra)(CPUS390XState *env, uint64_t addr) { - CPUState *cs =3D env_cpu(env); - uint32_t cc =3D 0; uint64_t asc =3D env->psw.mask & PSW_MASK_ASC; uint64_t ret, tec; - int old_exc, flags, exc; + int flags, exc, cc; =20 /* XXX incomplete - has more corner cases */ if (!(env->psw.mask & PSW_MASK_64) && (addr >> 32)) { tcg_s390_program_interrupt(env, PGM_SPECIAL_OP, GETPC()); } =20 - old_exc =3D cs->exception_index; exc =3D mmu_translate(env, addr, 0, asc, &ret, &flags, &tec); if (exc) { - /* - * We don't care about ILEN or TEC, as we're not going to - * deliver the exception -- thus resetting exception_index below. - * TODO: clean this up. - */ - trigger_pgm_exception(env, exc, ILEN_UNWIND); cc =3D 3; - } - if (cs->exception_index =3D=3D EXCP_PGM) { - ret =3D env->int_pgm_code | 0x80000000; + ret =3D exc | 0x80000000; } else { + cc =3D 0; ret |=3D addr & ~TARGET_PAGE_MASK; } - cs->exception_index =3D old_exc; =20 env->cc_op =3D cc; return ret; --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569614554; cv=none; d=zoho.com; s=zohoarc; b=ijdswp6+IKA7Eq8icUO09YTVnucR76Xb4Z4LjjRMtbZM8/Is3kfQ6t5lPbf/RO7VD+KM4lOwkjNvkByCQ+PQKoJ5VmMMQBFppV2S3SgwXVh+Qkufte1Az9umKawZNtZOJ/bdKk6Kr/1p8LjSRoZLCXhGLst9bwEi1RvK2KwyYEI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569614554; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=8sg4rb5KuIBYRa5veNL+5ohAGWn4FiKab4HtkGWajes=; b=W1W4AcIfh5Vd17b3+H9OMq6Ox/OiQWBuSh8RV1pSix7rhaUjGccWfLeEFv7GArW45I6f9Jpij7gBq6Ljwcfqbdq5lOyRBchc7/kj6kWzie8pJoAAe3ASJeQMDeTtCh0lvTdUWnBNwLftdh+jnJ8a30Py4qhGj7NEQFsroRDxh8A= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 156961455398087.2170021769241; Fri, 27 Sep 2019 13:02:33 -0700 (PDT) Received: from localhost ([::1]:57134 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwRk-0001Hn-Sf for importer@patchew.org; Fri, 27 Sep 2019 16:02:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46709) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5t-0003RY-9O for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5q-0006Yi-Lm for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:56 -0400 Received: from mail-pf1-x444.google.com ([2607:f8b0:4864:20::444]:45531) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5q-0006XM-3I for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:54 -0400 Received: by mail-pf1-x444.google.com with SMTP id y72so2118490pfb.12 for ; Fri, 27 Sep 2019 12:39:53 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=8sg4rb5KuIBYRa5veNL+5ohAGWn4FiKab4HtkGWajes=; b=lVlsN7IyLeO7dpem0HVwA10RkE/I9azz8CMvlxTsCjCZpiJdPRmS8yfLh4sxtQm7vZ UyRE81WvAMq6uwm2ucaG18vHSxUXVgOWSCtNfQPJdusuvDJymdM+QSpB9QkncwHxBwHg iaKkpFblXh2OABGcPkA5Zytv2a5lFz69Na0qjWWUD/3nCy3psCoZk8i2mwXL5JYiZ2Jn ac/fjUx7Lj4mcRC+Hq1XT0ws9N3CU9nHOEfApeUk67bum9KVbMAt/bEO5Xf3yFWFQklh kLuYwByvDGMnYmC3ADDYlNrq0DQ3dw5cSIhXT4HNPSXkTWkeoRj5bcISRrYojFBIvlFA yYkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=8sg4rb5KuIBYRa5veNL+5ohAGWn4FiKab4HtkGWajes=; b=b1ysLO2sdg4sBx3oCVYWLcl5oxhm0t6x+ep0teQSS39A/Zk4CdpQxAVHQBKwSZOUQE EEZlQXlvltc3Xijjm0fgcLeWFrhBAGvEOtFq0SH1HX2+xI+GGCTY2Mc8dry4teHnw5Of Kj/BVjBS+z6mKiWgAAcKxNcfBVjbg0N6x8arFKKbjbQ4jcf68+ANdRWDi6pISHI1IF1u u+8uvh6LCIWMgdGSEqjmWthLINgB39Cc8FFNjmV3Hd0zbbT/UkrJw5YiNVHo4ZJ0IohQ fZA1Q/ad7rTulvVtyMZQc+BAdBoSN9RPkywK0u/83tJoYMpTMm2bOjyrwxgwxZQeVRFw tbGQ== X-Gm-Message-State: APjAAAVqjMdKoCME31YwP1HaKOg1I/KcqHBCUV+HDCzGvTYD7MCWNXsK 2/+ovIziIPYNH3Z1OapeIZcM7Bu9V28= X-Google-Smtp-Source: APXvYqyzg4Oy0TaNjrZSIcFNUnEO+81UD+RB5IKiee9NcOzQMTGYTJ/ZGJIIrOlGIz2ocWIuH9UbtQ== X-Received: by 2002:a65:6111:: with SMTP id z17mr10959743pgu.415.1569613192341; Fri, 27 Sep 2019 12:39:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 13/18] target/s390x: Rely on unwinding in s390_cpu_tlb_fill Date: Fri, 27 Sep 2019 12:39:20 -0700 Message-Id: <20190927193925.23567-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::444 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" We currently set ilen to AUTO, then overwrite that during unwinding, then overwrite that for the code access case. This can be simplified to setting ilen to our arbitrary value for the (undefined) code access case, then rely on unwinding to overwrite that with the correct value for the data access case. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/excp_helper.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index 98a1ee8317..8ce992e639 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -96,7 +96,7 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int s= ize, { S390CPU *cpu =3D S390_CPU(cs); =20 - trigger_pgm_exception(&cpu->env, PGM_ADDRESSING, ILEN_AUTO); + trigger_pgm_exception(&cpu->env, PGM_ADDRESSING, ILEN_UNWIND); /* On real machines this value is dropped into LowMem. Since this is userland, simply put this someplace that cpu_loop can find it. = */ cpu->env.__excp_addr =3D address; @@ -179,24 +179,15 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, i= nt size, stq_phys(env_cpu(env)->as, env->psa + offsetof(LowCore, trans_exc_code), tec); } - trigger_pgm_exception(env, excp, ILEN_AUTO); - cpu_restore_state(cs, retaddr, true); =20 /* - * The ILC value for code accesses is undefined. The important - * thing here is to *not* leave env->int_pgm_ilen set to ILEN_AUTO, - * which would cause do_program_interrupt to attempt to read from - * env->psw.addr again. C.f. the condition in trigger_page_fault, - * but is not universally applied. - * - * ??? If we remove ILEN_AUTO, by moving the computation of ILEN - * into cpu_restore_state, then we may remove this entirely. + * For data accesses, ILEN will be filled in from the unwind info, + * within cpu_loop_exit_restore. For code accesses, retaddr =3D=3D 0, + * and so unwinding will not occur. However, ILEN is also undefined + * for that case -- we choose to set ILEN =3D 2. */ - if (access_type =3D=3D MMU_INST_FETCH) { - env->int_pgm_ilen =3D 2; - } - - cpu_loop_exit(cs); + trigger_pgm_exception(env, excp, 2); + cpu_loop_exit_restore(cs, retaddr); } =20 static void do_program_interrupt(CPUS390XState *env) --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613599; cv=none; d=zoho.com; s=zohoarc; b=EItRxf9s3bbWBaVy2RcOsU+1vXdSs8UKNpn+v3aT+J1fhlgppGHolBduK61PabfYgjcg6RGP7nlJ0G+iaB8tl5LfUrTvt8vwOlfFfoL4sReL0oLDgkBAYCbJ3DfF/4+NSxnw12YB18yiYHwlMEW7hIO4RZTTuVCH/e9u0sZCNJc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613599; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=vmomdltG4SHs0hB1D0S9fmCLBesupAAj+oL64yYCJ5w=; b=LiaF/YI4zKJd0NX0siEHmgQ9HTeFPg4dl80ClM7fMlzNq/9uieUjsV+ezvalzUVp1+MmcaVi7C1//J/97BXyCMVMuJxh1NGf+i2Y0O381BYcUzdPZes0VwM/yJRx8Yk39PNS2E9atw9cGD6+lGxEBni3iQPWb25sUvA/TBJ6RL8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15696135996731.9655023745308426; Fri, 27 Sep 2019 12:46:39 -0700 (PDT) Received: from localhost ([::1]:56824 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwCL-0001Au-SC for importer@patchew.org; Fri, 27 Sep 2019 15:46:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46743) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5v-0003TM-2G for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:40:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5s-0006a2-Fu for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:58 -0400 Received: from mail-pf1-x444.google.com ([2607:f8b0:4864:20::444]:39864) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5r-0006Yu-QT for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:56 -0400 Received: by mail-pf1-x444.google.com with SMTP id v4so2135049pff.6 for ; Fri, 27 Sep 2019 12:39:55 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=vmomdltG4SHs0hB1D0S9fmCLBesupAAj+oL64yYCJ5w=; b=bBpNxCm3tlmRASePBTIFSk9X2pDzqK5qGbUCpg9yJpMWgpWwc+KL+WAn4BKmm1oWIU niao6NK7nItkHpwzJg6W6R/fWpGXRAa9C+3Adha/gvyifryNMyS6TSfD/2wmCMkrGaR+ wJP8dGf6+B+D89ODr9cj4qeYjrU+/PyZ5DR85Mk88a27zi8heKcggY5+ULFt860dn7AE 74ZgWogpkmUNUzId2e1ngZGLlzyK3vsjygyPX13AGXwA+dL5PUt8KqYS5YOx5L6revH1 77bQri6xhw9xrEOADdTwD983Jek72dgPiMKRUrumMd45uc/iSdyVktvpIHVzIvutzDsh EOXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=vmomdltG4SHs0hB1D0S9fmCLBesupAAj+oL64yYCJ5w=; b=Afwlbs+/U162rzb+7VD/NxZkdAnZGIAjoWspJwsJDpEgDR1EVWhmMh7195yNjvVxlR 3sk2YfugsiFuZmuXCOrYC6/wai6XSdUKYSEF3TacUx7DXrJdlCaR7D6NrDzYEb8hDVcg Zs/gVHnUnXtRv3txrx8pAEvrvY1hmLNSrG6r/IDFpbj9MbiC1/fjPCIQN0/ixQxyd3sU uKsCVq0/tqE64FrE49gS5hkHm8A+SZtMLlJPBctu06uSYYW/R3lh7vrAhZ6GalOA6PUq 312zsIdhpUbroA8qyWWMxBDf+MFGAHPiKjAp43YAgOydd5IoUh8tMdG9B6OmzJzlo9S1 deBQ== X-Gm-Message-State: APjAAAUuc0BFVHYjUQitiEzbRqgN2ICHnRYRTuM531DHEkMwvPRK1/20 BqDoqPfg6V9SDYNiYQAWT+4x2Kzyif0= X-Google-Smtp-Source: APXvYqx9Rw+7JUDAtL7Tig8qyuMGQH8dwN9BiY5YeV1SdPzTd9q5Viv015iCDazN4I4cNxvJLT6KVw== X-Received: by 2002:a17:90a:9d87:: with SMTP id k7mr12106460pjp.103.1569613194228; Fri, 27 Sep 2019 12:39:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 14/18] target/s390x: Rely on unwinding in s390_cpu_virt_mem_rw Date: Fri, 27 Sep 2019 12:39:21 -0700 Message-Id: <20190927193925.23567-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::444 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" For TCG, we will always call s390_cpu_virt_mem_handle_exc, which will go through the unwinder to set ILEN. For KVM, we do not go through do_program_interrupt, so this argument is unused. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/mmu_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c index 98ac58574c..437e211366 100644 --- a/target/s390x/mmu_helper.c +++ b/target/s390x/mmu_helper.c @@ -511,7 +511,7 @@ int s390_cpu_virt_mem_rw(S390CPU *cpu, vaddr laddr, uin= t8_t ar, void *hostbuf, =20 ret =3D translate_pages(cpu, laddr, nr_pages, pages, is_write, &tec); if (ret) { - trigger_access_exception(&cpu->env, ret, ILEN_AUTO, tec); + trigger_access_exception(&cpu->env, ret, ILEN_UNWIND, tec); } else if (hostbuf !=3D NULL) { /* Copy data by stepping through the area page by page */ for (i =3D 0; i < nr_pages; i++) { --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613860; cv=none; d=zoho.com; s=zohoarc; b=IC30AdNbCAY/L0dOhig1jvHI5lEhYfaIJEB8OI+xxAHWK124MQSTvHyyu7XMdNEve47QfLaK89KTnk/989eakR0ERPsVxKIs/jghItzB3Bpv3pyWTZS0PmQITOFtnTnJ6QToa0uvd9KfMfqN7UADrIr4VeYkvg1Uf2WHcKSn9Tk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613860; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=rx79XawZGOGKLwUeTUnrPs0Kyi9mUgl/u4ZwkL557D8=; b=GGj+NyDVdFwmzU2VTDV2WA+lnF+pG/Z1kX0LE6Tc4T/TtPinCXiXgUJKUHiOEOI2twXP5E7HVUd1UBNY9XQ5SoLrwlxrGPaGnlUJuvkX0vQQqkW7KdpPTSxM6pr7ffjIpvwr3Dyjh/1CEqVPNAuNZNLffGXuolAnedcY7BbXvHI= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613860717656.974666496984; Fri, 27 Sep 2019 12:51:00 -0700 (PDT) Received: from localhost ([::1]:56922 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwGX-0005Ch-07 for importer@patchew.org; Fri, 27 Sep 2019 15:50:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46782) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5w-0003VG-Rw for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:40:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5u-0006bd-Fy for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:40:00 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:42840) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5t-0006aE-L4 for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:58 -0400 Received: by mail-pl1-x643.google.com with SMTP id e5so1467620pls.9 for ; Fri, 27 Sep 2019 12:39:57 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=rx79XawZGOGKLwUeTUnrPs0Kyi9mUgl/u4ZwkL557D8=; b=X3ehUJMvQYNgN5E3I7BzldjZNcAqijjYHlRG0D8sVRaKSQKLBe7tbHOR1zVGqMEGkg iN2XZ/TyFvFQ4a7Cy0TcFEKX++s111GYVg2KYSKfs8MZkP4W4C+X1gz9gRin9cTmwo7R N2unCEUNn8nzgpiAfDsKuQaGMCqOBj07vDUGhLkCFle3APJN7r5lCFSbvODfn8JRrDz1 cmeYuYFpLPbOFOVYfwdVaVJ2HAu7IT9VT16GjV1p+nx23CzH+a6pUYS4Jx+ZfeR3tIzi f9Q28lk7XTgRkC55EGylcT9rGrXv6qoJsLkBQAUlAw+YXaTdMLsySDAyZv6Rq1eVi9yS Pb+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=rx79XawZGOGKLwUeTUnrPs0Kyi9mUgl/u4ZwkL557D8=; b=aD2aXCPqaVP6RjsdhIjKi9d21gEJeaST1Jduk3HFZTTHpocN5eRLfHV3UnZDoWv5m9 4wVmdXvkzS4TaRKUBc4+so29BhH7hVg4Q/aPPnr4Y7XeSs7EK3/yIuXBow/cyoAl6yAj 0+DcxaGKITsMpQO+xzQ0+okYgvvmMT8ipkvRyCQhW2xXAVKTXdDdfaY5QLQekgG6GYXU S+a/UtDdlNAcWiWv+lBaXh+3a7Zd6hbiQl8ugcNk6g0/z5Z7pgMGYMZX4uLu4qCMOJcM WR1XT9IM2JvjZGBG+1fLSANmusaKU3hfzDDsPlJgkMp8f0GUtKeG7eVo82zvBHcyZr66 NoCQ== X-Gm-Message-State: APjAAAUXUllHjfz2BjPybyR1UnteVig5bxNyHxUKLmU9JAjtLtH3kr4a ZdtN1QDSYbOzYFBM0fnWETMurW9O3Xg= X-Google-Smtp-Source: APXvYqwKqlF7U7FLdfywPymNbPiKIBudOQg3T9trivk/OpAOTzQ2lr+jYik05A5VY3hj1BnDc4hnVQ== X-Received: by 2002:a17:902:8f88:: with SMTP id z8mr6695031plo.232.1569613195850; Fri, 27 Sep 2019 12:39:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 15/18] target/s390x: Remove ILEN_AUTO Date: Fri, 27 Sep 2019 12:39:22 -0700 Message-Id: <20190927193925.23567-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::643 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This setting is no longer used. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/cpu.h | 2 -- target/s390x/excp_helper.c | 3 --- 2 files changed, 5 deletions(-) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 67126acc99..686cbe41e0 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -805,8 +805,6 @@ void s390_io_interrupt(uint16_t subchannel_id, uint16_t= subchannel_nr, uint32_t io_int_parm, uint32_t io_int_word); /* instruction length set by unwind info */ #define ILEN_UNWIND 0 -/* automatically detect the instruction length */ -#define ILEN_AUTO 0xff #define RA_IGNORED 0 void s390_program_interrupt(CPUS390XState *env, uint32_t code, uintptr_t r= a); /* service interrupts are floating therefore we must not pass an cpustate = */ diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index 8ce992e639..c252e9a7d8 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -196,9 +196,6 @@ static void do_program_interrupt(CPUS390XState *env) LowCore *lowcore; int ilen =3D env->int_pgm_ilen; =20 - if (ilen =3D=3D ILEN_AUTO) { - ilen =3D get_ilen(cpu_ldub_code(env, env->psw.addr)); - } assert(ilen =3D=3D 2 || ilen =3D=3D 4 || ilen =3D=3D 6); =20 switch (env->int_pgm_code) { --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569614704; cv=none; d=zoho.com; s=zohoarc; b=GTyqdB3Oada2uGA5xLINROSyl1jihln0k10XKa3x83I4hF9HIcfL3sp//RvVgLbtlcmKxpjbOo3sZO9LHTkWtBmi6lii37A1BeZQH505OtVD1Vy3PKa+lqquOxW0mXlZOhQmyKUS3xjmiMu+RdT1QoNzo0X/bbg3kxaK6ugHjUQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569614704; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=rr9SwpjvJyE9OAuq+Q5fU6KQ8tvMfOw0yzqcdXmDV6g=; b=BjqBIhsJQipd23jLTGs6yLzdkskODiIw4sorlKZdoCld4fC0CBQ4rlbM4mRcBv+3ZAGZaE5EWdEx+EUoxpUbis/WRdafMUBQkmhYYTBOUsBClfqpB+JbhG2uP/QjoUYrYma1s6Qxe3+KnxpTcpaQSgqefuOVzcwkUEryJGH58EY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569614704377677.6187273590587; Fri, 27 Sep 2019 13:05:04 -0700 (PDT) Received: from localhost ([::1]:57160 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwU6-0002tL-Tg for importer@patchew.org; Fri, 27 Sep 2019 16:04:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46794) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw5x-0003W9-W3 for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:40:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5v-0006d8-MR for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:40:01 -0400 Received: from mail-pl1-x641.google.com ([2607:f8b0:4864:20::641]:34027) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5v-0006bG-0W for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:39:59 -0400 Received: by mail-pl1-x641.google.com with SMTP id k7so1479050pll.1 for ; Fri, 27 Sep 2019 12:39:58 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=rr9SwpjvJyE9OAuq+Q5fU6KQ8tvMfOw0yzqcdXmDV6g=; b=aDT7BxonbwhBrtNiQmX53zn5ou3fwFVE475ELZ2hZu4zOdDFP+KFQLpH7OZnC6jesI d//jp4lLR/yEAZicDTnUWS80bdP8roJC2fzaxQi1kISAIITQ7xMyaUOlCNx5G92etJGO FX55EGLD5VvHr9biFtkOTTbpxizBgBBjXTDeCjxeDXL/x+hAu1giA4P6yGqLWrwOJf/A XkeFvGI4xNZfFS4kzx5wVDmdbuEE5dLpsvD0WWiVyAmTc+drBz5EP26WqUFI9/MpfCeA WVAHTrEeWrzDy5DgY646hJ0DnULm1WLHxKTC9rqDOB2Uv3wAYk8xAlAKTNYsqoZxbun7 kEqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=rr9SwpjvJyE9OAuq+Q5fU6KQ8tvMfOw0yzqcdXmDV6g=; b=VUWe+xBTfQfhxwdzuBHHwn8aWlzL79RoilqmgETT+/yn0WM6CsE6QscjH1GNXQGI7k vruYGWztMokndOXKmuK/HD2+dR7vVYB5ulxLxW7wi+iwayGTUDpduHbRtVMwKnfbV+aR ezSUeaX4t/muVSazEl73MLeWQOGvIZIePNqQtwTwNMA/haXn1q6Dp5epUrQp0VQ6CW2i 6IB7+CEs9BFoWi+IC0OzE8Iwz7iR2u+b4v3X/FSu3lImkebHoGDHk4zV/99NdcYc+GlO 54XYO3ytp4F2dAZQAEaLPvjfdy+Ndt08DkkGv9n85e2KX4hQJ6RKFExNdqM8oaDBJ8d9 6DmQ== X-Gm-Message-State: APjAAAUqN8Q0dNiE95lHHDnmpw+itIXKGaH+UGnxVL8jNP2F42XrzaOt sR1ij9sjwB5Pbn9GZURShuVBrgtb1WM= X-Google-Smtp-Source: APXvYqwFEenEauJG9F6Il4+5+f7rYk6ExMIz+HYF8HxlqJTMsf7wadlDAAL7q4ZZt0ba0dB868KepA== X-Received: by 2002:a17:902:9a85:: with SMTP id w5mr6252924plp.316.1569613197162; Fri, 27 Sep 2019 12:39:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 16/18] target/s390x: Remove ilen argument from trigger_access_exception Date: Fri, 27 Sep 2019 12:39:23 -0700 Message-Id: <20190927193925.23567-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::641 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The single caller passes ILEN_UNWIND; pass that along to trigger_pgm_exception directly. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/mmu_helper.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c index 437e211366..768f50a255 100644 --- a/target/s390x/mmu_helper.c +++ b/target/s390x/mmu_helper.c @@ -33,7 +33,7 @@ #define FS_WRITE 0x400 =20 static void trigger_access_exception(CPUS390XState *env, uint32_t type, - uint32_t ilen, uint64_t tec) + uint64_t tec) { S390CPU *cpu =3D env_archcpu(env); =20 @@ -44,7 +44,7 @@ static void trigger_access_exception(CPUS390XState *env, = uint32_t type, if (type !=3D PGM_ADDRESSING) { stq_phys(cs->as, env->psa + offsetof(LowCore, trans_exc_code),= tec); } - trigger_pgm_exception(env, type, ilen); + trigger_pgm_exception(env, type, ILEN_UNWIND); } } =20 @@ -511,7 +511,7 @@ int s390_cpu_virt_mem_rw(S390CPU *cpu, vaddr laddr, uin= t8_t ar, void *hostbuf, =20 ret =3D translate_pages(cpu, laddr, nr_pages, pages, is_write, &tec); if (ret) { - trigger_access_exception(&cpu->env, ret, ILEN_UNWIND, tec); + trigger_access_exception(&cpu->env, ret, tec); } else if (hostbuf !=3D NULL) { /* Copy data by stepping through the area page by page */ for (i =3D 0; i < nr_pages; i++) { --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569614824; cv=none; d=zoho.com; s=zohoarc; b=B4HZptEBLR8aD3p4wbiO7WC4Z0ydcqVozBudF/eqyTKvItFUCZ+AqZEIgCUFCytTC7YV6ZAjiWwrnk7ysjZ7zc5CtRzCQr1BezNae6uDB7fxHiyrEQ3AKib4jlR/vqMAyykDcmGPcjtKuiTPCsrqUF2BGxfi5YPcj+zBzu1d9Uw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569614824; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=xyookMrLFMxgbzGDAo81NwXe/jFxyBCLMjB+5LZHPQQ=; b=np+rSZSTdu4DpzEMVqMAgtKy/EZ3jQyb3NxzdO0tLx1iHn45q6fiqY4ZS3ZKVDGNHOSnBJb0lZQGnE36JpggWszRgy41Zh5ktvISHFirXDoSTXOqBH1HU8kfp7jnGAMMKMbxnS0ukUrXYPgBo+KH9GSM9rYhIU+M0awo/jNpRZ8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 156961482486476.51515539794661; Fri, 27 Sep 2019 13:07:04 -0700 (PDT) Received: from localhost ([::1]:57180 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwVr-0004Cl-R6 for importer@patchew.org; Fri, 27 Sep 2019 16:06:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46839) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw60-0003YS-Dl for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:40:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw5x-0006ek-8B for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:40:04 -0400 Received: from mail-pl1-x642.google.com ([2607:f8b0:4864:20::642]:43309) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5w-0006dS-K4 for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:40:00 -0400 Received: by mail-pl1-x642.google.com with SMTP id f21so1461288plj.10 for ; Fri, 27 Sep 2019 12:40:00 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=xyookMrLFMxgbzGDAo81NwXe/jFxyBCLMjB+5LZHPQQ=; b=KJBlU/UUP8SBSi+VzPmvIkUkhGtVQB9awpc+UO+AKSGHNNuj15qlA8tVnlikOVONST s94QogqWLdewu/H/IGopK5ev6QIC0wecSlRloXr0kflk9Ve4oKMccf3hqan6g0/065I0 5OGuOr6Q33vV7XBDhmgEXs7htIjaC5cQM6YBBr79/xKN2czYtL5uTSGwkmMgHGs4H739 5XyarLaMOB3i6S3iRHpKtjFMY4cSGm0w7/nPjjBAyNIUgqBNpJDWIFH8PVtpBxkilko0 YNz0/jNebfol62RshkjJIPlWte4wmn2ycUJMk8WvKAT15VKMi+oU8sngkpRsRYUKX99K ZMmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=xyookMrLFMxgbzGDAo81NwXe/jFxyBCLMjB+5LZHPQQ=; b=ciOdE+PQ8d/3Vgt5VaKcooZKj6FQxAXegKuYHghGZDf/sOft8LS8duJLwV6Vvivvv3 7ofDmxj/qQP4rH53Ar4D/FCyUGFdrBaaj2BVNyRwTL0e8L62rwj76bUHd801hru1vPYX EnSjaGErgVpPPWfqWWwUFOCBX2jlMAy6VvoP1DoMzwhqTDW17aNaZZJTeIo5mvbaIYrv GEco46u7guO5jgmo511beD2k+CKJC5Byn0h91cOCfLmEPCLjZYL7S9HswIzZasqIVY6N tdURex02nDvgerCWS69mAIcJqSNjB8CrA4VWByUUfDZzhTWZaNB/4Nk5ZJEgU92ZXrhi 5tYQ== X-Gm-Message-State: APjAAAUKLG7xHXSfHQUld1CM132MEap1GcdN4HRTNZ7ea/q4ryowPn4h OwdpVFDE8D+UMctkkPbdfmhOGcs5OPU= X-Google-Smtp-Source: APXvYqyAOptBsOcQ4U/+xpLe+40YQkImgOByr5UedGgwRH1cpRTaHJ28JGh4Y9cvwxaUIHyFP+Z3pw== X-Received: by 2002:a17:902:8bc8:: with SMTP id r8mr6388734plo.338.1569613198824; Fri, 27 Sep 2019 12:39:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 17/18] target/s390x: Remove ilen argument from trigger_pgm_exception Date: Fri, 27 Sep 2019 12:39:24 -0700 Message-Id: <20190927193925.23567-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::642 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" All but one caller passes ILEN_UNWIND, which is not stored. For the one use case in s390_cpu_tlb_fill, set int_pgm_ilen directly, simply to avoid the assert within do_program_interrupt. Reviewed-by: David Hildenbrand Signed-off-by: Richard Henderson --- target/s390x/internal.h | 2 +- target/s390x/excp_helper.c | 7 ++++--- target/s390x/interrupt.c | 7 ++----- target/s390x/mmu_helper.c | 2 +- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/target/s390x/internal.h b/target/s390x/internal.h index c993c3ef40..d37816104d 100644 --- a/target/s390x/internal.h +++ b/target/s390x/internal.h @@ -317,7 +317,7 @@ void cpu_unmap_lowcore(LowCore *lowcore); =20 =20 /* interrupt.c */ -void trigger_pgm_exception(CPUS390XState *env, uint32_t code, uint32_t ile= n); +void trigger_pgm_exception(CPUS390XState *env, uint32_t code); void cpu_inject_clock_comparator(S390CPU *cpu); void cpu_inject_cpu_timer(S390CPU *cpu); void cpu_inject_emergency_signal(S390CPU *cpu, uint16_t src_cpu_addr); diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index c252e9a7d8..e70c20d363 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -42,7 +42,7 @@ void QEMU_NORETURN tcg_s390_program_interrupt(CPUS390XSta= te *env, cpu_restore_state(cs, ra, true); qemu_log_mask(CPU_LOG_INT, "program interrupt at %#" PRIx64 "\n", env->psw.addr); - trigger_pgm_exception(env, code, ILEN_UNWIND); + trigger_pgm_exception(env, code); cpu_loop_exit(cs); } =20 @@ -96,7 +96,7 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int s= ize, { S390CPU *cpu =3D S390_CPU(cs); =20 - trigger_pgm_exception(&cpu->env, PGM_ADDRESSING, ILEN_UNWIND); + trigger_pgm_exception(&cpu->env, PGM_ADDRESSING); /* On real machines this value is dropped into LowMem. Since this is userland, simply put this someplace that cpu_loop can find it. = */ cpu->env.__excp_addr =3D address; @@ -186,7 +186,8 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int= size, * and so unwinding will not occur. However, ILEN is also undefined * for that case -- we choose to set ILEN =3D 2. */ - trigger_pgm_exception(env, excp, 2); + env->int_pgm_ilen =3D 2; + trigger_pgm_exception(env, excp); cpu_loop_exit_restore(cs, retaddr); } =20 diff --git a/target/s390x/interrupt.c b/target/s390x/interrupt.c index 2b71e03914..4cdbbc8849 100644 --- a/target/s390x/interrupt.c +++ b/target/s390x/interrupt.c @@ -22,16 +22,13 @@ #endif =20 /* Ensure to exit the TB after this call! */ -void trigger_pgm_exception(CPUS390XState *env, uint32_t code, uint32_t ile= n) +void trigger_pgm_exception(CPUS390XState *env, uint32_t code) { CPUState *cs =3D env_cpu(env); =20 cs->exception_index =3D EXCP_PGM; env->int_pgm_code =3D code; - /* If ILEN_UNWIND, int_pgm_ilen already has the correct value. */ - if (ilen !=3D ILEN_UNWIND) { - env->int_pgm_ilen =3D ilen; - } + /* env->int_pgm_ilen is already set, or will be set during unwinding */ } =20 void s390_program_interrupt(CPUS390XState *env, uint32_t code, uintptr_t r= a) diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c index 768f50a255..839b35fae9 100644 --- a/target/s390x/mmu_helper.c +++ b/target/s390x/mmu_helper.c @@ -44,7 +44,7 @@ static void trigger_access_exception(CPUS390XState *env, = uint32_t type, if (type !=3D PGM_ADDRESSING) { stq_phys(cs->as, env->psa + offsetof(LowCore, trans_exc_code),= tec); } - trigger_pgm_exception(env, type, ILEN_UNWIND); + trigger_pgm_exception(env, type); } } =20 --=20 2.17.1 From nobody Wed Nov 12 08:32:48 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1569613995; cv=none; d=zoho.com; s=zohoarc; b=fQoSRCdu+PacS3UPn0TnPdKXKr+mSyadpqntC5Z3ZOcziq/9gaXV9/lY4m6nV5XiwiEzklbV8WtsI5tVt4b0jaYARS2gWEaZGGSNybnAph5khOIp3ZRZYP+V/qw0PW7StkVucAEGC55q2Sx5gc4MhsnWmYI71t7LDN2DqGDmTGA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569613995; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=mTFuitZe7hi832mSOd5Lm6Rc+DkzGOsmyco0ZFUycTI=; b=ajifJcSNvXtkuCPYbnYhBujJQHcY+yAFGOCNFhBJ2twxb1kyj6AcjV2/Sj9HziY4CkEL4EsNZ8OsgUo3QEMUf/4qN8Q2IBXZe+5v1TmkcKT0OCZG9ndy/90JXV0TvTQb1uVa+Bm+atdZwOa2shmll1nq1JZ5bBqD3gBLxehW7zw= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569613995517676.8890822236889; Fri, 27 Sep 2019 12:53:15 -0700 (PDT) Received: from localhost ([::1]:56958 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDwIk-00081g-En for importer@patchew.org; Fri, 27 Sep 2019 15:53:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46853) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDw61-0003Zo-T0 for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:40:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDw60-0006h9-37 for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:40:05 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]:34827) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDw5y-0006f2-I8 for qemu-devel@nongnu.org; Fri, 27 Sep 2019 15:40:03 -0400 Received: by mail-pl1-x62d.google.com with SMTP id y10so1479372plp.2 for ; Fri, 27 Sep 2019 12:40:02 -0700 (PDT) Received: from localhost.localdomain ([12.206.46.62]) by smtp.gmail.com with ESMTPSA id 192sm3676403pfb.110.2019.09.27.12.39.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2019 12:39:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=mTFuitZe7hi832mSOd5Lm6Rc+DkzGOsmyco0ZFUycTI=; b=qGPsmrXG54x+Oh96kLbPCff8uASvb7FkRmjJGHrM3YlW1HAhbxc4NzbdkbPU2H1Dln rRFZLEshhkmJk3PUgTZ20h8vVFo8cz8DJv5zU/zXz5ST0zwNJw6TJdJGUIqdQCBfYYZw 7jGaEdRGVnENlNvdcUe/IxwGtvOnpzYICn6l/10WmiyKlO7qSDwgQui+V26O0erTF20D QDXDaRKF5+ClvSEF7SXVo6R9Yz4c4j6l0mryU8xgd4/+m6zHtrSBgCYtj7ip9DiiY1L5 0n8KNI+K9C5AvB2BNayL4VlIipvkaeEj0FW6Ncf1bxyVYnxzC27i64CW4Ne9921xUQ4s GXSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=mTFuitZe7hi832mSOd5Lm6Rc+DkzGOsmyco0ZFUycTI=; b=FO7VaoJJjPvMTKJjDu2xTH0gGCB3Z84w2DDsbegIInoqjflowz4VflIfdXdtz21D6w SOFV0NFC3mLkeTseJZCp73qP3U+LbJfW0OMrUHvxr8VrJSPIpmhcBAB/VOQ4ICVF7uRE IunGRoII6PuffKNyWurVhZjfOEez900WeItqdSKP8hxmX8tbzo0OlTzhrG6kTr9c+PDx tSR4fXTGap1PI2zTAMycWbiErYqU6Whs/B3VvCKusXnpxCRItw8rsWBReyF07zC9qjOK 2T0pqWtVRjjgUu+3lJqt8QOmVdGiq1v/rd2gRYSjtJ1y7vMAQVQ0KWPI0MrI2CiEmBti m83w== X-Gm-Message-State: APjAAAVWtmM2dNvweimrttwVlHWHXC33hLeDZTDdhq5a2/OtypGpdSFu tQeqYvueZf1SnrnjKfTb+qrUh1MHEm4= X-Google-Smtp-Source: APXvYqxqyr1a9cesbgZUjPzO/XJ0lQKjO/1tpyGA7dvk/nEMdjE8b3CAXR0uwYo1NriviHYS0CPeyA== X-Received: by 2002:a17:902:7401:: with SMTP id g1mr6588734pll.20.1569613200545; Fri, 27 Sep 2019 12:40:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v4 18/18] target/s390x: Remove ILEN_UNWIND Date: Fri, 27 Sep 2019 12:39:25 -0700 Message-Id: <20190927193925.23567-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190927193925.23567-1-richard.henderson@linaro.org> References: <20190927193925.23567-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::62d X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-s390x@nongnu.org, david@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This setting is no longer used. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand --- target/s390x/cpu.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 686cbe41e0..fe1bf746f3 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -803,8 +803,6 @@ int cpu_s390x_signal_handler(int host_signum, void *pin= fo, void *puc); void s390_crw_mchk(void); void s390_io_interrupt(uint16_t subchannel_id, uint16_t subchannel_nr, uint32_t io_int_parm, uint32_t io_int_word); -/* instruction length set by unwind info */ -#define ILEN_UNWIND 0 #define RA_IGNORED 0 void s390_program_interrupt(CPUS390XState *env, uint32_t code, uintptr_t r= a); /* service interrupts are floating therefore we must not pass an cpustate = */ --=20 2.17.1