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 ABE0CC2D0A8 for ; Mon, 28 Sep 2020 12:56:00 +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 28EBD206D9 for ; Mon, 28 Sep 2020 12:55:59 +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="dFi/2ybk" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 28EBD206D9 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]:47870 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kMshD-0007vT-3A for qemu-devel@archiver.kernel.org; Mon, 28 Sep 2020 08:55:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50066) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kMsPR-0004kj-Tr for qemu-devel@nongnu.org; Mon, 28 Sep 2020 08:37:39 -0400 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:39953) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kMsPJ-0005eT-5U for qemu-devel@nongnu.org; Mon, 28 Sep 2020 08:37:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1601296649; x=1632832649; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1+6dwTgAe6Wdhhvh9bBQ9kPsqHSXQ068rB74ooT4uBQ=; b=dFi/2ybk/3GaNHUrX6WNKJMHQIn/WnY8gbXv+2jX7vUZPqO4WvpGZHqc MwTwer3hAxzMwB8i7C0GHe82/Wv8Df6MhwwOBi5xD+DaijElYMsvh89Tl 1dJwUkWhc+A+SbXywx7Piz1rr+yRmGbJWCy+YUrNKzr3q/yYAICewDIBl 0=; Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by alexa-out-sd-02.qualcomm.com with ESMTP; 28 Sep 2020 05:36:54 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg04-sd.qualcomm.com with ESMTP; 28 Sep 2020 05:36:54 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 51D9C115E; Mon, 28 Sep 2020 07:36:54 -0500 (CDT) From: Taylor Simpson To: tsimpson@quicinc.com Subject: [RFC PATCH v4 24/29] Hexagon (target/hexagon) TCG generation Date: Mon, 28 Sep 2020 07:36:43 -0500 Message-Id: <1601296608-29390-25-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" SW5jbHVkZSB0aGUgZ2VuZXJhdGVkIGZpbGVzIGFuZCBzZXQgdXAgdGhlIGRhdGEgc3RydWN0dXJl cwoKU2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgot LS0KIHRhcmdldC9oZXhhZ29uL2dlbnB0ci5oIHwgIDI1ICsrKysrKwogdGFyZ2V0L2hleGFnb24v Z2VucHRyLmMgfCAyMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDI1OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgdGFyZ2V0L2hleGFnb24vZ2VucHRyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQv aGV4YWdvbi9nZW5wdHIuYwoKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2dlbnB0ci5oIGIv dGFyZ2V0L2hleGFnb24vZ2VucHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uY2YyN2EwMgotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2dlbnB0ci5oCkBA IC0wLDAgKzEsMjUgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJ bm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBIRVhBR09OX0dF TlBUUl9ICisjZGVmaW5lIEhFWEFHT05fR0VOUFRSX0gKKworI2luY2x1ZGUgImluc24uaCIKKwor ZXh0ZXJuIGNvbnN0IHNlbWFudGljX2luc25fdCBvcGNvZGVfZ2VucHRyW107CisKKyNlbmRpZgpk aWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vZ2VucHRyLmMgYi90YXJnZXQvaGV4YWdvbi9nZW5w dHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTIzM2E0Ci0tLSAvZGV2 L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vZ2VucHRyLmMKQEAgLTAsMCArMSwyMzQgQEAKKy8q CisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwg SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisgKi8KKworI2RlZmluZSBRRU1VX0dFTkVSQVRFCisjaW5jbHVkZSAicWVt dS9vc2RlcC5oIgorI2luY2x1ZGUgInFlbXUvbG9nLmgiCisjaW5jbHVkZSAiY3B1LmgiCisjaW5j bHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0Y2cvdGNnLW9wLmgiCisjaW5jbHVkZSAiaW5z bi5oIgorI2luY2x1ZGUgIm9wY29kZXMuaCIKKyNpbmNsdWRlICJ0cmFuc2xhdGUuaCIKKyNpbmNs dWRlICJtYWNyb3MuaCIKKyNpbmNsdWRlICJnZW5fdGNnLmgiCisKK3N0YXRpYyBpbmxpbmUgVENH diBnZW5fcmVhZF9yZWcoVENHdiByZXN1bHQsIGludCBudW0pCit7CisgICAgdGNnX2dlbl9tb3Zf dGwocmVzdWx0LCBoZXhfZ3ByW251bV0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRp YyBpbmxpbmUgVENHdiBnZW5fcmVhZF9wcmVnKFRDR3YgcHJlZCwgdWludDhfdCBudW0pCit7Cisg ICAgdGNnX2dlbl9tb3ZfdGwocHJlZCwgaGV4X3ByZWRbbnVtXSk7CisgICAgcmV0dXJuIHByZWQ7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbG9nX3ByZWRpY2F0ZWRfcmVnX3dyaXRlKGlu dCBybnVtLCBUQ0d2IHZhbCwgaW50IHNsb3QpCit7CisgICAgVENHdiBvbmUgPSB0Y2dfY29uc3Rf dGwoMSk7CisgICAgVENHdiB6ZXJvID0gdGNnX2NvbnN0X3RsKDApOworICAgIFRDR3Ygc2xvdF9t YXNrID0gdGNnX3RlbXBfbmV3KCk7CisKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoc2xvdF9tYXNrLCBo ZXhfc2xvdF9jYW5jZWxsZWQsIDEgPDwgc2xvdCk7CisgICAgdGNnX2dlbl9tb3Zjb25kX3RsKFRD R19DT05EX0VRLCBoZXhfbmV3X3ZhbHVlW3JudW1dLCBzbG90X21hc2ssIHplcm8sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YWwsIGhleF9uZXdfdmFsdWVbcm51bV0pOworI2lmIEhFWF9E RUJVRworICAgIC8qIERvIHRoaXMgc28gSEVMUEVSKGRlYnVnX2NvbW1pdF9lbmQpIHdpbGwga25v dyAqLworICAgIHRjZ19nZW5fbW92Y29uZF90bChUQ0dfQ09ORF9FUSwgaGV4X3JlZ193cml0dGVu W3JudW1dLCBzbG90X21hc2ssIHplcm8sCisgICAgICAgICAgICAgICAgICAgICAgIG9uZSwgaGV4 X3JlZ193cml0dGVuW3JudW1dKTsKKyNlbmRpZgorCisgICAgdGNnX3RlbXBfZnJlZShvbmUpOwor ICAgIHRjZ190ZW1wX2ZyZWUoemVybyk7CisgICAgdGNnX3RlbXBfZnJlZShzbG90X21hc2spOwor fQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xvZ19yZWdfd3JpdGUoaW50IHJudW0sIFRDR3Yg dmFsKQoreworICAgIHRjZ19nZW5fbW92X3RsKGhleF9uZXdfdmFsdWVbcm51bV0sIHZhbCk7Cisj aWYgSEVYX0RFQlVHCisgICAgLyogRG8gdGhpcyBzbyBIRUxQRVIoZGVidWdfY29tbWl0X2VuZCkg d2lsbCBrbm93ICovCisgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF9yZWdfd3JpdHRlbltybnVtXSwg MSk7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgZ2VuX2xvZ19wcmVkaWNhdGVkX3JlZ193cml0 ZV9wYWlyKGludCBybnVtLCBUQ0d2X2k2NCB2YWwsIGludCBzbG90KQoreworICAgIFRDR3YgdmFs MzIgPSB0Y2dfdGVtcF9uZXcoKTsKKyAgICBUQ0d2IG9uZSA9IHRjZ19jb25zdF90bCgxKTsKKyAg ICBUQ0d2IHplcm8gPSB0Y2dfY29uc3RfdGwoMCk7CisgICAgVENHdiBzbG90X21hc2sgPSB0Y2df dGVtcF9uZXcoKTsKKworICAgIHRjZ19nZW5fYW5kaV90bChzbG90X21hc2ssIGhleF9zbG90X2Nh bmNlbGxlZCwgMSA8PCBzbG90KTsKKyAgICAvKiBMb3cgd29yZCAqLworICAgIHRjZ19nZW5fZXh0 cmxfaTY0X2kzMih2YWwzMiwgdmFsKTsKKyAgICB0Y2dfZ2VuX21vdmNvbmRfdGwoVENHX0NPTkRf RVEsIGhleF9uZXdfdmFsdWVbcm51bV0sIHNsb3RfbWFzaywgemVybywKKyAgICAgICAgICAgICAg ICAgICAgICAgdmFsMzIsIGhleF9uZXdfdmFsdWVbcm51bV0pOworI2lmIEhFWF9ERUJVRworICAg IC8qIERvIHRoaXMgc28gSEVMUEVSKGRlYnVnX2NvbW1pdF9lbmQpIHdpbGwga25vdyAqLworICAg IHRjZ19nZW5fbW92Y29uZF90bChUQ0dfQ09ORF9FUSwgaGV4X3JlZ193cml0dGVuW3JudW1dLAor ICAgICAgICAgICAgICAgICAgICAgICBzbG90X21hc2ssIHplcm8sCisgICAgICAgICAgICAgICAg ICAgICAgIG9uZSwgaGV4X3JlZ193cml0dGVuW3JudW1dKTsKKyNlbmRpZgorCisgICAgLyogSGln aCB3b3JkICovCisgICAgdGNnX2dlbl9leHRyaF9pNjRfaTMyKHZhbDMyLCB2YWwpOworICAgIHRj Z19nZW5fbW92Y29uZF90bChUQ0dfQ09ORF9FUSwgaGV4X25ld192YWx1ZVtybnVtICsgMV0sCisg ICAgICAgICAgICAgICAgICAgICAgIHNsb3RfbWFzaywgemVybywKKyAgICAgICAgICAgICAgICAg ICAgICAgdmFsMzIsIGhleF9uZXdfdmFsdWVbcm51bSArIDFdKTsKKyNpZiBIRVhfREVCVUcKKyAg ICAvKiBEbyB0aGlzIHNvIEhFTFBFUihkZWJ1Z19jb21taXRfZW5kKSB3aWxsIGtub3cgKi8KKyAg ICB0Y2dfZ2VuX21vdmNvbmRfdGwoVENHX0NPTkRfRVEsIGhleF9yZWdfd3JpdHRlbltybnVtICsg MV0sCisgICAgICAgICAgICAgICAgICAgICAgIHNsb3RfbWFzaywgemVybywKKyAgICAgICAgICAg ICAgICAgICAgICAgb25lLCBoZXhfcmVnX3dyaXR0ZW5bcm51bSArIDFdKTsKKyNlbmRpZgorCisg ICAgdGNnX3RlbXBfZnJlZSh2YWwzMik7CisgICAgdGNnX3RlbXBfZnJlZShvbmUpOworICAgIHRj Z190ZW1wX2ZyZWUoemVybyk7CisgICAgdGNnX3RlbXBfZnJlZShzbG90X21hc2spOworfQorCitz dGF0aWMgdm9pZCBnZW5fbG9nX3JlZ193cml0ZV9wYWlyKGludCBybnVtLCBUQ0d2X2k2NCB2YWwp Cit7CisgICAgLyogTG93IHdvcmQgKi8KKyAgICB0Y2dfZ2VuX2V4dHJsX2k2NF9pMzIoaGV4X25l d192YWx1ZVtybnVtXSwgdmFsKTsKKyNpZiBIRVhfREVCVUcKKyAgICAvKiBEbyB0aGlzIHNvIEhF TFBFUihkZWJ1Z19jb21taXRfZW5kKSB3aWxsIGtub3cgKi8KKyAgICB0Y2dfZ2VuX21vdmlfdGwo aGV4X3JlZ193cml0dGVuW3JudW1dLCAxKTsKKyNlbmRpZgorCisgICAgLyogSGlnaCB3b3JkICov CisgICAgdGNnX2dlbl9leHRyaF9pNjRfaTMyKGhleF9uZXdfdmFsdWVbcm51bSArIDFdLCB2YWwp OworI2lmIEhFWF9ERUJVRworICAgIC8qIERvIHRoaXMgc28gSEVMUEVSKGRlYnVnX2NvbW1pdF9l bmQpIHdpbGwga25vdyAqLworICAgIHRjZ19nZW5fbW92aV90bChoZXhfcmVnX3dyaXR0ZW5bcm51 bSArIDFdLCAxKTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xvZ19wcmVk X3dyaXRlKGludCBwbnVtLCBUQ0d2IHZhbCkKK3sKKyAgICBUQ0d2IHplcm8gPSB0Y2dfY29uc3Rf dGwoMCk7CisgICAgVENHdiBiYXNlX3ZhbCA9IHRjZ190ZW1wX25ldygpOworICAgIFRDR3YgYW5k X3ZhbCA9IHRjZ190ZW1wX25ldygpOworICAgIFRDR3YgcHJlZF93cml0dGVuID0gdGNnX3RlbXBf bmV3KCk7CisKKyAgICAvKiBNdWx0aXBsZSB3cml0ZXMgdG8gdGhlIHNhbWUgcHJlZyBhcmUgYW5k J2VkIHRvZ2V0aGVyICovCisgICAgdGNnX2dlbl9hbmRpX3RsKGJhc2VfdmFsLCB2YWwsIDB4ZmYp OworICAgIHRjZ19nZW5fYW5kX3RsKGFuZF92YWwsIGJhc2VfdmFsLCBoZXhfbmV3X3ByZWRfdmFs dWVbcG51bV0pOworICAgIHRjZ19nZW5fYW5kaV90bChwcmVkX3dyaXR0ZW4sIGhleF9wcmVkX3dy aXR0ZW4sIDEgPDwgcG51bSk7CisgICAgdGNnX2dlbl9tb3Zjb25kX3RsKFRDR19DT05EX05FLCBo ZXhfbmV3X3ByZWRfdmFsdWVbcG51bV0sCisgICAgICAgICAgICAgICAgICAgICAgIHByZWRfd3Jp dHRlbiwgemVybywKKyAgICAgICAgICAgICAgICAgICAgICAgYW5kX3ZhbCwgYmFzZV92YWwpOwor ICAgIHRjZ19nZW5fb3JpX3RsKGhleF9wcmVkX3dyaXR0ZW4sIGhleF9wcmVkX3dyaXR0ZW4sIDEg PDwgcG51bSk7CisKKyAgICB0Y2dfdGVtcF9mcmVlKHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWUo YmFzZV92YWwpOworICAgIHRjZ190ZW1wX2ZyZWUoYW5kX3ZhbCk7CisgICAgdGNnX3RlbXBfZnJl ZShwcmVkX3dyaXR0ZW4pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3JlYWRfcDNfMChU Q0d2IGNvbnRyb2xfcmVnKQoreworICAgIHRjZ19nZW5fbW92aV90bChjb250cm9sX3JlZywgMCk7 CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fUFJFR1M7IGkrKykgeworICAgICAgICB0Y2df Z2VuX2RlcG9zaXRfdGwoY29udHJvbF9yZWcsIGNvbnRyb2xfcmVnLCBoZXhfcHJlZFtpXSwgaSAq IDgsIDgpOworICAgIH0KK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl93cml0ZV9wM18wKFRD R3YgY29udHJvbF9yZWcpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fUFJFR1M7IGkr KykgeworICAgICAgICB0Y2dfZ2VuX2V4dHJhY3RfdGwoaGV4X3ByZWRbaV0sIGNvbnRyb2xfcmVn LCBpICogOCwgOCk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xvYWRfbG9j a2VkNHUoVENHdiBkZXN0LCBUQ0d2IHZhZGRyLCBpbnQgbWVtX2luZGV4KQoreworICAgIHRjZ19n ZW5fcWVtdV9sZDMydShkZXN0LCB2YWRkciwgbWVtX2luZGV4KTsKKyAgICB0Y2dfZ2VuX21vdl90 bChoZXhfbGxzY19hZGRyLCB2YWRkcik7CisgICAgdGNnX2dlbl9tb3ZfdGwoaGV4X2xsc2NfdmFs LCBkZXN0KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9sb2FkX2xvY2tlZDh1KFRDR3Zf aTY0IGRlc3QsIFRDR3YgdmFkZHIsIGludCBtZW1faW5kZXgpCit7CisgICAgdGNnX2dlbl9xZW11 X2xkNjQoZGVzdCwgdmFkZHIsIG1lbV9pbmRleCk7CisgICAgdGNnX2dlbl9tb3ZfdGwoaGV4X2xs c2NfYWRkciwgdmFkZHIpOworICAgIHRjZ19nZW5fbW92X2k2NChoZXhfbGxzY192YWxfaTY0LCBk ZXN0KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9zdG9yZV9jb25kaXRpb25hbDQoQ1BV SGV4YWdvblN0YXRlICplbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBEaXNhc0NvbnRleHQgKmN0eCwgaW50IHByZWRudW0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUQ0d2IHByZWQsIFRDR3YgdmFkZHIsIFRDR3Ygc3JjKQor eworICAgIFRDR0xhYmVsICpmYWlsID0gZ2VuX25ld19sYWJlbCgpOworICAgIFRDR0xhYmVsICpk b25lID0gZ2VuX25ld19sYWJlbCgpOworCisgICAgdGNnX2dlbl9icmNvbmRfdGwoVENHX0NPTkRf TkUsIHZhZGRyLCBoZXhfbGxzY19hZGRyLCBmYWlsKTsKKworICAgIFRDR3Ygb25lID0gdGNnX2Nv bnN0X3RsKDB4ZmYpOworICAgIFRDR3YgemVybyA9IHRjZ19jb25zdF90bCgwKTsKKyAgICBUQ0d2 IHRtcCA9IHRjZ190ZW1wX25ldygpOworICAgIHRjZ19nZW5fYXRvbWljX2NtcHhjaGdfdGwodG1w LCBoZXhfbGxzY19hZGRyLCBoZXhfbGxzY192YWwsIHNyYywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC0+bWVtX2lkeCwgTU9fMzIpOworICAgIHRjZ19nZW5fbW92Y29uZF90bChU Q0dfQ09ORF9FUSwgaGV4X3ByZWRbcHJlZG51bV0sIHRtcCwgaGV4X2xsc2NfdmFsLAorICAgICAg ICAgICAgICAgICAgICAgICBvbmUsIHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWUob25lKTsKKyAg ICB0Y2dfdGVtcF9mcmVlKHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWUodG1wKTsKKyAgICB0Y2df Z2VuX2JyKGRvbmUpOworCisgICAgZ2VuX3NldF9sYWJlbChmYWlsKTsKKyAgICB0Y2dfZ2VuX21v dmlfdGwocHJlZCwgMCk7CisKKyAgICBnZW5fc2V0X2xhYmVsKGRvbmUpOworICAgIHRjZ19nZW5f bW92aV90bChoZXhfbGxzY19hZGRyLCB+MCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5f c3RvcmVfY29uZGl0aW9uYWw4KENQVUhleGFnb25TdGF0ZSAqZW52LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzYXNDb250ZXh0ICpjdHgsIGludCBwcmVkbnVt LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHdiBwcmVkLCBU Q0d2IHZhZGRyLCBUQ0d2X2k2NCBzcmMpCit7CisgICAgVENHTGFiZWwgKmZhaWwgPSBnZW5fbmV3 X2xhYmVsKCk7CisgICAgVENHTGFiZWwgKmRvbmUgPSBnZW5fbmV3X2xhYmVsKCk7CisKKyAgICB0 Y2dfZ2VuX2JyY29uZF90bChUQ0dfQ09ORF9ORSwgdmFkZHIsIGhleF9sbHNjX2FkZHIsIGZhaWwp OworCisgICAgVENHdl9pNjQgb25lID0gdGNnX2NvbnN0X2k2NCgweGZmKTsKKyAgICBUQ0d2X2k2 NCB6ZXJvID0gdGNnX2NvbnN0X2k2NCgwKTsKKyAgICBUQ0d2X2k2NCB0bXAgPSB0Y2dfdGVtcF9u ZXdfaTY0KCk7CisgICAgdGNnX2dlbl9hdG9taWNfY21weGNoZ19pNjQodG1wLCBoZXhfbGxzY19h ZGRyLCBoZXhfbGxzY192YWxfaTY0LCBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3R4LT5tZW1faWR4LCBNT182NCk7CisgICAgdGNnX2dlbl9tb3Zjb25kX2k2NChUQ0dfQ09O RF9FUSwgdG1wLCB0bXAsIGhleF9sbHNjX3ZhbF9pNjQsCisgICAgICAgICAgICAgICAgICAgICAg ICBvbmUsIHplcm8pOworICAgIHRjZ19nZW5fZXh0cmxfaTY0X2kzMihoZXhfcHJlZFtwcmVkbnVt XSwgdG1wKTsKKyAgICB0Y2dfdGVtcF9mcmVlX2k2NChvbmUpOworICAgIHRjZ190ZW1wX2ZyZWVf aTY0KHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWVfaTY0KHRtcCk7CisgICAgdGNnX2dlbl9icihk b25lKTsKKworICAgIGdlbl9zZXRfbGFiZWwoZmFpbCk7CisgICAgdGNnX2dlbl9tb3ZpX3RsKHBy ZWQsIDApOworCisgICAgZ2VuX3NldF9sYWJlbChkb25lKTsKKyAgICB0Y2dfZ2VuX21vdmlfdGwo aGV4X2xsc2NfYWRkciwgfjApOworfQorCisjaW5jbHVkZSAidGNnX2Z1bmNzX2dlbmVyYXRlZC5o IgorI2luY2x1ZGUgInRjZ19mdW5jX3RhYmxlX2dlbmVyYXRlZC5oIgotLSAKMi43LjQKCg==