From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bGQAW-000193-IA for barebox@lists.infradead.org; Fri, 24 Jun 2016 12:25:17 +0000 Received: by mail-wm0-x244.google.com with SMTP id a66so4548341wme.2 for ; Fri, 24 Jun 2016 05:24:50 -0700 (PDT) From: Raphael Poggi Date: Fri, 24 Jun 2016 14:23:58 +0200 Message-Id: <1466771041-89803-12-git-send-email-poggi.raph@gmail.com> In-Reply-To: <1466771041-89803-1-git-send-email-poggi.raph@gmail.com> References: <1466771041-89803-1-git-send-email-poggi.raph@gmail.com> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH v3 11/14] arm: cpu: add basic arm64 mmu support To: barebox@lists.infradead.org Cc: Raphael Poggi VGhpcyBjb21taXQgYWRkcyBiYXNpYyBtbXUgc3VwcG9ydCwgaWU6CiAgICAgICAgLSBETUEgY2Fj aGUgaGFuZGxpbmcgaXMgbm90IHN1cHBvcnRlZAogICAgICAgIC0gUmVtYXBwaW5nIG1lbW9yeSBy ZWdpb24gYWxzbwoKVGhlIGN1cnJlbnQgbW11IHNldHRpbmcgaXM6CiAgICAgICAgLSA0S0IgZ3Jh bnVsYXJpdHkKICAgICAgICAtIDMgbGV2ZWwgbG9va3VwIChza2lwcGluZyBMMCkKICAgICAgICAt IDMzIGJpdHMgcGVyIFZBCgpUaGlzIGlzIGJhc2VkIG9uIGNvcmVib290IGFuZCB1LWJvb3QgbW11 IGNvbmZpZ3VyYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBSYXBoYWVsIFBvZ2dpIDxwb2dnaS5yYXBo QGdtYWlsLmNvbT4KLS0tCiBhcmNoL2FybS9jcHUvTWFrZWZpbGUgICAgICAgICAgICB8ICAgNCAr LQogYXJjaC9hcm0vY3B1L2NwdS5jICAgICAgICAgICAgICAgfCAgIDIgKwogYXJjaC9hcm0vY3B1 L21tdS5oICAgICAgICAgICAgICAgfCAgNTQgKysrKysrKwogYXJjaC9hcm0vY3B1L21tdV82NC5j ICAgICAgICAgICAgfCAzMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiBhcmNoL2FybS9pbmNsdWRlL2FzbS9tbXUuaCAgICAgICB8ICAxNCArLQogYXJjaC9hcm0vaW5j bHVkZS9hc20vcGd0YWJsZTY0LmggfCAxNDAgKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFu Z2VkLCA1NDIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBhcmNoL2FybS9jcHUvbW11XzY0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9pbmNs dWRlL2FzbS9wZ3RhYmxlNjQuaAoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NwdS9NYWtlZmlsZSBi L2FyY2gvYXJtL2NwdS9NYWtlZmlsZQppbmRleCA4NmE0YTkwLi43Y2Y1ZGE3IDEwMDY0NAotLS0g YS9hcmNoL2FybS9jcHUvTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vY3B1L01ha2VmaWxlCkBAIC0y NCw4ICsyNCw4IEBAIGVuZGlmCiBvYmotJChDT05GSUdfQ01EX0FSTV9DUFVJTkZPKSArPSBjcHVp bmZvLm8KIG9iai0kKENPTkZJR19DTURfQVJNX01NVUlORk8pICs9IG1tdWluZm8ubwogb2JqLSQo Q09ORklHX09GREVWSUNFKSArPSBkdGIubwotb2JqLSQoQ09ORklHX01NVSkgKz0gbW11Lm8gY2Fj aGUubyBtbXUtZWFybHkubwotcGJsLSQoQ09ORklHX01NVSkgKz0gbW11LWVhcmx5Lm8KK29iai0k KENPTkZJR19NTVUpICs9IGNhY2hlLm8KKwogaWZlcSAoJChDT05GSUdfTU1VKSwpCiBvYmoteSAr PSBuby1tbXUubwogZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NwdS9jcHUuYyBiL2FyY2gv YXJtL2NwdS9jcHUuYwppbmRleCBjYzU0MzI0Li5iNDgwNDYzIDEwMDY0NAotLS0gYS9hcmNoL2Fy bS9jcHUvY3B1LmMKKysrIGIvYXJjaC9hcm0vY3B1L2NwdS5jCkBAIC0xMDAsNyArMTAwLDkgQEAg c3RhdGljIHZvaWQgYXJjaF9zaHV0ZG93bih2b2lkKQogewogCXVpbnQzMl90IHI7CiAKKyNpZmRl ZiBDT05GSUdfTU1VCiAJbW11X2Rpc2FibGUoKTsKKyNlbmRpZgogCWZsdXNoX2ljYWNoZSgpOwog CiAjaWYgX19MSU5VWF9BUk1fQVJDSF9fIDw9IDcKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NwdS9t bXUuaCBiL2FyY2gvYXJtL2NwdS9tbXUuaAppbmRleCA3OWViYzgwLi4xODZkNDA4IDEwMDY0NAot LS0gYS9hcmNoL2FybS9jcHUvbW11LmgKKysrIGIvYXJjaC9hcm0vY3B1L21tdS5oCkBAIC0xLDYg KzEsNjAgQEAKICNpZm5kZWYgX19BUk1fTU1VX0gKICNkZWZpbmUgX19BUk1fTU1VX0gKIAorI2lm ZGVmIENPTkZJR19DUFVfNjR2OAorCisjZGVmaW5lIFRDUl9GTEFHUwkJKFRDUl9URzBfNEsgfCBc CisJCVRDUl9TSEFSRURfT1VURVIgfCBcCisJCVRDUl9TSEFSRURfSU5ORVIgfCBcCisJCVRDUl9J UkdOX1dCV0EgfCBcCisJCVRDUl9PUkdOX1dCV0EgfCBcCisJCVRDUl9UMFNaKEJJVFNfUEVSX1ZB KSkKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKworc3RhdGljIGlubGluZSB2b2lkIHNldF90dGJy X3Rjcl9tYWlyKGludCBlbCwgdWludDY0X3QgdGFibGUsIHVpbnQ2NF90IHRjciwgdWludDY0X3Qg YXR0cikKK3sKKwlhc20gdm9sYXRpbGUoImRzYiBzeSIpOworCWlmIChlbCA9PSAxKSB7CisJCWFz bSB2b2xhdGlsZSgibXNyIHR0YnIwX2VsMSwgJTAiIDogOiAiciIgKHRhYmxlKSA6ICJtZW1vcnki KTsKKwkJYXNtIHZvbGF0aWxlKCJtc3IgdGNyX2VsMSwgJTAiIDogOiAiciIgKHRjcikgOiAibWVt b3J5Iik7CisJCWFzbSB2b2xhdGlsZSgibXNyIG1haXJfZWwxLCAlMCIgOiA6ICJyIiAoYXR0cikg OiAibWVtb3J5Iik7CisJfSBlbHNlIGlmIChlbCA9PSAyKSB7CisJCWFzbSB2b2xhdGlsZSgibXNy IHR0YnIwX2VsMiwgJTAiIDogOiAiciIgKHRhYmxlKSA6ICJtZW1vcnkiKTsKKwkJYXNtIHZvbGF0 aWxlKCJtc3IgdGNyX2VsMiwgJTAiIDogOiAiciIgKHRjcikgOiAibWVtb3J5Iik7CisJCWFzbSB2 b2xhdGlsZSgibXNyIG1haXJfZWwyLCAlMCIgOiA6ICJyIiAoYXR0cikgOiAibWVtb3J5Iik7CisJ fSBlbHNlIGlmIChlbCA9PSAzKSB7CisJCWFzbSB2b2xhdGlsZSgibXNyIHR0YnIwX2VsMywgJTAi IDogOiAiciIgKHRhYmxlKSA6ICJtZW1vcnkiKTsKKwkJYXNtIHZvbGF0aWxlKCJtc3IgdGNyX2Vs MywgJTAiIDogOiAiciIgKHRjcikgOiAibWVtb3J5Iik7CisJCWFzbSB2b2xhdGlsZSgibXNyIG1h aXJfZWwzLCAlMCIgOiA6ICJyIiAoYXR0cikgOiAibWVtb3J5Iik7CisJfSBlbHNlIHsKKwkJaGFu ZygpOworCX0KKwlhc20gdm9sYXRpbGUoImlzYiIpOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQ2 NF90IGdldF90dGJyKGludCBlbCkKK3sKKwl1aW50NjRfdCB2YWw7CisJaWYgKGVsID09IDEpIHsK KwkJYXNtIHZvbGF0aWxlKCJtcnMgJTAsIHR0YnIwX2VsMSIgOiAiPXIiICh2YWwpKTsKKwl9IGVs c2UgaWYgKGVsID09IDIpIHsKKwkJYXNtIHZvbGF0aWxlKCJtcnMgJTAsIHR0YnIwX2VsMiIgOiAi PXIiICh2YWwpKTsKKwl9IGVsc2UgaWYgKGVsID09IDMpIHsKKwkJYXNtIHZvbGF0aWxlKCJtcnMg JTAsIHR0YnIwX2VsMyIgOiAiPXIiICh2YWwpKTsKKwl9IGVsc2UgeworCQloYW5nKCk7CisJfQor CisJcmV0dXJuIHZhbDsKK30KKwordm9pZCBtbXVfZWFybHlfZW5hYmxlKHVpbnQ2NF90IG1lbWJh c2UsIHVpbnQ2NF90IG1lbXNpemUsIHVpbnQ2NF90IF90dGIpOworCisjZW5kaWYKKworI2VuZGlm IC8qIENPTkZJR19DUFVfNjR2OCAqLworCiAjaWZkZWYgQ09ORklHX01NVQogdm9pZCBfX21tdV9j YWNoZV9vbih2b2lkKTsKIHZvaWQgX19tbXVfY2FjaGVfb2ZmKHZvaWQpOwpkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vY3B1L21tdV82NC5jIGIvYXJjaC9hcm0vY3B1L21tdV82NC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNGYzMzgKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNo L2FybS9jcHUvbW11XzY0LmMKQEAgLTAsMCArMSwzMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp IDIwMDktMjAxMyBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRy b25peAorICogQ29weXJpZ2h0IChjKSAyMDE2IFJhcGhhw6tsIFBvZ2dpIDxwb2dnaS5yYXBoQGdt YWlsLmNvbT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8g Y29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICog aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICovCisKKyNkZWZpbmUgcHJfZm10KGZtdCkJ Im1tdTogIiBmbXQKKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGRtYS1kaXIuaD4K KyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVkZSA8bW11Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4K KyNpbmNsdWRlIDxsaW51eC9zaXplcy5oPgorI2luY2x1ZGUgPGFzbS9tZW1vcnkuaD4KKyNpbmNs dWRlIDxhc20vYmFyZWJveC1hcm0uaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVk ZSA8YXNtL2NhY2hlLmg+CisjaW5jbHVkZSA8bWVtb3J5Lmg+CisjaW5jbHVkZSA8YXNtL3N5c3Rl bV9pbmZvLmg+CisKKyNpbmNsdWRlICJtbXUuaCIKKworc3RhdGljIHVpbnQ2NF90ICp0dGI7Citz dGF0aWMgaW50IGZyZWVfaWR4OworCitzdGF0aWMgdm9pZCBhcm1fbW11X25vdF9pbml0aWFsaXpl ZF9lcnJvcih2b2lkKQoreworCS8qCisJICogVGhpcyBtZWFuczoKKwkgKiAtIG9uZSBvZiB0aGUg TU1VIGZ1bmN0aW9ucyBsaWtlIGRtYV9hbGxvY19jb2hlcmVudAorCSAqICAgb3IgcmVtYXBfcmFu Z2UgaXMgY2FsbGVkIHRvbyBlYXJseSwgYmVmb3JlIHRoZSBNTVUgaXMgaW5pdGlhbGl6ZWQKKwkg KiAtIE9yIHRoZSBNTVUgaW5pdGlhbGl6YXRpb24gaGFzIGZhaWxlZCBlYXJsaWVyCisJICovCisJ cGFuaWMoIk1NVSBub3QgaW5pdGlhbGl6ZWRcbiIpOworfQorCisKKy8qCisgKiBEbyBpdCB0aGUg c2ltcGxlIHdheSBmb3Igbm93IGFuZCBpbnZhbGlkYXRlIHRoZSBlbnRpcmUKKyAqIHRsYgorICov CitzdGF0aWMgaW5saW5lIHZvaWQgdGxiX2ludmFsaWRhdGUodm9pZCkKK3sKKwl1bnNpZ25lZCBp bnQgZWwgPSBjdXJyZW50X2VsKCk7CisKKwlkc2IoKTsKKworCWlmIChlbCA9PSAxKQorCQlfX2Fz bV9fIF9fdm9sYXRpbGVfXygidGxiaSBhbGxlMVxuXHQiIDogOiA6ICJtZW1vcnkiKTsKKwllbHNl IGlmIChlbCA9PSAyKQorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygidGxiaSBhbGxlMlxuXHQiIDog OiA6ICJtZW1vcnkiKTsKKwllbHNlIGlmIChlbCA9PSAzKQorCQlfX2FzbV9fIF9fdm9sYXRpbGVf XygidGxiaSBhbGxlM1xuXHQiIDogOiA6ICJtZW1vcnkiKTsKKworCWRzYigpOworCWlzYigpOwor fQorCitzdGF0aWMgaW50IGxldmVsMnNoaWZ0KGludCBsZXZlbCkKK3sKKwkvKiBQYWdlIGlzIDEy IGJpdHMgd2lkZSwgZXZlcnkgbGV2ZWwgdHJhbnNsYXRlcyA5IGJpdHMgKi8KKwlyZXR1cm4gKDEy ICsgOSAqICgzIC0gbGV2ZWwpKTsKK30KKworc3RhdGljIHVpbnQ2NF90IGxldmVsMm1hc2soaW50 IGxldmVsKQoreworCXVpbnQ2NF90IG1hc2sgPSAtRUlOVkFMOworCisJaWYgKGxldmVsID09IDEp CisJCW1hc2sgPSBMMV9BRERSX01BU0s7CisJZWxzZSBpZiAobGV2ZWwgPT0gMikKKwkJbWFzayA9 IEwyX0FERFJfTUFTSzsKKwllbHNlIGlmIChsZXZlbCA9PSAzKQorCQltYXNrID0gTDNfQUREUl9N QVNLOworCisJcmV0dXJuIG1hc2s7Cit9CisKK3N0YXRpYyBpbnQgcHRlX3R5cGUodWludDY0X3Qg KnB0ZSkKK3sKKwlyZXR1cm4gKnB0ZSAmIFBNRF9UWVBFX01BU0s7Cit9CisKK3N0YXRpYyB2b2lk IHNldF90YWJsZSh1aW50NjRfdCAqcHQsIHVpbnQ2NF90ICp0YWJsZV9hZGRyKQoreworCXVpbnQ2 NF90IHZhbDsKKworCXZhbCA9IFBNRF9UWVBFX1RBQkxFIHwgKHVpbnQ2NF90KXRhYmxlX2FkZHI7 CisJKnB0ID0gdmFsOworfQorCitzdGF0aWMgdWludDY0X3QgKmNyZWF0ZV90YWJsZSh2b2lkKQor eworCXVpbnQ2NF90ICpuZXdfdGFibGUgPSB0dGIgKyBmcmVlX2lkeCAqIEdSQU5VTEVfU0laRTsK KworCS8qIE1hcmsgYWxsIGVudHJpZXMgYXMgaW52YWxpZCAqLworCW1lbXNldChuZXdfdGFibGUs IDAsIEdSQU5VTEVfU0laRSk7CisKKwlmcmVlX2lkeCsrOworCisJcmV0dXJuIG5ld190YWJsZTsK K30KKworc3RhdGljIHVpbnQ2NF90ICpnZXRfbGV2ZWxfdGFibGUodWludDY0X3QgKnB0ZSkKK3sK Kwl1aW50NjRfdCAqdGFibGUgPSAodWludDY0X3QgKikoKnB0ZSAmIFhMQVRfQUREUl9NQVNLKTsK KworCWlmIChwdGVfdHlwZShwdGUpICE9IFBNRF9UWVBFX1RBQkxFKSB7CisJCXRhYmxlID0gY3Jl YXRlX3RhYmxlKCk7CisJCXNldF90YWJsZShwdGUsIHRhYmxlKTsKKwl9CisKKwlyZXR1cm4gdGFi bGU7Cit9CisKK3N0YXRpYyB1aW50NjRfdCAqZmluZF9wdGUodWludDY0X3QgYWRkcikKK3sKKwl1 aW50NjRfdCAqcHRlOworCXVpbnQ2NF90IGJsb2NrX3NoaWZ0OworCXVpbnQ2NF90IGlkeDsKKwlp bnQgaTsKKworCXB0ZSA9IHR0YjsKKworCWZvciAoaSA9IDE7IGkgPCA0OyBpKyspIHsKKwkJYmxv Y2tfc2hpZnQgPSBsZXZlbDJzaGlmdChpKTsKKwkJaWR4ID0gKGFkZHIgJiBsZXZlbDJtYXNrKGkp KSA+PiBibG9ja19zaGlmdDsKKwkJcHRlICs9IGlkeDsKKworCQlpZiAoKHB0ZV90eXBlKHB0ZSkg IT0gUE1EX1RZUEVfVEFCTEUpIHx8IChibG9ja19zaGlmdCA8PSBHUkFOVUxFX1NJWkVfU0hJRlQp KQorCQkJYnJlYWs7CisJCWVsc2UKKwkJCXB0ZSA9ICh1aW50NjRfdCAqKSgqcHRlICYgWExBVF9B RERSX01BU0spOworCX0KKworCXJldHVybiBwdGU7Cit9CisKK3N0YXRpYyB2b2lkIG1hcF9yZWdp b24odWludDY0X3QgdmlydCwgdWludDY0X3QgcGh5cywgdWludDY0X3Qgc2l6ZSwgdWludDY0X3Qg YXR0cikKK3sKKwl1aW50NjRfdCBibG9ja19zaXplOworCXVpbnQ2NF90IGJsb2NrX3NoaWZ0Owor CXVpbnQ2NF90ICpwdGU7CisJdWludDY0X3QgaWR4OworCXVpbnQ2NF90IGFkZHI7CisJdWludDY0 X3QgKnRhYmxlOworCWludCBsZXZlbDsKKworCWlmICghdHRiKQorCQlhcm1fbW11X25vdF9pbml0 aWFsaXplZF9lcnJvcigpOworCisJYWRkciA9IHZpcnQ7CisKKwlhdHRyICY9IH4oUE1EX1RZUEVf U0VDVCk7CisKKwl3aGlsZSAoc2l6ZSkgeworCQl0YWJsZSA9IHR0YjsKKwkJZm9yIChsZXZlbCA9 IDE7IGxldmVsIDwgNDsgbGV2ZWwrKykgeworCQkJYmxvY2tfc2hpZnQgPSBsZXZlbDJzaGlmdChs ZXZlbCk7CisJCQlpZHggPSAoYWRkciAmIGxldmVsMm1hc2sobGV2ZWwpKSA+PiBibG9ja19zaGlm dDsKKwkJCWJsb2NrX3NpemUgPSAoMSA8PCBibG9ja19zaGlmdCk7CisKKwkJCXB0ZSA9IHRhYmxl ICsgaWR4OworCisJCQlpZiAobGV2ZWwgPT0gMykKKwkJCQlhdHRyIHw9IFBURV9UWVBFX1BBR0U7 CisJCQllbHNlCisJCQkJYXR0ciB8PSBQTURfVFlQRV9TRUNUOworCisJCQlpZiAoc2l6ZSA+PSBi bG9ja19zaXplICYmIElTX0FMSUdORUQoYWRkciwgYmxvY2tfc2l6ZSkpIHsKKwkJCQkqcHRlID0g cGh5cyB8IGF0dHI7CisJCQkJYWRkciArPSBibG9ja19zaXplOworCQkJCXBoeXMgKz0gYmxvY2tf c2l6ZTsKKwkJCQlzaXplIC09IGJsb2NrX3NpemU7CisJCQkJYnJlYWs7CisKKwkJCX0KKworCQkJ dGFibGUgPSBnZXRfbGV2ZWxfdGFibGUocHRlKTsKKwkJfQorCisJfQorfQorCitzdGF0aWMgdm9p ZCBjcmVhdGVfc2VjdGlvbnModWludDY0X3QgdmlydCwgdWludDY0X3QgcGh5cywgdWludDY0X3Qg c2l6ZV9tLCB1aW50NjRfdCBmbGFncykKK3sKKworCW1hcF9yZWdpb24odmlydCwgcGh5cywgc2l6 ZV9tLCBmbGFncyk7Cit9CisKK3ZvaWQgKm1hcF9pb19zZWN0aW9ucyh1bnNpZ25lZCBsb25nIHBo eXMsIHZvaWQgKl9zdGFydCwgc2l6ZV90IHNpemUpCit7CisKKwltYXBfcmVnaW9uKCh1aW50NjRf dClfc3RhcnQsIHBoeXMsICh1aW50NjRfdClzaXplLCBVTkNBQ0hFRF9NRU0pOworCisJdGxiX2lu dmFsaWRhdGUoKTsKKwlyZXR1cm4gX3N0YXJ0OworfQorCisKK2ludCBhcmNoX3JlbWFwX3Jhbmdl KHZvaWQgKl9zdGFydCwgc2l6ZV90IHNpemUsIHVuc2lnbmVkIGZsYWdzKQoreworCW1hcF9yZWdp b24oKHVpbnQ2NF90KV9zdGFydCwgKHVpbnQ2NF90KV9zdGFydCwgKHVpbnQ2NF90KXNpemUsIGZs YWdzKTsKKworCXJldHVybiAwOworfQorCisvKgorICogUHJlcGFyZSBNTVUgZm9yIHVzYWdlIGVu YWJsZSBpdC4KKyAqLworc3RhdGljIGludCBtbXVfaW5pdCh2b2lkKQoreworCXN0cnVjdCBtZW1v cnlfYmFuayAqYmFuazsKKworCWlmIChsaXN0X2VtcHR5KCZtZW1vcnlfYmFua3MpKQorCQkvKgor CQkgKiBJZiB5b3Ugc2VlIHRoaXMgaXQgbWVhbnMgeW91IGhhdmUgbm8gbWVtb3J5IHJlZ2lzdGVy ZWQuCisJCSAqIFRoaXMgY2FuIGJlIGRvbmUgZWl0aGVyIHdpdGggYXJtX2FkZF9tZW1fZGV2aWNl KCkgaW4gYW4KKwkJICogaW5pdGNhbGwgcHJpb3IgdG8gbW11X2luaXRjYWxsIG9yIHZpYSBkZXZp Y2V0cmVlIGluIHRoZQorCQkgKiBtZW1vcnkgbm9kZS4KKwkJICovCisJCXBhbmljKCJNTVU6IE5v IG1lbW9yeSBiYW5rIGZvdW5kISBDYW5ub3QgY29udGludWVcbiIpOworCisJaWYgKGdldF9jcigp ICYgQ1JfTSkgeworCQl0dGIgPSAodWludDY0X3QgKilnZXRfdHRicihjdXJyZW50X2VsKCkpOwor CQlpZiAoIXJlcXVlc3Rfc2RyYW1fcmVnaW9uKCJ0dGIiLCAodW5zaWduZWQgbG9uZyl0dGIsIFNa XzE2SykpCisJCQkvKgorCQkJKiBUaGlzIGNhbiBtZWFuIHRoYXQ6CisJCQkqIC0gdGhlIGVhcmx5 IE1NVSBjb2RlIGhhcyBwdXQgdGhlIHR0YiBpbnRvIGEgcGxhY2UKKwkJCSogICB3aGljaCB3ZSBk b24ndCBoYXZlIGluc2lkZSBvdXIgYXZhaWxhYmxlIG1lbW9yeQorCQkJKiAtIFNvbWVib2R5IGVs c2UgaGFzIG9jY3VwaWVkIHRoZSB0dGIgcmVnaW9uIHdoaWNoIG1lYW5zCisJCQkqICAgdGhlIHR0 YiB3aWxsIGdldCBjb3JydXB0ZWQuCisJCQkqLworCQkJcHJfY3JpdCgiQ3JpdGljYWwgRXJyb3I6 IENhbid0IHJlcXVlc3QgU0RSQU0gcmVnaW9uIGZvciB0dGIgYXQgJXBcbiIsCisJCQkJdHRiKTsK Kwl9IGVsc2UgeworCQl0dGIgPSBtZW1hbGlnbihHUkFOVUxFX1NJWkUsIFNaXzE2Syk7CisJCWZy ZWVfaWR4ID0gMTsKKworCQltZW1zZXQodHRiLCAwLCBHUkFOVUxFX1NJWkUpOworCisJCXNldF90 dGJyX3Rjcl9tYWlyKGN1cnJlbnRfZWwoKSwgKHVpbnQ2NF90KXR0YiwgVENSX0ZMQUdTLCBVTkNB Q0hFRF9NRU0pOworCX0KKworCXByX2RlYnVnKCJ0dGI6IDB4JXBcbiIsIHR0Yik7CisKKwkvKiBj cmVhdGUgYSBmbGF0IG1hcHBpbmcgdXNpbmcgMU1pQiBzZWN0aW9ucyAqLworCWNyZWF0ZV9zZWN0 aW9ucygwLCAwLCBHUkFOVUxFX1NJWkUsIFVOQ0FDSEVEX01FTSk7CisKKwkvKgorCSAqIEZpcnN0 IHJlbWFwIHNkcmFtIGNhY2hlZCB1c2luZyBzZWN0aW9ucy4KKwkgKiBUaGlzIGlzIHRvIHNwZWVk IHVwIHRoZSBnZW5lcmF0aW9uIG9mIDJuZCBsZXZlbCBwYWdlIHRhYmxlcworCSAqIGJlbG93CisJ ICovCisJZm9yX2VhY2hfbWVtb3J5X2JhbmsoYmFuaykKKwkJY3JlYXRlX3NlY3Rpb25zKGJhbmst PnN0YXJ0LCBiYW5rLT5zdGFydCwgYmFuay0+c2l6ZSwgQ0FDSEVEX01FTSk7CisKKwlyZXR1cm4g MDsKK30KK21tdV9pbml0Y2FsbChtbXVfaW5pdCk7CisKK3ZvaWQgbW11X2VuYWJsZSh2b2lkKQor eworCWlmICghdHRiKQorCQlhcm1fbW11X25vdF9pbml0aWFsaXplZF9lcnJvcigpOworCisJaWYg KCEoZ2V0X2NyKCkgJiBDUl9NKSkgeworCisJCWlzYigpOworCQlzZXRfY3IoZ2V0X2NyKCkgfCBD Ul9NIHwgQ1JfQyB8IENSX0kpOworCX0KK30KKwordm9pZCBtbXVfZGlzYWJsZSh2b2lkKQorewor CXVuc2lnbmVkIGludCBjcjsKKworCWlmICghdHRiKQorCQlhcm1fbW11X25vdF9pbml0aWFsaXpl ZF9lcnJvcigpOworCisJY3IgPSBnZXRfY3IoKTsKKwljciAmPSB+KENSX00gfCBDUl9DIHwgQ1Jf SSk7CisKKwl0bGJfaW52YWxpZGF0ZSgpOworCisJZHNiKCk7CisJaXNiKCk7CisKKwlzZXRfY3Io Y3IpOworCisJZHNiKCk7CisJaXNiKCk7Cit9CisKK3ZvaWQgbW11X2Vhcmx5X2VuYWJsZSh1aW50 NjRfdCBtZW1iYXNlLCB1aW50NjRfdCBtZW1zaXplLCB1aW50NjRfdCBfdHRiKQoreworCXR0YiA9 ICh1aW50NjRfdCAqKV90dGI7CisKKwltZW1zZXQodHRiLCAwLCBHUkFOVUxFX1NJWkUpOworCWZy ZWVfaWR4ID0gMTsKKworCXNldF90dGJyX3Rjcl9tYWlyKGN1cnJlbnRfZWwoKSwgKHVpbnQ2NF90 KXR0YiwgVENSX0ZMQUdTLCBVTkNBQ0hFRF9NRU0pOworCisJY3JlYXRlX3NlY3Rpb25zKDAsIDAs IDQwOTYsIFVOQ0FDSEVEX01FTSk7CisKKwljcmVhdGVfc2VjdGlvbnMobWVtYmFzZSwgbWVtYmFz ZSwgbWVtc2l6ZSwgQ0FDSEVEX01FTSk7CisKKwlpc2IoKTsKKwlzZXRfY3IoZ2V0X2NyKCkgfCBD Ul9NKTsKK30KKwordW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModm9sYXRpbGUgdm9pZCAqdmly dCkKK3sKKwlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpdmlydDsKK30KKwordm9pZCAqcGh5c190b192 aXJ0KHVuc2lnbmVkIGxvbmcgcGh5cykKK3sKKwlyZXR1cm4gKHZvaWQgKilwaHlzOworfQpkaWZm IC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vbW11LmggYi9hcmNoL2FybS9pbmNsdWRlL2Fz bS9tbXUuaAppbmRleCA4ZGU2NTQ0Li5mNjhhYjM3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNs dWRlL2FzbS9tbXUuaAorKysgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9tbXUuaApAQCAtNiwxNiAr NiwyNCBAQAogI2luY2x1ZGUgPG1hbGxvYy5oPgogI2luY2x1ZGUgPHhmdW5jcy5oPgogCisjaWZk ZWYgQ09ORklHX0NQVV82NHY4CisjaW5jbHVkZSA8YXNtL3BndGFibGU2NC5oPgorCisjZGVmaW5l IERFVl9NRU0JCShQTURfQVRUUklORFgoTVRfREVWSUNFX25HblJuRSkgfCBQTURfU0VDVF9BRiB8 IFBNRF9UWVBFX1NFQ1QpCisjZGVmaW5lIENBQ0hFRF9NRU0JKFBNRF9BVFRSSU5EWChNVF9OT1JN QUwpIHwgUE1EX1NFQ1RfUyB8IFBNRF9TRUNUX0FGIHwgUE1EX1RZUEVfU0VDVCkKKyNkZWZpbmUg VU5DQUNIRURfTUVNCShQTURfQVRUUklORFgoTVRfTk9STUFMX05DKSB8IFBNRF9TRUNUX1MgfCBQ TURfU0VDVF9BRiB8IFBNRF9UWVBFX1NFQ1QpCisjZWxzZQogI2luY2x1ZGUgPGFzbS9wZ3RhYmxl Lmg+CiAKICNkZWZpbmUgUE1EX1NFQ1RfREVGX1VOQ0FDSEVEIChQTURfU0VDVF9BUF9XUklURSB8 IFBNRF9TRUNUX0FQX1JFQUQgfCBQTURfVFlQRV9TRUNUKQogI2RlZmluZSBQTURfU0VDVF9ERUZf Q0FDSEVEIChQTURfU0VDVF9XQiB8IFBNRF9TRUNUX0RFRl9VTkNBQ0hFRCkKKyNlbmRpZgorCisK IAogc3RydWN0IGFybV9tZW1vcnk7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtbXVfZW5hYmxlKHZv aWQpCi17Ci19Cit2b2lkIG1tdV9lbmFibGUodm9pZCk7CiB2b2lkIG1tdV9kaXNhYmxlKHZvaWQp Owogc3RhdGljIGlubGluZSB2b2lkIGFybV9jcmVhdGVfc2VjdGlvbih1bnNpZ25lZCBsb25nIHZp cnQsIHVuc2lnbmVkIGxvbmcgcGh5cywgaW50IHNpemVfbSwKIAkJdW5zaWduZWQgaW50IGZsYWdz KQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vcGd0YWJsZTY0LmggYi9hcmNoL2Fy bS9pbmNsdWRlL2FzbS9wZ3RhYmxlNjQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4yMGJlYTViCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vcGd0 YWJsZTY0LmgKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQVJN IEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisjaWZuZGVmIF9fQVNNX1BHVEFC TEU2NF9ICisjZGVmaW5lIF9fQVNNX1BHVEFCTEU2NF9ICisKKyNkZWZpbmUgVUwoeCkJCV9BQyh4 LCBVTCkKKworI2RlZmluZSBVTlVTRURfREVTQyAgICAgICAgICAgICAgICAweDZFYkFBRDBCQkFE YkE2RTAKKworI2RlZmluZSBWQV9TVEFSVCAgICAgICAgICAgICAgICAgICAweDAKKyNkZWZpbmUg QklUU19QRVJfVkEgICAgICAgICAgICAgICAgMzMKKworLyogR3JhbnVsZSBzaXplIG9mIDRLQiBp cyBiZWluZyB1c2VkICovCisjZGVmaW5lIEdSQU5VTEVfU0laRV9TSElGVCAgICAgICAgIDEyCisj ZGVmaW5lIEdSQU5VTEVfU0laRSAgICAgICAgICAgICAgICgxIDw8IEdSQU5VTEVfU0laRV9TSElG VCkKKyNkZWZpbmUgWExBVF9BRERSX01BU0sgICAgICAgICAgICAgKCgxVUwgPDwgQklUU19QRVJf VkEpIC0gR1JBTlVMRV9TSVpFKQorI2RlZmluZSBHUkFOVUxFX1NJWkVfTUFTSyAgICAgICAgICAo KDEgPDwgR1JBTlVMRV9TSVpFX1NISUZUKSAtIDEpCisKKyNkZWZpbmUgQklUU19SRVNPTFZFRF9Q RVJfTFZMICAgKEdSQU5VTEVfU0laRV9TSElGVCAtIDMpCisjZGVmaW5lIEwxX0FERFJfU0hJRlQg ICAgICAgICAgIChHUkFOVUxFX1NJWkVfU0hJRlQgKyBCSVRTX1JFU09MVkVEX1BFUl9MVkwgKiAy KQorI2RlZmluZSBMMl9BRERSX1NISUZUICAgICAgICAgICAoR1JBTlVMRV9TSVpFX1NISUZUICsg QklUU19SRVNPTFZFRF9QRVJfTFZMICogMSkKKyNkZWZpbmUgTDNfQUREUl9TSElGVCAgICAgICAg ICAgKEdSQU5VTEVfU0laRV9TSElGVCArIEJJVFNfUkVTT0xWRURfUEVSX0xWTCAqIDApCisKKwor I2RlZmluZSBMMV9BRERSX01BU0sgICAgICgoKDFVTCA8PCBCSVRTX1JFU09MVkVEX1BFUl9MVkwp IC0gMSkgPDwgTDFfQUREUl9TSElGVCkKKyNkZWZpbmUgTDJfQUREUl9NQVNLICAgICAoKCgxVUwg PDwgQklUU19SRVNPTFZFRF9QRVJfTFZMKSAtIDEpIDw8IEwyX0FERFJfU0hJRlQpCisjZGVmaW5l IEwzX0FERFJfTUFTSyAgICAgKCgoMVVMIDw8IEJJVFNfUkVTT0xWRURfUEVSX0xWTCkgLSAxKSA8 PCBMM19BRERSX1NISUZUKQorCisvKiBUaGVzZSBtYWNyb3MgZ2l2ZSB0aGUgc2l6ZSBvZiB0aGUg cmVnaW9uIGFkZHJlc3NlZCBieSBlYWNoIGVudHJ5IG9mIGEgeGxhdAorICAgdGFibGUgYXQgYW55 IGdpdmVuIGxldmVsICovCisjZGVmaW5lIEwzX1hMQVRfU0laRSAgICAgICAgICAgICAgICgxVUwg PDwgTDNfQUREUl9TSElGVCkKKyNkZWZpbmUgTDJfWExBVF9TSVpFICAgICAgICAgICAgICAgKDFV TCA8PCBMMl9BRERSX1NISUZUKQorI2RlZmluZSBMMV9YTEFUX1NJWkUgICAgICAgICAgICAgICAo MVVMIDw8IEwxX0FERFJfU0hJRlQpCisKKyNkZWZpbmUgR1JBTlVMRV9NQVNLCUdSQU5VTEVfU0la RQorCisKKy8qCisgKiBMZXZlbCAyIGRlc2NyaXB0b3IgKFBNRCkuCisgKi8KKyNkZWZpbmUgUE1E X1RZUEVfTUFTSwkJKDMgPDwgMCkKKyNkZWZpbmUgUE1EX1RZUEVfRkFVTFQJCSgwIDw8IDApCisj ZGVmaW5lIFBNRF9UWVBFX1RBQkxFCQkoMyA8PCAwKQorI2RlZmluZSBQTURfVFlQRV9TRUNUCQko MSA8PCAwKQorI2RlZmluZSBQTURfVEFCTEVfQklUCQkoMSA8PCAxKQorCisvKgorICogU2VjdGlv bgorICovCisjZGVmaW5lIFBNRF9TRUNUX1ZBTElECQkoMSA8PCAwKQorI2RlZmluZSBQTURfU0VD VF9VU0VSCQkoMSA8PCA2KQkJLyogQVBbMV0gKi8KKyNkZWZpbmUgUE1EX1NFQ1RfUkRPTkxZCQko MSA8PCA3KQkJLyogQVBbMl0gKi8KKyNkZWZpbmUgUE1EX1NFQ1RfUwkJKDMgPDwgOCkKKyNkZWZp bmUgUE1EX1NFQ1RfQUYJCSgxIDw8IDEwKQorI2RlZmluZSBQTURfU0VDVF9ORwkJKDEgPDwgMTEp CisjZGVmaW5lIFBNRF9TRUNUX0NPTlQJCSgxIDw8IDUyKQorI2RlZmluZSBQTURfU0VDVF9QWE4J CSgxIDw8IDUzKQorI2RlZmluZSBQTURfU0VDVF9VWE4JCSgxIDw8IDU0KQorCisvKgorICogQXR0 ckluZHhbMjowXSBlbmNvZGluZyAobWFwcGluZyBhdHRyaWJ1dGVzIGRlZmluZWQgaW4gdGhlIE1B SVIqIHJlZ2lzdGVycykuCisgKi8KKyNkZWZpbmUgUE1EX0FUVFJJTkRYKHQpCQkoKHQpIDw8IDIp CisjZGVmaW5lIFBNRF9BVFRSSU5EWF9NQVNLCSg3IDw8IDIpCisKKy8qCisgKiBMZXZlbCAzIGRl c2NyaXB0b3IgKFBURSkuCisgKi8KKyNkZWZpbmUgUFRFX1RZUEVfTUFTSwkJKDMgPDwgMCkKKyNk ZWZpbmUgUFRFX1RZUEVfRkFVTFQJCSgwIDw8IDApCisjZGVmaW5lIFBURV9UWVBFX1BBR0UJCSgz IDw8IDApCisjZGVmaW5lIFBURV9UQUJMRV9CSVQJCSgxIDw8IDEpCisjZGVmaW5lIFBURV9VU0VS CQkoMSA8PCA2KQkJLyogQVBbMV0gKi8KKyNkZWZpbmUgUFRFX1JET05MWQkJKDEgPDwgNykJCS8q IEFQWzJdICovCisjZGVmaW5lIFBURV9TSEFSRUQJCSgzIDw8IDgpCQkvKiBTSFsxOjBdLCBpbm5l ciBzaGFyZWFibGUgKi8KKyNkZWZpbmUgUFRFX0FGCQkJKDEgPDwgMTApCS8qIEFjY2VzcyBGbGFn ICovCisjZGVmaW5lIFBURV9ORwkJCSgxIDw8IDExKQkvKiBuRyAqLworI2RlZmluZSBQVEVfREJN CQkJKDEgPDwgNTEpCS8qIERpcnR5IEJpdCBNYW5hZ2VtZW50ICovCisjZGVmaW5lIFBURV9DT05U CQkoMSA8PCA1MikJLyogQ29udGlndW91cyByYW5nZSAqLworI2RlZmluZSBQVEVfUFhOCQkJKDEg PDwgNTMpCS8qIFByaXZpbGVnZWQgWE4gKi8KKyNkZWZpbmUgUFRFX1VYTgkJCSgxIDw8IDU0KQkv KiBVc2VyIFhOICovCisKKy8qCisgKiBBdHRySW5keFsyOjBdIGVuY29kaW5nIChtYXBwaW5nIGF0 dHJpYnV0ZXMgZGVmaW5lZCBpbiB0aGUgTUFJUiogcmVnaXN0ZXJzKS4KKyAqLworI2RlZmluZSBQ VEVfQVRUUklORFgodCkJCSgodCkgPDwgMikKKyNkZWZpbmUgUFRFX0FUVFJJTkRYX01BU0sJKDcg PDwgMikKKworLyoKKyAqIE1lbW9yeSB0eXBlcyBhdmFpbGFibGUuCisgKi8KKyNkZWZpbmUgTVRf REVWSUNFX25HblJuRQkwCisjZGVmaW5lIE1UX0RFVklDRV9uR25SRQkJMQorI2RlZmluZSBNVF9E RVZJQ0VfR1JFCQkyCisjZGVmaW5lIE1UX05PUk1BTF9OQwkJMworI2RlZmluZSBNVF9OT1JNQUwJ CTQKKyNkZWZpbmUgTVRfTk9STUFMX1dUCQk1CisKKy8qCisgKiBUQ1IgZmxhZ3MuCisgKi8KKyNk ZWZpbmUgVENSX1QwU1ooeCkJCSgoNjQgLSAoeCkpIDw8IDApCisjZGVmaW5lIFRDUl9JUkdOX05D CQkoMCA8PCA4KQorI2RlZmluZSBUQ1JfSVJHTl9XQldBCQkoMSA8PCA4KQorI2RlZmluZSBUQ1Jf SVJHTl9XVAkJKDIgPDwgOCkKKyNkZWZpbmUgVENSX0lSR05fV0JOV0EJCSgzIDw8IDgpCisjZGVm aW5lIFRDUl9JUkdOX01BU0sJCSgzIDw8IDgpCisjZGVmaW5lIFRDUl9PUkdOX05DCQkoMCA8PCAx MCkKKyNkZWZpbmUgVENSX09SR05fV0JXQQkJKDEgPDwgMTApCisjZGVmaW5lIFRDUl9PUkdOX1dU CQkoMiA8PCAxMCkKKyNkZWZpbmUgVENSX09SR05fV0JOV0EJCSgzIDw8IDEwKQorI2RlZmluZSBU Q1JfT1JHTl9NQVNLCQkoMyA8PCAxMCkKKyNkZWZpbmUgVENSX1NIQVJFRF9OT04JCSgwIDw8IDEy KQorI2RlZmluZSBUQ1JfU0hBUkVEX09VVEVSCSgyIDw8IDEyKQorI2RlZmluZSBUQ1JfU0hBUkVE X0lOTkVSCSgzIDw8IDEyKQorI2RlZmluZSBUQ1JfVEcwXzRLCQkoMCA8PCAxNCkKKyNkZWZpbmUg VENSX1RHMF82NEsJCSgxIDw8IDE0KQorI2RlZmluZSBUQ1JfVEcwXzE2SwkJKDIgPDwgMTQpCisj ZGVmaW5lIFRDUl9FTDFfSVBTX0JJVFMJKFVMKDMpIDw8IDMyKQkvKiA0MiBiaXRzIHBoeXNpY2Fs IGFkZHJlc3MgKi8KKyNkZWZpbmUgVENSX0VMMl9JUFNfQklUUwkoMyA8PCAxNikJLyogNDIgYml0 cyBwaHlzaWNhbCBhZGRyZXNzICovCisjZGVmaW5lIFRDUl9FTDNfSVBTX0JJVFMJKDMgPDwgMTYp CS8qIDQyIGJpdHMgcGh5c2ljYWwgYWRkcmVzcyAqLworCisjZGVmaW5lIFRDUl9FTDFfUlNWRAkJ KDEgPDwgMzEpCisjZGVmaW5lIFRDUl9FTDJfUlNWRAkJKDEgPDwgMzEgfCAxIDw8IDIzKQorI2Rl ZmluZSBUQ1JfRUwzX1JTVkQJCSgxIDw8IDMxIHwgMSA8PCAyMykKKworI2VuZGlmCi0tIAoyLjEu MAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmJhcmVi b3ggbWFpbGluZyBsaXN0CmJhcmVib3hAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JhcmVib3gK