From nobody Fri May 17 08:24:39 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.51 as permitted sender) client-ip=209.85.221.51; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f51.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.51 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1629305010; cv=none; d=zohomail.com; s=zohoarc; b=jEs9RBD2ca9DYAsu92ljEeMtaAz9Xyvx9W1dQK8YHJq1AqjVZloyIAilTGGwaSRM/RBtpRiwRmSIM8OwubJyy9c2i/RB86LlxMnbQMvTeRvMw29xfGdqk0Dnk9WNmvsVetbsWl5i9W73b0dXqKgUlACRo0EfuDXTvySDJW6mMK8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629305010; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ibaxaWoB80RThVUaBh+iN68HbOGwmZxSh4QYtisHkss=; b=EnDvkYmWu2nJmNLANCCExmQw2etG6N4EignqxOTCpUs4hymnt9b4MuZziPOLEKa4+BazDlluFMY1KDfK96MdtyV6NQ7tbf4vDb1GAWlKT8dQJkgXh6IwzbdRn0lLL8+fuzoBwECUdCoD6PxUN79sGq5NlAW8SA+DQ+CCI/xWkXk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.51 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) by mx.zohomail.com with SMTPS id 1629305010154253.74114162203523; Wed, 18 Aug 2021 09:43:30 -0700 (PDT) Received: by mail-wr1-f51.google.com with SMTP id l11so4524517wrx.4 for ; Wed, 18 Aug 2021 09:43:29 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (163.red-83-52-55.dynamicip.rima-tde.net. [83.52.55.163]) by smtp.gmail.com with ESMTPSA id y11sm384786wru.0.2021.08.18.09.43.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Aug 2021 09:43:27 -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=ibaxaWoB80RThVUaBh+iN68HbOGwmZxSh4QYtisHkss=; b=czmGEBe5T7BU0jYD3N84dQtfQbnrF4Nyio6chgwJ3Wv1T66tey+FZmwWwIJqZ4m9cb Cwtx2WleKANsEagaeWnPj4T9cm/JNReG0wJ35TaNRw3TFCe9hKWBDDl87ZYwGgNCDj2/ XW1XUcl8aUeBcQuXj1uGrT1NABjAo+1vAyKkc8YlmLvX//02nZMGH27blCRtefykbdHN fUtWrS7VydJlvNEfKJ0cz57uIjcLO7hhsS6UZKXcFsaX22aGJ7/5+unB55SvEeJjZxQV 5znjVtIe2CFF0VCkqXkDfWHc08UQ4SQ1qw2GQfqBCKr0xosXZ1l0KjTQXQar5sMPb1kX kdLQ== 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=ibaxaWoB80RThVUaBh+iN68HbOGwmZxSh4QYtisHkss=; b=mQj1V5LgbS6ku3gDmqYKqjb+MvJH+/zuHZYUwcGfbC4ZXjrb1F1m0Mj2eMsrqF0qkf mRGpNJMLzYJ4Jlo3hP6CZlOSnOuBfvDruw9/uohRxJLwi9ggoZI49RKAa1AIk3YnZiok bYLH6HUSFCmIOW6nGpVfCqDLNcvuLSoUWZoIOS2m9qjnSw1hgfFjSjRstayVmAX3pQ17 teUGpS93anz31GWa5QuGRYyoLP8M+yxudlX8BzH/Lc8qxz5UYsg5b6tOx4dpkwh5cLzL xhbQZ94rmz5zXeMen+KjfKiBcMFc0m6jcXOg14pt9XjkZb3dwgOYeNaMKYm/bpfmoSk5 tTiA== X-Gm-Message-State: AOAM531IvCEHVGvBrJwrmuSfA8l62OZu/lfhmFZp4X6FezimM0+5KQg5 qZjifUyeBK+ntShIwEhSkMI= X-Google-Smtp-Source: ABdhPJzvohUYzXt+uSKGUHToGuLwdcMG2JPREh4lwWA2NWh6IjEBW3B/3ozNkI6kb9TQcRfso6PQkw== X-Received: by 2002:adf:f285:: with SMTP id k5mr11745547wro.117.1629305008385; Wed, 18 Aug 2021 09:43:28 -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: Jiaxun Yang , Thomas Huth , Aurelien Jarno , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Aleksandar Rikalo Subject: [PATCH 1/5] target/mips: Replace GET_OFFSET() macro by get_offset() function Date: Wed, 18 Aug 2021 18:43:17 +0200 Message-Id: <20210818164321.2474534-2-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210818164321.2474534-1-f4bug@amsat.org> References: <20210818164321.2474534-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) X-ZM-MESSAGEID: 1629305011044100001 The target endianess information is stored in the BigEndian bit of the Config0 register in CP0. As a first step, replace the GET_OFFSET() macro by an inlined get_offset() function, passing CPUMIPSState as argument. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/ldst_helper.c | 57 +++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/target/mips/tcg/ldst_helper.c b/target/mips/tcg/ldst_helper.c index d42812b8a6a..97e7ad7d7a4 100644 --- a/target/mips/tcg/ldst_helper.c +++ b/target/mips/tcg/ldst_helper.c @@ -52,31 +52,44 @@ HELPER_LD_ATOMIC(lld, ldq, 0x7, (target_ulong)) =20 #endif /* !CONFIG_USER_ONLY */ =20 +static inline bool cpu_is_bigendian(CPUMIPSState *env) +{ + return extract32(env->CP0_Config0, CP0C0_BE, 1); +} + #ifdef TARGET_WORDS_BIGENDIAN #define GET_LMASK(v) ((v) & 3) -#define GET_OFFSET(addr, offset) (addr + (offset)) #else #define GET_LMASK(v) (((v) & 3) ^ 3) -#define GET_OFFSET(addr, offset) (addr - (offset)) #endif =20 +static inline target_ulong get_offset(CPUMIPSState *env, + target_ulong addr, int offset) +{ + if (cpu_is_bigendian(env)) { + return addr + offset; + } else { + return addr - offset; + } +} + void helper_swl(CPUMIPSState *env, target_ulong arg1, target_ulong arg2, int mem_idx) { cpu_stb_mmuidx_ra(env, arg2, (uint8_t)(arg1 >> 24), mem_idx, GETPC()); =20 if (GET_LMASK(arg2) <=3D 2) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, 1), (uint8_t)(arg1 >> 16), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 1), (uint8_t)(arg1 >>= 16), mem_idx, GETPC()); } =20 if (GET_LMASK(arg2) <=3D 1) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, 2), (uint8_t)(arg1 >> 8), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 2), (uint8_t)(arg1 >>= 8), mem_idx, GETPC()); } =20 if (GET_LMASK(arg2) =3D=3D 0) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, 3), (uint8_t)arg1, + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 3), (uint8_t)arg1, mem_idx, GETPC()); } } @@ -87,17 +100,17 @@ void helper_swr(CPUMIPSState *env, target_ulong arg1, = target_ulong arg2, cpu_stb_mmuidx_ra(env, arg2, (uint8_t)arg1, mem_idx, GETPC()); =20 if (GET_LMASK(arg2) >=3D 1) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, -1), (uint8_t)(arg1 >> 8), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -1), (uint8_t)(arg1 >= > 8), mem_idx, GETPC()); } =20 if (GET_LMASK(arg2) >=3D 2) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, -2), (uint8_t)(arg1 >> 16), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -2), (uint8_t)(arg1 >= > 16), mem_idx, GETPC()); } =20 if (GET_LMASK(arg2) =3D=3D 3) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, -3), (uint8_t)(arg1 >> 24), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -3), (uint8_t)(arg1 >= > 24), mem_idx, GETPC()); } } @@ -119,37 +132,37 @@ void helper_sdl(CPUMIPSState *env, target_ulong arg1,= target_ulong arg2, cpu_stb_mmuidx_ra(env, arg2, (uint8_t)(arg1 >> 56), mem_idx, GETPC()); =20 if (GET_LMASK64(arg2) <=3D 6) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, 1), (uint8_t)(arg1 >> 48), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 1), (uint8_t)(arg1 >>= 48), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) <=3D 5) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, 2), (uint8_t)(arg1 >> 40), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 2), (uint8_t)(arg1 >>= 40), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) <=3D 4) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, 3), (uint8_t)(arg1 >> 32), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 3), (uint8_t)(arg1 >>= 32), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) <=3D 3) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, 4), (uint8_t)(arg1 >> 24), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 4), (uint8_t)(arg1 >>= 24), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) <=3D 2) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, 5), (uint8_t)(arg1 >> 16), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 5), (uint8_t)(arg1 >>= 16), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) <=3D 1) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, 6), (uint8_t)(arg1 >> 8), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 6), (uint8_t)(arg1 >>= 8), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) <=3D 0) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, 7), (uint8_t)arg1, + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 7), (uint8_t)arg1, mem_idx, GETPC()); } } @@ -160,37 +173,37 @@ void helper_sdr(CPUMIPSState *env, target_ulong arg1,= target_ulong arg2, cpu_stb_mmuidx_ra(env, arg2, (uint8_t)arg1, mem_idx, GETPC()); =20 if (GET_LMASK64(arg2) >=3D 1) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, -1), (uint8_t)(arg1 >> 8), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -1), (uint8_t)(arg1 >= > 8), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) >=3D 2) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, -2), (uint8_t)(arg1 >> 16), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -2), (uint8_t)(arg1 >= > 16), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) >=3D 3) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, -3), (uint8_t)(arg1 >> 24), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -3), (uint8_t)(arg1 >= > 24), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) >=3D 4) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, -4), (uint8_t)(arg1 >> 32), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -4), (uint8_t)(arg1 >= > 32), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) >=3D 5) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, -5), (uint8_t)(arg1 >> 40), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -5), (uint8_t)(arg1 >= > 40), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) >=3D 6) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, -6), (uint8_t)(arg1 >> 48), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -6), (uint8_t)(arg1 >= > 48), mem_idx, GETPC()); } =20 if (GET_LMASK64(arg2) =3D=3D 7) { - cpu_stb_mmuidx_ra(env, GET_OFFSET(arg2, -7), (uint8_t)(arg1 >> 56), + cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -7), (uint8_t)(arg1 >= > 56), mem_idx, GETPC()); } } --=20 2.31.1 From nobody Fri May 17 08:24:39 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.47 as permitted sender) client-ip=209.85.128.47; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f47.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.47 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1629305018; cv=none; d=zohomail.com; s=zohoarc; b=Sl5365LZuUNGqm4zilFB2QMd3RBNIYNp4wVfY7i1IyDQVnyAs7sM0GRdpsJ6wRe0hKt2irKV4xpwB6q2Uw5/eeqFzsdPBYrWi7Ehw95mTQDAop4/leLwNIcyRirOzsPOrjHkdx8zOy8Jko0N2nsjG6kl4+y7dRMVlOrtnfM6Cfw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629305018; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=JF49QaE9jCuDi/YmbkMexymGIj6EFWRt8yNQcZZmeTQ=; b=GqzD2sMssMdF9PRpiP7mPixjOqjYw9h5F50QdybkB8GCwmWJ4wL2Dfna7+yX1R37TvfGb2Lfki9zIFWPcpriGhWOj9GwtLdb8SVkDTJOlzZPwBFUpyDPhQdbcmc8K3sK6hZDQ8Jgl+mNHgJkMtyuN+nAd1uhOJZLScFcyL2h6l4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.47 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) by mx.zohomail.com with SMTPS id 1629305018249704.7034331596466; Wed, 18 Aug 2021 09:43:38 -0700 (PDT) Received: by mail-wm1-f47.google.com with SMTP id w24so2007439wmi.5 for ; Wed, 18 Aug 2021 09:43:34 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (163.red-83-52-55.dynamicip.rima-tde.net. [83.52.55.163]) by smtp.gmail.com with ESMTPSA id b13sm282074wrf.86.2021.08.18.09.43.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Aug 2021 09:43:32 -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=JF49QaE9jCuDi/YmbkMexymGIj6EFWRt8yNQcZZmeTQ=; b=EHEju86HEPsmbWmFjE7I4kYTZmpZc6WBr41nN6vjZTxPUqmtGzZbW/875qdvMNUuyA cA+xVYhGADm+iTS1lkuZlnYRwaEWbXjY+2w8AiUL3GiOCqUIxK5LZ8xd6IqGATA4Qb27 b9M4II4rzwoMOGgdv2wmrhON+xp0GQikKwxuf53Ik7zBGiNWF7DRFCRxjlW9Db9nAC4f LKGnK5Y8g420vB4onD3rnMcpr7QnJdjm/3sY+rVGn5FDhlRngqMmHWP0+4QbERxUJS0U lBmSA++T1nOHh2zxfflrNNRF5Cj4t2N0LPdu1mcoxf/DexDxm2xyYdU98Yun6UQ+eKEj f27Q== 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=JF49QaE9jCuDi/YmbkMexymGIj6EFWRt8yNQcZZmeTQ=; b=mFYEFQPQA0irB+XCFxgrldPc/7NfjKMZUu7kVQj8uC/tEvfZGfRea8FwidG+Skbcv/ 5EgTu7PdVUYRLDnT5tP3SK6ux876K/Mo/jrY41puhPJgtu/hAZdIEHlI3z3oZYGJAlAG 7p82ADyshPwjTFLYVB2jMz0vc86zJuKxxfp28F00DcJAgOiT8h+jp1TkrMkBNztQ2LBI S2ssoKGgeDnopAwwXsZfIveixvUKwj86LUv9Fwj5kcbpWvvoRtpN051hwWO0+wM18Ja9 Rjc6zOdPW109RUffRW5QW/s61BMpqXkb8+5YW7BiRVMMvl9CK5YNh81qGqDLXt7Bxqec zDvA== X-Gm-Message-State: AOAM532riaRF47UszCEZNhL0SapS/gjwy03Uuw3OGyNpTVFIes+ZLL+9 O/PPgNNMcioR1uteqdOAxC8= X-Google-Smtp-Source: ABdhPJwXIUILdGjulabHSeJUlmbnNtW3m5hgpdeGXpCDmcd78RaUOEZtknDckxI8NliV4nO1TKkRDA== X-Received: by 2002:a1c:9ace:: with SMTP id c197mr9519244wme.170.1629305013115; Wed, 18 Aug 2021 09:43:33 -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: Jiaxun Yang , Thomas Huth , Aurelien Jarno , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Aleksandar Rikalo Subject: [PATCH 2/5] target/mips: Replace GET_LMASK() macro by get_lmask(32) function Date: Wed, 18 Aug 2021 18:43:18 +0200 Message-Id: <20210818164321.2474534-3-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210818164321.2474534-1-f4bug@amsat.org> References: <20210818164321.2474534-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) X-ZM-MESSAGEID: 1629305019561100001 The target endianess information is stored in the BigEndian bit of the Config0 register in CP0. Replace the GET_LMASK() macro by an inlined get_lmask() function, passing CPUMIPSState and the word size as argument. We can remove one use of the TARGET_WORDS_BIGENDIAN definition. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/ldst_helper.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/target/mips/tcg/ldst_helper.c b/target/mips/tcg/ldst_helper.c index 97e7ad7d7a4..888578c0b9c 100644 --- a/target/mips/tcg/ldst_helper.c +++ b/target/mips/tcg/ldst_helper.c @@ -57,12 +57,6 @@ static inline bool cpu_is_bigendian(CPUMIPSState *env) return extract32(env->CP0_Config0, CP0C0_BE, 1); } =20 -#ifdef TARGET_WORDS_BIGENDIAN -#define GET_LMASK(v) ((v) & 3) -#else -#define GET_LMASK(v) (((v) & 3) ^ 3) -#endif - static inline target_ulong get_offset(CPUMIPSState *env, target_ulong addr, int offset) { @@ -73,22 +67,36 @@ static inline target_ulong get_offset(CPUMIPSState *env, } } =20 +static inline target_ulong get_lmask(CPUMIPSState *env, + target_ulong value, unsigned bits) +{ + unsigned mask =3D (bits / BITS_PER_BYTE) - 1; + + value &=3D mask; + + if (cpu_is_bigendian(env)) { + value ^=3D mask; + } + + return value; +} + void helper_swl(CPUMIPSState *env, target_ulong arg1, target_ulong arg2, int mem_idx) { cpu_stb_mmuidx_ra(env, arg2, (uint8_t)(arg1 >> 24), mem_idx, GETPC()); =20 - if (GET_LMASK(arg2) <=3D 2) { + if (get_lmask(env, arg2, 32) <=3D 2) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 1), (uint8_t)(arg1 >>= 16), mem_idx, GETPC()); } =20 - if (GET_LMASK(arg2) <=3D 1) { + if (get_lmask(env, arg2, 32) <=3D 1) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 2), (uint8_t)(arg1 >>= 8), mem_idx, GETPC()); } =20 - if (GET_LMASK(arg2) =3D=3D 0) { + if (get_lmask(env, arg2, 32) =3D=3D 0) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 3), (uint8_t)arg1, mem_idx, GETPC()); } @@ -99,17 +107,17 @@ void helper_swr(CPUMIPSState *env, target_ulong arg1, = target_ulong arg2, { cpu_stb_mmuidx_ra(env, arg2, (uint8_t)arg1, mem_idx, GETPC()); =20 - if (GET_LMASK(arg2) >=3D 1) { + if (get_lmask(env, arg2, 32) >=3D 1) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -1), (uint8_t)(arg1 >= > 8), mem_idx, GETPC()); } =20 - if (GET_LMASK(arg2) >=3D 2) { + if (get_lmask(env, arg2, 32) >=3D 2) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -2), (uint8_t)(arg1 >= > 16), mem_idx, GETPC()); } =20 - if (GET_LMASK(arg2) =3D=3D 3) { + if (get_lmask(env, arg2, 32) =3D=3D 3) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -3), (uint8_t)(arg1 >= > 24), mem_idx, GETPC()); } --=20 2.31.1 From nobody Fri May 17 08:24:39 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1629305020; cv=none; d=zohomail.com; s=zohoarc; b=leOomY4bBiExwiYga4zaGf3cXpPtJW6INIVZB2vHCgIdoHkmAgKKLoK5uNrSH9R/zA2sOr5/swuynlH7Ot/p5JQwAERlY2sVnGUfCtRTBDbg1LOX5OQMPRwpCgmuXrYZRLMepu79SFbWBQ0xt7zI93qsMxpDpmvMdb63NRmbCns= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629305020; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Yy2E72RJ9xmGSy1LibXCwKjozBFE9JRVIWHpHyn6OVc=; b=BDLjnxln7MrKczlsbzRXne/yk3djE69Q5aoNA5OBiRXClgMVZY+KXu+wAGYB+O7e0axFS445jtUD2XUQ7SB3fpv60d8x/MBOOh+SMKcsLWv7HZnx+RQ/X3x3yDrPUFn5qbJpTkqWr92MgW2u7x77uTO0BJBDdosFZA6o59UTHoU= 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 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by mx.zohomail.com with SMTPS id 1629305020024282.24993618564076; Wed, 18 Aug 2021 09:43:40 -0700 (PDT) Received: by mail-wr1-f41.google.com with SMTP id k29so4492452wrd.7 for ; Wed, 18 Aug 2021 09:43:38 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (163.red-83-52-55.dynamicip.rima-tde.net. [83.52.55.163]) by smtp.gmail.com with ESMTPSA id b12sm369445wrx.72.2021.08.18.09.43.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Aug 2021 09:43:37 -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=Yy2E72RJ9xmGSy1LibXCwKjozBFE9JRVIWHpHyn6OVc=; b=KTTGpLrJj+Z8eYdgGoSHWwf15H6hQevCG0WOHiPdRnF/dPUnPtn1c/y/ufeTpw2KM3 64f/5XwDkehrDjIj7iw8xuKA/rsOf+QinBhWV53xeAj5v3d0Dc3PMBjqm8kcrOU0YEtU kLGCFphVkTYAfj9bq1j9FbQk6fUUyBDDHdIwMd4AOYFHAuubColujHuZNxwEWuM9tRsU DMdKrf1IBmHMnnaZR2RZgCmf6ZdM0wv+seCRt3Zxo1E1RBE+3iRR4sRlqKFAQM8sIqVH dagwPy6XqmBukzPOVd2rEB49Oq80FoR0qd0zxyQFXXauGlzYPipRp9jXZVpq+fDnXxtE qKrg== 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=Yy2E72RJ9xmGSy1LibXCwKjozBFE9JRVIWHpHyn6OVc=; b=jSSvW7hCg9VNBXiNBcY3NSYNtRo4TZQZnIZkjjPjcXfooCdbbLL/cLWl9M0tzBTeOn RevMklsBz1LUjO7H3VirjCBcKMjs3wSoPcsEvWlOtAVMulTDBzncuvT8wIKVXwUZ33Bm F5UD4yQrFljFVa2sqsj25TmuxqiOR/jm/Qy0NxtrVUjk4wsEun7iqh8yKkO5o/5qKfXr /z3EJLN+Fiai/m48li3MY/JNbry0ldMGGgPQ1zuzfx0/pi5XqNkjeaeP6SluS0+wspDg K2Gb5s1DVYdKcVtfodcZ0ERRw22CVBivjI4QB1PgrGI6Ke6bX9Bq5tpFF/u1/D8XrJFh 4R9Q== X-Gm-Message-State: AOAM532XxH8QPzA7SZfuj1TrRJUxUgr8HyVWhtuYRGheWNG+EmB5pepf /+w+8Xuhz/0ccGcIp/C55D0= X-Google-Smtp-Source: ABdhPJxqtJRhwlKoG3IUaMLiLQPcwfE4wY2aCYCthli+a2fDwukJf9nOMBmL41WE+1J+9MABJ19whQ== X-Received: by 2002:adf:f352:: with SMTP id e18mr11567250wrp.160.1629305017794; Wed, 18 Aug 2021 09:43:37 -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: Jiaxun Yang , Thomas Huth , Aurelien Jarno , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Aleksandar Rikalo Subject: [PATCH 3/5] target/mips: Replace GET_LMASK64() macro by get_lmask(64) function Date: Wed, 18 Aug 2021 18:43:19 +0200 Message-Id: <20210818164321.2474534-4-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210818164321.2474534-1-f4bug@amsat.org> References: <20210818164321.2474534-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) X-ZM-MESSAGEID: 1629305021978100001 The target endianess information is stored in the BigEndian bit of the Config0 register in CP0. Replace the GET_LMASK() macro by an inlined get_lmask() function, passing CPUMIPSState and the word size as argument. We can remove another use of the TARGET_WORDS_BIGENDIAN definition. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/ldst_helper.c | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/target/mips/tcg/ldst_helper.c b/target/mips/tcg/ldst_helper.c index 888578c0b9c..01b3dc5bee0 100644 --- a/target/mips/tcg/ldst_helper.c +++ b/target/mips/tcg/ldst_helper.c @@ -128,48 +128,43 @@ void helper_swr(CPUMIPSState *env, target_ulong arg1,= target_ulong arg2, * "half" load and stores. We must do the memory access inline, * or fault handling won't work. */ -#ifdef TARGET_WORDS_BIGENDIAN -#define GET_LMASK64(v) ((v) & 7) -#else -#define GET_LMASK64(v) (((v) & 7) ^ 7) -#endif =20 void helper_sdl(CPUMIPSState *env, target_ulong arg1, target_ulong arg2, int mem_idx) { cpu_stb_mmuidx_ra(env, arg2, (uint8_t)(arg1 >> 56), mem_idx, GETPC()); =20 - if (GET_LMASK64(arg2) <=3D 6) { + if (get_lmask(env, arg2, 64) <=3D 6) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 1), (uint8_t)(arg1 >>= 48), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) <=3D 5) { + if (get_lmask(env, arg2, 64) <=3D 5) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 2), (uint8_t)(arg1 >>= 40), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) <=3D 4) { + if (get_lmask(env, arg2, 64) <=3D 4) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 3), (uint8_t)(arg1 >>= 32), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) <=3D 3) { + if (get_lmask(env, arg2, 64) <=3D 3) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 4), (uint8_t)(arg1 >>= 24), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) <=3D 2) { + if (get_lmask(env, arg2, 64) <=3D 2) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 5), (uint8_t)(arg1 >>= 16), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) <=3D 1) { + if (get_lmask(env, arg2, 64) <=3D 1) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 6), (uint8_t)(arg1 >>= 8), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) <=3D 0) { + if (get_lmask(env, arg2, 64) <=3D 0) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, 7), (uint8_t)arg1, mem_idx, GETPC()); } @@ -180,37 +175,37 @@ void helper_sdr(CPUMIPSState *env, target_ulong arg1,= target_ulong arg2, { cpu_stb_mmuidx_ra(env, arg2, (uint8_t)arg1, mem_idx, GETPC()); =20 - if (GET_LMASK64(arg2) >=3D 1) { + if (get_lmask(env, arg2, 64) >=3D 1) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -1), (uint8_t)(arg1 >= > 8), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) >=3D 2) { + if (get_lmask(env, arg2, 64) >=3D 2) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -2), (uint8_t)(arg1 >= > 16), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) >=3D 3) { + if (get_lmask(env, arg2, 64) >=3D 3) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -3), (uint8_t)(arg1 >= > 24), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) >=3D 4) { + if (get_lmask(env, arg2, 64) >=3D 4) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -4), (uint8_t)(arg1 >= > 32), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) >=3D 5) { + if (get_lmask(env, arg2, 64) >=3D 5) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -5), (uint8_t)(arg1 >= > 40), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) >=3D 6) { + if (get_lmask(env, arg2, 64) >=3D 6) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -6), (uint8_t)(arg1 >= > 48), mem_idx, GETPC()); } =20 - if (GET_LMASK64(arg2) =3D=3D 7) { + if (get_lmask(env, arg2, 64) =3D=3D 7) { cpu_stb_mmuidx_ra(env, get_offset(env, arg2, -7), (uint8_t)(arg1 >= > 56), mem_idx, GETPC()); } --=20 2.31.1 From nobody Fri May 17 08:24:39 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1629305024; cv=none; d=zohomail.com; s=zohoarc; b=mVVNjkOkIqvxzrnhXGOn+n4OYXRmepiyjXejjAXNVjv10PUEuYGIxsE1A85P1Kd3aqpOhAh5ffWA5y4W+cPFQVuixiJl9NORJDKTAmPWvgjiLHIcwi3Xp9BZadr+AakObEY2jTJ7IurNPHlQxwlaQ+O+jdrknbmoQ6lKkx2IkGc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629305024; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=lP+nOsNKl2jJJvhazgJeN/uzp96XdmFpJ71cEs//Ybg=; b=LIoVlUXF8qMFQGz6xY9H9xM4ya/phAnL0TScVMFJc64lMDxM5TwLJFjto2ZVrGzTMYCwvLsHUTLVSyrvH5bEO3kyM5kIKTfvhAPoVr9Lhi2CppPQKZrK52KvZ7TaRYcT40blr8mYN4ttnA1v4195Kq3GIgUYDdGvqCIK8cMSEYA= 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 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by mx.zohomail.com with SMTPS id 1629305024196970.5400439103945; Wed, 18 Aug 2021 09:43:44 -0700 (PDT) Received: by mail-wr1-f41.google.com with SMTP id q6so4498191wrv.6 for ; Wed, 18 Aug 2021 09:43:43 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (163.red-83-52-55.dynamicip.rima-tde.net. [83.52.55.163]) by smtp.gmail.com with ESMTPSA id k22sm290625wmi.47.2021.08.18.09.43.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Aug 2021 09:43:41 -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=lP+nOsNKl2jJJvhazgJeN/uzp96XdmFpJ71cEs//Ybg=; b=uChrVUtB5vda4O/9j58UH68PblLRvShvlGmi+i2gppSt6UF/5+qewJhnABgJuEfq36 c8Qg7sRoNby0lAgsjvR+Fms/nDv9WwCR0VrNAQMCXvdWG9mlDWVhaLksUuWFR93DHl1j njcD6f6UaJFcjNE+92Fkw7C0/4kcDfeKSORHh8GqFtmgLBYqpIGnv9Lws8MW7UR3FkLS S38fYNuFcu86jDEw/qTHlswhT68R7bhiyl3xWoQcXEq23aEwqw1b4CKdrAtQx3Bv+n2z YmS90MJxWq7OTR9ApxOtqEeUMyKXG8yQq7yR8/iILq3VcVQqD14n83skjnw9ERF4OXBS jLaA== 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=lP+nOsNKl2jJJvhazgJeN/uzp96XdmFpJ71cEs//Ybg=; b=rJOR3gaYr6d1JOfhVKhyMmznIkFpxBsf47+r0QeM2yjBYJs2FfszbP6fuewI/TBFGu GtxX+TPuxKxirJdvflaxWrEpWQkoknzkcjrVIdxSMMd74101WOK3f8fqcyr6Sw4arVtl 6A2S10vXArt8X1GL6RNhX3yiFHOBcZogjVaU00xZIpCWi5q62PlWsWI0d6KZ+T5XEJxp gBJoSg7p6bPgZczc4BZVJpcloWbVFWbJdEK/Nd6a7dWF8mUTi2LlHUoxxOx9/FKLCBhe OBcAcwBk5nyOe9VjHMYtgkMk6NTrfHHE0Dc5h58FZsIYR52F97pONfZB02tpwlWu5Vht BSug== X-Gm-Message-State: AOAM532C9LeOvjBQPd0xNJJdezVR03o+XfNnabT7NOsCkpK1oIA+4i7N vHUI+Xa7DXFdh/3b4D8AiQk= X-Google-Smtp-Source: ABdhPJxkxfDMrMnL8n8g5bMz8dZXN1YO+x1LXxi8t/q8V3ydmM1En5rl+VpLdHdGXpW42p9D4MeAlQ== X-Received: by 2002:adf:fb44:: with SMTP id c4mr11527211wrs.179.1629305022423; Wed, 18 Aug 2021 09:43:42 -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: Jiaxun Yang , Thomas Huth , Aurelien Jarno , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Aleksandar Rikalo Subject: [PATCH 4/5] target/mips: Store CP0_Config0 in DisasContext Date: Wed, 18 Aug 2021 18:43:20 +0200 Message-Id: <20210818164321.2474534-5-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210818164321.2474534-1-f4bug@amsat.org> References: <20210818164321.2474534-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) X-ZM-MESSAGEID: 1629305025092100001 Most TCG helpers only have access to a DisasContext pointer, not CPUMIPSState. Store a copy of CPUMIPSState::CP0_Config0 in DisasContext so we can access it from TCG helpers. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- target/mips/tcg/translate.h | 1 + target/mips/tcg/translate.c | 1 + 2 files changed, 2 insertions(+) diff --git a/target/mips/tcg/translate.h b/target/mips/tcg/translate.h index bb0a6b8d74f..9d325c836aa 100644 --- a/target/mips/tcg/translate.h +++ b/target/mips/tcg/translate.h @@ -18,6 +18,7 @@ typedef struct DisasContext { target_ulong page_start; uint32_t opcode; uint64_t insn_flags; + int32_t CP0_Config0; int32_t CP0_Config1; int32_t CP0_Config2; int32_t CP0_Config3; diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c index a58d50e40e2..572104e2cc2 100644 --- a/target/mips/tcg/translate.c +++ b/target/mips/tcg/translate.c @@ -16034,6 +16034,7 @@ static void mips_tr_init_disas_context(DisasContext= Base *dcbase, CPUState *cs) ctx->page_start =3D ctx->base.pc_first & TARGET_PAGE_MASK; ctx->saved_pc =3D -1; ctx->insn_flags =3D env->insn_flags; + ctx->CP0_Config0 =3D env->CP0_Config0; ctx->CP0_Config1 =3D env->CP0_Config1; ctx->CP0_Config2 =3D env->CP0_Config2; ctx->CP0_Config3 =3D env->CP0_Config3; --=20 2.31.1 From nobody Fri May 17 08:24:39 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.44 as permitted sender) client-ip=209.85.128.44; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f44.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.44 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1629305028; cv=none; d=zohomail.com; s=zohoarc; b=cDlzNuWouIXDLyjIk1iGzGCJKdWoEwAznty2uWqipfB5Q2ICYB9fHiAELW/RJn7jWbcsXLMibBdQHTDIigydn401l2vnBduE9pLY8VYoNzP4DwJifOPYe5z0UjwfnyVHOipmrqHAGtNjJWFPittaaV0VPyyFxM0q0lWNPFmiuv0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629305028; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=UMYYt4B6oY1Eiz/WyQSJSJd0kDXrXr2MuSZmhyLpRn4=; b=aX4h1UiZrh2S77JY3pzUXM0NXJWpHRnzqwqtT5xwxb+GbB4HFtbzMERmIPh97n5KS/3hVz3GyVy1NL4axfll1kMniK17oAzE4segS9mqqQofZB4m99dfYEOkfbXUdIG/dNCmtK5LgbyauDmGx5G912U0V7zIOhzfoDh+9bC7Clo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.44 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) by mx.zohomail.com with SMTPS id 1629305028885734.7262577314198; Wed, 18 Aug 2021 09:43:48 -0700 (PDT) Received: by mail-wm1-f44.google.com with SMTP id g138so2012701wmg.4 for ; Wed, 18 Aug 2021 09:43:48 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (163.red-83-52-55.dynamicip.rima-tde.net. [83.52.55.163]) by smtp.gmail.com with ESMTPSA id m7sm5296848wmq.29.2021.08.18.09.43.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Aug 2021 09:43:46 -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=UMYYt4B6oY1Eiz/WyQSJSJd0kDXrXr2MuSZmhyLpRn4=; b=DCWj1wrmSZocRggT62FN7hs+vMRZUVPET5VzeH3V2787lQtn6nCWySP2iMfQxikBBe sCVKhxBCiTJuR/E0cK8ERG8ytDMg8Qcic0fPrwhRkzXMbc9dTX9cYhyURysbxWcdwYVb 43RqtnexNGIAMCrehWMJQ9b2Hrbrbof/sXkY4II62zg8onP4bbTLBEv48MY/RQNK0lfp 6PTPYyLaXGHZ4nKZCxY6ZWcm4vX1jDsgwwjkXSv9oL2CpzGVgJVhtMz9rVGQdMvztu3h eQ2czyWtxjyfgSuVzHa3Vri6isbRQ0ga2squ/4rrzedISDDYiqLBiD4wGbY4sTuOFDIU aFPQ== 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=UMYYt4B6oY1Eiz/WyQSJSJd0kDXrXr2MuSZmhyLpRn4=; b=o/yCQk1WGDaXLhHLhnZ0GUyBSlRbbz4CcvlA4utHMdaHp11bv8UXKY0N1c8uds7mXZ eHLZlldZ99VuF3GGk8H9FWZ0SpDkQOqLnaJhjw7O30j71xDMd3z7387wIJKV2Z4pcAxT B42mbl62lzgKll0gTkfYVQMNM/XFbHb5ZyMuuPq0KlrBMlkw1znxQ7TpkugKb1tb9o0k r4p8r3yBT6wcEehYFNb2RGkZeyWY1WeylsVjWENQuJyR2pIaW6usFpiM6gfEJRdiP7io EInrFTGQyY4wCwx1x/XXXXcDTb7fGygIfMc0vt3e8k5BhwUZ5s84ZBGTHat17+3mZyvx OzSA== X-Gm-Message-State: AOAM531L/KHs9gju5uckipjrKQJMYEkifwrI4feXrcU292b+oH380bgD 8dOfUjFQZvFYZu43C9MxBTLF1MAb74U= X-Google-Smtp-Source: ABdhPJxrdjSZzWF2TF7EHbotO6qIs+x/0h8kvOsIRIqdHcyhfXiuAOEFseioIHrzldrg5PDop0a02w== X-Received: by 2002:a1c:7f90:: with SMTP id a138mr8864029wmd.33.1629305027088; Wed, 18 Aug 2021 09:43:47 -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: Jiaxun Yang , Thomas Huth , Aurelien Jarno , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Aleksandar Rikalo Subject: [PATCH 5/5] target/mips: Replace TARGET_WORDS_BIGENDIAN by cpu_is_bigendian() Date: Wed, 18 Aug 2021 18:43:21 +0200 Message-Id: <20210818164321.2474534-6-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210818164321.2474534-1-f4bug@amsat.org> References: <20210818164321.2474534-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) X-ZM-MESSAGEID: 1629305029687100001 Add the inlined cpu_is_bigendian() function in "translate.h". Replace the TARGET_WORDS_BIGENDIAN #ifdef'ry by calls to cpu_is_bigendian(). Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- target/mips/tcg/translate.h | 5 ++ target/mips/tcg/translate.c | 70 ++++++++++++------------ target/mips/tcg/nanomips_translate.c.inc | 20 +++---- 3 files changed, 50 insertions(+), 45 deletions(-) diff --git a/target/mips/tcg/translate.h b/target/mips/tcg/translate.h index 9d325c836aa..dfb1552c2fc 100644 --- a/target/mips/tcg/translate.h +++ b/target/mips/tcg/translate.h @@ -212,4 +212,9 @@ bool decode_ext_vr54xx(DisasContext *ctx, uint32_t insn= ); static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \ { return FUNC(ctx, a, __VA_ARGS__); } =20 +static inline bool cpu_is_bigendian(DisasContext *ctx) +{ + return extract32(ctx->CP0_Config0, CP0C0_BE, 1); +} + #endif diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c index 572104e2cc2..f182e64643d 100644 --- a/target/mips/tcg/translate.c +++ b/target/mips/tcg/translate.c @@ -2093,9 +2093,9 @@ static void gen_ld(DisasContext *ctx, uint32_t opc, */ tcg_gen_qemu_ld_tl(t1, t0, mem_idx, MO_UB); tcg_gen_andi_tl(t1, t0, 7); -#ifndef TARGET_WORDS_BIGENDIAN - tcg_gen_xori_tl(t1, t1, 7); -#endif + if (!cpu_is_bigendian(ctx)) { + tcg_gen_xori_tl(t1, t1, 7); + } tcg_gen_shli_tl(t1, t1, 3); tcg_gen_andi_tl(t0, t0, ~7); tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEQ); @@ -2117,9 +2117,9 @@ static void gen_ld(DisasContext *ctx, uint32_t opc, */ tcg_gen_qemu_ld_tl(t1, t0, mem_idx, MO_UB); tcg_gen_andi_tl(t1, t0, 7); -#ifdef TARGET_WORDS_BIGENDIAN - tcg_gen_xori_tl(t1, t1, 7); -#endif + if (cpu_is_bigendian(ctx)) { + tcg_gen_xori_tl(t1, t1, 7); + } tcg_gen_shli_tl(t1, t1, 3); tcg_gen_andi_tl(t0, t0, ~7); tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEQ); @@ -2198,9 +2198,9 @@ static void gen_ld(DisasContext *ctx, uint32_t opc, */ tcg_gen_qemu_ld_tl(t1, t0, mem_idx, MO_UB); tcg_gen_andi_tl(t1, t0, 3); -#ifndef TARGET_WORDS_BIGENDIAN - tcg_gen_xori_tl(t1, t1, 3); -#endif + if (!cpu_is_bigendian(ctx)) { + tcg_gen_xori_tl(t1, t1, 3); + } tcg_gen_shli_tl(t1, t1, 3); tcg_gen_andi_tl(t0, t0, ~3); tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEUL); @@ -2226,9 +2226,9 @@ static void gen_ld(DisasContext *ctx, uint32_t opc, */ tcg_gen_qemu_ld_tl(t1, t0, mem_idx, MO_UB); tcg_gen_andi_tl(t1, t0, 3); -#ifdef TARGET_WORDS_BIGENDIAN - tcg_gen_xori_tl(t1, t1, 3); -#endif + if (cpu_is_bigendian(ctx)) { + tcg_gen_xori_tl(t1, t1, 3); + } tcg_gen_shli_tl(t1, t1, 3); tcg_gen_andi_tl(t0, t0, ~3); tcg_gen_qemu_ld_tl(t0, t0, mem_idx, MO_TEUL); @@ -4445,9 +4445,9 @@ static void gen_loongson_lswc2(DisasContext *ctx, int= rt, t1 =3D tcg_temp_new(); tcg_gen_qemu_ld_tl(t1, t0, ctx->mem_idx, MO_UB); tcg_gen_andi_tl(t1, t0, 3); -#ifndef TARGET_WORDS_BIGENDIAN - tcg_gen_xori_tl(t1, t1, 3); -#endif + if (!cpu_is_bigendian(ctx)) { + tcg_gen_xori_tl(t1, t1, 3); + } tcg_gen_shli_tl(t1, t1, 3); tcg_gen_andi_tl(t0, t0, ~3); tcg_gen_qemu_ld_tl(t0, t0, ctx->mem_idx, MO_TEUL); @@ -4475,9 +4475,9 @@ static void gen_loongson_lswc2(DisasContext *ctx, int= rt, t1 =3D tcg_temp_new(); tcg_gen_qemu_ld_tl(t1, t0, ctx->mem_idx, MO_UB); tcg_gen_andi_tl(t1, t0, 3); -#ifdef TARGET_WORDS_BIGENDIAN - tcg_gen_xori_tl(t1, t1, 3); -#endif + if (cpu_is_bigendian(ctx)) { + tcg_gen_xori_tl(t1, t1, 3); + } tcg_gen_shli_tl(t1, t1, 3); tcg_gen_andi_tl(t0, t0, ~3); tcg_gen_qemu_ld_tl(t0, t0, ctx->mem_idx, MO_TEUL); @@ -4507,9 +4507,9 @@ static void gen_loongson_lswc2(DisasContext *ctx, int= rt, t1 =3D tcg_temp_new(); tcg_gen_qemu_ld_tl(t1, t0, ctx->mem_idx, MO_UB); tcg_gen_andi_tl(t1, t0, 7); -#ifndef TARGET_WORDS_BIGENDIAN - tcg_gen_xori_tl(t1, t1, 7); -#endif + if (!cpu_is_bigendian(ctx)) { + tcg_gen_xori_tl(t1, t1, 7); + } tcg_gen_shli_tl(t1, t1, 3); tcg_gen_andi_tl(t0, t0, ~7); tcg_gen_qemu_ld_tl(t0, t0, ctx->mem_idx, MO_TEQ); @@ -4529,9 +4529,9 @@ static void gen_loongson_lswc2(DisasContext *ctx, int= rt, t1 =3D tcg_temp_new(); tcg_gen_qemu_ld_tl(t1, t0, ctx->mem_idx, MO_UB); tcg_gen_andi_tl(t1, t0, 7); -#ifdef TARGET_WORDS_BIGENDIAN - tcg_gen_xori_tl(t1, t1, 7); -#endif + if (cpu_is_bigendian(ctx)) { + tcg_gen_xori_tl(t1, t1, 7); + } tcg_gen_shli_tl(t1, t1, 3); tcg_gen_andi_tl(t0, t0, ~7); tcg_gen_qemu_ld_tl(t0, t0, ctx->mem_idx, MO_TEQ); @@ -11464,17 +11464,17 @@ static void gen_flt3_arith(DisasContext *ctx, uin= t32_t opc, gen_set_label(l1); tcg_gen_brcondi_tl(TCG_COND_NE, t0, 4, l2); tcg_temp_free(t0); -#ifdef TARGET_WORDS_BIGENDIAN - gen_load_fpr32(ctx, fp, fs); - gen_load_fpr32h(ctx, fph, ft); - gen_store_fpr32h(ctx, fp, fd); - gen_store_fpr32(ctx, fph, fd); -#else - gen_load_fpr32h(ctx, fph, fs); - gen_load_fpr32(ctx, fp, ft); - gen_store_fpr32(ctx, fph, fd); - gen_store_fpr32h(ctx, fp, fd); -#endif + if (cpu_is_bigendian(ctx)) { + gen_load_fpr32(ctx, fp, fs); + gen_load_fpr32h(ctx, fph, ft); + gen_store_fpr32h(ctx, fp, fd); + gen_store_fpr32(ctx, fph, fd); + } else { + gen_load_fpr32h(ctx, fph, fs); + gen_load_fpr32(ctx, fp, ft); + gen_store_fpr32(ctx, fph, fd); + gen_store_fpr32h(ctx, fp, fd); + } gen_set_label(l2); tcg_temp_free_i32(fp); tcg_temp_free_i32(fph); diff --git a/target/mips/tcg/nanomips_translate.c.inc b/target/mips/tcg/nan= omips_translate.c.inc index 09e64a69480..a66ae267963 100644 --- a/target/mips/tcg/nanomips_translate.c.inc +++ b/target/mips/tcg/nanomips_translate.c.inc @@ -999,11 +999,11 @@ static void gen_llwp(DisasContext *ctx, uint32_t base= , int16_t offset, =20 gen_base_offset_addr(ctx, taddr, base, offset); tcg_gen_qemu_ld64(tval, taddr, ctx->mem_idx); -#ifdef TARGET_WORDS_BIGENDIAN - tcg_gen_extr_i64_tl(tmp2, tmp1, tval); -#else - tcg_gen_extr_i64_tl(tmp1, tmp2, tval); -#endif + if (cpu_is_bigendian(ctx)) { + tcg_gen_extr_i64_tl(tmp2, tmp1, tval); + } else { + tcg_gen_extr_i64_tl(tmp1, tmp2, tval); + } gen_store_gpr(tmp1, reg1); tcg_temp_free(tmp1); gen_store_gpr(tmp2, reg2); @@ -1035,11 +1035,11 @@ static void gen_scwp(DisasContext *ctx, uint32_t ba= se, int16_t offset, gen_load_gpr(tmp1, reg1); gen_load_gpr(tmp2, reg2); =20 -#ifdef TARGET_WORDS_BIGENDIAN - tcg_gen_concat_tl_i64(tval, tmp2, tmp1); -#else - tcg_gen_concat_tl_i64(tval, tmp1, tmp2); -#endif + if (cpu_is_bigendian(ctx)) { + tcg_gen_concat_tl_i64(tval, tmp2, tmp1); + } else { + tcg_gen_concat_tl_i64(tval, tmp1, tmp2); + } =20 tcg_gen_ld_i64(llval, cpu_env, offsetof(CPUMIPSState, llval_wp)); tcg_gen_atomic_cmpxchg_i64(val, taddr, llval, tval, --=20 2.31.1