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 CE1A5C3F2D2 for ; Fri, 28 Feb 2020 17:22:42 +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 8D3E1246A0 for ; Fri, 28 Feb 2020 17:22:42 +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="usCLG4kd" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8D3E1246A0 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]:51206 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7jLV-0004eZ-OK for qemu-devel@archiver.kernel.org; Fri, 28 Feb 2020 12:22:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58500) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7imD-0005lR-Tn for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:46:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j7imA-0007JR-P1 for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:46:13 -0500 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:27026) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j7imA-0005U4-Ab for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:46:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1582908370; x=1614444370; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ouv86xrunx1hWKwE1JD3OtriQEfIIJm6YVMRLDH9DXk=; b=usCLG4kd+Nx9bZqCoMyBfu92HWNH49GQcYkV3ogC0Ucd1vb4G/CULFLe Ks+1lJpOGTe86dji24ihZ3H4b+KAcwwXg1ktCdyoPMiqflt5KZxv6lv+A FjmNHAEl0RERjjesuB8zVfw3Ua5b6cEetVfThppXS22KSrGpIX0m+6Dtm 4=; Received: from unknown (HELO ironmsg01-sd.qualcomm.com) ([10.53.140.141]) by alexa-out-sd-02.qualcomm.com with ESMTP; 28 Feb 2020 08:44:34 -0800 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg01-sd.qualcomm.com with ESMTP; 28 Feb 2020 08:44:33 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id B08931102; Fri, 28 Feb 2020 10:44:33 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 61/67] Hexagon HVX instruction utility functions Date: Fri, 28 Feb 2020 10:43:57 -0600 Message-Id: <1582908244-304-62-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1582908244-304-1-git-send-email-tsimpson@quicinc.com> References: <1582908244-304-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.39 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" RnVuY3Rpb25zIHRvIHN1cHBvcnQgc2NhdHRlci9nYXRoZXIKClNpZ25lZC1vZmYtYnk6IFRheWxv ciBTaW1wc29uIDx0c2ltcHNvbkBxdWljaW5jLmNvbT4KLS0tCiB0YXJnZXQvaGV4YWdvbi9tbXZl Yy9zeXN0ZW1fZXh0X21tdmVjLmggfCAgMzggKysrKysKIHRhcmdldC9oZXhhZ29uL21tdmVjL3N5 c3RlbV9leHRfbW12ZWMuYyB8IDI2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog MiBmaWxlcyBjaGFuZ2VkLCAzMDEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRh cmdldC9oZXhhZ29uL21tdmVjL3N5c3RlbV9leHRfbW12ZWMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHRhcmdldC9oZXhhZ29uL21tdmVjL3N5c3RlbV9leHRfbW12ZWMuYwoKZGlmZiAtLWdpdCBhL3Rh cmdldC9oZXhhZ29uL21tdmVjL3N5c3RlbV9leHRfbW12ZWMuaCBiL3RhcmdldC9oZXhhZ29uL21t dmVjL3N5c3RlbV9leHRfbW12ZWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li40ZjM1OTY2Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vbW12ZWMvc3lzdGVt X2V4dF9tbXZlYy5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTkt MjAyMCBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk LgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAq ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lm bmRlZiBIRVhBR09OX1NZU1RFTV9FWFRfTU1WRUNfSAorI2RlZmluZSBIRVhBR09OX1NZU1RFTV9F WFRfTU1WRUNfSAorCitleHRlcm4gdm9pZCBtZW1fbG9hZF92ZWN0b3Jfb2RkdmEoQ1BVSGV4YWdv blN0YXRlICplbnYsIHZhZGRyX3QgdmFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2 YWRkcl90IGxvb2t1cF92YWRkciwgaW50IHNsb3QsIGludCBzaXplLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZTF1X3QgKmRhdGEsIGludCB1c2VfZnVsbF92YSk7CitleHRlcm4gdm9p ZCBtZW1fc3RvcmVfdmVjdG9yX29kZHZhKENQVUhleGFnb25TdGF0ZSAqZW52LCB2YWRkcl90IHZh ZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhZGRyX3QgbG9va3VwX3ZhZGRyLCBp bnQgc2xvdCwgaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTF1X3Qg KmRhdGEsIHNpemUxdV90KiBtYXNrLCB1bnNpZ25lZCBpbnZlcnQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IHVzZV9mdWxsX3ZhKTsKK2V4dGVybiB2b2lkIG1lbV92ZWN0b3Jfc2Nh dHRlcl9pbml0KENQVUhleGFnb25TdGF0ZSAqZW52LCBpbnQgc2xvdCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZhZGRyX3QgYmFzZV92YWRkciwgaW50IGxlbmd0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbGVtZW50X3NpemUpOworZXh0 ZXJuIHZvaWQgbWVtX3ZlY3Rvcl9zY2F0dGVyX2ZpbmlzaChDUFVIZXhhZ29uU3RhdGUgKmVudiwg aW50IHNsb3QsIGludCBvcCk7CitleHRlcm4gdm9pZCBtZW1fdmVjdG9yX2dhdGhlcl9maW5pc2go Q1BVSGV4YWdvblN0YXRlICplbnYsIGludCBzbG90KTsKK2V4dGVybiB2b2lkIG1lbV92ZWN0b3Jf Z2F0aGVyX2luaXQoQ1BVSGV4YWdvblN0YXRlICplbnYsIGludCBzbG90LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2YWRkcl90IGJhc2VfdmFkZHIsIGludCBsZW5ndGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbGVtZW50X3NpemUpOworCisK KyNlbmRpZgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vbW12ZWMvc3lzdGVtX2V4dF9tbXZl Yy5jIGIvdGFyZ2V0L2hleGFnb24vbW12ZWMvc3lzdGVtX2V4dF9tbXZlYy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZGY5NmUKLS0tIC9kZXYvbnVsbAorKysgYi90YXJn ZXQvaGV4YWdvbi9tbXZlYy9zeXN0ZW1fZXh0X21tdmVjLmMKQEAgLTAsMCArMSwyNjMgQEAKKy8q CisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwg SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKKyNpbmNsdWRlICJv cGNvZGVzLmgiCisjaW5jbHVkZSAiaW5zbi5oIgorI2luY2x1ZGUgIm1tdmVjL21hY3Jvcy5oIgor I2luY2x1ZGUgInFlbXUuaCIKKworI2RlZmluZSBUWVBFX0xPQUQgJ0wnCisjZGVmaW5lIFRZUEVf U1RPUkUgJ1MnCisjZGVmaW5lIFRZUEVfRkVUQ0ggJ0YnCisjZGVmaW5lIFRZUEVfSUNJTlZBICdJ JworCitlbnVtIG1lbV9hY2Nlc3NfdHlwZXMgeworICAgIGFjY2Vzc190eXBlX0lOVkFMSUQgPSAw LAorICAgIGFjY2Vzc190eXBlX3Vua25vd24gPSAxLAorICAgIGFjY2Vzc190eXBlX2xvYWQgPSAy LAorICAgIGFjY2Vzc190eXBlX3N0b3JlID0gMywKKyAgICBhY2Nlc3NfdHlwZV9mZXRjaCA9IDQs CisgICAgYWNjZXNzX3R5cGVfZGN6ZXJvYSA9IDUsCisgICAgYWNjZXNzX3R5cGVfZGNjbGVhbmEg PSA2LAorICAgIGFjY2Vzc190eXBlX2RjaW52YSA9IDcsCisgICAgYWNjZXNzX3R5cGVfZGNjbGVh bmludmEgPSA4LAorICAgIGFjY2Vzc190eXBlX2ljaW52YSA9IDksCisgICAgYWNjZXNzX3R5cGVf aWN0YWdyID0gMTAsCisgICAgYWNjZXNzX3R5cGVfaWN0YWd3ID0gMTEsCisgICAgYWNjZXNzX3R5 cGVfaWNkYXRhciA9IDEyLAorICAgIGFjY2Vzc190eXBlX2RjZmV0Y2ggPSAxMywKKyAgICBhY2Nl c3NfdHlwZV9sMmZldGNoID0gMTQsCisgICAgYWNjZXNzX3R5cGVfbDJjbGVhbmlkeCA9IDE1LAor ICAgIGFjY2Vzc190eXBlX2wyY2xlYW5pbnZpZHggPSAxNiwKKyAgICBhY2Nlc3NfdHlwZV9sMnRh Z3IgPSAxNywKKyAgICBhY2Nlc3NfdHlwZV9sMnRhZ3cgPSAxOCwKKyAgICBhY2Nlc3NfdHlwZV9k Y2NsZWFuaWR4ID0gMTksCisgICAgYWNjZXNzX3R5cGVfZGNpbnZpZHggPSAyMCwKKyAgICBhY2Nl c3NfdHlwZV9kY2NsZWFuaW52aWR4ID0gMjEsCisgICAgYWNjZXNzX3R5cGVfZGN0YWdyID0gMjIs CisgICAgYWNjZXNzX3R5cGVfZGN0YWd3ID0gMjMsCisgICAgYWNjZXNzX3R5cGVfazB1bmxvY2sg PSAyNCwKKyAgICBhY2Nlc3NfdHlwZV9sMmxvY2thID0gMjUsCisgICAgYWNjZXNzX3R5cGVfbDJ1 bmxvY2thID0gMjYsCisgICAgYWNjZXNzX3R5cGVfbDJraWxsID0gMjcsCisgICAgYWNjZXNzX3R5 cGVfbDJnY2xlYW4gPSAyOCwKKyAgICBhY2Nlc3NfdHlwZV9sMmdjbGVhbmludiA9IDI5LAorICAg IGFjY2Vzc190eXBlX2wyZ3VubG9jayA9IDMwLAorICAgIGFjY2Vzc190eXBlX3N5bmNoID0gMzEs CisgICAgYWNjZXNzX3R5cGVfaXN5bmMgPSAzMiwKKyAgICBhY2Nlc3NfdHlwZV9wYXVzZSA9IDMz LAorICAgIGFjY2Vzc190eXBlX2xvYWRfcGh5cyA9IDM0LAorICAgIGFjY2Vzc190eXBlX2xvYWRf bG9ja2VkID0gMzUsCisgICAgYWNjZXNzX3R5cGVfc3RvcmVfY29uZGl0aW9uYWwgPSAzNiwKKyAg ICBhY2Nlc3NfdHlwZV9iYXJyaWVyID0gMzcsCisgICAgYWNjZXNzX3R5cGVfbWVtY3B5X2xvYWQg PSAzOSwKKyAgICBhY2Nlc3NfdHlwZV9tZW1jcHlfc3RvcmUgPSA0MCwKKworICAgIE5VTV9DT1JF X0FDQ0VTU19UWVBFUworfTsKKworZW51bSBleHRfbWVtX2FjY2Vzc190eXBlcyB7CisgICAgYWNj ZXNzX3R5cGVfdmxvYWQgPSBOVU1fQ09SRV9BQ0NFU1NfVFlQRVMsCisgICAgYWNjZXNzX3R5cGVf dnN0b3JlLAorICAgIGFjY2Vzc190eXBlX3Zsb2FkX250LAorICAgIGFjY2Vzc190eXBlX3ZzdG9y ZV9udCwKKyAgICBhY2Nlc3NfdHlwZV92Z2F0aGVyX2xvYWQsCisgICAgYWNjZXNzX3R5cGVfdnNj YXR0ZXJfc3RvcmUsCisgICAgYWNjZXNzX3R5cGVfdnNjYXR0ZXJfcmVsZWFzZSwKKyAgICBhY2Nl c3NfdHlwZV92Z2F0aGVyX3JlbGVhc2UsCisgICAgYWNjZXNzX3R5cGVfdmZldGNoLAorICAgIE5V TV9FWFRfQUNDRVNTX1RZUEVTCit9OworCitzdGF0aWMgaW5saW5lCit0YXJnZXRfdWxvbmcgbWVt X2luaXRfYWNjZXNzKENQVUhleGFnb25TdGF0ZSAqZW52LCBpbnQgc2xvdCwgc2l6ZTR1X3QgdmFk ZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwgZW51bSBtZW1fYWNj ZXNzX3R5cGVzIG10eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZV9m b3JfeGxhdGUpCit7CisjaWZkZWYgQ09ORklHX1VTRVJfT05MWQorICAgIC8qIE5vdGhpbmcgdG8g ZG8gZm9yIExpbnV4IHVzZXIgbW9kZSBpbiBxZW11ICovCisgICAgcmV0dXJuIHZhZGRyOworI2Vs c2UKKyNlcnJvciBTeXN0ZW0gbW9kZSBub3QgeWV0IGltcGxlbWVudGVkIGZvciBIZXhhZ29uCisj ZW5kaWYKK30KKworc3RhdGljIGlubGluZSBpbnQgY2hlY2tfZ2F0aGVyX3N0b3JlKENQVUhleGFn b25TdGF0ZSAqZW52KQoreworICAgIC8qIEZpcnN0IGNoZWNrIHRvIHNlZSBpZiB0ZW1wIHZyZWcg aGFzIGJlZW4gdXBkYXRlZCAqLworICAgIGludCBjaGVjayAgPSBlbnYtPmdhdGhlcl9pc3N1ZWQ7 CisgICAgY2hlY2sgJj0gZW52LT5pc19nYXRoZXJfc3RvcmVfaW5zbjsKKworICAgIC8qIEluIGNh c2Ugd2UgZG9uJ3QgaGF2ZSBzdG9yZSwgc3VwcHJlc3MgZ2F0aGVyICovCisgICAgaWYgKCFjaGVj aykgeworICAgICAgICBlbnYtPmdhdGhlcl9pc3N1ZWQgPSAwOworICAgICAgICBlbnYtPnZ0Y21f cGVuZGluZyA9IDA7ICAgLyogU3VwcHJlc3MgYW55IGdhdGhlciB3cml0ZXMgdG8gbWVtb3J5ICov CisgICAgfQorICAgIHJldHVybiBjaGVjazsKK30KKwordm9pZCBtZW1fc3RvcmVfdmVjdG9yX29k ZHZhKENQVUhleGFnb25TdGF0ZSAqZW52LCB2YWRkcl90IHZhZGRyLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZhZGRyX3QgbG9va3VwX3ZhZGRyLCBpbnQgc2xvdCwgaW50IHNpemUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTF1X3QgKmRhdGEsIHNpemUxdV90ICptYXNr LCB1bnNpZ25lZCBpbnZlcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9m dWxsX3ZhKQoreworICAgIGludCBpOworCisgICAgaWYgKCF1c2VfZnVsbF92YSkgeworICAgICAg ICBsb29rdXBfdmFkZHIgPSB2YWRkcjsKKyAgICB9CisKKyAgICBpZiAoIXNpemUpIHsKKyAgICAg ICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBpc19nYXRoZXJfc3RvcmUgPSBjaGVja19nYXRo ZXJfc3RvcmUoZW52KTsKKyAgICBpZiAoaXNfZ2F0aGVyX3N0b3JlKSB7CisgICAgICAgIG1lbWNw eShkYXRhLCAmZW52LT50bXBfVlJlZ3NbMF0udWJbMF0sIHNpemUpOworICAgICAgICBlbnYtPlZS ZWdzX3VwZGF0ZWRfdG1wID0gMDsKKyAgICAgICAgZW52LT5nYXRoZXJfaXNzdWVkID0gMDsKKyAg ICB9CisKKyAgICAvKgorICAgICAqIElmIGl0J3MgYSBnYXRoZXIgc3RvcmUgdXBkYXRlIHN0b3Jl IGRhdGEgZnJvbSB0ZW1wb3JhcnkgcmVnaXN0ZXIKKyAgICAgKiBBbmQgY2xlYXIgZmxhZworICAg ICAqLworICAgIGVudi0+dnN0b3JlX3BlbmRpbmdbc2xvdF0gPSAxOworICAgIGVudi0+dnN0b3Jl W3Nsb3RdLnZhICAgPSB2YWRkcjsKKyAgICBlbnYtPnZzdG9yZVtzbG90XS5zaXplID0gc2l6ZTsK KyAgICBtZW1jcHkoJmVudi0+dnN0b3JlW3Nsb3RdLmRhdGEudWJbMF0sIGRhdGEsIHNpemUpOwor ICAgIGlmICghbWFzaykgeworICAgICAgICBtZW1zZXQoJmVudi0+dnN0b3JlW3Nsb3RdLm1hc2su dWJbMF0sIGludmVydCA/IDAgOiAtMSwgc2l6ZSk7CisgICAgfSBlbHNlIGlmIChpbnZlcnQpIHsK KyAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgZW52LT52 c3RvcmVbc2xvdF0ubWFzay51YltpXSA9ICFtYXNrW2ldOworICAgICAgICB9CisgICAgfSBlbHNl IHsKKyAgICAgICAgbWVtY3B5KCZlbnYtPnZzdG9yZVtzbG90XS5tYXNrLnViWzBdLCBtYXNrLCBz aXplKTsKKyAgICB9CisgICAgLyogT24gYSBnYXRoZXIgc3RvcmUsIG92ZXJ3cml0ZSB0aGUgc3Rv cmUgbWFzayB0byBlbXVsYXRlIGRyb3BwZWQgZ2F0aGVycyAqLworICAgIGlmIChpc19nYXRoZXJf c3RvcmUpIHsKKyAgICAgICAgbWVtY3B5KCZlbnYtPnZzdG9yZVtzbG90XS5tYXNrLnViWzBdLCAm ZW52LT52dGNtX2xvZy5tYXNrLnViWzBdLCBzaXplKTsKKyAgICB9CisgICAgZm9yIChpID0gMDsg aSA8IHNpemU7IGkrKykgeworICAgICAgICBlbnYtPm1lbV9hY2Nlc3Nbc2xvdF0uY2RhdGFbaV0g PSBkYXRhW2ldOworICAgIH0KK30KKwordm9pZCBtZW1fbG9hZF92ZWN0b3Jfb2RkdmEoQ1BVSGV4 YWdvblN0YXRlICplbnYsIHZhZGRyX3QgdmFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICB2YWRkcl90IGxvb2t1cF92YWRkciwgaW50IHNsb3QsIGludCBzaXplLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZTF1X3QgKmRhdGEsIGludCB1c2VfZnVsbF92YSkKK3sKKyAgICBp bnQgaTsKKworICAgIGlmICghdXNlX2Z1bGxfdmEpIHsKKyAgICAgICAgbG9va3VwX3ZhZGRyID0g dmFkZHI7CisgICAgfQorCisgICAgaWYgKCFzaXplKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9 CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGdldF91c2VyX3U4 KGRhdGFbaV0sIHZhZGRyKTsKKyAgICAgICAgdmFkZHIrKzsKKyAgICB9Cit9CisKK3ZvaWQgbWVt X3ZlY3Rvcl9zY2F0dGVyX2luaXQoQ1BVSGV4YWdvblN0YXRlICplbnYsIGludCBzbG90LCB2YWRk cl90IGJhc2VfdmFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGgs IGludCBlbGVtZW50X3NpemUpCit7CisgICAgZW51bSBleHRfbWVtX2FjY2Vzc190eXBlcyBhY2Nl c3NfdHlwZSA9IGFjY2Vzc190eXBlX3ZzY2F0dGVyX3N0b3JlOworICAgIGludCBpOworCisgICAg LyogVHJhbnNsYXRpb24gZm9yIFN0b3JlIEFkZHJlc3Mgb24gU2xvdCAxIC0gbWF5YmUgYW55IHNs b3Q/ICovCisgICAgbWVtX2luaXRfYWNjZXNzKGVudiwgc2xvdCwgYmFzZV92YWRkciwgMSwgYWNj ZXNzX3R5cGUsIFRZUEVfU1RPUkUpOworICAgIG1lbV9hY2Nlc3NfaW5mb190ICptYXB0ciA9ICZl bnYtPm1lbV9hY2Nlc3Nbc2xvdF07CisgICAgaWYgKEVYQ0VQVElPTl9ERVRFQ1RFRCkgeworICAg ICAgICByZXR1cm47CisgICAgfQorCisgICAgbWFwdHItPnJhbmdlID0gbGVuZ3RoOworCisgICAg Zm9yIChpID0gMDsgaSA8IGZWRUNTSVpFKCk7IGkrKykgeworICAgICAgICBlbnYtPnZ0Y21fbG9n Lm9mZnNldHMudWJbaV0gPSAwOyAvKiBNYXJrIGludmFsaWQgKi8KKyAgICAgICAgZW52LT52dGNt X2xvZy5kYXRhLnViW2ldID0gMDsKKyAgICAgICAgZW52LT52dGNtX2xvZy5tYXNrLnViW2ldID0g MDsKKyAgICB9CisgICAgZW52LT52dGNtX2xvZy52YV9iYXNlID0gYmFzZV92YWRkcjsKKworICAg IGVudi0+dnRjbV9wZW5kaW5nID0gMTsKKyAgICBlbnYtPnZ0Y21fbG9nLm9vYl9hY2Nlc3MgPSAw OworICAgIGVudi0+dnRjbV9sb2cub3AgPSAwOworICAgIGVudi0+dnRjbV9sb2cub3Bfc2l6ZSA9 IDA7CisgICAgcmV0dXJuOworfQorCit2b2lkIG1lbV92ZWN0b3JfZ2F0aGVyX2luaXQoQ1BVSGV4 YWdvblN0YXRlICplbnYsIGludCBzbG90LCB2YWRkcl90IGJhc2VfdmFkZHIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCwgaW50IGVsZW1lbnRfc2l6ZSkKK3sKKyAgICBl bnVtIGV4dF9tZW1fYWNjZXNzX3R5cGVzIGFjY2Vzc190eXBlID0gYWNjZXNzX3R5cGVfdmdhdGhl cl9sb2FkOworICAgIGludCBpOworCisgICAgbWVtX2luaXRfYWNjZXNzKGVudiwgc2xvdCwgYmFz ZV92YWRkciwgMSwgIGFjY2Vzc190eXBlLCBUWVBFX0xPQUQpOworICAgIG1lbV9hY2Nlc3NfaW5m b190ICptYXB0ciA9ICZlbnYtPm1lbV9hY2Nlc3Nbc2xvdF07CisKKyAgICBpZiAoRVhDRVBUSU9O X0RFVEVDVEVEKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtYXB0ci0+cmFuZ2Ug PSBsZW5ndGg7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgMiAqIGZWRUNTSVpFKCk7IGkrKykgewor ICAgICAgICBlbnYtPnZ0Y21fbG9nLm9mZnNldHMudWJbaV0gPSAweDA7CisgICAgfQorICAgIGZv ciAoaSA9IDA7IGkgPCBmVkVDU0laRSgpOyBpKyspIHsKKyAgICAgICAgZW52LT52dGNtX2xvZy5k YXRhLnViW2ldID0gMDsKKyAgICAgICAgZW52LT52dGNtX2xvZy5tYXNrLnViW2ldID0gMDsKKyAg ICAgICAgZW52LT52dGNtX2xvZy52YVtpXSA9IDA7CisgICAgICAgIGVudi0+dG1wX1ZSZWdzWzBd LnViW2ldID0gMDsKKyAgICB9CisgICAgZW52LT52dGNtX2xvZy5vb2JfYWNjZXNzID0gMDsKKyAg ICBlbnYtPnZ0Y21fbG9nLm9wID0gMDsKKyAgICBlbnYtPnZ0Y21fbG9nLm9wX3NpemUgPSAwOwor CisgICAgZW52LT52dGNtX2xvZy52YV9iYXNlID0gYmFzZV92YWRkcjsKKworICAgIC8qCisgICAg ICogVGVtcCBSZWcgZ2V0cyB1cGRhdGVkCisgICAgICogVGhpcyBhbGxvd3MgU3RvcmUgLm5ldyB0 byBncmFiIHRoZSBjb3JyZWN0IHJlc3VsdAorICAgICAqLworICAgIGVudi0+VlJlZ3NfdXBkYXRl ZF90bXAgPSAxOworICAgIGVudi0+Z2F0aGVyX2lzc3VlZCA9IDE7CisKKyAgICByZXR1cm47Cit9 CisKK3ZvaWQgbWVtX3ZlY3Rvcl9zY2F0dGVyX2ZpbmlzaChDUFVIZXhhZ29uU3RhdGUgKmVudiwg aW50IHNsb3QsIGludCBvcCkKK3sKKyAgICBlbnYtPnN0b3JlX3BlbmRpbmdbc2xvdF0gPSAwOwor ICAgIGVudi0+dnN0b3JlX3BlbmRpbmdbc2xvdF0gPSAwOworICAgIGVudi0+dnRjbV9sb2cuc2l6 ZSA9IGZWRUNTSVpFKCk7CisKKyAgICBtZW1jcHkoZW52LT5tZW1fYWNjZXNzW3Nsb3RdLmNkYXRh LCAmZW52LT52dGNtX2xvZy5vZmZzZXRzLnViWzBdLCAyNTYpOworfQorCit2b2lkIG1lbV92ZWN0 b3JfZ2F0aGVyX2ZpbmlzaChDUFVIZXhhZ29uU3RhdGUgKmVudiwgaW50IHNsb3QpCit7CisgICAg bWVtY3B5KGVudi0+bWVtX2FjY2Vzc1tzbG90XS5jZGF0YSwgJmVudi0+dnRjbV9sb2cub2Zmc2V0 cy51YlswXSwgMjU2KTsKK30KLS0gCjIuNy40Cgo=