From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v2 08/15] xen/arm: arm64: Add helpers to decode and encode branch instructions Date: Mon, 30 May 2016 15:29:45 +0100 (BST) Message-ID: References: <1464013052-32587-1-git-send-email-julien.grall@arm.com> <1464013052-32587-9-git-send-email-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1464013052-32587-9-git-send-email-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall Cc: sstabellini@kernel.org, wei.liu2@citrix.com, steve.capper@arm.com, andre.przywara@arm.com, xen-devel@lists.xen.org, wei.chen@linaro.org List-Id: xen-devel@lists.xenproject.org T24gTW9uLCAyMyBNYXkgMjAxNiwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IFdlIG1heSBuZWVkIHRv IHVwZGF0ZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2hlbiBwYXRjaGluZyBYZW4uCj4gCj4gVGhlIGNv ZGUgaGFzIGJlZW4gaW1wb3J0ZWQgZnJvbSB0aGUgZmlsZXMgYXJjaC9hcm02NC9rZXJuZWwvaW5z bi5jCj4gYW5kIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaW5zbi5oIGluIExpbnV4IHY0LjYuCj4g Cj4gTm90ZSB0aGF0IG9ubHkgdGhlIG5lY2Vzc2FyeSBoZWxwZXJzIGhhdmUgYmVlbiBpbXBvcnRl ZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29t PgoKQWNrZWQtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4K Cgo+ICAgICBDaGFuZ2VzIGluIHYyOgo+ICAgICAgICAgLSBSZS1zeW5jIHdpdGggTGludXggdjQu Ngo+ICAgICAgICAgLSBEcm9wIGFueSByZWZlcmVuY2UgdG8gYXJtMzIKPiAtLS0KPiAgeGVuL2Fy Y2gvYXJtL2FybTY0L01ha2VmaWxlICAgICAgfCAgIDEgKwo+ICB4ZW4vYXJjaC9hcm0vYXJtNjQv aW5zbi5jICAgICAgICB8IDIxOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9hcm02NC9pbnNuLmggfCAgNzIgKysrKysrKysrKysr Kwo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2luc24uaCAgICAgICB8ICAyMCArKysrCj4gIDQgZmls ZXMgY2hhbmdlZCwgMzEyIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9h cmNoL2FybS9hcm02NC9pbnNuLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2Fz bS1hcm0vYXJtNjQvaW5zbi5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9hc20t YXJtL2luc24uaAo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUg Yi94ZW4vYXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUKPiBpbmRleCAzOWM2YWM2Li5jMWZhNDNmIDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9hcm02NC9NYWtlZmlsZQo+ICsrKyBiL3hlbi9hcmNo L2FybS9hcm02NC9NYWtlZmlsZQo+IEBAIC01LDYgKzUsNyBAQCBvYmotJChFQVJMWV9QUklOVEsp ICs9IGRlYnVnLm8KPiAgb2JqLXkgKz0gZG9tY3RsLm8KPiAgb2JqLXkgKz0gZG9tYWluLm8KPiAg b2JqLXkgKz0gZW50cnkubwo+ICtvYmoteSArPSBpbnNuLm8KPiAgb2JqLXkgKz0gc21wYm9vdC5v Cj4gIG9iai15ICs9IHRyYXBzLm8KPiAgb2JqLXkgKz0gdmZwLm8KPiBkaWZmIC0tZ2l0IGEveGVu L2FyY2gvYXJtL2FybTY0L2luc24uYyBiL3hlbi9hcmNoL2FybS9hcm02NC9pbnNuLmMKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjEyYjRkOTYKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIveGVuL2FyY2gvYXJtL2FybTY0L2luc24uYwo+IEBAIC0wLDAgKzEsMjE5IEBACj4g Ky8qCj4gKyAqIEJhc2VkIG9uIExpbnV4IHY0LjYgYXJjaC9hcm02NC9rZXJuZWwuaW5zLmMKCiBh cmNoL2FybTY0L2tlcm5lbC9pbnNuLmMgPwoKCgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSHVh d2VpIEx0ZC4KPiArICogQXV0aG9yOiBKaWFuZyBMaXUgPGxpdWo5N0BnbWFpbC5jb20+Cj4gKyAq Cj4gKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IFppIFNoZW4gTGltIDx6bGltLmxueEBnbWFp bC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCj4gKyAqIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+ICsgKiBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K PiArICovCj4gKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vdHlwZXMu aD4KPiArI2luY2x1ZGUgPHhlbi9saWIuaD4KPiArI2luY2x1ZGUgPHhlbi9lcnJuby5oPgo+ICsj aW5jbHVkZSA8eGVuL3NpemVzLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vYml0b3BzLmg+Cj4gKyNpbmNs dWRlIDxhc20vaW5zbi5oPgo+ICsjaW5jbHVkZSA8YXNtL2FybTY0L2luc24uaD4KPiArCj4gKyNk ZWZpbmUgX19rcHJvYmVzCj4gKyNkZWZpbmUgcHJfZXJyKGZtdCwgLi4uKSBwcmludGsoWEVOTE9H X0VSUiBmbXQsICMjIF9fVkFfQVJHU19fKQo+ICsKPiArYm9vbCBhYXJjaDY0X2luc25faXNfYnJh bmNoX2ltbSh1MzIgaW5zbikKPiArewo+ICsJcmV0dXJuIChhYXJjaDY0X2luc25faXNfYihpbnNu KSB8fCBhYXJjaDY0X2luc25faXNfYmwoaW5zbikgfHwKPiArCQlhYXJjaDY0X2luc25faXNfdGJ6 KGluc24pIHx8IGFhcmNoNjRfaW5zbl9pc190Ym56KGluc24pIHx8Cj4gKwkJYWFyY2g2NF9pbnNu X2lzX2NieihpbnNuKSB8fCBhYXJjaDY0X2luc25faXNfY2JueihpbnNuKSB8fAo+ICsJCWFhcmNo NjRfaW5zbl9pc19iY29uZChpbnNuKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgX19rcHJvYmVz IGFhcmNoNjRfZ2V0X2ltbV9zaGlmdF9tYXNrKGVudW0gYWFyY2g2NF9pbnNuX2ltbV90eXBlIHR5 cGUsCj4gKwkJCQkJCXUzMiAqbWFza3AsIGludCAqc2hpZnRwKQo+ICt7Cj4gKwl1MzIgbWFzazsK PiArCWludCBzaGlmdDsKPiArCj4gKwlzd2l0Y2ggKHR5cGUpIHsKPiArCWNhc2UgQUFSQ0g2NF9J TlNOX0lNTV8yNjoKPiArCQltYXNrID0gQklUKDI2KSAtIDE7Cj4gKwkJc2hpZnQgPSAwOwo+ICsJ CWJyZWFrOwo+ICsJY2FzZSBBQVJDSDY0X0lOU05fSU1NXzE5Ogo+ICsJCW1hc2sgPSBCSVQoMTkp IC0gMTsKPiArCQlzaGlmdCA9IDU7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEFBUkNINjRfSU5TTl9J TU1fMTY6Cj4gKwkJbWFzayA9IEJJVCgxNikgLSAxOwo+ICsJCXNoaWZ0ID0gNTsKPiArCQlicmVh azsKPiArCWNhc2UgQUFSQ0g2NF9JTlNOX0lNTV8xNDoKPiArCQltYXNrID0gQklUKDE0KSAtIDE7 Cj4gKwkJc2hpZnQgPSA1Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSBBQVJDSDY0X0lOU05fSU1NXzEy Ogo+ICsJCW1hc2sgPSBCSVQoMTIpIC0gMTsKPiArCQlzaGlmdCA9IDEwOwo+ICsJCWJyZWFrOwo+ ICsJY2FzZSBBQVJDSDY0X0lOU05fSU1NXzk6Cj4gKwkJbWFzayA9IEJJVCg5KSAtIDE7Cj4gKwkJ c2hpZnQgPSAxMjsKPiArCQlicmVhazsKPiArCWNhc2UgQUFSQ0g2NF9JTlNOX0lNTV83Ogo+ICsJ CW1hc2sgPSBCSVQoNykgLSAxOwo+ICsJCXNoaWZ0ID0gMTU7Cj4gKwkJYnJlYWs7Cj4gKwljYXNl IEFBUkNINjRfSU5TTl9JTU1fNjoKPiArCWNhc2UgQUFSQ0g2NF9JTlNOX0lNTV9TOgo+ICsJCW1h c2sgPSBCSVQoNikgLSAxOwo+ICsJCXNoaWZ0ID0gMTA7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEFB UkNINjRfSU5TTl9JTU1fUjoKPiArCQltYXNrID0gQklUKDYpIC0gMTsKPiArCQlzaGlmdCA9IDE2 Owo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiAr Cj4gKwkqbWFza3AgPSBtYXNrOwo+ICsJKnNoaWZ0cCA9IHNoaWZ0Owo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICsjZGVmaW5lIEFEUl9JTU1fSElMT1NQTElUCTIKPiArI2RlZmluZSBBRFJf SU1NX1NJWkUJCVNaXzJNCj4gKyNkZWZpbmUgQURSX0lNTV9MT01BU0sJCSgoMSA8PCBBRFJfSU1N X0hJTE9TUExJVCkgLSAxKQo+ICsjZGVmaW5lIEFEUl9JTU1fSElNQVNLCQkoKEFEUl9JTU1fU0la RSA+PiBBRFJfSU1NX0hJTE9TUExJVCkgLSAxKQo+ICsjZGVmaW5lIEFEUl9JTU1fTE9TSElGVAkJ MjkKPiArI2RlZmluZSBBRFJfSU1NX0hJU0hJRlQJCTUKPiArCj4gK3U2NCBhYXJjaDY0X2luc25f ZGVjb2RlX2ltbWVkaWF0ZShlbnVtIGFhcmNoNjRfaW5zbl9pbW1fdHlwZSB0eXBlLCB1MzIgaW5z bikKPiArewo+ICsJdTMyIGltbWxvLCBpbW1oaSwgbWFzazsKPiArCWludCBzaGlmdDsKPiArCj4g Kwlzd2l0Y2ggKHR5cGUpIHsKPiArCWNhc2UgQUFSQ0g2NF9JTlNOX0lNTV9BRFI6Cj4gKwkJc2hp ZnQgPSAwOwo+ICsJCWltbWxvID0gKGluc24gPj4gQURSX0lNTV9MT1NISUZUKSAmIEFEUl9JTU1f TE9NQVNLOwo+ICsJCWltbWhpID0gKGluc24gPj4gQURSX0lNTV9ISVNISUZUKSAmIEFEUl9JTU1f SElNQVNLOwo+ICsJCWluc24gPSAoaW1taGkgPDwgQURSX0lNTV9ISUxPU1BMSVQpIHwgaW1tbG87 Cj4gKwkJbWFzayA9IEFEUl9JTU1fU0laRSAtIDE7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ ICsJCWlmIChhYXJjaDY0X2dldF9pbW1fc2hpZnRfbWFzayh0eXBlLCAmbWFzaywgJnNoaWZ0KSA8 IDApIHsKPiArCQkJcHJfZXJyKCJhYXJjaDY0X2luc25fZGVjb2RlX2ltbWVkaWF0ZTogdW5rbm93 biBpbW1lZGlhdGUgZW5jb2RpbmcgJWRcbiIsCj4gKwkJCSAgICAgICB0eXBlKTsKPiArCQkJcmV0 dXJuIDA7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiAoaW5zbiA+PiBzaGlmdCkgJiBtYXNr Owo+ICt9Cj4gKwo+ICt1MzIgX19rcHJvYmVzIGFhcmNoNjRfaW5zbl9lbmNvZGVfaW1tZWRpYXRl KGVudW0gYWFyY2g2NF9pbnNuX2ltbV90eXBlIHR5cGUsCj4gKwkJCQkgIHUzMiBpbnNuLCB1NjQg aW1tKQo+ICt7Cj4gKwl1MzIgaW1tbG8sIGltbWhpLCBtYXNrOwo+ICsJaW50IHNoaWZ0Owo+ICsK PiArCWlmIChpbnNuID09IEFBUkNINjRfQlJFQUtfRkFVTFQpCj4gKwkJcmV0dXJuIEFBUkNINjRf QlJFQUtfRkFVTFQ7Cj4gKwo+ICsJc3dpdGNoICh0eXBlKSB7Cj4gKwljYXNlIEFBUkNINjRfSU5T Tl9JTU1fQURSOgo+ICsJCXNoaWZ0ID0gMDsKPiArCQlpbW1sbyA9IChpbW0gJiBBRFJfSU1NX0xP TUFTSykgPDwgQURSX0lNTV9MT1NISUZUOwo+ICsJCWltbSA+Pj0gQURSX0lNTV9ISUxPU1BMSVQ7 Cj4gKwkJaW1taGkgPSAoaW1tICYgQURSX0lNTV9ISU1BU0spIDw8IEFEUl9JTU1fSElTSElGVDsK PiArCQlpbW0gPSBpbW1sbyB8IGltbWhpOwo+ICsJCW1hc2sgPSAoKEFEUl9JTU1fTE9NQVNLIDw8 IEFEUl9JTU1fTE9TSElGVCkgfAo+ICsJCQkoQURSX0lNTV9ISU1BU0sgPDwgQURSX0lNTV9ISVNI SUZUKSk7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCWlmIChhYXJjaDY0X2dldF9pbW1f c2hpZnRfbWFzayh0eXBlLCAmbWFzaywgJnNoaWZ0KSA8IDApIHsKPiArCQkJcHJfZXJyKCJhYXJj aDY0X2luc25fZW5jb2RlX2ltbWVkaWF0ZTogdW5rbm93biBpbW1lZGlhdGUgZW5jb2RpbmcgJWRc biIsCj4gKwkJCSAgICAgICB0eXBlKTsKPiArCQkJcmV0dXJuIEFBUkNINjRfQlJFQUtfRkFVTFQ7 Cj4gKwkJfQo+ICsJfQo+ICsKPiArCS8qIFVwZGF0ZSB0aGUgaW1tZWRpYXRlIGZpZWxkLiAqLwo+ ICsJaW5zbiAmPSB+KG1hc2sgPDwgc2hpZnQpOwo+ICsJaW5zbiB8PSAoaW1tICYgbWFzaykgPDwg c2hpZnQ7Cj4gKwo+ICsJcmV0dXJuIGluc247Cj4gK30KPiArCj4gKy8qCj4gKyAqIERlY29kZSB0 aGUgaW1tIGZpZWxkIG9mIGEgYnJhbmNoLCBhbmQgcmV0dXJuIHRoZSBieXRlIG9mZnNldCBhcyBh Cj4gKyAqIHNpZ25lZCB2YWx1ZSAoc28gaXQgY2FuIGJlIHVzZWQgd2hlbiBjb21wdXRpbmcgYSBu ZXcgYnJhbmNoCj4gKyAqIHRhcmdldCkuCj4gKyAqLwo+ICtzMzIgYWFyY2g2NF9nZXRfYnJhbmNo X29mZnNldCh1MzIgaW5zbikKPiArewo+ICsJczMyIGltbTsKPiArCj4gKwlpZiAoYWFyY2g2NF9p bnNuX2lzX2IoaW5zbikgfHwgYWFyY2g2NF9pbnNuX2lzX2JsKGluc24pKSB7Cj4gKwkJaW1tID0g YWFyY2g2NF9pbnNuX2RlY29kZV9pbW1lZGlhdGUoQUFSQ0g2NF9JTlNOX0lNTV8yNiwgaW5zbik7 Cj4gKwkJcmV0dXJuIChpbW0gPDwgNikgPj4gNDsKPiArCX0KPiArCj4gKwlpZiAoYWFyY2g2NF9p bnNuX2lzX2NieihpbnNuKSB8fCBhYXJjaDY0X2luc25faXNfY2JueihpbnNuKSB8fAo+ICsJICAg IGFhcmNoNjRfaW5zbl9pc19iY29uZChpbnNuKSkgewo+ICsJCWltbSA9IGFhcmNoNjRfaW5zbl9k ZWNvZGVfaW1tZWRpYXRlKEFBUkNINjRfSU5TTl9JTU1fMTksIGluc24pOwo+ICsJCXJldHVybiAo aW1tIDw8IDEzKSA+PiAxMTsKPiArCX0KPiArCj4gKwlpZiAoYWFyY2g2NF9pbnNuX2lzX3Rieihp bnNuKSB8fCBhYXJjaDY0X2luc25faXNfdGJueihpbnNuKSkgewo+ICsJCWltbSA9IGFhcmNoNjRf aW5zbl9kZWNvZGVfaW1tZWRpYXRlKEFBUkNINjRfSU5TTl9JTU1fMTQsIGluc24pOwo+ICsJCXJl dHVybiAoaW1tIDw8IDE4KSA+PiAxNjsKPiArCX0KPiArCj4gKwkvKiBVbmhhbmRsZWQgaW5zdHJ1 Y3Rpb24gKi8KPiArCUJVRygpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBFbmNvZGUgdGhlIGRpc3Bs YWNlbWVudCBvZiBhIGJyYW5jaCBpbiB0aGUgaW1tIGZpZWxkIGFuZCByZXR1cm4gdGhlCj4gKyAq IHVwZGF0ZWQgaW5zdHJ1Y3Rpb24uCj4gKyAqLwo+ICt1MzIgYWFyY2g2NF9zZXRfYnJhbmNoX29m ZnNldCh1MzIgaW5zbiwgczMyIG9mZnNldCkKPiArewo+ICsJaWYgKGFhcmNoNjRfaW5zbl9pc19i KGluc24pIHx8IGFhcmNoNjRfaW5zbl9pc19ibChpbnNuKSkKPiArCQlyZXR1cm4gYWFyY2g2NF9p bnNuX2VuY29kZV9pbW1lZGlhdGUoQUFSQ0g2NF9JTlNOX0lNTV8yNiwgaW5zbiwKPiArCQkJCQkJ ICAgICBvZmZzZXQgPj4gMik7Cj4gKwo+ICsJaWYgKGFhcmNoNjRfaW5zbl9pc19jYnooaW5zbikg fHwgYWFyY2g2NF9pbnNuX2lzX2NibnooaW5zbikgfHwKPiArCSAgICBhYXJjaDY0X2luc25faXNf YmNvbmQoaW5zbikpCj4gKwkJcmV0dXJuIGFhcmNoNjRfaW5zbl9lbmNvZGVfaW1tZWRpYXRlKEFB UkNINjRfSU5TTl9JTU1fMTksIGluc24sCj4gKwkJCQkJCSAgICAgb2Zmc2V0ID4+IDIpOwo+ICsK PiArCWlmIChhYXJjaDY0X2luc25faXNfdGJ6KGluc24pIHx8IGFhcmNoNjRfaW5zbl9pc190Ym56 KGluc24pKQo+ICsJCXJldHVybiBhYXJjaDY0X2luc25fZW5jb2RlX2ltbWVkaWF0ZShBQVJDSDY0 X0lOU05fSU1NXzE0LCBpbnNuLAo+ICsJCQkJCQkgICAgIG9mZnNldCA+PiAyKTsKPiArCj4gKwkv KiBVbmhhbmRsZWQgaW5zdHJ1Y3Rpb24gKi8KPiArCUJVRygpOwo+ICt9Cj4gKwo+ICsvKgo+ICsg KiBMb2NhbCB2YXJpYWJsZXM6Cj4gKyAqIG1vZGU6IEMKPiArICogYy1maWxlLXN0eWxlOiAiQlNE Igo+ICsgKiBjLWJhc2ljLW9mZnNldDogOAo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiB0Cj4gKyAq IEVuZDoKPiArICovCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vYXJtNjQvaW5z bi5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9hcm02NC9pbnNuLmgKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAuLmNmY2RiZTkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVu L2luY2x1ZGUvYXNtLWFybS9hcm02NC9pbnNuLmgKPiBAQCAtMCwwICsxLDcyIEBACj4gKy8qCj4g KyAqIENvcHlyaWdodCAoQykgMjAxMyBIdWF3ZWkgTHRkLgo+ICsgKiBBdXRob3I6IEppYW5nIExp dSA8bGl1ajk3QGdtYWlsLmNvbT4KPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE0IFppIFNo ZW4gTGltIDx6bGltLmxueEBnbWFpbC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAq IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVy c2lvbiAyIGFzCj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u Lgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQo+ICsgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KPiArICovCj4gKyNpZm5kZWYgX19BUkNIX0FSTV9BUk02NF9J TlNOCj4gKyNkZWZpbmUgX19BUkNIX0FSTV9BUk02NF9JTlNOCj4gKwo+ICsjaW5jbHVkZSA8eGVu L2NvbmZpZy5oPgo+ICsjaW5jbHVkZSA8eGVuL3R5cGVzLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vc3Rk Ym9vbC5oPgo+ICsKPiArZW51bSBhYXJjaDY0X2luc25faW1tX3R5cGUgewo+ICsJQUFSQ0g2NF9J TlNOX0lNTV9BRFIsCj4gKwlBQVJDSDY0X0lOU05fSU1NXzI2LAo+ICsJQUFSQ0g2NF9JTlNOX0lN TV8xOSwKPiArCUFBUkNINjRfSU5TTl9JTU1fMTYsCj4gKwlBQVJDSDY0X0lOU05fSU1NXzE0LAo+ ICsJQUFSQ0g2NF9JTlNOX0lNTV8xMiwKPiArCUFBUkNINjRfSU5TTl9JTU1fOSwKPiArCUFBUkNI NjRfSU5TTl9JTU1fNywKPiArCUFBUkNINjRfSU5TTl9JTU1fNiwKPiArCUFBUkNINjRfSU5TTl9J TU1fUywKPiArCUFBUkNINjRfSU5TTl9JTU1fUiwKPiArCUFBUkNINjRfSU5TTl9JTU1fTUFYCj4g K307Cj4gKwo+ICsjZGVmaW5lCV9fQUFSQ0g2NF9JTlNOX0ZVTkNTKGFiYnIsIG1hc2ssIHZhbCkJ XAo+ICtzdGF0aWMgYWx3YXlzX2lubGluZSBib29sX3QgYWFyY2g2NF9pbnNuX2lzXyMjYWJicih1 MzIgY29kZSkgXAo+ICt7IHJldHVybiAoY29kZSAmIChtYXNrKSkgPT0gKHZhbCk7IH0gXAo+ICtz dGF0aWMgYWx3YXlzX2lubGluZSB1MzIgYWFyY2g2NF9pbnNuX2dldF8jI2FiYnIjI192YWx1ZSh2 b2lkKSBcCj4gK3sgcmV0dXJuICh2YWwpOyB9Cj4gKwo+ICtfX0FBUkNINjRfSU5TTl9GVU5DUyhi LAkJMHhGQzAwMDAwMCwgMHgxNDAwMDAwMCkKPiArX19BQVJDSDY0X0lOU05fRlVOQ1MoYmwsCTB4 RkMwMDAwMDAsIDB4OTQwMDAwMDApCj4gK19fQUFSQ0g2NF9JTlNOX0ZVTkNTKGNieiwJMHg3RjAw MDAwMCwgMHgzNDAwMDAwMCkKPiArX19BQVJDSDY0X0lOU05fRlVOQ1MoY2JueiwJMHg3RjAwMDAw MCwgMHgzNTAwMDAwMCkKPiArX19BQVJDSDY0X0lOU05fRlVOQ1ModGJ6LAkweDdGMDAwMDAwLCAw eDM2MDAwMDAwKQo+ICtfX0FBUkNINjRfSU5TTl9GVU5DUyh0Ym56LAkweDdGMDAwMDAwLCAweDM3 MDAwMDAwKQo+ICtfX0FBUkNINjRfSU5TTl9GVU5DUyhiY29uZCwJMHhGRjAwMDAxMCwgMHg1NDAw MDAwMCkKPiArCj4gK2Jvb2wgYWFyY2g2NF9pbnNuX2lzX2JyYW5jaF9pbW0odTMyIGluc24pOwo+ ICsKPiArdTY0IGFhcmNoNjRfaW5zbl9kZWNvZGVfaW1tZWRpYXRlKGVudW0gYWFyY2g2NF9pbnNu X2ltbV90eXBlIHR5cGUsIHUzMiBpbnNuKTsKPiArdTMyIGFhcmNoNjRfaW5zbl9lbmNvZGVfaW1t ZWRpYXRlKGVudW0gYWFyY2g2NF9pbnNuX2ltbV90eXBlIHR5cGUsCj4gKwkJCQkgIHUzMiBpbnNu LCB1NjQgaW1tKTsKPiArCj4gK3MzMiBhYXJjaDY0X2dldF9icmFuY2hfb2Zmc2V0KHUzMiBpbnNu KTsKPiArdTMyIGFhcmNoNjRfc2V0X2JyYW5jaF9vZmZzZXQodTMyIGluc24sIHMzMiBvZmZzZXQp Owo+ICsKPiArI2VuZGlmIC8qICFfX0FSQ0hfQVJNX0FSTTY0X0lOU04gKi8KPiArLyoKPiArICog TG9jYWwgdmFyaWFibGVzOgo+ICsgKiBtb2RlOiBDCj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIK PiArICogYy1iYXNpYy1vZmZzZXQ6IDgKPiArICogaW5kZW50LXRhYnMtbW9kZTogdAo+ICsgKiBF bmQ6Cj4gKyAqLwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2luc24uaCBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vaW5zbi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwLi5hMjA1Y2ViCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1h cm0vaW5zbi5oCj4gQEAgLTAsMCArMSwyMCBAQAo+ICsjaWZuZGVmIF9fQVJDSF9BUk1fSU5TTgo+ ICsjZGVmaW5lIF9fQVJDSF9BUk1fSU5TTgo+ICsKPiArI2luY2x1ZGUgPHhlbi90eXBlcy5oPgo+ ICsKPiArI2lmIGRlZmluZWQoQ09ORklHX0FSTV82NCkKPiArIyBpbmNsdWRlIDxhc20vYXJtNjQv aW5zbi5oPgo+ICsjZWxzZQo+ICsjIGVycm9yICJ1bmtub3duIEFSTSB2YXJpYW50Igo+ICsjZW5k aWYKPiArCj4gKyNlbmRpZiAvKiAhX19BUkNIX0FSTV9JTlNOICovCj4gKy8qCj4gKyAqIExvY2Fs IHZhcmlhYmxlczoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4gKyAq IGMtYmFzaWMtb2Zmc2V0OiA4Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IHQKPiArICogRW5kOgo+ ICsgKi8KPiAtLSAKPiAxLjkuMQo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK