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 D37E6CCF9F8 for ; Wed, 5 Nov 2025 08:29:16 +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=9PbwSdJSTtVJ2D2Aa2ZoUDntEUqdrFtVEHuuvHAK8fY=; b=s/B2EOIDSmKlRV R8FIynSoVRJP390EoydDsWO0hXiQoZGQqdBhAvOCkfiQhFnTXuXRA6RYlPDOM3A06moW3F5mZbFPy 5wKQIC1htwaKJ3ZGXUz2zynsGLnvnxYlKgCQq1Hqr5zyjaME9F35qRfVWLJErMTuahGUS6esB+iFy QR3lBZewHvjw6/Ype/2iE3XDprXJ7BKMRuN918RmickQXfBjdnHf/vtn4jRoToekHpxKWaGM8DiVm p5bIFHpMnssP0oQcEiMlBDNnXgp2yGJB3dQfki02koPS8Na9hgHjR5nspoHJ2iSw/2Oljvbd0byxX hxGTNaKWd2EnzlSKbVXg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vGYt8-0000000DHOc-1HC4; Wed, 05 Nov 2025 08:29:06 +0000 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vGYt5-0000000DHM6-0tly for linux-riscv@lists.infradead.org; Wed, 05 Nov 2025 08:29:05 +0000 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2955623e6faso40950505ad.1 for ; Wed, 05 Nov 2025 00:29:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1762331342; x=1762936142; 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=anlUB3rXmmV23za2cZAX6kM83tarAqtEt9FUbE3gVZg=; b=PqvsN4lmfRsYoTS2gp5hwy/8Kl8xEaV7SDpTUaUMO+7n74rObXxlxL/KQhbJwTxH4Y l6rCQOXapy4S0tG0nvoSfXPw53xxRqRatf5ffoVSuZutaIgVC5n5wHHiax7lLqn5vW7G AapA5/maMmbvAQKzbFUaM47Z2X7kDwH6jL0LJ2wprIqUegmk2/oAvpPNfWgEzlO16ASg tNelW0QOk4Z2CC4yRwBwJD5dvEoy6Hb6lrD20mL5kDyx14EMwYLtl4KxNJY0zipNAxqI zs7Oy4LcQv9eb1LbohC1irfu2SFTxSJUj+GIjrJplWaoeWG2a0o4gYTvtLDIYOOCDguH 1wpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762331342; x=1762936142; 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=anlUB3rXmmV23za2cZAX6kM83tarAqtEt9FUbE3gVZg=; b=bVNEQskVoUeu7Gpoy3spDaTC6hKAqGlQhRYue33xyg7cHvALgfn3AM/HD96gUTd/Dm 06rdQZ+3MmfiT7nfk/TwWuBz/19wQYkBE+KF4iuvqoLzX0xEC7WdGI0FiME79DaVII8L UKK4/ivTzUkk2G2ckk7t6IaD2tum1XGTCGUovlrfuc7eFUYRdCJ46IjTNTmNvAaeH4xW yK45M8qIBfJcq6U1kicaa8Rf27jDyilKb77CK+okWE6PK62jZLBQGub92wX8VX+5xFll MdZnl1w7Gp8z6kdE2+KRcQ0Q2pf7bNIos+c8jQt+EBfQNRFNBegfLoaa/JNnOmwsev1Y 3moQ== X-Forwarded-Encrypted: i=1; AJvYcCVBX/+85ovdyV8MwoLQhtQrtahE+whk+glDL5yTHrb7F1j6URLmfNIKdJcpl40I3nhcx1RIumZWMx7LRg==@lists.infradead.org X-Gm-Message-State: AOJu0Yz1DJrnxX6Mdum1FmShDfl+gvZB4KS5UtBpLtdNe2B8IMTzlbE0 ZtQfGVbcp7jbZg+Dy42jfMKpwdZ5QqTo8Idmn7KBWZVooTlp61I53w18EbEHDs+kGeo= X-Gm-Gg: ASbGnctiPTtaRdhaw9k7NE51sgVTOgyENaBWWwDegYRz5bH8x66KG+XNNQcaLpdgi4C fUrwryRjoAg9FONjuXV7Oq5JmdSUo4+/ZWMS4hTHpofG8l1keUWPx5PpYbtmb+a6cQP0iJDE7yI wu6x7sG+VKzIGwuovdpTrYd801NcEbOe1WBjW+kf8z/GJfCrlAFXftTeQkMJo3b7Y0jhsqBjF3K aN5TXnigCrWuWd/WL3rZOZl4DzC0R+qRmi3tLc0QEAtuSd16y6Oniw1wp+1RRLLBZuhLUgzUQ0L 2G9C5AtNFuzECDrpsAGXOhD4W4JVqewD0xzQJzKLH1kfbBmnhYiujnx5Qpb0lDr3bCefYgLz+/t fnZOyDfhYaWsicNEN6hJo3o9hHjTfSnzqJ8XpLrf1njKYCOJ4VV21IpnH0z9CXGHmTs8= X-Google-Smtp-Source: AGHT+IEHRv9sGZgg4O10g1SzBN2n4TT/3gcAW3pvJKqPdS5cgXt2xL3Bi+wAIWW6gKq7wqZNbqi4BA== X-Received: by 2002:a17:903:944:b0:269:b2e5:ee48 with SMTP id d9443c01a7336-2962ae91307mr35889295ad.52.1762331342396; Wed, 05 Nov 2025 00:29:02 -0800 (PST) Received: from cleger.eu.int ([2001:41d0:420:f300::]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29601a741e3sm51870875ad.98.2025.11.05.00.28.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 00:29:01 -0800 (PST) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: Paul Walmsley , Palmer Dabbelt , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Himanshu Chauhan , Anup Patel , Xu Lu , Atish Patra , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , Yunhui Cui Subject: [PATCH v8 2/5] riscv: add support for SBI Supervisor Software Events extension Date: Wed, 5 Nov 2025 08:26:34 +0000 Message-ID: <20251105082639.342973-3-cleger@rivosinc.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251105082639.342973-1-cleger@rivosinc.com> References: <20251105082639.342973-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251105_002903_863875_31DD2F6E X-CRM114-Status: GOOD ( 30.27 ) 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 VGhlIFNCSSBTU0UgZXh0ZW5zaW9uIGFsbG93cyB0aGUgc3VwZXJ2aXNvciBzb2Z0d2FyZSB0byBi ZSBub3RpZmllZCBieQp0aGUgU0JJIG9mIHNwZWNpZmljIGV2ZW50cyB0aGF0IGFyZSBub3QgbWFz a2FibGUuIFRoZSBjb250ZXh0IHN3aXRjaCBpcwpoYW5kbGVkIHBhcnRpYWxseSBieSB0aGUgZmly bXdhcmUgd2hpY2ggd2lsbCBzYXZlIHJlZ2lzdGVycyBhNiBhbmQgYTcuCldoZW4gZW50ZXJpbmcg a2VybmVsIHdlIGNhbiByZWx5IG9uIHRoZXNlIDIgcmVnaXN0ZXJzIHRvIHNldHVwIHRoZSBzdGFj awphbmQgc2F2ZSBhbGwgdGhlIHJlZ2lzdGVycy4KClNpbmNlIFNTRSBldmVudHMgY2FuIGJlIGRl bGl2ZXJlZCBhdCBhbnkgdGltZSB0byB0aGUga2VybmVsIChpbmNsdWRpbmcKZHVyaW5nIGV4Y2Vw dGlvbiBoYW5kbGluZywgd2UgbmVlZCBhIHdheSB0byBsb2NhdGUgdGhlIGN1cnJlbnRfdGFzayBm b3IKY29udGV4dCB0cmFja2luZy4gT24gUklTQy1WLCBpdCBpcyBzb3RyZWQgaW4gc2NyYXRjaCB3 aGVuIGluIHVzZXIgc3BhY2UKb3IgdHAgd2hlbiBpbiBrZXJuZWwgc3BhY2UgKGluIHdoaWNoIGNh c2UgU1NDUkFUQ0ggaXMgemVybykuIEJ1dCBhdCBhCmF0IHRoZSBiZWdpbm5pbmcgb2YgZXhjZXB0 aW9uIGhhbmRsaW5nLCBTU0NSQVRDSCBpcyB1c2VkIHRvIHN3YXAgdHAgYW5kCmNoZWNrIHRoZSBv cmlnaW4gb2YgdGhlIGV4Y2VwdGlvbi4gSWYgaW50ZXJydXB0ZWQgYXQgdGhhdCBwb2ludCwgdGhl biwKdGhlcmUgaXMgbm8gd2F5IHRvIHJlbGlhYmx5IGtub3cgd2VyZSBpcyBsb2NhdGVkIHRoZSBj dXJyZW50CnRhc2tfc3RydWN0LiBFdmVuIGNoZWNraW5nIHRoZSBpbnRlcnJ1cHRpb24gbG9jYXRp b24gd29uJ3Qgd29yayBhcyBTU0UKZXZlbnQgY2FuIGJlIG5lc3RlZCBvbiB0b3Agb2YgZWFjaCBv dGhlciBzbyB0aGUgb3JpZ2luYWwgaW50ZXJydXB0aW9uCnNpdGUgbWlnaHQgYmUgbG9zdCBhdCBz b21lIHBvaW50LiBJbiBvcmRlciB0byByZXRyaWV2ZSBpdCByZWxpYWJseSwKc3RvcmUgdGhlIGN1 cnJlbnQgdGFzayBpbiBhbiBhZGRpdGlvbmFsIF9fc3NlX2VudHJ5X3Rhc2sgcGVyX2NwdSBhcnJh eS4KVGhpcyBhcnJheSBpcyB0aGVuIHVzZWQgdG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgdGFzayBi YXNlZCBvbiB0aGUKaGFydCBJRCB0aGF0IGlzIHBhc3NlZCB0byB0aGUgU1NFIGV2ZW50IGhhbmRs ZXIgaW4gYTYuCgpUaGF0IGJlaW5nIHNhaWQsIHRoZSB3YXkgdGhlIGN1cnJlbnQgdGFzayBzdHJ1 Y3QgaXMgc3RvcmVkIHNob3VsZApwcm9iYWJseSBiZSByZXdvcmtlZCB0byBmaW5kIGEgYmV0dGVy IHJlbGlhYmxlIGFsdGVybmF0aXZlLgoKU2luY2UgZWFjaCBldmVudHMgKGFuZCBlYWNoIENQVSBm b3IgbG9jYWwgZXZlbnRzKSBoYXZlIHRoZWlyIG93bgpjb250ZXh0IGFuZCBjYW4gcHJlZW1wdCBl YWNoIG90aGVyLCBhbGxvY2F0ZSBhIHN0YWNrIChhbmQgYSBzaGFkb3cgc3RhY2sKaWYgbmVlZGVk IGZvciBlYWNoIG9mIHRoZW0gKGFuZCBmb3IgZWFjaCBjcHUgZm9yIGxvY2FsIGV2ZW50cykuCgpX aGVuIGNvbXBsZXRpbmcgdGhlIGV2ZW50LCBpZiB3ZSB3ZXJlIGNvbWluZyBmcm9tIGtlcm5lbCB3 aXRoIGludGVycnVwdHMKZGlzYWJsZWQsIHNpbXBseSByZXR1cm4gdGhlcmUuIElmIGNvbWluZyBm cm9tIHVzZXJzcGFjZSBvciBrZXJuZWwgd2l0aAppbnRlcnJ1cHRzIGVuYWJsZWQsIHNpbXVsYXRl IGFuIGludGVycnVwdCBleGNlcHRpb24gYnkgc2V0dGluZyBJRV9TSUUgaW4KQ1NSX0lQIHRvIGFs bG93IGRlbGl2ZXJ5IG9mIHNpZ25hbHMgdG8gdXNlciB0YXNrLiBGb3IgaW5zdGFuY2UgdGhpcyBj YW4KaGFwcGVuLCB3aGVuIGEgUkFTIGV2ZW50IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBhIHVzZXIg YXBwbGljYXRpb24gYW5kIGEKU0lHQlVTIGhhcyBiZWVuIHNlbnQgdG8gYSB0YXNrLgoKU2lnbmVk LW9mZi1ieTogQ2zDqW1lbnQgTMOpZ2VyIDxjbGVnZXJAcml2b3NpbmMuY29tPgotLS0KIGFyY2gv cmlzY3YvaW5jbHVkZS9hc20vYXNtLmggICAgICAgICB8ICAxNCArKy0KIGFyY2gvcmlzY3YvaW5j bHVkZS9hc20vc2NzLmggICAgICAgICB8ICAgNyArKwogYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9z c2UuaCAgICAgICAgIHwgIDQ3ICsrKysrKysKIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNo X3RvLmggICB8ICAxNCArKysKIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCB8 ICAgMSArCiBhcmNoL3Jpc2N2L2tlcm5lbC9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwogYXJj aC9yaXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYyAgICAgIHwgIDE0ICsrKwogYXJjaC9yaXNjdi9r ZXJuZWwvc2JpX3NzZS5jICAgICAgICAgIHwgMTYyICsrKysrKysrKysrKysrKysrKysrKysrKwog YXJjaC9yaXNjdi9rZXJuZWwvc2JpX3NzZV9lbnRyeS5TICAgIHwgMTc4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCA0MzUgaW5zZXJ0aW9ucygrKSwgMyBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3NzZS5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9rZXJuZWwvc2JpX3NzZS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9rZXJuZWwvc2JpX3NzZV9lbnRyeS5TCgpkaWZmIC0tZ2l0 IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20v YXNtLmgKaW5kZXggYWMyODA2NmJiNTY0Li5hOTgxZDUyMGY2ZDMgMTAwNjQ0Ci0tLSBhL2FyY2gv cmlzY3YvaW5jbHVkZS9hc20vYXNtLmgKKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20u aApAQCAtODQsMTYgKzg0LDI0IEBACiAuZW5kbQogCiAjaWZkZWYgQ09ORklHX1NNUAotLm1hY3Jv IGFzbV9wZXJfY3B1IGRzdCBzeW0gdG1wCi0JbHcgICAgXHRtcCwgVEFTS19USV9DUFVfTlVNKHRw KQotCXNsbGkgIFx0bXAsIFx0bXAsIFJJU0NWX0xHUFRSCisubWFjcm8gYXNtX3Blcl9jcHVfd2l0 aF9jcHUgZHN0IHN5bSB0bXAgY3B1CisJc2xsaSAgXHRtcCwgXGNwdSwgUklTQ1ZfTEdQVFIKIAls YSAgICBcZHN0LCBfX3Blcl9jcHVfb2Zmc2V0CiAJYWRkICAgXGRzdCwgXGRzdCwgXHRtcAogCVJF R19MIFx0bXAsIDAoXGRzdCkKIAlsYSAgICBcZHN0LCBcc3ltCiAJYWRkICAgXGRzdCwgXGRzdCwg XHRtcAogLmVuZG0KKworLm1hY3JvIGFzbV9wZXJfY3B1IGRzdCBzeW0gdG1wCisJbHcgXHRtcCwg VEFTS19USV9DUFVfTlVNKHRwKQorCWFzbV9wZXJfY3B1X3dpdGhfY3B1IFxkc3QgXHN5bSBcdG1w IFx0bXAKKy5lbmRtCiAjZWxzZSAvKiBDT05GSUdfU01QICovCisubWFjcm8gYXNtX3Blcl9jcHVf d2l0aF9jcHUgZHN0IHN5bSB0bXAgY3B1CisJbGEgICAgXGRzdCwgXHN5bQorLmVuZG0KKwogLm1h Y3JvIGFzbV9wZXJfY3B1IGRzdCBzeW0gdG1wCiAJbGEgICAgXGRzdCwgXHN5bQogLmVuZG0KZGlm ZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc2NzLmggYi9hcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL3Njcy5oCmluZGV4IGFiNzcxNGFhOTNiZC4uZmQ4MjQyYzU0ZTkwIDEwMDY0NAotLS0g YS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Njcy5oCisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9h c20vc2NzLmgKQEAgLTE4LDYgKzE4LDExIEBACiAJbG9hZF9wZXJfY3B1IGdwLCBpcnFfc2hhZG93 X2NhbGxfc3RhY2tfcHRyLCBcdG1wCiAuZW5kbQogCisvKiBMb2FkIHRoZSBwZXItQ1BVIElSUSBz aGFkb3cgY2FsbCBzdGFjayB0byBncC4gKi8KKy5tYWNybyBzY3NfbG9hZF9zc2Vfc3RhY2sgcmVn X2V2dAorCVJFR19MIGdwLCBTU0VfUkVHX0VWVF9TSEFET1dfU1RBQ0soXHJlZ19ldnQpCisuZW5k bQorCiAvKiBMb2FkIHRhc2tfc2NzX3NwKGN1cnJlbnQpIHRvIGdwLiAqLwogLm1hY3JvIHNjc19s b2FkX2N1cnJlbnQKIAlSRUdfTAlncCwgVEFTS19USV9TQ1NfU1AodHApCkBAIC00MSw2ICs0Niw4 IEBACiAuZW5kbQogLm1hY3JvIHNjc19sb2FkX2lycV9zdGFjayB0bXAKIC5lbmRtCisubWFjcm8g c2NzX2xvYWRfc3NlX3N0YWNrIHJlZ19ldnQKKy5lbmRtCiAubWFjcm8gc2NzX2xvYWRfY3VycmVu dAogLmVuZG0KIC5tYWNybyBzY3NfbG9hZF9jdXJyZW50X2lmX3Rhc2tfY2hhbmdlZCBwcmV2CmRp ZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3NzZS5oIGIvYXJjaC9yaXNjdi9pbmNs dWRlL2FzbS9zc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQz Y2U4YzJiNTIyMQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3Nl LmgKQEAgLTAsMCArMSw0NyBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b25seSAqLworLyoKKyAqIENvcHlyaWdodCAoQykgMjAyNCBSaXZvcyBJbmMuCisgKi8KKyNpZm5k ZWYgX19BU01fU1NFX0gKKyNkZWZpbmUgX19BU01fU1NFX0gKKworI2luY2x1ZGUgPGFzbS9zYmku aD4KKworI2lmZGVmIENPTkZJR19SSVNDVl9TQklfU1NFCisKK3N0cnVjdCBzc2VfZXZlbnRfaW50 ZXJydXB0ZWRfc3RhdGUgeworCXVuc2lnbmVkIGxvbmcgYTY7CisJdW5zaWduZWQgbG9uZyBhNzsK K307CisKK3N0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhIHsKKwl2b2lkICpzdGFjazsKKwl2b2lk ICpzaGFkb3dfc3RhY2s7CisJdW5zaWduZWQgbG9uZyB0bXA7CisJc3RydWN0IHNzZV9ldmVudF9p bnRlcnJ1cHRlZF9zdGF0ZSBpbnRlcnJ1cHRlZDsKKwl1bnNpZ25lZCBsb25nIGludGVycnVwdGVk X3BoeXM7CisJdTMyIGV2dF9pZDsKKwl1bnNpZ25lZCBpbnQgaGFydF9pZDsKKwl1bnNpZ25lZCBp bnQgY3B1X2lkOworfTsKKworc3RhdGljIGlubGluZSBib29sIHNzZV9ldmVudF9pc19nbG9iYWwo dTMyIGV2dCkKK3sKKwlyZXR1cm4gISEoZXZ0ICYgU0JJX1NTRV9FVkVOVF9HTE9CQUwpOworfQor Cit2b2lkIGFyY2hfc3NlX2V2ZW50X3VwZGF0ZV9jcHUoc3RydWN0IHNzZV9ldmVudF9hcmNoX2Rh dGEgKmFyY2hfZXZ0LCBpbnQgY3B1KTsKK2ludCBhcmNoX3NzZV9pbml0X2V2ZW50KHN0cnVjdCBz c2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCwgdTMyIGV2dF9pZCwKKwkJCWludCBjcHUpOwor dm9pZCBhcmNoX3NzZV9mcmVlX2V2ZW50KHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNo X2V2dCk7CitpbnQgYXJjaF9zc2VfcmVnaXN0ZXJfZXZlbnQoc3RydWN0IHNzZV9ldmVudF9hcmNo X2RhdGEgKmFyY2hfZXZ0KTsKKwordm9pZCBzc2VfaGFuZGxlX2V2ZW50KHN0cnVjdCBzc2VfZXZl bnRfYXJjaF9kYXRhICphcmNoX2V2dCwKKwkJICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwor YXNtbGlua2FnZSB2b2lkIGhhbmRsZV9zc2Uodm9pZCk7Cithc21saW5rYWdlIHZvaWQgZG9fc3Nl KHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCwKKwkJICAgICAgIHN0cnVjdCBw dF9yZWdzICpyZWcpOworCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2 L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hf dG8uaAppbmRleCAwZTcxZWI4MmY5MjAuLjcwZTY4ZTYzMDIxNiAxMDA2NDQKLS0tIGEvYXJjaC9y aXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaAorKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNt L3N3aXRjaF90by5oCkBAIC04OCw2ICs4OCwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19zd2l0 Y2hfdG9fZW52Y2ZnKHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCkKIAkJCTo6ICJyIiAobmV4dC0+ dGhyZWFkLmVudmNmZykgOiAibWVtb3J5Iik7CiB9CiAKKyNpZmRlZiBDT05GSUdfUklTQ1ZfU0JJ X1NTRQorREVDTEFSRV9QRVJfQ1BVKHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBfX3NiaV9zc2VfZW50 cnlfdGFzayk7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3N3aXRjaF9zYmlfc3NlX2VudHJ5X3Rh c2soc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KQoreworCV9fdGhpc19jcHVfd3JpdGUoX19zYmlf c3NlX2VudHJ5X3Rhc2ssIG5leHQpOworfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3N3 aXRjaF9zYmlfc3NlX2VudHJ5X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KQoreworfQor I2VuZGlmCisKIGV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKl9fc3dpdGNoX3RvKHN0cnVjdCB0 YXNrX3N0cnVjdCAqLAogCQkJCSAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CiAKQEAgLTEy Miw2ICsxMzUsNyBAQCBkbyB7CQkJCQkJCVwKIAlpZiAoc3dpdGNoX3RvX3Nob3VsZF9mbHVzaF9p Y2FjaGUoX19uZXh0KSkJXAogCQlsb2NhbF9mbHVzaF9pY2FjaGVfYWxsKCk7CQlcCiAJX19zd2l0 Y2hfdG9fZW52Y2ZnKF9fbmV4dCk7CQkJXAorCV9fc3dpdGNoX3NiaV9zc2VfZW50cnlfdGFzayhf X25leHQpOwkJCVwKIAkoKGxhc3QpID0gX19zd2l0Y2hfdG8oX19wcmV2LCBfX25leHQpKTsJCVwK IH0gd2hpbGUgKDApCiAKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFk X2luZm8uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAppbmRleCA4MzZk ODBkZDI5MjEuLmM1ZTExNTljZWRjZiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2Fz bS90aHJlYWRfaW5mby5oCisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8u aApAQCAtMzYsNiArMzYsNyBAQAogI2RlZmluZSBPVkVSRkxPV19TVEFDS19TSVpFICAgICBTWl80 SwogCiAjZGVmaW5lIElSUV9TVEFDS19TSVpFCQlUSFJFQURfU0laRQorI2RlZmluZSBTU0VfU1RB Q0tfU0laRQkJVEhSRUFEX1NJWkUKIAogI2lmbmRlZiBfX0FTU0VNQkxFUl9fCiAKZGlmZiAtLWdp dCBhL2FyY2gvcmlzY3Yva2VybmVsL01ha2VmaWxlIGIvYXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZp bGUKaW5kZXggZjYwZmNlNjliNzI1Li4yMmJjOGJkYWMwNzkgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlz Y3Yva2VybmVsL01ha2VmaWxlCisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL01ha2VmaWxlCkBAIC05 OSw2ICs5OSw3IEBAIG9iai0kKENPTkZJR19EWU5BTUlDX0ZUUkFDRSkJKz0gbWNvdW50LWR5bi5v CiBvYmotJChDT05GSUdfUEVSRl9FVkVOVFMpCSs9IHBlcmZfY2FsbGNoYWluLm8KIG9iai0kKENP TkZJR19IQVZFX1BFUkZfUkVHUykJKz0gcGVyZl9yZWdzLm8KIG9iai0kKENPTkZJR19SSVNDVl9T QkkpCQkrPSBzYmkubyBzYmlfZWNhbGwubworb2JqLSQoQ09ORklHX1JJU0NWX1NCSV9TU0UpCSs9 IHNiaV9zc2UubyBzYmlfc3NlX2VudHJ5Lm8KIGlmZXEgKCQoQ09ORklHX1JJU0NWX1NCSSksIHkp CiBvYmotJChDT05GSUdfU01QKQkJKz0gc2JpLWlwaS5vCiBvYmotJChDT05GSUdfU01QKSArPSBj cHVfb3BzX3NiaS5vCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5j IGIvYXJjaC9yaXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYwppbmRleCA3ZDQyZDNiOGEzMmEuLmRj NDU2YTRhMDA4MCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYwor KysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jCkBAIC0xNSw2ICsxNSw4IEBACiAj aW5jbHVkZSA8YXNtL3B0cmFjZS5oPgogI2luY2x1ZGUgPGFzbS9jcHVfb3BzX3NiaS5oPgogI2lu Y2x1ZGUgPGFzbS9zdGFja3RyYWNlLmg+CisjaW5jbHVkZSA8YXNtL3NiaS5oPgorI2luY2x1ZGUg PGFzbS9zc2UuaD4KICNpbmNsdWRlIDxhc20vc3VzcGVuZC5oPgogCiB2b2lkIGFzbV9vZmZzZXRz KHZvaWQpOwpAQCAtNTI5LDQgKzUzMSwxNiBAQCB2b2lkIGFzbV9vZmZzZXRzKHZvaWQpCiAJREVG SU5FKEZSRUdTX0E2LAkgICAgb2Zmc2V0b2Yoc3RydWN0IF9fYXJjaF9mdHJhY2VfcmVncywgYTYp KTsKIAlERUZJTkUoRlJFR1NfQTcsCSAgICBvZmZzZXRvZihzdHJ1Y3QgX19hcmNoX2Z0cmFjZV9y ZWdzLCBhNykpOwogI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfUklTQ1ZfU0JJX1NTRQorCU9GRlNF VChTU0VfUkVHX0VWVF9TVEFDSywgc3NlX2V2ZW50X2FyY2hfZGF0YSwgc3RhY2spOworCU9GRlNF VChTU0VfUkVHX0VWVF9TSEFET1dfU1RBQ0ssIHNzZV9ldmVudF9hcmNoX2RhdGEsIHNoYWRvd19z dGFjayk7CisJT0ZGU0VUKFNTRV9SRUdfRVZUX1RNUCwgc3NlX2V2ZW50X2FyY2hfZGF0YSwgdG1w KTsKKwlPRkZTRVQoU1NFX1JFR19IQVJUX0lELCBzc2VfZXZlbnRfYXJjaF9kYXRhLCBoYXJ0X2lk KTsKKwlPRkZTRVQoU1NFX1JFR19DUFVfSUQsIHNzZV9ldmVudF9hcmNoX2RhdGEsIGNwdV9pZCk7 CisKKwlERUZJTkUoU0JJX0VYVF9TU0UsIFNCSV9FWFRfU1NFKTsKKwlERUZJTkUoU0JJX1NTRV9F VkVOVF9DT01QTEVURSwgU0JJX1NTRV9FVkVOVF9DT01QTEVURSk7CisJREVGSU5FKEFTTV9OUl9D UFVTLCBOUl9DUFVTKTsKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwv c2JpX3NzZS5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvc2JpX3NzZS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjMwYWU5ZmY3N2M5Ci0tLSAvZGV2L251bGwKKysrIGIv YXJjaC9yaXNjdi9rZXJuZWwvc2JpX3NzZS5jCkBAIC0wLDAgKzEsMTYyIEBACisvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorLyoKKyAqIENvcHlyaWdodCAoQykg MjAyNSBSaXZvcyBJbmMuCisgKi8KKyNpbmNsdWRlIDxsaW51eC9ubWkuaD4KKyNpbmNsdWRlIDxs aW51eC9zY3MuaD4KKyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPgorI2luY2x1ZGUgPGxpbnV4 L3BlcmNwdS1kZWZzLmg+CisKKyNpbmNsdWRlIDxhc20vYXNtLXByb3RvdHlwZXMuaD4KKyNpbmNs dWRlIDxhc20vc3dpdGNoX3RvLmg+CisjaW5jbHVkZSA8YXNtL2lycV9zdGFjay5oPgorI2luY2x1 ZGUgPGFzbS9zYmkuaD4KKyNpbmNsdWRlIDxhc20vc3NlLmg+CisKK0RFRklORV9QRVJfQ1BVKHN0 cnVjdCB0YXNrX3N0cnVjdCAqLCBfX3NiaV9zc2VfZW50cnlfdGFzayk7CisKK3ZvaWQgX193ZWFr IHNzZV9oYW5kbGVfZXZlbnQoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LCBz dHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKK30KKwordm9pZCBkb19zc2Uoc3RydWN0IHNzZV9ldmVu dF9hcmNoX2RhdGEgKmFyY2hfZXZ0LCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlubWlfZW50 ZXIoKTsKKworCS8qIFJldHJpZXZlIG1pc3NpbmcgR1BScyBmcm9tIFNCSSAqLworCXNiaV9lY2Fs bChTQklfRVhUX1NTRSwgU0JJX1NTRV9FVkVOVF9BVFRSX1JFQUQsIGFyY2hfZXZ0LT5ldnRfaWQs CisJCSAgU0JJX1NTRV9BVFRSX0lOVEVSUlVQVEVEX0E2LAorCQkgIChTQklfU1NFX0FUVFJfSU5U RVJSVVBURURfQTcgLSBTQklfU1NFX0FUVFJfSU5URVJSVVBURURfQTYpICsgMSwKKwkJICBhcmNo X2V2dC0+aW50ZXJydXB0ZWRfcGh5cywgMCwgMCk7CisKKwltZW1jcHkoJnJlZ3MtPmE2LCAmYXJj aF9ldnQtPmludGVycnVwdGVkLCBzaXplb2YoYXJjaF9ldnQtPmludGVycnVwdGVkKSk7CisKKwlz c2VfaGFuZGxlX2V2ZW50KGFyY2hfZXZ0LCByZWdzKTsKKworCW5taV9leGl0KCk7Cit9CisKK3N0 YXRpYyB2b2lkICphbGxvY190b19zdGFja19wb2ludGVyKHZvaWQgKmFsbG9jKQoreworCXJldHVy biBhbGxvYyA/IGFsbG9jICsgU1NFX1NUQUNLX1NJWkUgOiBOVUxMOworfQorCitzdGF0aWMgdm9p ZCAqc3RhY2tfcG9pbnRlcl90b19hbGxvYyh2b2lkICpzdGFjaykKK3sKKwlyZXR1cm4gc3RhY2sg LSBTU0VfU1RBQ0tfU0laRTsKK30KKworI2lmZGVmIENPTkZJR19WTUFQX1NUQUNLCitzdGF0aWMg dm9pZCAqc3NlX3N0YWNrX2FsbG9jKHVuc2lnbmVkIGludCBjcHUpCit7CisJdm9pZCAqc3RhY2sg PSBhcmNoX2FsbG9jX3ZtYXBfc3RhY2soU1NFX1NUQUNLX1NJWkUsIGNwdV90b19ub2RlKGNwdSkp OworCisJcmV0dXJuIGFsbG9jX3RvX3N0YWNrX3BvaW50ZXIoc3RhY2spOworfQorCitzdGF0aWMg dm9pZCBzc2Vfc3RhY2tfZnJlZSh2b2lkICpzdGFjaykKK3sKKwl2ZnJlZShzdGFja19wb2ludGVy X3RvX2FsbG9jKHN0YWNrKSk7Cit9CisKK3N0YXRpYyB2b2lkIGFyY2hfc3NlX3N0YWNrX2NwdV9z eW5jKHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCkKK3sKKwl2b2lkICpwX3N0 YWNrID0gYXJjaF9ldnQtPnN0YWNrOworCXVuc2lnbmVkIGxvbmcgc3RhY2sgPSAodW5zaWduZWQg bG9uZylzdGFja19wb2ludGVyX3RvX2FsbG9jKHBfc3RhY2spOworCXVuc2lnbmVkIGxvbmcgc3Rh Y2tfZW5kID0gc3RhY2sgKyBTU0VfU1RBQ0tfU0laRTsKKworCS8qCisJICogRmx1c2ggdGhlIHRs YiB0byBhdm9pZCB0YWtpbmcgYW55IGV4Y2VwdGlvbiB3aGVuIGFjY2Vzc2luZyB0aGUKKwkgKiB2 bWFwcGVkIHN0YWNrIGluc2lkZSB0aGUgU1NFIGhhbmRsZXIKKwkgKi8KKwlpZiAoc3NlX2V2ZW50 X2lzX2dsb2JhbChhcmNoX2V2dC0+ZXZ0X2lkKSkKKwkJZmx1c2hfdGxiX2tlcm5lbF9yYW5nZShz dGFjaywgc3RhY2tfZW5kKTsKKwllbHNlCisJCWxvY2FsX2ZsdXNoX3RsYl9rZXJuZWxfcmFuZ2Uo c3RhY2ssIHN0YWNrX2VuZCk7Cit9CisjZWxzZSAvKiBDT05GSUdfVk1BUF9TVEFDSyAqLworc3Rh dGljIHZvaWQgKnNzZV9zdGFja19hbGxvYyh1bnNpZ25lZCBpbnQgY3B1KQoreworCXZvaWQgKnN0 YWNrID0ga21hbGxvYyhTU0VfU1RBQ0tfU0laRSwgR0ZQX0tFUk5FTCk7CisKKwlyZXR1cm4gYWxs b2NfdG9fc3RhY2tfcG9pbnRlcihzdGFjayk7Cit9CisKK3N0YXRpYyB2b2lkIHNzZV9zdGFja19m cmVlKHZvaWQgKnN0YWNrKQoreworCWtmcmVlKHN0YWNrX3BvaW50ZXJfdG9fYWxsb2Moc3RhY2sp KTsKK30KKworc3RhdGljIHZvaWQgYXJjaF9zc2Vfc3RhY2tfY3B1X3N5bmMoc3RydWN0IHNzZV9l dmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0KSB7fQorI2VuZGlmIC8qIENPTkZJR19WTUFQX1NUQUNL ICovCisKK3N0YXRpYyBpbnQgc3NlX2luaXRfc2NzKGludCBjcHUsIHN0cnVjdCBzc2VfZXZlbnRf YXJjaF9kYXRhICphcmNoX2V2dCkKK3sKKwl2b2lkICpzdGFjazsKKworCWlmICghc2NzX2lzX2Vu YWJsZWQoKSkKKwkJcmV0dXJuIDA7CisKKwlzdGFjayA9IHNjc19hbGxvYyhjcHVfdG9fbm9kZShj cHUpKTsKKwlpZiAoIXN0YWNrKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWFyY2hfZXZ0LT5zaGFk b3dfc3RhY2sgPSBzdGFjazsKKworCXJldHVybiAwOworfQorCit2b2lkIGFyY2hfc3NlX2V2ZW50 X3VwZGF0ZV9jcHUoc3RydWN0IHNzZV9ldmVudF9hcmNoX2RhdGEgKmFyY2hfZXZ0LCBpbnQgY3B1 KQoreworCWFyY2hfZXZ0LT5jcHVfaWQgPSBjcHU7CisJYXJjaF9ldnQtPmhhcnRfaWQgPSBjcHVp ZF90b19oYXJ0aWRfbWFwKGNwdSk7Cit9CisKK2ludCBhcmNoX3NzZV9pbml0X2V2ZW50KHN0cnVj dCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCwgdTMyIGV2dF9pZCwKKwkJCWludCBjcHUp Cit7CisJdm9pZCAqc3RhY2s7CisKKwlhcmNoX2V2dC0+ZXZ0X2lkID0gZXZ0X2lkOworCXN0YWNr ID0gc3NlX3N0YWNrX2FsbG9jKGNwdSk7CisJaWYgKCFzdGFjaykKKwkJcmV0dXJuIC1FTk9NRU07 CisKKwlhcmNoX2V2dC0+c3RhY2sgPSBzdGFjazsKKworCWlmIChzc2VfaW5pdF9zY3MoY3B1LCBh cmNoX2V2dCkpIHsKKwkJc3NlX3N0YWNrX2ZyZWUoYXJjaF9ldnQtPnN0YWNrKTsKKwkJcmV0dXJu IC1FTk9NRU07CisJfQorCisJaWYgKHNzZV9ldmVudF9pc19nbG9iYWwoZXZ0X2lkKSkgeworCQlh cmNoX2V2dC0+aW50ZXJydXB0ZWRfcGh5cyA9CisJCQkJCXZpcnRfdG9fcGh5cygmYXJjaF9ldnQt PmludGVycnVwdGVkKTsKKwl9IGVsc2UgeworCQlhcmNoX2V2dC0+aW50ZXJydXB0ZWRfcGh5cyA9 CisJCQkJcGVyX2NwdV9wdHJfdG9fcGh5cygmYXJjaF9ldnQtPmludGVycnVwdGVkKTsKKwl9CisK KwlhcmNoX3NzZV9ldmVudF91cGRhdGVfY3B1KGFyY2hfZXZ0LCBjcHUpOworCisJcmV0dXJuIDA7 Cit9CisKK3ZvaWQgYXJjaF9zc2VfZnJlZV9ldmVudChzdHJ1Y3Qgc3NlX2V2ZW50X2FyY2hfZGF0 YSAqYXJjaF9ldnQpCit7CisJc2NzX2ZyZWUoYXJjaF9ldnQtPnNoYWRvd19zdGFjayk7CisJc3Nl X3N0YWNrX2ZyZWUoYXJjaF9ldnQtPnN0YWNrKTsKK30KKworaW50IGFyY2hfc3NlX3JlZ2lzdGVy X2V2ZW50KHN0cnVjdCBzc2VfZXZlbnRfYXJjaF9kYXRhICphcmNoX2V2dCkKK3sKKwlzdHJ1Y3Qg c2JpcmV0IHNyZXQ7CisKKwlhcmNoX3NzZV9zdGFja19jcHVfc3luYyhhcmNoX2V2dCk7CisKKwlz cmV0ID0gc2JpX2VjYWxsKFNCSV9FWFRfU1NFLCBTQklfU1NFX0VWRU5UX1JFR0lTVEVSLCBhcmNo X2V2dC0+ZXZ0X2lkLAorCQkJICh1bnNpZ25lZCBsb25nKWhhbmRsZV9zc2UsICh1bnNpZ25lZCBs b25nKWFyY2hfZXZ0LCAwLAorCQkJIDAsIDApOworCisJcmV0dXJuIHNiaV9lcnJfbWFwX2xpbnV4 X2Vycm5vKHNyZXQuZXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvc2Jp X3NzZV9lbnRyeS5TIGIvYXJjaC9yaXNjdi9rZXJuZWwvc2JpX3NzZV9lbnRyeS5TCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjNmMzA4YTE1OTEyCi0tLSAvZGV2L251 bGwKKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvc2JpX3NzZV9lbnRyeS5TCkBAIC0wLDAgKzEsMTc4 IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLworLyoK KyAqIENvcHlyaWdodCAoQykgMjAyNSBSaXZvcyBJbmMuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4 L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CisKKyNpbmNsdWRlIDxhc20vYXNt Lmg+CisjaW5jbHVkZSA8YXNtL2Nzci5oPgorI2luY2x1ZGUgPGFzbS9zY3MuaD4KKworLyogV2hl biBlbnRlcmluZyBoYW5kbGVfc3NlLCB0aGUgZm9sbG93aW5nIHJlZ2lzdGVycyBhcmUgc2V0Ogor ICogYTY6IGNvbnRhaW5zIHRoZSBoYXJ0aWQKKyAqIGE3OiBjb250YWlucyBhIHNzZV9ldmVudF9h cmNoX2RhdGEgc3RydWN0IHBvaW50ZXIKKyAqLworU1lNX0NPREVfU1RBUlQoaGFuZGxlX3NzZSkK KwkvKiBTYXZlIHN0YWNrIHRlbXBvcmFyaWx5ICovCisJUkVHX1Mgc3AsIFNTRV9SRUdfRVZUX1RN UChhNykKKwkvKiBTZXQgZW50cnkgc3RhY2sgKi8KKwlSRUdfTCBzcCwgU1NFX1JFR19FVlRfU1RB Q0soYTcpCisKKwlhZGRpIHNwLCBzcCwgLShQVF9TSVpFX09OX1NUQUNLKQorCVJFR19TIHJhLCBQ VF9SQShzcCkKKwlSRUdfUyBzMCwgUFRfUzAoc3ApCisJUkVHX1MgczEsIFBUX1MxKHNwKQorCVJF R19TIHMyLCBQVF9TMihzcCkKKwlSRUdfUyBzMywgUFRfUzMoc3ApCisJUkVHX1MgczQsIFBUX1M0 KHNwKQorCVJFR19TIHM1LCBQVF9TNShzcCkKKwlSRUdfUyBzNiwgUFRfUzYoc3ApCisJUkVHX1Mg czcsIFBUX1M3KHNwKQorCVJFR19TIHM4LCBQVF9TOChzcCkKKwlSRUdfUyBzOSwgUFRfUzkoc3Ap CisJUkVHX1MgczEwLCBQVF9TMTAoc3ApCisJUkVHX1MgczExLCBQVF9TMTEoc3ApCisJUkVHX1Mg dHAsIFBUX1RQKHNwKQorCVJFR19TIHQwLCBQVF9UMChzcCkKKwlSRUdfUyB0MSwgUFRfVDEoc3Ap CisJUkVHX1MgdDIsIFBUX1QyKHNwKQorCVJFR19TIHQzLCBQVF9UMyhzcCkKKwlSRUdfUyB0NCwg UFRfVDQoc3ApCisJUkVHX1MgdDUsIFBUX1Q1KHNwKQorCVJFR19TIHQ2LCBQVF9UNihzcCkKKwlS RUdfUyBncCwgUFRfR1Aoc3ApCisJUkVHX1MgYTAsIFBUX0EwKHNwKQorCVJFR19TIGExLCBQVF9B MShzcCkKKwlSRUdfUyBhMiwgUFRfQTIoc3ApCisJUkVHX1MgYTMsIFBUX0EzKHNwKQorCVJFR19T IGE0LCBQVF9BNChzcCkKKwlSRUdfUyBhNSwgUFRfQTUoc3ApCisKKwkvKiBSZXRyaWV2ZSBlbnRy eSBzcCAqLworCVJFR19MIGE0LCBTU0VfUkVHX0VWVF9UTVAoYTcpCisJLyogU2F2ZSBDU1JzICov CisJY3NyciBhMCwgQ1NSX0VQQworCWNzcnIgYTEsIENTUl9TU1RBVFVTCisJY3NyciBhMiwgQ1NS X1NUVkFMCisJY3NyciBhMywgQ1NSX1NDQVVTRQorCisJUkVHX1MgYTAsIFBUX0VQQyhzcCkKKwlS RUdfUyBhMSwgUFRfU1RBVFVTKHNwKQorCVJFR19TIGEyLCBQVF9CQURBRERSKHNwKQorCVJFR19T IGEzLCBQVF9DQVVTRShzcCkKKwlSRUdfUyBhNCwgUFRfU1Aoc3ApCisKKwkvKiBEaXNhYmxlIHVz ZXIgbWVtb3J5IGFjY2VzcyBhbmQgZmxvYXRpbmcvdmVjdG9yIGNvbXB1dGluZyAqLworCWxpIHQw LCBTUl9TVU0gfCBTUl9GU19WUworCWNzcmMgQ1NSX1NUQVRVUywgdDAKKworCWxvYWRfZ2xvYmFs X3BvaW50ZXIKKwlzY3NfbG9hZF9zc2Vfc3RhY2sgYTcKKworI2lmZGVmIENPTkZJR19TTVAKKwls dyB0NCwgU1NFX1JFR19IQVJUX0lEKGE3KQorCWx3IHQzLCBTU0VfUkVHX0NQVV9JRChhNykKKwor CWJuZSB0NCwgYTYsIC5MZmluZF9oYXJ0X2lkX3Nsb3dwYXRoCisKKy5MY3B1X2lkX2ZvdW5kOgor I2Vsc2UKKwltdiB0MywgemVybworI2VuZGlmCisKKwlhc21fcGVyX2NwdV93aXRoX2NwdSB0MiBf X3NiaV9zc2VfZW50cnlfdGFzayB0MSB0MworCVJFR19MIHRwLCAwKHQyKQorCisJbXYgYTEsIHNw IC8qIHB0X3JlZ3Mgb24gc3RhY2sgKi8KKworCS8qCisJICogU2F2ZSBzc2NyYXRjaCBmb3IgcmVz dG9yYXRpb24gc2luY2Ugd2UgbWlnaHQgaGF2ZSBpbnRlcnJ1cHRlZCB0aGUKKwkgKiBrZXJuZWwg aW4gZWFybHkgZXhjZXB0aW9uIHBhdGggYW5kIHRodXMsIHdlIGRvbid0IGtub3cgdGhlIGNvbnRl bnQgb2YKKwkgKiBzc2NyYXRjaC4KKwkgKi8KKwljc3JydyBzNCwgQ1NSX1NTQ1JBVENILCB4MAor CisJbXYgYTAsIGE3CisKKwljYWxsIGRvX3NzZQorCisJY3NydyBDU1JfU1NDUkFUQ0gsIHM0CisK KwlSRUdfTCBhMCwgUFRfU1RBVFVTKHNwKQorCVJFR19MIGExLCBQVF9FUEMoc3ApCisJUkVHX0wg YTIsIFBUX0JBREFERFIoc3ApCisJUkVHX0wgYTMsIFBUX0NBVVNFKHNwKQorCWNzcncgQ1NSX1NT VEFUVVMsIGEwCisJY3NydyBDU1JfRVBDLCBhMQorCWNzcncgQ1NSX1NUVkFMLCBhMgorCWNzcncg Q1NSX1NDQVVTRSwgYTMKKworCVJFR19MIHJhLCBQVF9SQShzcCkKKwlSRUdfTCBzMCwgUFRfUzAo c3ApCisJUkVHX0wgczEsIFBUX1MxKHNwKQorCVJFR19MIHMyLCBQVF9TMihzcCkKKwlSRUdfTCBz MywgUFRfUzMoc3ApCisJUkVHX0wgczQsIFBUX1M0KHNwKQorCVJFR19MIHM1LCBQVF9TNShzcCkK KwlSRUdfTCBzNiwgUFRfUzYoc3ApCisJUkVHX0wgczcsIFBUX1M3KHNwKQorCVJFR19MIHM4LCBQ VF9TOChzcCkKKwlSRUdfTCBzOSwgUFRfUzkoc3ApCisJUkVHX0wgczEwLCBQVF9TMTAoc3ApCisJ UkVHX0wgczExLCBQVF9TMTEoc3ApCisJUkVHX0wgdHAsIFBUX1RQKHNwKQorCVJFR19MIHQwLCBQ VF9UMChzcCkKKwlSRUdfTCB0MSwgUFRfVDEoc3ApCisJUkVHX0wgdDIsIFBUX1QyKHNwKQorCVJF R19MIHQzLCBQVF9UMyhzcCkKKwlSRUdfTCB0NCwgUFRfVDQoc3ApCisJUkVHX0wgdDUsIFBUX1Q1 KHNwKQorCVJFR19MIHQ2LCBQVF9UNihzcCkKKwlSRUdfTCBncCwgUFRfR1Aoc3ApCisJUkVHX0wg YTAsIFBUX0EwKHNwKQorCVJFR19MIGExLCBQVF9BMShzcCkKKwlSRUdfTCBhMiwgUFRfQTIoc3Ap CisJUkVHX0wgYTMsIFBUX0EzKHNwKQorCVJFR19MIGE0LCBQVF9BNChzcCkKKwlSRUdfTCBhNSwg UFRfQTUoc3ApCisKKwlSRUdfTCBzcCwgUFRfU1Aoc3ApCisKKwlsaSBhNywgU0JJX0VYVF9TU0UK KwlsaSBhNiwgU0JJX1NTRV9FVkVOVF9DT01QTEVURQorCWVjYWxsCisKKyNpZmRlZiBDT05GSUdf U01QCisuTGZpbmRfaGFydF9pZF9zbG93cGF0aDoKKworCS8qIFJlc3RvcmUgY3VycmVudCB0YXNr IHN0cnVjdCBmcm9tIF9fc2JpX3NzZV9lbnRyeV90YXNrICovCisJbGkgdDEsIEFTTV9OUl9DUFVT CisJLyogU2xvd3BhdGggdG8gZmluZCB0aGUgQ1BVIGlkIGFzc29jaWF0ZWQgdG8gdGhlIGhhcnQg aWQgKi8KKwlsYSB0MCwgX19jcHVpZF90b19oYXJ0aWRfbWFwCisKKy5MaGFydF9pZF9sb29wOgor CVJFR19MIHQyLCAwKHQwKQorCWJlcSB0MiwgYTYsIC5MY3B1X2lkX2ZvdW5kCisKKwkvKiBJbmNy ZW1lbnQgcG9pbnRlciBhbmQgQ1BVIG51bWJlciAqLworCWFkZGkgdDMsIHQzLCAxCisJYWRkaSB0 MCwgdDAsIFJJU0NWX1NaUFRSCisJYmx0dSB0MywgdDEsIC5MaGFydF9pZF9sb29wCisKKwkvKgor CSAqIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBzaW5jZSB3ZSBleHBlY3QgdGhlIGhhcnRfaWQg dG8gbWF0Y2ggb25lCisJICogb2Ygb3VyIENQVSwgYnV0IGJldHRlciBiZSBzYWZlIHRoYW4gc29y cnkKKwkgKi8KKwlsYSB0cCwgaW5pdF90YXNrCisJbGEgYTAsIHNzZV9oYXJ0X2lkX3BhbmljX3N0 cmluZworCWxhIHQwLCBwYW5pYworCWphbHIgdDAKKyNlbmRpZgorCitTWU1fQ09ERV9FTkQoaGFu ZGxlX3NzZSkKKworU1lNX0RBVEFfU1RBUlRfTE9DQUwoc3NlX2hhcnRfaWRfcGFuaWNfc3RyaW5n KQorICAgIC5hc2NpaSAiVW5hYmxlIHRvIG1hdGNoIGhhcnRfaWQgd2l0aCBjcHVcMCIKK1NZTV9E QVRBX0VORChzc2VfaGFydF9pZF9wYW5pY19zdHJpbmcpCi0tIAoyLjQzLjAKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5n IGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==