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 98BD7C433E6 for ; Wed, 20 Jan 2021 03:34: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 1E01922573 for ; Wed, 20 Jan 2021 03:34:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1E01922573 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]:51210 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l24G0-0004CU-6q for qemu-devel@archiver.kernel.org; Tue, 19 Jan 2021 22:34:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47414) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l24Bc-00078B-BS for qemu-devel@nongnu.org; Tue, 19 Jan 2021 22:29:37 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:5511) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l24BV-0007VU-U0 for qemu-devel@nongnu.org; Tue, 19 Jan 2021 22:29:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1611113369; x=1642649369; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Lyxt0CBn7MfGIskLC70avaMXDY15uFMigJSY2PM2KVI=; b=MKcoXNBBbembr0XgpT4q7/62ykmauzGrXkf6YzdTxZ8CG316sqxWgTfg 9fiksvglRlz+sAOJSK/p3PbTH5j8A0n9oUxwDvB2SRkwLFAcz5aokceS6 U/fipNTS6z3FpSlmWPbzMsystBmNu+xQbY9IlVEvRQUoRcTZ1rreIdJrU Q=; Received: from unknown (HELO ironmsg-SD-alpha.qualcomm.com) ([10.53.140.30]) by alexa-out-sd-01.qualcomm.com with ESMTP; 19 Jan 2021 19:29:25 -0800 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg-SD-alpha.qualcomm.com with ESMTP; 19 Jan 2021 19:29:24 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 48C6129BD; Tue, 19 Jan 2021 21:29:24 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v7 04/35] Hexagon (target/hexagon) scalar core definition Date: Tue, 19 Jan 2021 21:28:37 -0600 Message-Id: <1611113349-24906-5-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1611113349-24906-1-git-send-email-tsimpson@quicinc.com> References: <1611113349-24906-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, philmd@redhat.com, richard.henderson@linaro.org, laurent@vivier.eu, tsimpson@quicinc.com, alex.bennee@linaro.org 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 aW5kZXggMDAwMDAwMC4uZThlZDU0NgotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29u L2NwdS1wYXJhbS5oCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTkt MjAyMSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk LgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAq ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lm bmRlZiBIRVhBR09OX0NQVV9QQVJBTV9ICisjZGVmaW5lIEhFWEFHT05fQ1BVX1BBUkFNX0gKKwor I2RlZmluZSBUQVJHRVRfUEFHRV9CSVRTIDE2ICAgICAvKiA2NEsgcGFnZXMgKi8KKyNkZWZpbmUg VEFSR0VUX0xPTkdfQklUUyAzMgorCisjZGVmaW5lIFRBUkdFVF9QSFlTX0FERFJfU1BBQ0VfQklU UyAzNgorI2RlZmluZSBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMgMzIKKworI2RlZmluZSBO Ql9NTVVfTU9ERVMgMQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2NwdS5o IGIvdGFyZ2V0L2hleGFnb24vY3B1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uODM5ZGI2YgotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2NwdS5oCkBAIC0w LDAgKzEsMTU5IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjEgUXVhbGNvbW0gSW5u 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 YWdvbi9jcHVfYml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZmIy MjEKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9jcHVfYml0cy5oCkBAIC0wLDAg KzEsNTkgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMSBRdWFsY29tbSBJbm5vdmF0 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 ICAgICAgICAgICAgICAgICAgICAgICAgIEdTdHJpbmcgKmJ1Zik7CisKKyNlbmRpZgpkaWZmIC0t Z2l0IGEvdGFyZ2V0L2hleGFnb24vaW50ZXJuYWwuaCBiL3RhcmdldC9oZXhhZ29uL2ludGVybmFs LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBiM2M1MwotLS0gL2Rldi9u dWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2ludGVybmFsLmgKQEAgLTAsMCArMSwzNiBAQAorLyoK KyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIxIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJ bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVmIEhFWEFHT05fSU5URVJOQUxfSAorI2RlZmluZSBI RVhBR09OX0lOVEVSTkFMX0gKKworLyoKKyAqIENoYW5nZSBIRVhfREVCVUcgdG8gMSB0byB0dXJu IG9uIGRlYnVnZ2luZyBvdXRwdXQKKyAqLworI2RlZmluZSBIRVhfREVCVUcgMAorI2RlZmluZSBI RVhfREVCVUdfTE9HKC4uLikgXAorICAgIGRvIHsgXAorICAgICAgICBpZiAoSEVYX0RFQlVHKSB7 IFwKKyAgICAgICAgICAgIHFlbXVfbG9nKF9fVkFfQVJHU19fKTsgXAorICAgICAgICB9IFwKKyAg ICB9IHdoaWxlICgwKQorCitleHRlcm4gdm9pZCBoZXhhZ29uX2RlYnVnKENQVUhleGFnb25TdGF0 ZSAqZW52KTsKKworZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBoZXhhZ29uX3JlZ25hbWVzW1RP VEFMX1BFUl9USFJFQURfUkVHU107CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFn b24vY3B1LmMgYi90YXJnZXQvaGV4YWdvbi9jcHUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi43ZGY4MTdmCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vY3B1 LmMKQEAgLTAsMCArMSwzMTIgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMSBRdWFs Y29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgInFl bXUvb3NkZXAuaCIKKyNpbmNsdWRlICJxZW11L2xvZy5oIgorI2luY2x1ZGUgInFlbXUvcWVtdS1w cmludC5oIgorI2luY2x1ZGUgImNwdS5oIgorI2luY2x1ZGUgImludGVybmFsLmgiCisjaW5jbHVk ZSAiZXhlYy9leGVjLWFsbC5oIgorI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKKyNpbmNsdWRlICJo dy9xZGV2LXByb3BlcnRpZXMuaCIKKworc3RhdGljIHZvaWQgaGV4YWdvbl92NjdfY3B1X2luaXQo T2JqZWN0ICpvYmopCit7Cit9CisKK3N0YXRpYyBPYmplY3RDbGFzcyAqaGV4YWdvbl9jcHVfY2xh c3NfYnlfbmFtZShjb25zdCBjaGFyICpjcHVfbW9kZWwpCit7CisgICAgT2JqZWN0Q2xhc3MgKm9j OworICAgIGNoYXIgKnR5cGVuYW1lOworICAgIGNoYXIgKipjcHVuYW1lOworCisgICAgY3B1bmFt ZSA9IGdfc3Ryc3BsaXQoY3B1X21vZGVsLCAiLCIsIDEpOworICAgIHR5cGVuYW1lID0gZ19zdHJk dXBfcHJpbnRmKEhFWEFHT05fQ1BVX1RZUEVfTkFNRSgiJXMiKSwgY3B1bmFtZVswXSk7CisgICAg b2MgPSBvYmplY3RfY2xhc3NfYnlfbmFtZSh0eXBlbmFtZSk7CisgICAgZ19zdHJmcmVldihjcHVu YW1lKTsKKyAgICBnX2ZyZWUodHlwZW5hbWUpOworICAgIGlmICghb2MgfHwgIW9iamVjdF9jbGFz c19keW5hbWljX2Nhc3Qob2MsIFRZUEVfSEVYQUdPTl9DUFUpIHx8CisgICAgICAgIG9iamVjdF9j bGFzc19pc19hYnN0cmFjdChvYykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAg IHJldHVybiBvYzsKK30KKworc3RhdGljIFByb3BlcnR5IGhleGFnb25fbGxkYl9jb21wYXRfcHJv cGVydHkgPQorICAgIERFRklORV9QUk9QX0JPT0woImxsZGItY29tcGF0IiwgSGV4YWdvbkNQVSwg bGxkYl9jb21wYXQsIGZhbHNlKTsKK3N0YXRpYyBQcm9wZXJ0eSBoZXhhZ29uX2xsZGJfc3RhY2tf YWRqdXN0X3Byb3BlcnR5ID0KKyAgICBERUZJTkVfUFJPUF9VTlNJR05FRCgibGxkYi1zdGFjay1h ZGp1c3QiLCBIZXhhZ29uQ1BVLCBsbGRiX3N0YWNrX2FkanVzdCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAwLCBxZGV2X3Byb3BfdWludDMyLCB0YXJnZXRfdWxvbmcpOworCitjb25zdCBjaGFy ICogY29uc3QgaGV4YWdvbl9yZWduYW1lc1tUT1RBTF9QRVJfVEhSRUFEX1JFR1NdID0geworICAg InIwIiwgInIxIiwgICJyMiIsICAicjMiLCAgInI0IiwgICAicjUiLCAgInI2IiwgICJyNyIsCisg ICAicjgiLCAicjkiLCAgInIxMCIsICJyMTEiLCAicjEyIiwgICJyMTMiLCAicjE0IiwgInIxNSIs CisgICJyMTYiLCAicjE3IiwgInIxOCIsICJyMTkiLCAicjIwIiwgICJyMjEiLCAicjIyIiwgInIy MyIsCisgICJyMjQiLCAicjI1IiwgInIyNiIsICJyMjciLCAicjI4IiwgICJyMjkiLCAicjMwIiwg InIzMSIsCisgICJzYTAiLCAibGMwIiwgInNhMSIsICJsYzEiLCAicDNfMCIsICJjNSIsICAibTAi LCAgIm0xIiwKKyAgInVzciIsICJwYyIsICAidWdwIiwgImdwIiwgICJjczAiLCAgImNzMSIsICJj MTQiLCAiYzE1IiwKKyAgImMxNiIsICJjMTciLCAiYzE4IiwgImMxOSIsICJwa3RfY250IiwgICJp bnNuX2NudCIsICJjMjIiLCAiYzIzIiwKKyAgImMyNCIsICJjMjUiLCAiYzI2IiwgImMyNyIsICJj MjgiLCAgImMyOSIsICJjMzAiLCAiYzMxIiwKK307CisKKy8qCisgKiBPbmUgb2YgdGhlIG1haW4g ZGVidWdnaW5nIHRlY2huaXF1ZXMgaXMgdG8gdXNlICItZCBjcHUiIGFuZCBjb21wYXJlIGFnYWlu c3QKKyAqIExMREIgb3V0cHV0IHdoZW4gc2luZ2xlIHN0ZXBwaW5nLiAgSG93ZXZlciwgdGhlIHRh cmdldCBhbmQgcWVtdSBwdXQgdGhlCisgKiBzdGFja3MgYXQgZGlmZmVyZW50IGxvY2F0aW9ucy4g IFRoaXMgaXMgdXNlZCB0byBjb21wZW5zYXRlIHNvIHRoZSBkaWZmIGlzCisgKiBjbGVhbmVyLgor ICovCitzdGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyBhZGp1c3Rfc3RhY2tfcHRycyhDUFVIZXhh Z29uU3RhdGUgKmVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhcmdldF91bG9uZyBhZGRyKQoreworICAgIEhleGFnb25DUFUgKmNwdSA9IGNvbnRhaW5l cl9vZihlbnYsIEhleGFnb25DUFUsIGVudik7CisgICAgdGFyZ2V0X3Vsb25nIHN0YWNrX2FkanVz dCA9IGNwdS0+bGxkYl9zdGFja19hZGp1c3Q7CisgICAgdGFyZ2V0X3Vsb25nIHN0YWNrX3N0YXJ0 ID0gZW52LT5zdGFja19zdGFydDsKKyAgICB0YXJnZXRfdWxvbmcgc3RhY2tfc2l6ZSA9IDB4MTAw MDA7CisKKyAgICBpZiAoc3RhY2tfYWRqdXN0ID09IDApIHsKKyAgICAgICAgcmV0dXJuIGFkZHI7 CisgICAgfQorCisgICAgaWYgKHN0YWNrX3N0YXJ0ICsgMHgxMDAwID49IGFkZHIgJiYgYWRkciA+ PSAoc3RhY2tfc3RhcnQgLSBzdGFja19zaXplKSkgeworICAgICAgICByZXR1cm4gYWRkciAtIHN0 YWNrX2FkanVzdDsKKyAgICB9CisgICAgcmV0dXJuIGFkZHI7Cit9CisKKy8qIEhFWF9SRUdfUDNf MCAoYWthIEM0KSBpcyBhbiBhbGlhcyBmb3IgdGhlIHByZWRpY2F0ZSByZWdpc3RlcnMgKi8KK3N0 YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIHJlYWRfcDNfMChDUFVIZXhhZ29uU3RhdGUgKmVudikK K3sKKyAgICBpbnQzMl90IGNvbnRyb2xfcmVnID0gMDsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkg PSBOVU1fUFJFR1MgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICBjb250cm9sX3JlZyA8PD0g ODsKKyAgICAgICAgY29udHJvbF9yZWcgfD0gZW52LT5wcmVkW2ldICYgMHhmZjsKKyAgICB9Cisg ICAgcmV0dXJuIGNvbnRyb2xfcmVnOworfQorCitzdGF0aWMgdm9pZCBwcmludF9yZWcoRklMRSAq ZiwgQ1BVSGV4YWdvblN0YXRlICplbnYsIGludCByZWdudW0pCit7CisgICAgdGFyZ2V0X3Vsb25n IHZhbHVlOworCisgICAgaWYgKHJlZ251bSA9PSBIRVhfUkVHX1AzXzApIHsKKyAgICAgICAgdmFs dWUgPSByZWFkX3AzXzAoZW52KTsKKyAgICB9IGVsc2UgeworICAgICAgICB2YWx1ZSA9IHJlZ251 bSA8IDMyID8gYWRqdXN0X3N0YWNrX3B0cnMoZW52LCBlbnYtPmdwcltyZWdudW1dKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDogZW52LT5ncHJbcmVnbnVtXTsKKyAgICB9CisKKyAgICBx ZW11X2ZwcmludGYoZiwgIiAgJXMgPSAweCIgVEFSR0VUX0ZNVF9seCAiXG4iLAorICAgICAgICAg ICAgICAgICBoZXhhZ29uX3JlZ25hbWVzW3JlZ251bV0sIHZhbHVlKTsKK30KKworc3RhdGljIHZv aWQgaGV4YWdvbl9kdW1wKENQVUhleGFnb25TdGF0ZSAqZW52LCBGSUxFICpmKQoreworICAgIEhl eGFnb25DUFUgKmNwdSA9IGNvbnRhaW5lcl9vZihlbnYsIEhleGFnb25DUFUsIGVudik7CisKKyAg ICBpZiAoY3B1LT5sbGRiX2NvbXBhdCkgeworICAgICAgICAvKgorICAgICAgICAgKiBXaGVuIGNv bXBhcmluZyB3aXRoIExMREIsIGl0IGRvZXNuJ3Qgc3RlcCB0aHJvdWdoIHNpbmdsZS1jeWNsZQor ICAgICAgICAgKiBoYXJkd2FyZSBsb29wcyB0aGUgc2FtZSB3YXkuICBTbywgd2UganVzdCBza2lw IHRoZW0gaGVyZQorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGVudi0+Z3ByW0hFWF9SRUdfUENd ID09IGVudi0+bGFzdF9wY19kdW1wZWQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg fQorICAgICAgICBlbnYtPmxhc3RfcGNfZHVtcGVkID0gZW52LT5ncHJbSEVYX1JFR19QQ107Cisg ICAgfQorCisgICAgcWVtdV9mcHJpbnRmKGYsICJHZW5lcmFsIFB1cnBvc2UgUmVnaXN0ZXJzID0g e1xuIik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzMjsgaSsrKSB7CisgICAgICAgIHByaW50 X3JlZyhmLCBlbnYsIGkpOworICAgIH0KKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX1NB MCk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19MQzApOworICAgIHByaW50X3JlZyhm LCBlbnYsIEhFWF9SRUdfU0ExKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX0xDMSk7 CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19NMCk7CisgICAgcHJpbnRfcmVnKGYsIGVu diwgSEVYX1JFR19NMSk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19VU1IpOworICAg IHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfUDNfMCk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwg SEVYX1JFR19HUCk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19VR1ApOworICAgIHBy aW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfUEMpOworI2lmZGVmIENPTkZJR19VU0VSX09OTFkKKyAg ICAvKgorICAgICAqIE5vdCBtb2RlbGxlZCBpbiB1c2VyIG1vZGUsIHByaW50IGp1bmsgdG8gbWlu aW1pemUgdGhlIGRpZmYncworICAgICAqIHdpdGggTExEQiBvdXRwdXQKKyAgICAgKi8KKyAgICBx ZW11X2ZwcmludGYoZiwgIiAgY2F1c2UgPSAweDAwMDAwMGRiXG4iKTsKKyAgICBxZW11X2Zwcmlu dGYoZiwgIiAgYmFkdmEgPSAweDAwMDAwMDAwXG4iKTsKKyAgICBxZW11X2ZwcmludGYoZiwgIiAg Y3MwID0gMHgwMDAwMDAwMFxuIik7CisgICAgcWVtdV9mcHJpbnRmKGYsICIgIGNzMSA9IDB4MDAw MDAwMDBcbiIpOworI2Vsc2UKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX0NBVVNFKTsK KyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX0JBRFZBKTsKKyAgICBwcmludF9yZWcoZiwg ZW52LCBIRVhfUkVHX0NTMCk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19DUzEpOwor I2VuZGlmCisgICAgcWVtdV9mcHJpbnRmKGYsICJ9XG4iKTsKK30KKworc3RhdGljIHZvaWQgaGV4 YWdvbl9kdW1wX3N0YXRlKENQVVN0YXRlICpjcywgRklMRSAqZiwgaW50IGZsYWdzKQoreworICAg IEhleGFnb25DUFUgKmNwdSA9IEhFWEFHT05fQ1BVKGNzKTsKKyAgICBDUFVIZXhhZ29uU3RhdGUg KmVudiA9ICZjcHUtPmVudjsKKworICAgIGhleGFnb25fZHVtcChlbnYsIGYpOworfQorCit2b2lk IGhleGFnb25fZGVidWcoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAgaGV4YWdvbl9kdW1w KGVudiwgc3Rkb3V0KTsKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9jcHVfc2V0X3BjKENQVVN0 YXRlICpjcywgdmFkZHIgdmFsdWUpCit7CisgICAgSGV4YWdvbkNQVSAqY3B1ID0gSEVYQUdPTl9D UFUoY3MpOworICAgIENQVUhleGFnb25TdGF0ZSAqZW52ID0gJmNwdS0+ZW52OworICAgIGVudi0+ Z3ByW0hFWF9SRUdfUENdID0gdmFsdWU7Cit9CisKK3N0YXRpYyB2b2lkIGhleGFnb25fY3B1X3N5 bmNocm9uaXplX2Zyb21fdGIoQ1BVU3RhdGUgKmNzLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2xhdGlvbkJsb2NrICp0YikKK3sKKyAgICBI ZXhhZ29uQ1BVICpjcHUgPSBIRVhBR09OX0NQVShjcyk7CisgICAgQ1BVSGV4YWdvblN0YXRlICpl bnYgPSAmY3B1LT5lbnY7CisgICAgZW52LT5ncHJbSEVYX1JFR19QQ10gPSB0Yi0+cGM7Cit9CisK K3N0YXRpYyBib29sIGhleGFnb25fY3B1X2hhc193b3JrKENQVVN0YXRlICpjcykKK3sKKyAgICBy ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCByZXN0b3JlX3N0YXRlX3RvX29wYyhDUFVIZXhhZ29uU3Rh dGUgKmVudiwgVHJhbnNsYXRpb25CbG9jayAqdGIsCisgICAgICAgICAgICAgICAgICAgICAgICAg IHRhcmdldF91bG9uZyAqZGF0YSkKK3sKKyAgICBlbnYtPmdwcltIRVhfUkVHX1BDXSA9IGRhdGFb MF07Cit9CisKK3N0YXRpYyB2b2lkIGhleGFnb25fY3B1X3Jlc2V0KERldmljZVN0YXRlICpkZXYp Cit7CisgICAgQ1BVU3RhdGUgKmNzID0gQ1BVKGRldik7CisgICAgSGV4YWdvbkNQVSAqY3B1ID0g SEVYQUdPTl9DUFUoY3MpOworICAgIEhleGFnb25DUFVDbGFzcyAqbWNjID0gSEVYQUdPTl9DUFVf R0VUX0NMQVNTKGNwdSk7CisKKyAgICBtY2MtPnBhcmVudF9yZXNldChkZXYpOworfQorCitzdGF0 aWMgdm9pZCBoZXhhZ29uX2NwdV9kaXNhc19zZXRfaW5mbyhDUFVTdGF0ZSAqcywgZGlzYXNzZW1i bGVfaW5mbyAqaW5mbykKK3sKKyAgICBpbmZvLT5wcmludF9pbnNuID0gcHJpbnRfaW5zbl9oZXhh Z29uOworfQorCitzdGF0aWMgdm9pZCBoZXhhZ29uX2NwdV9yZWFsaXplKERldmljZVN0YXRlICpk ZXYsIEVycm9yICoqZXJycCkKK3sKKyAgICBDUFVTdGF0ZSAqY3MgPSBDUFUoZGV2KTsKKyAgICBI ZXhhZ29uQ1BVQ2xhc3MgKm1jYyA9IEhFWEFHT05fQ1BVX0dFVF9DTEFTUyhkZXYpOworICAgIEVy cm9yICpsb2NhbF9lcnIgPSBOVUxMOworCisgICAgY3B1X2V4ZWNfcmVhbGl6ZWZuKGNzLCAmbG9j YWxfZXJyKTsKKyAgICBpZiAobG9jYWxfZXJyICE9IE5VTEwpIHsKKyAgICAgICAgZXJyb3JfcHJv cGFnYXRlKGVycnAsIGxvY2FsX2Vycik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBx ZW11X2luaXRfdmNwdShjcyk7CisgICAgY3B1X3Jlc2V0KGNzKTsKKworICAgIG1jYy0+cGFyZW50 X3JlYWxpemUoZGV2LCBlcnJwKTsKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9jcHVfaW5pdChP YmplY3QgKm9iaikKK3sKKyAgICBIZXhhZ29uQ1BVICpjcHUgPSBIRVhBR09OX0NQVShvYmopOwor CisgICAgY3B1X3NldF9jcHVzdGF0ZV9wb2ludGVycyhjcHUpOworICAgIHFkZXZfcHJvcGVydHlf YWRkX3N0YXRpYyhERVZJQ0Uob2JqKSwgJmhleGFnb25fbGxkYl9jb21wYXRfcHJvcGVydHkpOwor ICAgIHFkZXZfcHJvcGVydHlfYWRkX3N0YXRpYyhERVZJQ0Uob2JqKSwgJmhleGFnb25fbGxkYl9z dGFja19hZGp1c3RfcHJvcGVydHkpOworfQorCitzdGF0aWMgYm9vbCBoZXhhZ29uX3RsYl9maWxs KENQVVN0YXRlICpjcywgdmFkZHIgYWRkcmVzcywgaW50IHNpemUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE1NVUFjY2Vzc1R5cGUgYWNjZXNzX3R5cGUsIGludCBtbXVfaWR4LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByb2JlLCB1aW50cHRyX3QgcmV0YWRkcikK K3sKKyNpZmRlZiBDT05GSUdfVVNFUl9PTkxZCisgICAgc3dpdGNoIChhY2Nlc3NfdHlwZSkgewor ICAgIGNhc2UgTU1VX0lOU1RfRkVUQ0g6CisgICAgICAgIGNzLT5leGNlcHRpb25faW5kZXggPSBI RVhfRVhDUF9GRVRDSF9OT19VUEFHRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNTVVfREFU QV9MT0FEOgorICAgICAgICBjcy0+ZXhjZXB0aW9uX2luZGV4ID0gSEVYX0VYQ1BfUFJJVl9OT19V UkVBRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNTVVfREFUQV9TVE9SRToKKyAgICAgICAg Y3MtPmV4Y2VwdGlvbl9pbmRleCA9IEhFWF9FWENQX1BSSVZfTk9fVVdSSVRFOworICAgICAgICBi cmVhazsKKyAgICB9CisgICAgY3B1X2xvb3BfZXhpdF9yZXN0b3JlKGNzLCByZXRhZGRyKTsKKyNl bHNlCisjZXJyb3IgU3lzdGVtIG1vZGUgbm90IGltcGxlbWVudGVkIGZvciBIZXhhZ29uCisjZW5k aWYKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9jcHVfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAq Yywgdm9pZCAqZGF0YSkKK3sKKyAgICBIZXhhZ29uQ1BVQ2xhc3MgKm1jYyA9IEhFWEFHT05fQ1BV X0NMQVNTKGMpOworICAgIENQVUNsYXNzICpjYyA9IENQVV9DTEFTUyhjKTsKKyAgICBEZXZpY2VD bGFzcyAqZGMgPSBERVZJQ0VfQ0xBU1MoYyk7CisKKyAgICBkZXZpY2VfY2xhc3Nfc2V0X3BhcmVu dF9yZWFsaXplKGRjLCBoZXhhZ29uX2NwdV9yZWFsaXplLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJm1jYy0+cGFyZW50X3JlYWxpemUpOworCisgICAgZGV2aWNlX2NsYXNz X3NldF9wYXJlbnRfcmVzZXQoZGMsIGhleGFnb25fY3B1X3Jlc2V0LCAmbWNjLT5wYXJlbnRfcmVz ZXQpOworCisgICAgY2MtPmNsYXNzX2J5X25hbWUgPSBoZXhhZ29uX2NwdV9jbGFzc19ieV9uYW1l OworICAgIGNjLT5oYXNfd29yayA9IGhleGFnb25fY3B1X2hhc193b3JrOworICAgIGNjLT5kdW1w X3N0YXRlID0gaGV4YWdvbl9kdW1wX3N0YXRlOworICAgIGNjLT5zZXRfcGMgPSBoZXhhZ29uX2Nw dV9zZXRfcGM7CisgICAgY2MtPnN5bmNocm9uaXplX2Zyb21fdGIgPSBoZXhhZ29uX2NwdV9zeW5j aHJvbml6ZV9mcm9tX3RiOworICAgIGNjLT5nZGJfbnVtX2NvcmVfcmVncyA9IFRPVEFMX1BFUl9U SFJFQURfUkVHUzsKKyAgICBjYy0+Z2RiX3N0b3BfYmVmb3JlX3dhdGNocG9pbnQgPSB0cnVlOwor ICAgIGNjLT5kaXNhc19zZXRfaW5mbyA9IGhleGFnb25fY3B1X2Rpc2FzX3NldF9pbmZvOworI2lm ZGVmIENPTkZJR19UQ0cKKyAgICBjYy0+dGNnX2luaXRpYWxpemUgPSBoZXhhZ29uX3RyYW5zbGF0 ZV9pbml0OworICAgIGNjLT50bGJfZmlsbCA9IGhleGFnb25fdGxiX2ZpbGw7CisjZW5kaWYKK30K KworI2RlZmluZSBERUZJTkVfQ1BVKHR5cGVfbmFtZSwgaW5pdGZuKSAgICAgIFwKKyAgICB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC5uYW1lID0gdHlw ZV9uYW1lLCAgICAgICAgICAgICAgICAgXAorICAgICAgICAucGFyZW50ID0gVFlQRV9IRVhBR09O X0NQVSwgICAgICAgIFwKKyAgICAgICAgLmluc3RhbmNlX2luaXQgPSBpbml0Zm4gICAgICAgICAg ICBcCisgICAgfQorCitzdGF0aWMgY29uc3QgVHlwZUluZm8gaGV4YWdvbl9jcHVfdHlwZV9pbmZv c1tdID0geworICAgIHsKKyAgICAgICAgLm5hbWUgPSBUWVBFX0hFWEFHT05fQ1BVLAorICAgICAg ICAucGFyZW50ID0gVFlQRV9DUFUsCisgICAgICAgIC5pbnN0YW5jZV9zaXplID0gc2l6ZW9mKEhl eGFnb25DUFUpLAorICAgICAgICAuaW5zdGFuY2VfaW5pdCA9IGhleGFnb25fY3B1X2luaXQsCisg ICAgICAgIC5hYnN0cmFjdCA9IHRydWUsCisgICAgICAgIC5jbGFzc19zaXplID0gc2l6ZW9mKEhl eGFnb25DUFVDbGFzcyksCisgICAgICAgIC5jbGFzc19pbml0ID0gaGV4YWdvbl9jcHVfY2xhc3Nf aW5pdCwKKyAgICB9LAorICAgIERFRklORV9DUFUoVFlQRV9IRVhBR09OX0NQVV9WNjcsICAgICAg ICAgICAgICBoZXhhZ29uX3Y2N19jcHVfaW5pdCksCit9OworCitERUZJTkVfVFlQRVMoaGV4YWdv bl9jcHVfdHlwZV9pbmZvcykKLS0gCjIuNy40Cgo=