get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.1/patches/2220784/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2220784,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2220784/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/kvm-riscv/patch/20260407-riscv_insn_table-v1-3-54b4736a1e77@gmail.com/",
    "project": {
        "id": 70,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/70/?format=api",
        "name": "Linux KVM RISC-V",
        "link_name": "kvm-riscv",
        "list_id": "kvm-riscv.lists.infradead.org",
        "list_email": "kvm-riscv@lists.infradead.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260407-riscv_insn_table-v1-3-54b4736a1e77@gmail.com>",
    "date": "2026-04-08T04:45:51",
    "name": "[03/16] riscv: kgdb: Use generated instruction headers",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "4fabb5d603858d96d9639395dc60b51518acdfb9",
    "submitter": {
        "id": 92521,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/92521/?format=api",
        "name": "Charlie Jenkins via B4 Relay",
        "email": "devnull+thecharlesjenkins.gmail.com@kernel.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/kvm-riscv/patch/20260407-riscv_insn_table-v1-3-54b4736a1e77@gmail.com/mbox/",
    "series": [
        {
            "id": 499063,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/499063/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/kvm-riscv/list/?series=499063",
            "date": "2026-04-08T04:45:48",
            "name": "riscv: Generate riscv instruction functions",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/499063/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2220784/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2220784/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "\n <kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=NQzLprI/;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=GNN08Dqy;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fr9Wq6fDGz1yDG\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 08 Apr 2026 14:46:44 +1000 (AEST)",
            "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wAKoM-00000008Egs-3EnP;\n\tWed, 08 Apr 2026 04:46:42 +0000",
            "from sea.source.kernel.org ([172.234.252.31])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wAKoI-00000008Ea2-0SLa;\n\tWed, 08 Apr 2026 04:46:40 +0000",
            "from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n\tby sea.source.kernel.org (Postfix) with ESMTP id 9ADC9444F6;\n\tWed,  8 Apr 2026 04:46:36 +0000 (UTC)",
            "by smtp.kernel.org (Postfix) with ESMTPS id 70BEBC19424;\n\tWed,  8 Apr 2026 04:46:36 +0000 (UTC)",
            "from aws-us-west-2-korg-lkml-1.web.codeaurora.org\n (localhost.localdomain [127.0.0.1])\n\tby smtp.lore.kernel.org (Postfix) with ESMTP id 6838DFD5F75;\n\tWed,  8 Apr 2026 04:46:36 +0000 (UTC)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Reply-To:List-Subscribe:List-Help:\n\tList-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:\n\tMessage-Id:MIME-Version:Subject:Date:From:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=qkh6ZLHdxsYZ1qe4asBwZa2a6WKxOu/x9sVx7fSRXeM=; b=NQzLprI/N/HZt4\n\t/9cngSaDJMRuXn4xoI16E25QHWhw2PQ2XT2XE+mXJUTQkpRGEjP22M60G8TxoJgaT2uAe3ZMPwbmb\n\tHkZ27UhXoFVKSJ8iZkLCdGRLQxQG/IAkQMP0NU/WhKJ8NcrmP8pLYVbwCKU8fZdf9Aff31vTdmVPW\n\tXkWjt0ThkIN0g47nwWHVs2ymQBbyX1FI+5XTbyX7hD8RePBYZfsssdK00Q5i7UsINaoc0eABcCNF8\n\tQf4Sc1bG1RTUT1Y91Xzkk2o2ADqzdfXjLE55tDttRsnMmUNIDt10Ww2Vl86F2k5WLiugYbsYP182h\n\t0QqgavlME5kQtuCBqh2A==;",
            "v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1775623596;\n\tbh=28Pl+OELVDYrjnKHvpqyk9Nc5veDPYZ4OMPdmZMvW7E=;\n\th=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From;\n\tb=GNN08DqyJ11gSxnD3eaQxOYp3CWGQGKpfPNAszmFVzKImsJMTa69z+zbJDChRfm+P\n\t /ZgTJThtkkelUh2Ap2pvGpqJFjYO76Ob7MXcxwVJPR2TnqoLysVQXNbXk9eRxBDsNS\n\t COwnDJj0ejmVnvyRc3/si1Ra+u3PIg7xeekAGlYEfYj+fPbeGn0aww3aEr+AqkqZBs\n\t dn1FKdltjmPDI8NAiiNY7JzfxgiKvJyDhV7ZfwFKCbWG3peYCA9pvOFyIGo2Dr0qk4\n\t 90GiK2/F27D6jWbssQt5OzRk35xKWitKaHRk/u3Q/ZOKnYV7qNvrubBth88ktnLK03\n\t TuaaCzzGL1dyQ=="
        ],
        "From": "Charlie Jenkins via B4 Relay\n <devnull+thecharlesjenkins.gmail.com@kernel.org>",
        "Date": "Tue, 07 Apr 2026 21:45:51 -0700",
        "Subject": "[PATCH 03/16] riscv: kgdb: Use generated instruction headers",
        "MIME-Version": "1.0",
        "Message-Id": "<20260407-riscv_insn_table-v1-3-54b4736a1e77@gmail.com>",
        "References": "<20260407-riscv_insn_table-v1-0-54b4736a1e77@gmail.com>",
        "In-Reply-To": "<20260407-riscv_insn_table-v1-0-54b4736a1e77@gmail.com>",
        "To": "Paul Walmsley <pjw@kernel.org>, Palmer Dabbelt <palmer@dabbelt.com>,\n Alexandre Ghiti <alex@ghiti.fr>, Anup Patel <anup@brainfault.org>,\n Atish Patra <atish.patra@linux.dev>, Conor Dooley <conor@kernel.org>,\n Paolo Bonzini <pbonzini@redhat.com>,\n Andrew Morton <akpm@linux-foundation.org>, Shuah Khan <shuah@kernel.org>",
        "Cc": "linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org,\n kvm@vger.kernel.org, kvm-riscv@lists.infradead.org,\n linux-kselftest@vger.kernel.org,\n Charlie Jenkins <thecharlesjenkins@gmail.com>",
        "X-Mailer": "b4 0.14.3",
        "X-Developer-Signature": "v=1; a=ed25519-sha256; t=1775623594; l=7745;\n i=thecharlesjenkins@gmail.com; s=2026030; h=from:subject:message-id;\n bh=wLizDAcF3npqRdFIpBhaPhxXS6KiGYMhVbuxqiXTwRk=;\n b=ULkzl8mpC5vn084DwHwkXEygvEG8yVKFDX4RkJnxoCg2v5M1nwXI5/2tKWLCId8vNwihiojjR\n qy7/I6NRim+AGHMDsTRwrA8Glh20aIIJLuZCJ2UZKbKLgEYdkWmgRCu",
        "X-Developer-Key": "i=thecharlesjenkins@gmail.com; a=ed25519;\n pk=vpF2USrG+aB6CTbSt34rzJKsAVe/l+GAXo1IomCMETk=",
        "X-Endpoint-Received": "by B4 Relay for thecharlesjenkins@gmail.com/2026030\n with auth_id=663",
        "X-Original-From": "Charlie Jenkins <thecharlesjenkins@gmail.com>",
        "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ",
        "X-CRM114-CacheID": "sfid-20260407_214638_215153_93B30997 ",
        "X-CRM114-Status": "GOOD (  17.08  )",
        "X-Spam-Score": "-0.0 (/)",
        "X-Spam-Report": "Spam detection software,\n running on the system \"bombadil.infradead.org\",\n has NOT identified this incoming email as spam.  The original\n message has been attached to this so you can view it or label\n similar future email.  If you have any questions, see\n the administrator of that system for details.\n Content preview:  From: Charlie Jenkins Migrate the code that is decoding\n instructions\n    for the use of kgdb single stepping to use the generated instruction\n headers\n    instead of the hand-written instruction functions. Signed-off-by: Charlie\n    Jenkins\n Content analysis details:   (-0.0 points, 5.0 required)\n  pts rule name              description\n ---- ----------------------\n --------------------------------------------------\n -0.0 SPF_PASS               SPF: sender matches SPF record\n  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record\n -0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from\n                             envelope-from domain\n  0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n not necessarily valid\n -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from\n author's\n                             domain\n -0.1 DKIM_VALID             Message has at least one valid DKIM or DK\n signature\n -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n                             [score: 0.0000]\n  0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE: The\n                             query to Validity was blocked.  See\n                             https://knowledge.validity.com/hc/en-us/articles/20961730681243\n                              for more information.\n                         [172.234.252.31 listed in\n sa-trusted.bondedsender.org]\n  0.0 RCVD_IN_VALIDITY_SAFE_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to\n                              Validity was blocked.  See\n                             https://knowledge.validity.com/hc/en-us/articles/20961730681243\n                              for more information.\n                             [172.234.252.31 listed in sa-accredit.habeas.com]\n  0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to\n                              Validity was blocked.  See\n                             https://knowledge.validity.com/hc/en-us/articles/20961730681243\n                              for more information.\n                            [172.234.252.31 listed in\n bl.score.senderscore.com]\n  2.1 FREEMAIL_FORGED_REPLYTO Freemail in Reply-To, but not From",
        "X-BeenThere": "kvm-riscv@lists.infradead.org",
        "X-Mailman-Version": "2.1.34",
        "Precedence": "list",
        "List-Id": "<kvm-riscv.lists.infradead.org>",
        "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/kvm-riscv>,\n <mailto:kvm-riscv-request@lists.infradead.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.infradead.org/pipermail/kvm-riscv/>",
        "List-Post": "<mailto:kvm-riscv@lists.infradead.org>",
        "List-Help": "<mailto:kvm-riscv-request@lists.infradead.org?subject=help>",
        "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/kvm-riscv>,\n <mailto:kvm-riscv-request@lists.infradead.org?subject=subscribe>",
        "Reply-To": "thecharlesjenkins@gmail.com",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Sender": "\"kvm-riscv\" <kvm-riscv-bounces@lists.infradead.org>",
        "Errors-To": "kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org"
    },
    "content": "From: Charlie Jenkins <thecharlesjenkins@gmail.com>\n\nMigrate the code that is decoding instructions for the use of kgdb\nsingle stepping to use the generated instruction headers instead of the\nhand-written instruction functions.\n\nSigned-off-by: Charlie Jenkins <thecharlesjenkins@gmail.com>\n\n---\n\nI tested this again by comparing the original get_step_address()\nfunction with this new version and input all possible 32 bit numbers and\nchecked that the next_addr was the same in every case.\n\nThis is the code I used:\n\nvoid check_step()\n{\n\tfor (unsigned long opcode = 0; opcode < ((1ULL << 32) - 1); opcode++) {\n\t\tunsigned long next_addr, next_addr2;\n\t\tget_step_address(opcode, &next_addr);\n\t\tget_step_address2(opcode, &next_addr2);\n\t\tif (next_addr != next_addr2) {\n\t\t\tprintf(\"opcode: %lu -> %lu != %lu\\n\", opcode, next_addr, next_addr2);\n\t\t}\n\t}\n}\n---\n arch/riscv/include/asm/insn.h |  21 +++++++++\n arch/riscv/kernel/kgdb.c      | 102 ++++++++++++++++--------------------------\n 2 files changed, 60 insertions(+), 63 deletions(-)",
    "diff": "diff --git a/arch/riscv/include/asm/insn.h b/arch/riscv/include/asm/insn.h\nindex d0e137f9bcd7..c808e1e15192 100644\n--- a/arch/riscv/include/asm/insn.h\n+++ b/arch/riscv/include/asm/insn.h\n@@ -514,4 +514,25 @@ static __always_inline bool riscv_insn_is_branch(u32 code)\n \n #define RVV_EXTRACT_VL_VS_WIDTH(x) RVFDQ_EXTRACT_FL_FS_WIDTH(x)\n \n+static inline unsigned long riscv_insn_reg_get_val(unsigned long *regs, u32 index)\n+{\n+\t/* register 0 is always 0 and not stored in the register struct */\n+\treturn index ? *(regs + index) : 0;\n+}\n+\n+#define riscv_insn_branch(_insn, regs_ptr, _opcode, _pc, _comparison, type)     \\\n+\t({                                                                      \\\n+\t\tunsigned long _ret;                                             \\\n+\t\tif ((type)riscv_insn_reg_get_val(                               \\\n+\t\t\t    regs_ptr,                                           \\\n+\t\t\t    riscv_insn_##_insn##_extract_xs1(_opcode))          \\\n+\t\t\t    _comparison(type) riscv_insn_reg_get_val(           \\\n+\t\t\t\t    regs_ptr,                                   \\\n+\t\t\t\t    riscv_insn_##_insn##_extract_xs2(_opcode))) \\\n+\t\t\t_ret = riscv_insn_##_insn##_extract_imm(_opcode);       \\\n+\t\telse                                                            \\\n+\t\t\t_ret = _pc + 4;                                         \\\n+\t\t_ret;                                                           \\\n+\t})\n+\n #endif /* _ASM_RISCV_INSN_H */\ndiff --git a/arch/riscv/kernel/kgdb.c b/arch/riscv/kernel/kgdb.c\nindex 15fec5d1e6de..dd878ba6b47e 100644\n--- a/arch/riscv/kernel/kgdb.c\n+++ b/arch/riscv/kernel/kgdb.c\n@@ -23,97 +23,73 @@ enum {\n static unsigned long stepped_address;\n static unsigned int stepped_opcode;\n \n-static int decode_register_index(unsigned long opcode, int offset)\n-{\n-\treturn (opcode >> offset) & 0x1F;\n-}\n-\n-static int decode_register_index_short(unsigned long opcode, int offset)\n-{\n-\treturn ((opcode >> offset) & 0x7) + 8;\n-}\n-\n-/* Calculate the new address for after a step */\n static int get_step_address(struct pt_regs *regs, unsigned long *next_addr)\n {\n \tunsigned long pc = regs->epc;\n \tunsigned long *regs_ptr = (unsigned long *)regs;\n-\tunsigned int rs1_num, rs2_num;\n+\tunsigned int rs1_num;\n \tint op_code;\n \n \tif (get_kernel_nofault(op_code, (void *)pc))\n \t\treturn -EINVAL;\n+\n \tif ((op_code & __INSN_LENGTH_MASK) != __INSN_LENGTH_GE_32) {\n-\t\tif (riscv_insn_is_c_jalr(op_code) ||\n-\t\t    riscv_insn_is_c_jr(op_code)) {\n-\t\t\trs1_num = decode_register_index(op_code, RVC_C2_RS1_OPOFF);\n-\t\t\t*next_addr = regs_ptr[rs1_num];\n-\t\t} else if (riscv_insn_is_c_j(op_code) ||\n-\t\t\t   riscv_insn_is_c_jal(op_code)) {\n-\t\t\t*next_addr = RVC_EXTRACT_JTYPE_IMM(op_code) + pc;\n+\t\tif (riscv_insn_is_c_jalr(op_code)) {\n+\t\t\t*next_addr = regs_ptr[riscv_insn_c_jalr_extract_xs1(op_code)];\n+\t\t} else if (riscv_insn_is_c_jr(op_code)) {\n+\t\t\t*next_addr = regs_ptr[riscv_insn_c_jr_extract_xs1(op_code)];\n+\t\t} else if (riscv_insn_is_c_j(op_code)) {\n+\t\t\t*next_addr = riscv_insn_c_j_extract_imm(op_code) + pc;\n+\t\t} else if (riscv_insn_is_c_jal(op_code)) {\n+\t\t\t*next_addr = riscv_insn_c_jal_extract_imm(op_code) + pc;\n \t\t} else if (riscv_insn_is_c_beqz(op_code)) {\n-\t\t\trs1_num = decode_register_index_short(op_code,\n-\t\t\t\t\t\t\t      RVC_C1_RS1_OPOFF);\n-\t\t\tif (!rs1_num || regs_ptr[rs1_num] == 0)\n-\t\t\t\t*next_addr = RVC_EXTRACT_BTYPE_IMM(op_code) + pc;\n+\t\t\trs1_num = riscv_insn_c_beqz_extract_xs1(op_code);\n+\t\t\tif (regs_ptr[8 + rs1_num] == 0)\n+\t\t\t\t*next_addr = riscv_insn_c_beqz_extract_imm(op_code) + pc;\n \t\t\telse\n \t\t\t\t*next_addr = pc + 2;\n \t\t} else if (riscv_insn_is_c_bnez(op_code)) {\n-\t\t\trs1_num =\n-\t\t\t    decode_register_index_short(op_code, RVC_C1_RS1_OPOFF);\n-\t\t\tif (rs1_num && regs_ptr[rs1_num] != 0)\n-\t\t\t\t*next_addr = RVC_EXTRACT_BTYPE_IMM(op_code) + pc;\n+\t\t\trs1_num = riscv_insn_c_bnez_extract_xs1(op_code);\n+\t\t\tif (regs_ptr[8 + rs1_num] != 0)\n+\t\t\t\t*next_addr = riscv_insn_c_bnez_extract_imm(op_code) + pc;\n \t\t\telse\n \t\t\t\t*next_addr = pc + 2;\n \t\t} else {\n \t\t\t*next_addr = pc + 2;\n \t\t}\n \t} else {\n-\t\tif ((op_code & __INSN_OPCODE_MASK) == __INSN_BRANCH_OPCODE) {\n-\t\t\tbool result = false;\n-\t\t\tlong imm = RV_EXTRACT_BTYPE_IMM(op_code);\n-\t\t\tunsigned long rs1_val = 0, rs2_val = 0;\n-\n-\t\t\trs1_num = decode_register_index(op_code, RVG_RS1_OPOFF);\n-\t\t\trs2_num = decode_register_index(op_code, RVG_RS2_OPOFF);\n-\t\t\tif (rs1_num)\n-\t\t\t\trs1_val = regs_ptr[rs1_num];\n-\t\t\tif (rs2_num)\n-\t\t\t\trs2_val = regs_ptr[rs2_num];\n-\n-\t\t\tif (riscv_insn_is_beq(op_code))\n-\t\t\t\tresult = (rs1_val == rs2_val) ? true : false;\n-\t\t\telse if (riscv_insn_is_bne(op_code))\n-\t\t\t\tresult = (rs1_val != rs2_val) ? true : false;\n-\t\t\telse if (riscv_insn_is_blt(op_code))\n-\t\t\t\tresult =\n-\t\t\t\t    ((long)rs1_val <\n-\t\t\t\t     (long)rs2_val) ? true : false;\n-\t\t\telse if (riscv_insn_is_bge(op_code))\n-\t\t\t\tresult =\n-\t\t\t\t    ((long)rs1_val >=\n-\t\t\t\t     (long)rs2_val) ? true : false;\n-\t\t\telse if (riscv_insn_is_bltu(op_code))\n-\t\t\t\tresult = (rs1_val < rs2_val) ? true : false;\n-\t\t\telse if (riscv_insn_is_bgeu(op_code))\n-\t\t\t\tresult = (rs1_val >= rs2_val) ? true : false;\n-\t\t\tif (result)\n-\t\t\t\t*next_addr = imm + pc;\n-\t\t\telse\n-\t\t\t\t*next_addr = pc + 4;\n+\t\tif (riscv_insn_is_beq(op_code)) {\n+\t\t\t*next_addr = riscv_insn_branch(beq, regs_ptr, op_code,\n+\t\t\t\t\t\t       pc, ==, unsigned long);\n+\t\t} else if (riscv_insn_is_bne(op_code)) {\n+\t\t\t*next_addr = riscv_insn_branch(bne, regs_ptr, op_code,\n+\t\t\t\t\t\t       pc, !=, unsigned long);\n+\t\t} else if (riscv_insn_is_blt(op_code)) {\n+\t\t\t*next_addr = riscv_insn_branch(blt, regs_ptr, op_code,\n+\t\t\t\t\t\t       pc, <, long);\n+\t\t} else if (riscv_insn_is_bge(op_code)) {\n+\t\t\t*next_addr = riscv_insn_branch(bge, regs_ptr, op_code,\n+\t\t\t\t\t\t       pc, >=, long);\n+\t\t} else if (riscv_insn_is_bltu(op_code)) {\n+\t\t\t*next_addr = riscv_insn_branch(bltu, regs_ptr, op_code,\n+\t\t\t\t\t\t       pc, <, unsigned long);\n+\t\t} else if (riscv_insn_is_bgeu(op_code)) {\n+\t\t\t*next_addr = riscv_insn_branch(bgeu, regs_ptr, op_code,\n+\t\t\t\t\t\t       pc, >=, unsigned long);\n \t\t} else if (riscv_insn_is_jal(op_code)) {\n-\t\t\t*next_addr = RV_EXTRACT_JTYPE_IMM(op_code) + pc;\n+\t\t\t*next_addr = riscv_insn_jal_extract_imm(op_code) + pc;\n \t\t} else if (riscv_insn_is_jalr(op_code)) {\n-\t\t\trs1_num = decode_register_index(op_code, RVG_RS1_OPOFF);\n+\t\t\trs1_num = riscv_insn_jalr_extract_xs1(op_code);\n \t\t\tif (rs1_num)\n-\t\t\t\t*next_addr = ((unsigned long *)regs)[rs1_num];\n-\t\t\t*next_addr += RV_EXTRACT_ITYPE_IMM(op_code);\n+\t\t\t\t*next_addr = regs_ptr[rs1_num];\n+\t\t\t*next_addr += riscv_insn_jalr_extract_imm(op_code);\n \t\t} else if (riscv_insn_is_sret(op_code)) {\n \t\t\t*next_addr = pc;\n \t\t} else {\n \t\t\t*next_addr = pc + 4;\n \t\t}\n \t}\n+\n \treturn 0;\n }\n \n",
    "prefixes": [
        "03/16"
    ]
}