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 lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 C7022C021B8 for ; Sat, 1 Mar 2025 05:38:38 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFO5-0003Rm-0H; Sat, 01 Mar 2025 00:27:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFNy-0003Pc-E5 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:27:38 -0500 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFNw-0008A8-GT for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:27:38 -0500 Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213KJnQ027528 for ; Sat, 1 Mar 2025 05:27:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 2guR0CjqLHzQS1rNvOhmbn2uq+MEq6RFiUMEvgikDPA=; b=IFGlihaVKphn1fOL 3mc3J5tyR24BsvoTqAOjnu9ukXhCLbBSafbM53eROgkv/Chd4iqwvwGqo+GOmA3A Ya0v8omMTDJIfpIHtW6HZ3Lddt+19aIRSpnb3/REv9j7qgd7oWZxpsTJDJqJm+1f VmsvR5ieKMlGt5JAr0iGpI6KW0Gf1WI8sRe3GNcehK32oygLeONzYQ5zEZzrArvM UkuGtORzOKkkIwziPe084RfulG4VsNTnh66e70aTpbLiBbORb1VpUMqij2JwHFQw 7toru3HuUGmCYdu2EeW2/D6e4TTzQPaSjNKVIA6mlxOT8c1pe53Bk2r+agLUyt9m 1/51Kw== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453t89r64b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:27:25 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-2fe86c01f5cso5847457a91.1 for ; Fri, 28 Feb 2025 21:27:25 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806844; x=1741411644; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2guR0CjqLHzQS1rNvOhmbn2uq+MEq6RFiUMEvgikDPA=; b=Z09oy2X+JkvOrthcE9STJLsMoFdD+cFykEl5iSu11fvUsa/FddDfrf0sqLqYanHOC7 kKclxDDc1BQUMqkTzUVv+Sch7b9+OKqG3e5OU7lMLuiV1cFYWxdIkS7wqm33g74XYzUf z7UnzBYJ/QF5binoFGDK50jgwNn5p1j3COc+GfpeSxuR2WXEkcI0kiSGmdOgX33w3WMq RTFfshjqy3Lilv5/z2YgLpvc3KK27L9nqSyIkcWTc28K8/iSjVJ1OilNfCNJpCU+nbeV tNMaePLhTcu+uLoaWPPnw0h21gyUcNk8li5g+Mj+yfPvYDo5DoOTxZVMbRnk8A0+b8/Q 6Qvg== X-Gm-Message-State: AOJu0YzGd7raH38iQg2UAS+sP73GpKc247IfALAChmuGPYi3dZe6M22c uk1rcMJN7jHNdOEWo5wmCtEJ0JSe1/Onbzsey3ka572DcvQloKIvRcWkCIv+9yMmS0QMVlG2Bzh +RADMKTWQVP6vC+puP5URLHmB6pGe871iHcxzJbdbO40grFnJjGD/Vd6LTspJMQ== X-Gm-Gg: ASbGncvRY/CinUnM54my+mrIP49B/rjcoL49ScvWAkDQ2G8nGX7li1A9zKtczvxf+FO g/dUhFmcWogCcbMuEQ8gMN/Luvf0Eijt5G3iG3IEE9v8FJfU3cgN76GgqS8vuAgAT+wvux6Zbax dGnqg5VTQSrc2ae/NqMMkFeyMlTGD57xI+bbim1i+PBl4qz6WrDoKRhWiTncrAnxmgGN6iyImX0 jw2qs0LO+eRJbfON5dDSFTNbVgau8Escndfa+JrayCHkrkvxF0yhftRNMyMSWsAl6JSJnjf5cIL YaCIKrptQcobHq3iaBuuXuY+h0wMWWpEi1X0lKgUhCFoEgxtcvHiHbARHdFu+bmU X-Received: by 2002:a17:90a:e703:b0:2fe:a742:51b0 with SMTP id 98e67ed59e1d1-2febabf8272mr9191398a91.31.1740806844098; Fri, 28 Feb 2025 21:27:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IESdOveJK72dCUST+cOTqeWSyZ1YyNjvDjECRDHXZ0T8ij0r6roBAI9X+qncm00EbNHd+LFmw== X-Received: by 2002:a17:90a:e703:b0:2fe:a742:51b0 with SMTP id 98e67ed59e1d1-2febabf8272mr9191367a91.31.1740806843687; Fri, 28 Feb 2025 21:27:23 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fe825bb346sm6930596a91.18.2025.02.28.21.27.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:27:22 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 27/38] target/hexagon: Add sreg_{read,write} helpers Date: Fri, 28 Feb 2025 21:26:17 -0800 Message-Id: <20250301052628.1011210-28-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052628.1011210-1-brian.cain@oss.qualcomm.com> References: <20250301052628.1011210-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Proofpoint-ORIG-GUID: uAkXTjlhDdDuQw3AA9Le0sPmF_npEwMX X-Proofpoint-GUID: uAkXTjlhDdDuQw3AA9Le0sPmF_npEwMX X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 lowpriorityscore=0 impostorscore=0 priorityscore=1501 spamscore=0 phishscore=0 suspectscore=0 malwarescore=0 clxscore=1015 adultscore=0 bulkscore=0 mlxlogscore=975 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010039 Received-SPF: pass client-ip=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org RnJvbTogQnJpYW4gQ2FpbiA8YmNhaW5AcXVpY2luYy5jb20+CgpDby1hdXRob3JlZC1ieTogU2lk IE1hbm5pbmcgPHNpZG5leW1AcXVpY2luYy5jb20+ClNpZ25lZC1vZmYtYnk6IEJyaWFuIENhaW4g PGJyaWFuLmNhaW5Ab3NzLnF1YWxjb21tLmNvbT4KLS0tCiB0YXJnZXQvaGV4YWdvbi9jcHVfaGVs cGVyLmggfCAgIDggKysrCiB0YXJnZXQvaGV4YWdvbi9jcHUuYyAgICAgICAgfCAgIDEgKwogdGFy Z2V0L2hleGFnb24vY3B1X2hlbHBlci5jIHwgIDM3ICsrKysrKysrKysrKwogdGFyZ2V0L2hleGFn b24vb3BfaGVscGVyLmMgIHwgMTE0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LQogNCBmaWxlcyBjaGFuZ2VkLCAxNTYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9jcHVfaGVscGVyLmggYi90YXJnZXQvaGV4YWdvbi9j cHVfaGVscGVyLmgKaW5kZXggMTk0YmNiZjQ1MS4uNWY1ZjE1MTQ5YSAxMDA2NDQKLS0tIGEvdGFy Z2V0L2hleGFnb24vY3B1X2hlbHBlci5oCisrKyBiL3RhcmdldC9oZXhhZ29uL2NwdV9oZWxwZXIu aApAQCAtNyw2ICs3LDE0IEBACiAjaWZuZGVmIEhFWEFHT05fQ1BVX0hFTFBFUl9ICiAjZGVmaW5l IEhFWEFHT05fQ1BVX0hFTFBFUl9ICiAKK3VpbnQzMl90IGhleGFnb25fZ2V0X3BtdV9jb3VudGVy KENQVUhleGFnb25TdGF0ZSAqY3VyX2VudiwgaW50IGluZGV4KTsKK3VpbnQ2NF90IGhleGFnb25f Z2V0X3N5c19wY3ljbGVfY291bnQoQ1BVSGV4YWdvblN0YXRlICplbnYpOwordWludDMyX3QgaGV4 YWdvbl9nZXRfc3lzX3BjeWNsZV9jb3VudF9sb3coQ1BVSGV4YWdvblN0YXRlICplbnYpOwordWlu dDMyX3QgaGV4YWdvbl9nZXRfc3lzX3BjeWNsZV9jb3VudF9oaWdoKENQVUhleGFnb25TdGF0ZSAq ZW52KTsKK3ZvaWQgaGV4YWdvbl9zZXRfc3lzX3BjeWNsZV9jb3VudChDUFVIZXhhZ29uU3RhdGUg KmVudiwgdWludDY0X3QpOwordm9pZCBoZXhhZ29uX3NldF9zeXNfcGN5Y2xlX2NvdW50X2xvdyhD UFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDMyX3QpOwordm9pZCBoZXhhZ29uX3NldF9zeXNfcGN5 Y2xlX2NvdW50X2hpZ2goQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90KTsKKwogc3RhdGlj IGlubGluZSB2b2lkIGFyY2hfc2V0X3RocmVhZF9yZWcoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVp bnQzMl90IHJlZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IHZhbCkKIHsKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2NwdS5jIGIvdGFyZ2V0L2hl eGFnb24vY3B1LmMKaW5kZXggMGRiOTFhOTM2YS4uMzZhOTNjYzIyZiAxMDA2NDQKLS0tIGEvdGFy Z2V0L2hleGFnb24vY3B1LmMKKysrIGIvdGFyZ2V0L2hleGFnb24vY3B1LmMKQEAgLTMyMiw2ICsz MjIsNyBAQCBzdGF0aWMgdm9pZCBoZXhhZ29uX2NwdV9yZWFsaXplKERldmljZVN0YXRlICpkZXYs IEVycm9yICoqZXJycCkKICAgICBxZW11X2luaXRfdmNwdShjcyk7CiAgICAgY3B1X3Jlc2V0KGNz KTsKICNpZm5kZWYgQ09ORklHX1VTRVJfT05MWQorICAgIENQVUhleGFnb25TdGF0ZSAqZW52ID0g Y3B1X2Vudihjcyk7CiAgICAgaWYgKGNzLT5jcHVfaW5kZXggPT0gMCkgewogICAgICAgICBlbnYt Pmdfc3JlZyA9IGdfbmV3MCh0YXJnZXRfdWxvbmcsIE5VTV9TUkVHUyk7CiAgICAgfSBlbHNlIHsK ZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2NwdV9oZWxwZXIuYyBiL3RhcmdldC9oZXhhZ29u L2NwdV9oZWxwZXIuYwppbmRleCA2ZTRiYzg1NTgwLi4wMDYyMjUzMTc2IDEwMDY0NAotLS0gYS90 YXJnZXQvaGV4YWdvbi9jcHVfaGVscGVyLmMKKysrIGIvdGFyZ2V0L2hleGFnb24vY3B1X2hlbHBl ci5jCkBAIC0yNywxMCArMjcsNDcgQEAKIAogI2lmbmRlZiBDT05GSUdfVVNFUl9PTkxZCiAKK3Vp bnQzMl90IGhleGFnb25fZ2V0X3BtdV9jb3VudGVyKENQVUhleGFnb25TdGF0ZSAqY3VyX2Vudiwg aW50IGluZGV4KQoreworICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7Cit9CisKIHVpbnQzMl90 IGFyY2hfZ2V0X3N5c3RlbV9yZWcoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90IHJlZykK IHsKICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOwogfQogCit1aW50NjRfdCBoZXhhZ29uX2dl dF9zeXNfcGN5Y2xlX2NvdW50KENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIGdfYXNzZXJ0 X25vdF9yZWFjaGVkKCk7Cit9CisKK3VpbnQzMl90IGhleGFnb25fZ2V0X3N5c19wY3ljbGVfY291 bnRfaGlnaChDUFVIZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICBnX2Fzc2VydF9ub3RfcmVhY2hl ZCgpOworfQorCit1aW50MzJfdCBoZXhhZ29uX2dldF9zeXNfcGN5Y2xlX2NvdW50X2xvdyhDUFVI ZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworfQorCit2 b2lkIGhleGFnb25fc2V0X3N5c19wY3ljbGVfY291bnRfaGlnaChDUFVIZXhhZ29uU3RhdGUgKmVu diwKKyAgICAgICAgdWludDMyX3QgY3ljbGVzX2hpKQoreworICAgIGdfYXNzZXJ0X25vdF9yZWFj aGVkKCk7Cit9CisKK3ZvaWQgaGV4YWdvbl9zZXRfc3lzX3BjeWNsZV9jb3VudF9sb3coQ1BVSGV4 YWdvblN0YXRlICplbnYsCisgICAgICAgIHVpbnQzMl90IGN5Y2xlc19sbykKK3sKKyAgICBnX2Fz c2VydF9ub3RfcmVhY2hlZCgpOworfQorCit2b2lkIGhleGFnb25fc2V0X3N5c19wY3ljbGVfY291 bnQoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQ2NF90IGN5Y2xlcykKK3sKKyAgICBnX2Fzc2Vy dF9ub3RfcmVhY2hlZCgpOworfQorCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFn b24vb3BfaGVscGVyLmMgYi90YXJnZXQvaGV4YWdvbi9vcF9oZWxwZXIuYwppbmRleCAxMzlhMGI1 YWIyLi43NmIyNDc1ZDg4IDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9vcF9oZWxwZXIuYwor KysgYi90YXJnZXQvaGV4YWdvbi9vcF9oZWxwZXIuYwpAQCAtMTcsNiArMTcsNyBAQAogCiAjaW5j bHVkZSAicWVtdS9vc2RlcC5oIgogI2luY2x1ZGUgInFlbXUvbG9nLmgiCisjaW5jbHVkZSAicWVt dS9tYWluLWxvb3AuaCIKICNpbmNsdWRlICJleGVjL2V4ZWMtYWxsLmgiCiAjaW5jbHVkZSAiZXhl Yy9jcHVfbGRzdC5oIgogI2luY2x1ZGUgImV4ZWMvaGVscGVyLXByb3RvLmgiCkBAIC0xMzk3LDI1 ICsxMzk4LDEzMCBAQCB2b2lkIEhFTFBFUihzZXRpbWFzaykoQ1BVSGV4YWdvblN0YXRlICplbnYs IHVpbnQzMl90IHByZWQsIHVpbnQzMl90IGltYXNrKQogICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVk KCk7CiB9CiAKK3N0YXRpYyBib29sIGhhbmRsZV9wbXVfc3JlZ193cml0ZShDUFVIZXhhZ29uU3Rh dGUgKmVudiwgdWludDMyX3QgcmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IHZhbCkKK3sKKyAgICBpZiAocmVnID09IEhFWF9TUkVHX1BNVVNUSUQwIHx8IHJl ZyA9PSBIRVhfU1JFR19QTVVTVElEMQorICAgICAgICB8fCByZWcgPT0gSEVYX1NSRUdfUE1VQ0ZH IHx8IHJlZyA9PSBIRVhfU1JFR19QTVVFVlRDRkcKKyAgICAgICAgfHwgcmVnID09IEhFWF9TUkVH X1BNVUVWVENGRzEKKyAgICAgICAgfHwgKHJlZyA+PSBIRVhfU1JFR19QTVVDTlQ0ICYmIHJlZyA8 PSBIRVhfU1JFR19QTVVDTlQzKSkgeworICAgICAgICBxZW11X2xvZ19tYXNrKExPR19VTklNUCwg IlBNVSByZWdpc3RlcnMgbm90IHlldCBpbXBsZW1lbnRlZCIpOworICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBtb2RpZnlfc3lz Y2ZnKENQVUhleGFnb25TdGF0ZSAqZW52LCB1aW50MzJfdCB2YWwpCit7CisgICAgZ19hc3NlcnRf bm90X3JlYWNoZWQoKTsKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9zZXRfdmlkKENQVUhleGFn b25TdGF0ZSAqZW52LCB1aW50MzJfdCBvZmZzZXQsIGludCB2YWwpCit7CisgICAgZ19hc3NlcnRf bm90X3JlYWNoZWQoKTsKK30KKworc3RhdGljIHVpbnQzMl90IGhleGFnb25fZmluZF9sYXN0X2ly cShDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDMyX3QgdmlkKQoreworICAgIGdfYXNzZXJ0X25v dF9yZWFjaGVkKCk7Cit9CisKK3N0YXRpYyB2b2lkIGhleGFnb25fcmVhZF90aW1lcihDUFVIZXhh Z29uU3RhdGUgKmVudiwgdWludDMyX3QgKmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCAqaGlnaCkKK3sKKyAgICBxZW11X2xvZ19tYXNrKExPR19VTklNUCwgInJl YWRpbmcgdGltZXJfaGkvbG8gbm90IHlldCBzdXBwb3J0ZWRcbiIpOworfQorCitzdGF0aWMgaW5s aW5lIFFFTVVfQUxXQVlTX0lOTElORSB2b2lkIHNyZWdfd3JpdGUoQ1BVSGV4YWdvblN0YXRlICpl bnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCisKK3sKKyAgICBnX2Fzc2VydChicWxfbG9ja2VkKCkp OworICAgIGlmICgocmVnID09IEhFWF9TUkVHX1ZJRCkgfHwgKHJlZyA9PSBIRVhfU1JFR19WSUQx KSkgeworICAgICAgICBoZXhhZ29uX3NldF92aWQoZW52LCAocmVnID09IEhFWF9TUkVHX1ZJRCkg PyBMMlZJQ19WSURfMCA6IEwyVklDX1ZJRF8xLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFs KTsKKyAgICAgICAgYXJjaF9zZXRfc3lzdGVtX3JlZyhlbnYsIHJlZywgdmFsKTsKKyAgICB9IGVs c2UgaWYgKHJlZyA9PSBIRVhfU1JFR19TWVNDRkcpIHsKKyAgICAgICAgbW9kaWZ5X3N5c2NmZyhl bnYsIHZhbCk7CisgICAgfSBlbHNlIGlmIChyZWcgPT0gSEVYX1NSRUdfSU1BU0spIHsKKyAgICAg ICAgdmFsID0gR0VUX0ZJRUxEKElNQVNLX01BU0ssIHZhbCk7CisgICAgICAgIGFyY2hfc2V0X3N5 c3RlbV9yZWcoZW52LCByZWcsIHZhbCk7CisgICAgfSBlbHNlIGlmIChyZWcgPT0gSEVYX1NSRUdf UENZQ0xFTE8pIHsKKyAgICAgICAgaGV4YWdvbl9zZXRfc3lzX3BjeWNsZV9jb3VudF9sb3coZW52 LCB2YWwpOworICAgIH0gZWxzZSBpZiAocmVnID09IEhFWF9TUkVHX1BDWUNMRUhJKSB7CisgICAg ICAgIGhleGFnb25fc2V0X3N5c19wY3ljbGVfY291bnRfaGlnaChlbnYsIHZhbCk7CisgICAgfSBl bHNlIGlmICghaGFuZGxlX3BtdV9zcmVnX3dyaXRlKGVudiwgcmVnLCB2YWwpKSB7CisgICAgICAg IGlmIChyZWcgPj0gSEVYX1NSRUdfR0xCX1NUQVJUKSB7CisgICAgICAgICAgICBhcmNoX3NldF9z eXN0ZW1fcmVnKGVudiwgcmVnLCB2YWwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg YXJjaF9zZXRfc3lzdGVtX3JlZyhlbnYsIHJlZywgdmFsKTsKKyAgICAgICAgfQorICAgIH0KK30K Kwogdm9pZCBIRUxQRVIoc3JlZ193cml0ZSkoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90 IHJlZywgdWludDMyX3QgdmFsKQogewotICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAg QlFMX0xPQ0tfR1VBUkQoKTsKKyAgICBzcmVnX3dyaXRlKGVudiwgcmVnLCB2YWwpOwogfQogCiB2 b2lkIEhFTFBFUihzcmVnX3dyaXRlX3BhaXIpKENQVUhleGFnb25TdGF0ZSAqZW52LCB1aW50MzJf dCByZWcsIHVpbnQ2NF90IHZhbCkKK3sKKyAgICBCUUxfTE9DS19HVUFSRCgpOworICAgIHNyZWdf d3JpdGUoZW52LCByZWcsIHZhbCAmIDB4RkZGRkZGRkYpOworICAgIHNyZWdfd3JpdGUoZW52LCBy ZWcgKyAxLCB2YWwgPj4gMzIpOworfQogCitzdGF0aWMgaW5saW5lIFFFTVVfQUxXQVlTX0lOTElO RSB1aW50MzJfdCBzcmVnX3JlYWQoQ1BVSGV4YWdvblN0YXRlICplbnYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmVnKQogewot ICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgZ19hc3NlcnQoYnFsX2xvY2tlZCgpKTsK KyAgICBpZiAocmVnID09IEhFWF9TUkVHX1BNVVNUSUQwIHx8IHJlZyA9PSBIRVhfU1JFR19QTVVT VElEMQorICAgICAgICB8fCByZWcgPT0gSEVYX1NSRUdfUE1VQ0ZHIHx8IHJlZyA9PSBIRVhfU1JF R19QTVVFVlRDRkcKKyAgICAgICAgfHwgcmVnID09IEhFWF9TUkVHX1BNVUVWVENGRzEKKyAgICAg ICAgfHwgKHJlZyA+PSBIRVhfU1JFR19QTVVDTlQ0ICYmIHJlZyA8PSBIRVhfU1JFR19QTVVDTlQz KSkgeworICAgICAgICBxZW11X2xvZ19tYXNrKExPR19VTklNUCwgIlBNVSByZWdpc3RlcnMgbm90 IHlldCBpbXBsZW1lbnRlZCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKChy ZWcgPT0gSEVYX1NSRUdfVklEKSB8fCAocmVnID09IEhFWF9TUkVHX1ZJRDEpKSB7CisgICAgICAg IGNvbnN0IHVpbnQzMl90IHZpZCA9IGhleGFnb25fZmluZF9sYXN0X2lycShlbnYsIHJlZyk7Cisg ICAgICAgIGFyY2hfc2V0X3N5c3RlbV9yZWcoZW52LCByZWcsIHZpZCk7CisgICAgfSBlbHNlIGlm ICgocmVnID09IEhFWF9TUkVHX1RJTUVSTE8pIHx8IChyZWcgPT0gSEVYX1NSRUdfVElNRVJISSkp IHsKKyAgICAgICAgdWludDMyX3QgbG93ID0gMDsKKyAgICAgICAgdWludDMyX3QgaGlnaCA9IDA7 CisgICAgICAgIGhleGFnb25fcmVhZF90aW1lcihlbnYsICZsb3csICZoaWdoKTsKKyAgICAgICAg YXJjaF9zZXRfc3lzdGVtX3JlZyhlbnYsIEhFWF9TUkVHX1RJTUVSTE8sIGxvdyk7CisgICAgICAg IGFyY2hfc2V0X3N5c3RlbV9yZWcoZW52LCBIRVhfU1JFR19USU1FUkhJLCBoaWdoKTsKKyAgICB9 IGVsc2UgaWYgKHJlZyA9PSBIRVhfU1JFR19CQURWQSkgeworICAgICAgICB0YXJnZXRfdWxvbmcg c3NyID0gYXJjaF9nZXRfc3lzdGVtX3JlZyhlbnYsIEhFWF9TUkVHX1NTUik7CisgICAgICAgIGlm IChHRVRfU1NSX0ZJRUxEKFNTUl9CVlMsIHNzcikpIHsKKyAgICAgICAgICAgIHJldHVybiBhcmNo X2dldF9zeXN0ZW1fcmVnKGVudiwgSEVYX1NSRUdfQkFEVkExKTsKKyAgICAgICAgfQorICAgICAg ICByZXR1cm4gYXJjaF9nZXRfc3lzdGVtX3JlZyhlbnYsIEhFWF9TUkVHX0JBRFZBMCk7CisgICAg fQorICAgIHJldHVybiBhcmNoX2dldF9zeXN0ZW1fcmVnKGVudiwgcmVnKTsKIH0KIAogdWludDMy X3QgSEVMUEVSKHNyZWdfcmVhZCkoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90IHJlZykK IHsKLSAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgIEJRTF9MT0NLX0dVQVJEKCk7Cisg ICAgcmV0dXJuIHNyZWdfcmVhZChlbnYsIHJlZyk7CiB9CiAKIHVpbnQ2NF90IEhFTFBFUihzcmVn X3JlYWRfcGFpcikoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90IHJlZykKIHsKLSAgICBn X2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgIEJRTF9MT0NLX0dVQVJEKCk7CisgICAgaWYgKHJl ZyA9PSBIRVhfU1JFR19USU1FUkxPKSB7CisgICAgICAgIHVpbnQzMl90IGxvdyA9IDA7CisgICAg ICAgIHVpbnQzMl90IGhpZ2ggPSAwOworICAgICAgICBoZXhhZ29uX3JlYWRfdGltZXIoZW52LCAm bG93LCAmaGlnaCk7CisgICAgICAgIGFyY2hfc2V0X3N5c3RlbV9yZWcoZW52LCBIRVhfU1JFR19U SU1FUkxPLCBsb3cpOworICAgICAgICBhcmNoX3NldF9zeXN0ZW1fcmVnKGVudiwgSEVYX1NSRUdf VElNRVJISSwgaGlnaCk7CisgICAgfSBlbHNlIGlmIChyZWcgPT0gSEVYX1NSRUdfUENZQ0xFTE8p IHsKKyAgICAgICAgcmV0dXJuIGhleGFnb25fZ2V0X3N5c19wY3ljbGVfY291bnQoZW52KTsKKyAg ICB9CisgICAgcmV0dXJuICAgKHVpbnQ2NF90KXNyZWdfcmVhZChlbnYsIHJlZykgfAorICAgICAg ICAgICAoKCh1aW50NjRfdClzcmVnX3JlYWQoZW52LCByZWcgKyAxKSkgPDwgMzIpOwogfQogCiB1 aW50MzJfdCBIRUxQRVIoZ3JlZ19yZWFkKShDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDMyX3Qg cmVnKQotLSAKMi4zNC4xCgo=