From mboxrd@z Thu Jan 1 00:00:00 1970 From: Volodymyr Babchuk Subject: [PATCH v2 2/4] arm: smccc: handle SMCs/HVCs according to SMCCC Date: Thu, 22 Jun 2017 19:24:58 +0300 Message-ID: <1498148700-10758-3-git-send-email-volodymyr_babchuk@epam.com> References: <1497449445-23112-1-git-send-email-volodymyr_babchuk@epam.com> <1498148700-10758-1-git-send-email-volodymyr_babchuk@epam.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1498148700-10758-1-git-send-email-volodymyr_babchuk@epam.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Julien Grall , Stefano Stabellini , Volodymyr Babchuk List-Id: xen-devel@lists.xenproject.org U01DQ0MgKFNNQyBDYWxsIENvbnZlbnRpb24pIGRlc2NyaWJlcyBob3cgdG8gaGFuZGxlIGJvdGgg SFZDcyBhbmQgU01Dcy4KU01DQ0Mgc3RhdGVzIHRoYXQgYm90aCBIVkMgYW5kIFNNQyBhcmUgdmFs aWQgY29uZHVpdHMgdG8gY2FsbCB0byBhIGRpZmZlcmVudApmaXJtd2FyZSBmdW5jdGlvbnMuIFRo dXMsIGZvciBleGFtcGxlIFBTQ0kgY2FsbHMgY2FuIGJlIG1hZGUgYm90aCBieQpTTUMgb3IgSFZD LiBBbHNvIFNNQ0NDIGRlZmluZXMgZnVuY3Rpb24gbnVtYmVyIGNvZGluZyBmb3Igc3VjaCBjYWxs cy4KQmVzaWRlcyBmdW5jdGlvbmFsIGNhbGxzIHRoZXJlIGFyZSBxdWVyeSBjYWxscywgd2hpY2gg YWxsb3dzIHVuZGVybGluZwpPUyBkZXRlcm1pbmUgdmVyc2lvbiwgVUlEIGFuZCBudW1iZXIgb2Yg ZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHNlcnZpY2UKcHJvdmlkZXIuCgpUaGlzIHBhdGNoIGFkZHMg bmV3IGZpbGUgYHZzbWMuY2AsIHdoaWNoIGhhbmRsZXMgYm90aCBnZW5lcmljIFNNQ3MKYW5kIEhW QyBhY2NvcmRpbmcgdG8gU01DLiBBdCB0aGlzIG1vbWVudCBpdCBpbXBsZW1lbnRzIG9ubHkgb25l CnNlcnZpY2U6IFN0YW5kYXJkIEh5cGVydmlzb3IgU2VydmljZS4KClN0YW5kYXJkIEh5cGVydmlz b3IgU2VydmljZSBvbmx5IHN1cHBvcnRzIHF1ZXJ5IGNhbGxzLCBzbyBjYWxsZXIgY2FuCmFzayBh Ym91dCBoeXBlcnZpc29yIFVJRCBhbmQgZGV0ZXJtaW5lIHRoYXQgaXQgaXMgWEVOIHJ1bm5pbmcu CgpUaGlzIGNoYW5nZSBhbGxvd3MgbW9yZSBnZW5lcmljIGhhbmRsaW5nIGZvciBTTUNzIGFuZCBI VkNzIGFuZCBpdCBjYW4KYmUgZWFzaWx5IGV4dGVuZGVkIHRvIHN1cHBvcnQgbmV3IHNlcnZpY2Vz IGFuZCBmdW5jdGlvbnMuCgpCdXQsIGJlZm9yZSBTTUMgaXMgZm9yd2FyZGVkIHRvIHN0YW5kYXJk IFNNQ0NDIGhhbmRsZXIsIGl0IGNhbiBiZSByb3V0ZWQKdG8gYSBkb21haW4gbW9uaXRvciwgaWYg b25lIGlzIGluc3RhbGxlZC4KClNpZ25lZC1vZmYtYnk6IFZvbG9keW15ciBCYWJjaHVrIDx2b2xv ZHlteXJfYmFiY2h1a0BlcGFtLmNvbT4KUmV2aWV3ZWQtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hl bmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KUmV2aWV3ZWQtYnk6IE9sZWtz YW5kciBUeXNoY2hlbmtvIDxvbGVrc2FuZHJfdHlzaGNoZW5rb0BlcGFtLmNvbT4KLS0tCiAtIE1v dmVkIFVJRCBkZWZpbml0aW9uIHRvIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS9zbWMuaAog LSBSZW5hbWVkIHNtY2NjLmMgdG8gdnNtYy5jIGFuZCBzbWNjYy5oIHRvIHZzbWMuaAogLSBSZWZv cm1hdGVkIHZzbWMuaCBhbmQgY29tbWVudGVkIGRlZmluaXRpb25zIHRoZXJlCiAtIEFkZGVkIGlt bWVkaWF0ZSB2YWx1ZSBjaGVjayBmb3IgU01DNjQsIEhWQzMyIGFuZCBIVkM2NAogLSBBZGRlZCBj b25kaXRpb25hbCBmbGFncyBjaGVjayBmb3IgU01DIGNhbGxzIChIVkMgd2lsbCBiZSBoYW5kbGVk CiAgIGFuZCBjaGVja2VkIGluIHRoZSBuZXh0IHBhdGNoKS4KIC0gQWRkZWQgY2hlY2sgZm9yIDY0 IGJpdCBjYWxscyBmcm9tIDMyIGJpdCBndWVzdHMKIC0gUmVtb3ZlZCBIU1IgdmFsdWUgcGFzc2lu ZyBhcyBzZXBhcmF0ZSBhcmd1bWVudAogLSBWYXJpb3VzIGNoYW5nZXMgaW4gY29tbWVudHMKLS0t CiB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gvYXJt L3RyYXBzLmMgICAgICAgICAgICAgIHwgIDE2ICsrKystCiB4ZW4vYXJjaC9hcm0vdnNtYy5jICAg ICAgICAgICAgICAgfCAxMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IHhlbi9pbmNsdWRlL2FzbS1hcm0vdnNtYy5oICAgICAgICB8ICA5NCArKysrKysrKysrKysrKysr KysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0vc21jLmggfCAgNDUgKysr KysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMjgzIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vdnNtYy5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgeGVuL2luY2x1ZGUvYXNtLWFybS92c21jLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4 ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0vc21jLmgKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9h cm0vTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggNDllMWZiMi4uNGVmZDAx YyAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9N YWtlZmlsZQpAQCAtNTAsNiArNTAsNyBAQCBvYmotJChDT05GSUdfSEFTX0dJQ1YzKSArPSB2Z2lj LXYzLm8KIG9iai0kKENPTkZJR19IQVNfSVRTKSArPSB2Z2ljLXYzLWl0cy5vCiBvYmoteSArPSB2 bV9ldmVudC5vCiBvYmoteSArPSB2dGltZXIubworb2JqLXkgKz0gdnNtYy5vCiBvYmoteSArPSB2 cHNjaS5vCiBvYmoteSArPSB2dWFydC5vCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90cmFw cy5jIGIveGVuL2FyY2gvYXJtL3RyYXBzLmMKaW5kZXggMjA1NGM2OS4uNjYyNDJlNSAxMDA2NDQK LS0tIGEveGVuL2FyY2gvYXJtL3RyYXBzLmMKKysrIGIveGVuL2FyY2gvYXJtL3RyYXBzLmMKQEAg LTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDxhc20vY3B1ZmVhdHVyZS5oPgogI2luY2x1ZGUgPGFz bS9mbHVzaHRsYi5oPgogI2luY2x1ZGUgPGFzbS9tb25pdG9yLmg+CisjaW5jbHVkZSA8YXNtL3Zz bWMuaD4KIAogI2luY2x1ZGUgImRlY29kZS5oIgogI2luY2x1ZGUgInZ0aW1lci5oIgpAQCAtMjc3 MSwxMCArMjc3MiwyMyBAQCBzdGF0aWMgdm9pZCBkb190cmFwX3NtYyhzdHJ1Y3QgY3B1X3VzZXJf cmVncyAqcmVncywgY29uc3QgdW5pb24gaHNyIGhzcikKIHsKICAgICBpbnQgcmMgPSAwOwogCisg ICAgaWYgKCAhY2hlY2tfY29uZGl0aW9uYWxfaW5zdHIocmVncywgaHNyKSApCisgICAgeworICAg ICAgICBhZHZhbmNlX3BjKHJlZ3MsIGhzcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg ICAvKiBJZiBtb25pdG9yIGlzIGVuYWJsZWQsIGxldCBpdCBoYW5kbGUgdGhlIGNhbGwgKi8KICAg ICBpZiAoIGN1cnJlbnQtPmRvbWFpbi0+YXJjaC5tb25pdG9yLnByaXZpbGVnZWRfY2FsbF9lbmFi bGVkICkKICAgICAgICAgcmMgPSBtb25pdG9yX3NtYygpOwogCi0gICAgaWYgKCByYyAhPSAxICkK KyAgICBpZiAoIHJjID09IDEgKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBVc2Ugc3RhbmRh cmQgcm91dGluZXMgdG8gaGFuZGxlIHRoZSBjYWxsICovCisgICAgaWYgKCB2c21jX2hhbmRsZV9j YWxsKHJlZ3MpICkKKyAgICAgICAgYWR2YW5jZV9wYyhyZWdzLCBoc3IpOworICAgIGVsc2UKICAg ICAgICAgaW5qZWN0X3VuZGVmX2V4Y2VwdGlvbihyZWdzLCBoc3IpOwogfQogCmRpZmYgLS1naXQg YS94ZW4vYXJjaC9hcm0vdnNtYy5jIGIveGVuL2FyY2gvYXJtL3ZzbWMuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGM0YWNkCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2Fy Y2gvYXJtL3ZzbWMuYwpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIHhlbi9hcmNoL2FybS92c21j LmMKKyAqCisgKiBHZW5lcmljIGhhbmRsZXIgZm9yIFNNQyBhbmQgSFZDIGNhbGxzIGFjY29yZGlu ZyB0bworICogQVJNIFNNQyBjYWxsaW5nIGNvbnZlbnRpb24KKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKworCisjaW5jbHVkZSA8eGVuL2NvbmZp Zy5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKy8qIE5lZWQgdG8gaW5jbHVkZSB4ZW4vc2NoZWQu aCBiZWZvcmUgYXNtL2RvbWFpbi5oIG9yIGl0IGJyZWFrcyBidWlsZCovCisjaW5jbHVkZSA8eGVu L3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL3N0ZGJvb2wuaD4KKyNpbmNsdWRlIDx4ZW4vdHlwZXMu aD4KKyNpbmNsdWRlIDxwdWJsaWMvYXJjaC1hcm0vc21jLmg+CisjaW5jbHVkZSA8YXNtL3ZzbWMu aD4KKyNpbmNsdWRlIDxhc20vcmVncy5oPgorCisvKgorICogSHlwZXJ2aXNvciBTZXJ2aWNlIHZl cnNpb24KKyAqCisgKiBXZSBjYW4ndCB1c2UgWEVOIHZlcnNpb24gaGVyZSwgYmVjYXVzZSBvZiBT TUNDQyByZXF1aXJlbWVudHM6CisgKiBNYWpvciByZXZpc2lvbiBzaG91bGQgY2hhbmdlIGV2ZXJ5 IHRpbWUgU01DL0hWQyBmdW5jdGlvbiBpcyByZW1vdmVkLgorICogTWlub3IgcmV2aXNpb24gc2hv dWxkIGNoYW5nZSBldmVyeSB0aW1lIFNNQy9IVkMgZnVuY3Rpb24gaXMgYWRkZWQuCisgKiBTbywg aXQgaXMgU01DQ0MgcHJvdG9jb2wgcmV2aXNpb24gY29kZSwgbm90IFhFTiB2ZXJzaW9uLgorICoK KyAqIFRob3NlIHZhbHVlcyBhcmUgc3ViamVjdGVkIHRvIGNoYW5nZSwgd2hlbiBpbnRlcmZhY2Ug d2lsbCBiZSBleHRlbmRlZC4KKyAqIFRoZXkgc2hvdWxkIG5vdCBiZSBzdG9yZWQgaW4gcHVibGlj L2FzbS1hcm0vc21jLmggYmVjYXVzZSB0aGV5IHNob3VsZAorICogYmUgcXVlcmllZCBieSBndWVz dCB1c2luZyBTTUMvSFZDIGludGVyZmFjZS4KKyAqLworI2RlZmluZSBYRU5fU01DQ0NfTUFKT1Jf UkVWSVNJT04gMAorI2RlZmluZSBYRU5fU01DQ0NfTUlOT1JfUkVWSVNJT04gMQorCisvKiBOdW1i ZXIgb2YgZnVuY3Rpb25zIGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgSHlwZXJ2aXNvciBTZXJ2aWNl LiAqLworI2RlZmluZSBYRU5fU01DQ0NfRlVOQ1RJT05fQ09VTlQgMworCisvKiBTTUNDQyBpbnRl cmZhY2UgZm9yIGh5cGVydmlzb3IuIFRlbGwgYWJvdXQgaXRzZWxmLiAqLworc3RhdGljIGJvb2wg aGFuZGxlX2h5cGVydmlzb3Ioc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCit7CisgICAgc3dp dGNoICggQVJNX1NNQ0NDX0ZVTkNfTlVNKGdldF91c2VyX3JlZyhyZWdzLCAwKSkgKQorICAgIHsK KyAgICBjYXNlIEFSTV9TTUNDQ19GVU5DX0NBTExfQ09VTlQ6CisgICAgICAgIHNldF91c2VyX3Jl ZyhyZWdzLCAwLCBYRU5fU01DQ0NfRlVOQ1RJT05fQ09VTlQpOworICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICBjYXNlIEFSTV9TTUNDQ19GVU5DX0NBTExfVUlEOgorICAgICAgICBzZXRfdXNlcl9y ZWcocmVncywgMCwgWEVOX1NNQ0NDX1VJRC5hWzBdKTsKKyAgICAgICAgc2V0X3VzZXJfcmVnKHJl Z3MsIDEsIFhFTl9TTUNDQ19VSUQuYVsxXSk7CisgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAy LCBYRU5fU01DQ0NfVUlELmFbMl0pOworICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMywgWEVO X1NNQ0NDX1VJRC5hWzNdKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBBUk1fU01D Q0NfRlVOQ19DQUxMX1JFVklTSU9OOgorICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMCwgWEVO X1NNQ0NDX01BSk9SX1JFVklTSU9OKTsKKyAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDEsIFhF Tl9TTUNDQ19NSU5PUl9SRVZJU0lPTik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg ICByZXR1cm4gZmFsc2U7Cit9CisKKy8qKgorICogdnNtY19oYW5kbGVfY2FsbCgpIC0gaGFuZGxl IFNNQy9IVkMgY2FsbCBhY2NvcmRpbmcgdG8gQVJNIFNNQ0NDCisgKi8KK2ludCB2c21jX2hhbmRs ZV9jYWxsKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQoreworICAgIGJvb2wgaGFuZGxlZCA9 IGZhbHNlOworICAgIGNvbnN0IHVuaW9uIGhzciBoc3IgPSB7IC5iaXRzID0gcmVncy0+aHNyIH07 CisKKyAgICAvKgorICAgICAqIENoZWNrIGltbWVkaWF0ZSB2YWx1ZSBmb3IgSFZDMzIsIEhWQzY0 IGFuZCBTTUM2NC4KKyAgICAgKiBJdCBpcyBub3Qgc28gZWFzeSB0byBjaGVjayBpbW1lZGlhdGUg dmFsdWUgZm9yIFNNQzMyLAorICAgICAqIHNvIHdlIHdpbGwgYXNzdW1lIHRoYXQgaXQgaXMgMHgw CisgICAgICovCisgICAgc3dpdGNoICggaHNyLmVjICkKKyAgICB7CisgICAgY2FzZSBIU1JfRUNf SFZDMzI6CisgICAgY2FzZSBIU1JfRUNfSFZDNjQ6CisgICAgY2FzZSBIU1JfRUNfU01DNjQ6Cisg ICAgICAgIGlmICggaHNyLmlzcyAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg IGJyZWFrOworICAgIGNhc2UgSFNSX0VDX1NNQzMyOgorICAgICAgICBicmVhazsKKyAgICBkZWZh dWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiA2NCBiaXQgY2FsbHMgYXJl IGFsbG93ZWQgb25seSBmcm9tIDY0IGJpdCBkb21haW5zICovCisgICAgaWYgKCBBUk1fU01DQ0Nf SVNfNjQoZ2V0X3VzZXJfcmVnKHJlZ3MsIDApKSAmJgorICAgICAgICAgaXNfMzJiaXRfZG9tYWlu KGN1cnJlbnQtPmRvbWFpbikgKQorICAgIHsKKyAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAs IEFSTV9TTUNDQ19FUlJfVU5LTk9XTl9GVU5DVElPTik7CisgICAgICAgIHJldHVybiAxOworICAg IH0KKworICAgIHN3aXRjaCAoIEFSTV9TTUNDQ19PV05FUl9OVU0oZ2V0X3VzZXJfcmVnKHJlZ3Ms IDApKSApCisgICAgeworICAgIGNhc2UgQVJNX1NNQ0NDX09XTkVSX0hZUEVSVklTT1I6CisgICAg ICAgIGhhbmRsZWQgPSBoYW5kbGVfaHlwZXJ2aXNvcihyZWdzKTsKKyAgICAgICAgYnJlYWs7Cisg ICAgfQorCisgICAgaWYgKCAhaGFuZGxlZCApCisgICAgeworICAgICAgICBncHJpbnRrKFhFTkxP R19JTkZPLCAiVW5oYW5kbGVkIFNNQy9IVkM6ICUwOCJQUklyZWdpc3RlciJcbiIsCisgICAgICAg ICAgICAgICAgZ2V0X3VzZXJfcmVnKHJlZ3MsIDApKTsKKyAgICAgICAgLyogSW5mb3JtIGNhbGxl ciB0aGF0IGZ1bmN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgKi8KKyAgICAgICAgc2V0X3VzZXJfcmVn KHJlZ3MsIDAsIEFSTV9TTUNDQ19FUlJfVU5LTk9XTl9GVU5DVElPTik7CisgICAgfQorCisgICAg cmV0dXJuIDE7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBj LWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRhYnMt bW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0v dnNtYy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS92c21jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZDI0MDFjNwotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS1hcm0vdnNtYy5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTcs IEVQQU0gU3lzdGVtcworICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLCBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgYW5kCisgKiBtYXkg YmUgY29waWVkLCBkaXN0cmlidXRlZCwgYW5kIG1vZGlmaWVkIHVuZGVyIHRob3NlIHRlcm1zLgor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICovCisjaWZuZGVmIF9fQVNNX0FSTV9WU01D X0hfXworI2RlZmluZSBfX0FTTV9BUk1fVlNNQ19IX18KKworI2luY2x1ZGUgPHhlbi90eXBlcy5o PgorCisvKgorICogVGhpcyBmaWxlIHByb3ZpZGVzIGNvbW1vbiBkZWZpbmVzIGZvciBBUk0gU01D IENhbGxpbmcgQ29udmVudGlvbiBhcworICogc3BlY2lmaWVkIGluCisgKiBodHRwOi8vaW5mb2Nl bnRlci5hcm0uY29tL2hlbHAvdG9waWMvY29tLmFybS5kb2MuZGVuMDAyOGEvaW5kZXguaHRtbAor ICovCisKKyNkZWZpbmUgQVJNX1NNQ0NDX1NURF9DQUxMCQkwCisjZGVmaW5lIEFSTV9TTUNDQ19G QVNUX0NBTEwJCTEKKyNkZWZpbmUgQVJNX1NNQ0NDX1RZUEVfU0hJRlQJCTMxCisKKyNkZWZpbmUg QVJNX1NNQ0NDX1NNQ18zMgkJMAorI2RlZmluZSBBUk1fU01DQ0NfU01DXzY0CQkxCisjZGVmaW5l IEFSTV9TTUNDQ19DQUxMX0NPTlZfU0hJRlQJMzAKKworI2RlZmluZSBBUk1fU01DQ0NfT1dORVJf TUFTSwkJMHgzRgorI2RlZmluZSBBUk1fU01DQ0NfT1dORVJfU0hJRlQJCTI0CisKKyNkZWZpbmUg QVJNX1NNQ0NDX0ZVTkNfTUFTSwkJMHhGRkZGCisKKy8qIENoZWNrIGlmIHRoaXMgaXMgZmFzdCBj YWxsICovCisjZGVmaW5lIEFSTV9TTUNDQ19JU19GQVNUX0NBTEwoc21jX3ZhbCkgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICgoc21jX3ZhbCkgJiAoQVJNX1NNQ0NDX0ZBU1RfQ0FMTCA8 PCBBUk1fU01DQ0NfVFlQRV9TSElGVCkpCisKKy8qIENoZWNrIGlmIHRoaXMgaXMgNjQgYml0IGNh bGwgICovCisjZGVmaW5lIEFSTV9TTUNDQ19JU182NChzbWNfdmFsKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChzbWNfdmFsKSAmIChBUk1fU01DQ0NfU01D XzY0IDw8IEFSTV9TTUNDQ19DQUxMX0NPTlZfU0hJRlQpKQorCisvKiBHZXQgZnVuY3Rpb24gbnVt YmVyIGZyb20gZnVuY3Rpb24gaWRlbnRpZmllciAqLworI2RlZmluZSBBUk1fU01DQ0NfRlVOQ19O VU0oc21jX3ZhbCkJKChzbWNfdmFsKSAmIEFSTV9TTUNDQ19GVU5DX01BU0spCisKKy8qIEdldCBz ZXJ2aWNlIG93bmVyIG51bWJlciBmcm9tIGZ1bmN0aW9uIGlkZW50aWZpZXIgKi8KKyNkZWZpbmUg QVJNX1NNQ0NDX09XTkVSX05VTShzbWNfdmFsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAoKChzbWNfdmFsKSA+PiBBUk1fU01DQ0NfT1dORVJfU0hJRlQpICYgQVJN X1NNQ0NDX09XTkVSX01BU0spCisKKy8qCisgKiBDb25zdHJ1Y3QgZnVuY3Rpb24gaWRlbnRpZmll ciBmcm9tIGNhbGwgdHlwZSAoZmFzdCBvciBzdGFuZGFyZCksCisgKiBjYWxsaW5nIGNvbnZlbnRp b24gKDMyIG9yIDY0IGJpdCksIHNlcnZpY2Ugb3duZXIgYW5kIGZ1bmN0aW9uIG51bWJlcgorICov CisjZGVmaW5lIEFSTV9TTUNDQ19DQUxMX1ZBTCh0eXBlLCBjYWxsaW5nX2NvbnZlbnRpb24sIG93 bmVyLCBmdW5jX251bSkgICBcCisgICAgKCgodHlwZSkgPDwgQVJNX1NNQ0NDX1RZUEVfU0hJRlQp IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICgoY2FsbGluZ19jb252 ZW50aW9uKSA8PCBBUk1fU01DQ0NfQ0FMTF9DT05WX1NISUZUKSB8ICAgICAgICAgICAgICBcCisg ICAgICgoKG93bmVyKSAmIEFSTV9TTUNDQ19PV05FUl9NQVNLKSA8PCBBUk1fU01DQ0NfT1dORVJf U0hJRlQpIHwgICAgICBcCisgICAgICgoZnVuY19udW0pICYgQVJNX1NNQ0NDX0ZVTkNfTUFTSykp CisKKy8qIExpc3Qgb2Yga25vdyBzZXJ2aWNlIG93bmVycyAqLworI2RlZmluZSBBUk1fU01DQ0Nf T1dORVJfQVJDSAkJMAorI2RlZmluZSBBUk1fU01DQ0NfT1dORVJfQ1BVCQkxCisjZGVmaW5lIEFS TV9TTUNDQ19PV05FUl9TSVAJCTIKKyNkZWZpbmUgQVJNX1NNQ0NDX09XTkVSX09FTQkJMworI2Rl ZmluZSBBUk1fU01DQ0NfT1dORVJfU1RBTkRBUkQJNAorI2RlZmluZSBBUk1fU01DQ0NfT1dORVJf SFlQRVJWSVNPUgk1CisjZGVmaW5lIEFSTV9TTUNDQ19PV05FUl9UUlVTVEVEX0FQUAk0OAorI2Rl ZmluZSBBUk1fU01DQ0NfT1dORVJfVFJVU1RFRF9BUFBfRU5ECTQ5CisjZGVmaW5lIEFSTV9TTUND Q19PV05FUl9UUlVTVEVEX09TCTUwCisjZGVmaW5lIEFSTV9TTUNDQ19PV05FUl9UUlVTVEVEX09T X0VORAk2MworCisvKiBMaXN0IG9mIGdlbmVyaWMgZnVuY3Rpb24gbnVtYmVycyAqLworI2RlZmlu ZSBBUk1fU01DQ0NfRlVOQ19DQUxMX0NPVU5UCTB4RkYwMAorI2RlZmluZSBBUk1fU01DQ0NfRlVO Q19DQUxMX1VJRAkJMHhGRjAxCisjZGVmaW5lIEFSTV9TTUNDQ19GVU5DX0NBTExfUkVWSVNJT04J MHhGRjAzCisKKy8qIE9ubHkgb25lIGVycm9yIGNvZGUgZGVmaW5lZCBpbiBTTUNDQyAqLworI2Rl ZmluZSBBUk1fU01DQ0NfRVJSX1VOS05PV05fRlVOQ1RJT04JKC0xKQorCitpbnQgdnNtY19oYW5k bGVfY2FsbChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7CisKKyNlbmRpZiAgLyogX19BU01f QVJNX1ZTTUNfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisg KiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRh YnMtbW9kZTogbmlsCisgKiBFbmQ6YgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJs aWMvYXJjaC1hcm0vc21jLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0vc21jLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFjMjkyYQotLS0gL2Rldi9udWxsCisr KyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS9zbWMuaApAQCAtMCwwICsxLDQ1IEBACisv KgorICogc21jLmgKKyAqCisgKiBTTUMvSFZDIGludGVyZmFjZSBpbiBhY2NvcmRhbmNlIHdpdGgg U01DIENhbGxpbmcgQ29udmVudGlvbi4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwgdG8KKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv b3IKKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisg KiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT SEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U SEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IDIwMTcg KEMpIEVQQU0gU3lzdGVtcworICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfQVJNX1NN Q19IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX0FSQ0hfQVJNX1NNQ19IX18KKwordHlwZWRlZiBz dHJ1Y3QgeworICAgIHVpbnQzMl90IGFbNF07Cit9IGFybV9zbWNjY191aWQ7CisKKyNkZWZpbmUg QVJNX1NNQ0NDX1VJRChhLCBiLCBjLCBkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDcpCQlc CisgICAgKChhcm1fc21jY2NfdWlkKSB7eyhhKSwgKChiKSA8PCAxNiB8IChjKSApLCAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChkMCkgPDwgMjQgfCAoZDEpIDw8 IDE2IHwgKGQyKSA8PCA4IHwgKGQzKSA8PCAwKSwgICAgICBcCisgICAgICAgICAgICAgICAgKChk NCkgPDwgMjQgfCAoZDUpIDw8IDE2IHwgKGQ2KSA8PCA4IHwgKGQ3KSA8PCAwKX19KQorCisKKy8q IEh5cGVydmlzb3IgU2VydmljZSBVSUQuIFJhbmRvbWx5IGdlbmVyYXRlZCB3aXRoIDNyZCBwYXJ0 eSB0b29sICAqLworI2RlZmluZSBYRU5fU01DQ0NfVUlEIEFSTV9TTUNDQ19VSUQoMHhhNzE4MTJk YywgMHhjNjk4LCAweDQzNjksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4OWEsIDB4Y2YsIDB4NzksIDB4ZDEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4OGQsIDB4ZGUsIDB4ZTYsIDB4NjcpCisKKyNlbmRpZgkvKiBfX1hFTl9QVUJMSUNf QVJDSF9BUk1fU01DX0hfXyAqLwotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK