From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Chen Subject: [PATCH 1/2] xen/arm32: Introduce alternative runtime patching Date: Thu, 16 Mar 2017 17:53:38 +0800 Message-ID: <1489658019-22486-2-git-send-email-Wei.Chen@arm.com> References: <1489658019-22486-1-git-send-email-Wei.Chen@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1489658019-22486-1-git-send-email-Wei.Chen@arm.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: sstabellini@kernel.org, wei.chen@arm.com, steve.capper@arm.com, Kaly.Xin@arm.com, julien.grall@arm.com, nd@arm.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpcyBiYXNlZCBvbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgQVJNNjQsIGl0IGlu dHJvZHVjZXMKYWx0ZXJuYXRpdmUgcnVudGltZSBwYXRjaGluZyB0byBBUk0zMi4gVGhpcyBhbGxv d3MgdG8gcGF0Y2ggYXNzZW1ibHkKaW5zdHJ1Y3Rpb24gYXQgcnVudGltZSB0byBlaXRoZXIgZml4 IGhhcmR3YXJlIGJ1Z3Mgb3Igb3B0aW1pemUgZm9yCmNlcnRhaW4gaGFyZHdhcmUgZmVhdHVyZXMg b24gQVJNMzIgcGxhdGZvcm0uCgpYZW4gaHlwZXJ2aXNvciBpcyB1c2luZyBBUk0gZXhlY3V0aW9u IHN0YXRlIG9ubHkgb24gQVJNMzIgcGxhdGZvcm0sClRodW1iIGlzIG5vdCB1c2VkLiBTbywgdGhl IFRodW1iIG9ubHkgYnJhbmNoIGluc3RydWN0aW9ucyAoQ0JaLCBDQk5aLApUQkIgYW5kIFRCSCkg YXJlIG5vdCBjb25zaWRlcmVkIGluIGFsdGVybmF0aXZlcy4KClRoZSBsZWZ0IEFSTTMyIGJyYW5j aCBpbnN0cnVjdGlvbnMgYXJlIEJYLCBCTFgsIEJMIGFuZCBCLiBUaGUKaW5zdHJ1Y3Rpb24gQlgg aXMgdGFraW5nIGEgcmVnaXN0ZXIgaW4gcGFyYW1ldGVyLCBzbyB3ZSBkb24ndCBuZWVkIHRvCnJl d3JpdGUgaXQuIFRoZSBpbnN0cnVjdGlvbnMgQkxYLCBCTCBhbmQgQiBhcmUgdXNpbmcgdGhlIHNp bWlsYXIKZW5jb2RpbmcgZm9yIHRoZSBvZmZzZXQgYW5kIHdpbGwgYXZvaWQgc3BlY2lmaWMgY2Fz ZSB3aGVuIGV4dHJhY3RpbmcKYW5kIHVwZGF0aW5nIHRoZSBvZmZzZXQuCgpJbiB0aGlzIHBhdGNo LCB3ZSBpbmNsdWRlIGFsdGVybmF0aXZlLmggaGVhZGVyIGZpbGUgdG8gbGl2ZXBhdGNoLmMKZGly ZWN0bHkgZm9yIEFSTTMyIGNvbXBpbGF0aW9uIGlzc3Vlcy4gV2hlbiB0aGUgYWx0ZXJuYXRpdmUg cGF0Y2hpbmcKY29uZmlnIGlzIGVuYWJsZWQsIHRoZSBsaXZlcGF0Y2guYyB3aWxsIHVzZSB0aGUg YWx0ZXJuYXRpdmUgZnVuY3Rpb25zLgpJbiB0aGlzIGNhc2UsIHdlIHNob3VsZCBpbmNsdWRlIHRo ZSBhbHRlcm5hdGl2ZSBoZWFkZXIgZmlsZSB0byB0aGlzCmZpbGUuIEJ1dCBmb3IgQVJNNjQsIGl0 IGRvZXMgbm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgZmlsZSBkaXJlY3RseS4KSXQgaW5jbHVkZXMg dGhpcyBoZWFkZXIgZmlsZSBpbmRpcmVjdGx5IHRocm91Z2g6CnNjaGVkLmgtPmRvbWFpbi5oLT5w YWdlLmgtPmFsdGVybmF0aXZlLmguCkJ1dCwgdW5mb3J0dW5hdGVseSwgdGhlIHBhZ2UuaCBvZiBB Uk0zMiBkb2Vzbid0IGluY2x1ZGUgYWx0ZXJuYXRpdmUuaCwKYW5kIHdlIGRvbid0IGhhdmUgdGhl IHJlYXNvbiB0byBpbmNsdWRlIGl0IHRvIEFSTTMyIHBhZ2UuaCBub3cuIFNvIHdlCmhhdmUgdG8g aW5jbHVkZSB0aGUgYWx0ZXJuYXRpdmUuaCBkaXJlY3RseSBpbiBsaXZlcGF0Y2guYy4KClNpZ25l ZC1vZmYtYnk6IFdlaSBDaGVuIDxXZWkuQ2hlbkBhcm0uY29tPgotLS0KIHhlbi9hcmNoL2FybS9L Y29uZmlnICAgICAgICAgICAgIHwgIDIgKy0KIHhlbi9hcmNoL2FybS9hcm0zMi9NYWtlZmlsZSAg ICAgIHwgIDEgKwogeGVuL2FyY2gvYXJtL2FybTMyL2luc24uYyAgICAgICAgfCA5OSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vY29tbW9uL2xpdmVwYXRjaC5j ICAgICAgICAgICB8ICAxICsKIHhlbi9pbmNsdWRlL2FzbS1hcm0vYXJtMzIvaW5zbi5oIHwgNTcg KysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vaW5zbi5oICAgICAg IHwgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAxNjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS9hcm0zMi9pbnNuLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9hc20tYXJtL2FybTMyL2luc24uaAoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL2FybS9LY29uZmlnIGIveGVuL2FyY2gvYXJtL0tjb25maWcKaW5kZXggMmUwMjNk MS4uNDMxMjNlNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL0tjb25maWcKKysrIGIveGVuL2Fy Y2gvYXJtL0tjb25maWcKQEAgLTEyLDExICsxMiwxMSBAQCBjb25maWcgQVJNXzMyCiBjb25maWcg QVJNXzY0CiAJZGVmX2Jvb2wgeQogCWRlcGVuZHMgb24gNjRCSVQKLQlzZWxlY3QgSEFTX0FMVEVS TkFUSVZFCiAJc2VsZWN0IEhBU19HSUNWMwogCiBjb25maWcgQVJNCiAJZGVmX2Jvb2wgeQorCXNl bGVjdCBIQVNfQUxURVJOQVRJVkUKIAlzZWxlY3QgSEFTX0FSTV9IRExDRAogCXNlbGVjdCBIQVNf REVWSUNFX1RSRUUKIAlzZWxlY3QgSEFTX01FTV9BQ0NFU1MKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L2FybS9hcm0zMi9NYWtlZmlsZSBiL3hlbi9hcmNoL2FybS9hcm0zMi9NYWtlZmlsZQppbmRleCA0 Mzk1NjkzLi4wYWMyNTRmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZpbGUK KysrIGIveGVuL2FyY2gvYXJtL2FybTMyL01ha2VmaWxlCkBAIC00LDYgKzQsNyBAQCBvYmotJChF QVJMWV9QUklOVEspICs9IGRlYnVnLm8KIG9iai15ICs9IGRvbWN0bC5vCiBvYmoteSArPSBkb21h aW4ubwogb2JqLXkgKz0gZW50cnkubworb2JqLXkgKz0gaW5zbi5vCiBvYmotJChDT05GSUdfTElW RVBBVENIKSArPSBsaXZlcGF0Y2gubwogb2JqLXkgKz0gcHJvYy12Ny5vIHByb2MtY2F4eC5vCiBv YmoteSArPSBzbXBib290Lm8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9hcm0zMi9pbnNuLmMg Yi94ZW4vYXJjaC9hcm0vYXJtMzIvaW5zbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjkxYTMwMTAKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC9hcm0vYXJtMzIvaW5z bi5jCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgICogQ29weXJpZ2h0IChDKSAyMDE3IEFSTSBMdGQu CisgICoKKyAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgICogcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICoKKyAgKiBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorICAqCisgICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAgKi8KKyNpbmNsdWRlIDx4 ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL2JpdG9wcy5oPgorI2luY2x1ZGUgPHhlbi9zaXplcy5o PgorI2luY2x1ZGUgPGFzbS9idWcuaD4KKyNpbmNsdWRlIDxhc20vaW5zbi5oPgorCisvKiBNYXNr IG9mIGJyYW5jaCBpbnN0cnVjdGlvbnMnIGltbWVkaWF0ZS4gKi8KKyNkZWZpbmUgQlJBTkNIX0lO U05fSU1NX01BU0sgICAgR0VOTUFTSygyMywgMCkKKy8qIFNoaWZ0IG9mIGJyYW5jaCBpbnN0cnVj dGlvbnMnIGltbWVkaWF0ZS4gKi8KKyNkZWZpbmUgQlJBTkNIX0lOU05fSU1NX1NISUZUICAgMAor CitzdGF0aWMgdWludDMyX3QgYnJhbmNoX2luc25fZW5jb2RlX2ltbWVkaWF0ZSh1aW50MzJfdCBp bnNuLCBpbnQzMl90IG9mZnNldCkKK3sKKyAgICB1aW50MzJfdCBpbW07CisKKyAgICAvKgorICAg ICAqIEVuY29kZSB0aGUgb2Zmc2V0IHRvIGltbS4gQWxsIEFSTTMyIGluc3RydWN0aW9ucyBtdXN0 IGJlIHdvcmQgYWxpZ25lZC4KKyAgICAgKiBUaGVyZWZvcmUgdGhlIG9mZnNldCB2YWx1ZSdzIGJp dHMgWzE6MF0gZXF1YWwgdG8gemVyby4KKyAgICAgKiAoc2VlIEFSTSBEREkgMDQwNkMuYiBBOC44 LjE4L0E4LjguMjUgZm9yIG1vcmUgZW5jb2RlL2RlY29kZSBkZXRhaWxzCisgICAgICogYWJvdXQg QVJNMzIgYnJhbmNoIGluc3RydWN0aW9ucykKKyAgICAgKi8KKyAgICBpbW0gPSAoKG9mZnNldCA+ PiAyKSAmIEJSQU5DSF9JTlNOX0lNTV9NQVNLKSA8PCBCUkFOQ0hfSU5TTl9JTU1fU0hJRlQ7CisK KyAgICAvKiBVcGRhdGUgdGhlIGltbWVkaWF0ZSBmaWVsZC4gKi8KKyAgICBpbnNuICY9IH4oQlJB TkNIX0lOU05fSU1NX01BU0sgPDwgQlJBTkNIX0lOU05fSU1NX1NISUZUKTsKKyAgICBpbnNuIHw9 IGltbTsKKworICAgIHJldHVybiBpbnNuOworfQorCisvKgorICogRGVjb2RlIHRoZSBicmFuY2gg b2Zmc2V0IGZyb20gYSBicmFuY2ggaW5zdHJ1Y3Rpb24ncyBpbW0gZmllbGQuCisgKiBUaGUgYnJh bmNoIG9mZnNldCBpcyBhIHNpZ25lZCB2YWx1ZSwgc28gaXQgY2FuIGJlIHVzZWQgdG8gY29tcHV0 ZQorICogYSBuZXcgYnJhbmNoIHRhcmdldC4KKyAqLworaW50MzJfdCBhYXJjaDMyX2dldF9icmFu Y2hfb2Zmc2V0KHVpbnQzMl90IGluc24pCit7CisgICAgdWludDMyX3QgaW1tOworCisgICAgLyog UmV0cmlldmUgaW1tIGZyb20gYnJhbmNoIGluc3RydWN0aW9uLiAqLworICAgIGltbSA9ICggaW5z biA+PiBCUkFOQ0hfSU5TTl9JTU1fU0hJRlQgKSAmIEJSQU5DSF9JTlNOX0lNTV9NQVNLOworCisg ICAgLyoKKyAgICAgKiBDaGVjayB0aGUgaW1tIHNpZ25lZCBiaXQuIElmIHRoZSBpbW0gaXMgYSBu ZWdhdGl2ZSB2YWx1ZSwgd2UKKyAgICAgKiBoYXZlIHRvIGV4dGVuZCB0aGUgaW1tIHRvIGEgZnVs bCAzMiBiaXQgbmVnYXRpdmUgdmFsdWUuCisgICAgICovCisgICAgaWYgKCBpbW0gJiBCSVQoMjMp ICkKKyAgICAgICAgaW1tIHw9IEdFTk1BU0soMzEsIDI0KTsKKworICAgIHJldHVybiAoaW50MzJf dCkoaW1tIDw8IDIpOworfQorCisvKgorICogRW5jb2RlIHRoZSBkaXNwbGFjZW1lbnQgb2YgYSBi cmFuY2ggaW4gdGhlIGltbSBmaWVsZCBhbmQgcmV0dXJuIHRoZQorICogdXBkYXRlZCBpbnN0cnVj dGlvbi4KKyAqLwordWludDMyX3QgYWFyY2gzMl9zZXRfYnJhbmNoX29mZnNldCh1aW50MzJfdCBp bnNuLCBpbnQzMl90IG9mZnNldCkKK3sKKyAgICBpZiAoIG9mZnNldCAmIDB4MyApCisgICAgewor ICAgICAgICBwcmludGsoWEVOTE9HX0VSUgorICAgICAgICAgICAgICAgIiVzOiBBUk0zMiBpbnN0 cnVjdGlvbnMgbXVzdCBiZSB3b3JkIGFsaWduZWQuXG4iLCBfX2Z1bmNfXyk7CisgICAgICAgIHJl dHVybiBCVUdfT1BDT0RFOworICAgIH0KKworICAgIC8qIEIvQkwgc3VwcG9ydCBbLTMyTSwgMzJN KSBvZmZzZXQgKHNlZSBBUk0gRERJIDA0MDZDLmIgQTQuMykuICovCisgICAgaWYgKCBvZmZzZXQg PCAtU1pfMzJNIHx8IG9mZnNldCA+PSBTWl8zMk0gKQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhF TkxPR19FUlIKKyAgICAgICAgICAgICAgICIlczogbmV3IGJyYW5jaCBvZmZzZXQgb3V0IG9mIHJh bmdlLlxuIiwgX19mdW5jX18pOworICAgICAgICByZXR1cm4gQlVHX09QQ09ERTsKKyAgICB9CisK KyAgICByZXR1cm4gYnJhbmNoX2luc25fZW5jb2RlX2ltbWVkaWF0ZShpbnNuLCBvZmZzZXQpOwor fQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxl OiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAor ICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2xpdmVwYXRjaC5jIGIveGVuL2Nv bW1vbi9saXZlcGF0Y2guYwppbmRleCAyNDZlNjczLi5mMTRiY2JjIDEwMDY0NAotLS0gYS94ZW4v Y29tbW9uL2xpdmVwYXRjaC5jCisrKyBiL3hlbi9jb21tb24vbGl2ZXBhdGNoLmMKQEAgLTI1LDYg KzI1LDcgQEAKICNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+CiAjaW5jbHVkZSA8eGVuL2xpdmVw YXRjaF9wYXlsb2FkLmg+CiAKKyNpbmNsdWRlIDxhc20vYWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRl IDxhc20vZXZlbnQuaD4KIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vYXJt MzIvaW5zbi5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9hcm0zMi9pbnNuLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ1YWNjMwotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9p bmNsdWRlL2FzbS1hcm0vYXJtMzIvaW5zbi5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgICogQ29w eXJpZ2h0IChDKSAyMDE3IEFSTSBMdGQuCisgICoKKyAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAqIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAy IGFzCisgICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICoK KyAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgKiBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICAqCisgICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgKiBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKyAgKi8KKyNpZm5kZWYgX19BUkNIX0FSTV9BUk0zMl9JTlNOCisjZGVmaW5lIF9fQVJD SF9BUk1fQVJNMzJfSU5TTgorCisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisKKyNkZWZpbmUgX19B QVJDSDMyX0lOU05fRlVOQ1MoYWJiciwgbWFzaywgdmFsKSAgIFwKK3N0YXRpYyBhbHdheXNfaW5s aW5lIGJvb2xfdCBhYXJjaDMyX2luc25faXNfIyNhYmJyKHVpbnQzMl90IGNvZGUpIFwKK3sgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICByZXR1cm4gKGNvZGUgJiAobWFzaykpID09ICh2YWwpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKK30KKworX19BQVJDSDMyX0lOU05fRlVOQ1MoYiwgIDB4MEYwMDAw MDAsIDB4MEEwMDAwMDApCitfX0FBUkNIMzJfSU5TTl9GVU5DUyhibCwgMHgwRjAwMDAwMCwgMHgw QjAwMDAwMCkKKworaW50MzJfdCBhYXJjaDMyX2dldF9icmFuY2hfb2Zmc2V0KHVpbnQzMl90IGlu c24pOwordWludDMyX3QgYWFyY2gzMl9zZXRfYnJhbmNoX29mZnNldCh1aW50MzJfdCBpbnNuLCBp bnQzMl90IG9mZnNldCk7CisKKy8qIFdyYXBwZXIgZm9yIGNvbW1vbiBjb2RlICovCitzdGF0aWMg aW5saW5lIGJvb2wgaW5zbl9pc19icmFuY2hfaW1tKHVpbnQzMl90IGluc24pCit7CisgICAgcmV0 dXJuICggYWFyY2gzMl9pbnNuX2lzX2IoaW5zbikgfHwgYWFyY2gzMl9pbnNuX2lzX2JsKGluc24p ICk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50MzJfdCBpbnNuX2dldF9icmFuY2hfb2Zmc2V0KHVp bnQzMl90IGluc24pCit7CisgICAgcmV0dXJuIGFhcmNoMzJfZ2V0X2JyYW5jaF9vZmZzZXQoaW5z bik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgaW5zbl9zZXRfYnJhbmNoX29mZnNldCh1 aW50MzJfdCBpbnNuLCBpbnQzMl90IG9mZnNldCkKK3sKKyAgICByZXR1cm4gYWFyY2gzMl9zZXRf YnJhbmNoX29mZnNldChpbnNuLCBvZmZzZXQpOworfQorCisjZW5kaWYgLyogIV9fQVJDSF9BUk1f QVJNMzJfSU5TTiAqLworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMt ZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiBpbmRlbnQtdGFicy1t b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9p bnNuLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2luc24uaAppbmRleCBhMjA1Y2ViLi4zNDg5MTc5 IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2luc24uaAorKysgYi94ZW4vaW5jbHVk ZS9hc20tYXJtL2luc24uaApAQCAtNSw2ICs1LDggQEAKIAogI2lmIGRlZmluZWQoQ09ORklHX0FS TV82NCkKICMgaW5jbHVkZSA8YXNtL2FybTY0L2luc24uaD4KKyNlbGlmIGRlZmluZWQoQ09ORklH X0FSTV8zMikKKyMgaW5jbHVkZSA8YXNtL2FybTMyL2luc24uaD4KICNlbHNlCiAjIGVycm9yICJ1 bmtub3duIEFSTSB2YXJpYW50IgogI2VuZGlmCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=