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 5BFE9C433DF for ; Tue, 18 Aug 2020 15:53:23 +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 186942080C for ; Tue, 18 Aug 2020 15:53:23 +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="NDyuySnC" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 186942080C 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]:37454 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k83vN-000254-PY for qemu-devel@archiver.kernel.org; Tue, 18 Aug 2020 11:53:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60540) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k83tB-0006Na-Qc for qemu-devel@nongnu.org; Tue, 18 Aug 2020 11:51:05 -0400 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:12936) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k83t7-0005rl-BQ for qemu-devel@nongnu.org; Tue, 18 Aug 2020 11:51:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1597765861; x=1629301861; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Ci5pi1ZfWMNl0dn7yV08300SXE+88jdvgIJmOSKw2xQ=; b=NDyuySnCMNtLVA8Vdch3GCZuwd0Nv+uKSaCpljOhQOsBViZwDgWowxTE ParxRegn7xTvkmR9IkyTCm9z9IcQp8v8Bw0RbIPAM74w/J79C6BPTsqZX Pwt/wx3IiWf/UIhNVNHNsJhzZ5D4M8jdtlS9CEawROSOYoFeHeQjryI1Y U=; Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by alexa-out-sd-02.qualcomm.com with ESMTP; 18 Aug 2020 08:50:56 -0700 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg04-sd.qualcomm.com with ESMTP; 18 Aug 2020 08:50:55 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 8A6591618; Tue, 18 Aug 2020 10:50:55 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH v3 04/34] Hexagon (target/hexagon) scalar core definition Date: Tue, 18 Aug 2020 10:50:17 -0500 Message-Id: <1597765847-16637-5-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1597765847-16637-1-git-send-email-tsimpson@quicinc.com> References: <1597765847-16637-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/08/18 11:50:57 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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, riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, tsimpson@quicinc.com, philmd@redhat.com, aleksandar.m.mail@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" QWRkIHRhcmdldCBzdGF0ZSBoZWFkZXIsIHRhcmdldCBkZWZpbml0aW9ucyBhbmQgaW5pdGlhbGl6 YXRpb24gcm91dGluZXMKClNpZ25lZC1vZmYtYnk6IFRheWxvciBTaW1wc29uIDx0c2ltcHNvbkBx dWljaW5jLmNvbT4KLS0tCiB0YXJnZXQvaGV4YWdvbi9jcHUtcGFyYW0uaCB8ICAyNiArKysrCiB0 YXJnZXQvaGV4YWdvbi9jcHUuaCAgICAgICB8IDE2NCArKysrKysrKysrKysrKysrKysrKysrKwog dGFyZ2V0L2hleGFnb24vY3B1X2JpdHMuaCAgfCAgMzQgKysrKysKIHRhcmdldC9oZXhhZ29uL2lu dGVybmFsLmggIHwgIDQwICsrKysrKwogdGFyZ2V0L2hleGFnb24vY3B1LmMgICAgICAgfCAzMTYg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNo YW5nZWQsIDU4MCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0L2hleGFn b24vY3B1LXBhcmFtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQvaGV4YWdvbi9jcHUuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9oZXhhZ29uL2NwdV9iaXRzLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCB0YXJnZXQvaGV4YWdvbi9pbnRlcm5hbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFy Z2V0L2hleGFnb24vY3B1LmMKCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9jcHUtcGFyYW0u aCBiL3RhcmdldC9oZXhhZ29uL2NwdS1wYXJhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjNhNmI3MjcKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9jcHUt cGFyYW0uaApAQCAtMCwwICsxLDI2IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjAg UXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq CisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYg SEVYQUdPTl9DUFVfUEFSQU1fSAorI2RlZmluZSBIRVhBR09OX0NQVV9QQVJBTV9ICisKKyNkZWZp bmUgVEFSR0VUX1BIWVNfQUREUl9TUEFDRV9CSVRTIDM2CisjZGVmaW5lIFRBUkdFVF9WSVJUX0FE RFJfU1BBQ0VfQklUUyAzMgorCisjZGVmaW5lIE5CX01NVV9NT0RFUyAxCisKKyNlbmRpZgpkaWZm IC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vY3B1LmggYi90YXJnZXQvaGV4YWdvbi9jcHUuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjNkNjQ0Ci0tLSAvZGV2L251bGwKKysr IGIvdGFyZ2V0L2hleGFnb24vY3B1LmgKQEAgLTAsMCArMSwxNjQgQEAKKy8qCisgKiAgQ29weXJp Z2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmln aHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisgKi8KKworI2lmbmRlZiBIRVhBR09OX0NQVV9ICisjZGVmaW5lIEhFWEFHT05fQ1BVX0gKKwor LyogRm9yd2FyZCBkZWNsYXJhdGlvbiBuZWVkZWQgYnkgc29tZSBvZiB0aGUgaGVhZGVyIGZpbGVz ICovCit0eXBlZGVmIHN0cnVjdCBDUFVIZXhhZ29uU3RhdGUgQ1BVSGV4YWdvblN0YXRlOworCisj aW5jbHVkZSA8ZmVudi5oPgorCisjZGVmaW5lIFRBUkdFVF9QQUdFX0JJVFMgMTYgICAgIC8qIDY0 SyBwYWdlcyAqLworI2RlZmluZSBUQVJHRVRfTE9OR19CSVRTIDMyCisKKyNpbmNsdWRlICJxZW11 L2NvbXBpbGVyLmgiCisjaW5jbHVkZSAicWVtdS1jb21tb24uaCIKKyNpbmNsdWRlICJleGVjL2Nw dS1kZWZzLmgiCisjaW5jbHVkZSAiaGV4X3JlZ3MuaCIKKworI2RlZmluZSBOVU1fUFJFR1MgNAor I2lmZGVmIENPTkZJR19VU0VSX09OTFkKKyNkZWZpbmUgVE9UQUxfUEVSX1RIUkVBRF9SRUdTIDY0 CisjZWxzZQorI2Vycm9yIFN5c3RlbSBtb2RlIG5vdCBpbXBsZW1lbnRlZAorI2VuZGlmCisKKyNk ZWZpbmUgU0xPVFNfTUFYIDQKKyNkZWZpbmUgU1RPUkVTX01BWCAyCisjZGVmaW5lIFJFR19XUklU RVNfTUFYIDMyCisjZGVmaW5lIFBSRURfV1JJVEVTX01BWCA1ICAgICAgICAgICAgICAgICAgIC8q IDQgaW5zbnMgKyBlbmRsb29wICovCisKKyNkZWZpbmUgVFlQRV9IRVhBR09OX0NQVSAiaGV4YWdv bi1jcHUiCisKKyNkZWZpbmUgSEVYQUdPTl9DUFVfVFlQRV9TVUZGSVggIi0iIFRZUEVfSEVYQUdP Tl9DUFUKKyNkZWZpbmUgSEVYQUdPTl9DUFVfVFlQRV9OQU1FKG5hbWUpIChuYW1lIEhFWEFHT05f Q1BVX1RZUEVfU1VGRklYKQorI2RlZmluZSBDUFVfUkVTT0xWSU5HX1RZUEUgVFlQRV9IRVhBR09O X0NQVQorCisjZGVmaW5lIFRZUEVfSEVYQUdPTl9DUFVfVjY3IEhFWEFHT05fQ1BVX1RZUEVfTkFN RSgidjY3IikKKworI2RlZmluZSBNTVVfVVNFUl9JRFggMAorCitzdHJ1Y3QgTWVtTG9nIHsKKyAg ICB0YXJnZXRfdWxvbmcgdmE7CisgICAgdWludDhfdCB3aWR0aDsKKyAgICB1aW50MzJfdCBkYXRh MzI7CisgICAgdWludDY0X3QgZGF0YTY0OworfTsKKworI2RlZmluZSBFWEVDX1NUQVRVU19PSyAg ICAgICAgICAweDAwMDAKKyNkZWZpbmUgRVhFQ19TVEFUVVNfU1RPUCAgICAgICAgMHgwMDAyCisj ZGVmaW5lIEVYRUNfU1RBVFVTX1JFUExBWSAgICAgIDB4MDAxMAorI2RlZmluZSBFWEVDX1NUQVRV U19MT0NLRUQgICAgICAweDAwMjAKKyNkZWZpbmUgRVhFQ19TVEFUVVNfRVhDRVBUSU9OICAgMHgw MTAwCisKKworI2RlZmluZSBFWENFUFRJT05fREVURUNURUQgICAgICAoZW52LT5zdGF0dXMgJiBF WEVDX1NUQVRVU19FWENFUFRJT04pCisjZGVmaW5lIFJFUExBWV9ERVRFQ1RFRCAgICAgICAgIChl bnYtPnN0YXR1cyAmIEVYRUNfU1RBVFVTX1JFUExBWSkKKyNkZWZpbmUgQ0xFQVJfRVhDRVBUSU9O ICAgICAgICAgKGVudi0+c3RhdHVzICY9ICh+RVhFQ19TVEFUVVNfRVhDRVBUSU9OKSkKKyNkZWZp bmUgU0VUX0VYQ0VQVElPTiAgICAgICAgICAgKGVudi0+c3RhdHVzIHw9IEVYRUNfU1RBVFVTX0VY Q0VQVElPTikKKworc3RydWN0IENQVUhleGFnb25TdGF0ZSB7CisgICAgdGFyZ2V0X3Vsb25nIGdw cltUT1RBTF9QRVJfVEhSRUFEX1JFR1NdOworICAgIHRhcmdldF91bG9uZyBwcmVkW05VTV9QUkVH U107CisgICAgdGFyZ2V0X3Vsb25nIGJyYW5jaF90YWtlbjsKKyAgICB0YXJnZXRfdWxvbmcgbmV4 dF9QQzsKKworICAgIC8qIEZvciBjb21wYXJpbmcgd2l0aCBMTERCIG9uIHRhcmdldCAtIHNlZSBo YWNrX3N0YWNrX3B0cnMgZnVuY3Rpb24gKi8KKyAgICB0YXJnZXRfdWxvbmcgc3RhY2tfc3RhcnQ7 CisgICAgdGFyZ2V0X3Vsb25nIHN0YWNrX2FkanVzdDsKKworICAgIHVpbnQ4X3Qgc2xvdF9jYW5j ZWxsZWQ7CisgICAgdGFyZ2V0X3Vsb25nIG5ld192YWx1ZVtUT1RBTF9QRVJfVEhSRUFEX1JFR1Nd OworCisgICAgLyoKKyAgICAgKiBPbmx5IHVzZWQgd2hlbiBIRVhfREVCVUcgaXMgb24sIGJ1dCB1 bmNvbmRpdGlvbmFsbHkgaW5jbHVkZWQKKyAgICAgKiB0byByZWR1Y2UgcmVjb21waWxlIHRpbWUg d2hlbiB0dXJuaW5nIEhFWF9ERUJVRyBvbi9vZmYuCisgICAgICovCisgICAgdGFyZ2V0X3Vsb25n IHRoaXNfUEM7CisgICAgdGFyZ2V0X3Vsb25nIHJlZ193cml0dGVuW1RPVEFMX1BFUl9USFJFQURf UkVHU107CisKKyAgICB0YXJnZXRfdWxvbmcgbmV3X3ByZWRfdmFsdWVbTlVNX1BSRUdTXTsKKyAg ICB0YXJnZXRfdWxvbmcgcHJlZF93cml0dGVuOworCisgICAgc3RydWN0IE1lbUxvZyBtZW1fbG9n X3N0b3Jlc1tTVE9SRVNfTUFYXTsKKyAgICB0YXJnZXRfdWxvbmcgcGt0X2hhc19zdG9yZV9zMTsK KyAgICB0YXJnZXRfdWxvbmcgZGN6ZXJvX2FkZHI7CisKKyAgICBmZW52X3QgZmVudjsKKworICAg IHRhcmdldF91bG9uZyBsbHNjX2FkZHI7CisgICAgdGFyZ2V0X3Vsb25nIGxsc2NfdmFsOworICAg IHVpbnQ2NF90ICAgICBsbHNjX3ZhbF9pNjQ7CisKKyAgICB0YXJnZXRfdWxvbmcgaXNfZ2F0aGVy X3N0b3JlX2luc247CisgICAgdGFyZ2V0X3Vsb25nIGdhdGhlcl9pc3N1ZWQ7Cit9OworCisjZGVm aW5lIEhFWEFHT05fQ1BVX0NMQVNTKGtsYXNzKSBcCisgICAgT0JKRUNUX0NMQVNTX0NIRUNLKEhl eGFnb25DUFVDbGFzcywgKGtsYXNzKSwgVFlQRV9IRVhBR09OX0NQVSkKKyNkZWZpbmUgSEVYQUdP Tl9DUFUob2JqKSBcCisgICAgT0JKRUNUX0NIRUNLKEhleGFnb25DUFUsIChvYmopLCBUWVBFX0hF WEFHT05fQ1BVKQorI2RlZmluZSBIRVhBR09OX0NQVV9HRVRfQ0xBU1Mob2JqKSBcCisgICAgT0JK RUNUX0dFVF9DTEFTUyhIZXhhZ29uQ1BVQ2xhc3MsIChvYmopLCBUWVBFX0hFWEFHT05fQ1BVKQor Cit0eXBlZGVmIHN0cnVjdCBIZXhhZ29uQ1BVQ2xhc3MgeworICAgIC8qPCBwcml2YXRlID4qLwor ICAgIENQVUNsYXNzIHBhcmVudF9jbGFzczsKKyAgICAvKjwgcHVibGljID4qLworICAgIERldmlj ZVJlYWxpemUgcGFyZW50X3JlYWxpemU7CisgICAgRGV2aWNlUmVzZXQgcGFyZW50X3Jlc2V0Owor fSBIZXhhZ29uQ1BVQ2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IEhleGFnb25DUFUgeworICAgIC8q PCBwcml2YXRlID4qLworICAgIENQVVN0YXRlIHBhcmVudF9vYmo7CisgICAgLyo8IHB1YmxpYyA+ Ki8KKyAgICBDUFVOZWdhdGl2ZU9mZnNldFN0YXRlIG5lZzsKKyAgICBDUFVIZXhhZ29uU3RhdGUg ZW52OworfSBIZXhhZ29uQ1BVOworCitzdGF0aWMgaW5saW5lIEhleGFnb25DUFUgKmhleGFnb25f ZW52X2dldF9jcHUoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAgcmV0dXJuIGNvbnRhaW5l cl9vZihlbnYsIEhleGFnb25DUFUsIGVudik7Cit9CisKKyNpbmNsdWRlICJjcHVfYml0cy5oIgor CisjZGVmaW5lIGNwdV9zaWduYWxfaGFuZGxlciBjcHVfaGV4YWdvbl9zaWduYWxfaGFuZGxlcgor ZXh0ZXJuIGludCBjcHVfaGV4YWdvbl9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZv aWQgKnBpbmZvLCB2b2lkICpwdWMpOworCitzdGF0aWMgaW5saW5lIHZvaWQgY3B1X2dldF90Yl9j cHVfc3RhdGUoQ1BVSGV4YWdvblN0YXRlICplbnYsIHRhcmdldF91bG9uZyAqcGMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nICpjc19iYXNlLCB1 aW50MzJfdCAqZmxhZ3MpCit7CisgICAgKnBjID0gZW52LT5ncHJbSEVYX1JFR19QQ107CisgICAg KmNzX2Jhc2UgPSAwOworI2lmZGVmIENPTkZJR19VU0VSX09OTFkKKyAgICAqZmxhZ3MgPSAwOwor I2Vsc2UKKyNlcnJvciBTeXN0ZW0gbW9kZSBub3Qgc3VwcG9ydGVkIG9uIEhleGFnb24geWV0Cisj ZW5kaWYKK30KKwordHlwZWRlZiBzdHJ1Y3QgQ1BVSGV4YWdvblN0YXRlIENQVUFyY2hTdGF0ZTsK K3R5cGVkZWYgSGV4YWdvbkNQVSBBcmNoQ1BVOworCit2b2lkIGhleGFnb25fdHJhbnNsYXRlX2lu aXQodm9pZCk7CisKKyNpbmNsdWRlICJleGVjL2NwdS1hbGwuaCIKKworI2VuZGlmIC8qIEhFWEFH T05fQ1BVX0ggKi8KZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2NwdV9iaXRzLmggYi90YXJn ZXQvaGV4YWdvbi9jcHVfYml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjU4NmM3MTcKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9jcHVfYml0cy5oCkBA IC0wLDAgKzEsMzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJ bm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBIRVhBR09OX0NQ VV9CSVRTX0gKKyNkZWZpbmUgSEVYQUdPTl9DUFVfQklUU19ICisKKyNkZWZpbmUgSEVYX0VYQ1Bf RkVUQ0hfTk9fVVBBR0UgIDB4MDEyCisjZGVmaW5lIEhFWF9FWENQX0lOVkFMSURfUEFDS0VUICAw eDAxNQorI2RlZmluZSBIRVhfRVhDUF9JTlZBTElEX09QQ09ERSAgMHgwMTUKKyNkZWZpbmUgSEVY X0VYQ1BfUFJJVl9OT19VUkVBRCAgIDB4MDI0CisjZGVmaW5lIEhFWF9FWENQX1BSSVZfTk9fVVdS SVRFICAweDAyNQorCisjZGVmaW5lIEhFWF9FWENQX1RSQVAwICAgICAgICAgICAweDE3MgorCisj ZGVmaW5lIFBBQ0tFVF9XT1JEU19NQVggICAgICAgICA0CisKK2V4dGVybiBpbnQgZGlzYXNzZW1i bGVfaGV4YWdvbih1aW50MzJfdCAqd29yZHMsIGludCBud29yZHMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSk7CisKKyNlbmRpZgpkaWZmIC0t Z2l0IGEvdGFyZ2V0L2hleGFnb24vaW50ZXJuYWwuaCBiL3RhcmdldC9oZXhhZ29uL2ludGVybmFs LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNlNDQxMgotLS0gL2Rldi9u dWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2ludGVybmFsLmgKQEAgLTAsMCArMSw0MCBAQAorLyoK KyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIwIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJ bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVmIEhFWEFHT05fSU5URVJOQUxfSAorI2RlZmluZSBI RVhBR09OX0lOVEVSTkFMX0gKKworLyoKKyAqIENoYW5nZSBIRVhfREVCVUcgdG8gMSB0byB0dXJu IG9uIGRlYnVnZ2luZyBvdXRwdXQKKyAqLworI2RlZmluZSBIRVhfREVCVUcgMAorI2RlZmluZSBI RVhfREVCVUdfTE9HKC4uLikgXAorICAgIGRvIHsgXAorICAgICAgICBpZiAoSEVYX0RFQlVHKSB7 IFwKKyAgICAgICAgICAgIHJjdV9yZWFkX2xvY2soKTsgXAorICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsIF9fVkFfQVJHU19fKTsgXAorICAgICAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCk7IFwK KyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKworZXh0ZXJuIHZvaWQgaGV4YWdvbl9kZWJ1 ZyhDUFVIZXhhZ29uU3RhdGUgKmVudik7CisKK2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgaGV4 YWdvbl9yZWduYW1lc1tUT1RBTF9QRVJfVEhSRUFEX1JFR1NdOworCitleHRlcm4gdm9pZCBpbml0 X2dlbnB0cih2b2lkKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9jcHUu YyBiL3RhcmdldC9oZXhhZ29uL2NwdS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmQ4MTI5MTMKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9jcHUuYwpAQCAt MCwwICsxLDMxNiBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIwIFF1YWxjb21tIElu bm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSAicWVtdS9vc2Rl cC5oIgorI2luY2x1ZGUgInFlbXUvbG9nLmgiCisjaW5jbHVkZSAicWVtdS9xZW11LXByaW50Lmgi CisjaW5jbHVkZSAiY3B1LmgiCisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJleGVj L2V4ZWMtYWxsLmgiCisjaW5jbHVkZSAicWFwaS9lcnJvci5oIgorI2luY2x1ZGUgIm1pZ3JhdGlv bi92bXN0YXRlLmgiCisKK3N0YXRpYyB2b2lkIGhleGFnb25fdjY3X2NwdV9pbml0KE9iamVjdCAq b2JqKQoreworfQorCitzdGF0aWMgT2JqZWN0Q2xhc3MgKmhleGFnb25fY3B1X2NsYXNzX2J5X25h bWUoY29uc3QgY2hhciAqY3B1X21vZGVsKQoreworICAgIE9iamVjdENsYXNzICpvYzsKKyAgICBj aGFyICp0eXBlbmFtZTsKKyAgICBjaGFyICoqY3B1bmFtZTsKKworICAgIGNwdW5hbWUgPSBnX3N0 cnNwbGl0KGNwdV9tb2RlbCwgIiwiLCAxKTsKKyAgICB0eXBlbmFtZSA9IGdfc3RyZHVwX3ByaW50 ZihIRVhBR09OX0NQVV9UWVBFX05BTUUoIiVzIiksIGNwdW5hbWVbMF0pOworICAgIG9jID0gb2Jq ZWN0X2NsYXNzX2J5X25hbWUodHlwZW5hbWUpOworICAgIGdfc3RyZnJlZXYoY3B1bmFtZSk7Cisg ICAgZ19mcmVlKHR5cGVuYW1lKTsKKyAgICBpZiAoIW9jIHx8ICFvYmplY3RfY2xhc3NfZHluYW1p Y19jYXN0KG9jLCBUWVBFX0hFWEFHT05fQ1BVKSB8fAorICAgICAgICBvYmplY3RfY2xhc3NfaXNf YWJzdHJhY3Qob2MpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4g b2M7Cit9CisKK2NvbnN0IGNoYXIgKiBjb25zdCBoZXhhZ29uX3JlZ25hbWVzW1RPVEFMX1BFUl9U SFJFQURfUkVHU10gPSB7CisgICAicjAiLCAicjEiLCAgInIyIiwgICJyMyIsICAicjQiLCAgICJy NSIsICAicjYiLCAgInI3IiwKKyAgICJyOCIsICJyOSIsICAicjEwIiwgInIxMSIsICJyMTIiLCAg InIxMyIsICJyMTQiLCAicjE1IiwKKyAgInIxNiIsICJyMTciLCAicjE4IiwgInIxOSIsICJyMjAi LCAgInIyMSIsICJyMjIiLCAicjIzIiwKKyAgInIyNCIsICJyMjUiLCAicjI2IiwgInIyNyIsICJy MjgiLCAgInIyOSIsICJyMzAiLCAicjMxIiwKKyAgInNhMCIsICJsYzAiLCAic2ExIiwgImxjMSIs ICJwM18wIiwgImM1IiwgICJtMCIsICAibTEiLAorICAidXNyIiwgInBjIiwgICJ1Z3AiLCAiZ3Ai LCAgImNzMCIsICAiY3MxIiwgImMxNCIsICJjMTUiLAorICAiYzE2IiwgImMxNyIsICJjMTgiLCAi YzE5IiwgInBrdF9jbnQiLCAgImluc25fY250IiwgImMyMiIsICJjMjMiLAorICAiYzI0IiwgImMy NSIsICJjMjYiLCAiYzI3IiwgImMyOCIsICAiYzI5IiwgImMzMCIsICJjMzEiLAorfTsKKworLyoK KyAqIE9uZSBvZiB0aGUgbWFpbiBkZWJ1Z2dpbmcgdGVjaG5pcXVlcyBpcyB0byB1c2UgIi1kIGNw dSIgYW5kIGNvbXBhcmUgYWdhaW5zdAorICogTExEQiBvdXRwdXQgd2hlbiBzaW5nbGUgc3RlcHBp bmcuICBIb3dldmVyLCB0aGUgdGFyZ2V0IGFuZCBxZW11IHB1dCB0aGUKKyAqIHN0YWNrcyBhdCBk aWZmZXJlbnQgbG9jYXRpb25zLiAgVGhpcyBpcyB1c2VkIHRvIGNvbXBlbnNhdGUgc28gdGhlIGRp ZmYgaXMKKyAqIGNsZWFuZXIuCisgKi8KK3N0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGhhY2tf c3RhY2tfcHRycyhDUFVIZXhhZ29uU3RhdGUgKmVudiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgYWRkcikKK3sKKyAgICBzdGF0aWMgYm9v bCBmaXJzdCA9IHRydWU7CisgICAgaWYgKGZpcnN0KSB7CisgICAgICAgIGZpcnN0ID0gZmFsc2U7 CisgICAgICAgIGVudi0+c3RhY2tfc3RhcnQgPSBlbnYtPmdwcltIRVhfUkVHX1NQXTsKKyAgICAg ICAgZW52LT5ncHJbSEVYX1JFR19VU1JdID0gMHg1NjAwMDsKKworI2RlZmluZSBBREpVU1RfU1RB Q0sgMAorI2lmIEFESlVTVF9TVEFDSworICAgICAgICAvKgorICAgICAgICAgKiBDaGFuZ2UgdGhl IHR3byBudW1iZXJzIGJlbG93IHRvCisgICAgICAgICAqICAgICAxICAgIHFlbXUgc3RhY2sgbG9j YXRpb24KKyAgICAgICAgICogICAgIDIgICAgaGFyZHdhcmUgc3RhY2sgbG9jYXRpb24KKyAgICAg ICAgICogT3Igc2V0IHRvIHplcm8gZm9yIG5vcm1hbCBtb2RlIChubyBzdGFjayBhZGp1c3RtZW50 KQorICAgICAgICAgKi8KKyAgICAgICAgZW52LT5zdGFja19hZGp1c3QgPSAweGZmZmVlYjgwIC0g MHhiZjg5Zjk4MDsKKyNlbHNlCisgICAgICAgIGVudi0+c3RhY2tfYWRqdXN0ID0gMDsKKyNlbmRp ZgorICAgIH0KKworICAgIHRhcmdldF91bG9uZyBzdGFja19zdGFydCA9IGVudi0+c3RhY2tfc3Rh cnQ7CisgICAgdGFyZ2V0X3Vsb25nIHN0YWNrX3NpemUgPSAweDEwMDAwOworICAgIHRhcmdldF91 bG9uZyBzdGFja19hZGp1c3QgPSBlbnYtPnN0YWNrX2FkanVzdDsKKworICAgIGlmIChzdGFja19z dGFydCArIDB4MTAwMCA+PSBhZGRyICYmIGFkZHIgPj0gKHN0YWNrX3N0YXJ0IC0gc3RhY2tfc2l6 ZSkpIHsKKyAgICAgICAgcmV0dXJuIGFkZHIgLSBzdGFja19hZGp1c3Q7CisgICAgfQorICAgIHJl dHVybiBhZGRyOworfQorCisvKiBIRVhfUkVHX1AzXzAgKGFrYSBDNCkgaXMgYW4gYWxpYXMgZm9y IHRoZSBwcmVkaWNhdGUgcmVnaXN0ZXJzICovCitzdGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyBy ZWFkX3AzXzAoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAgaW50MzJfdCBjb250cm9sX3Jl ZyA9IDA7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gTlVNX1BSRUdTIC0gMTsgaSA+PSAwOyBp LS0pIHsKKyAgICAgICAgY29udHJvbF9yZWcgPDw9IDg7CisgICAgICAgIGNvbnRyb2xfcmVnIHw9 IGVudi0+cHJlZFtpXSAmIDB4ZmY7CisgICAgfQorICAgIHJldHVybiBjb250cm9sX3JlZzsKK30K Kworc3RhdGljIHZvaWQgcHJpbnRfcmVnKEZJTEUgKmYsIENQVUhleGFnb25TdGF0ZSAqZW52LCBp bnQgcmVnbnVtKQoreworICAgIHRhcmdldF91bG9uZyB2YWx1ZTsKKworICAgIGlmIChyZWdudW0g PT0gSEVYX1JFR19QM18wKSB7CisgICAgICAgIHZhbHVlID0gcmVhZF9wM18wKGVudik7CisgICAg fSBlbHNlIHsKKyAgICAgICAgdmFsdWUgPSByZWdudW0gPCAzMiA/IGhhY2tfc3RhY2tfcHRycyhl bnYsIGVudi0+Z3ByW3JlZ251bV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlbnYt PmdwcltyZWdudW1dOworICAgIH0KKworICAgIHFlbXVfZnByaW50ZihmLCAiICAlcyA9IDB4IiBU QVJHRVRfRk1UX2x4ICJcbiIsCisgICAgICAgICAgICAgICAgIGhleGFnb25fcmVnbmFtZXNbcmVn bnVtXSwgdmFsdWUpOworfQorCitzdGF0aWMgdm9pZCBoZXhhZ29uX2R1bXAoQ1BVSGV4YWdvblN0 YXRlICplbnYsIEZJTEUgKmYpCit7CisgICAgc3RhdGljIHRhcmdldF91bG9uZyBsYXN0X3BjOwor ICAgIGludCBpOworCisgICAgLyoKKyAgICAgKiBXaGVuIGNvbXBhcmluZyB3aXRoIExMREIsIGl0 IGRvZXNuJ3Qgc3RlcCB0aHJvdWdoIHNpbmdsZS1jeWNsZQorICAgICAqIGhhcmR3YXJlIGxvb3Bz IHRoZSBzYW1lIHdheS4gIFNvLCB3ZSBqdXN0IHNraXAgdGhlbSBoZXJlCisgICAgICovCisgICAg aWYgKGVudi0+Z3ByW0hFWF9SRUdfUENdID09IGxhc3RfcGMpIHsKKyAgICAgICAgcmV0dXJuOwor ICAgIH0KKyAgICBsYXN0X3BjID0gZW52LT5ncHJbSEVYX1JFR19QQ107CisgICAgcWVtdV9mcHJp bnRmKGYsICJHZW5lcmFsIFB1cnBvc2UgUmVnaXN0ZXJzID0ge1xuIik7CisgICAgZm9yIChpID0g MDsgaSA8IDMyOyBpKyspIHsKKyAgICAgICAgcHJpbnRfcmVnKGYsIGVudiwgaSk7CisgICAgfQor ICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfU0EwKTsKKyAgICBwcmludF9yZWcoZiwgZW52 LCBIRVhfUkVHX0xDMCk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19TQTEpOworICAg IHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfTEMxKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBI RVhfUkVHX00wKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX00xKTsKKyAgICBwcmlu dF9yZWcoZiwgZW52LCBIRVhfUkVHX1VTUik7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JF R19QM18wKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX0dQKTsKKyAgICBwcmludF9y ZWcoZiwgZW52LCBIRVhfUkVHX1VHUCk7CisgICAgcHJpbnRfcmVnKGYsIGVudiwgSEVYX1JFR19Q Qyk7CisjaWZkZWYgQ09ORklHX1VTRVJfT05MWQorICAgIC8qCisgICAgICogTm90IG1vZGVsbGVk IGluIHVzZXIgbW9kZSwgcHJpbnQganVuayB0byBtaW5pbWl6ZSB0aGUgZGlmZidzCisgICAgICog d2l0aCBMTERCIG91dHB1dAorICAgICAqLworICAgIHFlbXVfZnByaW50ZihmLCAiICBjYXVzZSA9 IDB4MDAwMDAwZGJcbiIpOworICAgIHFlbXVfZnByaW50ZihmLCAiICBiYWR2YSA9IDB4MDAwMDAw MDBcbiIpOworICAgIHFlbXVfZnByaW50ZihmLCAiICBjczAgPSAweDAwMDAwMDAwXG4iKTsKKyAg ICBxZW11X2ZwcmludGYoZiwgIiAgY3MxID0gMHgwMDAwMDAwMFxuIik7CisjZWxzZQorICAgIHBy aW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfQ0FVU0UpOworICAgIHByaW50X3JlZyhmLCBlbnYsIEhF WF9SRUdfQkFEVkEpOworICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfQ1MwKTsKKyAgICBw cmludF9yZWcoZiwgZW52LCBIRVhfUkVHX0NTMSk7CisjZW5kaWYKKyAgICBxZW11X2ZwcmludGYo ZiwgIn1cbiIpOworfQorCitzdGF0aWMgdm9pZCBoZXhhZ29uX2R1bXBfc3RhdGUoQ1BVU3RhdGUg KmNzLCBGSUxFICpmLCBpbnQgZmxhZ3MpCit7CisgICAgSGV4YWdvbkNQVSAqY3B1ID0gSEVYQUdP Tl9DUFUoY3MpOworICAgIENQVUhleGFnb25TdGF0ZSAqZW52ID0gJmNwdS0+ZW52OworCisgICAg aGV4YWdvbl9kdW1wKGVudiwgZik7Cit9CisKK3ZvaWQgaGV4YWdvbl9kZWJ1ZyhDUFVIZXhhZ29u U3RhdGUgKmVudikKK3sKKyAgICBoZXhhZ29uX2R1bXAoZW52LCBzdGRvdXQpOworfQorCitzdGF0 aWMgdm9pZCBoZXhhZ29uX2NwdV9zZXRfcGMoQ1BVU3RhdGUgKmNzLCB2YWRkciB2YWx1ZSkKK3sK KyAgICBIZXhhZ29uQ1BVICpjcHUgPSBIRVhBR09OX0NQVShjcyk7CisgICAgQ1BVSGV4YWdvblN0 YXRlICplbnYgPSAmY3B1LT5lbnY7CisgICAgZW52LT5ncHJbSEVYX1JFR19QQ10gPSB2YWx1ZTsK K30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9jcHVfc3luY2hyb25pemVfZnJvbV90YihDUFVTdGF0 ZSAqY3MsIFRyYW5zbGF0aW9uQmxvY2sgKnRiKQoreworICAgIEhleGFnb25DUFUgKmNwdSA9IEhF WEFHT05fQ1BVKGNzKTsKKyAgICBDUFVIZXhhZ29uU3RhdGUgKmVudiA9ICZjcHUtPmVudjsKKyAg ICBlbnYtPmdwcltIRVhfUkVHX1BDXSA9IHRiLT5wYzsKK30KKworc3RhdGljIGJvb2wgaGV4YWdv bl9jcHVfaGFzX3dvcmsoQ1BVU3RhdGUgKmNzKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2 b2lkIHJlc3RvcmVfc3RhdGVfdG9fb3BjKENQVUhleGFnb25TdGF0ZSAqZW52LCBUcmFuc2xhdGlv bkJsb2NrICp0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nICpkYXRh KQoreworICAgIGVudi0+Z3ByW0hFWF9SRUdfUENdID0gZGF0YVswXTsKK30KKworc3RhdGljIHZv aWQgaGV4YWdvbl9jcHVfcmVzZXQoRGV2aWNlU3RhdGUgKmRldikKK3sKKyAgICBDUFVTdGF0ZSAq Y3MgPSBDUFUoZGV2KTsKKyAgICBIZXhhZ29uQ1BVICpjcHUgPSBIRVhBR09OX0NQVShjcyk7Cisg ICAgSGV4YWdvbkNQVUNsYXNzICptY2MgPSBIRVhBR09OX0NQVV9HRVRfQ0xBU1MoY3B1KTsKKwor ICAgIG1jYy0+cGFyZW50X3Jlc2V0KGRldik7Cit9CisKK3N0YXRpYyB2b2lkIGhleGFnb25fY3B1 X2Rpc2FzX3NldF9pbmZvKENQVVN0YXRlICpzLCBkaXNhc3NlbWJsZV9pbmZvICppbmZvKQorewor ICAgIGluZm8tPnByaW50X2luc24gPSBwcmludF9pbnNuX2hleGFnb247Cit9CisKK3N0YXRpYyB2 b2lkIGhleGFnb25fY3B1X3JlYWxpemUoRGV2aWNlU3RhdGUgKmRldiwgRXJyb3IgKiplcnJwKQor eworICAgIENQVVN0YXRlICpjcyA9IENQVShkZXYpOworICAgIEhleGFnb25DUFVDbGFzcyAqbWNj ID0gSEVYQUdPTl9DUFVfR0VUX0NMQVNTKGRldik7CisgICAgRXJyb3IgKmxvY2FsX2VyciA9IE5V TEw7CisKKyAgICBjcHVfZXhlY19yZWFsaXplZm4oY3MsICZsb2NhbF9lcnIpOworICAgIGlmIChs b2NhbF9lcnIgIT0gTlVMTCkgeworICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxf ZXJyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHFlbXVfaW5pdF92Y3B1KGNzKTsK KyAgICBjcHVfcmVzZXQoY3MpOworCisgICAgbWNjLT5wYXJlbnRfcmVhbGl6ZShkZXYsIGVycnAp OworfQorCitzdGF0aWMgdm9pZCBoZXhhZ29uX2NwdV9pbml0KE9iamVjdCAqb2JqKQoreworICAg IEhleGFnb25DUFUgKmNwdSA9IEhFWEFHT05fQ1BVKG9iaik7CisKKyAgICBjcHVfc2V0X2NwdXN0 YXRlX3BvaW50ZXJzKGNwdSk7Cit9CisKK3N0YXRpYyBib29sIGhleGFnb25fdGxiX2ZpbGwoQ1BV U3RhdGUgKmNzLCB2YWRkciBhZGRyZXNzLCBpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTU1VQWNjZXNzVHlwZSBhY2Nlc3NfdHlwZSwgaW50IG1tdV9pZHgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJvYmUsIHVpbnRwdHJfdCByZXRhZGRyKQorewor I2lmZGVmIENPTkZJR19VU0VSX09OTFkKKyAgICBzd2l0Y2ggKGFjY2Vzc190eXBlKSB7CisgICAg Y2FzZSBNTVVfSU5TVF9GRVRDSDoKKyAgICAgICAgY3MtPmV4Y2VwdGlvbl9pbmRleCA9IEhFWF9F WENQX0ZFVENIX05PX1VQQUdFOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1NVV9EQVRBX0xP QUQ6CisgICAgICAgIGNzLT5leGNlcHRpb25faW5kZXggPSBIRVhfRVhDUF9QUklWX05PX1VSRUFE OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1NVV9EQVRBX1NUT1JFOgorICAgICAgICBjcy0+ ZXhjZXB0aW9uX2luZGV4ID0gSEVYX0VYQ1BfUFJJVl9OT19VV1JJVEU7CisgICAgICAgIGJyZWFr OworICAgIH0KKyAgICBjcHVfbG9vcF9leGl0X3Jlc3RvcmUoY3MsIHJldGFkZHIpOworI2Vsc2UK KyNlcnJvciBTeXN0ZW0gbW9kZSBub3QgaW1wbGVtZW50ZWQgZm9yIEhleGFnb24KKyNlbmRpZgor fQorCitzdGF0aWMgdm9pZCBoZXhhZ29uX2NwdV9jbGFzc19pbml0KE9iamVjdENsYXNzICpjLCB2 b2lkICpkYXRhKQoreworICAgIEhleGFnb25DUFVDbGFzcyAqbWNjID0gSEVYQUdPTl9DUFVfQ0xB U1MoYyk7CisgICAgQ1BVQ2xhc3MgKmNjID0gQ1BVX0NMQVNTKGMpOworICAgIERldmljZUNsYXNz ICpkYyA9IERFVklDRV9DTEFTUyhjKTsKKworICAgIGRldmljZV9jbGFzc19zZXRfcGFyZW50X3Jl YWxpemUoZGMsIGhleGFnb25fY3B1X3JlYWxpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmbWNjLT5wYXJlbnRfcmVhbGl6ZSk7CisKKyAgICBkZXZpY2VfY2xhc3Nfc2V0 X3BhcmVudF9yZXNldChkYywgaGV4YWdvbl9jcHVfcmVzZXQsICZtY2MtPnBhcmVudF9yZXNldCk7 CisKKyAgICBjYy0+Y2xhc3NfYnlfbmFtZSA9IGhleGFnb25fY3B1X2NsYXNzX2J5X25hbWU7Cisg ICAgY2MtPmhhc193b3JrID0gaGV4YWdvbl9jcHVfaGFzX3dvcms7CisgICAgY2MtPmR1bXBfc3Rh dGUgPSBoZXhhZ29uX2R1bXBfc3RhdGU7CisgICAgY2MtPnNldF9wYyA9IGhleGFnb25fY3B1X3Nl dF9wYzsKKyAgICBjYy0+c3luY2hyb25pemVfZnJvbV90YiA9IGhleGFnb25fY3B1X3N5bmNocm9u aXplX2Zyb21fdGI7CisgICAgY2MtPmdkYl9udW1fY29yZV9yZWdzID0gVE9UQUxfUEVSX1RIUkVB RF9SRUdTOworICAgIGNjLT5nZGJfc3RvcF9iZWZvcmVfd2F0Y2hwb2ludCA9IHRydWU7CisgICAg Y2MtPmRpc2FzX3NldF9pbmZvID0gaGV4YWdvbl9jcHVfZGlzYXNfc2V0X2luZm87CisjaWZkZWYg Q09ORklHX1RDRworICAgIGNjLT50Y2dfaW5pdGlhbGl6ZSA9IGhleGFnb25fdHJhbnNsYXRlX2lu aXQ7CisgICAgY2MtPnRsYl9maWxsID0gaGV4YWdvbl90bGJfZmlsbDsKKyNlbmRpZgorfQorCisj ZGVmaW5lIERFRklORV9DUFUodHlwZV9uYW1lLCBpbml0Zm4pICAgICAgXAorICAgIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLm5hbWUgPSB0eXBlX25h bWUsICAgICAgICAgICAgICAgICBcCisgICAgICAgIC5wYXJlbnQgPSBUWVBFX0hFWEFHT05fQ1BV LCAgICAgICAgXAorICAgICAgICAuaW5zdGFuY2VfaW5pdCA9IGluaXRmbiAgICAgICAgICAgIFwK KyAgICB9CisKK3N0YXRpYyBjb25zdCBUeXBlSW5mbyBoZXhhZ29uX2NwdV90eXBlX2luZm9zW10g PSB7CisgICAgeworICAgICAgICAubmFtZSA9IFRZUEVfSEVYQUdPTl9DUFUsCisgICAgICAgIC5w YXJlbnQgPSBUWVBFX0NQVSwKKyAgICAgICAgLmluc3RhbmNlX3NpemUgPSBzaXplb2YoSGV4YWdv bkNQVSksCisgICAgICAgIC5pbnN0YW5jZV9pbml0ID0gaGV4YWdvbl9jcHVfaW5pdCwKKyAgICAg ICAgLmFic3RyYWN0ID0gdHJ1ZSwKKyAgICAgICAgLmNsYXNzX3NpemUgPSBzaXplb2YoSGV4YWdv bkNQVUNsYXNzKSwKKyAgICAgICAgLmNsYXNzX2luaXQgPSBoZXhhZ29uX2NwdV9jbGFzc19pbml0 LAorICAgIH0sCisgICAgREVGSU5FX0NQVShUWVBFX0hFWEFHT05fQ1BVX1Y2NywgICAgICAgICAg ICAgIGhleGFnb25fdjY3X2NwdV9pbml0KSwKK307CisKK0RFRklORV9UWVBFUyhoZXhhZ29uX2Nw dV90eXBlX2luZm9zKQotLSAKMi43LjQKCg==