From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bK2Rt-0007tG-Gi for barebox@lists.infradead.org; Mon, 04 Jul 2016 11:54:08 +0000 Received: by mail-wm0-x243.google.com with SMTP id 187so21129972wmz.1 for ; Mon, 04 Jul 2016 04:53:43 -0700 (PDT) From: Raphael Poggi Date: Mon, 4 Jul 2016 13:52:53 +0200 Message-Id: <1467633177-22478-11-git-send-email-poggi.raph@gmail.com> In-Reply-To: <1467633177-22478-1-git-send-email-poggi.raph@gmail.com> References: <1467633177-22478-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 v5 10/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 ICAgICAgICAgICAgfCAzMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiBhcmNoL2FybS9pbmNsdWRlL2FzbS9tbXUuaCAgICAgICB8ICAxNCArLQogYXJjaC9hcm0vaW5j bHVkZS9hc20vcGd0YWJsZTY0LmggfCAxNDAgKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hh bmdlZCwgNTQwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgYXJjaC9hcm0vY3B1L21tdV82NC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vaW5j bHVkZS9hc20vcGd0YWJsZTY0LmgKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jcHUvTWFrZWZpbGUg Yi9hcmNoL2FybS9jcHUvTWFrZWZpbGUKaW5kZXggN2ViMDZmYi4uMzMxYzFjZCAxMDA2NDQKLS0t IGEvYXJjaC9hcm0vY3B1L01ha2VmaWxlCisrKyBiL2FyY2gvYXJtL2NwdS9NYWtlZmlsZQpAQCAt MjYsOCArMjYsOCBAQCBlbmRpZgogb2JqLSQoQ09ORklHX0NNRF9BUk1fQ1BVSU5GTykgKz0gY3B1 aW5mby5vCiBvYmotJChDT05GSUdfQ01EX0FSTV9NTVVJTkZPKSArPSBtbXVpbmZvLm8KIG9iai0k KENPTkZJR19PRkRFVklDRSkgKz0gZHRiLm8KLW9iai0kKENPTkZJR19NTVUpICs9IG1tdS5vIGNh Y2hlLm8gbW11LWVhcmx5Lm8KLXBibC0kKENPTkZJR19NTVUpICs9IG1tdS1lYXJseS5vCitvYmot JChDT05GSUdfTU1VKSArPSBjYWNoZS5vCisKIGlmZXEgKCQoQ09ORklHX01NVSksKQogb2JqLXkg Kz0gbm8tbW11Lm8KIGVuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jcHUvY3B1LmMgYi9hcmNo L2FybS9jcHUvY3B1LmMKaW5kZXggY2M1NDMyNC4uYjQ4MDQ2MyAxMDA2NDQKLS0tIGEvYXJjaC9h cm0vY3B1L2NwdS5jCisrKyBiL2FyY2gvYXJtL2NwdS9jcHUuYwpAQCAtMTAwLDcgKzEwMCw5IEBA IHN0YXRpYyB2b2lkIGFyY2hfc2h1dGRvd24odm9pZCkKIHsKIAl1aW50MzJfdCByOwogCisjaWZk ZWYgQ09ORklHX01NVQogCW1tdV9kaXNhYmxlKCk7CisjZW5kaWYKIAlmbHVzaF9pY2FjaGUoKTsK IAogI2lmIF9fTElOVVhfQVJNX0FSQ0hfXyA8PSA3CmRpZmYgLS1naXQgYS9hcmNoL2FybS9jcHUv bW11LmggYi9hcmNoL2FybS9jcHUvbW11LmgKaW5kZXggNzllYmM4MC4uMTg2ZDQwOCAxMDA2NDQK LS0tIGEvYXJjaC9hcm0vY3B1L21tdS5oCisrKyBiL2FyY2gvYXJtL2NwdS9tbXUuaApAQCAtMSw2 ICsxLDYwIEBACiAjaWZuZGVmIF9fQVJNX01NVV9ICiAjZGVmaW5lIF9fQVJNX01NVV9ICiAKKyNp ZmRlZiBDT05GSUdfQ1BVXzY0djgKKworI2RlZmluZSBUQ1JfRkxBR1MJCShUQ1JfVEcwXzRLIHwg XAorCQlUQ1JfU0hBUkVEX09VVEVSIHwgXAorCQlUQ1JfU0hBUkVEX0lOTkVSIHwgXAorCQlUQ1Jf SVJHTl9XQldBIHwgXAorCQlUQ1JfT1JHTl9XQldBIHwgXAorCQlUQ1JfVDBTWihCSVRTX1BFUl9W QSkpCisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfdHRi cl90Y3JfbWFpcihpbnQgZWwsIHVpbnQ2NF90IHRhYmxlLCB1aW50NjRfdCB0Y3IsIHVpbnQ2NF90 IGF0dHIpCit7CisJYXNtIHZvbGF0aWxlKCJkc2Igc3kiKTsKKwlpZiAoZWwgPT0gMSkgeworCQlh c20gdm9sYXRpbGUoIm1zciB0dGJyMF9lbDEsICUwIiA6IDogInIiICh0YWJsZSkgOiAibWVtb3J5 Iik7CisJCWFzbSB2b2xhdGlsZSgibXNyIHRjcl9lbDEsICUwIiA6IDogInIiICh0Y3IpIDogIm1l bW9yeSIpOworCQlhc20gdm9sYXRpbGUoIm1zciBtYWlyX2VsMSwgJTAiIDogOiAiciIgKGF0dHIp IDogIm1lbW9yeSIpOworCX0gZWxzZSBpZiAoZWwgPT0gMikgeworCQlhc20gdm9sYXRpbGUoIm1z ciB0dGJyMF9lbDIsICUwIiA6IDogInIiICh0YWJsZSkgOiAibWVtb3J5Iik7CisJCWFzbSB2b2xh dGlsZSgibXNyIHRjcl9lbDIsICUwIiA6IDogInIiICh0Y3IpIDogIm1lbW9yeSIpOworCQlhc20g dm9sYXRpbGUoIm1zciBtYWlyX2VsMiwgJTAiIDogOiAiciIgKGF0dHIpIDogIm1lbW9yeSIpOwor CX0gZWxzZSBpZiAoZWwgPT0gMykgeworCQlhc20gdm9sYXRpbGUoIm1zciB0dGJyMF9lbDMsICUw IiA6IDogInIiICh0YWJsZSkgOiAibWVtb3J5Iik7CisJCWFzbSB2b2xhdGlsZSgibXNyIHRjcl9l bDMsICUwIiA6IDogInIiICh0Y3IpIDogIm1lbW9yeSIpOworCQlhc20gdm9sYXRpbGUoIm1zciBt YWlyX2VsMywgJTAiIDogOiAiciIgKGF0dHIpIDogIm1lbW9yeSIpOworCX0gZWxzZSB7CisJCWhh bmcoKTsKKwl9CisJYXNtIHZvbGF0aWxlKCJpc2IiKTsKK30KKworc3RhdGljIGlubGluZSB1aW50 NjRfdCBnZXRfdHRicihpbnQgZWwpCit7CisJdWludDY0X3QgdmFsOworCWlmIChlbCA9PSAxKSB7 CisJCWFzbSB2b2xhdGlsZSgibXJzICUwLCB0dGJyMF9lbDEiIDogIj1yIiAodmFsKSk7CisJfSBl bHNlIGlmIChlbCA9PSAyKSB7CisJCWFzbSB2b2xhdGlsZSgibXJzICUwLCB0dGJyMF9lbDIiIDog Ij1yIiAodmFsKSk7CisJfSBlbHNlIGlmIChlbCA9PSAzKSB7CisJCWFzbSB2b2xhdGlsZSgibXJz ICUwLCB0dGJyMF9lbDMiIDogIj1yIiAodmFsKSk7CisJfSBlbHNlIHsKKwkJaGFuZygpOworCX0K KworCXJldHVybiB2YWw7Cit9CisKK3ZvaWQgbW11X2Vhcmx5X2VuYWJsZSh1aW50NjRfdCBtZW1i YXNlLCB1aW50NjRfdCBtZW1zaXplLCB1aW50NjRfdCBfdHRiKTsKKworI2VuZGlmCisKKyNlbmRp ZiAvKiBDT05GSUdfQ1BVXzY0djggKi8KKwogI2lmZGVmIENPTkZJR19NTVUKIHZvaWQgX19tbXVf Y2FjaGVfb24odm9pZCk7CiB2b2lkIF9fbW11X2NhY2hlX29mZih2b2lkKTsKZGlmZiAtLWdpdCBh L2FyY2gvYXJtL2NwdS9tbXVfNjQuYyBiL2FyY2gvYXJtL2NwdS9tbXVfNjQuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmQ4MGMwCi0tLSAvZGV2L251bGwKKysrIGIvYXJj aC9hcm0vY3B1L21tdV82NC5jCkBAIC0wLDAgKzEsMzMxIEBACisvKgorICogQ29weXJpZ2h0IChj KSAyMDA5LTIwMTMgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0 cm9uaXgKKyAqIENvcHlyaWdodCAoYykgMjAxNiBSYXBoYcOrbCBQb2dnaSA8cG9nZ2kucmFwaEBn bWFpbC5jb20+CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hv IGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVy c2lvbiAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqLworCisjZGVmaW5lIHByX2ZtdChmbXQp CSJtbXU6ICIgZm10CisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxkbWEtZGlyLmg+ CisjaW5jbHVkZSA8aW5pdC5oPgorI2luY2x1ZGUgPG1tdS5oPgorI2luY2x1ZGUgPGVycm5vLmg+ CisjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KKyNpbmNsdWRlIDxhc20vbWVtb3J5Lmg+CisjaW5j bHVkZSA8YXNtL2JhcmVib3gtYXJtLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1 ZGUgPGFzbS9jYWNoZS5oPgorI2luY2x1ZGUgPG1lbW9yeS5oPgorI2luY2x1ZGUgPGFzbS9zeXN0 ZW1faW5mby5oPgorCisjaW5jbHVkZSAibW11LmgiCisKK3N0YXRpYyB1aW50NjRfdCAqdHRiOwor c3RhdGljIGludCBmcmVlX2lkeDsKKworc3RhdGljIHZvaWQgYXJtX21tdV9ub3RfaW5pdGlhbGl6 ZWRfZXJyb3Iodm9pZCkKK3sKKwkvKgorCSAqIFRoaXMgbWVhbnM6CisJICogLSBvbmUgb2YgdGhl IE1NVSBmdW5jdGlvbnMgbGlrZSBkbWFfYWxsb2NfY29oZXJlbnQKKwkgKiAgIG9yIHJlbWFwX3Jh bmdlIGlzIGNhbGxlZCB0b28gZWFybHksIGJlZm9yZSB0aGUgTU1VIGlzIGluaXRpYWxpemVkCisJ ICogLSBPciB0aGUgTU1VIGluaXRpYWxpemF0aW9uIGhhcyBmYWlsZWQgZWFybGllcgorCSAqLwor CXBhbmljKCJNTVUgbm90IGluaXRpYWxpemVkXG4iKTsKK30KKworCisvKgorICogRG8gaXQgdGhl IHNpbXBsZSB3YXkgZm9yIG5vdyBhbmQgaW52YWxpZGF0ZSB0aGUgZW50aXJlCisgKiB0bGIKKyAq Lworc3RhdGljIGlubGluZSB2b2lkIHRsYl9pbnZhbGlkYXRlKHZvaWQpCit7CisJdW5zaWduZWQg aW50IGVsID0gY3VycmVudF9lbCgpOworCisJZHNiKCk7CisKKwlpZiAoZWwgPT0gMSkKKwkJX19h c21fXyBfX3ZvbGF0aWxlX18oInRsYmkgdm1hbGxlMVxuXHQiIDogOiA6ICJtZW1vcnkiKTsKKwll bHNlIGlmIChlbCA9PSAyKQorCQlfX2FzbV9fIF9fdm9sYXRpbGVfXygidGxiaSBhbGxlMlxuXHQi IDogOiA6ICJtZW1vcnkiKTsKKwllbHNlIGlmIChlbCA9PSAzKQorCQlfX2FzbV9fIF9fdm9sYXRp bGVfXygidGxiaSBhbGxlM1xuXHQiIDogOiA6ICJtZW1vcnkiKTsKKworCWRzYigpOworCWlzYigp OworfQorCitzdGF0aWMgaW50IGxldmVsMnNoaWZ0KGludCBsZXZlbCkKK3sKKwkvKiBQYWdlIGlz IDEyIGJpdHMgd2lkZSwgZXZlcnkgbGV2ZWwgdHJhbnNsYXRlcyA5IGJpdHMgKi8KKwlyZXR1cm4g KDEyICsgOSAqICgzIC0gbGV2ZWwpKTsKK30KKworc3RhdGljIHVpbnQ2NF90IGxldmVsMm1hc2so aW50IGxldmVsKQoreworCXVpbnQ2NF90IG1hc2sgPSAtRUlOVkFMOworCisJaWYgKGxldmVsID09 IDEpCisJCW1hc2sgPSBMMV9BRERSX01BU0s7CisJZWxzZSBpZiAobGV2ZWwgPT0gMikKKwkJbWFz ayA9IEwyX0FERFJfTUFTSzsKKwllbHNlIGlmIChsZXZlbCA9PSAzKQorCQltYXNrID0gTDNfQURE Ul9NQVNLOworCisJcmV0dXJuIG1hc2s7Cit9CisKK3N0YXRpYyBpbnQgcHRlX3R5cGUodWludDY0 X3QgKnB0ZSkKK3sKKwlyZXR1cm4gKnB0ZSAmIFBNRF9UWVBFX01BU0s7Cit9CisKK3N0YXRpYyB2 b2lkIHNldF90YWJsZSh1aW50NjRfdCAqcHQsIHVpbnQ2NF90ICp0YWJsZV9hZGRyKQoreworCXVp bnQ2NF90IHZhbDsKKworCXZhbCA9IFBNRF9UWVBFX1RBQkxFIHwgKHVpbnQ2NF90KXRhYmxlX2Fk ZHI7CisJKnB0ID0gdmFsOworfQorCitzdGF0aWMgdWludDY0X3QgKmNyZWF0ZV90YWJsZSh2b2lk KQoreworCXVpbnQ2NF90ICpuZXdfdGFibGUgPSB0dGIgKyBmcmVlX2lkeCAqIEdSQU5VTEVfU0la RTsKKworCS8qIE1hcmsgYWxsIGVudHJpZXMgYXMgaW52YWxpZCAqLworCW1lbXNldChuZXdfdGFi bGUsIDAsIEdSQU5VTEVfU0laRSk7CisKKwlmcmVlX2lkeCsrOworCisJcmV0dXJuIG5ld190YWJs ZTsKK30KKworc3RhdGljIHVpbnQ2NF90ICpnZXRfbGV2ZWxfdGFibGUodWludDY0X3QgKnB0ZSkK K3sKKwl1aW50NjRfdCAqdGFibGUgPSAodWludDY0X3QgKikoKnB0ZSAmIFhMQVRfQUREUl9NQVNL KTsKKworCWlmIChwdGVfdHlwZShwdGUpICE9IFBNRF9UWVBFX1RBQkxFKSB7CisJCXRhYmxlID0g Y3JlYXRlX3RhYmxlKCk7CisJCXNldF90YWJsZShwdGUsIHRhYmxlKTsKKwl9CisKKwlyZXR1cm4g dGFibGU7Cit9CisKK3N0YXRpYyB1aW50NjRfdCAqZmluZF9wdGUodWludDY0X3QgYWRkcikKK3sK Kwl1aW50NjRfdCAqcHRlOworCXVpbnQ2NF90IGJsb2NrX3NoaWZ0OworCXVpbnQ2NF90IGlkeDsK KwlpbnQgaTsKKworCXB0ZSA9IHR0YjsKKworCWZvciAoaSA9IDE7IGkgPCA0OyBpKyspIHsKKwkJ YmxvY2tfc2hpZnQgPSBsZXZlbDJzaGlmdChpKTsKKwkJaWR4ID0gKGFkZHIgJiBsZXZlbDJtYXNr KGkpKSA+PiBibG9ja19zaGlmdDsKKwkJcHRlICs9IGlkeDsKKworCQlpZiAoKHB0ZV90eXBlKHB0 ZSkgIT0gUE1EX1RZUEVfVEFCTEUpIHx8IChibG9ja19zaGlmdCA8PSBHUkFOVUxFX1NJWkVfU0hJ RlQpKQorCQkJYnJlYWs7CisJCWVsc2UKKwkJCXB0ZSA9ICh1aW50NjRfdCAqKSgqcHRlICYgWExB VF9BRERSX01BU0spOworCX0KKworCXJldHVybiBwdGU7Cit9CisKK3N0YXRpYyB2b2lkIG1hcF9y ZWdpb24odWludDY0X3QgdmlydCwgdWludDY0X3QgcGh5cywgdWludDY0X3Qgc2l6ZSwgdWludDY0 X3QgYXR0cikKK3sKKwl1aW50NjRfdCBibG9ja19zaXplOworCXVpbnQ2NF90IGJsb2NrX3NoaWZ0 OworCXVpbnQ2NF90ICpwdGU7CisJdWludDY0X3QgaWR4OworCXVpbnQ2NF90IGFkZHI7CisJdWlu dDY0X3QgKnRhYmxlOworCWludCBsZXZlbDsKKworCWlmICghdHRiKQorCQlhcm1fbW11X25vdF9p bml0aWFsaXplZF9lcnJvcigpOworCisJYWRkciA9IHZpcnQ7CisKKwlhdHRyICY9IH4oUE1EX1RZ UEVfU0VDVCk7CisKKwl3aGlsZSAoc2l6ZSkgeworCQl0YWJsZSA9IHR0YjsKKwkJZm9yIChsZXZl bCA9IDE7IGxldmVsIDwgNDsgbGV2ZWwrKykgeworCQkJYmxvY2tfc2hpZnQgPSBsZXZlbDJzaGlm dChsZXZlbCk7CisJCQlpZHggPSAoYWRkciAmIGxldmVsMm1hc2sobGV2ZWwpKSA+PiBibG9ja19z aGlmdDsKKwkJCWJsb2NrX3NpemUgPSAoMSA8PCBibG9ja19zaGlmdCk7CisKKwkJCXB0ZSA9IHRh YmxlICsgaWR4OworCisJCQlpZiAobGV2ZWwgPT0gMykKKwkJCQlhdHRyIHw9IFBURV9UWVBFX1BB R0U7CisJCQllbHNlCisJCQkJYXR0ciB8PSBQTURfVFlQRV9TRUNUOworCisJCQlpZiAoc2l6ZSA+ PSBibG9ja19zaXplICYmIElTX0FMSUdORUQoYWRkciwgYmxvY2tfc2l6ZSkpIHsKKwkJCQkqcHRl ID0gcGh5cyB8IGF0dHI7CisJCQkJYWRkciArPSBibG9ja19zaXplOworCQkJCXBoeXMgKz0gYmxv Y2tfc2l6ZTsKKwkJCQlzaXplIC09IGJsb2NrX3NpemU7CisJCQkJYnJlYWs7CisKKwkJCX0KKwor CQkJdGFibGUgPSBnZXRfbGV2ZWxfdGFibGUocHRlKTsKKwkJfQorCisJfQorfQorCitzdGF0aWMg dm9pZCBjcmVhdGVfc2VjdGlvbnModWludDY0X3QgdmlydCwgdWludDY0X3QgcGh5cywgdWludDY0 X3Qgc2l6ZV9tLCB1aW50NjRfdCBmbGFncykKK3sKKworCW1hcF9yZWdpb24odmlydCwgcGh5cywg c2l6ZV9tLCBmbGFncyk7CisJdGxiX2ludmFsaWRhdGUoKTsKK30KKwordm9pZCAqbWFwX2lvX3Nl Y3Rpb25zKHVuc2lnbmVkIGxvbmcgcGh5cywgdm9pZCAqX3N0YXJ0LCBzaXplX3Qgc2l6ZSkKK3sK KworCW1hcF9yZWdpb24oKHVpbnQ2NF90KV9zdGFydCwgcGh5cywgKHVpbnQ2NF90KXNpemUsIFVO Q0FDSEVEX01FTSk7CisKKwl0bGJfaW52YWxpZGF0ZSgpOworCXJldHVybiBfc3RhcnQ7Cit9CisK KworaW50IGFyY2hfcmVtYXBfcmFuZ2Uodm9pZCAqX3N0YXJ0LCBzaXplX3Qgc2l6ZSwgdW5zaWdu ZWQgZmxhZ3MpCit7CisJbWFwX3JlZ2lvbigodWludDY0X3QpX3N0YXJ0LCAodWludDY0X3QpX3N0 YXJ0LCAodWludDY0X3Qpc2l6ZSwgZmxhZ3MpOworCXRsYl9pbnZhbGlkYXRlKCk7CisKKwlyZXR1 cm4gMDsKK30KKworLyoKKyAqIFByZXBhcmUgTU1VIGZvciB1c2FnZSBlbmFibGUgaXQuCisgKi8K K3N0YXRpYyBpbnQgbW11X2luaXQodm9pZCkKK3sKKwlzdHJ1Y3QgbWVtb3J5X2JhbmsgKmJhbms7 CisKKwlpZiAobGlzdF9lbXB0eSgmbWVtb3J5X2JhbmtzKSkKKwkJLyoKKwkJICogSWYgeW91IHNl ZSB0aGlzIGl0IG1lYW5zIHlvdSBoYXZlIG5vIG1lbW9yeSByZWdpc3RlcmVkLgorCQkgKiBUaGlz IGNhbiBiZSBkb25lIGVpdGhlciB3aXRoIGFybV9hZGRfbWVtX2RldmljZSgpIGluIGFuCisJCSAq IGluaXRjYWxsIHByaW9yIHRvIG1tdV9pbml0Y2FsbCBvciB2aWEgZGV2aWNldHJlZSBpbiB0aGUK KwkJICogbWVtb3J5IG5vZGUuCisJCSAqLworCQlwYW5pYygiTU1VOiBObyBtZW1vcnkgYmFuayBm b3VuZCEgQ2Fubm90IGNvbnRpbnVlXG4iKTsKKworCWlmIChnZXRfY3IoKSAmIENSX00pIHsKKwkJ dHRiID0gKHVpbnQ2NF90ICopZ2V0X3R0YnIoY3VycmVudF9lbCgpKTsKKwkJaWYgKCFyZXF1ZXN0 X3NkcmFtX3JlZ2lvbigidHRiIiwgKHVuc2lnbmVkIGxvbmcpdHRiLCBTWl8xNkspKQorCQkJLyoK KwkJCSogVGhpcyBjYW4gbWVhbiB0aGF0OgorCQkJKiAtIHRoZSBlYXJseSBNTVUgY29kZSBoYXMg cHV0IHRoZSB0dGIgaW50byBhIHBsYWNlCisJCQkqICAgd2hpY2ggd2UgZG9uJ3QgaGF2ZSBpbnNp ZGUgb3VyIGF2YWlsYWJsZSBtZW1vcnkKKwkJCSogLSBTb21lYm9keSBlbHNlIGhhcyBvY2N1cGll ZCB0aGUgdHRiIHJlZ2lvbiB3aGljaCBtZWFucworCQkJKiAgIHRoZSB0dGIgd2lsbCBnZXQgY29y cnVwdGVkLgorCQkJKi8KKwkJCXByX2NyaXQoIkNyaXRpY2FsIEVycm9yOiBDYW4ndCByZXF1ZXN0 IFNEUkFNIHJlZ2lvbiBmb3IgdHRiIGF0ICVwXG4iLAorCQkJCXR0Yik7CisJfSBlbHNlIHsKKwkJ dHRiID0gbWVtYWxpZ24oR1JBTlVMRV9TSVpFLCBTWl8xNkspOworCQlmcmVlX2lkeCA9IDE7CisK KwkJbWVtc2V0KHR0YiwgMCwgR1JBTlVMRV9TSVpFKTsKKworCQlzZXRfdHRicl90Y3JfbWFpcihj dXJyZW50X2VsKCksICh1aW50NjRfdCl0dGIsIFRDUl9GTEFHUywgVU5DQUNIRURfTUVNKTsKKwl9 CisKKwlwcl9kZWJ1ZygidHRiOiAweCVwXG4iLCB0dGIpOworCisJLyogY3JlYXRlIGEgZmxhdCBt YXBwaW5nIHVzaW5nIDFNaUIgc2VjdGlvbnMgKi8KKwljcmVhdGVfc2VjdGlvbnMoMCwgMCwgR1JB TlVMRV9TSVpFLCBVTkNBQ0hFRF9NRU0pOworCisJLyogTWFwIHNkcmFtIGNhY2hlZC4gKi8KKwlm b3JfZWFjaF9tZW1vcnlfYmFuayhiYW5rKQorCQljcmVhdGVfc2VjdGlvbnMoYmFuay0+c3RhcnQs IGJhbmstPnN0YXJ0LCBiYW5rLT5zaXplLCBDQUNIRURfTUVNKTsKKworCXJldHVybiAwOworfQor bW11X2luaXRjYWxsKG1tdV9pbml0KTsKKwordm9pZCBtbXVfZW5hYmxlKHZvaWQpCit7CisJaWYg KCF0dGIpCisJCWFybV9tbXVfbm90X2luaXRpYWxpemVkX2Vycm9yKCk7CisKKwlpZiAoIShnZXRf Y3IoKSAmIENSX00pKSB7CisKKwkJaXNiKCk7CisJCXNldF9jcihnZXRfY3IoKSB8IENSX00gfCBD Ul9DIHwgQ1JfSSk7CisJfQorfQorCit2b2lkIG1tdV9kaXNhYmxlKHZvaWQpCit7CisJdW5zaWdu ZWQgaW50IGNyOworCisJaWYgKCF0dGIpCisJCWFybV9tbXVfbm90X2luaXRpYWxpemVkX2Vycm9y KCk7CisKKwljciA9IGdldF9jcigpOworCWNyICY9IH4oQ1JfTSB8IENSX0MgfCBDUl9JKTsKKwor CXRsYl9pbnZhbGlkYXRlKCk7CisKKwlkc2IoKTsKKwlpc2IoKTsKKworCXNldF9jcihjcik7CisK Kwlkc2IoKTsKKwlpc2IoKTsKK30KKwordm9pZCBtbXVfZWFybHlfZW5hYmxlKHVpbnQ2NF90IG1l bWJhc2UsIHVpbnQ2NF90IG1lbXNpemUsIHVpbnQ2NF90IF90dGIpCit7CisJdHRiID0gKHVpbnQ2 NF90ICopX3R0YjsKKworCW1lbXNldCh0dGIsIDAsIEdSQU5VTEVfU0laRSk7CisJZnJlZV9pZHgg PSAxOworCisJc2V0X3R0YnJfdGNyX21haXIoY3VycmVudF9lbCgpLCAodWludDY0X3QpdHRiLCBU Q1JfRkxBR1MsIFVOQ0FDSEVEX01FTSk7CisKKwljcmVhdGVfc2VjdGlvbnMoMCwgMCwgNDA5Niwg VU5DQUNIRURfTUVNKTsKKworCWNyZWF0ZV9zZWN0aW9ucyhtZW1iYXNlLCBtZW1iYXNlLCBtZW1z aXplLCBDQUNIRURfTUVNKTsKKworCWlzYigpOworCXNldF9jcihnZXRfY3IoKSB8IENSX00pOwor fQorCit1bnNpZ25lZCBsb25nIHZpcnRfdG9fcGh5cyh2b2xhdGlsZSB2b2lkICp2aXJ0KQorewor CXJldHVybiAodW5zaWduZWQgbG9uZyl2aXJ0OworfQorCit2b2lkICpwaHlzX3RvX3ZpcnQodW5z aWduZWQgbG9uZyBwaHlzKQoreworCXJldHVybiAodm9pZCAqKXBoeXM7Cit9CmRpZmYgLS1naXQg YS9hcmNoL2FybS9pbmNsdWRlL2FzbS9tbXUuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL21tdS5o CmluZGV4IDhkZTY1NDQuLmY2OGFiMzcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNt L21tdS5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL21tdS5oCkBAIC02LDE2ICs2LDI0IEBA CiAjaW5jbHVkZSA8bWFsbG9jLmg+CiAjaW5jbHVkZSA8eGZ1bmNzLmg+CiAKKyNpZmRlZiBDT05G SUdfQ1BVXzY0djgKKyNpbmNsdWRlIDxhc20vcGd0YWJsZTY0Lmg+CisKKyNkZWZpbmUgREVWX01F TQkJKFBNRF9BVFRSSU5EWChNVF9ERVZJQ0VfbkduUm5FKSB8IFBNRF9TRUNUX0FGIHwgUE1EX1RZ UEVfU0VDVCkKKyNkZWZpbmUgQ0FDSEVEX01FTQkoUE1EX0FUVFJJTkRYKE1UX05PUk1BTCkgfCBQ TURfU0VDVF9TIHwgUE1EX1NFQ1RfQUYgfCBQTURfVFlQRV9TRUNUKQorI2RlZmluZSBVTkNBQ0hF RF9NRU0JKFBNRF9BVFRSSU5EWChNVF9OT1JNQUxfTkMpIHwgUE1EX1NFQ1RfUyB8IFBNRF9TRUNU X0FGIHwgUE1EX1RZUEVfU0VDVCkKKyNlbHNlCiAjaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KIAog I2RlZmluZSBQTURfU0VDVF9ERUZfVU5DQUNIRUQgKFBNRF9TRUNUX0FQX1dSSVRFIHwgUE1EX1NF Q1RfQVBfUkVBRCB8IFBNRF9UWVBFX1NFQ1QpCiAjZGVmaW5lIFBNRF9TRUNUX0RFRl9DQUNIRUQg KFBNRF9TRUNUX1dCIHwgUE1EX1NFQ1RfREVGX1VOQ0FDSEVEKQorI2VuZGlmCisKKwogCiBzdHJ1 Y3QgYXJtX21lbW9yeTsKIAotc3RhdGljIGlubGluZSB2b2lkIG1tdV9lbmFibGUodm9pZCkKLXsK LX0KK3ZvaWQgbW11X2VuYWJsZSh2b2lkKTsKIHZvaWQgbW11X2Rpc2FibGUodm9pZCk7CiBzdGF0 aWMgaW5saW5lIHZvaWQgYXJtX2NyZWF0ZV9zZWN0aW9uKHVuc2lnbmVkIGxvbmcgdmlydCwgdW5z aWduZWQgbG9uZyBwaHlzLCBpbnQgc2l6ZV9tLAogCQl1bnNpZ25lZCBpbnQgZmxhZ3MpCmRpZmYg LS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3RhYmxlNjQuaCBiL2FyY2gvYXJtL2luY2x1 ZGUvYXNtL3BndGFibGU2NC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIw YmVhNWIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9wZ3RhYmxlNjQu aApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBUk0gTHRkLgor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor ICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKyNpZm5kZWYgX19BU01fUEdUQUJMRTY0X0gK KyNkZWZpbmUgX19BU01fUEdUQUJMRTY0X0gKKworI2RlZmluZSBVTCh4KQkJX0FDKHgsIFVMKQor CisjZGVmaW5lIFVOVVNFRF9ERVNDICAgICAgICAgICAgICAgIDB4NkViQUFEMEJCQURiQTZFMAor CisjZGVmaW5lIFZBX1NUQVJUICAgICAgICAgICAgICAgICAgIDB4MAorI2RlZmluZSBCSVRTX1BF Ul9WQSAgICAgICAgICAgICAgICAzMworCisvKiBHcmFudWxlIHNpemUgb2YgNEtCIGlzIGJlaW5n IHVzZWQgKi8KKyNkZWZpbmUgR1JBTlVMRV9TSVpFX1NISUZUICAgICAgICAgMTIKKyNkZWZpbmUg R1JBTlVMRV9TSVpFICAgICAgICAgICAgICAgKDEgPDwgR1JBTlVMRV9TSVpFX1NISUZUKQorI2Rl ZmluZSBYTEFUX0FERFJfTUFTSyAgICAgICAgICAgICAoKDFVTCA8PCBCSVRTX1BFUl9WQSkgLSBH UkFOVUxFX1NJWkUpCisjZGVmaW5lIEdSQU5VTEVfU0laRV9NQVNLICAgICAgICAgICgoMSA8PCBH UkFOVUxFX1NJWkVfU0hJRlQpIC0gMSkKKworI2RlZmluZSBCSVRTX1JFU09MVkVEX1BFUl9MVkwg ICAoR1JBTlVMRV9TSVpFX1NISUZUIC0gMykKKyNkZWZpbmUgTDFfQUREUl9TSElGVCAgICAgICAg ICAgKEdSQU5VTEVfU0laRV9TSElGVCArIEJJVFNfUkVTT0xWRURfUEVSX0xWTCAqIDIpCisjZGVm aW5lIEwyX0FERFJfU0hJRlQgICAgICAgICAgIChHUkFOVUxFX1NJWkVfU0hJRlQgKyBCSVRTX1JF U09MVkVEX1BFUl9MVkwgKiAxKQorI2RlZmluZSBMM19BRERSX1NISUZUICAgICAgICAgICAoR1JB TlVMRV9TSVpFX1NISUZUICsgQklUU19SRVNPTFZFRF9QRVJfTFZMICogMCkKKworCisjZGVmaW5l IEwxX0FERFJfTUFTSyAgICAgKCgoMVVMIDw8IEJJVFNfUkVTT0xWRURfUEVSX0xWTCkgLSAxKSA8 PCBMMV9BRERSX1NISUZUKQorI2RlZmluZSBMMl9BRERSX01BU0sgICAgICgoKDFVTCA8PCBCSVRT X1JFU09MVkVEX1BFUl9MVkwpIC0gMSkgPDwgTDJfQUREUl9TSElGVCkKKyNkZWZpbmUgTDNfQURE Ul9NQVNLICAgICAoKCgxVUwgPDwgQklUU19SRVNPTFZFRF9QRVJfTFZMKSAtIDEpIDw8IEwzX0FE RFJfU0hJRlQpCisKKy8qIFRoZXNlIG1hY3JvcyBnaXZlIHRoZSBzaXplIG9mIHRoZSByZWdpb24g YWRkcmVzc2VkIGJ5IGVhY2ggZW50cnkgb2YgYSB4bGF0CisgICB0YWJsZSBhdCBhbnkgZ2l2ZW4g bGV2ZWwgKi8KKyNkZWZpbmUgTDNfWExBVF9TSVpFICAgICAgICAgICAgICAgKDFVTCA8PCBMM19B RERSX1NISUZUKQorI2RlZmluZSBMMl9YTEFUX1NJWkUgICAgICAgICAgICAgICAoMVVMIDw8IEwy X0FERFJfU0hJRlQpCisjZGVmaW5lIEwxX1hMQVRfU0laRSAgICAgICAgICAgICAgICgxVUwgPDwg TDFfQUREUl9TSElGVCkKKworI2RlZmluZSBHUkFOVUxFX01BU0sJR1JBTlVMRV9TSVpFCisKKwor LyoKKyAqIExldmVsIDIgZGVzY3JpcHRvciAoUE1EKS4KKyAqLworI2RlZmluZSBQTURfVFlQRV9N QVNLCQkoMyA8PCAwKQorI2RlZmluZSBQTURfVFlQRV9GQVVMVAkJKDAgPDwgMCkKKyNkZWZpbmUg UE1EX1RZUEVfVEFCTEUJCSgzIDw8IDApCisjZGVmaW5lIFBNRF9UWVBFX1NFQ1QJCSgxIDw8IDAp CisjZGVmaW5lIFBNRF9UQUJMRV9CSVQJCSgxIDw8IDEpCisKKy8qCisgKiBTZWN0aW9uCisgKi8K KyNkZWZpbmUgUE1EX1NFQ1RfVkFMSUQJCSgxIDw8IDApCisjZGVmaW5lIFBNRF9TRUNUX1VTRVIJ CSgxIDw8IDYpCQkvKiBBUFsxXSAqLworI2RlZmluZSBQTURfU0VDVF9SRE9OTFkJCSgxIDw8IDcp CQkvKiBBUFsyXSAqLworI2RlZmluZSBQTURfU0VDVF9TCQkoMyA8PCA4KQorI2RlZmluZSBQTURf U0VDVF9BRgkJKDEgPDwgMTApCisjZGVmaW5lIFBNRF9TRUNUX05HCQkoMSA8PCAxMSkKKyNkZWZp bmUgUE1EX1NFQ1RfQ09OVAkJKDEgPDwgNTIpCisjZGVmaW5lIFBNRF9TRUNUX1BYTgkJKDEgPDwg NTMpCisjZGVmaW5lIFBNRF9TRUNUX1VYTgkJKDEgPDwgNTQpCisKKy8qCisgKiBBdHRySW5keFsy OjBdIGVuY29kaW5nIChtYXBwaW5nIGF0dHJpYnV0ZXMgZGVmaW5lZCBpbiB0aGUgTUFJUiogcmVn aXN0ZXJzKS4KKyAqLworI2RlZmluZSBQTURfQVRUUklORFgodCkJCSgodCkgPDwgMikKKyNkZWZp bmUgUE1EX0FUVFJJTkRYX01BU0sJKDcgPDwgMikKKworLyoKKyAqIExldmVsIDMgZGVzY3JpcHRv ciAoUFRFKS4KKyAqLworI2RlZmluZSBQVEVfVFlQRV9NQVNLCQkoMyA8PCAwKQorI2RlZmluZSBQ VEVfVFlQRV9GQVVMVAkJKDAgPDwgMCkKKyNkZWZpbmUgUFRFX1RZUEVfUEFHRQkJKDMgPDwgMCkK KyNkZWZpbmUgUFRFX1RBQkxFX0JJVAkJKDEgPDwgMSkKKyNkZWZpbmUgUFRFX1VTRVIJCSgxIDw8 IDYpCQkvKiBBUFsxXSAqLworI2RlZmluZSBQVEVfUkRPTkxZCQkoMSA8PCA3KQkJLyogQVBbMl0g Ki8KKyNkZWZpbmUgUFRFX1NIQVJFRAkJKDMgPDwgOCkJCS8qIFNIWzE6MF0sIGlubmVyIHNoYXJl YWJsZSAqLworI2RlZmluZSBQVEVfQUYJCQkoMSA8PCAxMCkJLyogQWNjZXNzIEZsYWcgKi8KKyNk ZWZpbmUgUFRFX05HCQkJKDEgPDwgMTEpCS8qIG5HICovCisjZGVmaW5lIFBURV9EQk0JCQkoMSA8 PCA1MSkJLyogRGlydHkgQml0IE1hbmFnZW1lbnQgKi8KKyNkZWZpbmUgUFRFX0NPTlQJCSgxIDw8 IDUyKQkvKiBDb250aWd1b3VzIHJhbmdlICovCisjZGVmaW5lIFBURV9QWE4JCQkoMSA8PCA1MykJ LyogUHJpdmlsZWdlZCBYTiAqLworI2RlZmluZSBQVEVfVVhOCQkJKDEgPDwgNTQpCS8qIFVzZXIg WE4gKi8KKworLyoKKyAqIEF0dHJJbmR4WzI6MF0gZW5jb2RpbmcgKG1hcHBpbmcgYXR0cmlidXRl cyBkZWZpbmVkIGluIHRoZSBNQUlSKiByZWdpc3RlcnMpLgorICovCisjZGVmaW5lIFBURV9BVFRS SU5EWCh0KQkJKCh0KSA8PCAyKQorI2RlZmluZSBQVEVfQVRUUklORFhfTUFTSwkoNyA8PCAyKQor CisvKgorICogTWVtb3J5IHR5cGVzIGF2YWlsYWJsZS4KKyAqLworI2RlZmluZSBNVF9ERVZJQ0Vf bkduUm5FCTAKKyNkZWZpbmUgTVRfREVWSUNFX25HblJFCQkxCisjZGVmaW5lIE1UX0RFVklDRV9H UkUJCTIKKyNkZWZpbmUgTVRfTk9STUFMX05DCQkzCisjZGVmaW5lIE1UX05PUk1BTAkJNAorI2Rl ZmluZSBNVF9OT1JNQUxfV1QJCTUKKworLyoKKyAqIFRDUiBmbGFncy4KKyAqLworI2RlZmluZSBU Q1JfVDBTWih4KQkJKCg2NCAtICh4KSkgPDwgMCkKKyNkZWZpbmUgVENSX0lSR05fTkMJCSgwIDw8 IDgpCisjZGVmaW5lIFRDUl9JUkdOX1dCV0EJCSgxIDw8IDgpCisjZGVmaW5lIFRDUl9JUkdOX1dU CQkoMiA8PCA4KQorI2RlZmluZSBUQ1JfSVJHTl9XQk5XQQkJKDMgPDwgOCkKKyNkZWZpbmUgVENS X0lSR05fTUFTSwkJKDMgPDwgOCkKKyNkZWZpbmUgVENSX09SR05fTkMJCSgwIDw8IDEwKQorI2Rl ZmluZSBUQ1JfT1JHTl9XQldBCQkoMSA8PCAxMCkKKyNkZWZpbmUgVENSX09SR05fV1QJCSgyIDw8 IDEwKQorI2RlZmluZSBUQ1JfT1JHTl9XQk5XQQkJKDMgPDwgMTApCisjZGVmaW5lIFRDUl9PUkdO X01BU0sJCSgzIDw8IDEwKQorI2RlZmluZSBUQ1JfU0hBUkVEX05PTgkJKDAgPDwgMTIpCisjZGVm aW5lIFRDUl9TSEFSRURfT1VURVIJKDIgPDwgMTIpCisjZGVmaW5lIFRDUl9TSEFSRURfSU5ORVIJ KDMgPDwgMTIpCisjZGVmaW5lIFRDUl9URzBfNEsJCSgwIDw8IDE0KQorI2RlZmluZSBUQ1JfVEcw XzY0SwkJKDEgPDwgMTQpCisjZGVmaW5lIFRDUl9URzBfMTZLCQkoMiA8PCAxNCkKKyNkZWZpbmUg VENSX0VMMV9JUFNfQklUUwkoVUwoMykgPDwgMzIpCS8qIDQyIGJpdHMgcGh5c2ljYWwgYWRkcmVz cyAqLworI2RlZmluZSBUQ1JfRUwyX0lQU19CSVRTCSgzIDw8IDE2KQkvKiA0MiBiaXRzIHBoeXNp Y2FsIGFkZHJlc3MgKi8KKyNkZWZpbmUgVENSX0VMM19JUFNfQklUUwkoMyA8PCAxNikJLyogNDIg Yml0cyBwaHlzaWNhbCBhZGRyZXNzICovCisKKyNkZWZpbmUgVENSX0VMMV9SU1ZECQkoMSA8PCAz MSkKKyNkZWZpbmUgVENSX0VMMl9SU1ZECQkoMSA8PCAzMSB8IDEgPDwgMjMpCisjZGVmaW5lIFRD Ul9FTDNfUlNWRAkJKDEgPDwgMzEgfCAxIDw8IDIzKQorCisjZW5kaWYKLS0gCjIuMS4wCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYmFyZWJveCBtYWls aW5nIGxpc3QKYmFyZWJveEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vYmFyZWJveAo=