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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,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 22F6EC433E6 for ; Fri, 8 Jan 2021 04:37:09 +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 BB3BB2231F for ; Fri, 8 Jan 2021 04:37:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BB3BB2231F 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]:55944 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kxjWN-0001j5-TS for qemu-devel@archiver.kernel.org; Thu, 07 Jan 2021 23:37:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52118) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kxjOu-0006s6-NW for qemu-devel@nongnu.org; Thu, 07 Jan 2021 23:29:24 -0500 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:27789) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kxjOr-00058D-4Z for qemu-devel@nongnu.org; Thu, 07 Jan 2021 23:29:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1610080161; x=1641616161; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=EEzL3rhGnVtZiY8emjGk7wiV7wZzkWzvxkVbFB212XY=; b=esBpUKbI+6qYB8za1UsOyw/2G6Jjc2J8+TOKWm7bV5Ngm07R+ER2p9ud 000cc75Pcd1uqLoDyxrp250U4gx/d1iAmbnLwfIAWiS+mVjywYDs3qyvo tOqONnbUb0WFi8Cba3lj/wmivtUWTpgmGp4mp+DSNlTQXt4m4PSAcdBkV o=; Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by alexa-out-sd-02.qualcomm.com with ESMTP; 07 Jan 2021 20:29:16 -0800 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; 07 Jan 2021 20:29:15 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id EDF9C88F; Thu, 7 Jan 2021 22:29:14 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v6 26/35] Hexagon (target/hexagon) TCG generation Date: Thu, 7 Jan 2021 22:28:57 -0600 Message-Id: <1610080146-14968-27-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1610080146-14968-1-git-send-email-tsimpson@quicinc.com> References: <1610080146-14968-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-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.248, 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: ale@rev.ng, bcain@quicinc.com, richard.henderson@linaro.org, laurent@vivier.eu, tsimpson@quicinc.com, philmd@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SW5jbHVkZSB0aGUgZ2VuZXJhdGVkIGZpbGVzIGFuZCBzZXQgdXAgdGhlIGRhdGEgc3RydWN0dXJl cwoKU2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgot LS0KIHRhcmdldC9oZXhhZ29uL2dlbnB0ci5oIHwgIDI1ICsrKysrKwogdGFyZ2V0L2hleGFnb24v Z2VucHRyLmMgfCAyMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDI1OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgdGFyZ2V0L2hleGFnb24vZ2VucHRyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQv aGV4YWdvbi9nZW5wdHIuYwoKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2dlbnB0ci5oIGIv dGFyZ2V0L2hleGFnb24vZ2VucHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNGU4ZjkwMwotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2dlbnB0ci5oCkBA IC0wLDAgKzEsMjUgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJ bm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBIRVhBR09OX0dF TlBUUl9ICisjZGVmaW5lIEhFWEFHT05fR0VOUFRSX0gKKworI2luY2x1ZGUgImluc24uaCIKKwor ZXh0ZXJuIGNvbnN0IFNlbWFudGljSW5zbiBvcGNvZGVfZ2VucHRyW107CisKKyNlbmRpZgpkaWZm IC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vZ2VucHRyLmMgYi90YXJnZXQvaGV4YWdvbi9nZW5wdHIu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTIzM2E0Ci0tLSAvZGV2L251 bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vZ2VucHRyLmMKQEAgLTAsMCArMSwyMzQgQEAKKy8qCisg KiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5j LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisgKi8KKworI2RlZmluZSBRRU1VX0dFTkVSQVRFCisjaW5jbHVkZSAicWVtdS9v c2RlcC5oIgorI2luY2x1ZGUgInFlbXUvbG9nLmgiCisjaW5jbHVkZSAiY3B1LmgiCisjaW5jbHVk ZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0Y2cvdGNnLW9wLmgiCisjaW5jbHVkZSAiaW5zbi5o IgorI2luY2x1ZGUgIm9wY29kZXMuaCIKKyNpbmNsdWRlICJ0cmFuc2xhdGUuaCIKKyNpbmNsdWRl ICJtYWNyb3MuaCIKKyNpbmNsdWRlICJnZW5fdGNnLmgiCisKK3N0YXRpYyBpbmxpbmUgVENHdiBn ZW5fcmVhZF9yZWcoVENHdiByZXN1bHQsIGludCBudW0pCit7CisgICAgdGNnX2dlbl9tb3ZfdGwo cmVzdWx0LCBoZXhfZ3ByW251bV0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBp bmxpbmUgVENHdiBnZW5fcmVhZF9wcmVnKFRDR3YgcHJlZCwgdWludDhfdCBudW0pCit7CisgICAg dGNnX2dlbl9tb3ZfdGwocHJlZCwgaGV4X3ByZWRbbnVtXSk7CisgICAgcmV0dXJuIHByZWQ7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbG9nX3ByZWRpY2F0ZWRfcmVnX3dyaXRlKGludCBy bnVtLCBUQ0d2IHZhbCwgaW50IHNsb3QpCit7CisgICAgVENHdiBvbmUgPSB0Y2dfY29uc3RfdGwo MSk7CisgICAgVENHdiB6ZXJvID0gdGNnX2NvbnN0X3RsKDApOworICAgIFRDR3Ygc2xvdF9tYXNr ID0gdGNnX3RlbXBfbmV3KCk7CisKKyAgICB0Y2dfZ2VuX2FuZGlfdGwoc2xvdF9tYXNrLCBoZXhf c2xvdF9jYW5jZWxsZWQsIDEgPDwgc2xvdCk7CisgICAgdGNnX2dlbl9tb3Zjb25kX3RsKFRDR19D T05EX0VRLCBoZXhfbmV3X3ZhbHVlW3JudW1dLCBzbG90X21hc2ssIHplcm8sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICB2YWwsIGhleF9uZXdfdmFsdWVbcm51bV0pOworI2lmIEhFWF9ERUJV RworICAgIC8qIERvIHRoaXMgc28gSEVMUEVSKGRlYnVnX2NvbW1pdF9lbmQpIHdpbGwga25vdyAq LworICAgIHRjZ19nZW5fbW92Y29uZF90bChUQ0dfQ09ORF9FUSwgaGV4X3JlZ193cml0dGVuW3Ju dW1dLCBzbG90X21hc2ssIHplcm8sCisgICAgICAgICAgICAgICAgICAgICAgIG9uZSwgaGV4X3Jl Z193cml0dGVuW3JudW1dKTsKKyNlbmRpZgorCisgICAgdGNnX3RlbXBfZnJlZShvbmUpOworICAg IHRjZ190ZW1wX2ZyZWUoemVybyk7CisgICAgdGNnX3RlbXBfZnJlZShzbG90X21hc2spOworfQor CitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xvZ19yZWdfd3JpdGUoaW50IHJudW0sIFRDR3YgdmFs KQoreworICAgIHRjZ19nZW5fbW92X3RsKGhleF9uZXdfdmFsdWVbcm51bV0sIHZhbCk7CisjaWYg SEVYX0RFQlVHCisgICAgLyogRG8gdGhpcyBzbyBIRUxQRVIoZGVidWdfY29tbWl0X2VuZCkgd2ls bCBrbm93ICovCisgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF9yZWdfd3JpdHRlbltybnVtXSwgMSk7 CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgZ2VuX2xvZ19wcmVkaWNhdGVkX3JlZ193cml0ZV9w YWlyKGludCBybnVtLCBUQ0d2X2k2NCB2YWwsIGludCBzbG90KQoreworICAgIFRDR3YgdmFsMzIg PSB0Y2dfdGVtcF9uZXcoKTsKKyAgICBUQ0d2IG9uZSA9IHRjZ19jb25zdF90bCgxKTsKKyAgICBU Q0d2IHplcm8gPSB0Y2dfY29uc3RfdGwoMCk7CisgICAgVENHdiBzbG90X21hc2sgPSB0Y2dfdGVt cF9uZXcoKTsKKworICAgIHRjZ19nZW5fYW5kaV90bChzbG90X21hc2ssIGhleF9zbG90X2NhbmNl bGxlZCwgMSA8PCBzbG90KTsKKyAgICAvKiBMb3cgd29yZCAqLworICAgIHRjZ19nZW5fZXh0cmxf aTY0X2kzMih2YWwzMiwgdmFsKTsKKyAgICB0Y2dfZ2VuX21vdmNvbmRfdGwoVENHX0NPTkRfRVEs IGhleF9uZXdfdmFsdWVbcm51bV0sIHNsb3RfbWFzaywgemVybywKKyAgICAgICAgICAgICAgICAg ICAgICAgdmFsMzIsIGhleF9uZXdfdmFsdWVbcm51bV0pOworI2lmIEhFWF9ERUJVRworICAgIC8q IERvIHRoaXMgc28gSEVMUEVSKGRlYnVnX2NvbW1pdF9lbmQpIHdpbGwga25vdyAqLworICAgIHRj Z19nZW5fbW92Y29uZF90bChUQ0dfQ09ORF9FUSwgaGV4X3JlZ193cml0dGVuW3JudW1dLAorICAg ICAgICAgICAgICAgICAgICAgICBzbG90X21hc2ssIHplcm8sCisgICAgICAgICAgICAgICAgICAg ICAgIG9uZSwgaGV4X3JlZ193cml0dGVuW3JudW1dKTsKKyNlbmRpZgorCisgICAgLyogSGlnaCB3 b3JkICovCisgICAgdGNnX2dlbl9leHRyaF9pNjRfaTMyKHZhbDMyLCB2YWwpOworICAgIHRjZ19n ZW5fbW92Y29uZF90bChUQ0dfQ09ORF9FUSwgaGV4X25ld192YWx1ZVtybnVtICsgMV0sCisgICAg ICAgICAgICAgICAgICAgICAgIHNsb3RfbWFzaywgemVybywKKyAgICAgICAgICAgICAgICAgICAg ICAgdmFsMzIsIGhleF9uZXdfdmFsdWVbcm51bSArIDFdKTsKKyNpZiBIRVhfREVCVUcKKyAgICAv KiBEbyB0aGlzIHNvIEhFTFBFUihkZWJ1Z19jb21taXRfZW5kKSB3aWxsIGtub3cgKi8KKyAgICB0 Y2dfZ2VuX21vdmNvbmRfdGwoVENHX0NPTkRfRVEsIGhleF9yZWdfd3JpdHRlbltybnVtICsgMV0s CisgICAgICAgICAgICAgICAgICAgICAgIHNsb3RfbWFzaywgemVybywKKyAgICAgICAgICAgICAg ICAgICAgICAgb25lLCBoZXhfcmVnX3dyaXR0ZW5bcm51bSArIDFdKTsKKyNlbmRpZgorCisgICAg dGNnX3RlbXBfZnJlZSh2YWwzMik7CisgICAgdGNnX3RlbXBfZnJlZShvbmUpOworICAgIHRjZ190 ZW1wX2ZyZWUoemVybyk7CisgICAgdGNnX3RlbXBfZnJlZShzbG90X21hc2spOworfQorCitzdGF0 aWMgdm9pZCBnZW5fbG9nX3JlZ193cml0ZV9wYWlyKGludCBybnVtLCBUQ0d2X2k2NCB2YWwpCit7 CisgICAgLyogTG93IHdvcmQgKi8KKyAgICB0Y2dfZ2VuX2V4dHJsX2k2NF9pMzIoaGV4X25ld192 YWx1ZVtybnVtXSwgdmFsKTsKKyNpZiBIRVhfREVCVUcKKyAgICAvKiBEbyB0aGlzIHNvIEhFTFBF UihkZWJ1Z19jb21taXRfZW5kKSB3aWxsIGtub3cgKi8KKyAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4 X3JlZ193cml0dGVuW3JudW1dLCAxKTsKKyNlbmRpZgorCisgICAgLyogSGlnaCB3b3JkICovCisg ICAgdGNnX2dlbl9leHRyaF9pNjRfaTMyKGhleF9uZXdfdmFsdWVbcm51bSArIDFdLCB2YWwpOwor I2lmIEhFWF9ERUJVRworICAgIC8qIERvIHRoaXMgc28gSEVMUEVSKGRlYnVnX2NvbW1pdF9lbmQp IHdpbGwga25vdyAqLworICAgIHRjZ19nZW5fbW92aV90bChoZXhfcmVnX3dyaXR0ZW5bcm51bSAr IDFdLCAxKTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xvZ19wcmVkX3dy aXRlKGludCBwbnVtLCBUQ0d2IHZhbCkKK3sKKyAgICBUQ0d2IHplcm8gPSB0Y2dfY29uc3RfdGwo MCk7CisgICAgVENHdiBiYXNlX3ZhbCA9IHRjZ190ZW1wX25ldygpOworICAgIFRDR3YgYW5kX3Zh bCA9IHRjZ190ZW1wX25ldygpOworICAgIFRDR3YgcHJlZF93cml0dGVuID0gdGNnX3RlbXBfbmV3 KCk7CisKKyAgICAvKiBNdWx0aXBsZSB3cml0ZXMgdG8gdGhlIHNhbWUgcHJlZyBhcmUgYW5kJ2Vk IHRvZ2V0aGVyICovCisgICAgdGNnX2dlbl9hbmRpX3RsKGJhc2VfdmFsLCB2YWwsIDB4ZmYpOwor ICAgIHRjZ19nZW5fYW5kX3RsKGFuZF92YWwsIGJhc2VfdmFsLCBoZXhfbmV3X3ByZWRfdmFsdWVb cG51bV0pOworICAgIHRjZ19nZW5fYW5kaV90bChwcmVkX3dyaXR0ZW4sIGhleF9wcmVkX3dyaXR0 ZW4sIDEgPDwgcG51bSk7CisgICAgdGNnX2dlbl9tb3Zjb25kX3RsKFRDR19DT05EX05FLCBoZXhf bmV3X3ByZWRfdmFsdWVbcG51bV0sCisgICAgICAgICAgICAgICAgICAgICAgIHByZWRfd3JpdHRl biwgemVybywKKyAgICAgICAgICAgICAgICAgICAgICAgYW5kX3ZhbCwgYmFzZV92YWwpOworICAg IHRjZ19nZW5fb3JpX3RsKGhleF9wcmVkX3dyaXR0ZW4sIGhleF9wcmVkX3dyaXR0ZW4sIDEgPDwg cG51bSk7CisKKyAgICB0Y2dfdGVtcF9mcmVlKHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWUoYmFz ZV92YWwpOworICAgIHRjZ190ZW1wX2ZyZWUoYW5kX3ZhbCk7CisgICAgdGNnX3RlbXBfZnJlZShw cmVkX3dyaXR0ZW4pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3JlYWRfcDNfMChUQ0d2 IGNvbnRyb2xfcmVnKQoreworICAgIHRjZ19nZW5fbW92aV90bChjb250cm9sX3JlZywgMCk7Cisg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fUFJFR1M7IGkrKykgeworICAgICAgICB0Y2dfZ2Vu X2RlcG9zaXRfdGwoY29udHJvbF9yZWcsIGNvbnRyb2xfcmVnLCBoZXhfcHJlZFtpXSwgaSAqIDgs IDgpOworICAgIH0KK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl93cml0ZV9wM18wKFRDR3Yg Y29udHJvbF9yZWcpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fUFJFR1M7IGkrKykg eworICAgICAgICB0Y2dfZ2VuX2V4dHJhY3RfdGwoaGV4X3ByZWRbaV0sIGNvbnRyb2xfcmVnLCBp ICogOCwgOCk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xvYWRfbG9ja2Vk NHUoVENHdiBkZXN0LCBUQ0d2IHZhZGRyLCBpbnQgbWVtX2luZGV4KQoreworICAgIHRjZ19nZW5f cWVtdV9sZDMydShkZXN0LCB2YWRkciwgbWVtX2luZGV4KTsKKyAgICB0Y2dfZ2VuX21vdl90bCho ZXhfbGxzY19hZGRyLCB2YWRkcik7CisgICAgdGNnX2dlbl9tb3ZfdGwoaGV4X2xsc2NfdmFsLCBk ZXN0KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9sb2FkX2xvY2tlZDh1KFRDR3ZfaTY0 IGRlc3QsIFRDR3YgdmFkZHIsIGludCBtZW1faW5kZXgpCit7CisgICAgdGNnX2dlbl9xZW11X2xk NjQoZGVzdCwgdmFkZHIsIG1lbV9pbmRleCk7CisgICAgdGNnX2dlbl9tb3ZfdGwoaGV4X2xsc2Nf YWRkciwgdmFkZHIpOworICAgIHRjZ19nZW5fbW92X2k2NChoZXhfbGxzY192YWxfaTY0LCBkZXN0 KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9zdG9yZV9jb25kaXRpb25hbDQoQ1BVSGV4 YWdvblN0YXRlICplbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBEaXNhc0NvbnRleHQgKmN0eCwgaW50IHByZWRudW0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUQ0d2IHByZWQsIFRDR3YgdmFkZHIsIFRDR3Ygc3JjKQorewor ICAgIFRDR0xhYmVsICpmYWlsID0gZ2VuX25ld19sYWJlbCgpOworICAgIFRDR0xhYmVsICpkb25l ID0gZ2VuX25ld19sYWJlbCgpOworCisgICAgdGNnX2dlbl9icmNvbmRfdGwoVENHX0NPTkRfTkUs IHZhZGRyLCBoZXhfbGxzY19hZGRyLCBmYWlsKTsKKworICAgIFRDR3Ygb25lID0gdGNnX2NvbnN0 X3RsKDB4ZmYpOworICAgIFRDR3YgemVybyA9IHRjZ19jb25zdF90bCgwKTsKKyAgICBUQ0d2IHRt cCA9IHRjZ190ZW1wX25ldygpOworICAgIHRjZ19nZW5fYXRvbWljX2NtcHhjaGdfdGwodG1wLCBo ZXhfbGxzY19hZGRyLCBoZXhfbGxzY192YWwsIHNyYywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGN0eC0+bWVtX2lkeCwgTU9fMzIpOworICAgIHRjZ19nZW5fbW92Y29uZF90bChUQ0df Q09ORF9FUSwgaGV4X3ByZWRbcHJlZG51bV0sIHRtcCwgaGV4X2xsc2NfdmFsLAorICAgICAgICAg ICAgICAgICAgICAgICBvbmUsIHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWUob25lKTsKKyAgICB0 Y2dfdGVtcF9mcmVlKHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWUodG1wKTsKKyAgICB0Y2dfZ2Vu X2JyKGRvbmUpOworCisgICAgZ2VuX3NldF9sYWJlbChmYWlsKTsKKyAgICB0Y2dfZ2VuX21vdmlf dGwocHJlZCwgMCk7CisKKyAgICBnZW5fc2V0X2xhYmVsKGRvbmUpOworICAgIHRjZ19nZW5fbW92 aV90bChoZXhfbGxzY19hZGRyLCB+MCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fc3Rv cmVfY29uZGl0aW9uYWw4KENQVUhleGFnb25TdGF0ZSAqZW52LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRGlzYXNDb250ZXh0ICpjdHgsIGludCBwcmVkbnVtLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHdiBwcmVkLCBUQ0d2 IHZhZGRyLCBUQ0d2X2k2NCBzcmMpCit7CisgICAgVENHTGFiZWwgKmZhaWwgPSBnZW5fbmV3X2xh YmVsKCk7CisgICAgVENHTGFiZWwgKmRvbmUgPSBnZW5fbmV3X2xhYmVsKCk7CisKKyAgICB0Y2df Z2VuX2JyY29uZF90bChUQ0dfQ09ORF9ORSwgdmFkZHIsIGhleF9sbHNjX2FkZHIsIGZhaWwpOwor CisgICAgVENHdl9pNjQgb25lID0gdGNnX2NvbnN0X2k2NCgweGZmKTsKKyAgICBUQ0d2X2k2NCB6 ZXJvID0gdGNnX2NvbnN0X2k2NCgwKTsKKyAgICBUQ0d2X2k2NCB0bXAgPSB0Y2dfdGVtcF9uZXdf aTY0KCk7CisgICAgdGNnX2dlbl9hdG9taWNfY21weGNoZ19pNjQodG1wLCBoZXhfbGxzY19hZGRy LCBoZXhfbGxzY192YWxfaTY0LCBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LT5tZW1faWR4LCBNT182NCk7CisgICAgdGNnX2dlbl9tb3Zjb25kX2k2NChUQ0dfQ09ORF9F USwgdG1wLCB0bXAsIGhleF9sbHNjX3ZhbF9pNjQsCisgICAgICAgICAgICAgICAgICAgICAgICBv bmUsIHplcm8pOworICAgIHRjZ19nZW5fZXh0cmxfaTY0X2kzMihoZXhfcHJlZFtwcmVkbnVtXSwg dG1wKTsKKyAgICB0Y2dfdGVtcF9mcmVlX2k2NChvbmUpOworICAgIHRjZ190ZW1wX2ZyZWVfaTY0 KHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWVfaTY0KHRtcCk7CisgICAgdGNnX2dlbl9icihkb25l KTsKKworICAgIGdlbl9zZXRfbGFiZWwoZmFpbCk7CisgICAgdGNnX2dlbl9tb3ZpX3RsKHByZWQs IDApOworCisgICAgZ2VuX3NldF9sYWJlbChkb25lKTsKKyAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4 X2xsc2NfYWRkciwgfjApOworfQorCisjaW5jbHVkZSAidGNnX2Z1bmNzX2dlbmVyYXRlZC5oIgor I2luY2x1ZGUgInRjZ19mdW5jX3RhYmxlX2dlbmVyYXRlZC5oIgotLSAKMi43LjQKCg==