qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org
Subject: [Qemu-devel] [PATCH v3 16/28] target/arm: Implement the STGP instruction
Date: Mon, 11 Feb 2019 15:52:46 -0800	[thread overview]
Message-ID: <20190211235258.542-17-richard.henderson@linaro.org> (raw)
In-Reply-To: <20190211235258.542-1-richard.henderson@linaro.org>

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
v3: Handle atomicity, require pre-cleaned address.
---
 target/arm/translate-a64.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
index feed325083..ef3fc3a397 100644
--- a/target/arm/translate-a64.c
+++ b/target/arm/translate-a64.c
@@ -2708,7 +2708,7 @@ static void disas_ld_lit(DisasContext *s, uint32_t insn)
  * +-----+-------+---+---+-------+---+-------+-------+------+------+
  *
  * opc: LDP/STP/LDNP/STNP        00 -> 32 bit, 10 -> 64 bit
- *      LDPSW                    01
+ *      LDPSW/STGP               01
  *      LDP/STP/LDNP/STNP (SIMD) 00 -> 32 bit, 01 -> 64 bit, 10 -> 128 bit
  *   V: 0 -> GPR, 1 -> Vector
  * idx: 00 -> signed offset with non-temporal hint, 01 -> post-index,
@@ -2733,6 +2733,7 @@ static void disas_ldst_pair(DisasContext *s, uint32_t insn)
     bool is_signed = false;
     bool postindex = false;
     bool wback = false;
+    bool set_tag = false;
 
     TCGv_i64 clean_addr, dirty_addr;
 
@@ -2745,6 +2746,14 @@ static void disas_ldst_pair(DisasContext *s, uint32_t insn)
 
     if (is_vector) {
         size = 2 + opc;
+    } else if (opc == 1 && !is_load) {
+        /* STGP */
+        if (!dc_isar_feature(aa64_mte_insn_reg, s) || index == 0) {
+            unallocated_encoding(s);
+            return;
+        }
+        size = 3;
+        set_tag = true;
     } else {
         size = 2 + extract32(opc, 1, 1);
         is_signed = extract32(opc, 0, 1);
@@ -2797,6 +2806,15 @@ static void disas_ldst_pair(DisasContext *s, uint32_t insn)
     }
     clean_addr = clean_data_tbi(s, dirty_addr, wback || rn != 31);
 
+    if (set_tag) {
+        TCGv_i64 tcg_rn = cpu_reg_sp(s, rn);
+        if (tb_cflags(s->base.tb) & CF_PARALLEL) {
+            gen_helper_stg_parallel(cpu_env, clean_addr, tcg_rn);
+        } else {
+            gen_helper_stg(cpu_env, clean_addr, tcg_rn);
+        }
+    }
+
     if (is_vector) {
         if (is_load) {
             do_fp_ld(s, rt, clean_addr, size);
-- 
2.17.2

  parent reply	other threads:[~2019-02-11 23:53 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-11 23:52 [Qemu-devel] [PATCH v3 00/28] target/arm: Implement ARMv8.5-MemTag Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 01/28] target/arm: Split out arm_sctlr Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 02/28] target/arm: Split helper_msr_i_pstate into 3 Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 03/28] target/arm: Add clear_pstate_bits, share gen_ss_advance Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 04/28] target/arm: Add MTE_ACTIVE to tb_flags Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 05/28] target/arm: Extract TCMA with ARMVAParameters Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 06/28] target/arm: Add MTE system registers Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 07/28] target/arm: Assert no manual change to CACHED_PSTATE_BITS Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 08/28] target/arm: Add helper_mte_check{1, 2} Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 09/28] target/arm: Suppress tag check for sp+offset Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 10/28] target/arm: Implement the IRG instruction Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 11/28] target/arm: Implement ADDG, SUBG instructions Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 12/28] target/arm: Implement the GMI instruction Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 13/28] target/arm: Implement the SUBP instruction Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 14/28] target/arm: Define arm_cpu_do_unaligned_access for CONFIG_USER_ONLY Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 15/28] target/arm: Implement LDG, STG, ST2G instructions Richard Henderson
2019-02-11 23:52 ` Richard Henderson [this message]
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 17/28] target/arm: Implement the LDGM and STGM instructions Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 18/28] target/arm: Implement the access tag cache flushes Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 19/28] target/arm: Clean address for DC ZVA Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 20/28] target/arm: Implement data cache set allocation tags Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 21/28] target/arm: Set PSTATE.TCO on exception entry Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 22/28] tcg: Introduce target-specific page data for user-only Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 23/28] target/arm: Cache the Tagged bit for a page in MemTxAttrs Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 24/28] target/arm: Create tagged ram when MTE is enabled Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 25/28] target/arm: Add allocation tag storage for user mode Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 26/28] target/arm: Add allocation tag storage for system mode Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 27/28] target/arm: Enable MTE Richard Henderson
2019-02-11 23:52 ` [Qemu-devel] [PATCH v3 28/28] tests/tcg/aarch64: Add mte smoke tests Richard Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190211235258.542-17-richard.henderson@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).