From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48249) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bRrIp-0006dl-LS for qemu-devel@nongnu.org; Mon, 25 Jul 2016 21:37:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bRrIm-0004XF-Dj for qemu-devel@nongnu.org; Mon, 25 Jul 2016 21:36:59 -0400 Received: from gate.crashing.org ([63.228.1.57]:33651) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bRrIl-0004Wt-AP for qemu-devel@nongnu.org; Mon, 25 Jul 2016 21:36:56 -0400 Message-ID: <1469497000.5978.72.camel@kernel.crashing.org> From: Benjamin Herrenschmidt Date: Tue, 26 Jul 2016 11:36:40 +1000 In-Reply-To: <1469493760-4205-1-git-send-email-rth@twiddle.net> References: <1469493760-4205-1-git-send-email-rth@twiddle.net> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: base64 Subject: Re: [Qemu-devel] [PATCH] tcg: Merge GETPC and GETRA List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Richard Henderson , qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, leon.alrae@imgtec.com T24gVHVlLCAyMDE2LTA3LTI2IGF0IDA2OjEyICswNTMwLCBSaWNoYXJkIEhlbmRlcnNvbiB3 cm90ZToNCj4gVGhlIHJldHVybiBhZGRyZXNzIGFyZ3VtZW50IHRvIHRoZSBzb2Z0bW11IHRl bXBsYXRlIGhlbHBlcnMgd2FzDQo+IGNvbmZ1c2VkLsKgwqBJbiB0aGUgbGVnYWN5IGNhc2Us IHdlIHdhbnRlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZXJlDQo+IGlzIG5vIHJldHVybiBhZGRy ZXNzLCBhbmQgc28gcGFzc2VkIGluIE5VTEwuwqDCoEhvd2V2ZXIsIHdlIHRoZW4NCj4gaW1t ZWRpYXRlbHkgc3VidHJhY3RlZCBHRVRQQ19BREogZnJvbSBOVUxMLCByZXN1bHRpbmcgaW4g YSBub24temVybw0KPiB2YWx1ZSwgaW5kaWNhdGluZyB0aGUgcHJlc2VuY2Ugb2YgYW4gKGlu dmFsaWQpIHJldHVybiBhZGRyZXNzLg0KPiANCj4gUHVzaCB0aGUgR0VUUENfQURKIHN1YnRy YWN0aW9uIGRvd24gdG8gdGhlIG9ubHkgcG9pbnQgaXQncyByZXF1aXJlZDoNCj4gaW1tZWRp YXRlbHkgYmVmb3JlIHVzZSB3aXRoaW4gY3B1X3Jlc3RvcmVfc3RhdGUsIGFmdGVyIGFsbCBO VUxMDQo+IHBvaW50ZXINCj4gY2hlY2tzIGhhdmUgYmVlbiBjb21wbGV0ZWQuwqDCoFRoaXMg bWFrZXMgR0VUUEMgYW5kIEdFVFJBIGlkZW50aWNhbC4NCj4gDQo+IFJlbW92ZSBHRVRSQSBh cyB0aGUgbGVzc2VyIHVzZWQgbWFjcm8sIHJlcGxhY2luZyBhbGwgdXNlcyB3aXRoIEdFVFBD Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogUmljaGFyZCBIZW5kZXJzb24gPHJ0aEB0d2lkZGxl Lm5ldD4NCj4gLS0tDQo+IA0KPiBCZW4sIHRoaXMgc2hvdWxkIGZpeCB0aGUgIi0yIiBwcm9i bGVtIHRoYXQgeW91IHJlcG9ydGVkLsKgwqBPZiBjb3Vyc2UsDQo+IGFzIGFsc28gZGlzY3Vz c2VkIGluIHRoYXQgdGhyZWFkLCB0aGlzIHdvbid0IGZpeCB0aGUgd2hvbGUgaXNzdWUuDQoN ClRoYW5rcy4gSSd2ZSBmaXhlZCB0aGUgcmVzdCBvZiB0aGUgaXNzdWUgaGVyZToNCg0KaHR0 cHM6Ly9naXRodWIuY29tL296YmVuaC9xZW11L2NvbW1pdC81Yjg0YTkwYWE2OTZhNzA3MmVh YTdhMmY0Y2Y2YWRlN2NkZDEwMzU4DQoNCldoaWxlIEkgd2lsbCBzZW5kIHRvIHRoZSBsaXN0 IGxhdGVyIHRvZGF5IGhvcGVmdWxseSwgYWxvbmcgd2l0aCB0aGUNCnJlc3Qgb2YgbXkgY2xl YW51cHMgYW5kIGZpeGVzIHRoYXQgYXJlIHN0YXJ0aW5nIHRvIHBpbGUgdXAgaGVyZToNCg0K aHR0cHM6Ly9naXRodWIuY29tL296YmVuaC9xZW11L2NvbW1pdHMvd2lwDQoNCkkgaGF2ZW4n dCB0YWNrbGVkIHRoZSBGUCBleGNlcHRpb25zIHlldCB0aG91Z2ggYnV0IHRoYXQgY2FuIHdh aXQuDQoNCkNoZWVycywNCkJlbi4NCg0KPiByfg0KPiANCj4gLS0tDQo+IMKgY3B1dGxiLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgNiArKy0tLS0NCj4gwqBpbmNs dWRlL2V4ZWMvZXhlYy1hbGwuaCB8wqDCoDkgKysrLS0tLS0tDQo+IMKgc29mdG1tdV90ZW1w bGF0ZS5owqDCoMKgwqDCoMKgfCAzMiArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiDCoHRhcmdldC1hcm0vaGVscGVyLmPCoMKgwqDCoMKgfMKgwqA2ICsrKy0tLQ0KPiDC oHRhcmdldC1taXBzL29wX2hlbHBlci5jIHwgMTggKysrKysrKysrLS0tLS0tLS0tDQo+IMKg dHJhbnNsYXRlLWFsbC5jwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxICsNCj4gwqA2IGZpbGVz IGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlm ZiAtLWdpdCBhL2NwdXRsYi5jIGIvY3B1dGxiLmMNCj4gaW5kZXggZDA2OGVlNS4uM2M5OWMz NCAxMDA2NDQNCj4gLS0tIGEvY3B1dGxiLmMNCj4gKysrIGIvY3B1dGxiLmMNCj4gQEAgLTU0 MywxMCArNTQzLDggQEAgc3RhdGljIGJvb2wgdmljdGltX3RsYl9oaXQoQ1BVQXJjaFN0YXRl ICplbnYsDQo+IHNpemVfdCBtbXVfaWR4LCBzaXplX3QgaW5kZXgsDQo+IMKgI3VuZGVmIE1N VVNVRkZJWA0KPiDCoA0KPiDCoCNkZWZpbmUgTU1VU1VGRklYIF9jbW11DQo+IC0jdW5kZWYg R0VUUENfQURKDQo+IC0jZGVmaW5lIEdFVFBDX0FESiAwDQo+IC0jdW5kZWYgR0VUUkENCj4g LSNkZWZpbmUgR0VUUkEoKSAoKHVpbnRwdHJfdCkwKQ0KPiArI3VuZGVmIEdFVFBDDQo+ICsj ZGVmaW5lIEdFVFBDKCkgKCh1aW50cHRyX3QpMCkNCj4gwqAjZGVmaW5lIFNPRlRNTVVfQ09E RV9BQ0NFU1MNCj4gwqANCj4gwqAjZGVmaW5lIFNISUZUIDANCj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZXhlYy9leGVjLWFsbC5oIGIvaW5jbHVkZS9leGVjL2V4ZWMtYWxsLmgNCj4gaW5k ZXggYWNkYTdiNi4uNmEzMTdkYiAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9leGVjL2V4ZWMt YWxsLmgNCj4gKysrIGIvaW5jbHVkZS9leGVjL2V4ZWMtYWxsLmgNCj4gQEAgLTMzNSwxMyAr MzM1LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0Yl9hZGRfanVtcChUcmFuc2xhdGlvbkJs b2NrDQo+ICp0YiwgaW50IG4sDQo+IMKgwqDCoMKgwqB0Yl9uZXh0LT5qbXBfbGlzdF9maXJz dCA9ICh1aW50cHRyX3QpdGIgfCBuOw0KPiDCoH0NCj4gwqANCj4gLS8qIEdFVFJBIGlzIHRo ZSB0cnVlIHRhcmdldCBvZiB0aGUgcmV0dXJuIGluc3RydWN0aW9uIHRoYXQgd2UnbGwNCj4g ZXhlY3V0ZSwNCj4gLcKgwqDCoGRlZmluZWQgaGVyZSBmb3Igc2ltcGxpY2l0eSBvZiBkZWZp bmluZyB0aGUgZm9sbG93LXVwIG1hY3Jvcy7CoMKgKi8NCj4gKy8qIEdFVFBDIGlzIHRoZSB0 cnVlIHRhcmdldCBvZiB0aGUgcmV0dXJuIGluc3RydWN0aW9uIHRoYXQgd2UnbGwNCj4gZXhl Y3V0ZS7CoMKgKi8NCj4gwqAjaWYgZGVmaW5lZChDT05GSUdfVENHX0lOVEVSUFJFVEVSKQ0K PiDCoGV4dGVybiB1aW50cHRyX3QgdGNpX3RiX3B0cjsNCj4gLSMgZGVmaW5lIEdFVFJBKCkg dGNpX3RiX3B0cg0KPiArIyBkZWZpbmUgR0VUUEMoKSB0Y2lfdGJfcHRyDQo+IMKgI2Vsc2UN Cj4gLSMgZGVmaW5lIEdFVFJBKCkgXA0KPiArIyBkZWZpbmUgR0VUUEMoKSBcDQo+IMKgwqDC oMKgwqAoKHVpbnRwdHJfdClfX2J1aWx0aW5fZXh0cmFjdF9yZXR1cm5fYWRkcihfX2J1aWx0 aW5fcmV0dXJuX2FkZHJlDQo+IHNzKDApKSkNCj4gwqAjZW5kaWYNCj4gwqANCj4gQEAgLTM1 NCw4ICszNTMsNiBAQCBleHRlcm4gdWludHB0cl90IHRjaV90Yl9wdHI7DQo+IMKgwqDCoMKg c21hbGxlciB0aGFuIDQgYnl0ZXMsIHNvIHdlIGRvbid0IHdvcnJ5IGFib3V0IHNwZWNpYWwt Y2FzaW5nDQo+IHRoaXMuwqDCoCovDQo+IMKgI2RlZmluZSBHRVRQQ19BRErCoMKgwqAyDQo+ IMKgDQo+IC0jZGVmaW5lIEdFVFBDKCnCoMKgKEdFVFJBKCkgLSBHRVRQQ19BREopDQo+IC0N Cj4gwqAjaWYgIWRlZmluZWQoQ09ORklHX1VTRVJfT05MWSkNCj4gwqANCj4gwqBzdHJ1Y3Qg TWVtb3J5UmVnaW9uICppb3RsYl90b19yZWdpb24oQ1BVU3RhdGUgKmNwdSwNCj4gZGlmZiAt LWdpdCBhL3NvZnRtbXVfdGVtcGxhdGUuaCBiL3NvZnRtbXVfdGVtcGxhdGUuaA0KPiBpbmRl eCAyODRhYjJjLi40Y2JiNzE0IDEwMDY0NA0KPiAtLS0gYS9zb2Z0bW11X3RlbXBsYXRlLmgN Cj4gKysrIGIvc29mdG1tdV90ZW1wbGF0ZS5oDQo+IEBAIC0xNTAsOSArMTUwLDYgQEAgV09S RF9UWVBFIGhlbHBlcl9sZV9sZF9uYW1lKENQVUFyY2hTdGF0ZSAqZW52LA0KPiB0YXJnZXRf dWxvbmcgYWRkciwNCj4gwqDCoMKgwqDCoHVpbnRwdHJfdCBoYWRkcjsNCj4gwqDCoMKgwqDC oERBVEFfVFlQRSByZXM7DQo+IMKgDQo+IC3CoMKgwqDCoC8qIEFkanVzdCB0aGUgZ2l2ZW4g cmV0dXJuIGFkZHJlc3MuwqDCoCovDQo+IC3CoMKgwqDCoHJldGFkZHIgLT0gR0VUUENfQURK Ow0KPiAtDQo+IMKgwqDCoMKgwqBpZiAoYV9iaXRzID4gMCAmJiAoYWRkciAmICgoMSA8PCBh X2JpdHMpIC0gMSkpICE9IDApIHsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgY3B1X3VuYWxpZ25l ZF9hY2Nlc3MoRU5WX0dFVF9DUFUoZW52KSwgYWRkciwNCj4gUkVBRF9BQ0NFU1NfVFlQRSwN Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgbW11X2lkeCwgcmV0YWRkcik7DQo+IEBAIC0xOTMsMTAgKzE5MCw4IEBAIFdP UkRfVFlQRSBoZWxwZXJfbGVfbGRfbmFtZShDUFVBcmNoU3RhdGUgKmVudiwNCj4gdGFyZ2V0 X3Vsb25nIGFkZHIsDQo+IMKgwqDCoMKgwqBkb191bmFsaWduZWRfYWNjZXNzOg0KPiDCoMKg wqDCoMKgwqDCoMKgwqBhZGRyMSA9IGFkZHIgJiB+KERBVEFfU0laRSAtIDEpOw0KPiDCoMKg wqDCoMKgwqDCoMKgwqBhZGRyMiA9IGFkZHIxICsgREFUQV9TSVpFOw0KPiAtwqDCoMKgwqDC oMKgwqDCoC8qIE5vdGUgdGhlIGFkanVzdG1lbnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUg ZnVuY3Rpb24uDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgVW5kbyB0aGF0IGZvciB0aGUg cmVjdXJzaW9uLsKgwqAqLw0KPiAtwqDCoMKgwqDCoMKgwqDCoHJlczEgPSBoZWxwZXJfbGVf bGRfbmFtZShlbnYsIGFkZHIxLCBvaSwgcmV0YWRkciArDQo+IEdFVFBDX0FESik7DQo+IC3C oMKgwqDCoMKgwqDCoMKgcmVzMiA9IGhlbHBlcl9sZV9sZF9uYW1lKGVudiwgYWRkcjIsIG9p LCByZXRhZGRyICsNCj4gR0VUUENfQURKKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqByZXMxID0g aGVscGVyX2xlX2xkX25hbWUoZW52LCBhZGRyMSwgb2ksIHJldGFkZHIpOw0KPiArwqDCoMKg wqDCoMKgwqDCoHJlczIgPSBoZWxwZXJfbGVfbGRfbmFtZShlbnYsIGFkZHIyLCBvaSwgcmV0 YWRkcik7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoHNoaWZ0ID0gKGFkZHIgJiAoREFUQV9TSVpF IC0gMSkpICogODsNCj4gwqANCj4gwqDCoMKgwqDCoMKgwqDCoMKgLyogTGl0dGxlLWVuZGlh biBjb21iaW5lLsKgwqAqLw0KPiBAQCAtMjI0LDkgKzIxOSw2IEBAIFdPUkRfVFlQRSBoZWxw ZXJfYmVfbGRfbmFtZShDUFVBcmNoU3RhdGUgKmVudiwNCj4gdGFyZ2V0X3Vsb25nIGFkZHIs DQo+IMKgwqDCoMKgwqB1aW50cHRyX3QgaGFkZHI7DQo+IMKgwqDCoMKgwqBEQVRBX1RZUEUg cmVzOw0KPiDCoA0KPiAtwqDCoMKgwqAvKiBBZGp1c3QgdGhlIGdpdmVuIHJldHVybiBhZGRy ZXNzLsKgwqAqLw0KPiAtwqDCoMKgwqByZXRhZGRyIC09IEdFVFBDX0FESjsNCj4gLQ0KPiDC oMKgwqDCoMKgaWYgKGFfYml0cyA+IDAgJiYgKGFkZHIgJiAoKDEgPDwgYV9iaXRzKSAtIDEp KSAhPSAwKSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoGNwdV91bmFsaWduZWRfYWNjZXNzKEVO Vl9HRVRfQ1BVKGVudiksIGFkZHIsDQo+IFJFQURfQUNDRVNTX1RZUEUsDQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1t dV9pZHgsIHJldGFkZHIpOw0KPiBAQCAtMjY3LDEwICsyNTksOCBAQCBXT1JEX1RZUEUgaGVs cGVyX2JlX2xkX25hbWUoQ1BVQXJjaFN0YXRlICplbnYsDQo+IHRhcmdldF91bG9uZyBhZGRy LA0KPiDCoMKgwqDCoMKgZG9fdW5hbGlnbmVkX2FjY2VzczoNCj4gwqDCoMKgwqDCoMKgwqDC oMKgYWRkcjEgPSBhZGRyICYgfihEQVRBX1NJWkUgLSAxKTsNCj4gwqDCoMKgwqDCoMKgwqDC oMKgYWRkcjIgPSBhZGRyMSArIERBVEFfU0laRTsNCj4gLcKgwqDCoMKgwqDCoMKgwqAvKiBO b3RlIHRoZSBhZGp1c3RtZW50IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uLg0K PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFVuZG8gdGhhdCBmb3IgdGhlIHJlY3Vyc2lvbi7C oMKgKi8NCj4gLcKgwqDCoMKgwqDCoMKgwqByZXMxID0gaGVscGVyX2JlX2xkX25hbWUoZW52 LCBhZGRyMSwgb2ksIHJldGFkZHIgKw0KPiBHRVRQQ19BREopOw0KPiAtwqDCoMKgwqDCoMKg wqDCoHJlczIgPSBoZWxwZXJfYmVfbGRfbmFtZShlbnYsIGFkZHIyLCBvaSwgcmV0YWRkciAr DQo+IEdFVFBDX0FESik7DQo+ICvCoMKgwqDCoMKgwqDCoMKgcmVzMSA9IGhlbHBlcl9iZV9s ZF9uYW1lKGVudiwgYWRkcjEsIG9pLCByZXRhZGRyKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqBy ZXMyID0gaGVscGVyX2JlX2xkX25hbWUoZW52LCBhZGRyMiwgb2ksIHJldGFkZHIpOw0KPiDC oMKgwqDCoMKgwqDCoMKgwqBzaGlmdCA9IChhZGRyICYgKERBVEFfU0laRSAtIDEpKSAqIDg7 DQo+IMKgDQo+IMKgwqDCoMKgwqDCoMKgwqDCoC8qIEJpZy1lbmRpYW4gY29tYmluZS7CoMKg Ki8NCj4gQEAgLTMzNCw5ICszMjQsNiBAQCB2b2lkIGhlbHBlcl9sZV9zdF9uYW1lKENQVUFy Y2hTdGF0ZSAqZW52LA0KPiB0YXJnZXRfdWxvbmcgYWRkciwgREFUQV9UWVBFIHZhbCwNCj4g wqDCoMKgwqDCoGludCBhX2JpdHMgPSBnZXRfYWxpZ25tZW50X2JpdHMoZ2V0X21lbW9wKG9p KSk7DQo+IMKgwqDCoMKgwqB1aW50cHRyX3QgaGFkZHI7DQo+IMKgDQo+IC3CoMKgwqDCoC8q IEFkanVzdCB0aGUgZ2l2ZW4gcmV0dXJuIGFkZHJlc3MuwqDCoCovDQo+IC3CoMKgwqDCoHJl dGFkZHIgLT0gR0VUUENfQURKOw0KPiAtDQo+IMKgwqDCoMKgwqBpZiAoYV9iaXRzID4gMCAm JiAoYWRkciAmICgoMSA8PCBhX2JpdHMpIC0gMSkpICE9IDApIHsNCj4gwqDCoMKgwqDCoMKg wqDCoMKgY3B1X3VuYWxpZ25lZF9hY2Nlc3MoRU5WX0dFVF9DUFUoZW52KSwgYWRkciwgTU1V X0RBVEFfU1RPUkUsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1tdV9pZHgsIHJldGFkZHIpOw0KPiBAQCAtMzkxLDEw ICszNzgsOCBAQCB2b2lkIGhlbHBlcl9sZV9zdF9uYW1lKENQVUFyY2hTdGF0ZSAqZW52LA0K PiB0YXJnZXRfdWxvbmcgYWRkciwgREFUQV9UWVBFIHZhbCwNCj4gwqDCoMKgwqDCoMKgwqDC oMKgZm9yIChpID0gMDsgaSA8IERBVEFfU0laRTsgKytpKSB7DQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgLyogTGl0dGxlLWVuZGlhbiBleHRyYWN0LsKgwqAqLw0KPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQ4X3QgdmFsOCA9IHZhbCA+PiAoaSAqIDgpOw0KPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogTm90ZSB0aGUgYWRqdXN0bWVudCBhdCB0aGUg YmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbi4NCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoFVuZG8gdGhhdCBmb3IgdGhlIHJlY3Vyc2lvbi7CoMKgKi8NCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBnbHVlKGhlbHBlcl9yZXRfc3RiLCBNTVVTVUZGSVgpKGVudiwg YWRkciArIGksIHZhbDgsDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg b2ksIHJldGFkZHIgKw0KPiBHRVRQQ19BREopOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoG9pLCByZXRhZGRyKTsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPiDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm47DQo+IMKgwqDCoMKgwqB9DQo+IEBAIC00MTcsOSAr NDAyLDYgQEAgdm9pZCBoZWxwZXJfYmVfc3RfbmFtZShDUFVBcmNoU3RhdGUgKmVudiwNCj4g dGFyZ2V0X3Vsb25nIGFkZHIsIERBVEFfVFlQRSB2YWwsDQo+IMKgwqDCoMKgwqBpbnQgYV9i aXRzID0gZ2V0X2FsaWdubWVudF9iaXRzKGdldF9tZW1vcChvaSkpOw0KPiDCoMKgwqDCoMKg dWludHB0cl90IGhhZGRyOw0KPiDCoA0KPiAtwqDCoMKgwqAvKiBBZGp1c3QgdGhlIGdpdmVu IHJldHVybiBhZGRyZXNzLsKgwqAqLw0KPiAtwqDCoMKgwqByZXRhZGRyIC09IEdFVFBDX0FE SjsNCj4gLQ0KPiDCoMKgwqDCoMKgaWYgKGFfYml0cyA+IDAgJiYgKGFkZHIgJiAoKDEgPDwg YV9iaXRzKSAtIDEpKSAhPSAwKSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoGNwdV91bmFsaWdu ZWRfYWNjZXNzKEVOVl9HRVRfQ1BVKGVudiksIGFkZHIsIE1NVV9EQVRBX1NUT1JFLA0KPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBtbXVfaWR4LCByZXRhZGRyKTsNCj4gQEAgLTQ3NCwxMCArNDU2LDggQEAgdm9pZCBo ZWxwZXJfYmVfc3RfbmFtZShDUFVBcmNoU3RhdGUgKmVudiwNCj4gdGFyZ2V0X3Vsb25nIGFk ZHIsIERBVEFfVFlQRSB2YWwsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkg PCBEQVRBX1NJWkU7ICsraSkgew0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIEJp Zy1lbmRpYW4gZXh0cmFjdC7CoMKgKi8NCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1 aW50OF90IHZhbDggPSB2YWwgPj4gKCgoREFUQV9TSVpFIC0gMSkgKiA4KSAtIChpICogOCkp Ow0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogTm90ZSB0aGUgYWRqdXN0bWVudCBh dCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbi4NCj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoFVuZG8gdGhhdCBmb3IgdGhlIHJlY3Vyc2lvbi7CoMKgKi8NCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnbHVlKGhlbHBlcl9yZXRfc3RiLCBNTVVTVUZGSVgp KGVudiwgYWRkciArIGksIHZhbDgsDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgb2ksIHJldGFkZHIgKw0KPiBHRVRQQ19BREopOw0KPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG9pLCByZXRhZGRyKTsNCj4gwqDCoMKgwqDCoMKgwqDCoMKg fQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47DQo+IMKgwqDCoMKgwqB9DQo+IGRpZmYg LS1naXQgYS90YXJnZXQtYXJtL2hlbHBlci5jIGIvdGFyZ2V0LWFybS9oZWxwZXIuYw0KPiBp bmRleCBiZGI4NDJjLi45MTVmZTBmIDEwMDY0NA0KPiAtLS0gYS90YXJnZXQtYXJtL2hlbHBl ci5jDQo+ICsrKyBiL3RhcmdldC1hcm0vaGVscGVyLmMNCj4gQEAgLTgzMTAsMTIgKzgzMTAs MTIgQEAgdm9pZCBIRUxQRVIoZGNfenZhKShDUFVBUk1TdGF0ZSAqZW52LA0KPiB1aW50NjRf dCB2YWRkcl9pbikNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCogdGhpcyBwdXJw b3NlIHVzZSB0aGUgYWN0dWFsIHJlZ2lzdGVyIHZhbHVlIHBhc3NlZCB0bw0KPiB1cw0KPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKiBzbyB0aGF0IHdlIGdldCB0aGUgZmF1bHQg YWRkcmVzcyByaWdodC4NCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCovDQo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoZWxwZXJfcmV0X3N0Yl9tbXUoZW52LCB2YWRkcl9p biwgMCwgb2ksIEdFVFJBKCkpOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGVscGVy X3JldF9zdGJfbW11KGVudiwgdmFkZHJfaW4sIDAsIG9pLCBHRVRQQygpKTsNCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBOb3cgd2UgY2FuIHBvcHVsYXRlIHRoZSBvdGhlciBU TEIgZW50cmllcywgaWYgYW55ICovDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9y IChpID0gMDsgaSA8IG1heGlkeDsgaSsrKSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB1aW50NjRfdCB2YSA9IHZhZGRyICsgVEFSR0VUX1BBR0VfU0laRSAqIGk7 DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodmEgIT0gKHZhZGRy X2luICYgVEFSR0VUX1BBR0VfTUFTSykpIHsNCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBoZWxwZXJfcmV0X3N0Yl9tbXUoZW52LCB2YSwgMCwgb2ksIEdF VFJBKCkpOw0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhl bHBlcl9yZXRfc3RiX21tdShlbnYsIHZhLCAwLCBvaSwgR0VUUEMoKSk7DQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+IEBAIC04MzMyLDcgKzgzMzIsNyBAQCB2 b2lkIEhFTFBFUihkY196dmEpKENQVUFSTVN0YXRlICplbnYsIHVpbnQ2NF90DQo+IHZhZGRy X2luKQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoCrCoMKgwqDCoGJvdW5jZSBidWZmZXIgd2Fz IGluIHVzZQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoCovDQo+IMKgwqDCoMKgwqDCoMKgwqDC oGZvciAoaSA9IDA7IGkgPCBibG9ja2xlbjsgaSsrKSB7DQo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBoZWxwZXJfcmV0X3N0Yl9tbXUoZW52LCB2YWRkciArIGksIDAsIG9pLCBHRVRS QSgpKTsNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhlbHBlcl9yZXRfc3RiX21tdShl bnYsIHZhZGRyICsgaSwgMCwgb2ksIEdFVFBDKCkpOw0KPiDCoMKgwqDCoMKgwqDCoMKgwqB9 DQo+IMKgwqDCoMKgwqB9DQo+IMKgI2Vsc2UNCj4gZGlmZiAtLWdpdCBhL3RhcmdldC1taXBz L29wX2hlbHBlci5jIGIvdGFyZ2V0LW1pcHMvb3BfaGVscGVyLmMNCj4gaW5kZXggZWEyZjJh Yi4uN2FmNGMyZiAxMDA2NDQNCj4gLS0tIGEvdGFyZ2V0LW1pcHMvb3BfaGVscGVyLmMNCj4g KysrIGIvdGFyZ2V0LW1pcHMvb3BfaGVscGVyLmMNCj4gQEAgLTQxMjIsMTAgKzQxMjIsMTAg QEAgdm9pZCBoZWxwZXJfbXNhX2xkXyAjIyBUWVBFKENQVU1JUFNTdGF0ZQ0KPiAqZW52LCB1 aW50MzJfdCB3ZCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFwNCj4gwqB9DQo+IMKgDQo+ IMKgI2lmICFkZWZpbmVkKENPTkZJR19VU0VSX09OTFkpDQo+IC1NU0FfTERfREYoREZfQllU RSzCoMKgwqBiLCBoZWxwZXJfcmV0X2xkdWJfbW11LCBvaSwgR0VUUkEoKSkNCj4gLU1TQV9M RF9ERihERl9IQUxGLMKgwqDCoGgsIGhlbHBlcl9yZXRfbGR1d19tbXUsIG9pLCBHRVRSQSgp KQ0KPiAtTVNBX0xEX0RGKERGX1dPUkQswqDCoMKgdywgaGVscGVyX3JldF9sZHVsX21tdSwg b2ksIEdFVFJBKCkpDQo+IC1NU0FfTERfREYoREZfRE9VQkxFLCBkLCBoZWxwZXJfcmV0X2xk cV9tbXUswqDCoG9pLCBHRVRSQSgpKQ0KPiArTVNBX0xEX0RGKERGX0JZVEUswqDCoMKgYiwg aGVscGVyX3JldF9sZHViX21tdSwgb2ksIEdFVFBDKCkpDQo+ICtNU0FfTERfREYoREZfSEFM RizCoMKgwqBoLCBoZWxwZXJfcmV0X2xkdXdfbW11LCBvaSwgR0VUUEMoKSkNCj4gK01TQV9M RF9ERihERl9XT1JELMKgwqDCoHcsIGhlbHBlcl9yZXRfbGR1bF9tbXUsIG9pLCBHRVRQQygp KQ0KPiArTVNBX0xEX0RGKERGX0RPVUJMRSwgZCwgaGVscGVyX3JldF9sZHFfbW11LMKgwqBv aSwgR0VUUEMoKSkNCj4gwqAjZWxzZQ0KPiDCoE1TQV9MRF9ERihERl9CWVRFLMKgwqDCoGIs IGNwdV9sZHViX2RhdGEpDQo+IMKgTVNBX0xEX0RGKERGX0hBTEYswqDCoMKgaCwgY3B1X2xk dXdfZGF0YSkNCj4gQEAgLTQxNjEsMTcgKzQxNjEsMTcgQEAgdm9pZCBoZWxwZXJfbXNhX3N0 XyAjIyBUWVBFKENQVU1JUFNTdGF0ZQ0KPiAqZW52LCB1aW50MzJfdCB3ZCzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoFwNCj4gwqDCoMKgwqDCoGludCBtbXVfaWR4ID0gY3B1X21tdV9p bmRleChlbnYsIGZhbHNlKTsJCQkJDQo+IFwNCj4gwqDCoMKgwqDCoGludA0KPiBpO8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBcDQo+IMKgwqDCoMKgwqBNRU1PUF9JRFgoREYpwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgDQo+IMKgwqDCoMKgXA0KPiAtwqDC oMKgwqBlbnN1cmVfd3JpdGFibGVfcGFnZXMoZW52LCBhZGRyLCBtbXVfaWR4LA0KPiBHRVRS QSgpKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgXA0KPiArwqDCoMKgwqBl bnN1cmVfd3JpdGFibGVfcGFnZXMoZW52LCBhZGRyLCBtbXVfaWR4LA0KPiBHRVRQQygpKTvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgXA0KPiDCoMKgwqDCoMKgZm9yIChp ID0gMDsgaSA8IERGX0VMRU1FTlRTKERGKTsgaSsrKQ0KPiB7wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFwNCj4gwqDCoMKgwqDC oMKgwqDCoMKgU1RfSU5TTihlbnYsIGFkZHIgKyAoaSA8PCBERiksIHB3ZC0+VFlQRVtpXSwN Cj4gIyNfX1ZBX0FSR1NfXyk7wqDCoMKgwqBcDQo+IMKgwqDCoMKgwqB9wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgDQo+IMKgwqDCoMKgXA0KPiDCoH0NCj4gwqANCj4gwqAjaWYgIWRlZmluZWQoQ09O RklHX1VTRVJfT05MWSkNCj4gLU1TQV9TVF9ERihERl9CWVRFLMKgwqDCoGIsIGhlbHBlcl9y ZXRfc3RiX21tdSwgb2ksIEdFVFJBKCkpDQo+IC1NU0FfU1RfREYoREZfSEFMRizCoMKgwqBo LCBoZWxwZXJfcmV0X3N0d19tbXUsIG9pLCBHRVRSQSgpKQ0KPiAtTVNBX1NUX0RGKERGX1dP UkQswqDCoMKgdywgaGVscGVyX3JldF9zdGxfbW11LCBvaSwgR0VUUkEoKSkNCj4gLU1TQV9T VF9ERihERl9ET1VCTEUsIGQsIGhlbHBlcl9yZXRfc3RxX21tdSwgb2ksIEdFVFJBKCkpDQo+ ICtNU0FfU1RfREYoREZfQllURSzCoMKgwqBiLCBoZWxwZXJfcmV0X3N0Yl9tbXUsIG9pLCBH RVRQQygpKQ0KPiArTVNBX1NUX0RGKERGX0hBTEYswqDCoMKgaCwgaGVscGVyX3JldF9zdHdf bW11LCBvaSwgR0VUUEMoKSkNCj4gK01TQV9TVF9ERihERl9XT1JELMKgwqDCoHcsIGhlbHBl cl9yZXRfc3RsX21tdSwgb2ksIEdFVFBDKCkpDQo+ICtNU0FfU1RfREYoREZfRE9VQkxFLCBk LCBoZWxwZXJfcmV0X3N0cV9tbXUsIG9pLCBHRVRQQygpKQ0KPiDCoCNlbHNlDQo+IMKgTVNB X1NUX0RGKERGX0JZVEUswqDCoMKgYiwgY3B1X3N0Yl9kYXRhKQ0KPiDCoE1TQV9TVF9ERihE Rl9IQUxGLMKgwqDCoGgsIGNwdV9zdHdfZGF0YSkNCj4gZGlmZiAtLWdpdCBhL3RyYW5zbGF0 ZS1hbGwuYyBiL3RyYW5zbGF0ZS1hbGwuYw0KPiBpbmRleCAwZDQ3YzFjLi42NDRkMDgxIDEw MDY0NA0KPiAtLS0gYS90cmFuc2xhdGUtYWxsLmMNCj4gKysrIGIvdHJhbnNsYXRlLWFsbC5j DQo+IEBAIC0yOTksNiArMjk5LDcgQEAgYm9vbCBjcHVfcmVzdG9yZV9zdGF0ZShDUFVTdGF0 ZSAqY3B1LCB1aW50cHRyX3QNCj4gcmV0YWRkcikNCj4gwqB7DQo+IMKgwqDCoMKgwqBUcmFu c2xhdGlvbkJsb2NrICp0YjsNCj4gwqANCj4gK8KgwqDCoMKgcmV0YWRkciAtPSBHRVRQQ19B REo7DQo+IMKgwqDCoMKgwqB0YiA9IHRiX2ZpbmRfcGMocmV0YWRkcik7DQo+IMKgwqDCoMKg wqBpZiAodGIpIHsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgY3B1X3Jlc3RvcmVfc3RhdGVfZnJv bV90YihjcHUsIHRiLCByZXRhZGRyKTsNCg==