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 521ACC433E0 for ; Mon, 8 Feb 2021 06:03:24 +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 ABC8664DC3 for ; Mon, 8 Feb 2021 06:03:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ABC8664DC3 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]:56812 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l8zdq-00030V-Ni for qemu-devel@archiver.kernel.org; Mon, 08 Feb 2021 01:03:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55952) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l8zO5-0007mZ-RE for qemu-devel@nongnu.org; Mon, 08 Feb 2021 00:47:05 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:14448) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1l8zNy-0006Sz-La for qemu-devel@nongnu.org; Mon, 08 Feb 2021 00:47:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1612763218; x=1644299218; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XfleJVnDJhsCEdxlaZJTRE8kpZjHyfFUTMy1xLBAQNE=; b=cD8w7S67LY1igSyMH7Qnc0Dhp/CA+VY5gcMhvlYtQ7r+ULeWk+PMLklF VFcj5TTxZiJtJyL21Y6RNF1aB+VVAhkJQoxkDsM2546bIGzo1LzfDYYuH mrkmB+9DycxoKYo7mjtAIlL1KVBbokUklYyiAuI5oIuO6eeOPoWEmeech 8=; Received: from unknown (HELO ironmsg-SD-alpha.qualcomm.com) ([10.53.140.30]) by alexa-out-sd-01.qualcomm.com with ESMTP; 07 Feb 2021 21:46:31 -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; 07 Feb 2021 21:46:30 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id AEB66E3B; Sun, 7 Feb 2021 23:46:30 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v8 26/35] Hexagon (target/hexagon) TCG generation Date: Sun, 7 Feb 2021 23:46:16 -0600 Message-Id: <1612763186-18161-27-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1612763186-18161-1-git-send-email-tsimpson@quicinc.com> References: <1612763186-18161-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" SW5jbHVkZSB0aGUgZ2VuZXJhdGVkIGZpbGVzIGFuZCBzZXQgdXAgdGhlIGRhdGEgc3RydWN0dXJl cwoKU2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgot LS0KIHRhcmdldC9oZXhhZ29uL2dlbnB0ci5oIHwgIDI1ICsrKysKIHRhcmdldC9oZXhhZ29uL2dl bnB0ci5jIHwgMzMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogMiBmaWxlcyBjaGFuZ2VkLCAzNTYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHRhcmdldC9oZXhhZ29uL2dlbnB0ci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0L2hl eGFnb24vZ2VucHRyLmMKCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9nZW5wdHIuaCBiL3Rh cmdldC9oZXhhZ29uL2dlbnB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmMxNTgwMDUKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9nZW5wdHIuaApAQCAt MCwwICsxLDI1IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjEgUXVhbGNvbW0gSW5u b3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgSEVYQUdPTl9HRU5Q VFJfSAorI2RlZmluZSBIRVhBR09OX0dFTlBUUl9ICisKKyNpbmNsdWRlICJpbnNuLmgiCisKK2V4 dGVybiBjb25zdCBTZW1hbnRpY0luc24gb3Bjb2RlX2dlbnB0cltdOworCisjZW5kaWYKZGlmZiAt LWdpdCBhL3RhcmdldC9oZXhhZ29uL2dlbnB0ci5jIGIvdGFyZ2V0L2hleGFnb24vZ2VucHRyLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ4MWY0YwotLS0gL2Rldi9udWxs CisrKyBiL3RhcmdldC9oZXhhZ29uL2dlbnB0ci5jCkBAIC0wLDAgKzEsMzMxIEBACisvKgorICog IENvcHlyaWdodChjKSAyMDE5LTIwMjEgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4g QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorICovCisKKyNkZWZpbmUgUUVNVV9HRU5FUkFURQorI2luY2x1ZGUgInFlbXUvb3Nk ZXAuaCIKKyNpbmNsdWRlICJxZW11L2xvZy5oIgorI2luY2x1ZGUgImNwdS5oIgorI2luY2x1ZGUg ImludGVybmFsLmgiCisjaW5jbHVkZSAidGNnL3RjZy1vcC5oIgorI2luY2x1ZGUgImluc24uaCIK KyNpbmNsdWRlICJvcGNvZGVzLmgiCisjaW5jbHVkZSAidHJhbnNsYXRlLmgiCisjaW5jbHVkZSAi bWFjcm9zLmgiCisjaW5jbHVkZSAiZ2VuX3RjZy5oIgorCitzdGF0aWMgaW5saW5lIFRDR3YgZ2Vu X3JlYWRfcHJlZyhUQ0d2IHByZWQsIHVpbnQ4X3QgbnVtKQoreworICAgIHRjZ19nZW5fbW92X3Rs KHByZWQsIGhleF9wcmVkW251bV0pOworICAgIHJldHVybiBwcmVkOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQgZ2VuX2xvZ19wcmVkaWNhdGVkX3JlZ193cml0ZShpbnQgcm51bSwgVENHdiB2YWws IGludCBzbG90KQoreworICAgIFRDR3Ygb25lID0gdGNnX2NvbnN0X3RsKDEpOworICAgIFRDR3Yg emVybyA9IHRjZ19jb25zdF90bCgwKTsKKyAgICBUQ0d2IHNsb3RfbWFzayA9IHRjZ190ZW1wX25l dygpOworCisgICAgdGNnX2dlbl9hbmRpX3RsKHNsb3RfbWFzaywgaGV4X3Nsb3RfY2FuY2VsbGVk LCAxIDw8IHNsb3QpOworICAgIHRjZ19nZW5fbW92Y29uZF90bChUQ0dfQ09ORF9FUSwgaGV4X25l d192YWx1ZVtybnVtXSwgc2xvdF9tYXNrLCB6ZXJvLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmFsLCBoZXhfbmV3X3ZhbHVlW3JudW1dKTsKKyNpZiBIRVhfREVCVUcKKyAgICAvKiBEbyB0 aGlzIHNvIEhFTFBFUihkZWJ1Z19jb21taXRfZW5kKSB3aWxsIGtub3cgKi8KKyAgICB0Y2dfZ2Vu X21vdmNvbmRfdGwoVENHX0NPTkRfRVEsIGhleF9yZWdfd3JpdHRlbltybnVtXSwgc2xvdF9tYXNr LCB6ZXJvLAorICAgICAgICAgICAgICAgICAgICAgICBvbmUsIGhleF9yZWdfd3JpdHRlbltybnVt XSk7CisjZW5kaWYKKworICAgIHRjZ190ZW1wX2ZyZWUob25lKTsKKyAgICB0Y2dfdGVtcF9mcmVl KHplcm8pOworICAgIHRjZ190ZW1wX2ZyZWUoc2xvdF9tYXNrKTsKK30KKworc3RhdGljIGlubGlu ZSB2b2lkIGdlbl9sb2dfcmVnX3dyaXRlKGludCBybnVtLCBUQ0d2IHZhbCkKK3sKKyAgICB0Y2df Z2VuX21vdl90bChoZXhfbmV3X3ZhbHVlW3JudW1dLCB2YWwpOworI2lmIEhFWF9ERUJVRworICAg IC8qIERvIHRoaXMgc28gSEVMUEVSKGRlYnVnX2NvbW1pdF9lbmQpIHdpbGwga25vdyAqLworICAg IHRjZ19nZW5fbW92aV90bChoZXhfcmVnX3dyaXR0ZW5bcm51bV0sIDEpOworI2VuZGlmCit9CisK K3N0YXRpYyB2b2lkIGdlbl9sb2dfcHJlZGljYXRlZF9yZWdfd3JpdGVfcGFpcihpbnQgcm51bSwg VENHdl9pNjQgdmFsLCBpbnQgc2xvdCkKK3sKKyAgICBUQ0d2IHZhbDMyID0gdGNnX3RlbXBfbmV3 KCk7CisgICAgVENHdiBvbmUgPSB0Y2dfY29uc3RfdGwoMSk7CisgICAgVENHdiB6ZXJvID0gdGNn X2NvbnN0X3RsKDApOworICAgIFRDR3Ygc2xvdF9tYXNrID0gdGNnX3RlbXBfbmV3KCk7CisKKyAg ICB0Y2dfZ2VuX2FuZGlfdGwoc2xvdF9tYXNrLCBoZXhfc2xvdF9jYW5jZWxsZWQsIDEgPDwgc2xv dCk7CisgICAgLyogTG93IHdvcmQgKi8KKyAgICB0Y2dfZ2VuX2V4dHJsX2k2NF9pMzIodmFsMzIs IHZhbCk7CisgICAgdGNnX2dlbl9tb3Zjb25kX3RsKFRDR19DT05EX0VRLCBoZXhfbmV3X3ZhbHVl W3JudW1dLCBzbG90X21hc2ssIHplcm8sCisgICAgICAgICAgICAgICAgICAgICAgIHZhbDMyLCBo ZXhfbmV3X3ZhbHVlW3JudW1dKTsKKyNpZiBIRVhfREVCVUcKKyAgICAvKiBEbyB0aGlzIHNvIEhF TFBFUihkZWJ1Z19jb21taXRfZW5kKSB3aWxsIGtub3cgKi8KKyAgICB0Y2dfZ2VuX21vdmNvbmRf dGwoVENHX0NPTkRfRVEsIGhleF9yZWdfd3JpdHRlbltybnVtXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgc2xvdF9tYXNrLCB6ZXJvLAorICAgICAgICAgICAgICAgICAgICAgICBvbmUsIGhleF9y ZWdfd3JpdHRlbltybnVtXSk7CisjZW5kaWYKKworICAgIC8qIEhpZ2ggd29yZCAqLworICAgIHRj Z19nZW5fZXh0cmhfaTY0X2kzMih2YWwzMiwgdmFsKTsKKyAgICB0Y2dfZ2VuX21vdmNvbmRfdGwo VENHX0NPTkRfRVEsIGhleF9uZXdfdmFsdWVbcm51bSArIDFdLAorICAgICAgICAgICAgICAgICAg ICAgICBzbG90X21hc2ssIHplcm8sCisgICAgICAgICAgICAgICAgICAgICAgIHZhbDMyLCBoZXhf bmV3X3ZhbHVlW3JudW0gKyAxXSk7CisjaWYgSEVYX0RFQlVHCisgICAgLyogRG8gdGhpcyBzbyBI RUxQRVIoZGVidWdfY29tbWl0X2VuZCkgd2lsbCBrbm93ICovCisgICAgdGNnX2dlbl9tb3Zjb25k X3RsKFRDR19DT05EX0VRLCBoZXhfcmVnX3dyaXR0ZW5bcm51bSArIDFdLAorICAgICAgICAgICAg ICAgICAgICAgICBzbG90X21hc2ssIHplcm8sCisgICAgICAgICAgICAgICAgICAgICAgIG9uZSwg aGV4X3JlZ193cml0dGVuW3JudW0gKyAxXSk7CisjZW5kaWYKKworICAgIHRjZ190ZW1wX2ZyZWUo dmFsMzIpOworICAgIHRjZ190ZW1wX2ZyZWUob25lKTsKKyAgICB0Y2dfdGVtcF9mcmVlKHplcm8p OworICAgIHRjZ190ZW1wX2ZyZWUoc2xvdF9tYXNrKTsKK30KKworc3RhdGljIHZvaWQgZ2VuX2xv Z19yZWdfd3JpdGVfcGFpcihpbnQgcm51bSwgVENHdl9pNjQgdmFsKQoreworICAgIC8qIExvdyB3 b3JkICovCisgICAgdGNnX2dlbl9leHRybF9pNjRfaTMyKGhleF9uZXdfdmFsdWVbcm51bV0sIHZh bCk7CisjaWYgSEVYX0RFQlVHCisgICAgLyogRG8gdGhpcyBzbyBIRUxQRVIoZGVidWdfY29tbWl0 X2VuZCkgd2lsbCBrbm93ICovCisgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF9yZWdfd3JpdHRlblty bnVtXSwgMSk7CisjZW5kaWYKKworICAgIC8qIEhpZ2ggd29yZCAqLworICAgIHRjZ19nZW5fZXh0 cmhfaTY0X2kzMihoZXhfbmV3X3ZhbHVlW3JudW0gKyAxXSwgdmFsKTsKKyNpZiBIRVhfREVCVUcK KyAgICAvKiBEbyB0aGlzIHNvIEhFTFBFUihkZWJ1Z19jb21taXRfZW5kKSB3aWxsIGtub3cgKi8K KyAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4X3JlZ193cml0dGVuW3JudW0gKyAxXSwgMSk7CisjZW5k aWYKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9sb2dfcHJlZF93cml0ZShpbnQgcG51bSwg VENHdiB2YWwpCit7CisgICAgVENHdiB6ZXJvID0gdGNnX2NvbnN0X3RsKDApOworICAgIFRDR3Yg YmFzZV92YWwgPSB0Y2dfdGVtcF9uZXcoKTsKKyAgICBUQ0d2IGFuZF92YWwgPSB0Y2dfdGVtcF9u ZXcoKTsKKyAgICBUQ0d2IHByZWRfd3JpdHRlbiA9IHRjZ190ZW1wX25ldygpOworCisgICAgLyog TXVsdGlwbGUgd3JpdGVzIHRvIHRoZSBzYW1lIHByZWcgYXJlIGFuZCdlZCB0b2dldGhlciAqLwor ICAgIHRjZ19nZW5fYW5kaV90bChiYXNlX3ZhbCwgdmFsLCAweGZmKTsKKyAgICB0Y2dfZ2VuX2Fu ZF90bChhbmRfdmFsLCBiYXNlX3ZhbCwgaGV4X25ld19wcmVkX3ZhbHVlW3BudW1dKTsKKyAgICB0 Y2dfZ2VuX2FuZGlfdGwocHJlZF93cml0dGVuLCBoZXhfcHJlZF93cml0dGVuLCAxIDw8IHBudW0p OworICAgIHRjZ19nZW5fbW92Y29uZF90bChUQ0dfQ09ORF9ORSwgaGV4X25ld19wcmVkX3ZhbHVl W3BudW1dLAorICAgICAgICAgICAgICAgICAgICAgICBwcmVkX3dyaXR0ZW4sIHplcm8sCisgICAg ICAgICAgICAgICAgICAgICAgIGFuZF92YWwsIGJhc2VfdmFsKTsKKyAgICB0Y2dfZ2VuX29yaV90 bChoZXhfcHJlZF93cml0dGVuLCBoZXhfcHJlZF93cml0dGVuLCAxIDw8IHBudW0pOworCisgICAg dGNnX3RlbXBfZnJlZSh6ZXJvKTsKKyAgICB0Y2dfdGVtcF9mcmVlKGJhc2VfdmFsKTsKKyAgICB0 Y2dfdGVtcF9mcmVlKGFuZF92YWwpOworICAgIHRjZ190ZW1wX2ZyZWUocHJlZF93cml0dGVuKTsK K30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9yZWFkX3AzXzAoVENHdiBjb250cm9sX3JlZykK K3sKKyAgICB0Y2dfZ2VuX21vdmlfdGwoY29udHJvbF9yZWcsIDApOworICAgIGZvciAoaW50IGkg PSAwOyBpIDwgTlVNX1BSRUdTOyBpKyspIHsKKyAgICAgICAgdGNnX2dlbl9kZXBvc2l0X3RsKGNv bnRyb2xfcmVnLCBjb250cm9sX3JlZywgaGV4X3ByZWRbaV0sIGkgKiA4LCA4KTsKKyAgICB9Cit9 CisKKy8qCisgKiBDZXJ0YWluIGNvbnRyb2wgcmVnaXN0ZXJzIHJlcXVpcmUgc3BlY2lhbCBoYW5k bGluZyBvbiByZWFkCisgKiAgICAgSEVYX1JFR19QM18wICAgICAgICAgIGFsaWFzZWQgdG8gdGhl IHByZWRpY2F0ZSByZWdpc3RlcnMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gY29u Y2F0IHRoZSA0IHByZWRpY2F0ZSByZWdpc3RlcnMgdG9nZXRoZXIKKyAqICAgICBIRVhfUkVHX1BD ICAgICAgICAgICAgYWN0dWFsIHZhbHVlIHN0b3JlZCBpbiBEaXNhc0NvbnRleHQKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gYXNzaWduIGZyb20gY3R4LT5iYXNlLnBjX25leHQKKyAq ICAgICBIRVhfUkVHX1FFTVVfKl9DTlQgICAgY2hhbmdlcyBpbiBjdXJyZW50IFRCIGluIERpc2Fz Q29udGV4dAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBhZGQgY3VycmVudCBUQiBj aGFuZ2VzIHRvIGV4aXN0aW5nIHJlZyB2YWx1ZQorICovCitzdGF0aWMgaW5saW5lIHZvaWQgZ2Vu X3JlYWRfY3RybF9yZWcoRGlzYXNDb250ZXh0ICpjdHgsIGNvbnN0IGludCByZWdfbnVtLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR3YgZGVzdCkKK3sKKyAgICBpZiAo cmVnX251bSA9PSBIRVhfUkVHX1AzXzApIHsKKyAgICAgICAgZ2VuX3JlYWRfcDNfMChkZXN0KTsK KyAgICB9IGVsc2UgaWYgKHJlZ19udW0gPT0gSEVYX1JFR19QQykgeworICAgICAgICB0Y2dfZ2Vu X21vdmlfdGwoZGVzdCwgY3R4LT5iYXNlLnBjX25leHQpOworICAgIH0gZWxzZSBpZiAocmVnX251 bSA9PSBIRVhfUkVHX1FFTVVfUEtUX0NOVCkgeworICAgICAgICB0Y2dfZ2VuX2FkZGlfdGwoZGVz dCwgaGV4X2dwcltIRVhfUkVHX1FFTVVfUEtUX0NOVF0sCisgICAgICAgICAgICAgICAgICAgICAg ICBjdHgtPm51bV9wYWNrZXRzKTsKKyAgICB9IGVsc2UgaWYgKHJlZ19udW0gPT0gSEVYX1JFR19R RU1VX0lOU05fQ05UKSB7CisgICAgICAgIHRjZ19nZW5fYWRkaV90bChkZXN0LCBoZXhfZ3ByW0hF WF9SRUdfUUVNVV9JTlNOX0NOVF0sCisgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPm51bV9p bnNucyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGNnX2dlbl9tb3ZfdGwoZGVzdCwgaGV4X2dw cltyZWdfbnVtXSk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3JlYWRfY3Ry bF9yZWdfcGFpcihEaXNhc0NvbnRleHQgKmN0eCwgY29uc3QgaW50IHJlZ19udW0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0d2X2k2NCBkZXN0KQoreworICAg IGlmIChyZWdfbnVtID09IEhFWF9SRUdfUDNfMCkgeworICAgICAgICBUQ0d2IHAzXzAgPSB0Y2df dGVtcF9uZXcoKTsKKyAgICAgICAgZ2VuX3JlYWRfcDNfMChwM18wKTsKKyAgICAgICAgdGNnX2dl bl9jb25jYXRfaTMyX2k2NChkZXN0LCBwM18wLCBoZXhfZ3ByW3JlZ19udW0gKyAxXSk7CisgICAg ICAgIHRjZ190ZW1wX2ZyZWUocDNfMCk7CisgICAgfSBlbHNlIGlmIChyZWdfbnVtID09IEhFWF9S RUdfUEMgLSAxKSB7CisgICAgICAgIFRDR3YgcGMgPSB0Y2dfY29uc3RfdGwoY3R4LT5iYXNlLnBj X25leHQpOworICAgICAgICB0Y2dfZ2VuX2NvbmNhdF9pMzJfaTY0KGRlc3QsIGhleF9ncHJbcmVn X251bV0sIHBjKTsKKyAgICAgICAgdGNnX3RlbXBfZnJlZShwYyk7CisgICAgfSBlbHNlIGlmIChy ZWdfbnVtID09IEhFWF9SRUdfUUVNVV9QS1RfQ05UKSB7CisgICAgICAgIFRDR3YgcGt0X2NudCA9 IHRjZ190ZW1wX25ldygpOworICAgICAgICBUQ0d2IGluc25fY250ID0gdGNnX3RlbXBfbmV3KCk7 CisgICAgICAgIHRjZ19nZW5fYWRkaV90bChwa3RfY250LCBoZXhfZ3ByW0hFWF9SRUdfUUVNVV9Q S1RfQ05UXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+bnVtX3BhY2tldHMpOworICAg ICAgICB0Y2dfZ2VuX2FkZGlfdGwoaW5zbl9jbnQsIGhleF9ncHJbSEVYX1JFR19RRU1VX0lOU05f Q05UXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+bnVtX2luc25zKTsKKyAgICAgICAg dGNnX2dlbl9jb25jYXRfaTMyX2k2NChkZXN0LCBwa3RfY250LCBpbnNuX2NudCk7CisgICAgICAg IHRjZ190ZW1wX2ZyZWUocGt0X2NudCk7CisgICAgICAgIHRjZ190ZW1wX2ZyZWUoaW5zbl9jbnQp OworICAgIH0gZWxzZSB7CisgICAgICAgIHRjZ19nZW5fY29uY2F0X2kzMl9pNjQoZGVzdCwKKyAg ICAgICAgICAgIGhleF9ncHJbcmVnX251bV0sCisgICAgICAgICAgICBoZXhfZ3ByW3JlZ19udW0g KyAxXSk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX3dyaXRlX3AzXzAoVENH diBjb250cm9sX3JlZykKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE5VTV9QUkVHUzsgaSsr KSB7CisgICAgICAgIHRjZ19nZW5fZXh0cmFjdF90bChoZXhfcHJlZFtpXSwgY29udHJvbF9yZWcs IGkgKiA4LCA4KTsKKyAgICB9Cit9CisKKy8qCisgKiBDZXJ0YWluIGNvbnRyb2wgcmVnaXN0ZXJz IHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZyBvbiB3cml0ZQorICogICAgIEhFWF9SRUdfUDNfMCAg ICAgICAgICBhbGlhc2VkIHRvIHRoZSBwcmVkaWNhdGUgcmVnaXN0ZXJzCisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+IGJyZWFrIHRoZSB2YWx1ZSBhY3Jvc3MgNCBwcmVkaWNhdGUgcmVn aXN0ZXJzCisgKiAgICAgSEVYX1JFR19RRU1VXypfQ05UICAgIGNoYW5nZXMgaW4gY3VycmVudCBU QiBpbiBEaXNhc0NvbnRleHQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IGNsZWFy IHRoZSBjaGFuZ2VzCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fd3JpdGVfY3RybF9yZWco RGlzYXNDb250ZXh0ICpjdHgsIGludCByZWdfbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUQ0d2IHZhbCkKK3sKKyAgICBpZiAocmVnX251bSA9PSBIRVhfUkVHX1Az XzApIHsKKyAgICAgICAgZ2VuX3dyaXRlX3AzXzAodmFsKTsKKyAgICB9IGVsc2UgeworICAgICAg ICBnZW5fbG9nX3JlZ193cml0ZShyZWdfbnVtLCB2YWwpOworICAgICAgICBjdHhfbG9nX3JlZ193 cml0ZShjdHgsIHJlZ19udW0pOworICAgICAgICBpZiAocmVnX251bSA9PSBIRVhfUkVHX1FFTVVf UEtUX0NOVCkgeworICAgICAgICAgICAgY3R4LT5udW1fcGFja2V0cyA9IDA7CisgICAgICAgIH0K KyAgICAgICAgaWYgKHJlZ19udW0gPT0gSEVYX1JFR19RRU1VX0lOU05fQ05UKSB7CisgICAgICAg ICAgICBjdHgtPm51bV9pbnNucyA9IDA7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBp bmxpbmUgdm9pZCBnZW5fd3JpdGVfY3RybF9yZWdfcGFpcihEaXNhc0NvbnRleHQgKmN0eCwgaW50 IHJlZ19udW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENH dl9pNjQgdmFsKQoreworICAgIGlmIChyZWdfbnVtID09IEhFWF9SRUdfUDNfMCkgeworICAgICAg ICBUQ0d2IHZhbDMyID0gdGNnX3RlbXBfbmV3KCk7CisgICAgICAgIHRjZ19nZW5fZXh0cmxfaTY0 X2kzMih2YWwzMiwgdmFsKTsKKyAgICAgICAgZ2VuX3dyaXRlX3AzXzAodmFsMzIpOworICAgICAg ICB0Y2dfZ2VuX2V4dHJoX2k2NF9pMzIodmFsMzIsIHZhbCk7CisgICAgICAgIGdlbl9sb2dfcmVn X3dyaXRlKHJlZ19udW0gKyAxLCB2YWwzMik7CisgICAgICAgIHRjZ190ZW1wX2ZyZWUodmFsMzIp OworICAgICAgICBjdHhfbG9nX3JlZ193cml0ZShjdHgsIHJlZ19udW0gKyAxKTsKKyAgICB9IGVs c2UgeworICAgICAgICBnZW5fbG9nX3JlZ193cml0ZV9wYWlyKHJlZ19udW0sIHZhbCk7CisgICAg ICAgIGN0eF9sb2dfcmVnX3dyaXRlX3BhaXIoY3R4LCByZWdfbnVtKTsKKyAgICAgICAgaWYgKHJl Z19udW0gPT0gSEVYX1JFR19RRU1VX1BLVF9DTlQpIHsKKyAgICAgICAgICAgIGN0eC0+bnVtX3Bh Y2tldHMgPSAwOworICAgICAgICAgICAgY3R4LT5udW1faW5zbnMgPSAwOworICAgICAgICB9Cisg ICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xvYWRfbG9ja2VkNHUoVENHdiBkZXN0 LCBUQ0d2IHZhZGRyLCBpbnQgbWVtX2luZGV4KQoreworICAgIHRjZ19nZW5fcWVtdV9sZDMydShk ZXN0LCB2YWRkciwgbWVtX2luZGV4KTsKKyAgICB0Y2dfZ2VuX21vdl90bChoZXhfbGxzY19hZGRy LCB2YWRkcik7CisgICAgdGNnX2dlbl9tb3ZfdGwoaGV4X2xsc2NfdmFsLCBkZXN0KTsKK30KKwor c3RhdGljIGlubGluZSB2b2lkIGdlbl9sb2FkX2xvY2tlZDh1KFRDR3ZfaTY0IGRlc3QsIFRDR3Yg dmFkZHIsIGludCBtZW1faW5kZXgpCit7CisgICAgdGNnX2dlbl9xZW11X2xkNjQoZGVzdCwgdmFk ZHIsIG1lbV9pbmRleCk7CisgICAgdGNnX2dlbl9tb3ZfdGwoaGV4X2xsc2NfYWRkciwgdmFkZHIp OworICAgIHRjZ19nZW5fbW92X2k2NChoZXhfbGxzY192YWxfaTY0LCBkZXN0KTsKK30KKworc3Rh dGljIGlubGluZSB2b2lkIGdlbl9zdG9yZV9jb25kaXRpb25hbDQoQ1BVSGV4YWdvblN0YXRlICpl bnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNhc0NvbnRl eHQgKmN0eCwgaW50IHByZWRudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUQ0d2IHByZWQsIFRDR3YgdmFkZHIsIFRDR3Ygc3JjKQoreworICAgIFRDR0xhYmVs ICpmYWlsID0gZ2VuX25ld19sYWJlbCgpOworICAgIFRDR0xhYmVsICpkb25lID0gZ2VuX25ld19s YWJlbCgpOworICAgIFRDR3Ygb25lLCB6ZXJvLCB0bXA7CisKKyAgICB0Y2dfZ2VuX2JyY29uZF90 bChUQ0dfQ09ORF9ORSwgdmFkZHIsIGhleF9sbHNjX2FkZHIsIGZhaWwpOworCisgICAgb25lID0g dGNnX2NvbnN0X3RsKDB4ZmYpOworICAgIHplcm8gPSB0Y2dfY29uc3RfdGwoMCk7CisgICAgdG1w ID0gdGNnX3RlbXBfbmV3KCk7CisgICAgdGNnX2dlbl9hdG9taWNfY21weGNoZ190bCh0bXAsIGhl eF9sbHNjX2FkZHIsIGhleF9sbHNjX3ZhbCwgc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3R4LT5tZW1faWR4LCBNT18zMik7CisgICAgdGNnX2dlbl9tb3Zjb25kX3RsKFRDR19D T05EX0VRLCBoZXhfcHJlZFtwcmVkbnVtXSwgdG1wLCBoZXhfbGxzY192YWwsCisgICAgICAgICAg ICAgICAgICAgICAgIG9uZSwgemVybyk7CisgICAgdGNnX3RlbXBfZnJlZShvbmUpOworICAgIHRj Z190ZW1wX2ZyZWUoemVybyk7CisgICAgdGNnX3RlbXBfZnJlZSh0bXApOworICAgIHRjZ19nZW5f YnIoZG9uZSk7CisKKyAgICBnZW5fc2V0X2xhYmVsKGZhaWwpOworICAgIHRjZ19nZW5fbW92aV90 bChwcmVkLCAwKTsKKworICAgIGdlbl9zZXRfbGFiZWwoZG9uZSk7CisgICAgdGNnX2dlbl9tb3Zp X3RsKGhleF9sbHNjX2FkZHIsIH4wKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdlbl9zdG9y ZV9jb25kaXRpb25hbDgoQ1BVSGV4YWdvblN0YXRlICplbnYsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBEaXNhc0NvbnRleHQgKmN0eCwgaW50IHByZWRudW0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0d2IHByZWQsIFRDR3Yg dmFkZHIsIFRDR3ZfaTY0IHNyYykKK3sKKyAgICBUQ0dMYWJlbCAqZmFpbCA9IGdlbl9uZXdfbGFi ZWwoKTsKKyAgICBUQ0dMYWJlbCAqZG9uZSA9IGdlbl9uZXdfbGFiZWwoKTsKKyAgICBUQ0d2X2k2 NCBvbmUsIHplcm8sIHRtcDsKKworICAgIHRjZ19nZW5fYnJjb25kX3RsKFRDR19DT05EX05FLCB2 YWRkciwgaGV4X2xsc2NfYWRkciwgZmFpbCk7CisKKyAgICBvbmUgPSB0Y2dfY29uc3RfaTY0KDB4 ZmYpOworICAgIHplcm8gPSB0Y2dfY29uc3RfaTY0KDApOworICAgIHRtcCA9IHRjZ190ZW1wX25l d19pNjQoKTsKKyAgICB0Y2dfZ2VuX2F0b21pY19jbXB4Y2hnX2k2NCh0bXAsIGhleF9sbHNjX2Fk ZHIsIGhleF9sbHNjX3ZhbF9pNjQsIHNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjdHgtPm1lbV9pZHgsIE1PXzY0KTsKKyAgICB0Y2dfZ2VuX21vdmNvbmRfaTY0KFRDR19DT05E X0VRLCB0bXAsIHRtcCwgaGV4X2xsc2NfdmFsX2k2NCwKKyAgICAgICAgICAgICAgICAgICAgICAg IG9uZSwgemVybyk7CisgICAgdGNnX2dlbl9leHRybF9pNjRfaTMyKGhleF9wcmVkW3ByZWRudW1d LCB0bXApOworICAgIHRjZ190ZW1wX2ZyZWVfaTY0KG9uZSk7CisgICAgdGNnX3RlbXBfZnJlZV9p NjQoemVybyk7CisgICAgdGNnX3RlbXBfZnJlZV9pNjQodG1wKTsKKyAgICB0Y2dfZ2VuX2JyKGRv bmUpOworCisgICAgZ2VuX3NldF9sYWJlbChmYWlsKTsKKyAgICB0Y2dfZ2VuX21vdmlfdGwocHJl ZCwgMCk7CisKKyAgICBnZW5fc2V0X2xhYmVsKGRvbmUpOworICAgIHRjZ19nZW5fbW92aV90bCho ZXhfbGxzY19hZGRyLCB+MCk7Cit9CisKKyNpbmNsdWRlICJ0Y2dfZnVuY3NfZ2VuZXJhdGVkLmMu aW5jIgorI2luY2x1ZGUgInRjZ19mdW5jX3RhYmxlX2dlbmVyYXRlZC5jLmluYyIKLS0gCjIuNy40 Cgo=