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 F2312C352A4 for ; Tue, 11 Feb 2020 01:06:16 +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 B1AEC20661 for ; Tue, 11 Feb 2020 01:06:16 +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="dYfZ49Wv" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B1AEC20661 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]:41894 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1K0F-0006yc-Ru for qemu-devel@archiver.kernel.org; Mon, 10 Feb 2020 20:06:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34595) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1Jd0-0002pe-NT for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j1Jcy-0003pC-A2 for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:14 -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 1j1Jcx-0004rG-Sn for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1581381731; x=1612917731; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eX+zNFSUnRQzWMkGsJ1IgZLO2OVN4XDMS3WNIjM6QR4=; b=dYfZ49WvKIn2pIe+XdN5Ilta9xh60KCwaJr8mAMDLUES93jw59bne8y5 eNgr3ghUMZlfuoicTLxPfuEDgZTybTm8kYREtmo38Qyxj5kBW5jXfbpry C43ouQvumB0DWvldKG4467sAq/QOw5dymQB8GSle/NZN7FJIv7q/K9pvv Y=; 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:41:04 -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:41:04 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id DD5FD1B27; Mon, 10 Feb 2020 18:41:03 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH 65/66] Hexagon HVX translation Date: Mon, 10 Feb 2020 18:40:43 -0600 Message-Id: <1581381644-13678-66-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" Q2hhbmdlcyB0byBwYWNrZXQgc2VtYW50aWNzIHRvIHN1cHBvcnQgSFZYCgpTaWduZWQtb2ZmLWJ5 OiBUYXlsb3IgU2ltcHNvbiA8dHNpbXBzb25AcXVpY2luYy5jb20+Ci0tLQogdGFyZ2V0L2hleGFn b24vdHJhbnNsYXRlLmMgfCAxNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiB0YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuaCB8ICAzMCArKysrKysrKwogMiBm aWxlcyBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhh Z29uL3RyYW5zbGF0ZS5jIGIvdGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmMKaW5kZXggMmZlNGRj Yi4uZWViZTliNCAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmMKKysrIGIv dGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmMKQEAgLTUxLDYgKzUxLDEwIEBAIFRDR3YgbGxzY192 YWw7CiBUQ0d2X2k2NCBsbHNjX3ZhbF9pNjQ7CiBUQ0d2IGhleF9pc19nYXRoZXJfc3RvcmVfaW5z bjsKIFRDR3YgaGV4X2dhdGhlcl9pc3N1ZWQ7CitUQ0d2IGhleF9WUmVnc191cGRhdGVkX3RtcDsK K1RDR3YgaGV4X1ZSZWdzX3VwZGF0ZWQ7CitUQ0d2IGhleF9WUmVnc19zZWxlY3Q7CitUQ0d2IGhl eF9RUmVnc191cGRhdGVkOwogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGhleGFnb25fcHJl ZG5hbWVzW10gPSB7CiAgICJwMCIsICJwMSIsICJwMiIsICJwMyIKQEAgLTEzNiw2ICsxNDAsMTAg QEAgc3RhdGljIHZvaWQgZ2VuX3N0YXJ0X3BhY2tldChEaXNhc0NvbnRleHQgKmN0eCwgcGFja2V0 X3QgKnBrdCkKICAgICAvKiBDbGVhciBvdXQgdGhlIGRpc2Fzc2VtYmx5IGNvbnRleHQgKi8KICAg ICBjdHgtPmN0eF9yZWdfbG9nX2lkeCA9IDA7CiAgICAgY3R4LT5jdHhfcHJlZ19sb2dfaWR4ID0g MDsKKyAgICBjdHgtPmN0eF90ZW1wX3ZyZWdzX2lkeCA9IDA7CisgICAgY3R4LT5jdHhfdGVtcF9x cmVnc19pZHggPSAwOworICAgIGN0eC0+Y3R4X3ZyZWdfbG9nX2lkeCA9IDA7CisgICAgY3R4LT5j dHhfcXJlZ19sb2dfaWR4ID0gMDsKICAgICBmb3IgKGkgPSAwOyBpIDwgU1RPUkVTX01BWDsgaSsr KSB7CiAgICAgICAgIGN0eC0+Y3R4X3N0b3JlX3dpZHRoW2ldID0gMDsKICAgICB9CkBAIC0xNTQs NiArMTYyLDE1IEBAIHN0YXRpYyB2b2lkIGdlbl9zdGFydF9wYWNrZXQoRGlzYXNDb250ZXh0ICpj dHgsIHBhY2tldF90ICpwa3QpCiAgICAgZm9yIChpID0gMDsgaSA8IE5VTV9QUkVHUzsgaSsrKSB7 CiAgICAgICAgIHRjZ19nZW5fbW92aV90bChoZXhfcHJlZF93cml0dGVuW2ldLCAwKTsKICAgICB9 CisKKyAgICBpZiAocGt0LT5wa3RfaGFzX2h2eCkgeworICAgICAgICB0Y2dfZ2VuX21vdmlfdGwo aGV4X1ZSZWdzX3VwZGF0ZWRfdG1wLCAwKTsKKyAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF9W UmVnc191cGRhdGVkLCAwKTsKKyAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF9WUmVnc19zZWxl Y3QsIDApOworICAgICAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4X1FSZWdzX3VwZGF0ZWQsIDApOwor ICAgICAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4X2lzX2dhdGhlcl9zdG9yZV9pbnNuLCAwKTsKKyAg ICAgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF9nYXRoZXJfaXNzdWVkLCAwKTsKKyAgICB9CiB9CiAK IHN0YXRpYyBpbnQgaXNfZ2F0aGVyX3N0b3JlX2luc24oaW5zbl90ICppbnNuKQpAQCAtNDQ1LDEw ICs0NjIsMTQ5IEBAIHN0YXRpYyBib29sIHByb2Nlc3NfY2hhbmdlX29mX2Zsb3coRGlzYXNDb250 ZXh0ICpjdHgsIHBhY2tldF90ICpwa3QpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIGdl bl9tZW1jcHkoVENHdl9wdHIgZGVzdCwgVENHdl9wdHIgc3JjLCBzaXplX3QgbikKK3sKKyAgICBU Q0d2X3B0ciBkID0gdGNnX3RlbXBfbmV3X3B0cigpOworICAgIFRDR3ZfcHRyIHMgPSB0Y2dfdGVt cF9uZXdfcHRyKCk7CisgICAgaW50IGk7CisKKyAgICB0Y2dfZ2VuX2FkZGlfcHRyKGQsIGRlc3Qs IDApOworICAgIHRjZ19nZW5fYWRkaV9wdHIocywgc3JjLCAwKTsKKyAgICBpZiAobiAlIDggPT0g MCkgeworICAgICAgICBUQ0d2X2k2NCB0ZW1wID0gdGNnX3RlbXBfbmV3X2k2NCgpOworICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbiAvIDg7IGkrKykgeworICAgICAgICAgICAgdGNnX2dlbl9sZF9p NjQodGVtcCwgcywgMCk7CisgICAgICAgICAgICB0Y2dfZ2VuX3N0X2k2NCh0ZW1wLCBkLCAwKTsK KyAgICAgICAgICAgIHRjZ19nZW5fYWRkaV9wdHIocywgcywgOCk7CisgICAgICAgICAgICB0Y2df Z2VuX2FkZGlfcHRyKGQsIGQsIDgpOworICAgICAgICB9CisgICAgICAgIHRjZ190ZW1wX2ZyZWVf aTY0KHRlbXApOworICAgIH0gZWxzZSBpZiAobiAlIDQgPT0gMCkgeworICAgICAgICBUQ0d2IHRl bXAgPSB0Y2dfdGVtcF9uZXcoKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG4gLyA0OyBpKysp IHsKKyAgICAgICAgICAgIHRjZ19nZW5fbGQzMnVfdGwodGVtcCwgcywgMCk7CisgICAgICAgICAg ICB0Y2dfZ2VuX3N0MzJfdGwodGVtcCwgZCwgMCk7CisgICAgICAgICAgICB0Y2dfZ2VuX2FkZGlf cHRyKHMsIHMsIDQpOworICAgICAgICAgICAgdGNnX2dlbl9hZGRpX3B0cihkLCBkLCA0KTsKKyAg ICAgICAgfQorICAgICAgICB0Y2dfdGVtcF9mcmVlKHRlbXApOworICAgIH0gZWxzZSBpZiAobiAl IDIgPT0gMCkgeworICAgICAgICBUQ0d2IHRlbXAgPSB0Y2dfdGVtcF9uZXcoKTsKKyAgICAgICAg Zm9yIChpID0gMDsgaSA8IG4gLyAyOyBpKyspIHsKKyAgICAgICAgICAgIHRjZ19nZW5fbGQxNnVf dGwodGVtcCwgcywgMCk7CisgICAgICAgICAgICB0Y2dfZ2VuX3N0MTZfdGwodGVtcCwgZCwgMCk7 CisgICAgICAgICAgICB0Y2dfZ2VuX2FkZGlfcHRyKHMsIHMsIDIpOworICAgICAgICAgICAgdGNn X2dlbl9hZGRpX3B0cihkLCBkLCAyKTsKKyAgICAgICAgfQorICAgICAgICB0Y2dfdGVtcF9mcmVl KHRlbXApOworICAgIH0gZWxzZSB7CisgICAgICAgIFRDR3YgdGVtcCA9IHRjZ190ZW1wX25ldygp OworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICB0Y2dfZ2Vu X2xkOHVfdGwodGVtcCwgcywgMCk7CisgICAgICAgICAgICB0Y2dfZ2VuX3N0OF90bCh0ZW1wLCBk LCAwKTsKKyAgICAgICAgICAgIHRjZ19nZW5fYWRkaV9wdHIocywgcywgMSk7CisgICAgICAgICAg ICB0Y2dfZ2VuX2FkZGlfcHRyKGQsIGQsIDEpOworICAgICAgICB9CisgICAgICAgIHRjZ190ZW1w X2ZyZWUodGVtcCk7CisgICAgfQorCisgICAgdGNnX3RlbXBfZnJlZV9wdHIoZCk7CisgICAgdGNn X3RlbXBfZnJlZV9wdHIocyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fdmVjX2NvcHko aW50cHRyX3QgZHN0b2ZmLCBpbnRwdHJfdCBzcmNvZmYsIHNpemVfdCBzaXplKQoreworICAgIFRD R3ZfcHRyIHNyYyA9IHRjZ190ZW1wX25ld19wdHIoKTsKKyAgICBUQ0d2X3B0ciBkc3QgPSB0Y2df dGVtcF9uZXdfcHRyKCk7CisgICAgdGNnX2dlbl9hZGRpX3B0cihzcmMsIGNwdV9lbnYsIHNyY29m Zik7CisgICAgdGNnX2dlbl9hZGRpX3B0cihkc3QsIGNwdV9lbnYsIGRzdG9mZik7CisgICAgZ2Vu X21lbWNweShkc3QsIHNyYywgc2l6ZSk7CisgICAgdGNnX3RlbXBfZnJlZV9wdHIoc3JjKTsKKyAg ICB0Y2dfdGVtcF9mcmVlX3B0cihkc3QpOworfQorCitzdGF0aWMgdm9pZCBnZW5fY29tbWl0X2h2 eChEaXNhc0NvbnRleHQgKmN0eCkKK3sKKyAgICBpbnQgaTsKKworICAgIC8qCisgICAgICogICAg Zm9yIChpID0gMDsgaSA8IGN0eC0+Y3R4X3ZyZWdfbG9nX2lkeDsgaSsrKSB7CisgICAgICogICAg ICAgIGludCBybnVtID0gY3R4LT5jdHhfdnJlZ19sb2dbaV07CisgICAgICogICAgICAgIGlmIChj dHgtPmN0eF92cmVnX2lzX3ByZWRpY2F0ZWRbaV0pIHsKKyAgICAgKiAgICAgICAgICAgIGlmIChl bnYtPlZSZWdzX3VwZGF0ZWQgJiAoMSA8PCBybnVtKSkgeworICAgICAqICAgICAgICAgICAgICAg IGVudi0+VlJlZ3Nbcm51bV0gPSBlbnYtPmZ1dHVyZV9WUmVnc1tybnVtXTsKKyAgICAgKiAgICAg ICAgICAgIH0KKyAgICAgKiAgICAgICAgfSBlbHNlIHsKKyAgICAgKiAgICAgICAgICAgIGVudi0+ VlJlZ3Nbcm51bV0gPSBlbnYtPmZ1dHVyZV9WUmVnc1tybnVtXTsKKyAgICAgKiAgICAgICAgfQor ICAgICAqICAgIH0KKyAgICAgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgY3R4LT5jdHhfdnJlZ19s b2dfaWR4OyBpKyspIHsKKyAgICAgICAgaW50IHJudW0gPSBjdHgtPmN0eF92cmVnX2xvZ1tpXTsK KyAgICAgICAgaW50IGlzX3ByZWRpY2F0ZWQgPSBjdHgtPmN0eF92cmVnX2lzX3ByZWRpY2F0ZWRb aV07CisgICAgICAgIGludHB0cl90IGRzdG9mZiA9IG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwg VlJlZ3Nbcm51bV0pOworICAgICAgICBpbnRwdHJfdCBzcmNvZmYgPSBvZmZzZXRvZihDUFVIZXhh Z29uU3RhdGUsIGZ1dHVyZV9WUmVnc1tybnVtXSk7CisgICAgICAgIHNpemVfdCBzaXplID0gc2l6 ZW9mKG1tdmVjdG9yX3QpOworCisgICAgICAgIGlmIChpc19wcmVkaWNhdGVkKSB7CisgICAgICAg ICAgICBUQ0d2IGNtcCA9IHRjZ190ZW1wX2xvY2FsX25ldygpOworICAgICAgICAgICAgVENHTGFi ZWwgKmxhYmVsX3NraXAgPSBnZW5fbmV3X2xhYmVsKCk7CisKKyAgICAgICAgICAgIHRjZ19nZW5f YW5kaV90bChjbXAsIGhleF9WUmVnc191cGRhdGVkLCAxIDw8IHJudW0pOworICAgICAgICAgICAg dGNnX2dlbl9icmNvbmRpX3RsKFRDR19DT05EX0VRLCBjbXAsIDAsIGxhYmVsX3NraXApOworICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgIGdlbl92ZWNfY29weShkc3RvZmYsIHNyY29mZiwg c2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnZW5fc2V0X2xhYmVsKGxhYmVsX3Nr aXApOworICAgICAgICAgICAgdGNnX3RlbXBfZnJlZShjbXApOworICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgZ2VuX3ZlY19jb3B5KGRzdG9mZiwgc3Jjb2ZmLCBzaXplKTsKKyAgICAgICAg fQorICAgIH0KKworICAgIC8qCisgICAgICogICAgZm9yIChpID0gMDsgaSA8IGN0eC1fY3R4X3Fy ZWdfbG9nX2lkeDsgaSsrKSB7CisgICAgICogICAgICAgIGludCBybnVtID0gY3R4LT5jdHhfcXJl Z19sb2dbaV07CisgICAgICogICAgICAgIGlmIChjdHgtPmN0eF9xcmVnX2lzX3ByZWRpY2F0ZWRb aV0pIHsKKyAgICAgKiAgICAgICAgICAgIGlmIChlbnYtPlFSZWdzX3VwZGF0ZWQpICYgKDEgPDwg cm51bSkpIHsKKyAgICAgKiAgICAgICAgICAgICAgICBlbnYtPlFSZWdzW3JudW1dID0gZW52LT5m dXR1cmVfUVJlZ3Nbcm51bV07CisgICAgICogICAgICAgICAgICB9CisgICAgICogICAgICAgIH0g ZWxzZSB7CisgICAgICogICAgICAgICAgICBlbnYtPlFSZWdzW3JudW1dID0gZW52LT5mdXR1cmVf UVJlZ3Nbcm51bV07CisgICAgICogICAgICAgIH0KKyAgICAgKiAgICB9CisgICAgICovCisgICAg Zm9yIChpID0gMDsgaSA8IGN0eC0+Y3R4X3FyZWdfbG9nX2lkeDsgaSsrKSB7CisgICAgICAgIGlu dCBybnVtID0gY3R4LT5jdHhfcXJlZ19sb2dbaV07CisgICAgICAgIGludCBpc19wcmVkaWNhdGVk ID0gY3R4LT5jdHhfcXJlZ19pc19wcmVkaWNhdGVkW2ldOworICAgICAgICBpbnRwdHJfdCBkc3Rv ZmYgPSBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIFFSZWdzW3JudW1dKTsKKyAgICAgICAgaW50 cHRyX3Qgc3Jjb2ZmID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBmdXR1cmVfUVJlZ3Nbcm51 bV0pOworICAgICAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZihtbXFyZWdfdCk7CisKKyAgICAgICAg aWYgKGlzX3ByZWRpY2F0ZWQpIHsKKyAgICAgICAgICAgIFRDR3YgY21wID0gdGNnX3RlbXBfbG9j YWxfbmV3KCk7CisgICAgICAgICAgICBUQ0dMYWJlbCAqbGFiZWxfc2tpcCA9IGdlbl9uZXdfbGFi ZWwoKTsKKworICAgICAgICAgICAgdGNnX2dlbl9hbmRpX3RsKGNtcCwgaGV4X1FSZWdzX3VwZGF0 ZWQsIDEgPDwgcm51bSk7CisgICAgICAgICAgICB0Y2dfZ2VuX2JyY29uZGlfdGwoVENHX0NPTkRf RVEsIGNtcCwgMCwgbGFiZWxfc2tpcCk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg Z2VuX3ZlY19jb3B5KGRzdG9mZiwgc3Jjb2ZmLCBzaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIGdlbl9zZXRfbGFiZWwobGFiZWxfc2tpcCk7CisgICAgICAgICAgICB0Y2dfdGVtcF9m cmVlKGNtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBnZW5fdmVjX2NvcHkoZHN0 b2ZmLCBzcmNvZmYsIHNpemUpOworICAgICAgICB9CisgICAgfQorCisgICAgZ2VuX2hlbHBlcl9j b21taXRfaHZ4X3N0b3JlcyhjcHVfZW52KTsKK30KKwogc3RhdGljIHZvaWQgZ2VuX2V4ZWNfY291 bnRlcnMocGFja2V0X3QgKnBrdCkKIHsKICAgICBpbnQgbnVtX2luc25zID0gcGt0LT5udW1faW5z bnM7CiAgICAgaW50IG51bV9yZWFsX2luc25zID0gMDsKKyAgICBpbnQgbnVtX2h2eF9pbnNucyA9 IDA7CiAgICAgaW50IGk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX2luc25zOyBpKyspIHsK QEAgLTQ1Nyw2ICs2MTMsOSBAQCBzdGF0aWMgdm9pZCBnZW5fZXhlY19jb3VudGVycyhwYWNrZXRf dCAqcGt0KQogICAgICAgICAgICAgIUdFVF9BVFRSSUIocGt0LT5pbnNuW2ldLm9wY29kZSwgQV9J VF9OT1ApKSB7CiAgICAgICAgICAgICBudW1fcmVhbF9pbnNucysrOwogICAgICAgICB9CisgICAg ICAgIGlmIChwa3QtPmluc25baV0uaHZ4X3Jlc291cmNlKSB7CisgICAgICAgICAgICBudW1faHZ4 X2luc25zKys7CisgICAgICAgIH0KICAgICB9CiAKICAgICB0Y2dfZ2VuX2FkZGlfdGwoaGV4X2dw cltIRVhfUkVHX1FFTVVfUEtUX0NOVF0sCkBAIC00NjUsNiArNjI0LDEwIEBAIHN0YXRpYyB2b2lk IGdlbl9leGVjX2NvdW50ZXJzKHBhY2tldF90ICpwa3QpCiAgICAgICAgIHRjZ19nZW5fYWRkaV90 bChoZXhfZ3ByW0hFWF9SRUdfUUVNVV9JTlNOX0NOVF0sCiAgICAgICAgICAgICAgICAgICAgICAg ICBoZXhfZ3ByW0hFWF9SRUdfUUVNVV9JTlNOX0NOVF0sIG51bV9yZWFsX2luc25zKTsKICAgICB9 CisgICAgaWYgKG51bV9odnhfaW5zbnMpIHsKKyAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGhleF9n cHJbSEVYX1JFR19RRU1VX0hWWF9DTlRdLAorICAgICAgICAgICAgICAgICAgICAgICAgaGV4X2dw cltIRVhfUkVHX1FFTVVfSFZYX0NOVF0sIG51bV9odnhfaW5zbnMpOworICAgIH0KIH0KIAogc3Rh dGljIHZvaWQgZ2VuX2NvbW1pdF9wYWNrZXQoRGlzYXNDb250ZXh0ICpjdHgsIHBhY2tldF90ICpw a3QpCkBAIC00NzYsNiArNjM5LDkgQEAgc3RhdGljIHZvaWQgZ2VuX2NvbW1pdF9wYWNrZXQoRGlz YXNDb250ZXh0ICpjdHgsIHBhY2tldF90ICpwa3QpCiAgICAgcHJvY2Vzc19zdG9yZV9sb2coY3R4 LCBwa3QpOwogICAgIHByb2Nlc3NfZGN6ZXJvYShjdHgsIHBrdCk7CiAgICAgZW5kX3RiIHw9IHBy b2Nlc3NfY2hhbmdlX29mX2Zsb3coY3R4LCBwa3QpOworICAgIGlmIChwa3QtPnBrdF9oYXNfaHZ4 KSB7CisgICAgICAgIGdlbl9jb21taXRfaHZ4KGN0eCk7CisgICAgfQogICAgIGdlbl9leGVjX2Nv dW50ZXJzKHBrdCk7CiAjaWYgSEVYX0RFQlVHCiAgICAgewpAQCAtNzA2LDYgKzg3MiwxNCBAQCB2 b2lkIGhleGFnb25fdHJhbnNsYXRlX2luaXQodm9pZCkKICAgICAgICAgImlzX2dhdGhlcl9zdG9y ZV9pbnNuIik7CiAgICAgaGV4X2dhdGhlcl9pc3N1ZWQgPSB0Y2dfZ2xvYmFsX21lbV9uZXcoY3B1 X2VudiwKICAgICAgICAgb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBnYXRoZXJfaXNzdWVkKSwg ImdhdGhlcl9pc3N1ZWQiKTsKKyAgICBoZXhfVlJlZ3NfdXBkYXRlZF90bXAgPSB0Y2dfZ2xvYmFs X21lbV9uZXcoY3B1X2VudiwKKyAgICAgICAgb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBWUmVn c191cGRhdGVkX3RtcCksICJWUmVnc191cGRhdGVkX3RtcCIpOworICAgIGhleF9WUmVnc191cGRh dGVkID0gdGNnX2dsb2JhbF9tZW1fbmV3KGNwdV9lbnYsCisgICAgICAgIG9mZnNldG9mKENQVUhl eGFnb25TdGF0ZSwgVlJlZ3NfdXBkYXRlZCksICJWUmVnc191cGRhdGVkIik7CisgICAgaGV4X1ZS ZWdzX3NlbGVjdCA9IHRjZ19nbG9iYWxfbWVtX25ldyhjcHVfZW52LAorICAgICAgICBvZmZzZXRv ZihDUFVIZXhhZ29uU3RhdGUsIFZSZWdzX3NlbGVjdCksICJWUmVnc19zZWxlY3QiKTsKKyAgICBo ZXhfUVJlZ3NfdXBkYXRlZCA9IHRjZ19nbG9iYWxfbWVtX25ldyhjcHVfZW52LAorICAgICAgICBv ZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIFFSZWdzX3VwZGF0ZWQpLCAiUVJlZ3NfdXBkYXRlZCIp OwogICAgIGZvciAoaSA9IDA7IGkgPCBTVE9SRVNfTUFYOyBpKyspIHsKICAgICAgICAgc3ByaW50 ZihzdG9yZV9hZGRyX25hbWVzW2ldLCAic3RvcmVfYWRkcl8lZCIsIGkpOwogICAgICAgICBoZXhf c3RvcmVfYWRkcltpXSA9IHRjZ19nbG9iYWxfbWVtX25ldyhjcHVfZW52LApkaWZmIC0tZ2l0IGEv dGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmggYi90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuaApp bmRleCAyNjBmZjNjLi42YmZjMzc2IDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi90cmFuc2xh dGUuaAorKysgYi90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuaApAQCAtMzIsNiArMzIsMTQgQEAg dHlwZWRlZiBzdHJ1Y3QgRGlzYXNDb250ZXh0IHsKICAgICBpbnQgY3R4X3ByZWdfbG9nW1BSRURf V1JJVEVTX01BWF07CiAgICAgaW50IGN0eF9wcmVnX2xvZ19pZHg7CiAgICAgdWludDhfdCBjdHhf c3RvcmVfd2lkdGhbU1RPUkVTX01BWF07CisgICAgaW50IGN0eF90ZW1wX3ZyZWdzX2lkeDsKKyAg ICBpbnQgY3R4X3RlbXBfcXJlZ3NfaWR4OworICAgIGludCBjdHhfdnJlZ19sb2dbTlVNX1ZSRUdT XTsKKyAgICBpbnQgY3R4X3ZyZWdfaXNfcHJlZGljYXRlZFtOVU1fVlJFR1NdOworICAgIGludCBj dHhfdnJlZ19sb2dfaWR4OworICAgIGludCBjdHhfcXJlZ19sb2dbTlVNX1FSRUdTXTsKKyAgICBp bnQgY3R4X3FyZWdfaXNfcHJlZGljYXRlZFtOVU1fUVJFR1NdOworICAgIGludCBjdHhfcXJlZ19s b2dfaWR4OwogfSBEaXNhc0NvbnRleHQ7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBjdHhfbG9nX3Jl Z193cml0ZShEaXNhc0NvbnRleHQgKmN0eCwgaW50IHJudW0pCkBAIC01NCw2ICs2MiwyMiBAQCBz dGF0aWMgaW5saW5lIHZvaWQgY3R4X2xvZ19wcmVkX3dyaXRlKERpc2FzQ29udGV4dCAqY3R4LCBp bnQgcG51bSkKICAgICBjdHgtPmN0eF9wcmVnX2xvZ19pZHgrKzsKIH0KIAorc3RhdGljIGlubGlu ZSB2b2lkIGN0eF9sb2dfdnJlZ193cml0ZShEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJudW0sIGludCBpc19wcmVkaWNhdGVkKQor eworICAgIGN0eC0+Y3R4X3ZyZWdfbG9nW2N0eC0+Y3R4X3ZyZWdfbG9nX2lkeF0gPSBybnVtOwor ICAgIGN0eC0+Y3R4X3ZyZWdfaXNfcHJlZGljYXRlZFtjdHgtPmN0eF92cmVnX2xvZ19pZHhdID0g aXNfcHJlZGljYXRlZDsKKyAgICBjdHgtPmN0eF92cmVnX2xvZ19pZHgrKzsKK30KKworc3RhdGlj IGlubGluZSB2b2lkIGN0eF9sb2dfcXJlZ193cml0ZShEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJudW0sIGludCBpc19wcmVkaWNh dGVkKQoreworICAgIGN0eC0+Y3R4X3FyZWdfbG9nW2N0eC0+Y3R4X3FyZWdfbG9nX2lkeF0gPSBy bnVtOworICAgIGN0eC0+Y3R4X3FyZWdfaXNfcHJlZGljYXRlZFtjdHgtPmN0eF9xcmVnX2xvZ19p ZHhdID0gaXNfcHJlZGljYXRlZDsKKyAgICBjdHgtPmN0eF9xcmVnX2xvZ19pZHgrKzsKK30KKwog ZXh0ZXJuIFRDR3YgaGV4X2dwcltUT1RBTF9QRVJfVEhSRUFEX1JFR1NdOwogZXh0ZXJuIFRDR3Yg aGV4X3ByZWRbTlVNX1BSRUdTXTsKIGV4dGVybiBUQ0d2IGhleF9uZXh0X1BDOwpAQCAtNzQsOSAr OTgsMTUgQEAgZXh0ZXJuIFRDR3YgbGxzY192YWw7CiBleHRlcm4gVENHdl9pNjQgbGxzY192YWxf aTY0OwogZXh0ZXJuIFRDR3YgaGV4X2lzX2dhdGhlcl9zdG9yZV9pbnNuOwogZXh0ZXJuIFRDR3Yg aGV4X2dhdGhlcl9pc3N1ZWQ7CitleHRlcm4gVENHdiBoZXhfVlJlZ3NfdXBkYXRlZF90bXA7Citl eHRlcm4gVENHdiBoZXhfVlJlZ3NfdXBkYXRlZDsKK2V4dGVybiBUQ0d2IGhleF9WUmVnc19zZWxl Y3Q7CitleHRlcm4gVENHdiBoZXhfUVJlZ3NfdXBkYXRlZDsKIAogdm9pZCBoZXhhZ29uX3RyYW5z bGF0ZV9pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgZ2VuX2V4Y2VwdGlvbihpbnQgZXhjcCk7CiBl eHRlcm4gdm9pZCBnZW5fZXhjZXB0aW9uX2RlYnVnKHZvaWQpOwogCitleHRlcm4gdm9pZCBnZW5f bWVtY3B5KFRDR3ZfcHRyIGRlc3QsIFRDR3ZfcHRyIHNyYywgc2l6ZV90IG4pOworCiAjZW5kaWYK LS0gCjIuNy40Cgo=