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,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 4D772C07E99 for ; Mon, 5 Jul 2021 23:48: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 ECD5861975 for ; Mon, 5 Jul 2021 23:48:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ECD5861975 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]:40988 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m0YJp-0007l2-Uy for qemu-devel@archiver.kernel.org; Mon, 05 Jul 2021 19:48:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35556) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m0Y7A-0003vs-L8 for qemu-devel@nongnu.org; Mon, 05 Jul 2021 19:35:00 -0400 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:37367) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1m0Y76-0004gT-UE for qemu-devel@nongnu.org; Mon, 05 Jul 2021 19:35:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1625528096; x=1657064096; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=g0Cy3SI2t3i6dR9wqAFDNAgs7AjCJ2R0XPjCmKegJXI=; b=fNLusQ6tPRKJHY+aGpYQ/sFMXTvhPOouoGFSkYYqq0B9k+z4CUiL6Mx1 TunTRuvUg+GAXPTvb/j03ppwKYeHVEjPU/sLhz6ro9vlBEjPkwkZCCf0d zw4dmqK8/hTCz3Bl+Om9O0+J+VZ8VdedhSiqSO+e1UBVIhKCw5P+e5tjx w=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-01.qualcomm.com with ESMTP; 05 Jul 2021 16:34:39 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg05-sd.qualcomm.com with ESMTP; 05 Jul 2021 16:34:38 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 06CD21B03; Mon, 5 Jul 2021 18:34:38 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH 15/20] Hexagon HVX (target/hexagon) instruction decoding Date: Mon, 5 Jul 2021 18:34:29 -0500 Message-Id: <1625528074-19440-16-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1625528074-19440-1-git-send-email-tsimpson@quicinc.com> References: <1625528074-19440-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.249, 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, peter.maydell@linaro.org, bcain@quicinc.com, richard.henderson@linaro.org, tsimpson@quicinc.com, philmd@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" QWRkIG5ldyBmaWxlIHRvIHRhcmdldC9oZXhhZ29uL21lc29uLmJ1aWxkCgpTaWduZWQtb2ZmLWJ5 OiBUYXlsb3IgU2ltcHNvbiA8dHNpbXBzb25AcXVpY2luYy5jb20+Ci0tLQogdGFyZ2V0L2hleGFn b24vbW12ZWMvZGVjb2RlX2V4dF9tbXZlYy5oIHwgIDI0ICsrKysKIHRhcmdldC9oZXhhZ29uL2Rl Y29kZS5jICAgICAgICAgICAgICAgICB8ICAyNCArKystCiB0YXJnZXQvaGV4YWdvbi9tbXZlYy9k ZWNvZGVfZXh0X21tdmVjLmMgfCAyMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IHRhcmdldC9oZXhhZ29uL21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgMSArCiA0IGZpbGVz IGNoYW5nZWQsIDI4MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHRhcmdldC9oZXhhZ29uL21tdmVjL2RlY29kZV9leHRfbW12ZWMuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRhcmdldC9oZXhhZ29uL21tdmVjL2RlY29kZV9leHRfbW12ZWMuYwoKZGlmZiAt LWdpdCBhL3RhcmdldC9oZXhhZ29uL21tdmVjL2RlY29kZV9leHRfbW12ZWMuaCBiL3RhcmdldC9o ZXhhZ29uL21tdmVjL2RlY29kZV9leHRfbW12ZWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4zNjY0YjY4Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vbW12 ZWMvZGVjb2RlX2V4dF9tbXZlYy5oCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiAgQ29weXJpZ2h0 KGMpIDIwMTktMjAyMSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRz IFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisg Ki8KKworI2lmbmRlZiBIRVhBR09OX0RFQ09ERV9FWFRfTU1WRUNfSAorI2RlZmluZSBIRVhBR09O X0RFQ09ERV9FWFRfTU1WRUNfSAorCit2b2lkIG1tdmVjX2V4dF9kZWNvZGVfY2hlY2tzKFBhY2tl dCAqcGt0LCBib29sIGRpc2FzX29ubHkpOworU2xvdE1hc2sgbW12ZWNfZXh0X2RlY29kZV9maW5k X2ljbGFzc19zbG90cyhpbnQgb3Bjb2RlKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS90YXJnZXQv aGV4YWdvbi9kZWNvZGUuYyBiL3RhcmdldC9oZXhhZ29uL2RlY29kZS5jCmluZGV4IGQ0MjQyNDUu LjY1M2JmZDcgMTAwNjQ0Ci0tLSBhL3RhcmdldC9oZXhhZ29uL2RlY29kZS5jCisrKyBiL3Rhcmdl dC9oZXhhZ29uL2RlY29kZS5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiZGVjb2RlLmgi CiAjaW5jbHVkZSAiaW5zbi5oIgogI2luY2x1ZGUgInByaW50aW5zbi5oIgorI2luY2x1ZGUgIm1t dmVjL2RlY29kZV9leHRfbW12ZWMuaCIKIAogI2RlZmluZSBmWlhUTihOLCBNLCBWQUwpICgoVkFM KSAmICgoMUxMIDw8IChOKSkgLSAxKSkKIApAQCAtNTY2LDggKzU2NywxMiBAQCBzdGF0aWMgdm9p ZCBkZWNvZGVfcmVtb3ZlX2V4dGVuZGVycyhQYWNrZXQgKnBhY2tldCkKIAogc3RhdGljIFNsb3RN YXNrIGdldF92YWxpZF9zbG90cyhjb25zdCBQYWNrZXQgKnBrdCwgdW5zaWduZWQgaW50IHNsb3Qp CiB7Ci0gICAgcmV0dXJuIGZpbmRfaWNsYXNzX3Nsb3RzKHBrdC0+aW5zbltzbG90XS5vcGNvZGUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrdC0+aW5zbltzbG90XS5pY2xhc3MpOwor ICAgIGlmIChHRVRfQVRUUklCKHBrdC0+aW5zbltzbG90XS5vcGNvZGUsIEFfRVhURU5TSU9OKSkg eworICAgICAgICByZXR1cm4gbW12ZWNfZXh0X2RlY29kZV9maW5kX2ljbGFzc19zbG90cyhwa3Qt Pmluc25bc2xvdF0ub3Bjb2RlKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gZmluZF9p Y2xhc3Nfc2xvdHMocGt0LT5pbnNuW3Nsb3RdLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBrdC0+aW5zbltzbG90XS5pY2xhc3MpOworICAgIH0KIH0KIAogI2RlZmlu ZSBERUNPREVfTkVXX1RBQkxFKFRBRywgU0laRSwgV0hBVE5PVCkgICAgIC8qIE5PVEhJTkcgKi8K QEAgLTcyOCw2ICs3MzMsMTEgQEAgZGVjb2RlX2luc25zX3RhYmxld2FsayhJbnNuICppbnNuLCBj b25zdCBEZWN0cmVlVGFibGUgKnRhYmxlLAogICAgICAgICB9CiAgICAgICAgIGRlY29kZV9vcChp bnNuLCBvcGMsIGVuY29kaW5nKTsKICAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlIGlmICh0 YWJsZS0+dGFibGVbaV0udHlwZSA9PSBERUNUUkVFX0VYVFNQQUNFKSB7CisgICAgICAgIC8qCisg ICAgICAgICAqIEZvciBub3csIEhWWCB3aWxsIGJlIHRoZSBvbmx5IGNvcHJvYworICAgICAgICAg Ki8KKyAgICAgICAgcmV0dXJuIGRlY29kZV9pbnNuc190YWJsZXdhbGsoaW5zbiwgZXh0X3RyZWVz W0VYVF9JRFhfbW12ZWNdLCBlbmNvZGluZyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJu IDA7CiAgICAgfQpAQCAtODc0LDYgKzg4NCw3IEBAIGludCBkZWNvZGVfcGFja2V0KGludCBtYXhf d29yZHMsIGNvbnN0IHVpbnQzMl90ICp3b3JkcywgUGFja2V0ICpwa3QsCiAgICAgaW50IHdvcmRz X3JlYWQgPSAwOwogICAgIGJvb2wgZW5kX29mX3BhY2tldCA9IGZhbHNlOwogICAgIGludCBuZXdf aW5zbnMgPSAwOworICAgIGludCBpOwogICAgIHVpbnQzMl90IGVuY29kaW5nMzI7CiAKICAgICAv KiBJbml0aWFsaXplICovCkBAIC05MDEsNiArOTEyLDExIEBAIGludCBkZWNvZGVfcGFja2V0KGlu dCBtYXhfd29yZHMsIGNvbnN0IHVpbnQzMl90ICp3b3JkcywgUGFja2V0ICpwa3QsCiAgICAgICAg IHJldHVybiAwOwogICAgIH0KICAgICBwa3QtPmVuY29kX3BrdF9zaXplX2luX2J5dGVzID0gd29y ZHNfcmVhZCAqIDQ7CisgICAgcGt0LT5wa3RfaGFzX2h2eCA9IGZhbHNlOworICAgIGZvciAoaSA9 IDA7IGkgPCBudW1faW5zbnM7IGkrKykgeworICAgICAgICBwa3QtPnBrdF9oYXNfaHZ4IHw9Cisg ICAgICAgICAgICBHRVRfQVRUUklCKHBrdC0+aW5zbltpXS5vcGNvZGUsIEFfQ1ZJKTsKKyAgICB9 CiAKICAgICAvKgogICAgICAqIENoZWNrIGZvciA6ZW5kbG9vcCBpbiB0aGUgcGFyc2UgYml0cwpA QCAtOTMxLDYgKzk0NywxMCBAQCBpbnQgZGVjb2RlX3BhY2tldChpbnQgbWF4X3dvcmRzLCBjb25z dCB1aW50MzJfdCAqd29yZHMsIFBhY2tldCAqcGt0LAogICAgIGRlY29kZV9zZXRfc2xvdF9udW1i ZXIocGt0KTsKICAgICBkZWNvZGVfZmlsbF9uZXd2YWx1ZV9yZWdubyhwa3QpOwogCisgICAgaWYg KHBrdC0+cGt0X2hhc19odngpIHsKKyAgICAgICAgbW12ZWNfZXh0X2RlY29kZV9jaGVja3MocGt0 LCBkaXNhc19vbmx5KTsKKyAgICB9CisKICAgICBpZiAoIWRpc2FzX29ubHkpIHsKICAgICAgICAg ZGVjb2RlX3NodWZmbGVfZm9yX2V4ZWN1dGlvbihwa3QpOwogICAgICAgICBkZWNvZGVfc3BsaXRf Y21wanVtcChwa3QpOwpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vbW12ZWMvZGVjb2RlX2V4 dF9tbXZlYy5jIGIvdGFyZ2V0L2hleGFnb24vbW12ZWMvZGVjb2RlX2V4dF9tbXZlYy5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1YjFiZjEKLS0tIC9kZXYvbnVsbAorKysg Yi90YXJnZXQvaGV4YWdvbi9tbXZlYy9kZWNvZGVfZXh0X21tdmVjLmMKQEAgLTAsMCArMSwyMzUg QEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMSBRdWFsY29tbSBJbm5vdmF0aW9uIENl bnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICog IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKKyNpbmNs dWRlICJkZWNvZGUuaCIKKyNpbmNsdWRlICJvcGNvZGVzLmgiCisjaW5jbHVkZSAiaW5zbi5oIgor I2luY2x1ZGUgImljbGFzcy5oIgorI2luY2x1ZGUgIm1tdmVjL21tdmVjLmgiCisjaW5jbHVkZSAi bW12ZWMvZGVjb2RlX2V4dF9tbXZlYy5oIgorCitzdGF0aWMgdm9pZAorY2hlY2tfbmV3X3ZhbHVl KFBhY2tldCAqcGt0KQoreworICAgIC8qIC5uZXcgdmFsdWUgZm9yIGEgTU1WZWN0b3Igc3RvcmUg Ki8KKyAgICBpbnQgaSwgajsKKyAgICBjb25zdCBjaGFyICpyZWdpbmZvOworICAgIGNvbnN0IGNo YXIgKmRlc3RsZXR0ZXJzOworICAgIGNvbnN0IGNoYXIgKmRzdHN0ciA9IE5VTEw7CisgICAgdWlu dDE2X3QgZGVmX29wY29kZTsKKyAgICBjaGFyIGxldHRlcjsKKyAgICBpbnQgZGVmX3JlZ251bTsK KworICAgIGZvciAoaSA9IDE7IGkgPCBwa3QtPm51bV9pbnNuczsgaSsrKSB7CisgICAgICAgIHVp bnQxNl90IHVzZV9vcGNvZGUgPSBwa3QtPmluc25baV0ub3Bjb2RlOworICAgICAgICBpZiAoR0VU X0FUVFJJQih1c2Vfb3Bjb2RlLCBBX0RPVE5FV1ZBTFVFKSAmJgorICAgICAgICAgICAgR0VUX0FU VFJJQih1c2Vfb3Bjb2RlLCBBX0NWSSkgJiYKKyAgICAgICAgICAgIEdFVF9BVFRSSUIodXNlX29w Y29kZSwgQV9TVE9SRSkpIHsKKyAgICAgICAgICAgIGludCB1c2VfcmVnaWR4ID0gc3RyY2hyKG9w Y29kZV9yZWdpbmZvW3VzZV9vcGNvZGVdLCAncycpIC0KKyAgICAgICAgICAgICAgICBvcGNvZGVf cmVnaW5mb1t1c2Vfb3Bjb2RlXTsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBXaGF0 J3MgZW5jb2RlZCBhdCB0aGUgTi1maWVsZCBpcyB0aGUgb2Zmc2V0IHRvIHdobydzIHByb2R1Y2lu ZworICAgICAgICAgICAgICogdGhlIHZhbHVlLgorICAgICAgICAgICAgICogU2hpZnQgb2ZmIHRo ZSBMU0Igd2hpY2ggaW5kaWNhdGVzIG9kZC9ldmVuIHJlZ2lzdGVyLgorICAgICAgICAgICAgICov CisgICAgICAgICAgICBpbnQgZGVmX29mZiA9ICgocGt0LT5pbnNuW2ldLnJlZ25vW3VzZV9yZWdp ZHhdKSA+PiAxKTsKKyAgICAgICAgICAgIGludCBkZWZfb3JlZyA9IHBrdC0+aW5zbltpXS5yZWdu b1t1c2VfcmVnaWR4XSAmIDE7CisgICAgICAgICAgICBpbnQgZGVmX2lkeCA9IC0xOworICAgICAg ICAgICAgZm9yIChqID0gaSAtIDE7IChqID49IDApICYmIChkZWZfb2ZmID49IDApOyBqLS0pIHsK KyAgICAgICAgICAgICAgICBpZiAoIUdFVF9BVFRSSUIocGt0LT5pbnNuW2pdLm9wY29kZSwgQV9D VkkpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICBkZWZfb2ZmLS07CisgICAgICAgICAgICAgICAgaWYgKGRlZl9vZmYg PT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkZWZfaWR4ID0gajsKKyAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg ICAgLyoKKyAgICAgICAgICAgICAqIENoZWNrIGZvciBhIGJhZGx5IGVuY29kZWQgTi1maWVsZCB3 aGljaCBwb2ludHMgdG8gYW4gaW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgICAqIG91dC1vZi1yYW5n ZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBnX2Fzc2VydCghKChkZWZfb2ZmICE9IDAp IHx8IChkZWZfaWR4IDwgMCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgKGRlZl9pZHggPiAo cGt0LT5udW1faW5zbnMgLSAxKSkpKTsKKworICAgICAgICAgICAgLyogZGVmX2lkeCBpcyB0aGUg aW5kZXggb2YgdGhlIHByb2R1Y2VyICovCisgICAgICAgICAgICBkZWZfb3Bjb2RlID0gcGt0LT5p bnNuW2RlZl9pZHhdLm9wY29kZTsKKyAgICAgICAgICAgIHJlZ2luZm8gPSBvcGNvZGVfcmVnaW5m b1tkZWZfb3Bjb2RlXTsKKyAgICAgICAgICAgIGRlc3RsZXR0ZXJzID0gImRleHkiOworICAgICAg ICAgICAgZm9yIChqID0gMDsgKGxldHRlciA9IGRlc3RsZXR0ZXJzW2pdKSAhPSAwOyBqKyspIHsK KyAgICAgICAgICAgICAgICBkc3RzdHIgPSBzdHJjaHIocmVnaW5mbywgbGV0dGVyKTsKKyAgICAg ICAgICAgICAgICBpZiAoZHN0c3RyICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChk c3RzdHIgPT0gTlVMTCkgICYmIEdFVF9BVFRSSUIoZGVmX29wY29kZSwgQV9DVklfR0FUSEVSKSkg eworICAgICAgICAgICAgICAgIGRlZl9yZWdudW0gPSAwOworICAgICAgICAgICAgICAgIHBrdC0+ aW5zbltpXS5yZWdub1t1c2VfcmVnaWR4XSA9IGRlZl9vcmVnOworICAgICAgICAgICAgICAgIHBr dC0+aW5zbltpXS5uZXdfdmFsdWVfcHJvZHVjZXJfc2xvdCA9IHBrdC0+aW5zbltkZWZfaWR4XS5z bG90OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoZHN0c3RyID09 IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogc3RpbGwgbm90IHRoZXJlLCB3ZSBoYXZl IGEgYmFkIHBhY2tldCAqLworICAgICAgICAgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hl ZCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZfcmVnbnVtID0gcGt0 LT5pbnNuW2RlZl9pZHhdLnJlZ25vW2RzdHN0ciAtIHJlZ2luZm9dOworICAgICAgICAgICAgICAg IC8qIE5vdyBwYXRjaCB1cCB0aGUgY29uc3VtZXIgd2l0aCB0aGUgcmVnaXN0ZXIgbnVtYmVyICov CisgICAgICAgICAgICAgICAgcGt0LT5pbnNuW2ldLnJlZ25vW3VzZV9yZWdpZHhdID0gZGVmX3Jl Z251bSBeIGRlZl9vcmVnOworICAgICAgICAgICAgICAgIC8qIHNwZWNpYWwgY2FzZSBmb3IgKFZ4 LFZ5KSAqLworICAgICAgICAgICAgICAgIGRzdHN0ciA9IHN0cmNocihyZWdpbmZvLCAneScpOwor ICAgICAgICAgICAgICAgIGlmIChkZWZfb3JlZyAmJiBzdHJjaHIocmVnaW5mbywgJ3gnKSAmJiBk c3RzdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVmX3JlZ251bSA9IHBrdC0+aW5zbltkZWZf aWR4XS5yZWdub1tkc3RzdHIgLSByZWdpbmZvXTsKKyAgICAgICAgICAgICAgICAgICAgcGt0LT5p bnNuW2ldLnJlZ25vW3VzZV9yZWdpZHhdID0gZGVmX3JlZ251bTsKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBXZSBuZWVkIHRvIHJlbWVt YmVyIHdobyBwcm9kdWNlcyB0aGlzIHZhbHVlIHRvIGxhdGVyCisgICAgICAgICAgICAgICAgICog Y2hlY2sgaWYgaXQgd2FzIGR5bmFtaWNhbGx5IGNhbmNlbGxlZAorICAgICAgICAgICAgICAgICAq LworICAgICAgICAgICAgICAgIHBrdC0+aW5zbltpXS5uZXdfdmFsdWVfcHJvZHVjZXJfc2xvdCA9 IHBrdC0+aW5zbltkZWZfaWR4XS5zbG90OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg fQorfQorCisvKgorICogV2UgZG9uJ3Qgd2FudCB0byByZW9yZGVyIHNsb3QxL3Nsb3QwIHdpdGgg cmVzcGVjdCB0byBlYWNoIG90aGVyLgorICogU28gaW4gb3VyIHNodWZmbGluZywgd2UgZG9uJ3Qg d2FudCB0byBtb3ZlIHRoZSAuY3VyIC8gLnRtcCB2bWVtIGVhcmxpZXIKKyAqIEluc3RlYWQsIHdl IHNob3VsZCBtb3ZlIHRoZSBwcm9kdWNpbmcgaW5zdHJ1Y3Rpb24gbGF0ZXIKKyAqIEJ1dCB0aGUg cHJvZHVjaW5nIGluc3RydWN0aW9uIG1pZ2h0IGZlZWQgYSAubmV3IHN0b3JlIQorICogU28gd2Ug bWF5IG5lZWQgdG8gbW92ZSB0aGF0IGV2ZW4gbGF0ZXIuCisgKi8KKworc3RhdGljIHZvaWQKK2Rl Y29kZV9tbXZlY19tb3ZlX2N2aV90b19lbmQoUGFja2V0ICpwa3QsIGludCBtYXgpCit7CisgICAg aW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7CisgICAgICAgIGlmIChHRVRf QVRUUklCKHBrdC0+aW5zbltpXS5vcGNvZGUsIEFfQ1ZJKSkgeworICAgICAgICAgICAgaW50IGxh c3RfaW5zdCA9IHBrdC0+bnVtX2luc25zIC0gMTsKKyAgICAgICAgICAgIHVpbnQxNl90IGxhc3Rf b3Bjb2RlID0gcGt0LT5pbnNuW2xhc3RfaW5zdF0ub3Bjb2RlOworCisgICAgICAgICAgICAvKgor ICAgICAgICAgICAgICogSWYgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gaXMgYW4gZW5kbG9vcCwgbW92 ZSB0byB0aGUgb25lIGJlZm9yZSBpdAorICAgICAgICAgICAgICogS2VlcCBlbmRsb29wIGFzIHRo ZSBsYXN0IHRoaW5nIGFsd2F5cworICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoKGxh c3Rfb3Bjb2RlID09IEoyX2VuZGxvb3AwKSB8fAorICAgICAgICAgICAgICAgIChsYXN0X29wY29k ZSA9PSBKMl9lbmRsb29wMSkgfHwKKyAgICAgICAgICAgICAgICAobGFzdF9vcGNvZGUgPT0gSjJf ZW5kbG9vcDAxKSkgeworICAgICAgICAgICAgICAgIGxhc3RfaW5zdC0tOworICAgICAgICAgICAg fQorCisgICAgICAgICAgICBkZWNvZGVfc2VuZF9pbnNuX3RvKHBrdCwgaSwgbGFzdF9pbnN0KTsK KyAgICAgICAgICAgIG1heC0tOworICAgICAgICAgICAgaS0tOyAgICAvKiBSZXRyeSB0aGlzIGlu ZGV4IG5vdyB0aGF0IHBhY2tldCBoYXMgcm90YXRlZCAqLworICAgICAgICB9CisgICAgfQorfQor CitzdGF0aWMgdm9pZAorZGVjb2RlX3NodWZmbGVfZm9yX2V4ZWN1dGlvbl92b3BzKFBhY2tldCAq cGt0KQoreworICAgIC8qCisgICAgICogU29ydCBmb3IgLm5ldworICAgICAqLworICAgIGludCBp OworICAgIGZvciAoaSA9IDA7IGkgPCBwa3QtPm51bV9pbnNuczsgaSsrKSB7CisgICAgICAgIHVp bnQxNl90IG9wY29kZSA9IHBrdC0+aW5zbltpXS5vcGNvZGU7CisgICAgICAgIGlmIChHRVRfQVRU UklCKG9wY29kZSwgQV9MT0FEKSAmJgorICAgICAgICAgICAgKEdFVF9BVFRSSUIob3Bjb2RlLCBB X0NWSV9ORVcpIHx8CisgICAgICAgICAgICAgR0VUX0FUVFJJQihvcGNvZGUsIEFfQ1ZJX1RNUCkp KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRmluZCBwcmlvciBjb25zdW1pbmcg dmVjdG9yIGluc3RydWN0aW9ucworICAgICAgICAgICAgICogTW92ZSB0byBlbmQgb2YgcGFja2V0 CisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGRlY29kZV9tbXZlY19tb3ZlX2N2aV90b19l bmQocGt0LCBpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg LyogTW92ZSBIVlggbmV3IHZhbHVlIHN0b3JlcyB0byB0aGUgZW5kIG9mIHRoZSBwYWNrZXQgKi8K KyAgICBmb3IgKGkgPSAwOyBpIDwgcGt0LT5udW1faW5zbnMgLSAxOyBpKyspIHsKKyAgICAgICAg dWludDE2X3Qgb3Bjb2RlID0gcGt0LT5pbnNuW2ldLm9wY29kZTsKKyAgICAgICAgaWYgKEdFVF9B VFRSSUIob3Bjb2RlLCBBX1NUT1JFKSAmJgorICAgICAgICAgICAgR0VUX0FUVFJJQihvcGNvZGUs IEFfQ1ZJX05FVykgJiYKKyAgICAgICAgICAgICFHRVRfQVRUUklCKG9wY29kZSwgQV9DVklfU0NB VFRFUl9SRUxFQVNFKSkgeworICAgICAgICAgICAgaW50IGxhc3RfaW5zdCA9IHBrdC0+bnVtX2lu c25zIC0gMTsKKyAgICAgICAgICAgIHVpbnQxNl90IGxhc3Rfb3Bjb2RlID0gcGt0LT5pbnNuW2xh c3RfaW5zdF0ub3Bjb2RlOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogSWYgdGhl IGxhc3QgaW5zdHJ1Y3Rpb24gaXMgYW4gZW5kbG9vcCwgbW92ZSB0byB0aGUgb25lIGJlZm9yZSBp dAorICAgICAgICAgICAgICogS2VlcCBlbmRsb29wIGFzIHRoZSBsYXN0IHRoaW5nIGFsd2F5cwor ICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoKGxhc3Rfb3Bjb2RlID09IEoyX2VuZGxv b3AwKSB8fAorICAgICAgICAgICAgICAgIChsYXN0X29wY29kZSA9PSBKMl9lbmRsb29wMSkgfHwK KyAgICAgICAgICAgICAgICAobGFzdF9vcGNvZGUgPT0gSjJfZW5kbG9vcDAxKSkgeworICAgICAg ICAgICAgICAgIGxhc3RfaW5zdC0tOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWNv ZGVfc2VuZF9pbnNuX3RvKHBrdCwgaSwgbGFzdF9pbnN0KTsKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorY2hlY2tfZm9yX3ZoaXN0KFBhY2tl dCAqcGt0KQoreworICAgIHBrdC0+cGt0X2hhc192aGlzdCA9IGZhbHNlOworICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgcGt0LT5udW1faW5zbnM7IGkrKykgeworICAgICAgICBpbnQgb3Bjb2RlID0g cGt0LT5pbnNuW2ldLm9wY29kZTsKKyAgICAgICAgaWYgKEdFVF9BVFRSSUIob3Bjb2RlLCBBX0NW SSkgJiYgR0VUX0FUVFJJQihvcGNvZGUsIEFfQ1ZJXzRTTE9UKSkgeworICAgICAgICAgICAgICAg IHBrdC0+cGt0X2hhc192aGlzdCA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg ICAgICB9CisgICAgfQorfQorCisvKgorICogUHVibGljIEZ1bmN0aW9ucworICovCisKK1Nsb3RN YXNrIG1tdmVjX2V4dF9kZWNvZGVfZmluZF9pY2xhc3Nfc2xvdHMoaW50IG9wY29kZSkKK3sKKyAg ICBpZiAoR0VUX0FUVFJJQihvcGNvZGUsIEFfQ1ZJX1ZNKSkgeworICAgICAgICAvKiBIVlggbWVt b3J5IGluc3RydWN0aW9uICovCisgICAgICAgIGlmIChHRVRfQVRUUklCKG9wY29kZSwgQV9SRVNU UklDVF9TTE9UME9OTFkpKSB7CisgICAgICAgICAgICByZXR1cm4gU0xPVFNfMDsKKyAgICAgICAg fSBlbHNlIGlmIChHRVRfQVRUUklCKG9wY29kZSwgQV9SRVNUUklDVF9TTE9UMU9OTFkpKSB7Cisg ICAgICAgICAgICByZXR1cm4gU0xPVFNfMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gU0xP VFNfMDE7CisgICAgfSBlbHNlIGlmIChHRVRfQVRUUklCKG9wY29kZSwgQV9SRVNUUklDVF9TTE9U Mk9OTFkpKSB7CisgICAgICAgIHJldHVybiBTTE9UU18yOworICAgIH0gZWxzZSBpZiAoR0VUX0FU VFJJQihvcGNvZGUsIEFfQ1ZJX1ZYKSkgeworICAgICAgICAvKiBIVlggbXVsdGlwbHkgaW5zdHJ1 Y3Rpb24gKi8KKyAgICAgICAgcmV0dXJuIFNMT1RTXzIzOworICAgIH0gZWxzZSBpZiAoR0VUX0FU VFJJQihvcGNvZGUsIEFfQ1ZJX1ZTX1ZYKSkgeworICAgICAgICAvKiBIVlggcGVybXV0ZS9zaGlm dCBpbnN0cnVjdGlvbiAqLworICAgICAgICByZXR1cm4gU0xPVFNfMjM7CisgICAgfSBlbHNlIHsK KyAgICAgICAgcmV0dXJuIFNMT1RTXzAxMjM7CisgICAgfQorfQorCit2b2lkIG1tdmVjX2V4dF9k ZWNvZGVfY2hlY2tzKFBhY2tldCAqcGt0LCBib29sIGRpc2FzX29ubHkpCit7CisgICAgY2hlY2tf bmV3X3ZhbHVlKHBrdCk7CisgICAgaWYgKCFkaXNhc19vbmx5KSB7CisgICAgICAgIGRlY29kZV9z aHVmZmxlX2Zvcl9leGVjdXRpb25fdm9wcyhwa3QpOworICAgIH0KKyAgICBjaGVja19mb3Jfdmhp c3QocGt0KTsKK30KZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL21lc29uLmJ1aWxkIGIvdGFy Z2V0L2hleGFnb24vbWVzb24uYnVpbGQKaW5kZXggZWQyOTJiNC4uZTU5OGM0MyAxMDA2NDQKLS0t IGEvdGFyZ2V0L2hleGFnb24vbWVzb24uYnVpbGQKKysrIGIvdGFyZ2V0L2hleGFnb24vbWVzb24u YnVpbGQKQEAgLTE3Myw2ICsxNzMsNyBAQCBoZXhhZ29uX3NzLmFkZChmaWxlcygKICAgICAncHJp bnRpbnNuLmMnLAogICAgICdhcmNoLmMnLAogICAgICdmbWFfZW11LmMnLAorICAgICdtbXZlYy9k ZWNvZGVfZXh0X21tdmVjLmMnLAogICAgICdtbXZlYy9zeXN0ZW1fZXh0X21tdmVjLmMnLAogKSkK IAotLSAKMi43LjQKCg==