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=-6.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 F2CC3C432C0 for ; Tue, 26 Nov 2019 12:49:31 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id B9B2B2071A for ; Tue, 26 Nov 2019 12:49:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="TKGZ0PBp"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b="TCsnvbwh" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B9B2B2071A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+infradead-linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=IwHHl+hNWNKkKTw3W9Tap92e+tfHJH4oSCrYx1k4HSI=; b=TKGZ0PBp6khq32 +IRhaPoB/ko6YKhtJcONaUFEizEpl1fMnZvYuD5z2vftktcDERXksAzf9lok2XIW9kNk8KEa3HC4E nj+b9xKBaYclh9PiLtO1C0o0imD1doJix8991Vc3AUDOm7rfvrNrzGsLbmTc5gmk7Bl42zOruAaZu kYcU8QyAUPsttBqmoqqUN/0go1j9cC4aLDi9xEtfBMyNOZPLqlw/o99AUQBsJ+eYLDEegFMekCI+N ek+kdG0uB/jmuPHrJx/A/f1wpEDTBS0CRywSTmwl6G3IGoIeevFR0O11zjwg/u3ZdcMIvEv/MuvLO G0BTo3lcc/ZXFWDnbZSA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iZaHZ-0006qX-OB; Tue, 26 Nov 2019 12:49:29 +0000 Received: from mail-qt1-x842.google.com ([2607:f8b0:4864:20::842]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iZaGV-0003PJ-Ed for linux-riscv@lists.infradead.org; Tue, 26 Nov 2019 12:48:27 +0000 Received: by mail-qt1-x842.google.com with SMTP id g1so11865927qtj.6 for ; Tue, 26 Nov 2019 04:48:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=yP69oNOwLRKOH1bABrCf+MIfhE/Or+bR3PI8UIEOa8o=; b=TCsnvbwhQ0FDfWbBUgMkKruo7ZhMBrB3n6VB+8IASb0zgRXk7/OC4pm3O9SZwQEbRI MlDLR9D0gFOCjEp5/WO9Z+nxkj1UkwIZnIUbMRDkPi8ycAsWS2EUvPkI0cSk5VcoYsJU 2dMoe6j2ZrjkeYTMfqB8jF7Lxsc+tIjuq6sQw4rKBxq6FLEV15DW/CgrI/zlHqdygDST wWUupAtODBDahuotMQPG++lLM7Oubu7X6nLJGk81oAyVamouYvjl6e+3PMNoZ0fJQFsK smelWZCAkxzBBfMJY1yFeJuo20IvSV9DIkxr/Cn39LNV6KgYScwogregcpfGjl5ob/oN 1Zzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=yP69oNOwLRKOH1bABrCf+MIfhE/Or+bR3PI8UIEOa8o=; b=GbSfuk50gmYCQUhouW/IQ4zI3ZB6jRiJYH7bwxACLwZbAuN1/3sQQAuZG5DlRuexxp peiGjxSj+H6VKgbAThiN/F3SIgiZPD+3wQyZKM/are0rKtbr9G9aKts+Oe1dHdi8KgdD 9iFHxBKsPaFNwLweD6MNWzR7aNLbrr2iFAkFpWAici8zxTYoNfr1qITiWA3NgsDpPdKg gnGUVyuxg/g/NG1fe2930WJQDiAdHdMQBjHxhxnT+soAeFqbMVgRAQrC5OtftbTWnZxV 0Qhq2IKcZzcgqtmHpv0e7LYwlMY5oDZwaTtWHBJcpFG1hTwE+LBS040GY7gr2HqgJG5p c0Lw== X-Gm-Message-State: APjAAAVfGNb9Xj5iTfPj7yOxh6iW3A3cP4mCyETlMI8wVs8MmRAhjC5l Ujk0EjmvSqQIYio5U3EHt4apmihwaxw8OMD3ZlT3Dw== X-Google-Smtp-Source: APXvYqxqg2YuiESg5BwxtiVVFsY0/lo513Z/1OkGS1LPpw/CVw6krDI+9lMssFWGO4qeB4L8nhIXJc7F5Lt+dZcKeiw= X-Received: by 2002:ac8:7943:: with SMTP id r3mr35021510qtt.49.1574772499379; Tue, 26 Nov 2019 04:48:19 -0800 (PST) MIME-Version: 1.0 References: <1572919114-3886-1-git-send-email-vincent.chen@sifive.com> <1572919114-3886-2-git-send-email-vincent.chen@sifive.com> In-Reply-To: From: Vincent Chen Date: Tue, 26 Nov 2019 20:48:08 +0800 Message-ID: Subject: Re: [PATCH 1/3] riscv: add required functions to enable HAVE_REGS_AND_STACK_ACCESS_API To: Paul Walmsley X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191126_044823_561171_B5575D9B X-CRM114-Status: GOOD ( 34.06 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?Q?Patrick_St=C3=A4hlin?= , Mathieu Desnoyers , linux-riscv , linux-kselftest@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+infradead-linux-riscv=archiver.kernel.org@lists.infradead.org T24gRnJpLCBOb3YgMjIsIDIwMTkgYXQgNjozMiBBTSBQYXVsIFdhbG1zbGV5IDxwYXVsLndhbG1z bGV5QHNpZml2ZS5jb20+IHdyb3RlOgo+Cj4gT24gVGh1LCAyMSBOb3YgMjAxOSwgUGF1bCBXYWxt c2xleSB3cm90ZToKPgo+ID4gQXMgSSB1bmRlcnN0YW5kIGl0LCB0aGlzIHBhdGNoIGhhc24ndCBi ZWVuIHNpZ25lZCBvZmYgb24gYnkgUGF0cmljay4KPiA+IEkndmUgc2VudCBoaW0gYW4gRS1tYWls IGFza2luZyBoaW0gd2hldGhlciBoZSdzIHdpbGxpbmcgdG8gYWRkIGhpcwo+ID4gU2lnbmVkLW9m Zi1ieTosIGJ1dCBoYXZlbid0IGhlYXJkIGJhY2sgZnJvbSBpdC4KPiA+Cj4gPiBGcm9tIG91ciBk aXNjdXNzaW9ucywgSSB1bmRlcnN0YW5kIHRoYXQgdGhpcyBwYXRjaCBpcyBiYXNlZCBwYXJ0aWFs bHkgb24KPiA+IHNvbWUgb2YgaGlzIGVhcmxpZXIsIHB1YmxpYywga3Byb2JlcyB3b3JrLiAgSW4g bGlldSBvZiBhbnkgcmVzcG9uc2UgZnJvbQo+ID4gUGF0cmljaywgY291bGQgeW91IHBsZWFzZSBy ZXNlbmQgdGhpcyBwYXRjaCBhbmQganVzdCBub3RlIGluIHRoZSBjb21taXQKPiA+IGRlc2NyaXB0 aW9uIHRoYXQgaXQncyBwYXJ0aWFsbHkgYmFzZWQgb24gb25lIG9mIGhpcyBwYXRjaGVzLCBhZGQg YSBMaW5rOgo+ID4gbGluZSB0aGF0IHBvaW50cyB0byB0aGUgVVJMIG9mIHRoZSBwYXRjaCB0aGF0 IGl0J3MgcGFydGlhbGx5IGJhc2VkIG9uLCBhbmQKPiA+IHJlcGxhY2UgdGhlIFNpZ25lZC1vZmYt Ynk6IHdpdGggYSBDby1kZXZlbG9wZWQtYnk6IG9yIHNvbWV0aGluZyBzaW1pbGFyPwo+Cj4gT0sg LSBqdXN0IGxvb2tlZCBhdCB0aGUgcGF0Y2hlcyBtb3JlIGNsb3NlbHksIGFuZCBJIHRoaW5rIEkg c2VlIHdoYXQncwo+IGdvaW5nIG9uIGhlcmUuICBUaGlzIHBhdGNoIGxvb2tzIGxpa2UgYSByZWJh c2VkIHZlcnNpb24gb2YgdGhpcyBwYXRjaDoKPgo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xp bnV4LXJpc2N2LzIwMTgxMTEzMTk1ODA0LjIyODI1LTItbWVAcGFja2kuY2gvCj4KPiBTbyBsZXQn cyBqdXN0IHBsYW4gdG8gdXNlIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiBQYXRyaWNrJ3Mgb3JpZ2lu YWwKPiAoYmVsb3cpLiAgUGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdSBoYXZlIGFueSBjb21tZW50 cyBvbiBpdCBvciBpZiBJCj4gbWlzc2VkIHNvbWV0aGluZyAtCj4KPgo+IC0gUGF1bAo+CgpEZWFy IFBhdWwsCkR1ZSB0byB0aGUgcnVsZSBvZiBtYWlsIGNsYXNzaWZpY2F0aW9uLCBJIGRvIG5vdCBm aW5kIHRoaXMgbWFpbCBpbgp0aW1lLiBJIGFtIHNvcnJ5IGZvciB0aGF0LgpJIHRoaW5rIGl0IGlz IGdvb2QgZm9yIG1lLgoKVGhhbmtzIGFuZCByZWdhcmRzClZpbmNlbnQKCgo+IEZyb206IFBhdHJp Y2sgU3TDpGhsaW4gPG1lQHBhY2tpLmNoPgo+IERhdGU6IFR1ZSwgMTMgTm92IDIwMTggMjA6NTg6 MDMgKzAxMDAKPiBTdWJqZWN0OiBbUEFUQ0hdIFJJU0MtVjogSW1wbGVtZW50IHB0cmFjZSByZWdz IGFuZCBzdGFjayBBUEkKPiBNSU1FLVZlcnNpb246IDEuMAo+IENvbnRlbnQtVHlwZTogdGV4dC9w bGFpbjsgY2hhcnNldD1VVEYtOAo+IENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKPgo+ IE5lZWRlZCBmb3Iga3Byb2JlcyBzdXBwb3J0LiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBhcm02 NCBjb2RlLgo+Cj4gU2lnbmVkLW9mZi1ieTogUGF0cmljayBTdMOkaGxpbiA8bWVAcGFja2kuY2g+ Cj4gW3BhdWwud2FsbXNsZXlAc2lmaXZlLmNvbTogdXBkYXRlZCB0byBhcHBseTsgZml4ZWQgY2hl Y2twYXRjaCBpc3N1ZXM7Cj4gIGZpeGVkIHJlZ3NfZ2V0X3JlZ2lzdGVyKCkga2VybmVsZG9jXQo+ IENjOiBWaW5jZW50IENoZW4gPHZpbmNlbnQuY2hlbkBzaWZpdmUuY29tPgo+IExpbms6IGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXJpc2N2LzIwMTgxMTEzMTk1ODAzLkNqdEJDc1VjRzlj endpcW1QQkdLVWp2bDVPanhxMlNJUGFpb1FVSFhGSTBAei8KPiBMaW5rOiBodHRwczovL2xvcmUu a2VybmVsLm9yZy9saW51eC1yaXNjdi8xNTcyOTE5MTE0LTM4ODYtMS1naXQtc2VuZC1lbWFpbC12 aW5jZW50LmNoZW5Ac2lmaXZlLmNvbS9ULyNtZGIzNDY1MjdkMjVlYTE5NTlhYjU3ZmY5ZDFjMDU2 YmNkMjljNzE3Mgo+IFNpZ25lZC1vZmYtYnk6IFBhdWwgV2FsbXNsZXkgPHBhdWwud2FsbXNsZXlA c2lmaXZlLmNvbT4KPiAtLS0KPiAgYXJjaC9yaXNjdi9LY29uZmlnICAgICAgICAgICAgICB8ICAx ICsKPiAgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wdHJhY2UuaCB8IDMwICsrKysrKysrKysKPiAg YXJjaC9yaXNjdi9rZXJuZWwvcHRyYWNlLmMgICAgICB8IDk5ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDEzMCBpbnNlcnRpb25zKCspCj4KPiBk aWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9LY29uZmlnIGIvYXJjaC9yaXNjdi9LY29uZmlnCj4gaW5k ZXggOGVlYmJjODg2MGJiLi5kNWJiZjQyMjNmZDIgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9yaXNjdi9L Y29uZmlnCj4gKysrIGIvYXJjaC9yaXNjdi9LY29uZmlnCj4gQEAgLTYxLDYgKzYxLDcgQEAgY29u ZmlnIFJJU0NWCj4gICAgICAgICBzZWxlY3QgU1BBUlNFTUVNX1NUQVRJQyBpZiAzMkJJVAo+ICAg ICAgICAgc2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX1RPUERPV05fTU1BUF9MQVlPVVQgaWYgTU1V Cj4gICAgICAgICBzZWxlY3QgSEFWRV9BUkNIX01NQVBfUk5EX0JJVFMKPiArICAgICAgIHNlbGVj dCBIQVZFX1JFR1NfQU5EX1NUQUNLX0FDQ0VTU19BUEkKPgo+ICBjb25maWcgQVJDSF9NTUFQX1JO RF9CSVRTX01JTgo+ICAgICAgICAgZGVmYXVsdCAxOCBpZiA2NEJJVAo+IGRpZmYgLS1naXQgYS9h cmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9w dHJhY2UuaAo+IGluZGV4IGQ0OGQxZTEzOTczYy4uNTBkMzdiMTIzYTYxIDEwMDY0NAo+IC0tLSBh L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcHRyYWNlLmgKPiArKysgYi9hcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL3B0cmFjZS5oCj4gQEAgLTgsNiArOCw3IEBACj4KPiAgI2luY2x1ZGUgPHVhcGkvYXNt L3B0cmFjZS5oPgo+ICAjaW5jbHVkZSA8YXNtL2Nzci5oPgo+ICsjaW5jbHVkZSA8bGludXgvY29t cGlsZXIuaD4KPgo+ICAjaWZuZGVmIF9fQVNTRU1CTFlfXwo+Cj4gQEAgLTYwLDYgKzYxLDcgQEAg c3RydWN0IHB0X3JlZ3Mgewo+Cj4gICNkZWZpbmUgdXNlcl9tb2RlKHJlZ3MpICgoKHJlZ3MpLT5z c3RhdHVzICYgU1JfU1BQKSA9PSAwKQo+Cj4gKyNkZWZpbmUgTUFYX1JFR19PRkZTRVQgb2Zmc2V0 b2Yoc3RydWN0IHB0X3JlZ3MsIG9yaWdfYTApCj4KPiAgLyogSGVscGVycyBmb3Igd29ya2luZyB3 aXRoIHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyICovCj4gIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg bG9uZyBpbnN0cnVjdGlvbl9wb2ludGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+IEBAIC04NSw2 ICs4NywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXNlcl9zdGFja19wb2ludGVyX3NldChzdHJ1 Y3QgcHRfcmVncyAqcmVncywKPiAgICAgICAgIHJlZ3MtPnNwID0gIHZhbDsKPiAgfQo+Cj4gKy8q IFZhbGlkIG9ubHkgZm9yIEtlcm5lbCBtb2RlIHRyYXBzLiAqLwo+ICtzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGxvbmcga2VybmVsX3N0YWNrX3BvaW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCj4g K3sKPiArICAgICAgIHJldHVybiByZWdzLT5zcDsKPiArfQo+ICsKPiAgLyogSGVscGVycyBmb3Ig d29ya2luZyB3aXRoIHRoZSBmcmFtZSBwb2ludGVyICovCj4gIHN0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgbG9uZyBmcmFtZV9wb2ludGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+ICB7Cj4gQEAgLTEw MSw2ICsxMDksMjggQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHJlZ3NfcmV0dXJuX3Zh bHVlKHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+ICAgICAgICAgcmV0dXJuIHJlZ3MtPmEwOwo+ICB9 Cj4KPiAraW50IHJlZ3NfcXVlcnlfcmVnaXN0ZXJfb2Zmc2V0KGNvbnN0IGNoYXIgKm5hbWUpOwo+ ICt1bnNpZ25lZCBsb25nIHJlZ3NfZ2V0X2tlcm5lbF9zdGFja19udGgoc3RydWN0IHB0X3JlZ3Mg KnJlZ3MsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBuKTsKPiArCj4gKy8qKgo+ICsgKiByZWdzX2dldF9yZWdpc3RlcigpIC0gZ2V0IHJlZ2lz dGVyIHZhbHVlIGZyb20gaXRzIG9mZnNldAo+ICsgKiBAcmVnczogICAgICBwdF9yZWdzIGZyb20g d2hpY2ggcmVnaXN0ZXIgdmFsdWUgaXMgZ290dGVuCj4gKyAqIEBvZmZzZXQ6ICAgIG9mZnNldCBv ZiB0aGUgcmVnaXN0ZXIuCj4gKyAqCj4gKyAqIHJlZ3NfZ2V0X3JlZ2lzdGVyKCkgcmV0dXJucyB0 aGUgdmFsdWUgZnJvbSBAcmVncyBvZiBhIHJlZ2lzdGVyCj4gKyAqIGlkZW50aWZpZWQgYnkgQG9m ZnNldC4gIFRoZSBAb2Zmc2V0IGlzIHRoZSBvZmZzZXQgb2YgdGhlIHJlZ2lzdGVyCj4gKyAqIGlu IHN0cnVjdCBwdF9yZWdzLiAgSWYgQG9mZnNldCBpcyBiaWdnZXIgdGhhbiBNQVhfUkVHX09GRlNF VCwgdGhpcwo+ICsgKiByZXR1cm5zIDAuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcgcmVnc19nZXRfcmVnaXN0ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQp Cj4gK3sKPiArICAgICAgIGlmICh1bmxpa2VseShvZmZzZXQgPiBNQVhfUkVHX09GRlNFVCkpCj4g KyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgICAgIHJldHVybiAqKHVuc2lnbmVk IGxvbmcgKikoKHVuc2lnbmVkIGxvbmcpcmVncyArIG9mZnNldCk7Cj4gK30KPiAgI2VuZGlmIC8q IF9fQVNTRU1CTFlfXyAqLwo+Cj4gICNlbmRpZiAvKiBfQVNNX1JJU0NWX1BUUkFDRV9IICovCj4g ZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3B0cmFjZS5jIGIvYXJjaC9yaXNjdi9rZXJu ZWwvcHRyYWNlLmMKPiBpbmRleCAxMjUyMTEzZWY4YjIuLjUwNzZiMzBmZTE4YiAxMDA2NDQKPiAt LS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9wdHJhY2UuYwo+ICsrKyBiL2FyY2gvcmlzY3Yva2VybmVs L3B0cmFjZS5jCj4gQEAgLTEyNSw2ICsxMjUsMTA1IEBAIGNvbnN0IHN0cnVjdCB1c2VyX3JlZ3Nl dF92aWV3ICp0YXNrX3VzZXJfcmVnc2V0X3ZpZXcoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQo+ ICAgICAgICAgcmV0dXJuICZyaXNjdl91c2VyX25hdGl2ZV92aWV3Owo+ICB9Cj4KPiArc3RydWN0 IHB0X3JlZ3Nfb2Zmc2V0IHsKPiArICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Cj4gKyAgICAgICBp bnQgb2Zmc2V0Owo+ICt9Owo+ICsKPiArI2RlZmluZSBSRUdfT0ZGU0VUX05BTUUocikgey5uYW1l ID0gI3IsIC5vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgcil9Cj4gKyNkZWZpbmUg UkVHX09GRlNFVF9FTkQgey5uYW1lID0gTlVMTCwgLm9mZnNldCA9IDB9Cj4gKwo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHB0X3JlZ3Nfb2Zmc2V0IHJlZ29mZnNldF90YWJsZVtdID0gewo+ICsgICAg ICAgUkVHX09GRlNFVF9OQU1FKHNlcGMpLAo+ICsgICAgICAgUkVHX09GRlNFVF9OQU1FKHJhKSwK PiArICAgICAgIFJFR19PRkZTRVRfTkFNRShzcCksCj4gKyAgICAgICBSRUdfT0ZGU0VUX05BTUUo Z3ApLAo+ICsgICAgICAgUkVHX09GRlNFVF9OQU1FKHRwKSwKPiArICAgICAgIFJFR19PRkZTRVRf TkFNRSh0MCksCj4gKyAgICAgICBSRUdfT0ZGU0VUX05BTUUodDEpLAo+ICsgICAgICAgUkVHX09G RlNFVF9OQU1FKHQyKSwKPiArICAgICAgIFJFR19PRkZTRVRfTkFNRShzMCksCj4gKyAgICAgICBS RUdfT0ZGU0VUX05BTUUoczEpLAo+ICsgICAgICAgUkVHX09GRlNFVF9OQU1FKGEwKSwKPiArICAg ICAgIFJFR19PRkZTRVRfTkFNRShhMSksCj4gKyAgICAgICBSRUdfT0ZGU0VUX05BTUUoYTIpLAo+ ICsgICAgICAgUkVHX09GRlNFVF9OQU1FKGEzKSwKPiArICAgICAgIFJFR19PRkZTRVRfTkFNRShh NCksCj4gKyAgICAgICBSRUdfT0ZGU0VUX05BTUUoYTUpLAo+ICsgICAgICAgUkVHX09GRlNFVF9O QU1FKGE2KSwKPiArICAgICAgIFJFR19PRkZTRVRfTkFNRShhNyksCj4gKyAgICAgICBSRUdfT0ZG U0VUX05BTUUoczIpLAo+ICsgICAgICAgUkVHX09GRlNFVF9OQU1FKHMzKSwKPiArICAgICAgIFJF R19PRkZTRVRfTkFNRShzNCksCj4gKyAgICAgICBSRUdfT0ZGU0VUX05BTUUoczUpLAo+ICsgICAg ICAgUkVHX09GRlNFVF9OQU1FKHM2KSwKPiArICAgICAgIFJFR19PRkZTRVRfTkFNRShzNyksCj4g KyAgICAgICBSRUdfT0ZGU0VUX05BTUUoczgpLAo+ICsgICAgICAgUkVHX09GRlNFVF9OQU1FKHM5 KSwKPiArICAgICAgIFJFR19PRkZTRVRfTkFNRShzMTApLAo+ICsgICAgICAgUkVHX09GRlNFVF9O QU1FKHMxMSksCj4gKyAgICAgICBSRUdfT0ZGU0VUX05BTUUodDMpLAo+ICsgICAgICAgUkVHX09G RlNFVF9OQU1FKHQ0KSwKPiArICAgICAgIFJFR19PRkZTRVRfTkFNRSh0NSksCj4gKyAgICAgICBS RUdfT0ZGU0VUX05BTUUodDYpLAo+ICsgICAgICAgUkVHX09GRlNFVF9OQU1FKHNzdGF0dXMpLAo+ ICsgICAgICAgUkVHX09GRlNFVF9OQU1FKHNiYWRhZGRyKSwKPiArICAgICAgIFJFR19PRkZTRVRf TkFNRShzY2F1c2UpLAo+ICsgICAgICAgUkVHX09GRlNFVF9OQU1FKG9yaWdfYTApLAo+ICsgICAg ICAgUkVHX09GRlNFVF9FTkQsCj4gK307Cj4gKwo+ICsvKioKPiArICogcmVnc19xdWVyeV9yZWdp c3Rlcl9vZmZzZXQoKSAtIHF1ZXJ5IHJlZ2lzdGVyIG9mZnNldCBmcm9tIGl0cyBuYW1lCj4gKyAq IEBuYW1lOiAgICAgIHRoZSBuYW1lIG9mIGEgcmVnaXN0ZXIKPiArICoKPiArICogcmVnc19xdWVy eV9yZWdpc3Rlcl9vZmZzZXQoKSByZXR1cm5zIHRoZSBvZmZzZXQgb2YgYSByZWdpc3RlciBpbiBz dHJ1Y3QKPiArICogcHRfcmVncyBmcm9tIGl0cyBuYW1lLiBJZiB0aGUgbmFtZSBpcyBpbnZhbGlk LCB0aGlzIHJldHVybnMgLUVJTlZBTDsKPiArICovCj4gK2ludCByZWdzX3F1ZXJ5X3JlZ2lzdGVy X29mZnNldChjb25zdCBjaGFyICpuYW1lKQo+ICt7Cj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgcHRf cmVnc19vZmZzZXQgKnJvZmY7Cj4gKwo+ICsgICAgICAgZm9yIChyb2ZmID0gcmVnb2Zmc2V0X3Rh YmxlOyByb2ZmLT5uYW1lOyByb2ZmKyspCj4gKyAgICAgICAgICAgICAgIGlmICghc3RyY21wKHJv ZmYtPm5hbWUsIG5hbWUpKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByb2ZmLT5v ZmZzZXQ7Cj4gKyAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIHJl Z3Nfd2l0aGluX2tlcm5lbF9zdGFjaygpIC0gY2hlY2sgdGhlIGFkZHJlc3MgaW4gdGhlIHN0YWNr Cj4gKyAqIEByZWdzOiAgICAgIHB0X3JlZ3Mgd2hpY2ggY29udGFpbnMga2VybmVsIHN0YWNrIHBv aW50ZXIuCj4gKyAqIEBhZGRyOiAgICAgIGFkZHJlc3Mgd2hpY2ggaXMgY2hlY2tlZC4KPiArICoK PiArICogcmVnc193aXRoaW5fa2VybmVsX3N0YWNrKCkgY2hlY2tzIEBhZGRyIGlzIHdpdGhpbiB0 aGUga2VybmVsIHN0YWNrIHBhZ2UocykuCj4gKyAqIElmIEBhZGRyIGlzIHdpdGhpbiB0aGUga2Vy bmVsIHN0YWNrLCBpdCByZXR1cm5zIHRydWUuIElmIG5vdCwgcmV0dXJucyBmYWxzZS4KPiArICov Cj4gK3N0YXRpYyBib29sIHJlZ3Nfd2l0aGluX2tlcm5lbF9zdGFjayhzdHJ1Y3QgcHRfcmVncyAq cmVncywgdW5zaWduZWQgbG9uZyBhZGRyKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gKGFkZHIgJiB+ KFRIUkVBRF9TSVpFIC0gMSkpICA9PQo+ICsgICAgICAgICAgICAgICAoa2VybmVsX3N0YWNrX3Bv aW50ZXIocmVncykgJiB+KFRIUkVBRF9TSVpFIC0gMSkpOwo+ICt9Cj4gKwo+ICsvKioKPiArICog cmVnc19nZXRfa2VybmVsX3N0YWNrX250aCgpIC0gZ2V0IE50aCBlbnRyeSBvZiB0aGUgc3RhY2sK PiArICogQHJlZ3M6ICAgICAgcHRfcmVncyB3aGljaCBjb250YWlucyBrZXJuZWwgc3RhY2sgcG9p bnRlci4KPiArICogQG46ICAgICAgICAgc3RhY2sgZW50cnkgbnVtYmVyLgo+ICsgKgo+ICsgKiBy ZWdzX2dldF9rZXJuZWxfc3RhY2tfbnRoKCkgcmV0dXJucyBAbiB0aCBlbnRyeSBvZiB0aGUga2Vy bmVsIHN0YWNrIHdoaWNoCj4gKyAqIGlzIHNwZWNpZmllZCBieSBAcmVncy4gSWYgdGhlIEBuIHRo IGVudHJ5IGlzIE5PVCBpbiB0aGUga2VybmVsIHN0YWNrLAo+ICsgKiB0aGlzIHJldHVybnMgMC4K PiArICovCj4gK3Vuc2lnbmVkIGxvbmcgcmVnc19nZXRfa2VybmVsX3N0YWNrX250aChzdHJ1Y3Qg cHRfcmVncyAqcmVncywgdW5zaWduZWQgaW50IG4pCj4gK3sKPiArICAgICAgIHVuc2lnbmVkIGxv bmcgKmFkZHIgPSAodW5zaWduZWQgbG9uZyAqKWtlcm5lbF9zdGFja19wb2ludGVyKHJlZ3MpOwo+ ICsKPiArICAgICAgIGFkZHIgKz0gbjsKPiArICAgICAgIGlmIChyZWdzX3dpdGhpbl9rZXJuZWxf c3RhY2socmVncywgKHVuc2lnbmVkIGxvbmcpYWRkcikpCj4gKyAgICAgICAgICAgICAgIHJldHVy biAqYWRkcjsKPiArICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gK30K PiArCj4gIHZvaWQgcHRyYWNlX2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCkKPiAg ewo+ICAgICAgICAgY2xlYXJfdHNrX3RocmVhZF9mbGFnKGNoaWxkLCBUSUZfU1lTQ0FMTF9UUkFD RSk7Cj4gLS0KPiAyLjI0LjAucmMwCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LXJpc2N2Cg==