From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dl1-f45.google.com (mail-dl1-f45.google.com [74.125.82.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF1D63E3140 for ; Tue, 30 Jun 2026 06:17:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782800276; cv=none; b=sK+7MyZ+Y3ASSaVQC/OpIXw4HkD6IPR8DZNt/2p7tlFIdeBs0V/9k6ZPXpr1TVUhUQuHvQkwgVqztObITxvUpMAr8awNF782tKBYUOvFcfGxtUN4QjTeizH1ZJILeAtutkdpqF+yFRsZ82xvk9Ur48PgCM8c0EoCUrXi3sWnoJE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782800276; c=relaxed/simple; bh=rtzEqKJ3lSJLlG6ekherfDyGEniFcemmWjlnIRujPjA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=U1spOkZToGH2g2HE1XAjsU0AVWyh/beBfo/jE2msrRH5E60c0EJYpHmQoCZZ24DinJMUXqz3vgZ20waR0LM6EfgJnYQjmlPZCBR7bDrQCRbGft552ZsCNPF4Gemg6RcSDHfhoCSD9boAX6+aHOyvHvqrWm/GwrziBZUvr/DQ0UU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=qvjVcB0z; arc=none smtp.client-ip=74.125.82.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="qvjVcB0z" Received: by mail-dl1-f45.google.com with SMTP id a92af1059eb24-137dd4cc208so293950c88.1 for ; Mon, 29 Jun 2026 23:17:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782800274; x=1783405074; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=cJsH3I+i++RnxS0RIEDx7KJuxyJs96diVU6IFO/NzsQ=; b=qvjVcB0zNV2gVuYWiLsLScenPJiNkgtMNLoyLnXpp7wL4h1PxQ90cQCev+5OlsPPv0 Et5Zlv4Rk92EFgVPrdiT6Wgg8iOwVTfAol0zuxn4vciOGtIBkDJDcOl7NvInbU6atEq/ 5x2wRtxFwiaVM8IkTP7JIgi4g0ut5y1bAblPTyvWDuXbNbbLsLj6kQyhT8WDDXbjMHD7 EvWGjBjsolTYj1PqpmuLyjEAm1eLVdxXp6ZLiiLj4L+o5tTBcZNHM1y+K4uZaQSWf9mJ E4FhG4tYT0YSy/jU+xwTSKhTDnM6bqwd6w5sCn5nRJhgR45P1WCrDQf1mXAPCrb0K2gw GBMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782800274; x=1783405074; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cJsH3I+i++RnxS0RIEDx7KJuxyJs96diVU6IFO/NzsQ=; b=DjRNgM7+MXw/HTPtIYHh8qZwSoF68U5LnBwAiyxEndkIKOZ7LDYag2cEQekd/JQv/H TTLuIRlfrR2B+TVHbUrININ6qaDxfT2Re60x5AGkk6BMry4b2rn6g5gYOVmXslsPHK0v g66vrkFLUh4ZceALXxaaBHV0rpyHwwRDbrqntWEX/f7Q6bi6viNMsSte8QRBN2URAxav /NVbJP9L5p7/mAEXk/hQ8vARstQXR+bhtzTVmNfwfqX7BebXvqWW6mOALrv6/Eh22Xzm 3HZB6/oyIPj4xSwH2DcEwTD2a+H/E5e9ip44n90sbbwFcTChHexWvX3Ca/yzXu/kFiFq 6kaw== X-Forwarded-Encrypted: i=1; AFNElJ9jyi3eQ03QuubtZJg7DVEzmjWM/cC6LNnIDnkEimpYF2+HnktC0/j3tYLFkGHW7f6fb6MeBKX751VfXhg=@vger.kernel.org X-Gm-Message-State: AOJu0Yw6n07NsFBrbn10V2jRPi/pNsN6Wenc6EaDAPEFmWG7tylzpsAV QlMWfgtv/S3KmERK/hug1m7ETdjFhWgrcYpa2HhQyrKrxO9LG0CvvWaa X-Gm-Gg: AfdE7ckIN3j8oVJs/22qHyZPgDl1STKG9U4uCOYz5/t24cy64Z3K7V0C2XklHBTNKcZ m9mefAV9P45KgFcKJ7Df2V/eu9XxpvELPpTwRtCJkuNmSnc2G/Ku7bS6K1ZDVfUzSjActnFERoe aMZzqOLBC26RiGW+OoRQZqqDMTurGKLP0UuQYzHmrSs6XHbDlAW9qENv4dVdqBjpxxSubT4YqML tjnqV+deOvySi+wAmaK7TB6xPvgK4ZkQywruKKdboOrhImH2ad3v93jXjFljd/jSvhkAC2c2b/F lurnjfIPRbZ/YPIoR8s/S8gzzaWTJak8+kMOR9CpomQ53Z02d7SPWEog7DL4iL+3+W5quSTmpdr 3wa9/JLmBqCefiCqwgqRyLnC+FonkwTzV20dvCp96D8dos8PbaTzthg5q1K7S3BTz+2dQd+GYgt /QU1Uep9nHhMovXI4+oACLW9jFx5OlePUX X-Received: by 2002:a05:7022:206:b0:139:fe25:a53 with SMTP id a92af1059eb24-13b2e32bb8fmr435157c88.21.1782800273787; Mon, 29 Jun 2026 23:17:53 -0700 (PDT) Received: from blinky ([2601:647:6700:64d0::94ac]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13b2abbba82sm4607658c88.14.2026.06.29.23.17.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jun 2026 23:17:53 -0700 (PDT) Date: Mon, 29 Jun 2026 23:17:50 -0700 From: Charlie Jenkins To: Jesse T Cc: Paul Walmsley , Palmer Dabbelt , Nam Cao , Alexandre Ghiti , Anup Patel , Atish Patra , Conor Dooley , Paolo Bonzini , Andrew Morton , Shuah Khan , Radim =?utf-8?B?S3LEjW3DocWZ?= , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH v2 08/16] riscv: kvm: Use generated instruction headers for csr code Message-ID: References: <20260621-riscv_insn_table-v2-0-7f0810ee2274@gmail.com> <20260621-riscv_insn_table-v2-8-7f0810ee2274@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Mon, Jun 29, 2026 at 04:25:53PM -0400, Jesse T wrote: > On Mon, Jun 22, 2026 at 1:08 AM Charlie Jenkins via B4 Relay > wrote: > > > > From: Charlie Jenkins > > > > Migrate the csr parsing code to use the generated instruction headers > > instead of the hand-written instruction composition functions. > > > > Signed-off-by: Charlie Jenkins > > > > --- > > > > This is a simple transformation that I have again validated through > > brute force. > > --- > > arch/riscv/kvm/vcpu_insn.c | 47 +++++++++++++++++++++++----------------------- > > 1 file changed, 24 insertions(+), 23 deletions(-) > > > > diff --git a/arch/riscv/kvm/vcpu_insn.c b/arch/riscv/kvm/vcpu_insn.c > > index f09f9251d1f0..8ccf6ec722f0 100644 > > --- a/arch/riscv/kvm/vcpu_insn.c > > +++ b/arch/riscv/kvm/vcpu_insn.c > > @@ -146,43 +146,44 @@ int kvm_riscv_vcpu_csr_return(struct kvm_vcpu *vcpu, struct kvm_run *run) > > > > static int csr_insn(struct kvm_vcpu *vcpu, struct kvm_run *run, ulong insn) > > { > > + #define GET_REG(_rd) (*((unsigned long *)(&vcpu->arch.guest_context) + _rd)) > > + > > IMO it would be better to make this a static inline function, otherwise. Yeah that's fair, I'll make that change! > > Reviewed-by: Jesse Taube > > > int i, rc = KVM_INSN_ILLEGAL_TRAP; > > - unsigned int csr_num = insn >> SH_RS2; > > - unsigned int rs1_num = (insn >> SH_RS1) & MASK_RX; > > - ulong rs1_val = GET_RS1(insn, &vcpu->arch.guest_context); > > + unsigned int csr_num; > > const struct csr_func *tcfn, *cfn = NULL; > > ulong val = 0, wr_mask = 0, new_val = 0; > > > > /* Decode the CSR instruction */ > > - switch (GET_FUNCT3(insn)) { > > - case GET_FUNCT3(INSN_MATCH_CSRRW): > > + if (riscv_insn_is_csrrw(insn)) { > > wr_mask = -1UL; > > - new_val = rs1_val; > > - break; > > - case GET_FUNCT3(INSN_MATCH_CSRRS): > > - wr_mask = rs1_val; > > + new_val = GET_REG(riscv_insn_csrrw_extract_xs1(insn)); > > + csr_num = riscv_insn_csrrw_extract_csr(insn); > > + } else if (riscv_insn_is_csrrs(insn)) { > > + wr_mask = GET_REG(riscv_insn_csrrs_extract_xs1(insn)); > > new_val = -1UL; > > - break; > > - case GET_FUNCT3(INSN_MATCH_CSRRC): > > - wr_mask = rs1_val; > > + csr_num = riscv_insn_csrrs_extract_csr(insn); > > + } else if (riscv_insn_is_csrrc(insn)) { > > + wr_mask = GET_REG(riscv_insn_csrrs_extract_xs1(insn)); > > new_val = 0; > > - break; > > - case GET_FUNCT3(INSN_MATCH_CSRRWI): > > + csr_num = riscv_insn_csrrc_extract_csr(insn); > > + } else if (riscv_insn_is_csrrwi(insn)) { > > wr_mask = -1UL; > > - new_val = rs1_num; > > - break; > > - case GET_FUNCT3(INSN_MATCH_CSRRSI): > > - wr_mask = rs1_num; > > + new_val = riscv_insn_csrrwi_extract_imm(insn); > > + csr_num = riscv_insn_csrrwi_extract_csr(insn); > > + } else if (riscv_insn_is_csrrsi(insn)) { > > + wr_mask = riscv_insn_csrrwi_extract_imm(insn); > > new_val = -1UL; > > - break; > > - case GET_FUNCT3(INSN_MATCH_CSRRCI): > > - wr_mask = rs1_num; > > + csr_num = riscv_insn_csrrsi_extract_csr(insn); > > + } else if (riscv_insn_is_csrrci(insn)) { > > + wr_mask = GET_REG(riscv_insn_csrrwi_extract_imm(insn)); > > new_val = 0; > > - break; > > - default: > > + csr_num = riscv_insn_csrrwi_extract_csr(insn); > > + } else { > > return rc; > > } > > > > + #undef GET_REG > > + > > /* Save instruction decode info */ > > vcpu->arch.csr_decode.insn = insn; > > vcpu->arch.csr_decode.return_handled = 0; > > > > -- > > 2.54.0 > > > > > > > > _______________________________________________ > > linux-riscv mailing list > > linux-riscv@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-riscv From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C1569C43458 for ; Tue, 30 Jun 2026 06:18:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=zQvG+0v/80Bu4qc7h1oF3dJU2Bo7w9ykk6q7tXrGsH4=; b=R9ZX2pQCgsq5y4 LP5egmHIzhcWAVgg/4/HbcyD8pJUajMMkgjHm01aWBUvYbFWfbgoSUEqfiq3p9a9/DWL4JG0IcDqb sjodJNbfV6BFdzW0/0bFTdJ/bdzVt0L5wzZbvPM88sCLU7fimJi7xwenYK8i27tmDqKqs8854sued dM2qkFaSZ7iWZl6Ugzek+GRwyuc3vwGwigKs08Yf33c6lg/1z3DvH2B1et4kv+OLpCHuEBjoYJS4h fT81947eq9eGwEzEDLYJ6ZY39+/r8smVwsfwfTkDtCmJdFDjblkYn3YZw4VPRNQ34G5hnBxU4tqNt KlnHtkn6gHkLhWgw4vOg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1weRnB-0000000FuQC-0y8Z; Tue, 30 Jun 2026 06:17:57 +0000 Received: from mail-dl1-x1229.google.com ([2607:f8b0:4864:20::1229]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1weRn8-0000000FuPZ-35kA for linux-riscv@lists.infradead.org; Tue, 30 Jun 2026 06:17:56 +0000 Received: by mail-dl1-x1229.google.com with SMTP id a92af1059eb24-139e498e428so151779c88.1 for ; Mon, 29 Jun 2026 23:17:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782800274; x=1783405074; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=cJsH3I+i++RnxS0RIEDx7KJuxyJs96diVU6IFO/NzsQ=; b=RzR5eP48I+lmYQTagrsqr4y4VhiqeYt50iIKzN9RPhRN9lhCWNBXGgA5ERqbgaS9RU x2/UjmWiT7k0MnAFpZyDF5ACnkTACgidM86EFSalQXhV/bk2OtheVdwV7Cy3adwMFY78 Ffpb2COkVVM8NeStLeobtAUcjVRjxz/m9H3/jU54rlxDIGhCDTWiOWOqD6eKCK/rbrDy eLmeJOQ8bfdCPu7rxllLbVLf9p5AhazqnhHkiTD+apaN2S3HDrOVh+dcE03OAL5NdkGT u04uWzTWS5jTSxmQy8aAScTm7O8ojPC+hCteF2ImvP8JYrqS71Fo3But+u5Z0s8IXGnW oP4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782800274; x=1783405074; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cJsH3I+i++RnxS0RIEDx7KJuxyJs96diVU6IFO/NzsQ=; b=cHybwNIbKOT1F98umRkyULO9m0GapirdlIqGX7ttKoLMz/pXxd8+orQJLnMN2m/MPR d4aQuHd4nB7qz6aTGhKJpzXHS3nNKTnLSeFPXrJu3O9frTcnjNTLjSNM4uHlZKOluL4S NpZZf+CWNcDqOeEOohmUMZ1AGp/z20CeovcvIdkQuw/JLGxIVeAyVRpo2ejVSV6LEWcN p8SUzTCnUsWZnSadz1OULdVpqia2wIryCorn8w8dE0KVS7I5QKiZpdt0u1qVACcm4e3d 4VIyr1N4qM4obI6iaJUMw7U8Zfxc00aHJrHdWpgBmIeWJ08HhBw1CGICkiJKcarqYCLi JtLA== X-Forwarded-Encrypted: i=1; AFNElJ/Z7SZkxGFOkb7vNZy1sJjQJFv3bCzK1QoXF0JN1q+9pwh1eb+f16S7nAcl1TWbql+dURh4KQig+Pp5mA==@lists.infradead.org X-Gm-Message-State: AOJu0YzSikPk8alyCq3n7N1Lp6PUXg3aaJZHF84rj2lMc7R9BBceDFt0 f3XbMRnTcJiFg33XDNTzWNic+tGLUJJSbA5gu/Gy1ft70FkYid495nyXiIOfJw9w X-Gm-Gg: AfdE7clwVvTwE0Ho0+V815wEUlgOhzBCQcnWzwGX6CozKj5zR+IkKy/paO7V3T3K1tI JRRY/xW+nQx4KEnysO2mMLxsMJ7akLVLWE4vgSTqSSII9a8M63kYxpE//2YkZ/TS4YCYNHiseHV +MtEAdHXXRYeAidxdqXIJ2qS2YanduYuJ/4R4dfCNjjacG3yMyyYr14frFYyFSLvv6+uEJXE5Im dkHXHA+mmLsYv6mv+Z3qYJ2hfh3oIJw3LA94+bDQqvxbbJJtgdxhpmh4VwlA3xBAT/4Etc2rT4h yFoeqF5Mpp2JmPxXWl+ODHd1pvVzhhSod+vTDMJOv6Gx+LDFyDd9uI3oo2iDwWx5VObVsoskOex 2bd8IAuXxZ7iC4T9dtTBUtnPrb/wOZr1vXWuy55f/vXMLhvHpmSJ5a28ZwQCjs4Nc3L8L7whuU3 rgrHvZ4RH7oOnU2E+3kDiGBla0vWrnQki5 X-Received: by 2002:a05:7022:206:b0:139:fe25:a53 with SMTP id a92af1059eb24-13b2e32bb8fmr435157c88.21.1782800273787; Mon, 29 Jun 2026 23:17:53 -0700 (PDT) Received: from blinky ([2601:647:6700:64d0::94ac]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13b2abbba82sm4607658c88.14.2026.06.29.23.17.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jun 2026 23:17:53 -0700 (PDT) Date: Mon, 29 Jun 2026 23:17:50 -0700 From: Charlie Jenkins To: Jesse T Cc: Paul Walmsley , Palmer Dabbelt , Nam Cao , Alexandre Ghiti , Anup Patel , Atish Patra , Conor Dooley , Paolo Bonzini , Andrew Morton , Shuah Khan , Radim =?utf-8?B?S3LEjW3DocWZ?= , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH v2 08/16] riscv: kvm: Use generated instruction headers for csr code Message-ID: References: <20260621-riscv_insn_table-v2-0-7f0810ee2274@gmail.com> <20260621-riscv_insn_table-v2-8-7f0810ee2274@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260629_231754_783181_E56E27E8 X-CRM114-Status: GOOD ( 24.64 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gTW9uLCBKdW4gMjksIDIwMjYgYXQgMDQ6MjU6NTNQTSAtMDQwMCwgSmVzc2UgVCB3cm90ZToK PiBPbiBNb24sIEp1biAyMiwgMjAyNiBhdCAxOjA44oCvQU0gQ2hhcmxpZSBKZW5raW5zIHZpYSBC NCBSZWxheQo+IDxkZXZudWxsK3RoZWNoYXJsZXNqZW5raW5zLmdtYWlsLmNvbUBrZXJuZWwub3Jn PiB3cm90ZToKPiA+Cj4gPiBGcm9tOiBDaGFybGllIEplbmtpbnMgPHRoZWNoYXJsZXNqZW5raW5z QGdtYWlsLmNvbT4KPiA+Cj4gPiBNaWdyYXRlIHRoZSBjc3IgcGFyc2luZyBjb2RlIHRvIHVzZSB0 aGUgZ2VuZXJhdGVkIGluc3RydWN0aW9uIGhlYWRlcnMKPiA+IGluc3RlYWQgb2YgdGhlIGhhbmQt d3JpdHRlbiBpbnN0cnVjdGlvbiBjb21wb3NpdGlvbiBmdW5jdGlvbnMuCj4gPgo+ID4gU2lnbmVk LW9mZi1ieTogQ2hhcmxpZSBKZW5raW5zIDx0aGVjaGFybGVzamVua2luc0BnbWFpbC5jb20+Cj4g Pgo+ID4gLS0tCj4gPgo+ID4gVGhpcyBpcyBhIHNpbXBsZSB0cmFuc2Zvcm1hdGlvbiB0aGF0IEkg aGF2ZSBhZ2FpbiB2YWxpZGF0ZWQgdGhyb3VnaAo+ID4gYnJ1dGUgZm9yY2UuCj4gPiAtLS0KPiA+ ICBhcmNoL3Jpc2N2L2t2bS92Y3B1X2luc24uYyB8IDQ3ICsrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9u cygrKSwgMjMgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3Zt L3ZjcHVfaW5zbi5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9pbnNuLmMKPiA+IGluZGV4IGYwOWY5 MjUxZDFmMC4uOGNjZjZlYzcyMmYwIDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNw dV9pbnNuLmMKPiA+ICsrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfaW5zbi5jCj4gPiBAQCAtMTQ2 LDQzICsxNDYsNDQgQEAgaW50IGt2bV9yaXNjdl92Y3B1X2Nzcl9yZXR1cm4oc3RydWN0IGt2bV92 Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKQo+ID4KPiA+ICBzdGF0aWMgaW50IGNzcl9p bnNuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1biwgdWxvbmcgaW5z bikKPiA+ICB7Cj4gPiArICAgICAgICNkZWZpbmUgR0VUX1JFRyhfcmQpICgqKCh1bnNpZ25lZCBs b25nICopKCZ2Y3B1LT5hcmNoLmd1ZXN0X2NvbnRleHQpICsgX3JkKSkKPiA+ICsKPiAKPiBJTU8g aXQgd291bGQgYmUgYmV0dGVyIHRvIG1ha2UgdGhpcyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24s IG90aGVyd2lzZS4KClllYWggdGhhdCdzIGZhaXIsIEknbGwgbWFrZSB0aGF0IGNoYW5nZSEKCj4g Cj4gUmV2aWV3ZWQtYnk6IEplc3NlIFRhdWJlIDxqdGF1YmVwZUByZWRoYXQuY29tPgo+IAo+ID4g ICAgICAgICBpbnQgaSwgcmMgPSBLVk1fSU5TTl9JTExFR0FMX1RSQVA7Cj4gPiAtICAgICAgIHVu c2lnbmVkIGludCBjc3JfbnVtID0gaW5zbiA+PiBTSF9SUzI7Cj4gPiAtICAgICAgIHVuc2lnbmVk IGludCByczFfbnVtID0gKGluc24gPj4gU0hfUlMxKSAmIE1BU0tfUlg7Cj4gPiAtICAgICAgIHVs b25nIHJzMV92YWwgPSBHRVRfUlMxKGluc24sICZ2Y3B1LT5hcmNoLmd1ZXN0X2NvbnRleHQpOwo+ ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgY3NyX251bTsKPiA+ICAgICAgICAgY29uc3Qgc3RydWN0 IGNzcl9mdW5jICp0Y2ZuLCAqY2ZuID0gTlVMTDsKPiA+ICAgICAgICAgdWxvbmcgdmFsID0gMCwg d3JfbWFzayA9IDAsIG5ld192YWwgPSAwOwo+ID4KPiA+ICAgICAgICAgLyogRGVjb2RlIHRoZSBD U1IgaW5zdHJ1Y3Rpb24gKi8KPiA+IC0gICAgICAgc3dpdGNoIChHRVRfRlVOQ1QzKGluc24pKSB7 Cj4gPiAtICAgICAgIGNhc2UgR0VUX0ZVTkNUMyhJTlNOX01BVENIX0NTUlJXKToKPiA+ICsgICAg ICAgaWYgKHJpc2N2X2luc25faXNfY3NycncoaW5zbikpIHsKPiA+ICAgICAgICAgICAgICAgICB3 cl9tYXNrID0gLTFVTDsKPiA+IC0gICAgICAgICAgICAgICBuZXdfdmFsID0gcnMxX3ZhbDsKPiA+ IC0gICAgICAgICAgICAgICBicmVhazsKPiA+IC0gICAgICAgY2FzZSBHRVRfRlVOQ1QzKElOU05f TUFUQ0hfQ1NSUlMpOgo+ID4gLSAgICAgICAgICAgICAgIHdyX21hc2sgPSByczFfdmFsOwo+ID4g KyAgICAgICAgICAgICAgIG5ld192YWwgPSBHRVRfUkVHKHJpc2N2X2luc25fY3NycndfZXh0cmFj dF94czEoaW5zbikpOwo+ID4gKyAgICAgICAgICAgICAgIGNzcl9udW0gPSByaXNjdl9pbnNuX2Nz cnJ3X2V4dHJhY3RfY3NyKGluc24pOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25f aXNfY3NycnMoaW5zbikpIHsKPiA+ICsgICAgICAgICAgICAgICB3cl9tYXNrID0gR0VUX1JFRyhy aXNjdl9pbnNuX2NzcnJzX2V4dHJhY3RfeHMxKGluc24pKTsKPiA+ICAgICAgICAgICAgICAgICBu ZXdfdmFsID0gLTFVTDsKPiA+IC0gICAgICAgICAgICAgICBicmVhazsKPiA+IC0gICAgICAgY2Fz ZSBHRVRfRlVOQ1QzKElOU05fTUFUQ0hfQ1NSUkMpOgo+ID4gLSAgICAgICAgICAgICAgIHdyX21h c2sgPSByczFfdmFsOwo+ID4gKyAgICAgICAgICAgICAgIGNzcl9udW0gPSByaXNjdl9pbnNuX2Nz cnJzX2V4dHJhY3RfY3NyKGluc24pOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25f aXNfY3NycmMoaW5zbikpIHsKPiA+ICsgICAgICAgICAgICAgICB3cl9tYXNrID0gR0VUX1JFRyhy aXNjdl9pbnNuX2NzcnJzX2V4dHJhY3RfeHMxKGluc24pKTsKPiA+ICAgICAgICAgICAgICAgICBu ZXdfdmFsID0gMDsKPiA+IC0gICAgICAgICAgICAgICBicmVhazsKPiA+IC0gICAgICAgY2FzZSBH RVRfRlVOQ1QzKElOU05fTUFUQ0hfQ1NSUldJKToKPiA+ICsgICAgICAgICAgICAgICBjc3JfbnVt ID0gcmlzY3ZfaW5zbl9jc3JyY19leHRyYWN0X2NzcihpbnNuKTsKPiA+ICsgICAgICAgfSBlbHNl IGlmIChyaXNjdl9pbnNuX2lzX2NzcnJ3aShpbnNuKSkgewo+ID4gICAgICAgICAgICAgICAgIHdy X21hc2sgPSAtMVVMOwo+ID4gLSAgICAgICAgICAgICAgIG5ld192YWwgPSByczFfbnVtOwo+ID4g LSAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gLSAgICAgICBjYXNlIEdFVF9GVU5DVDMoSU5TTl9N QVRDSF9DU1JSU0kpOgo+ID4gLSAgICAgICAgICAgICAgIHdyX21hc2sgPSByczFfbnVtOwo+ID4g KyAgICAgICAgICAgICAgIG5ld192YWwgPSByaXNjdl9pbnNuX2NzcnJ3aV9leHRyYWN0X2ltbShp bnNuKTsKPiA+ICsgICAgICAgICAgICAgICBjc3JfbnVtID0gcmlzY3ZfaW5zbl9jc3Jyd2lfZXh0 cmFjdF9jc3IoaW5zbik7Cj4gPiArICAgICAgIH0gZWxzZSBpZiAocmlzY3ZfaW5zbl9pc19jc3Jy c2koaW5zbikpIHsKPiA+ICsgICAgICAgICAgICAgICB3cl9tYXNrID0gcmlzY3ZfaW5zbl9jc3Jy d2lfZXh0cmFjdF9pbW0oaW5zbik7Cj4gPiAgICAgICAgICAgICAgICAgbmV3X3ZhbCA9IC0xVUw7 Cj4gPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAtICAgICAgIGNhc2UgR0VUX0ZVTkNUMyhJ TlNOX01BVENIX0NTUlJDSSk6Cj4gPiAtICAgICAgICAgICAgICAgd3JfbWFzayA9IHJzMV9udW07 Cj4gPiArICAgICAgICAgICAgICAgY3NyX251bSA9IHJpc2N2X2luc25fY3NycnNpX2V4dHJhY3Rf Y3NyKGluc24pOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25faXNfY3NycmNpKGlu c24pKSB7Cj4gPiArICAgICAgICAgICAgICAgd3JfbWFzayA9IEdFVF9SRUcocmlzY3ZfaW5zbl9j c3Jyd2lfZXh0cmFjdF9pbW0oaW5zbikpOwo+ID4gICAgICAgICAgICAgICAgIG5ld192YWwgPSAw Owo+ID4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gLSAgICAgICBkZWZhdWx0Ogo+ID4gKyAg ICAgICAgICAgICAgIGNzcl9udW0gPSByaXNjdl9pbnNuX2NzcnJ3aV9leHRyYWN0X2NzcihpbnNu KTsKPiA+ICsgICAgICAgfSBlbHNlIHsKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gcmM7Cj4g PiAgICAgICAgIH0KPiA+Cj4gPiArICAgICAgICN1bmRlZiBHRVRfUkVHCj4gPiArCj4gPiAgICAg ICAgIC8qIFNhdmUgaW5zdHJ1Y3Rpb24gZGVjb2RlIGluZm8gKi8KPiA+ICAgICAgICAgdmNwdS0+ YXJjaC5jc3JfZGVjb2RlLmluc24gPSBpbnNuOwo+ID4gICAgICAgICB2Y3B1LT5hcmNoLmNzcl9k ZWNvZGUucmV0dXJuX2hhbmRsZWQgPSAwOwo+ID4KPiA+IC0tCj4gPiAyLjU0LjAKPiA+Cj4gPgo+ ID4KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g PiBsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKPiA+IGxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVh ZC5vcmcKPiA+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtcmlzY3YKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B1A5AC43458 for ; Tue, 30 Jun 2026 06:17:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=r68LaAHD/a2lDcebGRSXdl8TZbRh3Qr9jgliyPl9RK8=; b=Z5yv+1V0UM3qrc ODxpZpB6Sh0ENW/N3tMDb7gIBn8c9l9cF8hvWBxggxO8p+hDqqH66eoWH8bQi8pG4UtNr2Z5aVW7e 1/z41B74QemLrKIjYxixg7E721hwMVvJchbbjtiHpPAxgPUMn63cDRVc3Rv/9ohFE1pAHovnAKeV+ jpgfLPAlbLVkpm3lJ0rRUd6/9xMlARPBtIOUIqag+c7L0reaw2LK87L/yoJn6cZVl2vc9gkCw064d pE1ISP9xwCkTCxHE2w3zLimtyFyludwxmZYPHqRamFbdNr+nwfLz8iuzNZIypUzA4ZSGTrHpth4kC JtEXqBdUEIxPoaOBLiYg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1weRnC-0000000FuQL-1U2k; Tue, 30 Jun 2026 06:17:58 +0000 Received: from mail-dl1-x1232.google.com ([2607:f8b0:4864:20::1232]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1weRn8-0000000FuPY-35Xc for kvm-riscv@lists.infradead.org; Tue, 30 Jun 2026 06:17:57 +0000 Received: by mail-dl1-x1232.google.com with SMTP id a92af1059eb24-139f71a5201so308230c88.0 for ; Mon, 29 Jun 2026 23:17:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782800274; x=1783405074; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=cJsH3I+i++RnxS0RIEDx7KJuxyJs96diVU6IFO/NzsQ=; b=RzR5eP48I+lmYQTagrsqr4y4VhiqeYt50iIKzN9RPhRN9lhCWNBXGgA5ERqbgaS9RU x2/UjmWiT7k0MnAFpZyDF5ACnkTACgidM86EFSalQXhV/bk2OtheVdwV7Cy3adwMFY78 Ffpb2COkVVM8NeStLeobtAUcjVRjxz/m9H3/jU54rlxDIGhCDTWiOWOqD6eKCK/rbrDy eLmeJOQ8bfdCPu7rxllLbVLf9p5AhazqnhHkiTD+apaN2S3HDrOVh+dcE03OAL5NdkGT u04uWzTWS5jTSxmQy8aAScTm7O8ojPC+hCteF2ImvP8JYrqS71Fo3But+u5Z0s8IXGnW oP4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782800274; x=1783405074; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cJsH3I+i++RnxS0RIEDx7KJuxyJs96diVU6IFO/NzsQ=; b=RH1lTJcHvyBPlFnprkYmvx5YQKhZSLX44BavnnHeDmm8qhedjpcOzsU3eQCK8aW5Y/ 1Tcb+ddkHqU6eKTCadKPVCqXB6DMtOAATUwC/9mGeecgJepoHnndiEiD3liOu6jL+MhA 4a4dzH2RLyotN9LoNcrWLGHV9lc4TE68S6f4NkQPJtz9bBJ/wlR57BhodNPiu01bXsTe XALjSVe/o2KepD6/E8edfot6/My+xNW4Mr7z9QovGwdnByMds3UskRbsJltaOsvuyP5a ULdHiNb2mDN0A33XUt8/X3HP1S4axcfGZnXXCO9vcXOPl1SFnL7EAuQ8dj9ZFW6uOaqY sP0g== X-Forwarded-Encrypted: i=1; AFNElJ/roRgDu433791ys9hUXrrAUbxZh2M7PZv6RNN8aVE1CGujxLkgmrSgD4ge5YmwY6uiGi8vQYFw6oM=@lists.infradead.org X-Gm-Message-State: AOJu0Yz9+fuf5OofHJJ3hpnzBNDh3dYFc4OYiwE1Sj8R2N8EAOGql1KV U/LJhDLzlhN6q8Sx9p1omyXofLZvU2QRPu4TRtYoGn1zz4DP0sSBFwhL X-Gm-Gg: AfdE7cnHgClE8g12ufQBbpCbiAz9StdJ9kTtLsjU8L6HbBao+t/yA/BgsH0hKSIOzss zqZ3OvLeekV/H9lASsa7u77qLuUW7rBwGgll0vCQneKaFhhf5oJYWevH5/1k0p3fTZgSaZ6zewU WzDM19scut5bmwxXhEgXEyHvCRTIVCMGjiWquFmhvf/DAcTXJyJnGRt75ZWUtvf8LfD4gEa7sbO JmvqGaazhmVNkbrX9LQUasmD6Sf1WZ5RbAHo6Wlm9PZUvv6YDuZwDtICu/u6+/wI/ooxzAR59pU p8p+CuLZa78Y5Pm6zYPajyO8f3PL+BFHmnEAtR+j/kuuYtm9kvUAo9cTch711N0uJ8vTlOe2qzS 1klBER6qS6U3AxJ/RNpzIC/jmu17e2FnEilLlrjE4vtCbX5b0qE6OtirfLoE89E5evzkhMMyCUv VtJIwGf/vNwbGAqLFENTxxWF4DpsG7/yVx X-Received: by 2002:a05:7022:206:b0:139:fe25:a53 with SMTP id a92af1059eb24-13b2e32bb8fmr435157c88.21.1782800273787; Mon, 29 Jun 2026 23:17:53 -0700 (PDT) Received: from blinky ([2601:647:6700:64d0::94ac]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13b2abbba82sm4607658c88.14.2026.06.29.23.17.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jun 2026 23:17:53 -0700 (PDT) Date: Mon, 29 Jun 2026 23:17:50 -0700 From: Charlie Jenkins To: Jesse T Cc: Paul Walmsley , Palmer Dabbelt , Nam Cao , Alexandre Ghiti , Anup Patel , Atish Patra , Conor Dooley , Paolo Bonzini , Andrew Morton , Shuah Khan , Radim =?utf-8?B?S3LEjW3DocWZ?= , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH v2 08/16] riscv: kvm: Use generated instruction headers for csr code Message-ID: References: <20260621-riscv_insn_table-v2-0-7f0810ee2274@gmail.com> <20260621-riscv_insn_table-v2-8-7f0810ee2274@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260629_231754_783229_2C20A9C2 X-CRM114-Status: GOOD ( 24.64 ) X-BeenThere: kvm-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kvm-riscv" Errors-To: kvm-riscv-bounces+kvm-riscv=archiver.kernel.org@lists.infradead.org T24gTW9uLCBKdW4gMjksIDIwMjYgYXQgMDQ6MjU6NTNQTSAtMDQwMCwgSmVzc2UgVCB3cm90ZToK PiBPbiBNb24sIEp1biAyMiwgMjAyNiBhdCAxOjA44oCvQU0gQ2hhcmxpZSBKZW5raW5zIHZpYSBC NCBSZWxheQo+IDxkZXZudWxsK3RoZWNoYXJsZXNqZW5raW5zLmdtYWlsLmNvbUBrZXJuZWwub3Jn PiB3cm90ZToKPiA+Cj4gPiBGcm9tOiBDaGFybGllIEplbmtpbnMgPHRoZWNoYXJsZXNqZW5raW5z QGdtYWlsLmNvbT4KPiA+Cj4gPiBNaWdyYXRlIHRoZSBjc3IgcGFyc2luZyBjb2RlIHRvIHVzZSB0 aGUgZ2VuZXJhdGVkIGluc3RydWN0aW9uIGhlYWRlcnMKPiA+IGluc3RlYWQgb2YgdGhlIGhhbmQt d3JpdHRlbiBpbnN0cnVjdGlvbiBjb21wb3NpdGlvbiBmdW5jdGlvbnMuCj4gPgo+ID4gU2lnbmVk LW9mZi1ieTogQ2hhcmxpZSBKZW5raW5zIDx0aGVjaGFybGVzamVua2luc0BnbWFpbC5jb20+Cj4g Pgo+ID4gLS0tCj4gPgo+ID4gVGhpcyBpcyBhIHNpbXBsZSB0cmFuc2Zvcm1hdGlvbiB0aGF0IEkg aGF2ZSBhZ2FpbiB2YWxpZGF0ZWQgdGhyb3VnaAo+ID4gYnJ1dGUgZm9yY2UuCj4gPiAtLS0KPiA+ ICBhcmNoL3Jpc2N2L2t2bS92Y3B1X2luc24uYyB8IDQ3ICsrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9u cygrKSwgMjMgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3Zt L3ZjcHVfaW5zbi5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9pbnNuLmMKPiA+IGluZGV4IGYwOWY5 MjUxZDFmMC4uOGNjZjZlYzcyMmYwIDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9yaXNjdi9rdm0vdmNw dV9pbnNuLmMKPiA+ICsrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfaW5zbi5jCj4gPiBAQCAtMTQ2 LDQzICsxNDYsNDQgQEAgaW50IGt2bV9yaXNjdl92Y3B1X2Nzcl9yZXR1cm4oc3RydWN0IGt2bV92 Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKQo+ID4KPiA+ICBzdGF0aWMgaW50IGNzcl9p bnNuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1biwgdWxvbmcgaW5z bikKPiA+ICB7Cj4gPiArICAgICAgICNkZWZpbmUgR0VUX1JFRyhfcmQpICgqKCh1bnNpZ25lZCBs b25nICopKCZ2Y3B1LT5hcmNoLmd1ZXN0X2NvbnRleHQpICsgX3JkKSkKPiA+ICsKPiAKPiBJTU8g aXQgd291bGQgYmUgYmV0dGVyIHRvIG1ha2UgdGhpcyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24s IG90aGVyd2lzZS4KClllYWggdGhhdCdzIGZhaXIsIEknbGwgbWFrZSB0aGF0IGNoYW5nZSEKCj4g Cj4gUmV2aWV3ZWQtYnk6IEplc3NlIFRhdWJlIDxqdGF1YmVwZUByZWRoYXQuY29tPgo+IAo+ID4g ICAgICAgICBpbnQgaSwgcmMgPSBLVk1fSU5TTl9JTExFR0FMX1RSQVA7Cj4gPiAtICAgICAgIHVu c2lnbmVkIGludCBjc3JfbnVtID0gaW5zbiA+PiBTSF9SUzI7Cj4gPiAtICAgICAgIHVuc2lnbmVk IGludCByczFfbnVtID0gKGluc24gPj4gU0hfUlMxKSAmIE1BU0tfUlg7Cj4gPiAtICAgICAgIHVs b25nIHJzMV92YWwgPSBHRVRfUlMxKGluc24sICZ2Y3B1LT5hcmNoLmd1ZXN0X2NvbnRleHQpOwo+ ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgY3NyX251bTsKPiA+ICAgICAgICAgY29uc3Qgc3RydWN0 IGNzcl9mdW5jICp0Y2ZuLCAqY2ZuID0gTlVMTDsKPiA+ICAgICAgICAgdWxvbmcgdmFsID0gMCwg d3JfbWFzayA9IDAsIG5ld192YWwgPSAwOwo+ID4KPiA+ICAgICAgICAgLyogRGVjb2RlIHRoZSBD U1IgaW5zdHJ1Y3Rpb24gKi8KPiA+IC0gICAgICAgc3dpdGNoIChHRVRfRlVOQ1QzKGluc24pKSB7 Cj4gPiAtICAgICAgIGNhc2UgR0VUX0ZVTkNUMyhJTlNOX01BVENIX0NTUlJXKToKPiA+ICsgICAg ICAgaWYgKHJpc2N2X2luc25faXNfY3NycncoaW5zbikpIHsKPiA+ICAgICAgICAgICAgICAgICB3 cl9tYXNrID0gLTFVTDsKPiA+IC0gICAgICAgICAgICAgICBuZXdfdmFsID0gcnMxX3ZhbDsKPiA+ IC0gICAgICAgICAgICAgICBicmVhazsKPiA+IC0gICAgICAgY2FzZSBHRVRfRlVOQ1QzKElOU05f TUFUQ0hfQ1NSUlMpOgo+ID4gLSAgICAgICAgICAgICAgIHdyX21hc2sgPSByczFfdmFsOwo+ID4g KyAgICAgICAgICAgICAgIG5ld192YWwgPSBHRVRfUkVHKHJpc2N2X2luc25fY3NycndfZXh0cmFj dF94czEoaW5zbikpOwo+ID4gKyAgICAgICAgICAgICAgIGNzcl9udW0gPSByaXNjdl9pbnNuX2Nz cnJ3X2V4dHJhY3RfY3NyKGluc24pOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25f aXNfY3NycnMoaW5zbikpIHsKPiA+ICsgICAgICAgICAgICAgICB3cl9tYXNrID0gR0VUX1JFRyhy aXNjdl9pbnNuX2NzcnJzX2V4dHJhY3RfeHMxKGluc24pKTsKPiA+ICAgICAgICAgICAgICAgICBu ZXdfdmFsID0gLTFVTDsKPiA+IC0gICAgICAgICAgICAgICBicmVhazsKPiA+IC0gICAgICAgY2Fz ZSBHRVRfRlVOQ1QzKElOU05fTUFUQ0hfQ1NSUkMpOgo+ID4gLSAgICAgICAgICAgICAgIHdyX21h c2sgPSByczFfdmFsOwo+ID4gKyAgICAgICAgICAgICAgIGNzcl9udW0gPSByaXNjdl9pbnNuX2Nz cnJzX2V4dHJhY3RfY3NyKGluc24pOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25f aXNfY3NycmMoaW5zbikpIHsKPiA+ICsgICAgICAgICAgICAgICB3cl9tYXNrID0gR0VUX1JFRyhy aXNjdl9pbnNuX2NzcnJzX2V4dHJhY3RfeHMxKGluc24pKTsKPiA+ICAgICAgICAgICAgICAgICBu ZXdfdmFsID0gMDsKPiA+IC0gICAgICAgICAgICAgICBicmVhazsKPiA+IC0gICAgICAgY2FzZSBH RVRfRlVOQ1QzKElOU05fTUFUQ0hfQ1NSUldJKToKPiA+ICsgICAgICAgICAgICAgICBjc3JfbnVt ID0gcmlzY3ZfaW5zbl9jc3JyY19leHRyYWN0X2NzcihpbnNuKTsKPiA+ICsgICAgICAgfSBlbHNl IGlmIChyaXNjdl9pbnNuX2lzX2NzcnJ3aShpbnNuKSkgewo+ID4gICAgICAgICAgICAgICAgIHdy X21hc2sgPSAtMVVMOwo+ID4gLSAgICAgICAgICAgICAgIG5ld192YWwgPSByczFfbnVtOwo+ID4g LSAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gLSAgICAgICBjYXNlIEdFVF9GVU5DVDMoSU5TTl9N QVRDSF9DU1JSU0kpOgo+ID4gLSAgICAgICAgICAgICAgIHdyX21hc2sgPSByczFfbnVtOwo+ID4g KyAgICAgICAgICAgICAgIG5ld192YWwgPSByaXNjdl9pbnNuX2NzcnJ3aV9leHRyYWN0X2ltbShp bnNuKTsKPiA+ICsgICAgICAgICAgICAgICBjc3JfbnVtID0gcmlzY3ZfaW5zbl9jc3Jyd2lfZXh0 cmFjdF9jc3IoaW5zbik7Cj4gPiArICAgICAgIH0gZWxzZSBpZiAocmlzY3ZfaW5zbl9pc19jc3Jy c2koaW5zbikpIHsKPiA+ICsgICAgICAgICAgICAgICB3cl9tYXNrID0gcmlzY3ZfaW5zbl9jc3Jy d2lfZXh0cmFjdF9pbW0oaW5zbik7Cj4gPiAgICAgICAgICAgICAgICAgbmV3X3ZhbCA9IC0xVUw7 Cj4gPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAtICAgICAgIGNhc2UgR0VUX0ZVTkNUMyhJ TlNOX01BVENIX0NTUlJDSSk6Cj4gPiAtICAgICAgICAgICAgICAgd3JfbWFzayA9IHJzMV9udW07 Cj4gPiArICAgICAgICAgICAgICAgY3NyX251bSA9IHJpc2N2X2luc25fY3NycnNpX2V4dHJhY3Rf Y3NyKGluc24pOwo+ID4gKyAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2luc25faXNfY3NycmNpKGlu c24pKSB7Cj4gPiArICAgICAgICAgICAgICAgd3JfbWFzayA9IEdFVF9SRUcocmlzY3ZfaW5zbl9j c3Jyd2lfZXh0cmFjdF9pbW0oaW5zbikpOwo+ID4gICAgICAgICAgICAgICAgIG5ld192YWwgPSAw Owo+ID4gLSAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gLSAgICAgICBkZWZhdWx0Ogo+ID4gKyAg ICAgICAgICAgICAgIGNzcl9udW0gPSByaXNjdl9pbnNuX2NzcnJ3aV9leHRyYWN0X2NzcihpbnNu KTsKPiA+ICsgICAgICAgfSBlbHNlIHsKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gcmM7Cj4g PiAgICAgICAgIH0KPiA+Cj4gPiArICAgICAgICN1bmRlZiBHRVRfUkVHCj4gPiArCj4gPiAgICAg ICAgIC8qIFNhdmUgaW5zdHJ1Y3Rpb24gZGVjb2RlIGluZm8gKi8KPiA+ICAgICAgICAgdmNwdS0+ YXJjaC5jc3JfZGVjb2RlLmluc24gPSBpbnNuOwo+ID4gICAgICAgICB2Y3B1LT5hcmNoLmNzcl9k ZWNvZGUucmV0dXJuX2hhbmRsZWQgPSAwOwo+ID4KPiA+IC0tCj4gPiAyLjU0LjAKPiA+Cj4gPgo+ ID4KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g PiBsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKPiA+IGxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVh ZC5vcmcKPiA+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtcmlzY3YKCi0tIAprdm0tcmlzY3YgbWFpbGluZyBsaXN0Cmt2bS1yaXNjdkBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va3Zt LXJpc2N2Cg==