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 EBA98C352A4 for ; Tue, 11 Feb 2020 00:48:44 +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 AC16C2080C for ; Tue, 11 Feb 2020 00:48:44 +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="Wb1mtffl" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AC16C2080C 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]:41648 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1JjH-00058T-SB for qemu-devel@archiver.kernel.org; Mon, 10 Feb 2020 19:48:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:59883) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1Jbv-0000yy-Jv for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:41:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j1Jbq-0004xy-T3 for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:41:07 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:3646) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j1Jbq-0004rG-EZ for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:41:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1581381662; x=1612917662; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=oRoICiMfAohgs+URgejD7s3+RqW3ODbmB6APSYuOIUo=; b=Wb1mtfflwgquAdx5QhxFfELtagVfwsztKMnTsEBI3RHP8XsDw7Ad9UMp necYtlg5/GOiSFnAo6KamQTPMWNU5cbkM8Yp2VEZ4D//o6aaTzdNMk8Pa Xy2ILDPf803OgQ5jyVR3JG0uEy+f8ZPIMrKlDZh60UOsd0I2j4D1nWykq k=; Received: from unknown (HELO ironmsg-SD-alpha.qualcomm.com) ([10.53.140.30]) by alexa-out-sd-01.qualcomm.com with ESMTP; 10 Feb 2020 16:40:58 -0800 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; 10 Feb 2020 16:40:57 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 3F6051B53; Mon, 10 Feb 2020 18:40:57 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH 03/66] Hexagon CPU Scalar Core Definition Date: Mon, 10 Feb 2020 18:39:41 -0600 Message-Id: <1581381644-13678-4-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" QWRkIENQVSBzdGF0ZSBoZWFkZXIsIENQVSBkZWZpbml0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24g cm91dGluZXMKClNpZ25lZC1vZmYtYnk6IFRheWxvciBTaW1wc29uIDx0c2ltcHNvbkBxdWljaW5j LmNvbT4KLS0tCiB0YXJnZXQvaGV4YWdvbi9jcHUtcGFyYW0uaCB8ICAyNiArKysrCiB0YXJnZXQv aGV4YWdvbi9jcHUuYyAgICAgICB8IDMwNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIHRhcmdldC9oZXhhZ29uL2NwdS5oICAgICAgIHwgMTY1ICsrKysrKysr KysrKysrKysrKysrKysrKwogdGFyZ2V0L2hleGFnb24vY3B1X2JpdHMuaCAgfCAgMzcgKysrKysr CiB0YXJnZXQvaGV4YWdvbi9pbnRlcm5hbC5oICB8ICA1MiArKysrKysrKwogNSBmaWxlcyBjaGFu Z2VkLCA1ODQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9oZXhhZ29u L2NwdS1wYXJhbS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0L2hleGFnb24vY3B1LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQvaGV4YWdvbi9jcHUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHRhcmdldC9oZXhhZ29uL2NwdV9iaXRzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQvaGV4 YWdvbi9pbnRlcm5hbC5oCgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vY3B1LXBhcmFtLmgg Yi90YXJnZXQvaGV4YWdvbi9jcHUtcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi44NTVjYjYyCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vY3B1LXBh cmFtLmgKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTkgUXVhbGNv bW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgSEVYQUdP Tl9DUFVfUEFSQU1fSAorI2RlZmluZSBIRVhBR09OX0NQVV9QQVJBTV9ICisKKyNkZWZpbmUgVEFS R0VUX1BIWVNfQUREUl9TUEFDRV9CSVRTIDM2CisjZGVmaW5lIFRBUkdFVF9WSVJUX0FERFJfU1BB Q0VfQklUUyAzMgorCisjZGVmaW5lIE5CX01NVV9NT0RFUyAxCisKKyNlbmRpZgpkaWZmIC0tZ2l0 IGEvdGFyZ2V0L2hleGFnb24vY3B1LmMgYi90YXJnZXQvaGV4YWdvbi9jcHUuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTdmYzg5Ci0tLSAvZGV2L251bGwKKysrIGIvdGFy Z2V0L2hleGFnb24vY3B1LmMKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChj KSAyMDE5IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2 ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgor ICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisj aW5jbHVkZSAicWVtdS9vc2RlcC5oIgorI2luY2x1ZGUgInFlbXUvbG9nLmgiCisjaW5jbHVkZSAi Y3B1LmgiCisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ0cmFuc2xhdGUuaCIKKyNp bmNsdWRlICJleGVjL2V4ZWMtYWxsLmgiCisjaW5jbHVkZSAicWFwaS9lcnJvci5oIgorI2luY2x1 ZGUgIm1pZ3JhdGlvbi92bXN0YXRlLmgiCisKK3N0YXRpYyB2b2lkIGhleGFnb25fdjY3X2NwdV9p bml0KE9iamVjdCAqb2JqKQoreworfQorCitzdGF0aWMgT2JqZWN0Q2xhc3MgKmhleGFnb25fY3B1 X2NsYXNzX2J5X25hbWUoY29uc3QgY2hhciAqY3B1X21vZGVsKQoreworICAgIE9iamVjdENsYXNz ICpvYzsKKyAgICBjaGFyICp0eXBlbmFtZTsKKyAgICBjaGFyICoqY3B1bmFtZTsKKworICAgIGNw dW5hbWUgPSBnX3N0cnNwbGl0KGNwdV9tb2RlbCwgIiwiLCAxKTsKKyAgICB0eXBlbmFtZSA9IGdf c3RyZHVwX3ByaW50ZihIRVhBR09OX0NQVV9UWVBFX05BTUUoIiVzIiksIGNwdW5hbWVbMF0pOwor ICAgIG9jID0gb2JqZWN0X2NsYXNzX2J5X25hbWUodHlwZW5hbWUpOworICAgIGdfc3RyZnJlZXYo Y3B1bmFtZSk7CisgICAgZ19mcmVlKHR5cGVuYW1lKTsKKyAgICBpZiAoIW9jIHx8ICFvYmplY3Rf Y2xhc3NfZHluYW1pY19jYXN0KG9jLCBUWVBFX0hFWEFHT05fQ1BVKSB8fAorICAgICAgICBvYmpl Y3RfY2xhc3NfaXNfYWJzdHJhY3Qob2MpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0K KyAgICByZXR1cm4gb2M7Cit9CisKK2NvbnN0IGNoYXIgKiBjb25zdCBoZXhhZ29uX3JlZ25hbWVz W1RPVEFMX1BFUl9USFJFQURfUkVHU10gPSB7CisgICAicjAiLCAicjEiLCAgInIyIiwgICJyMyIs ICAicjQiLCAgICJyNSIsICAicjYiLCAgInI3IiwKKyAgICJyOCIsICJyOSIsICAicjEwIiwgInIx MSIsICJyMTIiLCAgInIxMyIsICJyMTQiLCAicjE1IiwKKyAgInIxNiIsICJyMTciLCAicjE4Iiwg InIxOSIsICJyMjAiLCAgInIyMSIsICJyMjIiLCAicjIzIiwKKyAgInIyNCIsICJyMjUiLCAicjI2 IiwgInIyNyIsICJyMjgiLCAgInIyOSIsICJyMzAiLCAicjMxIiwKKyAgInNhMCIsICJsYzAiLCAi c2ExIiwgImxjMSIsICJwM18wIiwgImM1IiwgICJtMCIsICAibTEiLAorICAidXNyIiwgInBjIiwg ICJ1Z3AiLCAiZ3AiLCAgImNzMCIsICAiY3MxIiwgImMxNCIsICJjMTUiLAorICAiYzE2IiwgImMx NyIsICJjMTgiLCAiYzE5IiwgInBrdF9jbnQiLCAgImluc25fY250IiwgImh2eF9jbnQiLCAiYzIz IiwKKyAgImMyNCIsICJjMjUiLCAiYzI2IiwgImMyNyIsICJjMjgiLCAgImMyOSIsICJjMzAiLCAi YzMxIiwKK307CisKKy8qCisgKiBPbmUgb2YgdGhlIG1haW4gZGVidWdnaW5nIHRlY2huaXF1ZXMg aXMgdG8gdXNlICItZCBjcHUiIGFuZCBjb21wYXJlIGFnYWluc3QKKyAqIExMREIgb3V0cHV0IHdo ZW4gc2luZ2xlIHN0ZXBwaW5nLiAgSG93ZXZlciwgdGhlIHRhcmdldCBhbmQgcWVtdSBwdXQgdGhl CisgKiBzdGFja3MgYXQgZGlmZmVyZW50IGxvY2F0aW9ucy4gIFRoaXMgaXMgdXNlZCB0byBjb21w ZW5zYXRlIHNvIHRoZSBkaWZmIGlzCisgKiBjbGVhbmVyLgorICovCitzdGF0aWMgaW5saW5lIHRh cmdldF91bG9uZyBoYWNrX3N0YWNrX3B0cnMoQ1BVSGV4YWdvblN0YXRlICplbnYsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGFkZHIpCit7 CisgICAgc3RhdGljIGJvb2wgZmlyc3QgPSB0cnVlOworICAgIGlmIChmaXJzdCkgeworICAgICAg ICBmaXJzdCA9IGZhbHNlOworICAgICAgICBlbnYtPnN0YWNrX3N0YXJ0ID0gZW52LT5ncHJbSEVY X1JFR19TUF07CisgICAgICAgIGVudi0+Z3ByW0hFWF9SRUdfVVNSXSA9IDB4NTYwMDA7CisKKyNk ZWZpbmUgQURKVVNUX1NUQUNLIDAKKyNpZiBBREpVU1RfU1RBQ0sKKyAgICAgICAgLyoKKyAgICAg ICAgICogQ2hhbmdlIHRoZSB0d28gbnVtYmVycyBiZWxvdyB0bworICAgICAgICAgKiAgICAgMSAg ICBxZW11IHN0YWNrIGxvY2F0aW9uCisgICAgICAgICAqICAgICAyICAgIGhhcmR3YXJlIHN0YWNr IGxvY2F0aW9uCisgICAgICAgICAqIE9yIHNldCB0byB6ZXJvIGZvciBub3JtYWwgbW9kZSAobm8g c3RhY2sgYWRqdXN0bWVudCkKKyAgICAgICAgICovCisgICAgICAgIGVudi0+c3RhY2tfYWRqdXN0 ID0gMHhmZmZlZWI4MCAtIDB4YmY4OWY5ODA7CisjZWxzZQorICAgICAgICBlbnYtPnN0YWNrX2Fk anVzdCA9IDA7CisjZW5kaWYKKyAgICB9CisKKyAgICB0YXJnZXRfdWxvbmcgc3RhY2tfc3RhcnQg PSBlbnYtPnN0YWNrX3N0YXJ0OworICAgIHRhcmdldF91bG9uZyBzdGFja19zaXplID0gMHgxMDAw MDsKKyAgICB0YXJnZXRfdWxvbmcgc3RhY2tfYWRqdXN0ID0gZW52LT5zdGFja19hZGp1c3Q7CisK KyAgICBpZiAoc3RhY2tfc3RhcnQgKyAweDEwMDAgPj0gYWRkciAmJiBhZGRyID49IChzdGFja19z dGFydCAtIHN0YWNrX3NpemUpKSB7CisgICAgICAgIHJldHVybiBhZGRyIC0gc3RhY2tfYWRqdXN0 OworICAgIH0KKyAgICByZXR1cm4gYWRkcjsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfcmVnKEZJ TEUgKmYsIENQVUhleGFnb25TdGF0ZSAqZW52LCBpbnQgcmVnbnVtKQoreworICAgIGZwcmludGYo ZiwgIiAgJXMgPSAweCIgVEFSR0VUX0ZNVF9seCAiXG4iLAorICAgICAgICBoZXhhZ29uX3JlZ25h bWVzW3JlZ251bV0sCisgICAgICAgIHJlZ251bSA8IDMyID8gaGFja19zdGFja19wdHJzKGVudiwg ZW52LT5ncHJbcmVnbnVtXSkKKyAgICAgICAgICAgICAgICAgICAgOiBlbnYtPmdwcltyZWdudW1d KTsKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9kdW1wKENQVUhleGFnb25TdGF0ZSAqZW52LCBG SUxFICpmKQoreworICAgIHN0YXRpYyB0YXJnZXRfdWxvbmcgbGFzdF9wYzsKKyAgICBpbnQgaTsK KworICAgIC8qCisgICAgICogV2hlbiBjb21wYXJpbmcgd2l0aCBMTERCLCBpdCBkb2Vzbid0IHN0 ZXAgdGhyb3VnaCBzaW5nbGUtY3ljbGUKKyAgICAgKiBoYXJkd2FyZSBsb29wcyB0aGUgc2FtZSB3 YXkuICBTbywgd2UganVzdCBza2lwIHRoZW0gaGVyZQorICAgICAqLworICAgIGlmIChlbnYtPmdw cltIRVhfUkVHX1BDXSA9PSBsYXN0X3BjKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg bGFzdF9wYyA9IGVudi0+Z3ByW0hFWF9SRUdfUENdOworICAgIGZwcmludGYoZiwgIkdlbmVyYWwg UHVycG9zZSBSZWdpc3RlcnMgPSB7XG4iKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykg eworICAgICAgICBwcmludF9yZWcoZiwgZW52LCBpKTsKKyAgICB9CisgICAgcHJpbnRfcmVnKGYs IGVudiwgSEVYX1JFR19TQTApOworICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfTEMwKTsK KyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX1NBMSk7CisgICAgcHJpbnRfcmVnKGYsIGVu diwgSEVYX1JFR19MQzEpOworICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfTTApOworICAg IHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfTTEpOworICAgIHByaW50X3JlZyhmLCBlbnYsIEhF WF9SRUdfVVNSKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX1AzXzApOworICAgIHBy aW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfR1ApOworICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9S RUdfVUdQKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX1BDKTsKKyNpZmRlZiBDT05G SUdfVVNFUl9PTkxZCisgICAgLyoKKyAgICAgKiBOb3QgbW9kZWxsZWQgaW4gdXNlciBtb2RlLCBw cmludCBqdW5rIHRvIG1pbmltaXplIHRoZSBkaWZmJ3MKKyAgICAgKiB3aXRoIExMREIgb3V0cHV0 CisgICAgICovCisgICAgZnByaW50ZihmLCAiICBjYXVzZSA9IDB4MDAwMDAwZGJcbiIpOworICAg IGZwcmludGYoZiwgIiAgYmFkdmEgPSAweDAwMDAwMDAwXG4iKTsKKyAgICBmcHJpbnRmKGYsICIg IGNzMCA9IDB4MDAwMDAwMDBcbiIpOworICAgIGZwcmludGYoZiwgIiAgY3MxID0gMHgwMDAwMDAw MFxuIik7CisjZWxzZQorICAgIHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfQ0FVU0UpOworICAg IHByaW50X3JlZyhmLCBlbnYsIEhFWF9SRUdfQkFEVkEpOworICAgIHByaW50X3JlZyhmLCBlbnYs IEhFWF9SRUdfQ1MwKTsKKyAgICBwcmludF9yZWcoZiwgZW52LCBIRVhfUkVHX0NTMSk7CisjZW5k aWYKKyAgICBmcHJpbnRmKGYsICJ9XG4iKTsKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9kdW1w X3N0YXRlKENQVVN0YXRlICpjcywgRklMRSAqZiwgaW50IGZsYWdzKQoreworICAgIEhleGFnb25D UFUgKmNwdSA9IEhFWEFHT05fQ1BVKGNzKTsKKyAgICBDUFVIZXhhZ29uU3RhdGUgKmVudiA9ICZj cHUtPmVudjsKKworICAgIGhleGFnb25fZHVtcChlbnYsIGYpOworfQorCit2b2lkIGhleGFnb25f ZGVidWcoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAgaGV4YWdvbl9kdW1wKGVudiwgc3Rk b3V0KTsKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9jcHVfc2V0X3BjKENQVVN0YXRlICpjcywg dmFkZHIgdmFsdWUpCit7CisgICAgSGV4YWdvbkNQVSAqY3B1ID0gSEVYQUdPTl9DUFUoY3MpOwor ICAgIENQVUhleGFnb25TdGF0ZSAqZW52ID0gJmNwdS0+ZW52OworICAgIGVudi0+Z3ByW0hFWF9S RUdfUENdID0gdmFsdWU7Cit9CisKK3N0YXRpYyB2b2lkIGhleGFnb25fY3B1X3N5bmNocm9uaXpl X2Zyb21fdGIoQ1BVU3RhdGUgKmNzLCBUcmFuc2xhdGlvbkJsb2NrICp0YikKK3sKKyAgICBIZXhh Z29uQ1BVICpjcHUgPSBIRVhBR09OX0NQVShjcyk7CisgICAgQ1BVSGV4YWdvblN0YXRlICplbnYg PSAmY3B1LT5lbnY7CisgICAgZW52LT5ncHJbSEVYX1JFR19QQ10gPSB0Yi0+cGM7Cit9CisKK3N0 YXRpYyBib29sIGhleGFnb25fY3B1X2hhc193b3JrKENQVVN0YXRlICpjcykKK3sKKyAgICByZXR1 cm4gdHJ1ZTsKK30KKwordm9pZCByZXN0b3JlX3N0YXRlX3RvX29wYyhDUFVIZXhhZ29uU3RhdGUg KmVudiwgVHJhbnNsYXRpb25CbG9jayAqdGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRh cmdldF91bG9uZyAqZGF0YSkKK3sKKyAgICBlbnYtPmdwcltIRVhfUkVHX1BDXSA9IGRhdGFbMF07 Cit9CisKK3N0YXRpYyB2b2lkIGhleGFnb25fY3B1X3Jlc2V0KENQVVN0YXRlICpjcykKK3sKKyAg ICBIZXhhZ29uQ1BVICpjcHUgPSBIRVhBR09OX0NQVShjcyk7CisgICAgSGV4YWdvbkNQVUNsYXNz ICptY2MgPSBIRVhBR09OX0NQVV9HRVRfQ0xBU1MoY3B1KTsKKworICAgIG1jYy0+cGFyZW50X3Jl c2V0KGNzKTsKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9jcHVfZGlzYXNfc2V0X2luZm8oQ1BV U3RhdGUgKnMsIGRpc2Fzc2VtYmxlX2luZm8gKmluZm8pCit7CisgICAgaW5mby0+cHJpbnRfaW5z biA9IHByaW50X2luc25faGV4YWdvbjsKK30KKworc3RhdGljIHZvaWQgaGV4YWdvbl9jcHVfcmVh bGl6ZShEZXZpY2VTdGF0ZSAqZGV2LCBFcnJvciAqKmVycnApCit7CisgICAgQ1BVU3RhdGUgKmNz ID0gQ1BVKGRldik7CisgICAgSGV4YWdvbkNQVUNsYXNzICptY2MgPSBIRVhBR09OX0NQVV9HRVRf Q0xBU1MoZGV2KTsKKyAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsKKworICAgIGNwdV9leGVj X3JlYWxpemVmbihjcywgJmxvY2FsX2Vycik7CisgICAgaWYgKGxvY2FsX2VyciAhPSBOVUxMKSB7 CisgICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBsb2NhbF9lcnIpOworICAgICAgICByZXR1 cm47CisgICAgfQorCisgICAgcWVtdV9pbml0X3ZjcHUoY3MpOworICAgIGNwdV9yZXNldChjcyk7 CisKKyAgICBtY2MtPnBhcmVudF9yZWFsaXplKGRldiwgZXJycCk7Cit9CisKK3N0YXRpYyB2b2lk IGhleGFnb25fY3B1X2luaXQoT2JqZWN0ICpvYmopCit7CisgICAgSGV4YWdvbkNQVSAqY3B1ID0g SEVYQUdPTl9DUFUob2JqKTsKKworICAgIGNwdV9zZXRfY3B1c3RhdGVfcG9pbnRlcnMoY3B1KTsK K30KKworc3RhdGljIGJvb2wgaGV4YWdvbl90bGJfZmlsbChDUFVTdGF0ZSAqY3MsIHZhZGRyIGFk ZHJlc3MsIGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNTVVBY2Nlc3NU eXBlIGFjY2Vzc190eXBlLCBpbnQgbW11X2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbCBwcm9iZSwgdWludHB0cl90IHJldGFkZHIpCit7CisjaWZkZWYgQ09ORklHX1VTRVJf T05MWQorICAgIHN3aXRjaCAoYWNjZXNzX3R5cGUpIHsKKyAgICBjYXNlIE1NVV9JTlNUX0ZFVENI OgorICAgICAgICBjcy0+ZXhjZXB0aW9uX2luZGV4ID0gSEVYX0VYQ1BfRkVUQ0hfTk9fVVBBR0U7 CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTU1VX0RBVEFfTE9BRDoKKyAgICAgICAgY3MtPmV4 Y2VwdGlvbl9pbmRleCA9IEhFWF9FWENQX1BSSVZfTk9fVVJFQUQ7CisgICAgICAgIGJyZWFrOwor ICAgIGNhc2UgTU1VX0RBVEFfU1RPUkU6CisgICAgICAgIGNzLT5leGNlcHRpb25faW5kZXggPSBI RVhfRVhDUF9QUklWX05PX1VXUklURTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNwdV9s b29wX2V4aXRfcmVzdG9yZShjcywgcmV0YWRkcik7CisjZWxzZQorI2Vycm9yIFN5c3RlbSBtb2Rl IG5vdCBpbXBsZW1lbnRlZCBmb3IgSGV4YWdvbgorI2VuZGlmCit9CisKK3N0YXRpYyBjb25zdCBW TVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV9oZXhhZ29uX2NwdSA9IHsKKyAgICAubmFtZSA9ICJj cHUiLAorICAgIC51bm1pZ3JhdGFibGUgPSAxLAorfTsKKworc3RhdGljIHZvaWQgaGV4YWdvbl9j cHVfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqYywgdm9pZCAqZGF0YSkKK3sKKyAgICBIZXhhZ29u Q1BVQ2xhc3MgKm1jYyA9IEhFWEFHT05fQ1BVX0NMQVNTKGMpOworICAgIENQVUNsYXNzICpjYyA9 IENQVV9DTEFTUyhjKTsKKyAgICBEZXZpY2VDbGFzcyAqZGMgPSBERVZJQ0VfQ0xBU1MoYyk7CisK KyAgICBtY2MtPnBhcmVudF9yZWFsaXplID0gZGMtPnJlYWxpemU7CisgICAgZGMtPnJlYWxpemUg PSBoZXhhZ29uX2NwdV9yZWFsaXplOworCisgICAgbWNjLT5wYXJlbnRfcmVzZXQgPSBjYy0+cmVz ZXQ7CisgICAgY2MtPnJlc2V0ID0gaGV4YWdvbl9jcHVfcmVzZXQ7CisKKyAgICBjYy0+Y2xhc3Nf YnlfbmFtZSA9IGhleGFnb25fY3B1X2NsYXNzX2J5X25hbWU7CisgICAgY2MtPmhhc193b3JrID0g aGV4YWdvbl9jcHVfaGFzX3dvcms7CisgICAgY2MtPmR1bXBfc3RhdGUgPSBoZXhhZ29uX2R1bXBf c3RhdGU7CisgICAgY2MtPnNldF9wYyA9IGhleGFnb25fY3B1X3NldF9wYzsKKyAgICBjYy0+c3lu Y2hyb25pemVfZnJvbV90YiA9IGhleGFnb25fY3B1X3N5bmNocm9uaXplX2Zyb21fdGI7CisgICAg Y2MtPmdkYl9udW1fY29yZV9yZWdzID0gVE9UQUxfUEVSX1RIUkVBRF9SRUdTOworICAgIGNjLT5n ZGJfc3RvcF9iZWZvcmVfd2F0Y2hwb2ludCA9IHRydWU7CisgICAgY2MtPmRpc2FzX3NldF9pbmZv ID0gaGV4YWdvbl9jcHVfZGlzYXNfc2V0X2luZm87CisjaWZkZWYgQ09ORklHX1RDRworICAgIGNj LT50Y2dfaW5pdGlhbGl6ZSA9IGhleGFnb25fdHJhbnNsYXRlX2luaXQ7CisgICAgY2MtPnRsYl9m aWxsID0gaGV4YWdvbl90bGJfZmlsbDsKKyNlbmRpZgorICAgIC8qIEZvciBub3csIG1hcmsgdW5t aWdyYXRhYmxlOiAqLworICAgIGNjLT52bXNkID0gJnZtc3RhdGVfaGV4YWdvbl9jcHU7Cit9CisK KyNkZWZpbmUgREVGSU5FX0NQVSh0eXBlX25hbWUsIGluaXRmbikgICAgICBcCisgICAgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAubmFtZSA9IHR5cGVf bmFtZSwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLnBhcmVudCA9IFRZUEVfSEVYQUdPTl9D UFUsICAgICAgICBcCisgICAgICAgIC5pbnN0YW5jZV9pbml0ID0gaW5pdGZuICAgICAgICAgICAg XAorICAgIH0KKworc3RhdGljIGNvbnN0IFR5cGVJbmZvIGhleGFnb25fY3B1X3R5cGVfaW5mb3Nb XSA9IHsKKyAgICB7CisgICAgICAgIC5uYW1lID0gVFlQRV9IRVhBR09OX0NQVSwKKyAgICAgICAg LnBhcmVudCA9IFRZUEVfQ1BVLAorICAgICAgICAuaW5zdGFuY2Vfc2l6ZSA9IHNpemVvZihIZXhh Z29uQ1BVKSwKKyAgICAgICAgLmluc3RhbmNlX2luaXQgPSBoZXhhZ29uX2NwdV9pbml0LAorICAg ICAgICAuYWJzdHJhY3QgPSB0cnVlLAorICAgICAgICAuY2xhc3Nfc2l6ZSA9IHNpemVvZihIZXhh Z29uQ1BVQ2xhc3MpLAorICAgICAgICAuY2xhc3NfaW5pdCA9IGhleGFnb25fY3B1X2NsYXNzX2lu aXQsCisgICAgfSwKKyAgICBERUZJTkVfQ1BVKFRZUEVfSEVYQUdPTl9DUFVfVjY3LCAgICAgICAg ICAgICAgaGV4YWdvbl92NjdfY3B1X2luaXQpLAorfTsKKworREVGSU5FX1RZUEVTKGhleGFnb25f Y3B1X3R5cGVfaW5mb3MpCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9jcHUuaCBiL3Rhcmdl dC9oZXhhZ29uL2NwdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiM2Zj ZDUKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9jcHUuaApAQCAtMCwwICsxLDE2 NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTkgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50 ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgSEVYQUdPTl9DUFVfSAorI2RlZmluZSBI RVhBR09OX0NQVV9ICisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gbmVlZGVkIGJ5IHNvbWUgb2Yg dGhlIGhlYWRlciBmaWxlcyAqLwordHlwZWRlZiBzdHJ1Y3QgQ1BVSGV4YWdvblN0YXRlIENQVUhl eGFnb25TdGF0ZTsKKworI2luY2x1ZGUgPGZlbnYuaD4KKworI2RlZmluZSBUQVJHRVRfUEFHRV9C SVRTIDE2ICAgICAvKiA2NEsgcGFnZXMgKi8KKyNkZWZpbmUgVEFSR0VUX0xPTkdfQklUUyAzMgor CisjaW5jbHVkZSAicWVtdS9jb21waWxlci5oIgorI2luY2x1ZGUgInFlbXUtY29tbW9uLmgiCisj aW5jbHVkZSAiZXhlYy9jcHUtZGVmcy5oIgorI2luY2x1ZGUgImhleF9yZWdzLmgiCisKKyNkZWZp bmUgTlVNX1BSRUdTIDQKKyNpZmRlZiBDT05GSUdfVVNFUl9PTkxZCisjZGVmaW5lIFRPVEFMX1BF Ul9USFJFQURfUkVHUyA2NAorI2Vsc2UKKyNlcnJvciBTeXN0ZW0gbW9kZSBub3QgaW1wbGVtZW50 ZWQKKyNlbmRpZgorCisjZGVmaW5lIFNMT1RTX01BWCA0CisjZGVmaW5lIFNUT1JFU19NQVggMgor I2RlZmluZSBSRUdfV1JJVEVTX01BWCAzMgorI2RlZmluZSBQUkVEX1dSSVRFU19NQVggNSAgICAg ICAgICAgICAgICAgICAvKiA0IGluc25zICsgZW5kbG9vcCAqLworCisjZGVmaW5lIFRZUEVfSEVY QUdPTl9DUFUgImhleGFnb24tY3B1IgorCisjZGVmaW5lIEhFWEFHT05fQ1BVX1RZUEVfU1VGRklY ICItIiBUWVBFX0hFWEFHT05fQ1BVCisjZGVmaW5lIEhFWEFHT05fQ1BVX1RZUEVfTkFNRShuYW1l KSAobmFtZSBIRVhBR09OX0NQVV9UWVBFX1NVRkZJWCkKKyNkZWZpbmUgQ1BVX1JFU09MVklOR19U WVBFIFRZUEVfSEVYQUdPTl9DUFUKKworI2RlZmluZSBUWVBFX0hFWEFHT05fQ1BVX1Y2NyBIRVhB R09OX0NQVV9UWVBFX05BTUUoInY2NyIpCisKKyNkZWZpbmUgTU1VX1VTRVJfSURYIDAKKworc3Ry dWN0IE1lbUxvZyB7CisgICAgdGFyZ2V0X3Vsb25nIHZhOworICAgIHVpbnQ4X3Qgd2lkdGg7Cisg ICAgdWludDMyX3QgZGF0YTMyOworICAgIHVpbnQ2NF90IGRhdGE2NDsKK307CisKKyNkZWZpbmUg RVhFQ19TVEFUVVNfT0sgICAgICAgICAgMHgwMDAwCisjZGVmaW5lIEVYRUNfU1RBVFVTX1NUT1Ag ICAgICAgIDB4MDAwMgorI2RlZmluZSBFWEVDX1NUQVRVU19SRVBMQVkgICAgICAweDAwMTAKKyNk ZWZpbmUgRVhFQ19TVEFUVVNfTE9DS0VEICAgICAgMHgwMDIwCisjZGVmaW5lIEVYRUNfU1RBVFVT X0VYQ0VQVElPTiAgIDB4MDEwMAorCisKKyNkZWZpbmUgRVhDRVBUSU9OX0RFVEVDVEVEICAgICAg KGVudi0+c3RhdHVzICYgRVhFQ19TVEFUVVNfRVhDRVBUSU9OKQorI2RlZmluZSBSRVBMQVlfREVU RUNURUQgICAgICAgICAoZW52LT5zdGF0dXMgJiBFWEVDX1NUQVRVU19SRVBMQVkpCisjZGVmaW5l IENMRUFSX0VYQ0VQVElPTiAgICAgICAgIChlbnYtPnN0YXR1cyAmPSAofkVYRUNfU1RBVFVTX0VY Q0VQVElPTikpCisjZGVmaW5lIFNFVF9FWENFUFRJT04gICAgICAgICAgIChlbnYtPnN0YXR1cyB8 PSBFWEVDX1NUQVRVU19FWENFUFRJT04pCisKK3N0cnVjdCBDUFVIZXhhZ29uU3RhdGUgeworICAg IHRhcmdldF91bG9uZyBncHJbVE9UQUxfUEVSX1RIUkVBRF9SRUdTXTsKKyAgICB0YXJnZXRfdWxv bmcgcHJlZFtOVU1fUFJFR1NdOworICAgIHRhcmdldF91bG9uZyBicmFuY2hfdGFrZW47CisgICAg dGFyZ2V0X3Vsb25nIHRoaXNfUEM7CisgICAgdGFyZ2V0X3Vsb25nIG5leHRfUEM7CisKKyAgICAv KiBGb3IgY29tcGFyaW5nIHdpdGggTExEQiBvbiB0YXJnZXQgLSBzZWUgaGFja19zdGFja19wdHJz IGZ1bmN0aW9uICovCisgICAgdGFyZ2V0X3Vsb25nIHN0YWNrX3N0YXJ0OworICAgIHRhcmdldF91 bG9uZyBzdGFja19hZGp1c3Q7CisKKyAgICB1aW50OF90IHNsb3RfY2FuY2VsbGVkOworICAgIHRh cmdldF91bG9uZyBuZXdfdmFsdWVbVE9UQUxfUEVSX1RIUkVBRF9SRUdTXTsKKworICAgIC8qCisg ICAgICogT25seSB1c2VkIHdoZW4gSEVYX0RFQlVHIGlzIG9uLCBidXQgdW5jb25kaXRpb25hbGx5 IGluY2x1ZGVkCisgICAgICogdG8gcmVkdWNlIHJlY29tcGlsZSB0aW1lIHdoZW4gdHVybmluZyBI RVhfREVCVUcgb24vb2ZmLgorICAgICAqLworICAgIHRhcmdldF91bG9uZyByZWdfd3JpdHRlbltU T1RBTF9QRVJfVEhSRUFEX1JFR1NdOworCisgICAgdGFyZ2V0X3Vsb25nIG5ld19wcmVkX3ZhbHVl W05VTV9QUkVHU107CisgICAgdGFyZ2V0X3Vsb25nIHByZWRfd3JpdHRlbltOVU1fUFJFR1NdOwor CisgICAgc3RydWN0IE1lbUxvZyBtZW1fbG9nX3N0b3Jlc1tTVE9SRVNfTUFYXTsKKworICAgIHRh cmdldF91bG9uZyBkY3plcm9fYWRkcjsKKworICAgIGZlbnZfdCBmZW52OworCisgICAgdGFyZ2V0 X3Vsb25nIGxsc2NfYWRkcjsKKyAgICB0YXJnZXRfdWxvbmcgbGxzY192YWw7CisgICAgdWludDY0 X3QgICAgIGxsc2NfdmFsX2k2NDsKKyAgICB0YXJnZXRfdWxvbmcgbGxzY19uZXd2YWw7CisgICAg dWludDY0X3QgICAgIGxsc2NfbmV3dmFsX2k2NDsKKyAgICB0YXJnZXRfdWxvbmcgbGxzY19yZWc7 CisKKyAgICB0YXJnZXRfdWxvbmcgaXNfZ2F0aGVyX3N0b3JlX2luc247CisgICAgdGFyZ2V0X3Vs b25nIGdhdGhlcl9pc3N1ZWQ7Cit9OworCisjZGVmaW5lIEhFWEFHT05fQ1BVX0NMQVNTKGtsYXNz KSBcCisgICAgT0JKRUNUX0NMQVNTX0NIRUNLKEhleGFnb25DUFVDbGFzcywgKGtsYXNzKSwgVFlQ RV9IRVhBR09OX0NQVSkKKyNkZWZpbmUgSEVYQUdPTl9DUFUob2JqKSBcCisgICAgT0JKRUNUX0NI RUNLKEhleGFnb25DUFUsIChvYmopLCBUWVBFX0hFWEFHT05fQ1BVKQorI2RlZmluZSBIRVhBR09O X0NQVV9HRVRfQ0xBU1Mob2JqKSBcCisgICAgT0JKRUNUX0dFVF9DTEFTUyhIZXhhZ29uQ1BVQ2xh c3MsIChvYmopLCBUWVBFX0hFWEFHT05fQ1BVKQorCit0eXBlZGVmIHN0cnVjdCBIZXhhZ29uQ1BV Q2xhc3MgeworICAgIC8qPCBwcml2YXRlID4qLworICAgIENQVUNsYXNzIHBhcmVudF9jbGFzczsK KyAgICAvKjwgcHVibGljID4qLworICAgIERldmljZVJlYWxpemUgcGFyZW50X3JlYWxpemU7Cisg ICAgdm9pZCAoKnBhcmVudF9yZXNldCkoQ1BVU3RhdGUgKmNwdSk7Cit9IEhleGFnb25DUFVDbGFz czsKKwordHlwZWRlZiBzdHJ1Y3QgSGV4YWdvbkNQVSB7CisgICAgLyo8IHByaXZhdGUgPiovCisg ICAgQ1BVU3RhdGUgcGFyZW50X29iajsKKyAgICAvKjwgcHVibGljID4qLworICAgIENQVU5lZ2F0 aXZlT2Zmc2V0U3RhdGUgbmVnOworICAgIENQVUhleGFnb25TdGF0ZSBlbnY7Cit9IEhleGFnb25D UFU7CisKK3N0YXRpYyBpbmxpbmUgSGV4YWdvbkNQVSAqaGV4YWdvbl9lbnZfZ2V0X2NwdShDUFVI ZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICByZXR1cm4gY29udGFpbmVyX29mKGVudiwgSGV4YWdv bkNQVSwgZW52KTsKK30KKworI2luY2x1ZGUgImNwdV9iaXRzLmgiCisKKyNkZWZpbmUgY3B1X3Np Z25hbF9oYW5kbGVyIGNwdV9oZXhhZ29uX3NpZ25hbF9oYW5kbGVyCitleHRlcm4gaW50IGNwdV9o ZXhhZ29uX3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sIHZvaWQg KnB1Yyk7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcHVfZ2V0X3RiX2NwdV9zdGF0ZShDUFVIZXhh Z29uU3RhdGUgKmVudiwgdGFyZ2V0X3Vsb25nICpwYywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgKmNzX2Jhc2UsIHVpbnQzMl90ICpmbGFncykK K3sKKyAgICAqcGMgPSBlbnYtPmdwcltIRVhfUkVHX1BDXTsKKyAgICAqY3NfYmFzZSA9IDA7Cisj aWZkZWYgQ09ORklHX1VTRVJfT05MWQorICAgICpmbGFncyA9IDA7CisjZWxzZQorI2Vycm9yIFN5 c3RlbSBtb2RlIG5vdCBzdXBwb3J0ZWQgb24gSGV4YWdvbiB5ZXQKKyNlbmRpZgorfQorCit0eXBl ZGVmIHN0cnVjdCBDUFVIZXhhZ29uU3RhdGUgQ1BVQXJjaFN0YXRlOwordHlwZWRlZiBIZXhhZ29u Q1BVIEFyY2hDUFU7CisKKyNpbmNsdWRlICJleGVjL2NwdS1hbGwuaCIKKworI2VuZGlmIC8qIEhF WEFHT05fQ1BVX0ggKi8KZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2NwdV9iaXRzLmggYi90 YXJnZXQvaGV4YWdvbi9jcHVfYml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmY4ODFjZDgKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9jcHVfYml0cy5o CkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE5IFF1YWxjb21tIElu bm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVmIEhFWEFHT05fQ1BV X0JJVFNfSAorI2RlZmluZSBIRVhBR09OX0NQVV9CSVRTX0gKKworI2RlZmluZSBIRVhfRVhDUF9G RVRDSF9OT19VUEFHRSAgMHgwMTIKKyNkZWZpbmUgSEVYX0VYQ1BfSU5WQUxJRF9QQUNLRVQgIDB4 MDE1CisjZGVmaW5lIEhFWF9FWENQX0lOVkFMSURfT1BDT0RFICAweDAxNQorI2RlZmluZSBIRVhf RVhDUF9QUklWX05PX1VSRUFEICAgMHgwMjQKKyNkZWZpbmUgSEVYX0VYQ1BfUFJJVl9OT19VV1JJ VEUgIDB4MDI1CisKKyNkZWZpbmUgSEVYX0VYQ1BfVFJBUDAgICAgICAgICAgIDB4MTcyCisjZGVm aW5lIEhFWF9FWENQX1RSQVAxICAgICAgICAgICAweDE3MworI2RlZmluZSBIRVhfRVhDUF9TQzQg ICAgICAgICAgICAgMHgxMDAKKyNkZWZpbmUgSEVYX0VYQ1BfU0M4ICAgICAgICAgICAgIDB4MjAw CisKKyNkZWZpbmUgUEFDS0VUX1dPUkRTX01BWCAgICAgICAgIDQKKworZXh0ZXJuIGludCBkaXNh c3NlbWJsZV9oZXhhZ29uKHVpbnQzMl90ICp3b3JkcywgaW50IG53b3JkcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIGludCBidWZzaXplKTsKKworI2VuZGlmCmRp ZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbnRlcm5hbC5oIGIvdGFyZ2V0L2hleGFnb24vaW50 ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmZiMzcyCi0tLSAv ZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW50ZXJuYWwuaApAQCAtMCwwICsxLDUyIEBA CisvKgorICogIENvcHlyaWdodCAoYykgMjAxOSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwg SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBIRVhBR09OX0lOVEVSTkFMX0gKKyNkZWZpbmUg SEVYQUdPTl9JTlRFUk5BTF9ICisKKy8qCisgKiBDaGFuZ2UgSEVYX0RFQlVHIHRvIDEgdG8gdHVy biBvbiBkZWJ1Z2dpbmcgb3V0cHV0CisgKi8KKyNkZWZpbmUgSEVYX0RFQlVHIDAKKyNkZWZpbmUg SEVYX0RFQlVHX0xPRyguLi4pIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaWYgKEhFWF9ERUJVRykg eyBcCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgX19WQV9BUkdTX18pOyBcCisgICAgICAg IH0gXAorICAgIH0gd2hpbGUgKDApCisKKy8qCisgKiBDaGFuZ2UgQ09VTlRfSEVYX0hFTFBFUlMg dG8gMSB0byBjb3VudCBob3cgbWFueSB0aW1lcyBlYWNoIGhlbHBlcgorICogaXMgY2FsbGVkLiAg VGhpcyBpcyB1c2VmdWwgdG8gZmlndXJlIG91dCB3aGljaCBoZWxwZXJzIHdvdWxkIGJlbmVmaXQK KyAqIGZyb20gd3JpdGluZyBhbiBmV1JBUCBtYWNyby4KKyAqLworI2RlZmluZSBDT1VOVF9IRVhf SEVMUEVSUyAwCisKK2V4dGVybiBpbnQgaGV4YWdvbl9nZGJfcmVhZF9yZWdpc3RlcihDUFVTdGF0 ZSAqY3B1LCB1aW50OF90ICpidWYsIGludCByZWcpOworZXh0ZXJuIGludCBoZXhhZ29uX2dkYl93 cml0ZV9yZWdpc3RlcihDUFVTdGF0ZSAqY3B1LCB1aW50OF90ICpidWYsIGludCByZWcpOworCitl eHRlcm4gdm9pZCBoZXhhZ29uX2RlYnVnKENQVUhleGFnb25TdGF0ZSAqZW52KTsKKworI2lmIENP VU5UX0hFWF9IRUxQRVJTCitleHRlcm4gdm9pZCBwcmludF9oZWxwZXJfY291bnRzKHZvaWQpOwor I2VuZGlmCisKK2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgaGV4YWdvbl9yZWduYW1lc1tUT1RB TF9QRVJfVEhSRUFEX1JFR1NdOworCitleHRlcm4gdm9pZCBpbml0X2dlbnB0cih2b2lkKTsKKwor I2VuZGlmCi0tIAoyLjcuNAoK