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=-9.6 required=3.0 tests=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 B0CBFC3B189 for ; Tue, 11 Feb 2020 01:04:30 +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 6F0392082F for ; Tue, 11 Feb 2020 01:04:30 +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="chyht1bF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6F0392082F 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]:41862 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1JyX-0003kt-Gx for qemu-devel@archiver.kernel.org; Mon, 10 Feb 2020 20:04:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34226) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1Jcp-0002ZU-E3 for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j1Jcn-0002j8-IU for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:03 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:3639) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j1Jcn-0004qc-7T for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1581381721; x=1612917721; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2pFlcoEDjym2STmm3IgPduT0fK693EEOjfJOkHI6FrA=; b=chyht1bFIzZqlpqLl43SJi7WCpSTCYeI706uCyhpr2R2h72ofzJCn53V NuR1f3KFhvEOXUkjUKAXCyfDMKZF7JM32LpB+dQ5puJiN6y44HEZA/Vah Jsxrr6uq9aVL8PwNidzOT4DeNbnQtL3vLEJQ4OGCb6HjYEh55EedTcPyh c=; Received: from unknown (HELO ironmsg03-sd.qualcomm.com) ([10.53.140.143]) by alexa-out-sd-01.qualcomm.com with ESMTP; 10 Feb 2020 16:41:04 -0800 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg03-sd.qualcomm.com with ESMTP; 10 Feb 2020 16:41:03 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id C57B11B5F; Mon, 10 Feb 2020 18:41:03 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH 64/66] Hexagon HVX TCG generation Date: Mon, 10 Feb 2020 18:40:42 -0600 Message-Id: <1581381644-13678-65-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1581381644-13678-1-git-send-email-tsimpson@quicinc.com> References: <1581381644-13678-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 199.106.114.38 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: riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, Taylor Simpson , philmd@redhat.com, aleksandar.m.mail@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" U2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgotLS0K IHRhcmdldC9oZXhhZ29uL2dlbnB0ci5jICAgICAgICAgfCAgIDEgKwogdGFyZ2V0L2hleGFnb24v Z2VucHRyX2hlbHBlcnMuaCB8IDE4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE5MCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv dGFyZ2V0L2hleGFnb24vZ2VucHRyLmMgYi90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYwppbmRleCAz MDMxOWI1Li4zZGEwMDE4IDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYworKysg Yi90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIm9w Y29kZXMuaCIKICNpbmNsdWRlICJ0cmFuc2xhdGUuaCIKICNpbmNsdWRlICJtYWNyb3MuaCIKKyNp bmNsdWRlICJtbXZlYy9tYWNyb3MuaCIKICNpbmNsdWRlICJnZW5wdHJfaGVscGVycy5oIgogI2lu Y2x1ZGUgImhlbHBlcl9vdmVycmlkZXMuaCIKIApkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24v Z2VucHRyX2hlbHBlcnMuaCBiL3RhcmdldC9oZXhhZ29uL2dlbnB0cl9oZWxwZXJzLmgKaW5kZXgg YjhiZGNmNC4uNjZmNjdlNSAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24vZ2VucHRyX2hlbHBl cnMuaAorKysgYi90YXJnZXQvaGV4YWdvbi9nZW5wdHJfaGVscGVycy5oCkBAIC04MzAsNCArODMw LDE5MyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX2xzaGlmdHJfNF80dShUQ0d2IGRzdCwgVENH diBzcmMsIGludDMyX3Qgc2hpZnRfYW10KQogICAgIH0KIH0KIAorc3RhdGljIGlubGluZSB1aW50 MzJfdCBuZXdfdGVtcF92cmVnX29mZnNldChEaXNhc0NvbnRleHQgKmN0eCwgaW50IG51bSkKK3sK KyAgICB1aW50MzJfdCBvZmZzZXQgPQorICAgICAgICBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUs IHRlbXBfdnJlZ3NbY3R4LT5jdHhfdGVtcF92cmVnc19pZHhdKTsKKworICAgIEhFWF9ERUJVR19M T0coIm5ld190ZW1wX3ZyZWdfb2Zmc2V0OiAlZFxuIiwgY3R4LT5jdHhfdGVtcF92cmVnc19pZHgp OworICAgIGdfYXNzZXJ0KGN0eC0+Y3R4X3RlbXBfdnJlZ3NfaWR4ICsgbnVtIC0gMSA8IFRFTVBf VkVDVE9SU19NQVgpOworICAgIGN0eC0+Y3R4X3RlbXBfdnJlZ3NfaWR4ICs9IG51bTsKKyAgICBy ZXR1cm4gb2Zmc2V0OworfQorCitzdGF0aWMgaW5saW5lIHVpbnQzMl90IG5ld190ZW1wX3FyZWdf b2Zmc2V0KERpc2FzQ29udGV4dCAqY3R4KQoreworICAgIHVpbnQzMl90IG9mZnNldCA9CisgICAg ICAgIG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgdGVtcF9xcmVnc1tjdHgtPmN0eF90ZW1wX3Fy ZWdzX2lkeF0pOworCisgICAgSEVYX0RFQlVHX0xPRygibmV3X3RlbXBfcXJlZ19vZmZzZXQ6ICVk XG4iLCBjdHgtPmN0eF90ZW1wX3FyZWdzX2lkeCk7CisgICAgZ19hc3NlcnQoY3R4LT5jdHhfdGVt cF9xcmVnc19pZHggPCBURU1QX1ZFQ1RPUlNfTUFYKTsKKyAgICBjdHgtPmN0eF90ZW1wX3FyZWdz X2lkeCsrOworICAgIHJldHVybiBvZmZzZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5f cmVhZF9xcmVnKFRDR3ZfcHRyIHZhciwgaW50IG51bSwgaW50IHZ0bXApCit7CisgICAgdWludDMy X3Qgb2Zmc2V0ID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBRUmVnc1sobnVtKV0pOworICAg IFRDR3ZfcHRyIHNyYyA9IHRjZ190ZW1wX25ld19wdHIoKTsKKyAgICB0Y2dfZ2VuX2FkZGlfcHRy KHNyYywgY3B1X2Vudiwgb2Zmc2V0KTsKKyAgICBnZW5fbWVtY3B5KHZhciwgc3JjLCBzaXplb2Yo bW1xcmVnX3QpKTsKKyAgICB0Y2dfdGVtcF9mcmVlX3B0cihzcmMpOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQgZ2VuX3JlYWRfdnJlZyhUQ0d2X3B0ciB2YXIsIGludCBudW0sIGludCB2dG1wKQor eworICAgIFRDR3YgemVybyA9IHRjZ19jb25zdF90bCgwKTsKKyAgICBUQ0d2IG9mZnNldF9mdXR1 cmUgPQorICAgICAgICB0Y2dfY29uc3RfdGwob2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBmdXR1 cmVfVlJlZ3NbbnVtXSkpOworICAgIFRDR3Ygb2Zmc2V0X3ZyZWdzID0KKyAgICAgICAgdGNnX2Nv bnN0X3RsKG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgVlJlZ3NbbnVtXSkpOworICAgIFRDR3Yg b2Zmc2V0X3RtcF92cmVncyA9CisgICAgICAgIHRjZ19jb25zdF90bChvZmZzZXRvZihDUFVIZXhh Z29uU3RhdGUsIHRtcF9WUmVnc1tudW1dKSk7CisgICAgVENHdiBvZmZzZXQgPSB0Y2dfdGVtcF9u ZXcoKTsKKyAgICBUQ0d2X3B0ciBvZmZzZXRfcHRyID0gdGNnX3RlbXBfbmV3X3B0cigpOworICAg IFRDR3ZfcHRyIHB0cl9zcmMgPSB0Y2dfdGVtcF9uZXdfcHRyKCk7CisgICAgVENHdiBuZXdfd3Jp dHRlbiA9IHRjZ190ZW1wX25ldygpOworICAgIFRDR3YgdG1wX3dyaXR0ZW4gPSB0Y2dfdGVtcF9u ZXcoKTsKKworICAgIC8qCisgICAgICogIG5ld193cml0dGVuID0gKGhleF9WUmVnc19zZWxlY3Qg Pj4gbnVtKSAmIDE7CisgICAgICogIG9mZnNldCA9IG5ld193cml0dGVuID8gb2Zmc2V0X2Z1dHVy ZSwgb2Zmc2V0X3ZyZWdzOworICAgICAqLworICAgIHRjZ19nZW5fc2hyaV90bChuZXdfd3JpdHRl biwgaGV4X1ZSZWdzX3NlbGVjdCwgbnVtKTsKKyAgICB0Y2dfZ2VuX2FuZGlfdGwobmV3X3dyaXR0 ZW4sIG5ld193cml0dGVuLCAxKTsKKyAgICB0Y2dfZ2VuX21vdmNvbmRfdGwoVENHX0NPTkRfTkUs IG9mZnNldCwgbmV3X3dyaXR0ZW4sIHplcm8sCisgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl dF9mdXR1cmUsIG9mZnNldF92cmVncyk7CisKKyAgICAvKgorICAgICAqIHRtcF93cml0dGVuID0g KGhleF9WUmVnc191cGRhdGVkX3RtcCA+PiBudW0pICYgMTsKKyAgICAgKiBpZiAodG1wX3dyaXR0 ZW4pIG9mZnNldCA9IG9mZnNldF90bXBfdnJlZ3M7CisgICAgICovCisgICAgdGNnX2dlbl9zaHJp X3RsKHRtcF93cml0dGVuLCBoZXhfVlJlZ3NfdXBkYXRlZF90bXAsIG51bSk7CisgICAgdGNnX2dl bl9hbmRpX3RsKHRtcF93cml0dGVuLCB0bXBfd3JpdHRlbiwgMSk7CisgICAgdGNnX2dlbl9tb3Zj b25kX3RsKFRDR19DT05EX05FLCBvZmZzZXQsIHRtcF93cml0dGVuLCB6ZXJvLAorICAgICAgICAg ICAgICAgICAgICAgICBvZmZzZXRfdG1wX3ZyZWdzLCBvZmZzZXQpOworCisgICAgaWYgKHZ0bXAg PT0gRVhUX1RNUCkgeworICAgICAgICBUQ0d2IHZyZWdzX3VwZGF0ZWQgPSB0Y2dfdGVtcF9uZXco KTsKKyAgICAgICAgVENHdiB0ZW1wID0gdGNnX3RlbXBfbmV3KCk7CisKKyAgICAgICAgLyoKKyAg ICAgICAgICogdnJlZ3NfdXBkYXRlZCA9IGhleF9WUmVnc191cGRhdGVzICYgKDEgPDwgbnVtKTsK KyAgICAgICAgICogaWYgKHZyZWdzX3VwZGF0ZWQpIHsKKyAgICAgICAgICogICAgIG9mZnNldCA9 IG9mZnNldF9mdXR1cmU7CisgICAgICAgICAqICAgICBoZXhfVlJlZ3NfdXBkYXRlZCBePSAoMSA8 PCBudW0pOworICAgICAgICAgKiB9CisgICAgICAgICAqLworICAgICAgICB0Y2dfZ2VuX2FuZGlf dGwodnJlZ3NfdXBkYXRlZCwgaGV4X1ZSZWdzX3VwZGF0ZWQsIDEgPDwgbnVtKTsKKyAgICAgICAg dGNnX2dlbl9tb3Zjb25kX3RsKFRDR19DT05EX05FLCBvZmZzZXQsIHZyZWdzX3VwZGF0ZWQsIHpl cm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRfZnV0dXJlLCBvZmZzZXQpOwor ICAgICAgICB0Y2dfZ2VuX3hvcmlfdGwodGVtcCwgaGV4X1ZSZWdzX3VwZGF0ZWQsIDEgPDwgbnVt KTsKKyAgICAgICAgdGNnX2dlbl9tb3Zjb25kX3RsKFRDR19DT05EX05FLCBoZXhfVlJlZ3NfdXBk YXRlZCwgdnJlZ3NfdXBkYXRlZCwgemVybywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl bXAsIGhleF9WUmVnc191cGRhdGVkKTsKKworICAgICAgICB0Y2dfdGVtcF9mcmVlKHZyZWdzX3Vw ZGF0ZWQpOworICAgICAgICB0Y2dfdGVtcF9mcmVlKHRlbXApOworICAgIH0KKworICAgIHRjZ19n ZW5fZXh0X2kzMl9wdHIob2Zmc2V0X3B0ciwgb2Zmc2V0KTsKKyAgICB0Y2dfZ2VuX2FkZF9wdHIo cHRyX3NyYywgY3B1X2Vudiwgb2Zmc2V0X3B0cik7CisgICAgZ2VuX21lbWNweSh2YXIsIHB0cl9z cmMsIHNpemVvZihtbXZlY3Rvcl90KSk7CisKKyAgICB0Y2dfdGVtcF9mcmVlKHplcm8pOworICAg IHRjZ190ZW1wX2ZyZWUob2Zmc2V0X2Z1dHVyZSk7CisgICAgdGNnX3RlbXBfZnJlZShvZmZzZXRf dnJlZ3MpOworICAgIHRjZ190ZW1wX2ZyZWUob2Zmc2V0X3RtcF92cmVncyk7CisgICAgdGNnX3Rl bXBfZnJlZShvZmZzZXQpOworICAgIHRjZ190ZW1wX2ZyZWVfcHRyKG9mZnNldF9wdHIpOworICAg IHRjZ190ZW1wX2ZyZWVfcHRyKHB0cl9zcmMpOworICAgIHRjZ190ZW1wX2ZyZWUobmV3X3dyaXR0 ZW4pOworICAgIHRjZ190ZW1wX2ZyZWUodG1wX3dyaXR0ZW4pOworfQorCitzdGF0aWMgaW5saW5l IHZvaWQgZ2VuX3JlYWRfdnJlZ19wYWlyKFRDR3ZfcHRyIHZhciwgaW50IG51bSwgaW50IHZ0bXAp Cit7CisgICAgVENHdl9wdHIgdjAgPSB0Y2dfdGVtcF9uZXdfcHRyKCk7CisgICAgVENHdl9wdHIg djEgPSB0Y2dfdGVtcF9uZXdfcHRyKCk7CisgICAgdGNnX2dlbl9hZGRpX3B0cih2MCwgdmFyLCBv ZmZzZXRvZihtbXZlY3Rvcl9wYWlyX3QsIHZbMF0pKTsKKyAgICBnZW5fcmVhZF92cmVnKHYwLCBu dW0gXiAwLCB2dG1wKTsKKyAgICB0Y2dfZ2VuX2FkZGlfcHRyKHYxLCB2YXIsIG9mZnNldG9mKG1t dmVjdG9yX3BhaXJfdCwgdlsxXSkpOworICAgIGdlbl9yZWFkX3ZyZWcodjEsIG51bSBeIDEsIHZ0 bXApOworICAgIHRjZ190ZW1wX2ZyZWVfcHRyKHYwKTsKKyAgICB0Y2dfdGVtcF9mcmVlX3B0cih2 MSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbG9nX3ZyZWdfd3JpdGUoVENHdl9wdHIg dmFyLCBpbnQgbnVtLCBpbnQgdm5ldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IHNsb3RfbnVtKQoreworICAgIFRDR3YgY2FuY2VsbGVkID0gdGNnX3RlbXBfbG9j YWxfbmV3KCk7CisgICAgVENHTGFiZWwgKmxhYmVsX2VuZCA9IGdlbl9uZXdfbGFiZWwoKTsKKwor ICAgIC8qIERvbid0IGRvIGFueXRoaW5nIGlmIHRoZSBzbG90IHdhcyBjYW5jZWxsZWQgKi8KKyAg ICBnZW5fc2xvdF9jYW5jZWxsZWRfY2hlY2soY2FuY2VsbGVkLCBzbG90X251bSk7CisgICAgdGNn X2dlbl9icmNvbmRpX3RsKFRDR19DT05EX05FLCBjYW5jZWxsZWQsIDAsIGxhYmVsX2VuZCk7Cisg ICAgeworICAgICAgICBUQ0d2IG1hc2sgPSB0Y2dfY29uc3RfdGwoMSA8PCBudW0pOworICAgICAg ICBUQ0d2X3B0ciBkc3QgPSB0Y2dfdGVtcF9uZXdfcHRyKCk7CisgICAgICAgIGlmICh2bmV3ICE9 IEVYVF9UTVApIHsKKyAgICAgICAgICAgIHRjZ19nZW5fb3JfdGwoaGV4X1ZSZWdzX3VwZGF0ZWQs IGhleF9WUmVnc191cGRhdGVkLCBtYXNrKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodm5ldyA9 PSBFWFRfTkVXKSB7CisgICAgICAgICAgICB0Y2dfZ2VuX29yX3RsKGhleF9WUmVnc19zZWxlY3Qs IGhleF9WUmVnc19zZWxlY3QsIG1hc2spOworICAgICAgICB9CisgICAgICAgIGlmICh2bmV3ID09 IEVYVF9UTVApIHsKKyAgICAgICAgICAgIHRjZ19nZW5fb3JfdGwoaGV4X1ZSZWdzX3VwZGF0ZWRf dG1wLCBoZXhfVlJlZ3NfdXBkYXRlZF90bXAsIG1hc2spOworICAgICAgICB9CisgICAgICAgIHRj Z19nZW5fYWRkaV9wdHIoZHN0LCBjcHVfZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgIG9m ZnNldG9mKENQVUhleGFnb25TdGF0ZSwgZnV0dXJlX1ZSZWdzW251bV0pKTsKKyAgICAgICAgZ2Vu X21lbWNweShkc3QsIHZhciwgc2l6ZW9mKG1tdmVjdG9yX3QpKTsKKyAgICAgICAgaWYgKHZuZXcg PT0gRVhUX1RNUCkgeworICAgICAgICAgICAgVENHdl9wdHIgc3JjID0gdGNnX3RlbXBfbmV3X3B0 cigpOworICAgICAgICAgICAgdGNnX2dlbl9hZGRpX3B0cihkc3QsIGNwdV9lbnYsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgdG1wX1ZSZWdz W251bV0pKTsKKyAgICAgICAgICAgIHRjZ19nZW5fYWRkaV9wdHIoc3JjLCBjcHVfZW52LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIGZ1dHVy ZV9WUmVnc1tudW1dKSk7CisgICAgICAgICAgICBnZW5fbWVtY3B5KGRzdCwgc3JjLCBzaXplb2Yo bW12ZWN0b3JfdCkpOworICAgICAgICAgICAgdGNnX3RlbXBfZnJlZV9wdHIoc3JjKTsKKyAgICAg ICAgfQorICAgICAgICB0Y2dfdGVtcF9mcmVlKG1hc2spOworICAgICAgICB0Y2dfdGVtcF9mcmVl X3B0cihkc3QpOworICAgIH0KKyAgICBnZW5fc2V0X2xhYmVsKGxhYmVsX2VuZCk7CisKKyAgICB0 Y2dfdGVtcF9mcmVlKGNhbmNlbGxlZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fbG9n X3ZyZWdfd3JpdGVfcGFpcihUQ0d2X3B0ciB2YXIsIGludCBudW0sIGludCB2bmV3LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzbG90X251bSkKK3sKKyAg ICBUQ0d2X3B0ciB2MCA9IHRjZ190ZW1wX2xvY2FsX25ld19wdHIoKTsKKyAgICBUQ0d2X3B0ciB2 MSA9IHRjZ190ZW1wX2xvY2FsX25ld19wdHIoKTsKKyAgICB0Y2dfZ2VuX2FkZGlfcHRyKHYwLCB2 YXIsIG9mZnNldG9mKG1tdmVjdG9yX3BhaXJfdCwgdlswXSkpOworICAgIGdlbl9sb2dfdnJlZ193 cml0ZSh2MCwgbnVtIF4gMCwgdm5ldywgc2xvdF9udW0pOworICAgIHRjZ19nZW5fYWRkaV9wdHIo djEsIHZhciwgb2Zmc2V0b2YobW12ZWN0b3JfcGFpcl90LCB2WzFdKSk7CisgICAgZ2VuX2xvZ192 cmVnX3dyaXRlKHYxLCBudW0gXiAxLCB2bmV3LCBzbG90X251bSk7CisgICAgdGNnX3RlbXBfZnJl ZV9wdHIodjApOworICAgIHRjZ190ZW1wX2ZyZWVfcHRyKHYxKTsKK30KKworc3RhdGljIGlubGlu ZSB2b2lkIGdlbl9sb2dfcXJlZ193cml0ZShUQ0d2X3B0ciB2YXIsIGludCBudW0sIGludCB2bmV3 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNsb3RfbnVt KQoreworICAgIFRDR3YgY2FuY2VsbGVkID0gdGNnX3RlbXBfbG9jYWxfbmV3KCk7CisgICAgVENH TGFiZWwgKmxhYmVsX2VuZCA9IGdlbl9uZXdfbGFiZWwoKTsKKworICAgIC8qIERvbid0IGRvIGFu eXRoaW5nIGlmIHRoZSBzbG90IHdhcyBjYW5jZWxsZWQgKi8KKyAgICBnZW5fc2xvdF9jYW5jZWxs ZWRfY2hlY2soY2FuY2VsbGVkLCBzbG90X251bSk7CisgICAgdGNnX2dlbl9icmNvbmRpX3RsKFRD R19DT05EX05FLCBjYW5jZWxsZWQsIDAsIGxhYmVsX2VuZCk7CisgICAgeworICAgICAgICBUQ0d2 X3B0ciBkc3QgPSB0Y2dfdGVtcF9uZXdfcHRyKCk7CisgICAgICAgIHRjZ19nZW5fYWRkaV9wdHIo ZHN0LCBjcHVfZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKENQVUhleGFn b25TdGF0ZSwgZnV0dXJlX1FSZWdzW251bV0pKTsKKyAgICAgICAgZ2VuX21lbWNweShkc3QsIHZh ciwgc2l6ZW9mKG1tcXJlZ190KSk7CisgICAgICAgIHRjZ19nZW5fb3JpX3RsKGhleF9RUmVnc191 cGRhdGVkLCBoZXhfUVJlZ3NfdXBkYXRlZCwgMSA8PCBudW0pOworICAgICAgICB0Y2dfdGVtcF9m cmVlX3B0cihkc3QpOworICAgIH0KKyAgICBnZW5fc2V0X2xhYmVsKGxhYmVsX2VuZCk7CisKKyAg ICB0Y2dfdGVtcF9mcmVlKGNhbmNlbGxlZCk7Cit9CisKICNlbmRpZgotLSAKMi43LjQKCg==