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 X-Spam-Level: X-Spam-Status: No, score=-12.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6537AC2D0A8 for ; Mon, 28 Sep 2020 12:45:03 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id D6385221E8 for ; Mon, 28 Sep 2020 12:45:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="f06f6T29" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D6385221E8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:47554 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kMsWb-0004PJ-Jo for qemu-devel@archiver.kernel.org; Mon, 28 Sep 2020 08:45:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49826) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kMsOz-00044o-4q for qemu-devel@nongnu.org; Mon, 28 Sep 2020 08:37:09 -0400 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:39958) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kMsOu-0005ej-9g for qemu-devel@nongnu.org; Mon, 28 Sep 2020 08:37:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1601296624; x=1632832624; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MUG5HpNtq3Dneugxlasu3tIyPAs/wM8YqRlM7NnGjKQ=; b=f06f6T29bRhpMkiF3jB46YHNy2VVBsopQtUJWilgZpZQWNtnLc1006YA eQaqEdNaVPeGo40LgSF8WdL41/FA4Di9BrAZLwSew3Fws93leaEii3e4I cayXU24RyWMqpkooecoBSPwy8+c4b+EVjnsSnyyby+vQyi/rMTcfX/g+M U=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-02.qualcomm.com with ESMTP; 28 Sep 2020 05:36:52 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg05-sd.qualcomm.com with ESMTP; 28 Sep 2020 05:36:51 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 7F52811E9; Mon, 28 Sep 2020 07:36:51 -0500 (CDT) From: Taylor Simpson To: tsimpson@quicinc.com Subject: [RFC PATCH v4 04/29] Hexagon (target/hexagon) scalar core definition Date: Mon, 28 Sep 2020 07:36:23 -0500 Message-Id: <1601296608-29390-5-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1601296608-29390-1-git-send-email-tsimpson@quicinc.com> References: <1601296608-29390-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=199.106.114.39; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-02.qualcomm.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/28 08:36:52 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.199, RCVD_IN_DNSWL_MED=-2.3, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "open list:All patches CC here" Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" QWRkIHRhcmdldCBzdGF0ZSBoZWFkZXIsIHRhcmdldCBkZWZpbml0aW9ucyBhbmQgaW5pdGlhbGl6 YXRpb24gcm91dGluZXMKClNpZ25lZC1vZmYtYnk6IFRheWxvciBTaW1wc29uIDx0c2ltcHNvbkBx dWljaW5jLmNvbT4KLS0tCiB0YXJnZXQvaGV4YWdvbi9jcHUtcGFyYW0uaCB8ICAyOSArKysrKwog dGFyZ2V0L2hleGFnb24vY3B1LmggICAgICAgfCAxNTkgKysrKysrKysrKysrKysrKysrKysrKysK IHRhcmdldC9oZXhhZ29uL2NwdV9iaXRzLmggIHwgIDM0ICsrKysrCiB0YXJnZXQvaGV4YWdvbi9p bnRlcm5hbC5oICB8ICAzNiArKysrKysKIHRhcmdldC9oZXhhZ29uL2NwdS5jICAgICAgIHwgMzEy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNSBmaWxlcyBj aGFuZ2VkLCA1NzAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9oZXhh Z29uL2NwdS1wYXJhbS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0L2hleGFnb24vY3B1LmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQvaGV4YWdvbi9jcHVfYml0cy5oCiBjcmVhdGUgbW9k ZSAxMDA2NDQgdGFyZ2V0L2hleGFnb24vaW50ZXJuYWwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRh cmdldC9oZXhhZ29uL2NwdS5jCgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vY3B1LXBhcmFt LmggYi90YXJnZXQvaGV4YWdvbi9jcHUtcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi44Nzk2YjY5Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vY3B1 LXBhcmFtLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIw IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg KgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVm IEhFWEFHT05fQ1BVX1BBUkFNX0gKKyNkZWZpbmUgSEVYQUdPTl9DUFVfUEFSQU1fSAorCisjZGVm aW5lIFRBUkdFVF9QQUdFX0JJVFMgMTYgICAgIC8qIDY0SyBwYWdlcyAqLworI2RlZmluZSBUQVJH RVRfTE9OR19CSVRTIDMyCisKKyNkZWZpbmUgVEFSR0VUX1BIWVNfQUREUl9TUEFDRV9CSVRTIDM2 CisjZGVmaW5lIFRBUkdFVF9WSVJUX0FERFJfU1BBQ0VfQklUUyAzMgorCisjZGVmaW5lIE5CX01N VV9NT0RFUyAxCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vY3B1LmggYi90 YXJnZXQvaGV4YWdvbi9jcHUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j ODE1ZmUyCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vY3B1LmgKQEAgLTAsMCAr MSwxNTkgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0 aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAq ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBIRVhBR09OX0NQVV9ICisj ZGVmaW5lIEhFWEFHT05fQ1BVX0gKKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBuZWVkZWQgYnkg c29tZSBvZiB0aGUgaGVhZGVyIGZpbGVzICovCit0eXBlZGVmIHN0cnVjdCBDUFVIZXhhZ29uU3Rh dGUgQ1BVSGV4YWdvblN0YXRlOworCisjaW5jbHVkZSA8ZmVudi5oPgorCisjaW5jbHVkZSAicWVt dS1jb21tb24uaCIKKyNpbmNsdWRlICJleGVjL2NwdS1kZWZzLmgiCisjaW5jbHVkZSAiaGV4X3Jl Z3MuaCIKKworI2RlZmluZSBOVU1fUFJFR1MgNAorI2RlZmluZSBUT1RBTF9QRVJfVEhSRUFEX1JF R1MgNjQKKworI2RlZmluZSBTTE9UU19NQVggNAorI2RlZmluZSBTVE9SRVNfTUFYIDIKKyNkZWZp bmUgUkVHX1dSSVRFU19NQVggMzIKKyNkZWZpbmUgUFJFRF9XUklURVNfTUFYIDUgICAgICAgICAg ICAgICAgICAgLyogNCBpbnNucyArIGVuZGxvb3AgKi8KKworI2RlZmluZSBUWVBFX0hFWEFHT05f Q1BVICJoZXhhZ29uLWNwdSIKKworI2RlZmluZSBIRVhBR09OX0NQVV9UWVBFX1NVRkZJWCAiLSIg VFlQRV9IRVhBR09OX0NQVQorI2RlZmluZSBIRVhBR09OX0NQVV9UWVBFX05BTUUobmFtZSkgKG5h bWUgSEVYQUdPTl9DUFVfVFlQRV9TVUZGSVgpCisjZGVmaW5lIENQVV9SRVNPTFZJTkdfVFlQRSBU WVBFX0hFWEFHT05fQ1BVCisKKyNkZWZpbmUgVFlQRV9IRVhBR09OX0NQVV9WNjcgSEVYQUdPTl9D UFVfVFlQRV9OQU1FKCJ2NjciKQorCisjZGVmaW5lIE1NVV9VU0VSX0lEWCAwCisKK3N0cnVjdCBN ZW1Mb2cgeworICAgIHRhcmdldF91bG9uZyB2YTsKKyAgICB1aW50OF90IHdpZHRoOworICAgIHVp bnQzMl90IGRhdGEzMjsKKyAgICB1aW50NjRfdCBkYXRhNjQ7Cit9OworCisjZGVmaW5lIEVYRUNf U1RBVFVTX09LICAgICAgICAgIDB4MDAwMAorI2RlZmluZSBFWEVDX1NUQVRVU19TVE9QICAgICAg ICAweDAwMDIKKyNkZWZpbmUgRVhFQ19TVEFUVVNfUkVQTEFZICAgICAgMHgwMDEwCisjZGVmaW5l IEVYRUNfU1RBVFVTX0xPQ0tFRCAgICAgIDB4MDAyMAorI2RlZmluZSBFWEVDX1NUQVRVU19FWENF UFRJT04gICAweDAxMDAKKworCisjZGVmaW5lIEVYQ0VQVElPTl9ERVRFQ1RFRCAgICAgIChlbnYt PnN0YXR1cyAmIEVYRUNfU1RBVFVTX0VYQ0VQVElPTikKKyNkZWZpbmUgUkVQTEFZX0RFVEVDVEVE ICAgICAgICAgKGVudi0+c3RhdHVzICYgRVhFQ19TVEFUVVNfUkVQTEFZKQorI2RlZmluZSBDTEVB Ul9FWENFUFRJT04gICAgICAgICAoZW52LT5zdGF0dXMgJj0gKH5FWEVDX1NUQVRVU19FWENFUFRJ T04pKQorI2RlZmluZSBTRVRfRVhDRVBUSU9OICAgICAgICAgICAoZW52LT5zdGF0dXMgfD0gRVhF Q19TVEFUVVNfRVhDRVBUSU9OKQorCitzdHJ1Y3QgQ1BVSGV4YWdvblN0YXRlIHsKKyAgICB0YXJn ZXRfdWxvbmcgZ3ByW1RPVEFMX1BFUl9USFJFQURfUkVHU107CisgICAgdGFyZ2V0X3Vsb25nIHBy ZWRbTlVNX1BSRUdTXTsKKyAgICB0YXJnZXRfdWxvbmcgYnJhbmNoX3Rha2VuOworICAgIHRhcmdl dF91bG9uZyBuZXh0X1BDOworCisgICAgLyogRm9yIGNvbXBhcmluZyB3aXRoIExMREIgb24gdGFy Z2V0IC0gc2VlIGFkanVzdF9zdGFja19wdHJzIGZ1bmN0aW9uICovCisgICAgdGFyZ2V0X3Vsb25n IGxhc3RfcGNfZHVtcGVkOworICAgIHRhcmdldF91bG9uZyBzdGFja19zdGFydDsKKworICAgIHVp bnQ4X3Qgc2xvdF9jYW5jZWxsZWQ7CisgICAgdGFyZ2V0X3Vsb25nIG5ld192YWx1ZVtUT1RBTF9Q RVJfVEhSRUFEX1JFR1NdOworCisgICAgLyoKKyAgICAgKiBPbmx5IHVzZWQgd2hlbiBIRVhfREVC VUcgaXMgb24sIGJ1dCB1bmNvbmRpdGlvbmFsbHkgaW5jbHVkZWQKKyAgICAgKiB0byByZWR1Y2Ug cmVjb21waWxlIHRpbWUgd2hlbiB0dXJuaW5nIEhFWF9ERUJVRyBvbi9vZmYuCisgICAgICovCisg ICAgdGFyZ2V0X3Vsb25nIHRoaXNfUEM7CisgICAgdGFyZ2V0X3Vsb25nIHJlZ193cml0dGVuW1RP VEFMX1BFUl9USFJFQURfUkVHU107CisKKyAgICB0YXJnZXRfdWxvbmcgbmV3X3ByZWRfdmFsdWVb TlVNX1BSRUdTXTsKKyAgICB0YXJnZXRfdWxvbmcgcHJlZF93cml0dGVuOworCisgICAgc3RydWN0 IE1lbUxvZyBtZW1fbG9nX3N0b3Jlc1tTVE9SRVNfTUFYXTsKKyAgICB0YXJnZXRfdWxvbmcgcGt0 X2hhc19zdG9yZV9zMTsKKyAgICB0YXJnZXRfdWxvbmcgZGN6ZXJvX2FkZHI7CisKKyAgICBmZW52 X3QgZmVudjsKKworICAgIHRhcmdldF91bG9uZyBsbHNjX2FkZHI7CisgICAgdGFyZ2V0X3Vsb25n IGxsc2NfdmFsOworICAgIHVpbnQ2NF90ICAgICBsbHNjX3ZhbF9pNjQ7CisKKyAgICB0YXJnZXRf dWxvbmcgaXNfZ2F0aGVyX3N0b3JlX2luc247CisgICAgdGFyZ2V0X3Vsb25nIGdhdGhlcl9pc3N1 ZWQ7Cit9OworCisjZGVmaW5lIEhFWEFHT05fQ1BVX0NMQVNTKGtsYXNzKSBcCisgICAgT0JKRUNU X0NMQVNTX0NIRUNLKEhleGFnb25DUFVDbGFzcywgKGtsYXNzKSwgVFlQRV9IRVhBR09OX0NQVSkK KyNkZWZpbmUgSEVYQUdPTl9DUFUob2JqKSBcCisgICAgT0JKRUNUX0NIRUNLKEhleGFnb25DUFUs IChvYmopLCBUWVBFX0hFWEFHT05fQ1BVKQorI2RlZmluZSBIRVhBR09OX0NQVV9HRVRfQ0xBU1Mo b2JqKSBcCisgICAgT0JKRUNUX0dFVF9DTEFTUyhIZXhhZ29uQ1BVQ2xhc3MsIChvYmopLCBUWVBF X0hFWEFHT05fQ1BVKQorCit0eXBlZGVmIHN0cnVjdCBIZXhhZ29uQ1BVQ2xhc3MgeworICAgIC8q PCBwcml2YXRlID4qLworICAgIENQVUNsYXNzIHBhcmVudF9jbGFzczsKKyAgICAvKjwgcHVibGlj ID4qLworICAgIERldmljZVJlYWxpemUgcGFyZW50X3JlYWxpemU7CisgICAgRGV2aWNlUmVzZXQg cGFyZW50X3Jlc2V0OworfSBIZXhhZ29uQ1BVQ2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IEhleGFn b25DUFUgeworICAgIC8qPCBwcml2YXRlID4qLworICAgIENQVVN0YXRlIHBhcmVudF9vYmo7Cisg ICAgLyo8IHB1YmxpYyA+Ki8KKyAgICBDUFVOZWdhdGl2ZU9mZnNldFN0YXRlIG5lZzsKKyAgICBD UFVIZXhhZ29uU3RhdGUgZW52OworCisgICAgYm9vbCBsbGRiX2NvbXBhdDsKKyAgICB0YXJnZXRf dWxvbmcgbGxkYl9zdGFja19hZGp1c3Q7Cit9IEhleGFnb25DUFU7CisKK3N0YXRpYyBpbmxpbmUg SGV4YWdvbkNQVSAqaGV4YWdvbl9lbnZfZ2V0X2NwdShDUFVIZXhhZ29uU3RhdGUgKmVudikKK3sK KyAgICByZXR1cm4gY29udGFpbmVyX29mKGVudiwgSGV4YWdvbkNQVSwgZW52KTsKK30KKworI2lu Y2x1ZGUgImNwdV9iaXRzLmgiCisKKyNkZWZpbmUgY3B1X3NpZ25hbF9oYW5kbGVyIGNwdV9oZXhh Z29uX3NpZ25hbF9oYW5kbGVyCitleHRlcm4gaW50IGNwdV9oZXhhZ29uX3NpZ25hbF9oYW5kbGVy KGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sIHZvaWQgKnB1Yyk7CisKK3N0YXRpYyBpbmxp bmUgdm9pZCBjcHVfZ2V0X3RiX2NwdV9zdGF0ZShDUFVIZXhhZ29uU3RhdGUgKmVudiwgdGFyZ2V0 X3Vsb25nICpwYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXRfdWxvbmcgKmNzX2Jhc2UsIHVpbnQzMl90ICpmbGFncykKK3sKKyAgICAqcGMgPSBlbnYtPmdw cltIRVhfUkVHX1BDXTsKKyAgICAqY3NfYmFzZSA9IDA7CisjaWZkZWYgQ09ORklHX1VTRVJfT05M WQorICAgICpmbGFncyA9IDA7CisjZWxzZQorI2Vycm9yIFN5c3RlbSBtb2RlIG5vdCBzdXBwb3J0 ZWQgb24gSGV4YWdvbiB5ZXQKKyNlbmRpZgorfQorCit0eXBlZGVmIHN0cnVjdCBDUFVIZXhhZ29u U3RhdGUgQ1BVQXJjaFN0YXRlOwordHlwZWRlZiBIZXhhZ29uQ1BVIEFyY2hDUFU7CisKK3ZvaWQg aGV4YWdvbl90cmFuc2xhdGVfaW5pdCh2b2lkKTsKKworI2luY2x1ZGUgImV4ZWMvY3B1LWFsbC5o IgorCisjZW5kaWYgLyogSEVYQUdPTl9DUFVfSCAqLwpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFn b24vY3B1X2JpdHMuaCBiL3RhcmdldC9oZXhhZ29uL2NwdV9iaXRzLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNTg2YzcxNwotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9o ZXhhZ29uL2NwdV9iaXRzLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykg MjAxOS0yMDIwIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVz ZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLwor CisjaWZuZGVmIEhFWEFHT05fQ1BVX0JJVFNfSAorI2RlZmluZSBIRVhBR09OX0NQVV9CSVRTX0gK KworI2RlZmluZSBIRVhfRVhDUF9GRVRDSF9OT19VUEFHRSAgMHgwMTIKKyNkZWZpbmUgSEVYX0VY Q1BfSU5WQUxJRF9QQUNLRVQgIDB4MDE1CisjZGVmaW5lIEhFWF9FWENQX0lOVkFMSURfT1BDT0RF ICAweDAxNQorI2RlZmluZSBIRVhfRVhDUF9QUklWX05PX1VSRUFEICAgMHgwMjQKKyNkZWZpbmUg SEVYX0VYQ1BfUFJJVl9OT19VV1JJVEUgIDB4MDI1CisKKyNkZWZpbmUgSEVYX0VYQ1BfVFJBUDAg ICAgICAgICAgIDB4MTcyCisKKyNkZWZpbmUgUEFDS0VUX1dPUkRTX01BWCAgICAgICAgIDQKKwor ZXh0ZXJuIGludCBkaXNhc3NlbWJsZV9oZXhhZ29uKHVpbnQzMl90ICp3b3JkcywgaW50IG53b3Jk cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIGludCBidWZzaXpl KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbnRlcm5hbC5oIGIvdGFy Z2V0L2hleGFnb24vaW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4zMjdiYWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW50ZXJuYWwuaApA QCAtMCwwICsxLDM2IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjAgUXVhbGNvbW0g SW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgSEVYQUdPTl9J TlRFUk5BTF9ICisjZGVmaW5lIEhFWEFHT05fSU5URVJOQUxfSAorCisvKgorICogQ2hhbmdlIEhF WF9ERUJVRyB0byAxIHRvIHR1cm4gb24gZGVidWdnaW5nIG91dHB1dAorICovCisjZGVmaW5lIEhF WF9ERUJVRyAwCisjZGVmaW5lIEhFWF9ERUJVR19MT0coLi4uKSBcCisgICAgZG8geyBcCisgICAg ICAgIGlmIChIRVhfREVCVUcpIHsgXAorICAgICAgICAgICAgcWVtdV9sb2coX19WQV9BUkdTX18p OyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisKK2V4dGVybiB2b2lkIGhleGFnb25f ZGVidWcoQ1BVSGV4YWdvblN0YXRlICplbnYpOworCitleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0 IGhleGFnb25fcmVnbmFtZXNbVE9UQUxfUEVSX1RIUkVBRF9SRUdTXTsKKworI2VuZGlmCmRpZmYg LS1naXQgYS90YXJnZXQvaGV4YWdvbi9jcHUuYyBiL3RhcmdldC9oZXhhZ29uL2NwdS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMGRhM2YKLS0tIC9kZXYvbnVsbAorKysg Yi90YXJnZXQvaGV4YWdvbi9jcHUuYwpAQCAtMCwwICsxLDMxMiBAQAorLyoKKyAqICBDb3B5cmln aHQoYykgMjAxOS0yMDIwIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdo dHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KyAqLworCisjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1ZGUgInFlbXUvbG9nLmgiCisj aW5jbHVkZSAicWVtdS9xZW11LXByaW50LmgiCisjaW5jbHVkZSAiY3B1LmgiCisjaW5jbHVkZSAi aW50ZXJuYWwuaCIKKyNpbmNsdWRlICJleGVjL2V4ZWMtYWxsLmgiCisjaW5jbHVkZSAicWFwaS9l cnJvci5oIgorI2luY2x1ZGUgImh3L3FkZXYtcHJvcGVydGllcy5oIgorCitzdGF0aWMgdm9pZCBo ZXhhZ29uX3Y2N19jcHVfaW5pdChPYmplY3QgKm9iaikKK3sKK30KKworc3RhdGljIE9iamVjdENs YXNzICpoZXhhZ29uX2NwdV9jbGFzc19ieV9uYW1lKGNvbnN0IGNoYXIgKmNwdV9tb2RlbCkKK3sK KyAgICBPYmplY3RDbGFzcyAqb2M7CisgICAgY2hhciAqdHlwZW5hbWU7CisgICAgY2hhciAqKmNw dW5hbWU7CisKKyAgICBjcHVuYW1lID0gZ19zdHJzcGxpdChjcHVfbW9kZWwsICIsIiwgMSk7Cisg ICAgdHlwZW5hbWUgPSBnX3N0cmR1cF9wcmludGYoSEVYQUdPTl9DUFVfVFlQRV9OQU1FKCIlcyIp LCBjcHVuYW1lWzBdKTsKKyAgICBvYyA9IG9iamVjdF9jbGFzc19ieV9uYW1lKHR5cGVuYW1lKTsK KyAgICBnX3N0cmZyZWV2KGNwdW5hbWUpOworICAgIGdfZnJlZSh0eXBlbmFtZSk7CisgICAgaWYg KCFvYyB8fCAhb2JqZWN0X2NsYXNzX2R5bmFtaWNfY2FzdChvYywgVFlQRV9IRVhBR09OX0NQVSkg fHwKKyAgICAgICAgb2JqZWN0X2NsYXNzX2lzX2Fic3RyYWN0KG9jKSkgeworICAgICAgICByZXR1 cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIG9jOworfQorCitzdGF0aWMgUHJvcGVydHkgaGV4 YWdvbl9sbGRiX2NvbXBhdF9wcm9wZXJ0eSA9CisgICAgREVGSU5FX1BST1BfQk9PTCgibGxkYi1j b21wYXQiLCBIZXhhZ29uQ1BVLCBsbGRiX2NvbXBhdCwgZmFsc2UpOworc3RhdGljIFByb3BlcnR5 IGhleGFnb25fbGxkYl9zdGFja19hZGp1c3RfcHJvcGVydHkgPQorICAgIERFRklORV9QUk9QX1VO U0lHTkVEKCJsbGRiLXN0YWNrLWFkanVzdCIsIEhleGFnb25DUFUsIGxsZGJfc3RhY2tfYWRqdXN0 LAorICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHFkZXZfcHJvcF91aW50MzIsIHRhcmdldF91 bG9uZyk7CisKK2NvbnN0IGNoYXIgKiBjb25zdCBoZXhhZ29uX3JlZ25hbWVzW1RPVEFMX1BFUl9U SFJFQURfUkVHU10gPSB7CisgICAicjAiLCAicjEiLCAgInIyIiwgICJyMyIsICAicjQiLCAgICJy NSIsICAicjYiLCAgInI3IiwKKyAgICJyOCIsICJyOSIsICAicjEwIiwgInIxMSIsICJyMTIiLCAg InIxMyIsICJyMTQiLCAicjE1IiwKKyAgInIxNiIsICJyMTciLCAicjE4IiwgInIxOSIsICJyMjAi LCAgInIyMSIsICJyMjIiLCAicjIzIiwKKyAgInIyNCIsICJyMjUiLCAicjI2IiwgInIyNyIsICJy MjgiLCAgInIyOSIsICJyMzAiLCAicjMxIiwKKyAgInNhMCIsICJsYzAiLCAic2ExIiwgImxjMSIs ICJwM18wIiwgImM1IiwgICJtMCIsICAibTEiLAorICAidXNyIiwgInBjIiwgICJ1Z3AiLCAiZ3Ai LCAgImNzMCIsICAiY3MxIiwgImMxNCIsICJjMTUiLAorICAiYzE2IiwgImMxNyIsICJjMTgiLCAi YzE5IiwgInBrdF9jbnQiLCAgImluc25fY250IiwgImMyMiIsICJjMjMiLAorICAiYzI0IiwgImMy NSIsICJjMjYiLCAiYzI3IiwgImMyOCIsICAiYzI5IiwgImMzMCIsICJjMzEiLAorfTsKKworLyoK KyAqIE9uZSBvZiB0aGUgbWFpbiBkZWJ1Z2dpbmcgdGVjaG5pcXVlcyBpcyB0byB1c2UgIi1kIGNw dSIgYW5kIGNvbXBhcmUgYWdhaW5zdAorICogTExEQiBvdXRwdXQgd2hlbiBzaW5nbGUgc3RlcHBp bmcuICBIb3dldmVyLCB0aGUgdGFyZ2V0IGFuZCBxZW11IHB1dCB0aGUKKyAqIHN0YWNrcyBhdCBk aWZmZXJlbnQgbG9jYXRpb25zLiAgVGhpcyBpcyB1c2VkIHRvIGNvbXBlbnNhdGUgc28gdGhlIGRp ZmYgaXMKKyAqIGNsZWFuZXIuCisgKi8KK3N0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGFkanVz dF9zdGFja19wdHJzKENQVUhleGFnb25TdGF0ZSAqZW52LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGFkZHIpCit7CisgICAgSGV4YWdv bkNQVSAqY3B1ID0gY29udGFpbmVyX29mKGVudiwgSGV4YWdvbkNQVSwgZW52KTsKKyAgICB0YXJn ZXRfdWxvbmcgc3RhY2tfYWRqdXN0ID0gY3B1LT5sbGRiX3N0YWNrX2FkanVzdDsKKworICAgIGlm IChzdGFja19hZGp1c3QgPT0gMCkgeworICAgICAgICByZXR1cm4gYWRkcjsKKyAgICB9CisKKyAg ICB0YXJnZXRfdWxvbmcgc3RhY2tfc3RhcnQgPSBlbnYtPnN0YWNrX3N0YXJ0OworICAgIHRhcmdl dF91bG9uZyBzdGFja19zaXplID0gMHgxMDAwMDsKKworICAgIGlmIChzdGFja19zdGFydCArIDB4 MTAwMCA+PSBhZGRyICYmIGFkZHIgPj0gKHN0YWNrX3N0YXJ0IC0gc3RhY2tfc2l6ZSkpIHsKKyAg ICAgICAgcmV0dXJuIGFkZHIgLSBzdGFja19hZGp1c3Q7CisgICAgfQorICAgIHJldHVybiBhZGRy OworfQorCisvKiBIRVhfUkVHX1AzXzAgKGFrYSBDNCkgaXMgYW4gYWxpYXMgZm9yIHRoZSBwcmVk aWNhdGUgcmVnaXN0ZXJzICovCitzdGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyByZWFkX3AzXzAo Q1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAgaW50MzJfdCBjb250cm9sX3JlZyA9IDA7Cisg ICAgaW50IGk7CisgICAgZm9yIChpID0gTlVNX1BSRUdTIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAg ICAgICAgY29udHJvbF9yZWcgPDw9IDg7CisgICAgICAgIGNvbnRyb2xfcmVnIHw9IGVudi0+cHJl ZFtpXSAmIDB4ZmY7CisgICAgfQorICAgIHJldHVybiBjb250cm9sX3JlZzsKK30KKworc3RhdGlj IHZvaWQgcHJpbnRfcmVnKEZJTEUgKmYsIENQVUhleGFnb25TdGF0ZSAqZW52LCBpbnQgcmVnbnVt KQoreworICAgIHRhcmdldF91bG9uZyB2YWx1ZTsKKworICAgIGlmIChyZWdudW0gPT0gSEVYX1JF R19QM18wKSB7CisgICAgICAgIHZhbHVlID0gcmVhZF9wM18wKGVudik7CisgICAgfSBlbHNlIHsK KyAgICAgICAgdmFsdWUgPSByZWdudW0gPCAzMiA/IGFkanVzdF9zdGFja19wdHJzKGVudiwgZW52 LT5ncHJbcmVnbnVtXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGVudi0+Z3ByW3Jl Z251bV07CisgICAgfQorCisgICAgcWVtdV9mcHJpbnRmKGYsICIgICVzID0gMHgiIFRBUkdFVF9G TVRfbHggIlxuIiwKKyAgICAgICAgICAgICAgICAgaGV4YWdvbl9yZWduYW1lc1tyZWdudW1dLCB2 YWx1ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGhleGFnb25fZHVtcChDUFVIZXhhZ29uU3RhdGUgKmVu diwgRklMRSAqZikKK3sKKyAgICBIZXhhZ29uQ1BVICpjcHUgPSBjb250YWluZXJfb2YoZW52LCBI ZXhhZ29uQ1BVLCBlbnYpOworCisgICAgaWYgKGNwdS0+bGxkYl9jb21wYXQpIHsKKyAgICAgICAg LyoKKyAgICAgICAgICogV2hlbiBjb21wYXJpbmcgd2l0aCBMTERCLCBpdCBkb2Vzbid0IHN0ZXAg dGhyb3VnaCBzaW5nbGUtY3ljbGUKKyAgICAgICAgICogaGFyZHdhcmUgbG9vcHMgdGhlIHNhbWUg d2F5LiAgU28sIHdlIGp1c3Qgc2tpcCB0aGVtIGhlcmUKKyAgICAgICAgICovCisgICAgICAgIGlm IChlbnYtPmdwcltIRVhfUkVHX1BDXSA9PSBlbnYtPmxhc3RfcGNfZHVtcGVkKSB7CisgICAgICAg ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZW52LT5sYXN0X3BjX2R1bXBlZCA9IGVu di0+Z3ByW0hFWF9SRUdfUENdOworICAgIH0KKworICAgIHFlbXVfZnByaW50ZihmLCAiR2VuZXJh bCBQdXJwb3NlIFJlZ2lzdGVycyA9IHtcbiIpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzI7 IGkrKykgeworICAgICAgICBwcmludF9yZWcoZiwgZW52LCBpKTsKKyAgICB9CisgICAgcHJpbnRf cmVnKGYsIGVudiwgSEVYX1JFR19TQTApOworICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdf TEMwKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX1NBMSk7CisgICAgcHJpbnRfcmVn KGYsIGVudiwgSEVYX1JFR19MQzEpOworICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfTTAp OworICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfTTEpOworICAgIHByaW50X3JlZyhmLCBl bnYsIEhFWF9SRUdfVVNSKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX1AzXzApOwor ICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfR1ApOworICAgIHByaW50X3JlZyhmLCBlbnYs IEhFWF9SRUdfVUdQKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX1BDKTsKKyNpZmRl ZiBDT05GSUdfVVNFUl9PTkxZCisgICAgLyoKKyAgICAgKiBOb3QgbW9kZWxsZWQgaW4gdXNlciBt b2RlLCBwcmludCBqdW5rIHRvIG1pbmltaXplIHRoZSBkaWZmJ3MKKyAgICAgKiB3aXRoIExMREIg b3V0cHV0CisgICAgICovCisgICAgcWVtdV9mcHJpbnRmKGYsICIgIGNhdXNlID0gMHgwMDAwMDBk YlxuIik7CisgICAgcWVtdV9mcHJpbnRmKGYsICIgIGJhZHZhID0gMHgwMDAwMDAwMFxuIik7Cisg ICAgcWVtdV9mcHJpbnRmKGYsICIgIGNzMCA9IDB4MDAwMDAwMDBcbiIpOworICAgIHFlbXVfZnBy aW50ZihmLCAiICBjczEgPSAweDAwMDAwMDAwXG4iKTsKKyNlbHNlCisgICAgcHJpbnRfcmVnKGYs IGVudiwgSEVYX1JFR19DQVVTRSk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19CQURW QSk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19DUzApOworICAgIHByaW50X3JlZyhm LCBlbnYsIEhFWF9SRUdfQ1MxKTsKKyNlbmRpZgorICAgIHFlbXVfZnByaW50ZihmLCAifVxuIik7 Cit9CisKK3N0YXRpYyB2b2lkIGhleGFnb25fZHVtcF9zdGF0ZShDUFVTdGF0ZSAqY3MsIEZJTEUg KmYsIGludCBmbGFncykKK3sKKyAgICBIZXhhZ29uQ1BVICpjcHUgPSBIRVhBR09OX0NQVShjcyk7 CisgICAgQ1BVSGV4YWdvblN0YXRlICplbnYgPSAmY3B1LT5lbnY7CisKKyAgICBoZXhhZ29uX2R1 bXAoZW52LCBmKTsKK30KKwordm9pZCBoZXhhZ29uX2RlYnVnKENQVUhleGFnb25TdGF0ZSAqZW52 KQoreworICAgIGhleGFnb25fZHVtcChlbnYsIHN0ZG91dCk7Cit9CisKK3N0YXRpYyB2b2lkIGhl eGFnb25fY3B1X3NldF9wYyhDUFVTdGF0ZSAqY3MsIHZhZGRyIHZhbHVlKQoreworICAgIEhleGFn b25DUFUgKmNwdSA9IEhFWEFHT05fQ1BVKGNzKTsKKyAgICBDUFVIZXhhZ29uU3RhdGUgKmVudiA9 ICZjcHUtPmVudjsKKyAgICBlbnYtPmdwcltIRVhfUkVHX1BDXSA9IHZhbHVlOworfQorCitzdGF0 aWMgdm9pZCBoZXhhZ29uX2NwdV9zeW5jaHJvbml6ZV9mcm9tX3RiKENQVVN0YXRlICpjcywgVHJh bnNsYXRpb25CbG9jayAqdGIpCit7CisgICAgSGV4YWdvbkNQVSAqY3B1ID0gSEVYQUdPTl9DUFUo Y3MpOworICAgIENQVUhleGFnb25TdGF0ZSAqZW52ID0gJmNwdS0+ZW52OworICAgIGVudi0+Z3By W0hFWF9SRUdfUENdID0gdGItPnBjOworfQorCitzdGF0aWMgYm9vbCBoZXhhZ29uX2NwdV9oYXNf d29yayhDUFVTdGF0ZSAqY3MpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgcmVzdG9y ZV9zdGF0ZV90b19vcGMoQ1BVSGV4YWdvblN0YXRlICplbnYsIFRyYW5zbGF0aW9uQmxvY2sgKnRi LAorICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgKmRhdGEpCit7CisgICAg ZW52LT5ncHJbSEVYX1JFR19QQ10gPSBkYXRhWzBdOworfQorCitzdGF0aWMgdm9pZCBoZXhhZ29u X2NwdV9yZXNldChEZXZpY2VTdGF0ZSAqZGV2KQoreworICAgIENQVVN0YXRlICpjcyA9IENQVShk ZXYpOworICAgIEhleGFnb25DUFUgKmNwdSA9IEhFWEFHT05fQ1BVKGNzKTsKKyAgICBIZXhhZ29u Q1BVQ2xhc3MgKm1jYyA9IEhFWEFHT05fQ1BVX0dFVF9DTEFTUyhjcHUpOworCisgICAgbWNjLT5w YXJlbnRfcmVzZXQoZGV2KTsKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9jcHVfZGlzYXNfc2V0 X2luZm8oQ1BVU3RhdGUgKnMsIGRpc2Fzc2VtYmxlX2luZm8gKmluZm8pCit7CisgICAgaW5mby0+ cHJpbnRfaW5zbiA9IHByaW50X2luc25faGV4YWdvbjsKK30KKworc3RhdGljIHZvaWQgaGV4YWdv bl9jcHVfcmVhbGl6ZShEZXZpY2VTdGF0ZSAqZGV2LCBFcnJvciAqKmVycnApCit7CisgICAgQ1BV U3RhdGUgKmNzID0gQ1BVKGRldik7CisgICAgSGV4YWdvbkNQVUNsYXNzICptY2MgPSBIRVhBR09O X0NQVV9HRVRfQ0xBU1MoZGV2KTsKKyAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsKKworICAg IGNwdV9leGVjX3JlYWxpemVmbihjcywgJmxvY2FsX2Vycik7CisgICAgaWYgKGxvY2FsX2VyciAh PSBOVUxMKSB7CisgICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBsb2NhbF9lcnIpOworICAg ICAgICByZXR1cm47CisgICAgfQorCisgICAgcWVtdV9pbml0X3ZjcHUoY3MpOworICAgIGNwdV9y ZXNldChjcyk7CisKKyAgICBtY2MtPnBhcmVudF9yZWFsaXplKGRldiwgZXJycCk7Cit9CisKK3N0 YXRpYyB2b2lkIGhleGFnb25fY3B1X2luaXQoT2JqZWN0ICpvYmopCit7CisgICAgSGV4YWdvbkNQ VSAqY3B1ID0gSEVYQUdPTl9DUFUob2JqKTsKKworICAgIGNwdV9zZXRfY3B1c3RhdGVfcG9pbnRl cnMoY3B1KTsKKyAgICBxZGV2X3Byb3BlcnR5X2FkZF9zdGF0aWMoREVWSUNFKG9iaiksICZoZXhh Z29uX2xsZGJfY29tcGF0X3Byb3BlcnR5KTsKKyAgICBxZGV2X3Byb3BlcnR5X2FkZF9zdGF0aWMo REVWSUNFKG9iaiksICZoZXhhZ29uX2xsZGJfc3RhY2tfYWRqdXN0X3Byb3BlcnR5KTsKK30KKwor c3RhdGljIGJvb2wgaGV4YWdvbl90bGJfZmlsbChDUFVTdGF0ZSAqY3MsIHZhZGRyIGFkZHJlc3Ms IGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNTVVBY2Nlc3NUeXBlIGFj Y2Vzc190eXBlLCBpbnQgbW11X2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v bCBwcm9iZSwgdWludHB0cl90IHJldGFkZHIpCit7CisjaWZkZWYgQ09ORklHX1VTRVJfT05MWQor ICAgIHN3aXRjaCAoYWNjZXNzX3R5cGUpIHsKKyAgICBjYXNlIE1NVV9JTlNUX0ZFVENIOgorICAg ICAgICBjcy0+ZXhjZXB0aW9uX2luZGV4ID0gSEVYX0VYQ1BfRkVUQ0hfTk9fVVBBR0U7CisgICAg ICAgIGJyZWFrOworICAgIGNhc2UgTU1VX0RBVEFfTE9BRDoKKyAgICAgICAgY3MtPmV4Y2VwdGlv bl9pbmRleCA9IEhFWF9FWENQX1BSSVZfTk9fVVJFQUQ7CisgICAgICAgIGJyZWFrOworICAgIGNh c2UgTU1VX0RBVEFfU1RPUkU6CisgICAgICAgIGNzLT5leGNlcHRpb25faW5kZXggPSBIRVhfRVhD UF9QUklWX05PX1VXUklURTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNwdV9sb29wX2V4 aXRfcmVzdG9yZShjcywgcmV0YWRkcik7CisjZWxzZQorI2Vycm9yIFN5c3RlbSBtb2RlIG5vdCBp bXBsZW1lbnRlZCBmb3IgSGV4YWdvbgorI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIGhleGFnb25f Y3B1X2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmMsIHZvaWQgKmRhdGEpCit7CisgICAgSGV4YWdv bkNQVUNsYXNzICptY2MgPSBIRVhBR09OX0NQVV9DTEFTUyhjKTsKKyAgICBDUFVDbGFzcyAqY2Mg PSBDUFVfQ0xBU1MoYyk7CisgICAgRGV2aWNlQ2xhc3MgKmRjID0gREVWSUNFX0NMQVNTKGMpOwor CisgICAgZGV2aWNlX2NsYXNzX3NldF9wYXJlbnRfcmVhbGl6ZShkYywgaGV4YWdvbl9jcHVfcmVh bGl6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtY2MtPnBhcmVudF9y ZWFsaXplKTsKKworICAgIGRldmljZV9jbGFzc19zZXRfcGFyZW50X3Jlc2V0KGRjLCBoZXhhZ29u X2NwdV9yZXNldCwgJm1jYy0+cGFyZW50X3Jlc2V0KTsKKworICAgIGNjLT5jbGFzc19ieV9uYW1l ID0gaGV4YWdvbl9jcHVfY2xhc3NfYnlfbmFtZTsKKyAgICBjYy0+aGFzX3dvcmsgPSBoZXhhZ29u X2NwdV9oYXNfd29yazsKKyAgICBjYy0+ZHVtcF9zdGF0ZSA9IGhleGFnb25fZHVtcF9zdGF0ZTsK KyAgICBjYy0+c2V0X3BjID0gaGV4YWdvbl9jcHVfc2V0X3BjOworICAgIGNjLT5zeW5jaHJvbml6 ZV9mcm9tX3RiID0gaGV4YWdvbl9jcHVfc3luY2hyb25pemVfZnJvbV90YjsKKyAgICBjYy0+Z2Ri X251bV9jb3JlX3JlZ3MgPSBUT1RBTF9QRVJfVEhSRUFEX1JFR1M7CisgICAgY2MtPmdkYl9zdG9w X2JlZm9yZV93YXRjaHBvaW50ID0gdHJ1ZTsKKyAgICBjYy0+ZGlzYXNfc2V0X2luZm8gPSBoZXhh Z29uX2NwdV9kaXNhc19zZXRfaW5mbzsKKyNpZmRlZiBDT05GSUdfVENHCisgICAgY2MtPnRjZ19p bml0aWFsaXplID0gaGV4YWdvbl90cmFuc2xhdGVfaW5pdDsKKyAgICBjYy0+dGxiX2ZpbGwgPSBo ZXhhZ29uX3RsYl9maWxsOworI2VuZGlmCit9CisKKyNkZWZpbmUgREVGSU5FX0NQVSh0eXBlX25h bWUsIGluaXRmbikgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAubmFtZSA9IHR5cGVfbmFtZSwgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgLnBhcmVudCA9IFRZUEVfSEVYQUdPTl9DUFUsICAgICAgICBcCisgICAgICAgIC5pbnN0 YW5jZV9pbml0ID0gaW5pdGZuICAgICAgICAgICAgXAorICAgIH0KKworc3RhdGljIGNvbnN0IFR5 cGVJbmZvIGhleGFnb25fY3B1X3R5cGVfaW5mb3NbXSA9IHsKKyAgICB7CisgICAgICAgIC5uYW1l ID0gVFlQRV9IRVhBR09OX0NQVSwKKyAgICAgICAgLnBhcmVudCA9IFRZUEVfQ1BVLAorICAgICAg ICAuaW5zdGFuY2Vfc2l6ZSA9IHNpemVvZihIZXhhZ29uQ1BVKSwKKyAgICAgICAgLmluc3RhbmNl X2luaXQgPSBoZXhhZ29uX2NwdV9pbml0LAorICAgICAgICAuYWJzdHJhY3QgPSB0cnVlLAorICAg ICAgICAuY2xhc3Nfc2l6ZSA9IHNpemVvZihIZXhhZ29uQ1BVQ2xhc3MpLAorICAgICAgICAuY2xh c3NfaW5pdCA9IGhleGFnb25fY3B1X2NsYXNzX2luaXQsCisgICAgfSwKKyAgICBERUZJTkVfQ1BV KFRZUEVfSEVYQUdPTl9DUFVfVjY3LCAgICAgICAgICAgICAgaGV4YWdvbl92NjdfY3B1X2luaXQp LAorfTsKKworREVGSU5FX1RZUEVTKGhleGFnb25fY3B1X3R5cGVfaW5mb3MpCi0tIAoyLjcuNAoK