From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Chen Subject: [PATCH v2] xen/arm32: Introduce alternative runtime patching Date: Tue, 28 Mar 2017 15:23:09 +0800 Message-ID: <1490685789-12684-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: 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 ZC1vZmYtYnk6IFdlaSBDaGVuIDxXZWkuQ2hlbkBhcm0uY29tPgpSZXZpZXdlZC1ieTogS29ucmFk IFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgoKLS0tCnYxLT52MjoKMS4g UmVtb3ZlIGR1cGxpY2F0ZSBoZWFkZXIgZmlsZS4KMi4gUmVtb3ZlIHBvaW50bGVzcyBvZmZzZXQg Y2hlY2sgYW5kIHdhcm5pbmcgbWVzc2FnZS4KMy4gQWRkIFJldmlld2VkLWJ5IHRhZyBmcm9tIEtv bnJhZCBSemVzenV0ZWsgV2lsay4KNC4gRG9jdW1lbnRlZCBhYm91dCB3aHkgd2UgY2FuIGNoZWNr IGIgYW5kIGJseCBhdCB0aGUgc2FtZSB0aW1lLgo1LiBVcGRhdGUgdGhlIG1hY3JvIG9mIGIgdG8g Y292ZXIgYmx4Lgo2LiBVcGRhdGUgdGhlIHJlZmVycmVkIEFSTSBBUk0gZG9jdW1lbnQgdmVyc2lv bi4KLS0tCiB4ZW4vYXJjaC9hcm0vS2NvbmZpZyAgICAgICAgICAgICB8ICAyICstCiB4ZW4vYXJj aC9hcm0vYXJtMzIvTWFrZWZpbGUgICAgICB8ICAxICsKIHhlbi9hcmNoL2FybS9hcm0zMi9pbnNu LmMgICAgICAgIHwgOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog eGVuL2NvbW1vbi9saXZlcGF0Y2guYyAgICAgICAgICAgfCAgMSArCiB4ZW4vaW5jbHVkZS9hc20t YXJtL2FybTMyL2luc24uaCB8IDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9p bmNsdWRlL2FzbS1hcm0vaW5zbi5oICAgICAgIHwgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAxNjEg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNo L2FybS9hcm0zMi9pbnNuLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9hc20tYXJt L2FybTMyL2luc24uaAoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9LY29uZmlnIGIveGVuL2Fy Y2gvYXJtL0tjb25maWcKaW5kZXggMmUwMjNkMS4uNDMxMjNlNiAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gvYXJtL0tjb25maWcKKysrIGIveGVuL2FyY2gvYXJtL0tjb25maWcKQEAgLTEyLDExICsxMiwx MSBAQCBjb25maWcgQVJNXzMyCiBjb25maWcgQVJNXzY0CiAJZGVmX2Jvb2wgeQogCWRlcGVuZHMg b24gNjRCSVQKLQlzZWxlY3QgSEFTX0FMVEVSTkFUSVZFCiAJc2VsZWN0IEhBU19HSUNWMwogCiBj b25maWcgQVJNCiAJZGVmX2Jvb2wgeQorCXNlbGVjdCBIQVNfQUxURVJOQVRJVkUKIAlzZWxlY3Qg SEFTX0FSTV9IRExDRAogCXNlbGVjdCBIQVNfREVWSUNFX1RSRUUKIAlzZWxlY3QgSEFTX01FTV9B Q0NFU1MKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9hcm0zMi9NYWtlZmlsZSBiL3hlbi9hcmNo L2FybS9hcm0zMi9NYWtlZmlsZQppbmRleCA0Mzk1NjkzLi4wYWMyNTRmIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gvYXJtL2FybTMyL01ha2Vm aWxlCkBAIC00LDYgKzQsNyBAQCBvYmotJChFQVJMWV9QUklOVEspICs9IGRlYnVnLm8KIG9iai15 ICs9IGRvbWN0bC5vCiBvYmoteSArPSBkb21haW4ubwogb2JqLXkgKz0gZW50cnkubworb2JqLXkg Kz0gaW5zbi5vCiBvYmotJChDT05GSUdfTElWRVBBVENIKSArPSBsaXZlcGF0Y2gubwogb2JqLXkg Kz0gcHJvYy12Ny5vIHByb2MtY2F4eC5vCiBvYmoteSArPSBzbXBib290Lm8KZGlmZiAtLWdpdCBh L3hlbi9hcmNoL2FybS9hcm0zMi9pbnNuLmMgYi94ZW4vYXJjaC9hcm0vYXJtMzIvaW5zbi5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNWRiYzUKLS0tIC9kZXYvbnVsbAor KysgYi94ZW4vYXJjaC9hcm0vYXJtMzIvaW5zbi5jCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgICog Q29weXJpZ2h0IChDKSAyMDE3IEFSTSBMdGQuCisgICoKKyAgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAyIGFzCisgICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisg ICoKKyAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgKiBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICAqCisgICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgKiBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKyAgKi8KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL2JpdG9w cy5oPgorI2luY2x1ZGUgPHhlbi9zaXplcy5oPgorI2luY2x1ZGUgPGFzbS9pbnNuLmg+CisKKy8q IE1hc2sgb2YgYnJhbmNoIGluc3RydWN0aW9ucycgaW1tZWRpYXRlLiAqLworI2RlZmluZSBCUkFO Q0hfSU5TTl9JTU1fTUFTSyAgICBHRU5NQVNLKDIzLCAwKQorLyogU2hpZnQgb2YgYnJhbmNoIGlu c3RydWN0aW9ucycgaW1tZWRpYXRlLiAqLworI2RlZmluZSBCUkFOQ0hfSU5TTl9JTU1fU0hJRlQg ICAwCisKK3N0YXRpYyB1aW50MzJfdCBicmFuY2hfaW5zbl9lbmNvZGVfaW1tZWRpYXRlKHVpbnQz Ml90IGluc24sIGludDMyX3Qgb2Zmc2V0KQoreworICAgIHVpbnQzMl90IGltbTsKKworICAgIC8q CisgICAgICogRW5jb2RlIHRoZSBvZmZzZXQgdG8gaW1tLiBBbGwgQVJNMzIgaW5zdHJ1Y3Rpb25z IG11c3QgYmUgd29yZCBhbGlnbmVkLgorICAgICAqIFRoZXJlZm9yZSB0aGUgb2Zmc2V0IHZhbHVl J3MgYml0cyBbMTowXSBlcXVhbCB0byB6ZXJvLgorICAgICAqIChzZWUgQVJNIERESSAwNDA2Qy5j IEE4LjguMTgvQTguOC4yNSBmb3IgbW9yZSBlbmNvZGUvZGVjb2RlIGRldGFpbHMKKyAgICAgKiBh Ym91dCBBUk0zMiBicmFuY2ggaW5zdHJ1Y3Rpb25zKQorICAgICAqLworICAgIGltbSA9ICgob2Zm c2V0ID4+IDIpICYgQlJBTkNIX0lOU05fSU1NX01BU0spIDw8IEJSQU5DSF9JTlNOX0lNTV9TSElG VDsKKworICAgIC8qIFVwZGF0ZSB0aGUgaW1tZWRpYXRlIGZpZWxkLiAqLworICAgIGluc24gJj0g fihCUkFOQ0hfSU5TTl9JTU1fTUFTSyA8PCBCUkFOQ0hfSU5TTl9JTU1fU0hJRlQpOworICAgIGlu c24gfD0gaW1tOworCisgICAgcmV0dXJuIGluc247Cit9CisKKy8qCisgKiBEZWNvZGUgdGhlIGJy YW5jaCBvZmZzZXQgZnJvbSBhIGJyYW5jaCBpbnN0cnVjdGlvbidzIGltbSBmaWVsZC4KKyAqIFRo ZSBicmFuY2ggb2Zmc2V0IGlzIGEgc2lnbmVkIHZhbHVlLCBzbyBpdCBjYW4gYmUgdXNlZCB0byBj b21wdXRlCisgKiBhIG5ldyBicmFuY2ggdGFyZ2V0LgorICovCitpbnQzMl90IGFhcmNoMzJfZ2V0 X2JyYW5jaF9vZmZzZXQodWludDMyX3QgaW5zbikKK3sKKyAgICB1aW50MzJfdCBpbW07CisKKyAg ICAvKiBSZXRyaWV2ZSBpbW0gZnJvbSBicmFuY2ggaW5zdHJ1Y3Rpb24uICovCisgICAgaW1tID0g KCBpbnNuID4+IEJSQU5DSF9JTlNOX0lNTV9TSElGVCApICYgQlJBTkNIX0lOU05fSU1NX01BU0s7 CisKKyAgICAvKgorICAgICAqIENoZWNrIHRoZSBpbW0gc2lnbmVkIGJpdC4gSWYgdGhlIGltbSBp cyBhIG5lZ2F0aXZlIHZhbHVlLCB3ZQorICAgICAqIGhhdmUgdG8gZXh0ZW5kIHRoZSBpbW0gdG8g YSBmdWxsIDMyIGJpdCBuZWdhdGl2ZSB2YWx1ZS4KKyAgICAgKi8KKyAgICBpZiAoIGltbSAmIEJJ VCgyMykgKQorICAgICAgICBpbW0gfD0gR0VOTUFTSygzMSwgMjQpOworCisgICAgcmV0dXJuIChp bnQzMl90KShpbW0gPDwgMik7Cit9CisKKy8qCisgKiBFbmNvZGUgdGhlIGRpc3BsYWNlbWVudCBv ZiBhIGJyYW5jaCBpbiB0aGUgaW1tIGZpZWxkIGFuZCByZXR1cm4gdGhlCisgKiB1cGRhdGVkIGlu c3RydWN0aW9uLgorICovCit1aW50MzJfdCBhYXJjaDMyX3NldF9icmFuY2hfb2Zmc2V0KHVpbnQz Ml90IGluc24sIGludDMyX3Qgb2Zmc2V0KQoreworICAgIC8qIEIvQkwgc3VwcG9ydCBbLTMyTSwg MzJNKSBvZmZzZXQgKHNlZSBBUk0gRERJIDA0MDZDLmMgQTQuMykuICovCisgICAgaWYgKCBvZmZz ZXQgPCAtU1pfMzJNIHx8IG9mZnNldCA+PSBTWl8zMk0gKQorICAgIHsKKyAgICAgICAgcHJpbnRr KFhFTkxPR19FUlIKKyAgICAgICAgICAgICAgICIlczogbmV3IGJyYW5jaCBvZmZzZXQgb3V0IG9m IHJhbmdlLlxuIiwgX19mdW5jX18pOworICAgICAgICByZXR1cm4gQlVHX09QQ09ERTsKKyAgICB9 CisKKyAgICByZXR1cm4gYnJhbmNoX2luc25fZW5jb2RlX2ltbWVkaWF0ZShpbnNuLCBvZmZzZXQp OworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0 eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5p bAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2xpdmVwYXRjaC5jIGIveGVu L2NvbW1vbi9saXZlcGF0Y2guYwppbmRleCAyNDZlNjczLi5mMTRiY2JjIDEwMDY0NAotLS0gYS94 ZW4vY29tbW9uL2xpdmVwYXRjaC5jCisrKyBiL3hlbi9jb21tb24vbGl2ZXBhdGNoLmMKQEAgLTI1 LDYgKzI1LDcgQEAKICNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+CiAjaW5jbHVkZSA8eGVuL2xp dmVwYXRjaF9wYXlsb2FkLmg+CiAKKyNpbmNsdWRlIDxhc20vYWx0ZXJuYXRpdmUuaD4KICNpbmNs dWRlIDxhc20vZXZlbnQuaD4KIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0v YXJtMzIvaW5zbi5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9hcm0zMi9pbnNuLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNkYTY5ZQotLS0gL2Rldi9udWxsCisrKyBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vYXJtMzIvaW5zbi5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgICog Q29weXJpZ2h0IChDKSAyMDE3IEFSTSBMdGQuCisgICoKKyAgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAyIGFzCisgICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisg ICoKKyAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgKiBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICAqCisgICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgKiBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKyAgKi8KKyNpZm5kZWYgX19BUkNIX0FSTV9BUk0zMl9JTlNOCisjZGVmaW5lIF9f QVJDSF9BUk1fQVJNMzJfSU5TTgorCisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisKKyNkZWZpbmUg X19BQVJDSDMyX0lOU05fRlVOQ1MoYWJiciwgbWFzaywgdmFsKSAgIFwKK3N0YXRpYyBhbHdheXNf aW5saW5lIGJvb2xfdCBhYXJjaDMyX2luc25faXNfIyNhYmJyKHVpbnQzMl90IGNvZGUpIFwKK3sg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICByZXR1cm4gKGNvZGUgJiAobWFzaykpID09ICh2YWwpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKK30KKworLyoKKyAqIEZyb20gQVJNIERESSAwNDA2Qy5jIFNl Y3Rpb24gQTguOC4xOCBhbmQgQTguOC4yNS4gV2UgY2FuIHNlZSB0aGF0CisgKiB1bmNvbmRpdGlv bmFsIGJseCBhbmQgY29uZGl0aW9uYWwgYiBoYXZlIHRoZSBzYW1lIHZhbHVlIGZpZWxkIGFuZCBp bW0KKyAqIGxlbmd0aC4gQW5kIGZyb20gQVJNIERESSAwNDA2Qy5jIFNlY3Rpb24gQTUuNyBUYWJs ZSBBNS0yMywgd2UgY2FuIHNlZQorICogdGhhdCB0aGUgYmx4IGlzIHRoZSBvbmx5IG9uZSB1bmNv bmRpdGlvbmFsIGluc3RydWN0aW9uIGhhcyB0aGUgc2FtZQorICogdmFsdWUgd2l0aCBjb25kaXRp b25hbCBicmFuY2ggaW5zdHJ1Y3Rpb25zLiBTbyB3ZSBkZWZpbmUgdGhlIGIgYW5kIGJseAorICog aW4gdGhlIHNhbWUgbWFjcm8gdG8gY2hlY2sgdGhlbSBhdCB0aGUgc2FtZSB0aW1lLgorICovCitf X0FBUkNIMzJfSU5TTl9GVU5DUyhiX29yX2JseCwgIDB4MEYwMDAwMDAsIDB4MEEwMDAwMDApCitf X0FBUkNIMzJfSU5TTl9GVU5DUyhibCwgICAgICAgIDB4MEYwMDAwMDAsIDB4MEIwMDAwMDApCisK K2ludDMyX3QgYWFyY2gzMl9nZXRfYnJhbmNoX29mZnNldCh1aW50MzJfdCBpbnNuKTsKK3VpbnQz Ml90IGFhcmNoMzJfc2V0X2JyYW5jaF9vZmZzZXQodWludDMyX3QgaW5zbiwgaW50MzJfdCBvZmZz ZXQpOworCisvKiBXcmFwcGVyIGZvciBjb21tb24gY29kZSAqLworc3RhdGljIGlubGluZSBib29s IGluc25faXNfYnJhbmNoX2ltbSh1aW50MzJfdCBpbnNuKQoreworICAgIHJldHVybiAoIGFhcmNo MzJfaW5zbl9pc19iX29yX2JseChpbnNuKSB8fCBhYXJjaDMyX2luc25faXNfYmwoaW5zbikgKTsK K30KKworc3RhdGljIGlubGluZSBpbnQzMl90IGluc25fZ2V0X2JyYW5jaF9vZmZzZXQodWludDMy X3QgaW5zbikKK3sKKyAgICByZXR1cm4gYWFyY2gzMl9nZXRfYnJhbmNoX29mZnNldChpbnNuKTsK K30KKworc3RhdGljIGlubGluZSB1aW50MzJfdCBpbnNuX3NldF9icmFuY2hfb2Zmc2V0KHVpbnQz Ml90IGluc24sIGludDMyX3Qgb2Zmc2V0KQoreworICAgIHJldHVybiBhYXJjaDMyX3NldF9icmFu Y2hfb2Zmc2V0KGluc24sIG9mZnNldCk7Cit9CisKKyNlbmRpZiAvKiAhX19BUkNIX0FSTV9BUk0z Ml9JTlNOICovCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxl LXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6 IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2luc24u aCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vaW5zbi5oCmluZGV4IGEyMDVjZWIuLjM0ODkxNzkgMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vaW5zbi5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS1hcm0vaW5zbi5oCkBAIC01LDYgKzUsOCBAQAogCiAjaWYgZGVmaW5lZChDT05GSUdfQVJNXzY0 KQogIyBpbmNsdWRlIDxhc20vYXJtNjQvaW5zbi5oPgorI2VsaWYgZGVmaW5lZChDT05GSUdfQVJN XzMyKQorIyBpbmNsdWRlIDxhc20vYXJtMzIvaW5zbi5oPgogI2Vsc2UKICMgZXJyb3IgInVua25v d24gQVJNIHZhcmlhbnQiCiAjZW5kaWYKLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==