From nobody Mon Feb 9 08:27:15 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.53 as permitted sender) client-ip=209.85.128.53; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f53.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail(p=none dis=none) header.from=amsat.org ARC-Seal: i=1; a=rsa-sha256; t=1618947302; cv=none; d=zohomail.com; s=zohoarc; b=TcROa9ZDv5ouLkvskiez0RkW7tamTky7GqMONA5QT3y8V9J+5jyLkbGJ85XEk3Mal1Ydhecr7v6CPEelUebIQHDhg376TjIK1KxRIpvdnzu/YhA9dBwHSxP6w7dEUo/TTGMO9tY+nkku5twt/AlX9XQaiOHn4iVjQg9aNKqhPK8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618947302; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qLCiOBvYe9uou2qKsybkRDArrM3VCschSDNYIP+mEg4=; b=GhwgkMcwVLsMplBgKAHXt3/gujoMQucJXnTq6rGsuQU3+OEdhwVWJBK4CZc1c0T7azNRXOpynNdMVbYTcR0MFa/oBQttnfOKc3L0/DIsqjfWvYjDvG+jNqxuENr++bHur9gx/Vsy6zNc93yfZTbmYVnHBHRVpyKQeftE/8/v6QY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by mx.zohomail.com with SMTPS id 1618947302357236.67642902468515; Tue, 20 Apr 2021 12:35:02 -0700 (PDT) Received: by mail-wm1-f53.google.com with SMTP id k128so20874763wmk.4 for ; Tue, 20 Apr 2021 12:35:01 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (39.red-81-40-121.staticip.rima-tde.net. [81.40.121.39]) by smtp.gmail.com with ESMTPSA id q7sm15939006wrr.62.2021.04.20.12.34.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Apr 2021 12:34:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qLCiOBvYe9uou2qKsybkRDArrM3VCschSDNYIP+mEg4=; b=UXpm50Kat3ML+nILUcSgIGazeHQ7BgpZrdbwOlr4Wan5vb4HfrhEY47zN+KMMSfbSH wZwk+lzDiElOgFUTvDqMFrh/U7KB3I7lHYNNguAAQjwut3K3EtY+e81cpkeyD3Gg9mBp z6+gK2z/fTr1JKtItPn7UllvuIdL1jEm0IBb3LtDjXk1ySfMlUd2NhxU2X0b06ER1Hdb OwqmQmcPn9Sz963TL8tmuvc9OSJpS5GINqNzKZVuAHCoYY+s/jpkVUzYQmQmXfWayzsc bhtP4ThagbwkeQEZOkFWNcyBEIbNdF24jBF0C1vATOzbuFeN4goDI3kmnG+lx8z3it0t bGyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=qLCiOBvYe9uou2qKsybkRDArrM3VCschSDNYIP+mEg4=; b=k+g0wjFS9z6EqJcvKko6YUmU8oTRJXCbQs56FMrQzz8xqlA3YQDG4I+jDcz3/Fik6d WwOJoQBbC/u1EPhTMR3jEdV0i/4VPj0n2khJRl6sx+G89A0NbIndPcivqwAKopKbT50g K9/Nn54ypzgp0TIKzsGuqlXDvnipXp55Qbza/cYDRanqGCGcdgoZIBVBjg0K5JrXb4ze 7fFERaBiplNmhaxJWtIY6jrv+8WpqMmPJhNNbZI9dAbiJ07pWB03efNPp5DTD2M3N/jj 2x32Go8uuoabH/QaF0c3WoGt2EBI5cPrD61lDazEannF9L7+2OaHfcrOSV1Omj5erO+1 AARw== X-Gm-Message-State: AOAM533u95fCUL8HF6TofUsnLXRFiKJ1D/gNCPax567v1+ZlNPtm0VF4 5nhni8z239QD66q2RnNtSKs= X-Google-Smtp-Source: ABdhPJxJldn4Rhtn7ZdT+/3BSZXXI22427rLDpLi0bQzl6lhAGKbjZ9pnylyhRUHraNncqL6cI28Vg== X-Received: by 2002:a1c:f618:: with SMTP id w24mr5972311wmc.93.1618947300467; Tue, 20 Apr 2021 12:35:00 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aurelien Jarno , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Jiaxun Yang , Aleksandar Rikalo Subject: [PATCH 1/5] target/mips: Remove duplicated check_cp0_enabled() calls in gen_cp0() Date: Tue, 20 Apr 2021 21:34:49 +0200 Message-Id: <20210420193453.1913810-2-f4bug@amsat.org> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210420193453.1913810-1-f4bug@amsat.org> References: <20210420193453.1913810-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) We already check for CP0 enabled at the beginning of gen_cp0(), no need to check it again after. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- target/mips/translate.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/target/mips/translate.c b/target/mips/translate.c index 5dad75cdf37..9acca6ef045 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -9477,7 +9477,6 @@ static void gen_cp0(CPUMIPSState *env, DisasContext *= ctx, uint32_t opc, opn =3D "mthc0"; break; case OPC_MFTR: - check_cp0_enabled(ctx); if (rd =3D=3D 0) { /* Treat as NOP. */ return; @@ -9487,7 +9486,6 @@ static void gen_cp0(CPUMIPSState *env, DisasContext *= ctx, uint32_t opc, opn =3D "mftr"; break; case OPC_MTTR: - check_cp0_enabled(ctx); gen_mttr(env, ctx, rd, rt, (ctx->opcode >> 5) & 1, ctx->opcode & 0x7, (ctx->opcode >> 4) & 1); opn =3D "mttr"; --=20 2.26.3 From nobody Mon Feb 9 08:27:15 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.41 as permitted sender) client-ip=209.85.221.41; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f41.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.41 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail(p=none dis=none) header.from=amsat.org ARC-Seal: i=1; a=rsa-sha256; t=1618947307; cv=none; d=zohomail.com; s=zohoarc; b=mFjMJBTgXC1Hi2Ne3yC0GG2sXygaoSuiwQhPxp/w1s1+M3oOF0Dm4s/1SFR+9pqF7VHSGAhRIrSs/uNMMjRaYZRBhenUKO7r0cQgUJBU9SjJv5tHnCSVjVTPMIlQN6fKXrBz2FUPNMj3yi3wE10RqkFIl26YDiVrVHFXzwz3pvY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618947307; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=v/jch+x5fbHSlYAP492qo4ieSnFpYCmcLlzP1woMe5g=; b=G/ZRA9z3BrmImZNcfaGv2wQ7JiqQpbKJV9DtUe/cuJPlsb1mF7v/Ypzk4MAS+uCXv1QT+361Sa7ROcLC5BwgvyyS32Q5bNpJqY4E2euR/eo4J3Jd5p6R8GCJTfIg3+gG8Pajf5aGL7Q0DcrceYn0iyP6Ewx+GQlOW1aapKNdqnU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.41 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by mx.zohomail.com with SMTPS id 1618947307013694.146396673739; Tue, 20 Apr 2021 12:35:07 -0700 (PDT) Received: by mail-wr1-f41.google.com with SMTP id x7so38862752wrw.10 for ; Tue, 20 Apr 2021 12:35:06 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (39.red-81-40-121.staticip.rima-tde.net. [81.40.121.39]) by smtp.gmail.com with ESMTPSA id c2sm4279989wmr.22.2021.04.20.12.35.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Apr 2021 12:35:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=v/jch+x5fbHSlYAP492qo4ieSnFpYCmcLlzP1woMe5g=; b=SQ/YZd2/QPWD2zEgQSFyfFGlDpAs0O6FQlPkAmqvtyClzPENQ/oJb209qlU1foDRdd 41xwsKFUhJj6OtpL1PlLVv1w/qz2s0x6MHPm9jHAcDmKHJiM8FhCqLSLCtSIZ6kiNJkW 5S9Fkfuw1VCLmefuoUgyhtNfPJsbpKAd4wIVa5hcPjahnw0ixC150M07QQyZUMucd8Bf aJCFHtNDgSBQGfVhJ16K2EPke8/UbTnHadIaCiQc0t9i1cvT2OtJjcX1KqyI3rDehtXT 73cfZY6z9GJxJy5jPOR2Mrfx0VwXD1/0wibasW5Stj38nLJi1f6ftIkP2J0JBGID1ZY1 yBTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=v/jch+x5fbHSlYAP492qo4ieSnFpYCmcLlzP1woMe5g=; b=XTlwVvtgIqu/3kRCsAbIuxrtLBw0OWleREMxhatoYQ0HFNV0X/OPetR/4i+cu5zZoZ xDl9df7UZpz/9lMVmbSxl+/9kAP6DiPRnYOVMEWpUp8PP8PCu10I6U7XBxUOQyL7CchN n/BZ0iomNlJ6LEApZpvcFMTvBc+qf5QPLa03PvMyCZFJ4Kz9t8vzzsa5bzDc7+14762l VIcnMURKR9cMKoAAGOlN88pVz7SbXQLXuUu2/t+rPxdK9OL+iwBLLvKp8q4DQQBvihKM x/6qj4A2MjSXu+qBIpK4xjJY1OsjlxrORXM1Q82foQ4+Ha+d1MiqcUZoUhdiUCrmZJjM ywSQ== X-Gm-Message-State: AOAM532Gw+3yeRM6Up8ujYhmWIIeHhlyV3E0PC7PtaRx9LOwbebIyaNm 8yEtjGh4x2x4alq6lSRTGvM= X-Google-Smtp-Source: ABdhPJw1TTuxVm409ql8MquDA/Qigto69Hw1EPNo9ctIzNLv8VKpDYiZTOuP4RBjW6s/wfafF+qjJw== X-Received: by 2002:a5d:6983:: with SMTP id g3mr21935671wru.415.1618947305254; Tue, 20 Apr 2021 12:35:05 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aurelien Jarno , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Jiaxun Yang , Aleksandar Rikalo Subject: [PATCH 2/5] target/mips: Simplify CP0 check in nanoMIPS P.LS.E0 EVA pool Date: Tue, 20 Apr 2021 21:34:50 +0200 Message-Id: <20210420193453.1913810-3-f4bug@amsat.org> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210420193453.1913810-1-f4bug@amsat.org> References: <20210420193453.1913810-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) The nanoMIPS P.LS.E0 pool contains the EVA instructions, which are privileged. Simplify by moving the CP0 check at the top of the pool swich case. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/translate.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/target/mips/translate.c b/target/mips/translate.c index 9acca6ef045..03fb67f6f22 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -20906,27 +20906,24 @@ static int decode_nanomips_32_48_opc(CPUMIPSState= *env, DisasContext *ctx) } break; case NM_P_LS_E0: + check_cp0_enabled(ctx); switch (extract32(ctx->opcode, 11, 4)) { case NM_LBE: check_eva(ctx); - check_cp0_enabled(ctx); gen_ld(ctx, OPC_LBE, rt, rs, s); break; case NM_SBE: check_eva(ctx); - check_cp0_enabled(ctx); gen_st(ctx, OPC_SBE, rt, rs, s); break; case NM_LBUE: check_eva(ctx); - check_cp0_enabled(ctx); gen_ld(ctx, OPC_LBUE, rt, rs, s); break; case NM_P_PREFE: if (rt =3D=3D 31) { /* case NM_SYNCIE */ check_eva(ctx); - check_cp0_enabled(ctx); /* * Break the TB to be able to sync copied instruct= ions * immediately. @@ -20935,39 +20932,32 @@ static int decode_nanomips_32_48_opc(CPUMIPSState= *env, DisasContext *ctx) } else { /* case NM_PREFE */ check_eva(ctx); - check_cp0_enabled(ctx); /* Treat as NOP. */ } break; case NM_LHE: check_eva(ctx); - check_cp0_enabled(ctx); gen_ld(ctx, OPC_LHE, rt, rs, s); break; case NM_SHE: check_eva(ctx); - check_cp0_enabled(ctx); gen_st(ctx, OPC_SHE, rt, rs, s); break; case NM_LHUE: check_eva(ctx); - check_cp0_enabled(ctx); gen_ld(ctx, OPC_LHUE, rt, rs, s); break; case NM_CACHEE: check_eva(ctx); - check_cp0_enabled(ctx); check_nms_dl_il_sl_tl_l2c(ctx); gen_cache_operation(ctx, rt, rs, s); break; case NM_LWE: check_eva(ctx); - check_cp0_enabled(ctx); gen_ld(ctx, OPC_LWE, rt, rs, s); break; case NM_SWE: check_eva(ctx); - check_cp0_enabled(ctx); gen_st(ctx, OPC_SWE, rt, rs, s); break; case NM_P_LLE: @@ -20975,13 +20965,11 @@ static int decode_nanomips_32_48_opc(CPUMIPSState= *env, DisasContext *ctx) case NM_LLE: check_xnp(ctx); check_eva(ctx); - check_cp0_enabled(ctx); gen_ld(ctx, OPC_LLE, rt, rs, s); break; case NM_LLWPE: check_xnp(ctx); check_eva(ctx); - check_cp0_enabled(ctx); gen_llwp(ctx, rs, 0, rt, extract32(ctx->opcode, 3,= 5)); break; default: @@ -20994,13 +20982,11 @@ static int decode_nanomips_32_48_opc(CPUMIPSState= *env, DisasContext *ctx) case NM_SCE: check_xnp(ctx); check_eva(ctx); - check_cp0_enabled(ctx); gen_st_cond(ctx, rt, rs, s, MO_TESL, true); break; case NM_SCWPE: check_xnp(ctx); check_eva(ctx); - check_cp0_enabled(ctx); gen_scwp(ctx, rs, 0, rt, extract32(ctx->opcode, 3,= 5), true); break; --=20 2.26.3 From nobody Mon Feb 9 08:27:15 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.54 as permitted sender) client-ip=209.85.221.54; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f54.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.54 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1618947311; cv=none; d=zohomail.com; s=zohoarc; b=lcMIzle6XkYkBjyPYtxLH7Zc5fBEt7fSg3U+JQ07MrWuCiiPX7KoSNds15ocZkW8Kdsa9L3Oc+ZaFtLDqeHvwGGPR9cGZo06j0JlJi8JOGClI4nO9RiCuqKJu77jaFNQMDKC8ixSdyFV610SUHGn9tg8pZz9M5nsIqE4w+pZITk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618947311; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=X+55Q796uaAhfzBrSTXh6Pi3XW8Ee7SvRz64BnVsSu0=; b=iVDFV7iXrlKCJyJ2TvVSofhWObgEHkRO9nMtn7wZZ4JcG/U/GEzoIceQE9kyq0pYUTodhZQbk7yDSyJW+tqGHcVCZqMCobVCh5uxtfA/QFELbrqw/o2sDNMpD4myFf+XC2GDAUX9YukQBxQ97xbvy58E0A8L78Ib/wVT2LTXpEA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.54 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by mx.zohomail.com with SMTPS id 16189473119291017.3174895016224; Tue, 20 Apr 2021 12:35:11 -0700 (PDT) Received: by mail-wr1-f54.google.com with SMTP id m9so26146867wrx.3 for ; Tue, 20 Apr 2021 12:35:11 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (39.red-81-40-121.staticip.rima-tde.net. [81.40.121.39]) by smtp.gmail.com with ESMTPSA id e33sm4023247wmp.43.2021.04.20.12.35.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Apr 2021 12:35:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X+55Q796uaAhfzBrSTXh6Pi3XW8Ee7SvRz64BnVsSu0=; b=tzuie9k1b6yi+8tNHC1UvX08zRwWeuS+LztPkT1Ep+Ks6wPz6sm+DX8Xcfs4sTxziq LAl3wnWg3YNQFjyzyh1oAeNyCVYkBqcT15SplvPqZU0do9fb0n0lSyMAdDNi+xIqqFmH susiYQo4hifjpQRWryIZIbLTRk5E6TyU+bcVWYWfteq3dhYXawk/7Pdjj5k6KryqMFf2 UovJ09hf8tyI5dR5ncHt58y9rG/ASyeRLG3QLyk//9OWckPOuYAjCMN8uxNZN4ybzFZY +DtHa5a+clR5Rs7yh0MX+hSH3Xz9TmC7bpFW8DeNMYLYiBTJKb7XZoH5RmViP4kneM3R bo7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=X+55Q796uaAhfzBrSTXh6Pi3XW8Ee7SvRz64BnVsSu0=; b=kBpJTU2zhEH20nh3P8t8y4JWZ69nMZmrGmee6oUuBwZ5CqaZ/MeuxnEhKgv0jdxSDi dz2rCWax25hQHcaMfoMib7q3VHg+CSU4p2SJbpsMnINZKvfJJCAHZM907LoG4ZqNZEEY Y2NlxvsFVHO7bI0pN+4NjVrn4SOPGgZLaoagRzqOYb0xlE4atjFk5N9DNV4T1P9UOai3 odgZCOjHWpp9DeVE18gKN2lRzg1dBS3Q84VLoT2F4azyGdwbwH4JfO8r6q1sxDsdM04z XVMjleyumX34mWJmzZnsDnISKyMykh9JUJfd9S/Unes2LSVLIowB6gMkVnOB8DMqpxbi q8OA== X-Gm-Message-State: AOAM532FJsU29TMnEFl7cU6yv7ATEj1clH9fCu/A6D22whVl6QurxFbN j3/FyWXT+0+UThxriBWCmp0= X-Google-Smtp-Source: ABdhPJyAJuJ54yi8kLKwYfom9mAeb8bKlk/RIxBakQXzH09YKm1VZn3kWfPq5l+MfS17DqMdvOoTOg== X-Received: by 2002:adf:fec5:: with SMTP id q5mr22728629wrs.168.1618947310054; Tue, 20 Apr 2021 12:35:10 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aurelien Jarno , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Jiaxun Yang , Aleksandar Rikalo Subject: [PATCH 3/5] target/mips: Make check_cp0_enabled() return a boolean Date: Tue, 20 Apr 2021 21:34:51 +0200 Message-Id: <20210420193453.1913810-4-f4bug@amsat.org> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210420193453.1913810-1-f4bug@amsat.org> References: <20210420193453.1913810-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) To avoid callers to emit dead code if check_cp0_enabled() raise an exception, let it return a boolean value, whether CP0 is enabled or not. Suggested-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- target/mips/translate.h | 7 ++++++- target/mips/translate.c | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/target/mips/translate.h b/target/mips/translate.h index 2b3c7a69ec6..61442590340 100644 --- a/target/mips/translate.h +++ b/target/mips/translate.h @@ -120,7 +120,12 @@ void gen_reserved_instruction(DisasContext *ctx); =20 void check_insn(DisasContext *ctx, uint64_t flags); void check_mips_64(DisasContext *ctx); -void check_cp0_enabled(DisasContext *ctx); +/** + * check_cp0_enabled: + * Return %true if CP0 is enabled, otherwise return %false + * and emit a 'coprocessor unusable' exception. + */ +bool check_cp0_enabled(DisasContext *ctx); void check_cp1_enabled(DisasContext *ctx); void check_cp1_64bitmode(DisasContext *ctx); void check_cp1_registers(DisasContext *ctx, int regs); diff --git a/target/mips/translate.c b/target/mips/translate.c index 03fb67f6f22..be5382b41f2 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -1572,11 +1572,13 @@ void gen_move_high32(TCGv ret, TCGv_i64 arg) #endif } =20 -void check_cp0_enabled(DisasContext *ctx) +bool check_cp0_enabled(DisasContext *ctx) { if (unlikely(!(ctx->hflags & MIPS_HFLAG_CP0))) { generate_exception_end(ctx, EXCP_CpU); + return false; } + return true; } =20 void check_cp1_enabled(DisasContext *ctx) --=20 2.26.3 From nobody Mon Feb 9 08:27:15 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.49 as permitted sender) client-ip=209.85.128.49; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f49.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.49 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1618947316; cv=none; d=zohomail.com; s=zohoarc; b=e1RHjBfuhf0aYdzoENGus3p8kReoDPXdN0BiMOaYDLtVoVl+sRly9t6lu76mGhajG+i/cYwjTXEbwBnOJrANanoSRFLfGvdcg5q6h24wSaAGBu+itoNjCGln0isdFVOkU2xsgS8YStxOpOB1l8Dwu7Ozppn6CCZf+DExvN+cX3g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618947316; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=a/pdWdU2XYITNpm+08Z2lHJVYwHvuC97R2oAUg/6SrQ=; b=HCqSfjo6MI50buPZJeAowR8NdF8MYQF3mwQaLv8fGSy/aSLtUxJyq2sDZs4FE0QFBIvbYLhgXZoSKo/wOTsHiz2S18tMRn/0iDYELGooIt9/9CiPPwf8svkfxwXp9XNu9vtY2EU2A3c5iJ2Yz+VS2J+XR+zsl3ToRLuu6lgNNlo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.49 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) by mx.zohomail.com with SMTPS id 161894731659738.07852754457497; Tue, 20 Apr 2021 12:35:16 -0700 (PDT) Received: by mail-wm1-f49.google.com with SMTP id w186so16360794wmg.3 for ; Tue, 20 Apr 2021 12:35:15 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (39.red-81-40-121.staticip.rima-tde.net. [81.40.121.39]) by smtp.gmail.com with ESMTPSA id 2sm4432135wmi.19.2021.04.20.12.35.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Apr 2021 12:35:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=a/pdWdU2XYITNpm+08Z2lHJVYwHvuC97R2oAUg/6SrQ=; b=T7Yd6NFUyki81BkF8wAn3LIu1MkCjNAGPDWak57Xwm15n5kPsezt1F/LxUJ8jWI19t 6f74Q3x78w/PmMYW+uX3ocKploYJzNYS5spT98x9IJLb6lGXGHb2W0T6UyYW6/j/No9Z Jgni6V6tqkfj8LWIuMrTfatAlmDq2NyiSPxl09qEc/cI+9AyMqeckr37RW7XlVWS1Fiv IwwrD7Jo8NTOv4zq0is0J292CQyDVXpuU2ztPym3X5pnO69ZChJCqR4rfjd3Gqx/+MPJ c3TEO248SFAvaM/zzbevx27ojM9kF42z0L3t1//wv/pFrA/+r4Gb9IDkgQrk/vAtcUrk sfOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=a/pdWdU2XYITNpm+08Z2lHJVYwHvuC97R2oAUg/6SrQ=; b=I7pleijr0TqU9P3vBqTOSk2ErSrqkOBtqG+fGjxPGqMUbhrDybtBygeISt61Pyxl9Z WbD3DDqkZFrzFhe1NpVoL4788gM/OcYrP7kR5gZkcjvQyocwtATKqXIWv7kvBmlQ56sg brVqxmDLyfkkBfXzi7DDBEEtjB6t9C9SM2eOHimeXYwGcbxh/+HWOOKMJRmVBC2v48te t8Xv7GqgqybKRfADBO/oO970CrvtxXmTVOAjCqc+tTAucztq3Ai8WT2m0NZy0cNb75tQ V1Ka152PxLrHfo0/4nTghIO0p4JmSHZvWJLjszdQB2P5U4I4Drl1GXPSjYqT1t9E84rv 4nXg== X-Gm-Message-State: AOAM5333JxB2HXBNdXKCQALKKJtc9AlkeWMTIr/h2+9P7SqAwO4YsTg8 vSi8/okDUH3sty5AEUzlRAM= X-Google-Smtp-Source: ABdhPJzHG0vALewa9eJtivHnJtFSPp2HL9rbRgalufWLexigtFPVjH1mhvLhcIAXzTVcc57gFE598g== X-Received: by 2002:a05:600c:4ecc:: with SMTP id g12mr5904135wmq.117.1618947314681; Tue, 20 Apr 2021 12:35:14 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aurelien Jarno , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Jiaxun Yang , Aleksandar Rikalo Subject: [PATCH 4/5] target/mips: Use check_cp0_enabled() returned value Date: Tue, 20 Apr 2021 21:34:52 +0200 Message-Id: <20210420193453.1913810-5-f4bug@amsat.org> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210420193453.1913810-1-f4bug@amsat.org> References: <20210420193453.1913810-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) If CP0 is disabled, it is pointless to emit more code, since the 'coprocessor unusable' exception will be raised. Use the returned value from check_cp0_enabled() to return early. Reported-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/translate.c | 144 +++++++++++++++++++++------------------- 1 file changed, 76 insertions(+), 68 deletions(-) diff --git a/target/mips/translate.c b/target/mips/translate.c index be5382b41f2..dfa26569077 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -9417,7 +9417,9 @@ static void gen_cp0(CPUMIPSState *env, DisasContext *= ctx, uint32_t opc, { const char *opn =3D "ldst"; =20 - check_cp0_enabled(ctx); + if (!check_cp0_enabled(ctx)) { + return; + } switch (opc) { case OPC_MFC0: if (rt =3D=3D 0) { @@ -14651,17 +14653,17 @@ static void gen_pool32axf(CPUMIPSState *env, Disa= sContext *ctx, int rt, int rs) #ifndef CONFIG_USER_ONLY case MFC0: case MFC0 + 32: - check_cp0_enabled(ctx); - if (rt =3D=3D 0) { - /* Treat as NOP. */ - break; + if (check_cp0_enabled(ctx)) { + if (rt =3D=3D 0) { + /* Treat as NOP. */ + break; + } + gen_mfc0(ctx, cpu_gpr[rt], rs, (ctx->opcode >> 11) & 0x7); } - gen_mfc0(ctx, cpu_gpr[rt], rs, (ctx->opcode >> 11) & 0x7); break; case MTC0: case MTC0 + 32: - check_cp0_enabled(ctx); - { + if (check_cp0_enabled(ctx)) { TCGv t0 =3D tcg_temp_new(); =20 gen_load_gpr(t0, rt); @@ -14809,14 +14811,15 @@ static void gen_pool32axf(CPUMIPSState *env, Disa= sContext *ctx, int rt, int rs) } break; case 0x05: + if (!check_cp0_enabled(ctx)) { + break; + } switch (minor) { case RDPGPR: - check_cp0_enabled(ctx); check_insn(ctx, ISA_MIPS_R2); gen_load_srsgpr(rs, rt); break; case WRPGPR: - check_cp0_enabled(ctx); check_insn(ctx, ISA_MIPS_R2); gen_store_srsgpr(rs, rt); break; @@ -14863,8 +14866,7 @@ static void gen_pool32axf(CPUMIPSState *env, DisasC= ontext *ctx, int rt, int rs) case 0x1d: switch (minor) { case DI: - check_cp0_enabled(ctx); - { + if (check_cp0_enabled(ctx)) { TCGv t0 =3D tcg_temp_new(); =20 save_cpu_state(ctx, 1); @@ -14879,8 +14881,7 @@ static void gen_pool32axf(CPUMIPSState *env, DisasC= ontext *ctx, int rt, int rs) } break; case EI: - check_cp0_enabled(ctx); - { + if (check_cp0_enabled(ctx)) { TCGv t0 =3D tcg_temp_new(); =20 save_cpu_state(ctx, 1); @@ -15449,8 +15450,7 @@ static void decode_micromips32_opc(CPUMIPSState *en= v, DisasContext *ctx) minor =3D (ctx->opcode >> 12) & 0xf; switch (minor) { case CACHE: - check_cp0_enabled(ctx); - if (ctx->hflags & MIPS_HFLAG_ITC_CACHE) { + if (check_cp0_enabled(ctx) && ctx->hflags & MIPS_HFLAG_ITC_CAC= HE) { gen_cache_operation(ctx, rt, rs, imm); } break; @@ -16211,7 +16211,9 @@ static void decode_micromips32_opc(CPUMIPSState *en= v, DisasContext *ctx) gen_reserved_instruction(ctx); break; } - check_cp0_enabled(ctx); + if (!check_cp0_enabled(ctx)) { + break; + } =20 minor2 =3D (ctx->opcode >> 9) & 0x7; offset =3D sextract32(ctx->opcode, 0, 9); @@ -16250,7 +16252,9 @@ static void decode_micromips32_opc(CPUMIPSState *en= v, DisasContext *ctx) gen_reserved_instruction(ctx); break; } - check_cp0_enabled(ctx); + if (!check_cp0_enabled(ctx)) { + break; + } =20 minor2 =3D (ctx->opcode >> 9) & 0x7; offset =3D sextract32(ctx->opcode, 0, 9); @@ -17995,24 +17999,24 @@ static void gen_pool32a0_nanomips_insn(CPUMIPSSta= te *env, DisasContext *ctx) if (rd =3D=3D 0) { /* P_DVP */ #ifndef CONFIG_USER_ONLY - TCGv t0 =3D tcg_temp_new(); - switch (extract32(ctx->opcode, 10, 1)) { - case NM_DVP: - if (ctx->vp) { - check_cp0_enabled(ctx); - gen_helper_dvp(t0, cpu_env); - gen_store_gpr(t0, rt); + if (check_cp0_enabled(ctx)) { + TCGv t0 =3D tcg_temp_new(); + switch (extract32(ctx->opcode, 10, 1)) { + case NM_DVP: + if (ctx->vp) { + gen_helper_dvp(t0, cpu_env); + gen_store_gpr(t0, rt); + } + break; + case NM_EVP: + if (ctx->vp) { + gen_helper_evp(t0, cpu_env); + gen_store_gpr(t0, rt); + } + break; } - break; - case NM_EVP: - if (ctx->vp) { - check_cp0_enabled(ctx); - gen_helper_evp(t0, cpu_env); - gen_store_gpr(t0, rt); - } - break; + tcg_temp_free(t0); } - tcg_temp_free(t0); #endif } else { gen_slt(ctx, OPC_SLTU, rd, rs, rt); @@ -18067,16 +18071,16 @@ static void gen_pool32a0_nanomips_insn(CPUMIPSSta= te *env, DisasContext *ctx) break; #ifndef CONFIG_USER_ONLY case NM_MFC0: - check_cp0_enabled(ctx); - if (rt =3D=3D 0) { - /* Treat as NOP. */ - break; + if (check_cp0_enabled(ctx)) { + if (rt =3D=3D 0) { + /* Treat as NOP. */ + break; + } + gen_mfc0(ctx, cpu_gpr[rt], rs, extract32(ctx->opcode, 11, 3)); } - gen_mfc0(ctx, cpu_gpr[rt], rs, extract32(ctx->opcode, 11, 3)); break; case NM_MTC0: - check_cp0_enabled(ctx); - { + if (check_cp0_enabled(ctx)) { TCGv t0 =3D tcg_temp_new(); =20 gen_load_gpr(t0, rt); @@ -18140,19 +18144,23 @@ static void gen_pool32a0_nanomips_insn(CPUMIPSSta= te *env, DisasContext *ctx) break; case NM_MFTR: case NM_MFHTR: - check_cp0_enabled(ctx); - if (rd =3D=3D 0) { - /* Treat as NOP. */ - return; + if (check_cp0_enabled(ctx)) { + if (rd =3D=3D 0) { + /* Treat as NOP. */ + return; + } + gen_mftr(env, ctx, rs, rt, extract32(ctx->opcode, 10, 1), + extract32(ctx->opcode, 11, 5), + extract32(ctx->opcode, 3, 1)); } - gen_mftr(env, ctx, rs, rt, extract32(ctx->opcode, 10, 1), - extract32(ctx->opcode, 11, 5), extract32(ctx->opcode, 3, = 1)); break; case NM_MTTR: case NM_MTHTR: - check_cp0_enabled(ctx); - gen_mttr(env, ctx, rs, rt, extract32(ctx->opcode, 10, 1), - extract32(ctx->opcode, 11, 5), extract32(ctx->opcode, 3, = 1)); + if (check_cp0_enabled(ctx)) { + gen_mttr(env, ctx, rs, rt, extract32(ctx->opcode, 10, 1), + extract32(ctx->opcode, 11, 5), + extract32(ctx->opcode, 3, 1)); + } break; case NM_YIELD: check_mt(ctx); @@ -18943,8 +18951,7 @@ static void gen_pool32axf_nanomips_insn(CPUMIPSStat= e *env, DisasContext *ctx) gen_cp0(env, ctx, OPC_TLBINVF, 0, 0); break; case NM_DI: - check_cp0_enabled(ctx); - { + if (check_cp0_enabled(ctx)) { TCGv t0 =3D tcg_temp_new(); =20 save_cpu_state(ctx, 1); @@ -18956,8 +18963,7 @@ static void gen_pool32axf_nanomips_insn(CPUMIPSStat= e *env, DisasContext *ctx) } break; case NM_EI: - check_cp0_enabled(ctx); - { + if (check_cp0_enabled(ctx)) { TCGv t0 =3D tcg_temp_new(); =20 save_cpu_state(ctx, 1); @@ -20900,15 +20906,17 @@ static int decode_nanomips_32_48_opc(CPUMIPSState= *env, DisasContext *ctx) } break; case NM_CACHE: - check_cp0_enabled(ctx); - if (ctx->hflags & MIPS_HFLAG_ITC_CACHE) { + if (check_cp0_enabled(ctx) + && ctx->hflags & MIPS_HFLAG_ITC_CACHE) { gen_cache_operation(ctx, rt, rs, s); } break; } break; case NM_P_LS_E0: - check_cp0_enabled(ctx); + if (check_cp0_enabled(ctx)) { + break; + } switch (extract32(ctx->opcode, 11, 4)) { case NM_LBE: check_eva(ctx); @@ -23770,8 +23778,7 @@ static void decode_opc_special3_r6(CPUMIPSState *en= v, DisasContext *ctx) /* Treat as NOP. */ break; case R6_OPC_CACHE: - check_cp0_enabled(ctx); - if (ctx->hflags & MIPS_HFLAG_ITC_CACHE) { + if (check_cp0_enabled(ctx) && ctx->hflags & MIPS_HFLAG_ITC_CACHE) { gen_cache_operation(ctx, rt, rs, imm); } break; @@ -23806,7 +23813,9 @@ static void decode_opc_special3_r6(CPUMIPSState *en= v, DisasContext *ctx) if (unlikely(ctx->gi <=3D 1)) { gen_reserved_instruction(ctx); } - check_cp0_enabled(ctx); + if (!check_cp0_enabled(ctx)) { + break; + } switch ((ctx->opcode >> 6) & 3) { case 0: /* GINVI */ /* Treat as NOP. */ @@ -24493,6 +24502,9 @@ static void decode_opc_special3(CPUMIPSState *env, = DisasContext *ctx) * EVA is absent. */ if (ctx->eva) { + if (!check_cp0_enabled(ctx)) { + return; + } switch (op1) { case OPC_LWLE: case OPC_LWRE: @@ -24502,7 +24514,6 @@ static void decode_opc_special3(CPUMIPSState *env, = DisasContext *ctx) case OPC_LHE: case OPC_LLE: case OPC_LWE: - check_cp0_enabled(ctx); gen_ld(ctx, op1, rt, rs, imm); return; case OPC_SWLE: @@ -24510,22 +24521,18 @@ static void decode_opc_special3(CPUMIPSState *env= , DisasContext *ctx) case OPC_SBE: case OPC_SHE: case OPC_SWE: - check_cp0_enabled(ctx); gen_st(ctx, op1, rt, rs, imm); return; case OPC_SCE: - check_cp0_enabled(ctx); gen_st_cond(ctx, rt, rs, imm, MO_TESL, true); return; case OPC_CACHEE: check_eva(ctx); - check_cp0_enabled(ctx); if (ctx->hflags & MIPS_HFLAG_ITC_CACHE) { gen_cache_operation(ctx, rt, rs, imm); } return; case OPC_PREFE: - check_cp0_enabled(ctx); /* Treat as NOP. */ return; } @@ -24750,7 +24757,9 @@ static bool decode_opc_legacy(CPUMIPSState *env, Di= sasContext *ctx) } break; case OPC_CP0: - check_cp0_enabled(ctx); + if (!check_cp0_enabled(ctx)) { + break; + } op1 =3D MASK_CP0(ctx->opcode); switch (op1) { case OPC_MFC0: @@ -24990,9 +24999,8 @@ static bool decode_opc_legacy(CPUMIPSState *env, Di= sasContext *ctx) gen_st_cond(ctx, rt, rs, imm, MO_TESL, false); break; case OPC_CACHE: - check_cp0_enabled(ctx); check_insn(ctx, ISA_MIPS3 | ISA_MIPS_R1); - if (ctx->hflags & MIPS_HFLAG_ITC_CACHE) { + if (check_cp0_enabled(ctx) && ctx->hflags & MIPS_HFLAG_ITC_CACHE) { gen_cache_operation(ctx, rt, rs, imm); } /* Treat as NOP. */ --=20 2.26.3 From nobody Mon Feb 9 08:27:15 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.54 as permitted sender) client-ip=209.85.221.54; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f54.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.54 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1618947321; cv=none; d=zohomail.com; s=zohoarc; b=cZEr34+0V6NaUvoA9lEJsJ5DSQnslPbnff8bTWsn2uTKvij5RReWBIg921b6kQDghJqhAtO/AxSsg1XtsPOULw8tEPoNFqbFKBsjQZkyWnU/ve16Eyc5ID5m1SrsoeFLhV23lVScHwr6qKjP1skiQx3zmF+6acoNMXD1Tq6wr+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1618947321; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4PT5Y6ov+2VF6b9NVW6HMDZLzrmuqv0s6fxsfwWds0M=; b=F5UJfi6PHDr4W3FJK3C/P9wFa7TiQQy/8wEjkGmWDYULi7ji1qtx9Ojim+MGOEQZK2a2mtmBvCVQfLSrlULBccxF4WCSMSXVPzRt+BVG00TJXoUh734sTIxJF2zTAUtm3x8KYYyyQ28kJnWQuygm4br8jI2A4adqiklLW4ZSVBU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.54 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by mx.zohomail.com with SMTPS id 1618947321078608.3524766229968; Tue, 20 Apr 2021 12:35:21 -0700 (PDT) Received: by mail-wr1-f54.google.com with SMTP id s7so38809525wru.6 for ; Tue, 20 Apr 2021 12:35:20 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (39.red-81-40-121.staticip.rima-tde.net. [81.40.121.39]) by smtp.gmail.com with ESMTPSA id s8sm28872403wrn.97.2021.04.20.12.35.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Apr 2021 12:35:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4PT5Y6ov+2VF6b9NVW6HMDZLzrmuqv0s6fxsfwWds0M=; b=te1x1VsaDHdYsoReH6cMGlN0FJqfawxBOSse8FozIpwViTCWIsV6uFSltHhWr3kIld mEWCh97+HDig0YWrORnxEnuTAelZFOnldyC/ZENUCpOkpaxIN8X2toI7UotqMoHmRVuq AxMGFbdN5pP6o0bNClFiGvuhL7er2NdUOT3VRxDwutyaQb1BlYS3qxdfV/VpPQiIBkmv KnDnRmeYOS39827PMVBfdXp6i1tFf+DiPoM4H8xX2s5UFqs4wbRnGVM/R7wYtawh0KYn RKm04sOj7RWWqtd6rzBG2MwQVuHYATyxztgXIDxpJwulyd+GhK7Y4L2hYwaUeHSG649J iduw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=4PT5Y6ov+2VF6b9NVW6HMDZLzrmuqv0s6fxsfwWds0M=; b=lE/2wuyPNXAIBzUD2EktwmPGjF8Uih3Ksta01VU3yp0A3Le4Bl3lOJKBuwUaPBOjVU xDSpv/Y816EVekMMiMRZjYxMQ0rawQ4lTML0RpIxY5KUGy7PDt/x53jhm35Eal38LCNy QciR7r7EUVXfaFE2ZjZJsRxmFmtWR10McE9hXPL64pvAOhme9yUY6t5KoJvIf06UtJ5P 5x8XVXebzedi8N54x7k5GOd++AoEOnbhsXiChXVLSVxz882scHlJ6twFfKTOIwrva3vX jWJs7011IvMFpTpk3PFK0WCZ5iFkau4L5ixO0Gih9OfHdSynKqBSEMTQ6JEg//RAOBt1 Zzww== X-Gm-Message-State: AOAM533/FVMBtrB9ZgX4Mym4Zf4Hs8JQmCbGMGHpuGzjzjxkfvNMxjWW fZ5HCfD3a9akSyi+zr6V/JI= X-Google-Smtp-Source: ABdhPJxuE9V5fiIJa11MOKycx2t46NqSY7pv99tVLwmpG/pp/YTdiGaLq1VRxX48zGfmSKjVZztFMg== X-Received: by 2002:adf:de08:: with SMTP id b8mr21935320wrm.279.1618947319361; Tue, 20 Apr 2021 12:35:19 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aurelien Jarno , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Jiaxun Yang , Aleksandar Rikalo Subject: [RFC PATCH 5/5] target/mips: Restrict EVA opcodes to system emulation Date: Tue, 20 Apr 2021 21:34:53 +0200 Message-Id: <20210420193453.1913810-6-f4bug@amsat.org> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210420193453.1913810-1-f4bug@amsat.org> References: <20210420193453.1913810-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) Enhanced Virtual Address (EVA) instructions are restricted to Kernel execution mode, thus not available on user emulation. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- RFC because I'd rather not use such #ifdef'ry again. TODO: have the compiler elide this code. target/mips/translate.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/target/mips/translate.c b/target/mips/translate.c index dfa26569077..77115721a97 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -15245,8 +15245,11 @@ static void decode_micromips32_opc(CPUMIPSState *e= nv, DisasContext *ctx) uint16_t insn; int rt, rs, rd, rr; int16_t imm; - uint32_t op, minor, minor2, mips32_op; + uint32_t op, minor, mips32_op; uint32_t cond, fmt, cc; +#ifndef CONFIG_USER_ONLY + uint32_t minor2; +#endif /* !CONFIG_USER_ONLY */ =20 insn =3D translator_lduw(env, ctx->base.pc_next + 2); ctx->opcode =3D (ctx->opcode << 16) | insn; @@ -16205,6 +16208,7 @@ static void decode_micromips32_opc(CPUMIPSState *en= v, DisasContext *ctx) gen_st_cond(ctx, rt, rs, offset, MO_TEQ, false); break; #endif +#ifndef CONFIG_USER_ONLY case LD_EVA: if (!ctx->eva) { MIPS_INVAL("pool32c ld-eva"); @@ -16294,6 +16298,7 @@ static void decode_micromips32_opc(CPUMIPSState *en= v, DisasContext *ctx) goto do_st_lr; }; break; +#endif /* !CONFIG_USER_ONLY */ case PREF: /* Treat as no-op */ if ((ctx->insn_flags & ISA_MIPS_R6) && (rt >=3D 24)) { @@ -24486,16 +24491,18 @@ static void decode_opc_special3(CPUMIPSState *env= , DisasContext *ctx) { int rs, rt, rd, sa; uint32_t op1, op2; - int16_t imm; =20 rs =3D (ctx->opcode >> 21) & 0x1f; rt =3D (ctx->opcode >> 16) & 0x1f; rd =3D (ctx->opcode >> 11) & 0x1f; sa =3D (ctx->opcode >> 6) & 0x1f; - imm =3D sextract32(ctx->opcode, 7, 9); =20 op1 =3D MASK_SPECIAL3(ctx->opcode); =20 +#ifndef CONFIG_USER_ONLY + int16_t imm; + + imm =3D sextract32(ctx->opcode, 7, 9); /* * EVA loads and stores overlap Loongson 2E instructions decoded by * decode_opc_special3_legacy(), so be careful to allow their decoding= when @@ -24537,6 +24544,7 @@ static void decode_opc_special3(CPUMIPSState *env, = DisasContext *ctx) return; } } +#endif /* !CONFIG_USER_ONLY */ =20 switch (op1) { case OPC_EXT: --=20 2.26.3