qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alistair Francis <alistair23@gmail.com>
To: Deepak Gupta <debug@rivosinc.com>
Cc: qemu-riscv@nongnu.org, qemu-devel@nongnu.org, palmer@dabbelt.com,
	 Alistair.Francis@wdc.com, laurent@vivier.eu, bmeng.cn@gmail.com,
	 liwei1518@gmail.com, dbarboza@ventanamicro.com,
	zhiwei_liu@linux.alibaba.com,  jim.shu@sifive.com,
	andy.chiu@sifive.com, kito.cheng@sifive.com
Subject: Re: [PATCH v11 19/20] disas/riscv: enable disassembly for compressed sspush/sspopchk
Date: Thu, 29 Aug 2024 10:06:09 +1000	[thread overview]
Message-ID: <CAKmqyKOecAQ2MTPnsw1_tPTRF++QbCBGOEDKKUMM9R3HUvqdRw@mail.gmail.com> (raw)
In-Reply-To: <20240828174739.714313-20-debug@rivosinc.com>

On Thu, Aug 29, 2024 at 3:53 AM Deepak Gupta <debug@rivosinc.com> wrote:
>
> sspush and sspopchk have equivalent compressed encoding taken from zcmop.
> cmop.1 is sspush x1 while cmop.5 is sspopchk x5. Due to unusual encoding
> for both rs1 and rs2 from space bitfield, this required a new codec.
>
> Signed-off-by: Deepak Gupta <debug@rivosinc.com>

Acked-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  disas/riscv.c | 19 ++++++++++++++++++-
>  disas/riscv.h |  1 +
>  2 files changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/disas/riscv.c b/disas/riscv.c
> index 5eafb7f7f3..6e9ba42edd 100644
> --- a/disas/riscv.c
> +++ b/disas/riscv.c
> @@ -980,6 +980,8 @@ typedef enum {
>      rv_op_ssrdp = 949,
>      rv_op_ssamoswap_w = 950,
>      rv_op_ssamoswap_d = 951,
> +    rv_op_c_sspush = 952,
> +    rv_op_c_sspopchk = 953,
>  } rv_op;
>
>  /* register names */
> @@ -2244,6 +2246,10 @@ const rv_opcode_data rvi_opcode_data[] = {
>      { "ssrdp", rv_codec_r, rv_fmt_rd, NULL, 0, 0, 0 },
>      { "ssamoswap.w", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 },
>      { "ssamoswap.d", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 },
> +    { "c.sspush", rv_codec_cmop_ss, rv_fmt_rs2, NULL, rv_op_sspush,
> +      rv_op_sspush, 0 },
> +    { "c.sspopchk", rv_codec_cmop_ss, rv_fmt_rs1, NULL, rv_op_sspopchk,
> +      rv_op_sspopchk, 0 },
>  };
>
>  /* CSR names */
> @@ -2604,7 +2610,13 @@ static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
>              if (dec->cfg->ext_zcmop) {
>                  if ((((inst >> 2) & 0b111111) == 0b100000) &&
>                      (((inst >> 11) & 0b11) == 0b0)) {
> -                    op = rv_c_mop_1 + ((inst >> 8) & 0b111);
> +                    unsigned int cmop_code = 0;
> +                    cmop_code = ((inst >> 8) & 0b111);
> +                    op = rv_c_mop_1 + cmop_code;
> +                    if (dec->cfg->ext_zicfiss) {
> +                        op = (cmop_code == 0) ? rv_op_c_sspush : op;
> +                        op = (cmop_code == 2) ? rv_op_c_sspopchk : op;
> +                    }
>                      break;
>                  }
>              }
> @@ -4923,6 +4935,11 @@ static void decode_inst_operands(rv_decode *dec, rv_isa isa)
>      case rv_codec_lp:
>          dec->imm = operand_lpl(inst);
>          break;
> +    case rv_codec_cmop_ss:
> +        dec->rd = rv_ireg_zero;
> +        dec->rs1 = dec->rs2 = operand_crs1(inst);
> +        dec->imm = 0;
> +        break;
>      };
>  }
>
> diff --git a/disas/riscv.h b/disas/riscv.h
> index 4895c5a301..6a3b371cd3 100644
> --- a/disas/riscv.h
> +++ b/disas/riscv.h
> @@ -167,6 +167,7 @@ typedef enum {
>      rv_codec_r2_imm2_imm5,
>      rv_codec_fli,
>      rv_codec_lp,
> +    rv_codec_cmop_ss,
>  } rv_codec;
>
>  /* structures */
> --
> 2.44.0
>
>


  reply	other threads:[~2024-08-29  0:07 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-28 17:47 [PATCH v11 00/20] riscv support for control flow integrity extensions Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 01/20] target/riscv: expose *envcfg csr and priv to qemu-user as well Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 02/20] target/riscv: Add zicfilp extension Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 03/20] target/riscv: Introduce elp state and enabling controls for zicfilp Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 04/20] target/riscv: save and restore elp state on priv transitions Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 05/20] target/riscv: additional code information for sw check Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 06/20] target/riscv: tracking indirect branches (fcfi) for zicfilp Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 07/20] target/riscv: zicfilp `lpad` impl and branch tracking Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 08/20] disas/riscv: enable `lpad` disassembly Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 09/20] target/riscv: Expose zicfilp extension as a cpu property Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 10/20] target/riscv: Add zicfiss extension Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 11/20] target/riscv: introduce ssp and enabling controls for zicfiss Deepak Gupta
