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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BE4A2E7E648 for ; Tue, 26 Sep 2023 15:04:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gnj7grDuQAYq0ZdLL82dbZyBiuQ9Sp8+9t369GMOBQk=; b=sUG2Bv6Ut7rlNV n+d4GC64ccTVpZGkknYUURnw2rksaoRt90Rll57W/4V1yuyigzsMlYC/jtFry5dvLrPfHH9iYBggA ILeCGW/QkD0qLPIsFd2PMGnPhWSbDXfQK1leSDMoCIt26Dy3Smvx5USX28wgMPyIccKm3HCOKobfw 7sAzUTCAtO2puV7+yiNbnQQC8Gb6gRCKiZF9b/fVlYTMHt2eyfpgASc/khTMhRS9eVB587S+x+XwD rNzc5GNWtxmzFe3HP4Oc/LB7UNkYZpiN55Kq9DeaF52A71Vrb5uYJW52/Sy8f4k3ubGJB2qN7O0qh fNwL/1lnxXGmqR7OAZTQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1ql9bY-00GbOu-12; Tue, 26 Sep 2023 15:04:04 +0000 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1ql9bU-00GbKC-1o for linux-riscv@lists.infradead.org; Tue, 26 Sep 2023 15:04:02 +0000 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-3231e138f44so694361f8f.0 for ; Tue, 26 Sep 2023 08:03:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1695740636; x=1696345436; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/uuvfJ5AANk2b1H7qXwiqMjtZ5fx5LwQZGgrS2bH6zQ=; b=LjC/CUImZ1EVD8Te3UjQqGebLCZ60iegHN2H9RSFYJr3w709QESFOWcowDqpoccSTQ XYfK8ereL3T29inr02CgR1V4xrjFFJmOHhKtemN9E62w+58K2YDW2fmp9jjTH8VdhECt 7h02i36seTY6t3gMHjVAq4Lm0VeTAle8bRSwu8wbQR0030NYN1r+2FP7z/9TFFt3uKPX ae9Fvtg1uZvg9ytRTt8AzVH+DOoQxEQTJpDg9QViUHlgb+diasCgpSmGy26EzF+Z3FJt sNHG/RuvSMLO9WTq7Hjxv5Z0e4U2W856N14VQvsl5GsUKoaD29j9ITMn5YpmFThu1cnm KXXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695740636; x=1696345436; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/uuvfJ5AANk2b1H7qXwiqMjtZ5fx5LwQZGgrS2bH6zQ=; b=ofejT5L6+iRiZGOEKEa3UYhb/w0Ro+xUVRfr0kib5QqkKOePRQPjnBUEdTYgrBXmMS VrllbKtM+yQ309vSlbKk56A4soFtBPni17tIv0oR9lgvxoyWmTtheOjj6P6VB6masjuu 5zyNwbQ64gR7MGf0FwbmkOaNcakA7QSUitFgmSmoxYqTxnebb2xpgNT0aZlyVGTKPsrM sWtQ1CStdDyncD0t6cfac7W4OW1VRg74Z5yoaXhdmga4p2AFYG+3o47k83pNW/KihK8M 4YVDjTRcFouW3fiwOfWVsbOiHWJyYutAbQk7uKr6rsoaS87YavZRiXLM0ZRUwPqbQ3Jt uojA== X-Gm-Message-State: AOJu0Yx71Z/ojaVQ7ohB2txUta0I2BcFPQ1nzU7Jla5YQ7QHFuFcyz7G kx5ErhLI1Rmv0r26v1H8geY+JQ== X-Google-Smtp-Source: AGHT+IE8kK7m+adK60EJSFNwZFOqJSMd+4wvMQfHEfjOwfK+qxITAch3QRj6sfjlQtjyWNy3/S6QzA== X-Received: by 2002:adf:ed84:0:b0:322:c494:d481 with SMTP id c4-20020adfed84000000b00322c494d481mr9917893wro.0.1695740635757; Tue, 26 Sep 2023 08:03:55 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:999:a3a0:2b3d:6c70:9dbf:5ede]) by smtp.gmail.com with ESMTPSA id x11-20020a5d650b000000b00318147fd2d3sm14926060wru.41.2023.09.26.08.03.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Sep 2023 08:03:55 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: Paul Walmsley , Palmer Dabbelt , Albert Ou Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Atish Patra , Andrew Jones , Evan Green , =?UTF-8?q?Bj=C3=B6rn=20Topel?= , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Ron Minnich , Daniel Maslowski Subject: [PATCH 4/7] riscv: add floating point insn support to misaligned access emulation Date: Tue, 26 Sep 2023 17:03:13 +0200 Message-Id: <20230926150316.1129648-5-cleger@rivosinc.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230926150316.1129648-1-cleger@rivosinc.com> References: <20230926150316.1129648-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230926_080400_603693_1A033351 X-CRM114-Status: GOOD ( 22.52 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org VGhpcyBzdXBwb3J0IGlzIHBhcnRpYWxseSBiYXNlZCBvZiBvcGVuU0JJIG1pc2FsaWduZWQgZW11 bGF0aW9uIGZsb2F0aW5nCnBvaW50IGluc3RydWN0aW9uIHN1cHBvcnQuIEl0IHByb3ZpZGVzIHN1 cHBvcnQgZm9yIHRoZSBleGlzdGluZwpmbG9hdGluZyBwb2ludCBpbnN0cnVjdGlvbnMgKGJvdGgg Zm9yIDMyLzY0IGJpdHMgYXMgd2VsbCBhcyBjb21wcmVzc2VkCm9uZXMpLiBTaW5jZSBmbG9hdGlu ZyBwb2ludCByZWdpc3RlcnMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBwdF9yZWdzCnN0cnVjdCwgd2Ug bmVlZCB0byBtb2RpZnkgdGhlbSBkaXJlY3RseSB1c2luZyBzb21lIGFzc2VtYmx5LiBXZSBhbHNv CmRpcnR5IHRoZSBwdF9yZWdzIHN0YXR1cyBpbiBjYXNlIHdlIG1vZGlmeSB0aGVtIHRvIGJlIHN1 cmUgY29udGV4dApzd2l0Y2ggd2lsbCBzYXZlIEZQIHN0YXRlLiBXaXRoIHRoaXMgc3VwcG9ydCwg TGludXggaXMgb24gcGFyIHdpdGgKb3BlblNCSSBzdXBwb3J0LgoKU2lnbmVkLW9mZi1ieTogQ2zD qW1lbnQgTMOpZ2VyIDxjbGVnZXJAcml2b3NpbmMuY29tPgotLS0KIGFyY2gvcmlzY3Yva2VybmVs L2ZwdS5TICAgICAgICAgICAgICB8IDExNyArKysrKysrKysrKysrKysrKysrKysKIGFyY2gvcmlz Y3Yva2VybmVsL3RyYXBzX21pc2FsaWduZWQuYyB8IDE1MiArKysrKysrKysrKysrKysrKysrKysr KysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjY1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvZnB1LlMgYi9hcmNoL3Jpc2N2L2tlcm5l bC9mcHUuUwppbmRleCBkZDIyMDU0NzNkZTcuLjI3ODViYWRiMjQ3YyAxMDA2NDQKLS0tIGEvYXJj aC9yaXNjdi9rZXJuZWwvZnB1LlMKKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvZnB1LlMKQEAgLTEw NCwzICsxMDQsMTIwIEBAIEVOVFJZKF9fZnN0YXRlX3Jlc3RvcmUpCiAJY3NyYyBDU1JfU1RBVFVT LCB0MQogCXJldAogRU5EUFJPQyhfX2ZzdGF0ZV9yZXN0b3JlKQorCisjZGVmaW5lIGdldF9mMzIo d2hpY2gpIGZtdi54LnMgYTAsIHdoaWNoOyBqIDJmCisjZGVmaW5lIHB1dF9mMzIod2hpY2gpIGZt di5zLnggd2hpY2gsIGExOyBqIDJmCisjaWYgX19yaXNjdl94bGVuID09IDY0CisjIGRlZmluZSBn ZXRfZjY0KHdoaWNoKSBmbXYueC5kIGEwLCB3aGljaDsgaiAyZgorIyBkZWZpbmUgcHV0X2Y2NCh3 aGljaCkgZm12LmQueCB3aGljaCwgYTE7IGogMmYKKyNlbHNlCisjIGRlZmluZSBnZXRfZjY0KHdo aWNoKSBmc2Qgd2hpY2gsIDAoYTEpOyBqIDJmCisjIGRlZmluZSBwdXRfZjY0KHdoaWNoKSBmbGQg d2hpY2gsIDAoYTEpOyBqIDJmCisjZW5kaWYKKworLm1hY3JvIGZwX2FjY2Vzc19wcm9sb2d1ZQor CS8qCisJICogQ29tcHV0ZSBqdW1wIG9mZnNldCB0byBzdG9yZSB0aGUgY29ycmVjdCBGUCByZWdp c3RlciBzaW5jZSB3ZSBkb24ndAorCSAqIGhhdmUgaW5kaXJlY3QgRlAgcmVnaXN0ZXIgYWNjZXNz CisJICovCisJc2xsIHQwLCBhMCwgMworCWxhIHQyLCAxZgorCWFkZCB0MCwgdDAsIHQyCisJbGkg dDEsIFNSX0ZTCisJY3NycyBDU1JfU1RBVFVTLCB0MQorCWpyIHQwCisxOgorLmVuZG0KKworLm1h Y3JvIGZwX2FjY2Vzc19lcGlsb2d1ZQorMjoKKwljc3JjIENTUl9TVEFUVVMsIHQxCisJcmV0Cisu ZW5kbQorCisjZGVmaW5lIGZwX2FjY2Vzc19ib2R5KF9fYWNjZXNzX2Z1bmMpIFwKKwlfX2FjY2Vz c19mdW5jKGYwKTsgXAorCV9fYWNjZXNzX2Z1bmMoZjEpOyBcCisJX19hY2Nlc3NfZnVuYyhmMik7 IFwKKwlfX2FjY2Vzc19mdW5jKGYzKTsgXAorCV9fYWNjZXNzX2Z1bmMoZjQpOyBcCisJX19hY2Nl c3NfZnVuYyhmNSk7IFwKKwlfX2FjY2Vzc19mdW5jKGY2KTsgXAorCV9fYWNjZXNzX2Z1bmMoZjcp OyBcCisJX19hY2Nlc3NfZnVuYyhmOCk7IFwKKwlfX2FjY2Vzc19mdW5jKGY5KTsgXAorCV9fYWNj ZXNzX2Z1bmMoZjEwKTsgXAorCV9fYWNjZXNzX2Z1bmMoZjExKTsgXAorCV9fYWNjZXNzX2Z1bmMo ZjEyKTsgXAorCV9fYWNjZXNzX2Z1bmMoZjEzKTsgXAorCV9fYWNjZXNzX2Z1bmMoZjE0KTsgXAor CV9fYWNjZXNzX2Z1bmMoZjE1KTsgXAorCV9fYWNjZXNzX2Z1bmMoZjE2KTsgXAorCV9fYWNjZXNz X2Z1bmMoZjE3KTsgXAorCV9fYWNjZXNzX2Z1bmMoZjE4KTsgXAorCV9fYWNjZXNzX2Z1bmMoZjE5 KTsgXAorCV9fYWNjZXNzX2Z1bmMoZjIwKTsgXAorCV9fYWNjZXNzX2Z1bmMoZjIxKTsgXAorCV9f YWNjZXNzX2Z1bmMoZjIyKTsgXAorCV9fYWNjZXNzX2Z1bmMoZjIzKTsgXAorCV9fYWNjZXNzX2Z1 bmMoZjI0KTsgXAorCV9fYWNjZXNzX2Z1bmMoZjI1KTsgXAorCV9fYWNjZXNzX2Z1bmMoZjI2KTsg XAorCV9fYWNjZXNzX2Z1bmMoZjI3KTsgXAorCV9fYWNjZXNzX2Z1bmMoZjI4KTsgXAorCV9fYWNj ZXNzX2Z1bmMoZjI5KTsgXAorCV9fYWNjZXNzX2Z1bmMoZjMwKTsgXAorCV9fYWNjZXNzX2Z1bmMo ZjMxKQorCisKKy8qCisgKiBEaXNhYmxlIGNvbXByZXNzZWQgaW5zdHJ1Y3Rpb25zIHNldCB0byBr ZWVwIGEgY29uc3RhbnQgb2Zmc2V0IGJldHdlZW4gRlAKKyAqIGxvYWQvc3RvcmUvbW92ZSBpbnN0 cnVjdGlvbnMKKyAqLworLm9wdGlvbiBub3J2YworLyoKKyAqIHB1dF9mMzJfcmVnIC0gU2V0IGEg RlAgcmVnaXN0ZXIgZnJvbSBhIHJlZ2lzdGVyIGNvbnRhaW5pbmcgdGhlIHZhbHVlCisgKiBhMCA9 IEZQIHJlZ2lzdGVyIGluZGV4IHRvIGJlIHNldAorICogYTEgPSB2YWx1ZSB0byBiZSBsb2FkZWQg aW4gdGhlIEZQIHJlZ2lzdGVyCisgKi8KK1NZTV9GVU5DX1NUQVJUKHB1dF9mMzJfcmVnKQorCWZw X2FjY2Vzc19wcm9sb2d1ZQorCWZwX2FjY2Vzc19ib2R5KHB1dF9mMzIpCisJZnBfYWNjZXNzX2Vw aWxvZ3VlCitTWU1fRlVOQ19FTkQocHV0X2YzMl9yZWcpCisKKy8qCisgKiBnZXRfZjMyX3JlZyAt IEdldCBhIEZQIHJlZ2lzdGVyIHZhbHVlIGFuZCByZXR1cm4gaXQKKyAqIGEwID0gRlAgcmVnaXN0 ZXIgaW5kZXggdG8gYmUgcmV0cmlldmVkCisgKi8KK1NZTV9GVU5DX1NUQVJUKGdldF9mMzJfcmVn KQorCWZwX2FjY2Vzc19wcm9sb2d1ZQorCWZwX2FjY2Vzc19ib2R5KGdldF9mMzIpCisJZnBfYWNj ZXNzX2VwaWxvZ3VlCitTWU1fRlVOQ19FTkQocHV0X2YzMl9yZWcpCisKKy8qCisgKiBwdXRfZjY0 X3JlZyAtIFNldCBhIDY0IGJpdHMgRlAgcmVnaXN0ZXIgZnJvbSBhIHZhbHVlIG9yIGEgcG9pbnRl ci4KKyAqIGEwID0gRlAgcmVnaXN0ZXIgaW5kZXggdG8gYmUgc2V0CisgKiBhMSA9IHZhbHVlL3Bv aW50ZXIgdG8gYmUgbG9hZGVkIGluIHRoZSBGUCByZWdpc3RlciAod2hlbiB4bGVuID09IDMyIGJp dHMsIHdlCisgKiBsb2FkIHRoZSB2YWx1ZSB0byBhIHBvaW50ZXIpLgorICovCitTWU1fRlVOQ19T VEFSVChwdXRfZjY0X3JlZykKKwlmcF9hY2Nlc3NfcHJvbG9ndWUKKwlmcF9hY2Nlc3NfYm9keShw dXRfZjY0KQorCWZwX2FjY2Vzc19lcGlsb2d1ZQorU1lNX0ZVTkNfRU5EKHB1dF9mNjRfcmVnKQor CisvKgorICogcHV0X2Y2NF9yZWcgLSBHZXQgYSA2NCBiaXRzIEZQIHJlZ2lzdGVyIHZhbHVlIGFu ZCByZXR1cm5lZCBpdCBvciBzdG9yZSBpdCB0bworICoJIAkgYSBwb2ludGVyLgorICogYTAgPSBG UCByZWdpc3RlciBpbmRleCB0byBiZSByZXRyaWV2ZWQKKyAqIGExID0gSWYgeGxlbiA9PSAzMiwg cG9pbnRlciB3aGljaCBzaG91bGQgYmUgbG9hZGVkIHdpdGggdGhlIEZQIHJlZ2lzdGVyIHZhbHVl CisgKglvciB1bnVzZWQgaWYgeGxlbiA9PSA2NC4gSW4gd2hpY2ggY2FzZSB0aGUgRlAgcmVnaXN0 ZXIgdmFsdWUgaXMgcmV0dXJuZWQKKyAqCXRocm91Z2ggYTAKKyAqLworU1lNX0ZVTkNfU1RBUlQo Z2V0X2Y2NF9yZWcpCisJZnBfYWNjZXNzX3Byb2xvZ3VlCisJZnBfYWNjZXNzX2JvZHkoZ2V0X2Y2 NCkKKwlmcF9hY2Nlc3NfZXBpbG9ndWUKK1NZTV9GVU5DX0VORChnZXRfZjY0X3JlZykKZGlmZiAt LWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3RyYXBzX21pc2FsaWduZWQuYyBiL2FyY2gvcmlzY3Yv a2VybmVsL3RyYXBzX21pc2FsaWduZWQuYwppbmRleCA4MDRmNmM1ZTBlNDQuLjA0MWZkMmRiZDk1 NSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwvdHJhcHNfbWlzYWxpZ25lZC5jCisrKyBi L2FyY2gvcmlzY3Yva2VybmVsL3RyYXBzX21pc2FsaWduZWQuYwpAQCAtMTUzLDYgKzE1MywxMTUg QEAKICNkZWZpbmUgUFJFQ0lTSU9OX1MgMAogI2RlZmluZSBQUkVDSVNJT05fRCAxCiAKKyNpZmRl ZiBDT05GSUdfRlBVCisKKyNkZWZpbmUgRlBfR0VUX1JEKGluc24pCQkoaW5zbiA+PiA3ICYgMHgx RikKKworZXh0ZXJuIHZvaWQgcHV0X2YzMl9yZWcodW5zaWduZWQgbG9uZyBmcF9yZWcsIHVuc2ln bmVkIGxvbmcgdmFsdWUpOworCitzdGF0aWMgaW50IHNldF9mMzJfcmQodW5zaWduZWQgbG9uZyBp bnNuLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJICAgICAgdW5zaWduZWQgbG9uZyB2YWwpCit7 CisJdW5zaWduZWQgbG9uZyBmcF9yZWcgPSBGUF9HRVRfUkQoaW5zbik7CisKKwlwdXRfZjMyX3Jl ZyhmcF9yZWcsIHZhbCk7CisJcmVncy0+c3RhdHVzIHw9IFNSX0ZTX0RJUlRZOworCisJcmV0dXJu IDA7Cit9CisKK2V4dGVybiB2b2lkIHB1dF9mNjRfcmVnKHVuc2lnbmVkIGxvbmcgZnBfcmVnLCB1 bnNpZ25lZCBsb25nIHZhbHVlKTsKKworc3RhdGljIGludCBzZXRfZjY0X3JkKHVuc2lnbmVkIGxv bmcgaW5zbiwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHU2NCB2YWwpCit7CisJdW5zaWduZWQgbG9u ZyBmcF9yZWcgPSBGUF9HRVRfUkQoaW5zbik7CisJdW5zaWduZWQgbG9uZyB2YWx1ZTsKKworI2lm IF9fcmlzY3ZfeGxlbiA9PSAzMgorCXZhbHVlID0gKHVuc2lnbmVkIGxvbmcpICZ2YWw7CisjZWxz ZQorCXZhbHVlID0gdmFsOworI2VuZGlmCisJcHV0X2Y2NF9yZWcoZnBfcmVnLCB2YWx1ZSk7CisJ cmVncy0+c3RhdHVzIHw9IFNSX0ZTX0RJUlRZOworCisJcmV0dXJuIDA7Cit9CisKKyNpZiBfX3Jp c2N2X3hsZW4gPT0gMzIKK2V4dGVybiB2b2lkIGdldF9mNjRfcmVnKHVuc2lnbmVkIGxvbmcgZnBf cmVnLCB1NjQgKnZhbHVlKTsKKworc3RhdGljIHU2NCBnZXRfZjY0X3JzKHVuc2lnbmVkIGxvbmcg aW5zbiwgdTggZnBfcmVnX29mZnNldCwKKwkJICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7 CisJdW5zaWduZWQgbG9uZyBmcF9yZWcgPSAoaW5zbiA+PiBmcF9yZWdfb2Zmc2V0KSAmIDB4MUY7 CisJdTY0IHZhbDsKKworCWdldF9mNjRfcmVnKGZwX3JlZywgJnZhbCk7CisJcmVncy0+c3RhdHVz IHw9IFNSX0ZTX0RJUlRZOworCisJcmV0dXJuIHZhbDsKK30KKyNlbHNlCisKK2V4dGVybiB1bnNp Z25lZCBsb25nIGdldF9mNjRfcmVnKHVuc2lnbmVkIGxvbmcgZnBfcmVnKTsKKworc3RhdGljIHVu c2lnbmVkIGxvbmcgZ2V0X2Y2NF9ycyh1bnNpZ25lZCBsb25nIGluc24sIHU4IGZwX3JlZ19vZmZz ZXQsCisJCQkJc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJdW5zaWduZWQgbG9uZyBmcF9yZWcg PSAoaW5zbiA+PiBmcF9yZWdfb2Zmc2V0KSAmIDB4MUY7CisJdW5zaWduZWQgbG9uZyB2YWw7CisK Kwl2YWwgPSBnZXRfZjY0X3JlZyhmcF9yZWcpOworCXJlZ3MtPnN0YXR1cyB8PSBTUl9GU19ESVJU WTsKKworCXJldHVybiB2YWw7Cit9CisKKyNlbmRpZgorCitleHRlcm4gdW5zaWduZWQgbG9uZyBn ZXRfZjMyX3JlZyh1bnNpZ25lZCBsb25nIGZwX3JlZyk7CisKK3N0YXRpYyB1bnNpZ25lZCBsb25n IGdldF9mMzJfcnModW5zaWduZWQgbG9uZyBpbnNuLCB1OCBmcF9yZWdfb2Zmc2V0LAorCQkJCXN0 cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXVuc2lnbmVkIGxvbmcgZnBfcmVnID0gKGluc24gPj4g ZnBfcmVnX29mZnNldCkgJiAweDFGOworCXVuc2lnbmVkIGxvbmcgdmFsOworCisJdmFsID0gZ2V0 X2YzMl9yZWcoZnBfcmVnKTsKKwlyZWdzLT5zdGF0dXMgfD0gU1JfRlNfRElSVFk7CisKKwlyZXR1 cm4gdmFsOworfQorCisjZWxzZSAvKiBDT05GSUdfRlBVICovCitzdGF0aWMgdm9pZCBzZXRfZjMy X3JkKHVuc2lnbmVkIGxvbmcgaW5zbiwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCisJCSAgICAgICB1 bnNpZ25lZCBsb25nIHZhbCkge30KKworc3RhdGljIHZvaWQgc2V0X2Y2NF9yZCh1bnNpZ25lZCBs b25nIGluc24sIHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1NjQgdmFsKSB7fQorCitzdGF0aWMgdW5z aWduZWQgbG9uZyBnZXRfZjY0X3JzKHVuc2lnbmVkIGxvbmcgaW5zbiwgdTggZnBfcmVnX29mZnNl dCwKKwkJCQlzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IHVuc2lnbmVkIGxvbmcgZ2V0X2YzMl9ycyh1bnNpZ25lZCBsb25nIGluc24sIHU4IGZwX3JlZ19v ZmZzZXQsCisJCQkJc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJcmV0dXJuIDA7Cit9CisKKyNl bmRpZgorCisjZGVmaW5lIEdFVF9GNjRfUlMyKGluc24sIHJlZ3MpIChnZXRfZjY0X3JzKGluc24s IDIwLCByZWdzKSkKKyNkZWZpbmUgR0VUX0Y2NF9SUzJDKGluc24sIHJlZ3MpIChnZXRfZjY0X3Jz KGluc24sIDIsIHJlZ3MpKQorI2RlZmluZSBHRVRfRjY0X1JTMlMoaW5zbiwgcmVncykgKGdldF9m NjRfcnMoUlZDX1JTMlMoaW5zbiksIDAsIHJlZ3MpKQorCisjZGVmaW5lIEdFVF9GMzJfUlMyKGlu c24sIHJlZ3MpIChnZXRfZjMyX3JzKGluc24sIDIwLCByZWdzKSkKKyNkZWZpbmUgR0VUX0YzMl9S UzJDKGluc24sIHJlZ3MpIChnZXRfZjMyX3JzKGluc24sIDIsIHJlZ3MpKQorI2RlZmluZSBHRVRf RjMyX1JTMlMoaW5zbiwgcmVncykgKGdldF9mMzJfcnMoUlZDX1JTMlMoaW5zbiksIDAsIHJlZ3Mp KQorCiAjaWZkZWYgQ09ORklHX1JJU0NWX01fTU9ERQogc3RhdGljIGlubGluZSBpbnQgbG9hZF91 OChzdHJ1Y3QgcHRfcmVncyAqcmVncywgY29uc3QgdTggKmFkZHIsIHU4ICpyX3ZhbCkKIHsKQEAg LTM2MiwxNSArNDcxLDIxIEBAIGludCBoYW5kbGVfbWlzYWxpZ25lZF9sb2FkKHN0cnVjdCBwdF9y ZWdzICpyZWdzKQogCQlyZXR1cm4gLTE7CiAJfQogCisJaWYgKCFJU19FTkFCTEVEKENPTkZJR19G UFUpICYmIGZwKQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisKIAl2YWwuZGF0YV91NjQgPSAwOwog CWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogCQlpZiAobG9hZF91OChyZWdzLCAodm9pZCAq KShhZGRyICsgaSksICZ2YWwuZGF0YV9ieXRlc1tpXSkpCiAJCQlyZXR1cm4gLTE7CiAJfQogCi0J aWYgKGZwKQotCQlyZXR1cm4gLTE7Ci0JU0VUX1JEKGluc24sIHJlZ3MsIHZhbC5kYXRhX3Vsb25n IDw8IHNoaWZ0ID4+IHNoaWZ0KTsKKwlpZiAoIWZwKQorCQlTRVRfUkQoaW5zbiwgcmVncywgdmFs LmRhdGFfdWxvbmcgPDwgc2hpZnQgPj4gc2hpZnQpOworCWVsc2UgaWYgKGxlbiA9PSA4KQorCQlz ZXRfZjY0X3JkKGluc24sIHJlZ3MsIHZhbC5kYXRhX3U2NCk7CisJZWxzZQorCQlzZXRfZjMyX3Jk KGluc24sIHJlZ3MsIHZhbC5kYXRhX3Vsb25nKTsKIAogCXJlZ3MtPmVwYyA9IGVwYyArIElOU05f TEVOKGluc24pOwogCkBAIC0zODMsNyArNDk4LDcgQEAgaW50IGhhbmRsZV9taXNhbGlnbmVkX3N0 b3JlKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCXVuc2lnbmVkIGxvbmcgZXBjID0gcmVncy0+ZXBj OwogCXVuc2lnbmVkIGxvbmcgaW5zbjsKIAl1bnNpZ25lZCBsb25nIGFkZHIgPSByZWdzLT5iYWRh ZGRyOwotCWludCBpLCBsZW4gPSAwOworCWludCBpLCBsZW4gPSAwLCBmcCA9IDA7CiAKIAlwZXJm X3N3X2V2ZW50KFBFUkZfQ09VTlRfU1dfQUxJR05NRU5UX0ZBVUxUUywgMSwgcmVncywgYWRkcik7 CiAKQEAgLTQwMCw2ICs1MTUsMTQgQEAgaW50IGhhbmRsZV9taXNhbGlnbmVkX3N0b3JlKHN0cnVj dCBwdF9yZWdzICpyZWdzKQogCX0gZWxzZSBpZiAoKGluc24gJiBJTlNOX01BU0tfU0QpID09IElO U05fTUFUQ0hfU0QpIHsKIAkJbGVuID0gODsKICNlbmRpZgorCX0gZWxzZSBpZiAoKGluc24gJiBJ TlNOX01BU0tfRlNEKSA9PSBJTlNOX01BVENIX0ZTRCkgeworCQlmcCA9IDE7CisJCWxlbiA9IDg7 CisJCXZhbC5kYXRhX3U2NCA9IEdFVF9GNjRfUlMyKGluc24sIHJlZ3MpOworCX0gZWxzZSBpZiAo KGluc24gJiBJTlNOX01BU0tfRlNXKSA9PSBJTlNOX01BVENIX0ZTVykgeworCQlmcCA9IDE7CisJ CWxlbiA9IDQ7CisJCXZhbC5kYXRhX3Vsb25nID0gR0VUX0YzMl9SUzIoaW5zbiwgcmVncyk7CiAJ fSBlbHNlIGlmICgoaW5zbiAmIElOU05fTUFTS19TSCkgPT0gSU5TTl9NQVRDSF9TSCkgewogCQls ZW4gPSAyOwogI2lmIGRlZmluZWQoQ09ORklHXzY0QklUKQpAQCAtNDE4LDExICs1NDEsMzIgQEAg aW50IGhhbmRsZV9taXNhbGlnbmVkX3N0b3JlKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCQkgICAo KGluc24gPj4gU0hfUkQpICYgMHgxZikpIHsKIAkJbGVuID0gNDsKIAkJdmFsLmRhdGFfdWxvbmcg PSBHRVRfUlMyQyhpbnNuLCByZWdzKTsKKwl9IGVsc2UgaWYgKChpbnNuICYgSU5TTl9NQVNLX0Nf RlNEKSA9PSBJTlNOX01BVENIX0NfRlNEKSB7CisJCWZwID0gMTsKKwkJbGVuID0gODsKKwkJdmFs LmRhdGFfdTY0ID0gR0VUX0Y2NF9SUzJTKGluc24sIHJlZ3MpOworCX0gZWxzZSBpZiAoKGluc24g JiBJTlNOX01BU0tfQ19GU0RTUCkgPT0gSU5TTl9NQVRDSF9DX0ZTRFNQKSB7CisJCWZwID0gMTsK KwkJbGVuID0gODsKKwkJdmFsLmRhdGFfdTY0ID0gR0VUX0Y2NF9SUzJDKGluc24sIHJlZ3MpOwor I2lmICFkZWZpbmVkKENPTkZJR182NEJJVCkKKwl9IGVsc2UgaWYgKChpbnNuICYgSU5TTl9NQVNL X0NfRlNXKSA9PSBJTlNOX01BVENIX0NfRlNXKSB7CisJCWZwID0gMTsKKwkJbGVuID0gNDsKKwkJ dmFsLmRhdGFfdWxvbmcgPSBHRVRfRjMyX1JTMlMoaW5zbiwgcmVncyk7CisJfSBlbHNlIGlmICgo aW5zbiAmIElOU05fTUFTS19DX0ZTV1NQKSA9PSBJTlNOX01BVENIX0NfRlNXU1ApIHsKKwkJZnAg PSAxOworCQlsZW4gPSA0OworCQl2YWwuZGF0YV91bG9uZyA9IEdFVF9GMzJfUlMyQyhpbnNuLCBy ZWdzKTsKKyNlbmRpZgogCX0gZWxzZSB7CiAJCXJlZ3MtPmVwYyA9IGVwYzsKIAkJcmV0dXJuIC0x OwogCX0KIAorCWlmICghSVNfRU5BQkxFRChDT05GSUdfRlBVKSAmJiBmcCkKKwkJcmV0dXJuIC1F T1BOT1RTVVBQOworCiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAJCWlmIChzdG9yZV91 OChyZWdzLCAodm9pZCAqKShhZGRyICsgaSksIHZhbC5kYXRhX2J5dGVzW2ldKSkKIAkJCXJldHVy biAtMTsKLS0gCjIuNDAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtcmlzY3YK