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 D35D5C433DB for ; Fri, 8 Jan 2021 04:37:07 +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 69F9B2231F for ; Fri, 8 Jan 2021 04:37:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 69F9B2231F 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]:55782 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kxjWM-0001eT-A0 for qemu-devel@archiver.kernel.org; Thu, 07 Jan 2021 23:37:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:51996) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kxjOq-0006ex-AS for qemu-devel@nongnu.org; Thu, 07 Jan 2021 23:29:20 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:25188) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kxjOm-00059i-Bf for qemu-devel@nongnu.org; Thu, 07 Jan 2021 23:29:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1610080156; x=1641616156; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TgaUfoS/8nUVPM/mfvInfesFZmGS+hvrTr/ccnDJWd4=; b=CiSqkoamhfMmnN+ao6NZwjm4WOFRXVI09Iz/OMnssnp9qatPGO2xeIAK TIv1qL8ETdj8G1t1jqSYfOcGz5a5kntIaTaRMSj2WVEtWjLCv/styCaaG b5/XijhSJbvJDfZHPGsV1PdcMt8vE8PEHKTbd1Xo1dJKwFX4kPETPudEi U=; Received: from unknown (HELO ironmsg03-sd.qualcomm.com) ([10.53.140.143]) by alexa-out-sd-01.qualcomm.com with ESMTP; 07 Jan 2021 20:29:12 -0800 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg03-sd.qualcomm.com with ESMTP; 07 Jan 2021 20:29:12 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id D72CB11A9; Thu, 7 Jan 2021 22:29:11 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v6 04/35] Hexagon (target/hexagon) scalar core definition Date: Thu, 7 Jan 2021 22:28:35 -0600 Message-Id: <1610080146-14968-5-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.38; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-01.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" QWRkIHRhcmdldCBzdGF0ZSBoZWFkZXIsIHRhcmdldCBkZWZpbml0aW9ucyBhbmQgaW5pdGlhbGl6 YXRpb24gcm91dGluZXMKClNpZ25lZC1vZmYtYnk6IFRheWxvciBTaW1wc29uIDx0c2ltcHNvbkBx dWljaW5jLmNvbT4KLS0tCiB0YXJnZXQvaGV4YWdvbi9jcHUtcGFyYW0uaCB8ICAyOSArKysrKwog dGFyZ2V0L2hleGFnb24vY3B1LmggICAgICAgfCAxNTkgKysrKysrKysrKysrKysrKysrKysrKysK IHRhcmdldC9oZXhhZ29uL2NwdV9iaXRzLmggIHwgIDU5ICsrKysrKysrKwogdGFyZ2V0L2hleGFn b24vaW50ZXJuYWwuaCAgfCAgMzYgKysrKysrCiB0YXJnZXQvaGV4YWdvbi9jcHUuYyAgICAgICB8 IDMxMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDUgZmls ZXMgY2hhbmdlZCwgNTk1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQv aGV4YWdvbi9jcHUtcGFyYW0uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9oZXhhZ29uL2Nw dS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0L2hleGFnb24vY3B1X2JpdHMuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHRhcmdldC9oZXhhZ29uL2ludGVybmFsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0YXJnZXQvaGV4YWdvbi9jcHUuYwoKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2NwdS1w YXJhbS5oIGIvdGFyZ2V0L2hleGFnb24vY3B1LXBhcmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uODc5NmI2OQotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29u L2NwdS1wYXJhbS5oCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTkt MjAyMCBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk LgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAq ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lm bmRlZiBIRVhBR09OX0NQVV9QQVJBTV9ICisjZGVmaW5lIEhFWEFHT05fQ1BVX1BBUkFNX0gKKwor I2RlZmluZSBUQVJHRVRfUEFHRV9CSVRTIDE2ICAgICAvKiA2NEsgcGFnZXMgKi8KKyNkZWZpbmUg VEFSR0VUX0xPTkdfQklUUyAzMgorCisjZGVmaW5lIFRBUkdFVF9QSFlTX0FERFJfU1BBQ0VfQklU UyAzNgorI2RlZmluZSBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMgMzIKKworI2RlZmluZSBO Ql9NTVVfTU9ERVMgMQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2NwdS5o IGIvdGFyZ2V0L2hleGFnb24vY3B1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMWI3OGQ4OQotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2NwdS5oCkBAIC0w LDAgKzEsMTU5IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjAgUXVhbGNvbW0gSW5u b3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgSEVYQUdPTl9DUFVf SAorI2RlZmluZSBIRVhBR09OX0NQVV9ICisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gbmVlZGVk IGJ5IHNvbWUgb2YgdGhlIGhlYWRlciBmaWxlcyAqLwordHlwZWRlZiBzdHJ1Y3QgQ1BVSGV4YWdv blN0YXRlIENQVUhleGFnb25TdGF0ZTsKKworI2luY2x1ZGUgImZwdS9zb2Z0ZmxvYXQtdHlwZXMu aCIKKworI2luY2x1ZGUgInFlbXUtY29tbW9uLmgiCisjaW5jbHVkZSAiZXhlYy9jcHUtZGVmcy5o IgorI2luY2x1ZGUgImhleF9yZWdzLmgiCisKKyNkZWZpbmUgTlVNX1BSRUdTIDQKKyNkZWZpbmUg VE9UQUxfUEVSX1RIUkVBRF9SRUdTIDY0CisKKyNkZWZpbmUgU0xPVFNfTUFYIDQKKyNkZWZpbmUg U1RPUkVTX01BWCAyCisjZGVmaW5lIFJFR19XUklURVNfTUFYIDMyCisjZGVmaW5lIFBSRURfV1JJ VEVTX01BWCA1ICAgICAgICAgICAgICAgICAgIC8qIDQgaW5zbnMgKyBlbmRsb29wICovCisKKyNk ZWZpbmUgVFlQRV9IRVhBR09OX0NQVSAiaGV4YWdvbi1jcHUiCisKKyNkZWZpbmUgSEVYQUdPTl9D UFVfVFlQRV9TVUZGSVggIi0iIFRZUEVfSEVYQUdPTl9DUFUKKyNkZWZpbmUgSEVYQUdPTl9DUFVf VFlQRV9OQU1FKG5hbWUpIChuYW1lIEhFWEFHT05fQ1BVX1RZUEVfU1VGRklYKQorI2RlZmluZSBD UFVfUkVTT0xWSU5HX1RZUEUgVFlQRV9IRVhBR09OX0NQVQorCisjZGVmaW5lIFRZUEVfSEVYQUdP Tl9DUFVfVjY3IEhFWEFHT05fQ1BVX1RZUEVfTkFNRSgidjY3IikKKworI2RlZmluZSBNTVVfVVNF Ul9JRFggMAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdGFyZ2V0X3Vsb25nIHZhOworICAgIHVp bnQ4X3Qgd2lkdGg7CisgICAgdWludDMyX3QgZGF0YTMyOworICAgIHVpbnQ2NF90IGRhdGE2NDsK K30gTWVtTG9nOworCisjZGVmaW5lIEVYRUNfU1RBVFVTX09LICAgICAgICAgIDB4MDAwMAorI2Rl ZmluZSBFWEVDX1NUQVRVU19TVE9QICAgICAgICAweDAwMDIKKyNkZWZpbmUgRVhFQ19TVEFUVVNf UkVQTEFZICAgICAgMHgwMDEwCisjZGVmaW5lIEVYRUNfU1RBVFVTX0xPQ0tFRCAgICAgIDB4MDAy MAorI2RlZmluZSBFWEVDX1NUQVRVU19FWENFUFRJT04gICAweDAxMDAKKworCisjZGVmaW5lIEVY Q0VQVElPTl9ERVRFQ1RFRCAgICAgIChlbnYtPnN0YXR1cyAmIEVYRUNfU1RBVFVTX0VYQ0VQVElP TikKKyNkZWZpbmUgUkVQTEFZX0RFVEVDVEVEICAgICAgICAgKGVudi0+c3RhdHVzICYgRVhFQ19T VEFUVVNfUkVQTEFZKQorI2RlZmluZSBDTEVBUl9FWENFUFRJT04gICAgICAgICAoZW52LT5zdGF0 dXMgJj0gKH5FWEVDX1NUQVRVU19FWENFUFRJT04pKQorI2RlZmluZSBTRVRfRVhDRVBUSU9OICAg ICAgICAgICAoZW52LT5zdGF0dXMgfD0gRVhFQ19TVEFUVVNfRVhDRVBUSU9OKQorCitzdHJ1Y3Qg Q1BVSGV4YWdvblN0YXRlIHsKKyAgICB0YXJnZXRfdWxvbmcgZ3ByW1RPVEFMX1BFUl9USFJFQURf UkVHU107CisgICAgdGFyZ2V0X3Vsb25nIHByZWRbTlVNX1BSRUdTXTsKKyAgICB0YXJnZXRfdWxv bmcgYnJhbmNoX3Rha2VuOworICAgIHRhcmdldF91bG9uZyBuZXh0X1BDOworCisgICAgLyogRm9y IGNvbXBhcmluZyB3aXRoIExMREIgb24gdGFyZ2V0IC0gc2VlIGFkanVzdF9zdGFja19wdHJzIGZ1 bmN0aW9uICovCisgICAgdGFyZ2V0X3Vsb25nIGxhc3RfcGNfZHVtcGVkOworICAgIHRhcmdldF91 bG9uZyBzdGFja19zdGFydDsKKworICAgIHVpbnQ4X3Qgc2xvdF9jYW5jZWxsZWQ7CisgICAgdGFy Z2V0X3Vsb25nIG5ld192YWx1ZVtUT1RBTF9QRVJfVEhSRUFEX1JFR1NdOworCisgICAgLyoKKyAg ICAgKiBPbmx5IHVzZWQgd2hlbiBIRVhfREVCVUcgaXMgb24sIGJ1dCB1bmNvbmRpdGlvbmFsbHkg aW5jbHVkZWQKKyAgICAgKiB0byByZWR1Y2UgcmVjb21waWxlIHRpbWUgd2hlbiB0dXJuaW5nIEhF WF9ERUJVRyBvbi9vZmYuCisgICAgICovCisgICAgdGFyZ2V0X3Vsb25nIHRoaXNfUEM7CisgICAg dGFyZ2V0X3Vsb25nIHJlZ193cml0dGVuW1RPVEFMX1BFUl9USFJFQURfUkVHU107CisKKyAgICB0 YXJnZXRfdWxvbmcgbmV3X3ByZWRfdmFsdWVbTlVNX1BSRUdTXTsKKyAgICB0YXJnZXRfdWxvbmcg cHJlZF93cml0dGVuOworCisgICAgTWVtTG9nIG1lbV9sb2dfc3RvcmVzW1NUT1JFU19NQVhdOwor ICAgIHRhcmdldF91bG9uZyBwa3RfaGFzX3N0b3JlX3MxOworICAgIHRhcmdldF91bG9uZyBkY3pl cm9fYWRkcjsKKworICAgIGZsb2F0X3N0YXR1cyBmcF9zdGF0dXM7CisKKyAgICB0YXJnZXRfdWxv bmcgbGxzY19hZGRyOworICAgIHRhcmdldF91bG9uZyBsbHNjX3ZhbDsKKyAgICB1aW50NjRfdCAg ICAgbGxzY192YWxfaTY0OworCisgICAgdGFyZ2V0X3Vsb25nIGlzX2dhdGhlcl9zdG9yZV9pbnNu OworICAgIHRhcmdldF91bG9uZyBnYXRoZXJfaXNzdWVkOworfTsKKworI2RlZmluZSBIRVhBR09O X0NQVV9DTEFTUyhrbGFzcykgXAorICAgIE9CSkVDVF9DTEFTU19DSEVDSyhIZXhhZ29uQ1BVQ2xh c3MsIChrbGFzcyksIFRZUEVfSEVYQUdPTl9DUFUpCisjZGVmaW5lIEhFWEFHT05fQ1BVKG9iaikg XAorICAgIE9CSkVDVF9DSEVDSyhIZXhhZ29uQ1BVLCAob2JqKSwgVFlQRV9IRVhBR09OX0NQVSkK KyNkZWZpbmUgSEVYQUdPTl9DUFVfR0VUX0NMQVNTKG9iaikgXAorICAgIE9CSkVDVF9HRVRfQ0xB U1MoSGV4YWdvbkNQVUNsYXNzLCAob2JqKSwgVFlQRV9IRVhBR09OX0NQVSkKKwordHlwZWRlZiBz dHJ1Y3QgSGV4YWdvbkNQVUNsYXNzIHsKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBDUFVDbGFz cyBwYXJlbnRfY2xhc3M7CisgICAgLyo8IHB1YmxpYyA+Ki8KKyAgICBEZXZpY2VSZWFsaXplIHBh cmVudF9yZWFsaXplOworICAgIERldmljZVJlc2V0IHBhcmVudF9yZXNldDsKK30gSGV4YWdvbkNQ VUNsYXNzOworCit0eXBlZGVmIHN0cnVjdCBIZXhhZ29uQ1BVIHsKKyAgICAvKjwgcHJpdmF0ZSA+ Ki8KKyAgICBDUFVTdGF0ZSBwYXJlbnRfb2JqOworICAgIC8qPCBwdWJsaWMgPiovCisgICAgQ1BV TmVnYXRpdmVPZmZzZXRTdGF0ZSBuZWc7CisgICAgQ1BVSGV4YWdvblN0YXRlIGVudjsKKworICAg IGJvb2wgbGxkYl9jb21wYXQ7CisgICAgdGFyZ2V0X3Vsb25nIGxsZGJfc3RhY2tfYWRqdXN0Owor fSBIZXhhZ29uQ1BVOworCitzdGF0aWMgaW5saW5lIEhleGFnb25DUFUgKmhleGFnb25fZW52X2dl dF9jcHUoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAgcmV0dXJuIGNvbnRhaW5lcl9vZihl bnYsIEhleGFnb25DUFUsIGVudik7Cit9CisKKyNpbmNsdWRlICJjcHVfYml0cy5oIgorCisjZGVm aW5lIGNwdV9zaWduYWxfaGFuZGxlciBjcHVfaGV4YWdvbl9zaWduYWxfaGFuZGxlcgorZXh0ZXJu IGludCBjcHVfaGV4YWdvbl9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBp bmZvLCB2b2lkICpwdWMpOworCitzdGF0aWMgaW5saW5lIHZvaWQgY3B1X2dldF90Yl9jcHVfc3Rh dGUoQ1BVSGV4YWdvblN0YXRlICplbnYsIHRhcmdldF91bG9uZyAqcGMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nICpjc19iYXNlLCB1aW50MzJf dCAqZmxhZ3MpCit7CisgICAgKnBjID0gZW52LT5ncHJbSEVYX1JFR19QQ107CisgICAgKmNzX2Jh c2UgPSAwOworI2lmZGVmIENPTkZJR19VU0VSX09OTFkKKyAgICAqZmxhZ3MgPSAwOworI2Vsc2UK KyNlcnJvciBTeXN0ZW0gbW9kZSBub3Qgc3VwcG9ydGVkIG9uIEhleGFnb24geWV0CisjZW5kaWYK K30KKwordHlwZWRlZiBzdHJ1Y3QgQ1BVSGV4YWdvblN0YXRlIENQVUFyY2hTdGF0ZTsKK3R5cGVk ZWYgSGV4YWdvbkNQVSBBcmNoQ1BVOworCit2b2lkIGhleGFnb25fdHJhbnNsYXRlX2luaXQodm9p ZCk7CisKKyNpbmNsdWRlICJleGVjL2NwdS1hbGwuaCIKKworI2VuZGlmIC8qIEhFWEFHT05fQ1BV X0ggKi8KZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2NwdV9iaXRzLmggYi90YXJnZXQvaGV4 YWdvbi9jcHVfYml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMWQ2 NWQKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9jcHVfYml0cy5oCkBAIC0wLDAg KzEsNTkgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0 aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAq ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBIRVhBR09OX0NQVV9CSVRT X0gKKyNkZWZpbmUgSEVYQUdPTl9DUFVfQklUU19ICisKKyNpbmNsdWRlICJxZW11L2JpdG9wcy5o IgorCisjZGVmaW5lIEhFWF9FWENQX0ZFVENIX05PX1VQQUdFICAweDAxMgorI2RlZmluZSBIRVhf RVhDUF9JTlZBTElEX1BBQ0tFVCAgMHgwMTUKKyNkZWZpbmUgSEVYX0VYQ1BfSU5WQUxJRF9PUENP REUgIDB4MDE1CisjZGVmaW5lIEhFWF9FWENQX1BSSVZfTk9fVVJFQUQgICAweDAyNAorI2RlZmlu ZSBIRVhfRVhDUF9QUklWX05PX1VXUklURSAgMHgwMjUKKworI2RlZmluZSBIRVhfRVhDUF9UUkFQ MCAgICAgICAgICAgMHgxNzIKKworI2RlZmluZSBQQUNLRVRfV09SRFNfTUFYICAgICAgICAgNAor CitzdGF0aWMgaW5saW5lIHVpbnQzMl90IHBhcnNlX2JpdHModWludDMyX3QgZW5jb2RpbmcpCit7 CisgICAgLyogVGhlIHBhcnNlIGJpdHMgYXJlIFsxNToxNF0gKi8KKyAgICByZXR1cm4gZXh0cmFj dDMyKGVuY29kaW5nLCAxNCwgMik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgaWNsYXNz X2JpdHModWludDMyX3QgZW5jb2RpbmcpCit7CisgICAgLyogVGhlIGluc3RydWN0aW9uIGNsYXNz IGlzIGVuY29kZWQgaW4gYml0cyBbMzE6MjhdICovCisgICAgdWludDMyX3QgaWNsYXNzID0gZXh0 cmFjdDMyKGVuY29kaW5nLCAyOCwgNCk7CisgICAgLyogSWYgcGFyc2UgYml0cyBhcmUgemVybywg dGhpcyBpcyBhIGR1cGxleCAqLworICAgIGlmIChwYXJzZV9iaXRzKGVuY29kaW5nKSA9PSAwKSB7 CisgICAgICAgIGljbGFzcyArPSAxNjsKKyAgICB9CisgICAgcmV0dXJuIGljbGFzczsKK30KKwor c3RhdGljIGlubGluZSBpbnQgaXNfcGFja2V0X2VuZCh1aW50MzJfdCBlbmRvY2luZykKK3sKKyAg ICB1aW50MzJfdCBiaXRzID0gcGFyc2VfYml0cyhlbmRvY2luZyk7CisgICAgcmV0dXJuICgoYml0 cyA9PSAweDMpIHx8IChiaXRzID09IDB4MCkpOworfQorCitleHRlcm4gaW50IGRpc2Fzc2VtYmxl X2hleGFnb24odWludDMyX3QgKndvcmRzLCBpbnQgbndvcmRzLCBiZmRfdm1hIHBjLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUpOworCisjZW5k aWYKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2ludGVybmFsLmggYi90YXJnZXQvaGV4YWdv bi9pbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyN2JhZDkK LS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbnRlcm5hbC5oCkBAIC0wLDAgKzEs MzYgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBIRVhBR09OX0lOVEVSTkFMX0gK KyNkZWZpbmUgSEVYQUdPTl9JTlRFUk5BTF9ICisKKy8qCisgKiBDaGFuZ2UgSEVYX0RFQlVHIHRv IDEgdG8gdHVybiBvbiBkZWJ1Z2dpbmcgb3V0cHV0CisgKi8KKyNkZWZpbmUgSEVYX0RFQlVHIDAK KyNkZWZpbmUgSEVYX0RFQlVHX0xPRyguLi4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaWYgKEhF WF9ERUJVRykgeyBcCisgICAgICAgICAgICBxZW11X2xvZyhfX1ZBX0FSR1NfXyk7IFwKKyAgICAg ICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKworZXh0ZXJuIHZvaWQgaGV4YWdvbl9kZWJ1ZyhDUFVI ZXhhZ29uU3RhdGUgKmVudik7CisKK2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgaGV4YWdvbl9y ZWduYW1lc1tUT1RBTF9QRVJfVEhSRUFEX1JFR1NdOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3Rh cmdldC9oZXhhZ29uL2NwdS5jIGIvdGFyZ2V0L2hleGFnb24vY3B1LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNWUwZGEzZgotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9o ZXhhZ29uL2NwdS5jCkBAIC0wLDAgKzEsMzEyIEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5 LTIwMjAgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisg KiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNp bmNsdWRlICJxZW11L29zZGVwLmgiCisjaW5jbHVkZSAicWVtdS9sb2cuaCIKKyNpbmNsdWRlICJx ZW11L3FlbXUtcHJpbnQuaCIKKyNpbmNsdWRlICJjcHUuaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5o IgorI2luY2x1ZGUgImV4ZWMvZXhlYy1hbGwuaCIKKyNpbmNsdWRlICJxYXBpL2Vycm9yLmgiCisj aW5jbHVkZSAiaHcvcWRldi1wcm9wZXJ0aWVzLmgiCisKK3N0YXRpYyB2b2lkIGhleGFnb25fdjY3 X2NwdV9pbml0KE9iamVjdCAqb2JqKQoreworfQorCitzdGF0aWMgT2JqZWN0Q2xhc3MgKmhleGFn b25fY3B1X2NsYXNzX2J5X25hbWUoY29uc3QgY2hhciAqY3B1X21vZGVsKQoreworICAgIE9iamVj dENsYXNzICpvYzsKKyAgICBjaGFyICp0eXBlbmFtZTsKKyAgICBjaGFyICoqY3B1bmFtZTsKKwor ICAgIGNwdW5hbWUgPSBnX3N0cnNwbGl0KGNwdV9tb2RlbCwgIiwiLCAxKTsKKyAgICB0eXBlbmFt ZSA9IGdfc3RyZHVwX3ByaW50ZihIRVhBR09OX0NQVV9UWVBFX05BTUUoIiVzIiksIGNwdW5hbWVb MF0pOworICAgIG9jID0gb2JqZWN0X2NsYXNzX2J5X25hbWUodHlwZW5hbWUpOworICAgIGdfc3Ry ZnJlZXYoY3B1bmFtZSk7CisgICAgZ19mcmVlKHR5cGVuYW1lKTsKKyAgICBpZiAoIW9jIHx8ICFv YmplY3RfY2xhc3NfZHluYW1pY19jYXN0KG9jLCBUWVBFX0hFWEFHT05fQ1BVKSB8fAorICAgICAg ICBvYmplY3RfY2xhc3NfaXNfYWJzdHJhY3Qob2MpKSB7CisgICAgICAgIHJldHVybiBOVUxMOwor ICAgIH0KKyAgICByZXR1cm4gb2M7Cit9CisKK3N0YXRpYyBQcm9wZXJ0eSBoZXhhZ29uX2xsZGJf Y29tcGF0X3Byb3BlcnR5ID0KKyAgICBERUZJTkVfUFJPUF9CT09MKCJsbGRiLWNvbXBhdCIsIEhl eGFnb25DUFUsIGxsZGJfY29tcGF0LCBmYWxzZSk7CitzdGF0aWMgUHJvcGVydHkgaGV4YWdvbl9s bGRiX3N0YWNrX2FkanVzdF9wcm9wZXJ0eSA9CisgICAgREVGSU5FX1BST1BfVU5TSUdORUQoImxs ZGItc3RhY2stYWRqdXN0IiwgSGV4YWdvbkNQVSwgbGxkYl9zdGFja19hZGp1c3QsCisgICAgICAg ICAgICAgICAgICAgICAgICAgMCwgcWRldl9wcm9wX3VpbnQzMiwgdGFyZ2V0X3Vsb25nKTsKKwor Y29uc3QgY2hhciAqIGNvbnN0IGhleGFnb25fcmVnbmFtZXNbVE9UQUxfUEVSX1RIUkVBRF9SRUdT XSA9IHsKKyAgICJyMCIsICJyMSIsICAicjIiLCAgInIzIiwgICJyNCIsICAgInI1IiwgICJyNiIs ICAicjciLAorICAgInI4IiwgInI5IiwgICJyMTAiLCAicjExIiwgInIxMiIsICAicjEzIiwgInIx NCIsICJyMTUiLAorICAicjE2IiwgInIxNyIsICJyMTgiLCAicjE5IiwgInIyMCIsICAicjIxIiwg InIyMiIsICJyMjMiLAorICAicjI0IiwgInIyNSIsICJyMjYiLCAicjI3IiwgInIyOCIsICAicjI5 IiwgInIzMCIsICJyMzEiLAorICAic2EwIiwgImxjMCIsICJzYTEiLCAibGMxIiwgInAzXzAiLCAi YzUiLCAgIm0wIiwgICJtMSIsCisgICJ1c3IiLCAicGMiLCAgInVncCIsICJncCIsICAiY3MwIiwg ICJjczEiLCAiYzE0IiwgImMxNSIsCisgICJjMTYiLCAiYzE3IiwgImMxOCIsICJjMTkiLCAicGt0 X2NudCIsICAiaW5zbl9jbnQiLCAiYzIyIiwgImMyMyIsCisgICJjMjQiLCAiYzI1IiwgImMyNiIs ICJjMjciLCAiYzI4IiwgICJjMjkiLCAiYzMwIiwgImMzMSIsCit9OworCisvKgorICogT25lIG9m IHRoZSBtYWluIGRlYnVnZ2luZyB0ZWNobmlxdWVzIGlzIHRvIHVzZSAiLWQgY3B1IiBhbmQgY29t cGFyZSBhZ2FpbnN0CisgKiBMTERCIG91dHB1dCB3aGVuIHNpbmdsZSBzdGVwcGluZy4gIEhvd2V2 ZXIsIHRoZSB0YXJnZXQgYW5kIHFlbXUgcHV0IHRoZQorICogc3RhY2tzIGF0IGRpZmZlcmVudCBs b2NhdGlvbnMuICBUaGlzIGlzIHVzZWQgdG8gY29tcGVuc2F0ZSBzbyB0aGUgZGlmZiBpcworICog Y2xlYW5lci4KKyAqLworc3RhdGljIGlubGluZSB0YXJnZXRfdWxvbmcgYWRqdXN0X3N0YWNrX3B0 cnMoQ1BVSGV4YWdvblN0YXRlICplbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgYWRkcikKK3sKKyAgICBIZXhhZ29uQ1BVICpjcHUg PSBjb250YWluZXJfb2YoZW52LCBIZXhhZ29uQ1BVLCBlbnYpOworICAgIHRhcmdldF91bG9uZyBz dGFja19hZGp1c3QgPSBjcHUtPmxsZGJfc3RhY2tfYWRqdXN0OworCisgICAgaWYgKHN0YWNrX2Fk anVzdCA9PSAwKSB7CisgICAgICAgIHJldHVybiBhZGRyOworICAgIH0KKworICAgIHRhcmdldF91 bG9uZyBzdGFja19zdGFydCA9IGVudi0+c3RhY2tfc3RhcnQ7CisgICAgdGFyZ2V0X3Vsb25nIHN0 YWNrX3NpemUgPSAweDEwMDAwOworCisgICAgaWYgKHN0YWNrX3N0YXJ0ICsgMHgxMDAwID49IGFk ZHIgJiYgYWRkciA+PSAoc3RhY2tfc3RhcnQgLSBzdGFja19zaXplKSkgeworICAgICAgICByZXR1 cm4gYWRkciAtIHN0YWNrX2FkanVzdDsKKyAgICB9CisgICAgcmV0dXJuIGFkZHI7Cit9CisKKy8q IEhFWF9SRUdfUDNfMCAoYWthIEM0KSBpcyBhbiBhbGlhcyBmb3IgdGhlIHByZWRpY2F0ZSByZWdp c3RlcnMgKi8KK3N0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIHJlYWRfcDNfMChDUFVIZXhhZ29u U3RhdGUgKmVudikKK3sKKyAgICBpbnQzMl90IGNvbnRyb2xfcmVnID0gMDsKKyAgICBpbnQgaTsK KyAgICBmb3IgKGkgPSBOVU1fUFJFR1MgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICBjb250 cm9sX3JlZyA8PD0gODsKKyAgICAgICAgY29udHJvbF9yZWcgfD0gZW52LT5wcmVkW2ldICYgMHhm ZjsKKyAgICB9CisgICAgcmV0dXJuIGNvbnRyb2xfcmVnOworfQorCitzdGF0aWMgdm9pZCBwcmlu dF9yZWcoRklMRSAqZiwgQ1BVSGV4YWdvblN0YXRlICplbnYsIGludCByZWdudW0pCit7CisgICAg dGFyZ2V0X3Vsb25nIHZhbHVlOworCisgICAgaWYgKHJlZ251bSA9PSBIRVhfUkVHX1AzXzApIHsK KyAgICAgICAgdmFsdWUgPSByZWFkX3AzXzAoZW52KTsKKyAgICB9IGVsc2UgeworICAgICAgICB2 YWx1ZSA9IHJlZ251bSA8IDMyID8gYWRqdXN0X3N0YWNrX3B0cnMoZW52LCBlbnYtPmdwcltyZWdu dW1dKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZW52LT5ncHJbcmVnbnVtXTsKKyAg ICB9CisKKyAgICBxZW11X2ZwcmludGYoZiwgIiAgJXMgPSAweCIgVEFSR0VUX0ZNVF9seCAiXG4i LAorICAgICAgICAgICAgICAgICBoZXhhZ29uX3JlZ25hbWVzW3JlZ251bV0sIHZhbHVlKTsKK30K Kworc3RhdGljIHZvaWQgaGV4YWdvbl9kdW1wKENQVUhleGFnb25TdGF0ZSAqZW52LCBGSUxFICpm KQoreworICAgIEhleGFnb25DUFUgKmNwdSA9IGNvbnRhaW5lcl9vZihlbnYsIEhleGFnb25DUFUs IGVudik7CisKKyAgICBpZiAoY3B1LT5sbGRiX2NvbXBhdCkgeworICAgICAgICAvKgorICAgICAg ICAgKiBXaGVuIGNvbXBhcmluZyB3aXRoIExMREIsIGl0IGRvZXNuJ3Qgc3RlcCB0aHJvdWdoIHNp bmdsZS1jeWNsZQorICAgICAgICAgKiBoYXJkd2FyZSBsb29wcyB0aGUgc2FtZSB3YXkuICBTbywg d2UganVzdCBza2lwIHRoZW0gaGVyZQorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGVudi0+Z3By W0hFWF9SRUdfUENdID09IGVudi0+bGFzdF9wY19kdW1wZWQpIHsKKyAgICAgICAgICAgIHJldHVy bjsKKyAgICAgICAgfQorICAgICAgICBlbnYtPmxhc3RfcGNfZHVtcGVkID0gZW52LT5ncHJbSEVY X1JFR19QQ107CisgICAgfQorCisgICAgcWVtdV9mcHJpbnRmKGYsICJHZW5lcmFsIFB1cnBvc2Ug UmVnaXN0ZXJzID0ge1xuIik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzMjsgaSsrKSB7Cisg ICAgICAgIHByaW50X3JlZyhmLCBlbnYsIGkpOworICAgIH0KKyAgICBwcmludF9yZWcoZiwgZW52 LCBIRVhfUkVHX1NBMCk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19MQzApOworICAg IHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfU0ExKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBI RVhfUkVHX0xDMSk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19NMCk7CisgICAgcHJp bnRfcmVnKGYsIGVudiwgSEVYX1JFR19NMSk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JF R19VU1IpOworICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfUDNfMCk7CisgICAgcHJpbnRf cmVnKGYsIGVudiwgSEVYX1JFR19HUCk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19V R1ApOworICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfUEMpOworI2lmZGVmIENPTkZJR19V U0VSX09OTFkKKyAgICAvKgorICAgICAqIE5vdCBtb2RlbGxlZCBpbiB1c2VyIG1vZGUsIHByaW50 IGp1bmsgdG8gbWluaW1pemUgdGhlIGRpZmYncworICAgICAqIHdpdGggTExEQiBvdXRwdXQKKyAg ICAgKi8KKyAgICBxZW11X2ZwcmludGYoZiwgIiAgY2F1c2UgPSAweDAwMDAwMGRiXG4iKTsKKyAg ICBxZW11X2ZwcmludGYoZiwgIiAgYmFkdmEgPSAweDAwMDAwMDAwXG4iKTsKKyAgICBxZW11X2Zw cmludGYoZiwgIiAgY3MwID0gMHgwMDAwMDAwMFxuIik7CisgICAgcWVtdV9mcHJpbnRmKGYsICIg IGNzMSA9IDB4MDAwMDAwMDBcbiIpOworI2Vsc2UKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhf UkVHX0NBVVNFKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX0JBRFZBKTsKKyAgICBw cmludF9yZWcoZiwgZW52LCBIRVhfUkVHX0NTMCk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVY X1JFR19DUzEpOworI2VuZGlmCisgICAgcWVtdV9mcHJpbnRmKGYsICJ9XG4iKTsKK30KKworc3Rh dGljIHZvaWQgaGV4YWdvbl9kdW1wX3N0YXRlKENQVVN0YXRlICpjcywgRklMRSAqZiwgaW50IGZs YWdzKQoreworICAgIEhleGFnb25DUFUgKmNwdSA9IEhFWEFHT05fQ1BVKGNzKTsKKyAgICBDUFVI ZXhhZ29uU3RhdGUgKmVudiA9ICZjcHUtPmVudjsKKworICAgIGhleGFnb25fZHVtcChlbnYsIGYp OworfQorCit2b2lkIGhleGFnb25fZGVidWcoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAg aGV4YWdvbl9kdW1wKGVudiwgc3Rkb3V0KTsKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9jcHVf c2V0X3BjKENQVVN0YXRlICpjcywgdmFkZHIgdmFsdWUpCit7CisgICAgSGV4YWdvbkNQVSAqY3B1 ID0gSEVYQUdPTl9DUFUoY3MpOworICAgIENQVUhleGFnb25TdGF0ZSAqZW52ID0gJmNwdS0+ZW52 OworICAgIGVudi0+Z3ByW0hFWF9SRUdfUENdID0gdmFsdWU7Cit9CisKK3N0YXRpYyB2b2lkIGhl eGFnb25fY3B1X3N5bmNocm9uaXplX2Zyb21fdGIoQ1BVU3RhdGUgKmNzLCBUcmFuc2xhdGlvbkJs b2NrICp0YikKK3sKKyAgICBIZXhhZ29uQ1BVICpjcHUgPSBIRVhBR09OX0NQVShjcyk7CisgICAg Q1BVSGV4YWdvblN0YXRlICplbnYgPSAmY3B1LT5lbnY7CisgICAgZW52LT5ncHJbSEVYX1JFR19Q Q10gPSB0Yi0+cGM7Cit9CisKK3N0YXRpYyBib29sIGhleGFnb25fY3B1X2hhc193b3JrKENQVVN0 YXRlICpjcykKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCByZXN0b3JlX3N0YXRlX3Rv X29wYyhDUFVIZXhhZ29uU3RhdGUgKmVudiwgVHJhbnNsYXRpb25CbG9jayAqdGIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyAqZGF0YSkKK3sKKyAgICBlbnYtPmdwcltI RVhfUkVHX1BDXSA9IGRhdGFbMF07Cit9CisKK3N0YXRpYyB2b2lkIGhleGFnb25fY3B1X3Jlc2V0 KERldmljZVN0YXRlICpkZXYpCit7CisgICAgQ1BVU3RhdGUgKmNzID0gQ1BVKGRldik7CisgICAg SGV4YWdvbkNQVSAqY3B1ID0gSEVYQUdPTl9DUFUoY3MpOworICAgIEhleGFnb25DUFVDbGFzcyAq bWNjID0gSEVYQUdPTl9DUFVfR0VUX0NMQVNTKGNwdSk7CisKKyAgICBtY2MtPnBhcmVudF9yZXNl dChkZXYpOworfQorCitzdGF0aWMgdm9pZCBoZXhhZ29uX2NwdV9kaXNhc19zZXRfaW5mbyhDUFVT dGF0ZSAqcywgZGlzYXNzZW1ibGVfaW5mbyAqaW5mbykKK3sKKyAgICBpbmZvLT5wcmludF9pbnNu ID0gcHJpbnRfaW5zbl9oZXhhZ29uOworfQorCitzdGF0aWMgdm9pZCBoZXhhZ29uX2NwdV9yZWFs aXplKERldmljZVN0YXRlICpkZXYsIEVycm9yICoqZXJycCkKK3sKKyAgICBDUFVTdGF0ZSAqY3Mg PSBDUFUoZGV2KTsKKyAgICBIZXhhZ29uQ1BVQ2xhc3MgKm1jYyA9IEhFWEFHT05fQ1BVX0dFVF9D TEFTUyhkZXYpOworICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOworCisgICAgY3B1X2V4ZWNf cmVhbGl6ZWZuKGNzLCAmbG9jYWxfZXJyKTsKKyAgICBpZiAobG9jYWxfZXJyICE9IE5VTEwpIHsK KyAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vycik7CisgICAgICAgIHJldHVy bjsKKyAgICB9CisKKyAgICBxZW11X2luaXRfdmNwdShjcyk7CisgICAgY3B1X3Jlc2V0KGNzKTsK KworICAgIG1jYy0+cGFyZW50X3JlYWxpemUoZGV2LCBlcnJwKTsKK30KKworc3RhdGljIHZvaWQg aGV4YWdvbl9jcHVfaW5pdChPYmplY3QgKm9iaikKK3sKKyAgICBIZXhhZ29uQ1BVICpjcHUgPSBI RVhBR09OX0NQVShvYmopOworCisgICAgY3B1X3NldF9jcHVzdGF0ZV9wb2ludGVycyhjcHUpOwor ICAgIHFkZXZfcHJvcGVydHlfYWRkX3N0YXRpYyhERVZJQ0Uob2JqKSwgJmhleGFnb25fbGxkYl9j b21wYXRfcHJvcGVydHkpOworICAgIHFkZXZfcHJvcGVydHlfYWRkX3N0YXRpYyhERVZJQ0Uob2Jq KSwgJmhleGFnb25fbGxkYl9zdGFja19hZGp1c3RfcHJvcGVydHkpOworfQorCitzdGF0aWMgYm9v bCBoZXhhZ29uX3RsYl9maWxsKENQVVN0YXRlICpjcywgdmFkZHIgYWRkcmVzcywgaW50IHNpemUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1NVUFjY2Vzc1R5cGUgYWNjZXNzX3R5cGUs IGludCBtbXVfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByb2JlLCB1 aW50cHRyX3QgcmV0YWRkcikKK3sKKyNpZmRlZiBDT05GSUdfVVNFUl9PTkxZCisgICAgc3dpdGNo IChhY2Nlc3NfdHlwZSkgeworICAgIGNhc2UgTU1VX0lOU1RfRkVUQ0g6CisgICAgICAgIGNzLT5l eGNlcHRpb25faW5kZXggPSBIRVhfRVhDUF9GRVRDSF9OT19VUEFHRTsKKyAgICAgICAgYnJlYWs7 CisgICAgY2FzZSBNTVVfREFUQV9MT0FEOgorICAgICAgICBjcy0+ZXhjZXB0aW9uX2luZGV4ID0g SEVYX0VYQ1BfUFJJVl9OT19VUkVBRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNTVVfREFU QV9TVE9SRToKKyAgICAgICAgY3MtPmV4Y2VwdGlvbl9pbmRleCA9IEhFWF9FWENQX1BSSVZfTk9f VVdSSVRFOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY3B1X2xvb3BfZXhpdF9yZXN0b3Jl KGNzLCByZXRhZGRyKTsKKyNlbHNlCisjZXJyb3IgU3lzdGVtIG1vZGUgbm90IGltcGxlbWVudGVk IGZvciBIZXhhZ29uCisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9jcHVfY2xhc3Nf aW5pdChPYmplY3RDbGFzcyAqYywgdm9pZCAqZGF0YSkKK3sKKyAgICBIZXhhZ29uQ1BVQ2xhc3Mg Km1jYyA9IEhFWEFHT05fQ1BVX0NMQVNTKGMpOworICAgIENQVUNsYXNzICpjYyA9IENQVV9DTEFT UyhjKTsKKyAgICBEZXZpY2VDbGFzcyAqZGMgPSBERVZJQ0VfQ0xBU1MoYyk7CisKKyAgICBkZXZp Y2VfY2xhc3Nfc2V0X3BhcmVudF9yZWFsaXplKGRjLCBoZXhhZ29uX2NwdV9yZWFsaXplLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1jYy0+cGFyZW50X3JlYWxpemUpOwor CisgICAgZGV2aWNlX2NsYXNzX3NldF9wYXJlbnRfcmVzZXQoZGMsIGhleGFnb25fY3B1X3Jlc2V0 LCAmbWNjLT5wYXJlbnRfcmVzZXQpOworCisgICAgY2MtPmNsYXNzX2J5X25hbWUgPSBoZXhhZ29u X2NwdV9jbGFzc19ieV9uYW1lOworICAgIGNjLT5oYXNfd29yayA9IGhleGFnb25fY3B1X2hhc193 b3JrOworICAgIGNjLT5kdW1wX3N0YXRlID0gaGV4YWdvbl9kdW1wX3N0YXRlOworICAgIGNjLT5z ZXRfcGMgPSBoZXhhZ29uX2NwdV9zZXRfcGM7CisgICAgY2MtPnN5bmNocm9uaXplX2Zyb21fdGIg PSBoZXhhZ29uX2NwdV9zeW5jaHJvbml6ZV9mcm9tX3RiOworICAgIGNjLT5nZGJfbnVtX2NvcmVf cmVncyA9IFRPVEFMX1BFUl9USFJFQURfUkVHUzsKKyAgICBjYy0+Z2RiX3N0b3BfYmVmb3JlX3dh dGNocG9pbnQgPSB0cnVlOworICAgIGNjLT5kaXNhc19zZXRfaW5mbyA9IGhleGFnb25fY3B1X2Rp c2FzX3NldF9pbmZvOworI2lmZGVmIENPTkZJR19UQ0cKKyAgICBjYy0+dGNnX2luaXRpYWxpemUg PSBoZXhhZ29uX3RyYW5zbGF0ZV9pbml0OworICAgIGNjLT50bGJfZmlsbCA9IGhleGFnb25fdGxi X2ZpbGw7CisjZW5kaWYKK30KKworI2RlZmluZSBERUZJTkVfQ1BVKHR5cGVfbmFtZSwgaW5pdGZu KSAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgIC5uYW1lID0gdHlwZV9uYW1lLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAucGFy ZW50ID0gVFlQRV9IRVhBR09OX0NQVSwgICAgICAgIFwKKyAgICAgICAgLmluc3RhbmNlX2luaXQg PSBpbml0Zm4gICAgICAgICAgICBcCisgICAgfQorCitzdGF0aWMgY29uc3QgVHlwZUluZm8gaGV4 YWdvbl9jcHVfdHlwZV9pbmZvc1tdID0geworICAgIHsKKyAgICAgICAgLm5hbWUgPSBUWVBFX0hF WEFHT05fQ1BVLAorICAgICAgICAucGFyZW50ID0gVFlQRV9DUFUsCisgICAgICAgIC5pbnN0YW5j ZV9zaXplID0gc2l6ZW9mKEhleGFnb25DUFUpLAorICAgICAgICAuaW5zdGFuY2VfaW5pdCA9IGhl eGFnb25fY3B1X2luaXQsCisgICAgICAgIC5hYnN0cmFjdCA9IHRydWUsCisgICAgICAgIC5jbGFz c19zaXplID0gc2l6ZW9mKEhleGFnb25DUFVDbGFzcyksCisgICAgICAgIC5jbGFzc19pbml0ID0g aGV4YWdvbl9jcHVfY2xhc3NfaW5pdCwKKyAgICB9LAorICAgIERFRklORV9DUFUoVFlQRV9IRVhB R09OX0NQVV9WNjcsICAgICAgICAgICAgICBoZXhhZ29uX3Y2N19jcHVfaW5pdCksCit9OworCitE RUZJTkVfVFlQRVMoaGV4YWdvbl9jcHVfdHlwZV9pbmZvcykKLS0gCjIuNy40Cgo=