2024-08-28 23:16   ` Alistair Francis
2024-08-28 17:47 ` [PATCH v11 12/20] target/riscv: tb flag for shadow stack instructions Deepak Gupta
2024-08-29  1:34   ` Richard Henderson
2024-08-28 17:47 ` [PATCH v11 13/20] target/riscv: mmu changes for zicfiss shadow stack protection Deepak Gupta
2024-08-28 23:29   ` Alistair Francis
2024-08-28 23:45     ` Deepak Gupta
2024-08-29  0:03       ` Alistair Francis
2024-08-29  0:17         ` Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 14/20] target/riscv: AMO operations always raise store/AMO fault Deepak Gupta
2024-08-28 23:33   ` Alistair Francis
2024-08-28 17:47 ` [PATCH v11 15/20] target/riscv: update `decode_save_opc` to store extra word2 Deepak Gupta
2024-08-28 23:36   ` Alistair Francis
2024-08-28 17:47 ` [PATCH v11 16/20] target/riscv: implement zicfiss instructions Deepak Gupta
2024-08-29  0:01   ` Alistair Francis
2024-08-29  0:06     ` Deepak Gupta
2024-08-29  0:07       ` Alistair Francis
2024-08-29  0:15         ` Deepak Gupta
2024-08-28 17:47 ` [PATCH v11 17/20] target/riscv: compressed encodings for sspush and sspopchk Deepak Gupta
2024-08-29  0:03   ` Alistair Francis
2024-08-28 17:47 ` [PATCH v11 18/20] disas/riscv: enable disassembly for zicfiss instructions Deepak Gupta
2024-08-29  0:04   ` Alistair Francis
2024-08-28 17:47 ` [PATCH v11 19/20] disas/riscv: enable disassembly for compressed sspush/sspopchk Deepak Gupta
2024-08-29  0:06   ` Alistair Francis [this message]
2024-08-28 17:47 ` [PATCH v11 20/20] target/riscv: Expose zicfiss extension as a cpu property Deepak Gupta
2024-08-29  0:06   ` Alistair Francis
2024-08-28 17:50 ` [PATCH v11 00/20] riscv support for control flow integrity extensions Deepak Gupta

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=CAKmqyKOecAQ2MTPnsw1_tPTRF++QbCBGOEDKKUMM9R3HUvqdRw@mail.gmail.com \
    --to=alistair23@gmail.com \
    --cc=Alistair.Francis@wdc.com \
    --cc=andy.chiu@sifive.com \
    --cc=bmeng.cn@gmail.com \
    --cc=dbarboza@ventanamicro.com \
    --cc=debug@rivosinc.com \
    --cc=jim.shu@sifive.com \
    --cc=kito.cheng@sifive.com \
    --cc=laurent@vivier.eu \
    --cc=liwei1518@gmail.com \
    --cc=palmer@dabbelt.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-riscv@nongnu.org \
    --cc=zhiwei_liu@linux.alibaba.com \
    /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).