From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:58195) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SmIeF-0008Bt-O7 for qemu-devel@nongnu.org; Wed, 04 Jul 2012 02:01:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SmIeC-0003qa-VY for qemu-devel@nongnu.org; Wed, 04 Jul 2012 02:01:11 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:49035) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SmIeC-0003qD-5B for qemu-devel@nongnu.org; Wed, 04 Jul 2012 02:01:08 -0400 Received: from epcpsbge1.samsung.com (mailout3.samsung.com [203.254.224.33]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0M6M00506GOUJP40@mailout3.samsung.com> for qemu-devel@nongnu.org; Wed, 04 Jul 2012 15:01:06 +0900 (KST) Date: Wed, 04 Jul 2012 06:01:06 +0000 (GMT) From: YeongKyoon Lee MIME-version: 1.0 Content-transfer-encoding: base64 Content-type: text/plain; charset=euc-kr MIME-version: 1.0 Message-id: <25206019.11171341381666158.JavaMail.weblogic@epml28> Subject: [Qemu-devel] [RFC][PATCH 3/4] tcg: add optimized TCG qemu_ld/st generation Reply-To: yeongkyoon.lee@samsung.com List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel Cc: Blue Swirl , Evgeny Voevodin , Wei-Ren Chen QWRkIG9wdGltaXplZCBUQ0cgcWVtdV9sZC9zdCBnZW5lcmF0aW9uIHdoaWNoIGdlbmVyYXRlcyB0 aGUgY29kZSBmb3IgVExCIG1pc3MgY2FzZSBoYW5kbGluZyBhdCB0aGUgZW5kIG9mIFRCIGFmdGVy IGdlbmVyYXRpbmcgb3RoZXIgSVJzLg0KDQpTaWduZWQtb2ZmLWJ5OiBZZW9uZ2t5b29uIExlZSAN Ci0tLQ0KdGNnL2kzODYvdGNnLXRhcmdldC5jIHwgIDMyOCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQp0Y2cvdGNnLmMgICAgICAgICAgICAgfCAgIDEy ICsrDQp0Y2cvdGNnLmggICAgICAgICAgICAgfCAgIDM1ICsrKysrDQozIGZpbGVzIGNoYW5nZWQs IDM3NSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQ0KZGlmZiAtLWdpdCBhL3RjZy9pMzg2 L3RjZy10YXJnZXQuYyBiL3RjZy9pMzg2L3RjZy10YXJnZXQuYw0KaW5kZXggZGExN2JiYS4uM2Yy ZjY0MCAxMDA2NDQNCi0tLSBhL3RjZy9pMzg2L3RjZy10YXJnZXQuYw0KKysrIGIvdGNnL2kzODYv dGNnLXRhcmdldC5jDQpAQCAtOTg0LDYgKzk4NCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpxZW11 X3N0X2hlbHBlcnNbNF0gPSB7DQogICAgIGhlbHBlcl9zdHFfbW11LA0KfTsNCiNlbHNlDQorDQor I2lmbmRlZiBDT05GSUdfUUVNVV9MRFNUX09QVElNSVpBVElPTg0KLyogbGVnYWN5IGhlbHBlciBz aWduYXR1cmU6IF9fbGRfbW11KHRhcmdldF91bG9uZyBhZGRyLCBpbnQNCiAgICBtbXVfaWR4KSAq Lw0Kc3RhdGljIHZvaWQgKnFlbXVfbGRfaGVscGVyc1s0XSA9IHsNCkBAIC0xMDAxLDYgKzEwMDMs MzUgQEAgc3RhdGljIHZvaWQgKnFlbXVfc3RfaGVscGVyc1s0XSA9IHsNCiAgICAgX19zdGxfbW11 LA0KICAgICBfX3N0cV9tbXUsDQp9Ow0KKyNlbHNlDQorLyogZXh0ZW5kZWQgbGVnYWN5IGhlbHBl ciBzaWduYXR1cmU6IF9fZXh0X2xkX21tdSh0YXJnZXRfdWxvbmcgYWRkciwgaW50DQorICAgbW11 X2lkeCwgdWludHB0ciByYWRkcikgKi8NCitzdGF0aWMgdm9pZCAqcWVtdV9sZF9oZWxwZXJzWzRd ID0gew0KKyAgICBfX2V4dF9sZGJfbW11LA0KKyAgICBfX2V4dF9sZHdfbW11LA0KKyAgICBfX2V4 dF9sZGxfbW11LA0KKyAgICBfX2V4dF9sZHFfbW11LA0KK307DQorDQorLyogZXh0ZW5kZWQgbGVn YWN5IGhlbHBlciBzaWduYXR1cmU6IF9fZXh0X3N0X21tdSh0YXJnZXRfdWxvbmcgYWRkciwgdWlu dHh4X3QgdmFsLA0KKyAgIGludCBtbXVfaWR4KSAqLw0KK3N0YXRpYyB2b2lkICpxZW11X3N0X2hl bHBlcnNbNF0gPSB7DQorICAgIF9fZXh0X3N0Yl9tbXUsDQorICAgIF9fZXh0X3N0d19tbXUsDQor ICAgIF9fZXh0X3N0bF9tbXUsDQorICAgIF9fZXh0X3N0cV9tbXUsDQorfTsNCisNCitzdGF0aWMg dm9pZCBhZGRfcWVtdV9sZHN0X2xhYmVsKFRDR0NvbnRleHQgKnMsDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgb3BjX2V4dCwNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBkYXRhX3JlZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBkYXRhX3JlZzIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWRkcmxv X3JlZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhZGRyaGlfcmVnLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1lbV9pbmRleCwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnJhZGRyLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDhfdCAqKmxhYmVsX3B0cik7DQorI2VuZGlmICAvKiAhQ09O RklHX1FFTVVfTERTVF9PUFRJTUlaQVRJT04gKi8NCiNlbmRpZg0KDQovKiBQZXJmb3JtIHRoZSBU TEIgbG9hZCBhbmQgY29tcGFyZS4NCkBAIC0xMDYxLDE5ICsxMDkyLDM2IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCB0Y2dfb3V0X3RsYl9sb2FkKFRDR0NvbnRleHQgKnMsIGludCBhZGRybG9faWR4LA0K DQogICAgIHRjZ19vdXRfbW92KHMsIHR5cGUsIHIwLCBhZGRybG8pOw0KDQorI2lmZGVmIENPTkZJ R19RRU1VX0xEU1RfT1BUSU1JWkFUSU9ODQorICAgIC8qIGpuZSBzbG93X3BhdGggKi8NCisgICAg dGNnX291dF9vcGMocywgT1BDX0pDQ19sb25nICsgSkNDX0pORSwgMCwgMCwgMCk7DQorICAgIGlm ICghbGFiZWxfcHRyKSB7DQorICAgICAgICB0Y2dfYWJvcnQoKTsNCisgICAgfQ0KKyAgICBsYWJl bF9wdHJbMF0gPSBzLT5jb2RlX3B0cjsNCisgICAgcy0+Y29kZV9wdHIgKz0gNDsNCisjZWxzZQ0K ICAgICAvKiBqbmUgbGFiZWwxICovDQogICAgIHRjZ19vdXQ4KHMsIE9QQ19KQ0Nfc2hvcnQgKyBK Q0NfSk5FKTsNCiAgICAgbGFiZWxfcHRyWzBdID0gcy0+Y29kZV9wdHI7DQogICAgIHMtPmNvZGVf cHRyKys7DQorI2VuZGlmDQoNCiAgICAgaWYgKFRBUkdFVF9MT05HX0JJVFMgPiBUQ0dfVEFSR0VU X1JFR19CSVRTKSB7DQogICAgICAgICAvKiBjbXAgNChyMSksIGFkZHJoaSAqLw0KICAgICAgICAg dGNnX291dF9tb2RybV9vZmZzZXQocywgT1BDX0NNUF9HdkV2LCBhcmdzW2FkZHJsb19pZHgrMV0s IHIxLCA0KTsNCg0KKyNpZmRlZiBDT05GSUdfUUVNVV9MRFNUX09QVElNSVpBVElPTg0KKyAgICAg ICAgLyogam5lIHNsb3dfcGF0aCAqLw0KKyAgICAgICAgdGNnX291dF9vcGMocywgT1BDX0pDQ19s b25nICsgSkNDX0pORSwgMCwgMCwgMCk7DQorICAgICAgICBsYWJlbF9wdHJbMV0gPSBzLT5jb2Rl X3B0cjsNCisgICAgICAgIHMtPmNvZGVfcHRyICs9IDQ7DQorI2Vsc2UNCiAgICAgICAgIC8qIGpu ZSBsYWJlbDEgKi8NCiAgICAgICAgIHRjZ19vdXQ4KHMsIE9QQ19KQ0Nfc2hvcnQgKyBKQ0NfSk5F KTsNCiAgICAgICAgIGxhYmVsX3B0clsxXSA9IHMtPmNvZGVfcHRyOw0KICAgICAgICAgcy0+Y29k ZV9wdHIrKzsNCisjZW5kaWYNCiAgICAgfQ0KDQogICAgIC8qIFRMQiBIaXQuICAqLw0KQEAgLTEx NzEsMTEgKzEyMTksMTMgQEAgc3RhdGljIHZvaWQgdGNnX291dF9xZW11X2xkKFRDR0NvbnRleHQg KnMsIGNvbnN0IFRDR0FyZyAqYXJncywNCiAgICAgaW50IGFkZHJsb19pZHg7DQojaWYgZGVmaW5l ZChDT05GSUdfU09GVE1NVSkNCiAgICAgaW50IG1lbV9pbmRleCwgc19iaXRzOw0KKyNpZiAhZGVm aW5lZChDT05GSUdfUUVNVV9MRFNUX09QVElNSVpBVElPTikNCiNpZiBUQ0dfVEFSR0VUX1JFR19C SVRTID09IDY0DQogICAgIGludCBhcmdfaWR4Ow0KI2Vsc2UNCiAgICAgaW50IHN0YWNrX2FkanVz dDsNCiNlbmRpZg0KKyNlbmRpZiAgLyogIUNPTkZJR19RRU1VX0xEU1RfT1BUSU1JWkFUSU9OICov DQogICAgIHVpbnQ4X3QgKmxhYmVsX3B0clszXTsNCiNlbmRpZg0KDQpAQCAtMTE5Nyw2ICsxMjQ3 LDE4IEBAIHN0YXRpYyB2b2lkIHRjZ19vdXRfcWVtdV9sZChUQ0dDb250ZXh0ICpzLCBjb25zdCBU Q0dBcmcgKmFyZ3MsDQogICAgIHRjZ19vdXRfcWVtdV9sZF9kaXJlY3QocywgZGF0YV9yZWcsIGRh dGFfcmVnMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfdGFyZ2V0X2NhbGxfaWFy Z19yZWdzWzBdLCAwLCBvcGMpOw0KDQorI2lmIGRlZmluZWQoQ09ORklHX1FFTVVfTERTVF9PUFRJ TUlaQVRJT04pDQorICAgIC8qIGhlbHBlciBzdHViIHdpbGwgYmUganVtcGVkIGJhY2sgaGVyZSAq Lw0KKyAgICBhZGRfcWVtdV9sZHN0X2xhYmVsKHMsDQorICAgICAgICAgICAgICAgICAgICAgICAg b3BjLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfcmVnLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGFfcmVnMiwNCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzW2FkZHJs b19pZHhdLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbYWRkcmxvX2lkeCArIDFdLA0K KyAgICAgICAgICAgICAgICAgICAgICAgIG1lbV9pbmRleCwNCisgICAgICAgICAgICAgICAgICAg ICAgICBzLT5jb2RlX3B0ciwNCisgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbF9wdHIpOw0K KyNlbHNlDQogICAgIC8qIGptcCBsYWJlbDIgKi8NCiAgICAgdGNnX291dDgocywgT1BDX0pNUF9z aG9ydCk7DQogICAgIGxhYmVsX3B0clsyXSA9IHMtPmNvZGVfcHRyOw0KQEAgLTEyOTIsNiArMTM1 NCw3IEBAIHN0YXRpYyB2b2lkIHRjZ19vdXRfcWVtdV9sZChUQ0dDb250ZXh0ICpzLCBjb25zdCBU Q0dBcmcgKmFyZ3MsDQoNCiAgICAgLyogbGFiZWwyOiAqLw0KICAgICAqbGFiZWxfcHRyWzJdID0g cy0+Y29kZV9wdHIgLSBsYWJlbF9wdHJbMl0gLSAxOw0KKyNlbmRpZiAgLyogQ09ORklHX1FFTVVf TERTVF9PUFRJTUlaQVRJT04gKi8NCiNlbHNlDQogICAgIHsNCiAgICAgICAgIGludDMyX3Qgb2Zm c2V0ID0gR1VFU1RfQkFTRTsNCkBAIC0xMzg1LDcgKzE0NDgsOSBAQCBzdGF0aWMgdm9pZCB0Y2df b3V0X3FlbXVfc3QoVENHQ29udGV4dCAqcywgY29uc3QgVENHQXJnICphcmdzLA0KICAgICBpbnQg YWRkcmxvX2lkeDsNCiNpZiBkZWZpbmVkKENPTkZJR19TT0ZUTU1VKQ0KICAgICBpbnQgbWVtX2lu ZGV4LCBzX2JpdHM7DQorI2lmICFkZWZpbmVkKENPTkZJR19RRU1VX0xEU1RfT1BUSU1JWkFUSU9O KQ0KICAgICBpbnQgc3RhY2tfYWRqdXN0Ow0KKyNlbmRpZg0KICAgICB1aW50OF90ICpsYWJlbF9w dHJbM107DQojZW5kaWYNCg0KQEAgLTE0MDcsNiArMTQ3MiwxOCBAQCBzdGF0aWMgdm9pZCB0Y2df b3V0X3FlbXVfc3QoVENHQ29udGV4dCAqcywgY29uc3QgVENHQXJnICphcmdzLA0KICAgICB0Y2df b3V0X3FlbXVfc3RfZGlyZWN0KHMsIGRhdGFfcmVnLCBkYXRhX3JlZzIsDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGNnX3RhcmdldF9jYWxsX2lhcmdfcmVnc1swXSwgMCwgb3BjKTsNCg0K KyNpZiBkZWZpbmVkKENPTkZJR19RRU1VX0xEU1RfT1BUSU1JWkFUSU9OKQ0KKyAgICAvKiBoZWxw ZXIgc3R1YiB3aWxsIGJlIGp1bXBlZCBiYWNrIGhlcmUgKi8NCisgICAgYWRkX3FlbXVfbGRzdF9s YWJlbChzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wYyB8IEhMX1NUX01BU0ssDQorICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YV9yZWcsDQorICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YV9yZWcyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbYWRkcmxvX2lkeF0sDQor ICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1thZGRybG9faWR4ICsgMV0sDQorICAgICAgICAg ICAgICAgICAgICAgICAgbWVtX2luZGV4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNv ZGVfcHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsX3B0cik7DQorI2Vsc2UNCiAg ICAgLyogam1wIGxhYmVsMiAqLw0KICAgICB0Y2dfb3V0OChzLCBPUENfSk1QX3Nob3J0KTsNCiAg ICAgbGFiZWxfcHRyWzJdID0gcy0+Y29kZV9wdHI7DQpAQCAtMTQ2OSw2ICsxNTQ2LDcgQEAgc3Rh dGljIHZvaWQgdGNnX291dF9xZW11X3N0KFRDR0NvbnRleHQgKnMsIGNvbnN0IFRDR0FyZyAqYXJn cywNCg0KICAgICAvKiBsYWJlbDI6ICovDQogICAgICpsYWJlbF9wdHJbMl0gPSBzLT5jb2RlX3B0 ciAtIGxhYmVsX3B0clsyXSAtIDE7DQorI2VuZGlmICAvKiBDT05GSUdfUUVNVV9MRFNUX09QVElN SVpBVElPTiAqLw0KI2Vsc2UNCiAgICAgew0KICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBHVUVT VF9CQVNFOw0KQEAgLTE0OTYsNiArMTU3NCwyNTYgQEAgc3RhdGljIHZvaWQgdGNnX291dF9xZW11 X3N0KFRDR0NvbnRleHQgKnMsIGNvbnN0IFRDR0FyZyAqYXJncywNCiNlbmRpZg0KfQ0KDQorI2lm IGRlZmluZWQoQ09ORklHX1FFTVVfTERTVF9PUFRJTUlaQVRJT04pDQorLyogb3B0aW1pemF0aW9u IHRvIHJlZHVjZSBqdW1wIG92ZXJoZWFkcyBmb3IgcWVtdV9sZC9zdCBJUnMgKi8NCisNCisvKg0K KyAqIHFlbXVfbGQvc3QgY29kZSBnZW5lcmF0b3IgY2FsbCBhZGRfcWVtdV9sZHN0X2xhYmVsLA0K KyAqIHNvIHRoYXQgc2xvdyBjYXNlKFRMQiBtaXNzIG9yIEkvTyBydykgaXMgaGFuZGxlZCBhdCB0 aGUgZW5kIG9mIFRCDQorICovDQorc3RhdGljIHZvaWQgYWRkX3FlbXVfbGRzdF9sYWJlbChUQ0dD b250ZXh0ICpzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wY19leHQs DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGF0YV9yZWcsDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGF0YV9yZWcyLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGFkZHJsb19yZWcsDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgYWRkcmhpX3JlZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBtZW1faW5kZXgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 OF90ICpyYWRkciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKips YWJlbF9wdHIpDQorew0KKyAgICBpbnQgaWR4Ow0KKyAgICBUQ0dMYWJlbFFlbXVMZHN0ICpsYWJl bDsNCisNCisgICAgaWYgKHMtPm5iX3FlbXVfbGRzdF9sYWJlbHMgPj0gVENHX01BWF9RRU1VX0xE U1QpDQorICAgICAgICB0Y2dfYWJvcnQoKTsNCisNCisgICAgaWR4ID0gcy0+bmJfcWVtdV9sZHN0 X2xhYmVscysrOw0KKyAgICBsYWJlbCA9IChUQ0dMYWJlbFFlbXVMZHN0ICopJnMtPnFlbXVfbGRz dF9sYWJlbHNbaWR4XTsNCisgICAgbGFiZWwtPm9wY19leHQgPSBvcGNfZXh0Ow0KKyAgICBsYWJl bC0+ZGF0YWxvX3JlZyA9IGRhdGFfcmVnOw0KKyAgICBsYWJlbC0+ZGF0YWhpX3JlZyA9IGRhdGFf cmVnMjsNCisgICAgbGFiZWwtPmFkZHJsb19yZWcgPSBhZGRybG9fcmVnOw0KKyAgICBsYWJlbC0+ YWRkcmhpX3JlZyA9IGFkZHJoaV9yZWc7DQorICAgIGxhYmVsLT5tZW1faW5kZXggPSBtZW1faW5k ZXg7DQorICAgIGxhYmVsLT5yYWRkciA9IHJhZGRyOw0KKyAgICBpZiAoIWxhYmVsX3B0cikgew0K KyAgICAgICAgdGNnX2Fib3J0KCk7DQorICAgIH0NCisgICAgbGFiZWwtPmxhYmVsX3B0clswXSA9 IGxhYmVsX3B0clswXTsNCisgICAgbGFiZWwtPmxhYmVsX3B0clsxXSA9IGxhYmVsX3B0clsxXTsN Cit9DQorDQorLyogZ2VuZXJhdGVzIHNsb3cgY2FzZSBvZiBxZW11X2xkIGF0IHRoZSBlbmQgb2Yg VEIgKi8NCitzdGF0aWMgdm9pZCB0Y2dfb3V0X3FlbXVfbGRfc2xvd19wYXRoKFRDR0NvbnRleHQg KnMsIFRDR0xhYmVsUWVtdUxkc3QgKmxhYmVsKQ0KK3sNCisgICAgaW50IHNfYml0czsNCisgICAg aW50IG9wYyA9IGxhYmVsLT5vcGNfZXh0ICYgSExfT1BDX01BU0s7DQorICAgIGludCBtZW1faW5k ZXggPSBsYWJlbC0+bWVtX2luZGV4Ow0KKyNpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09IDY0DQor ICAgIGludCBhcmdfaWR4Ow0KKyNlbHNlDQorICAgIGludCBzdGFja19hZGp1c3Q7DQorICAgIGlu dCBhZGRybG9fcmVnID0gbGFiZWwtPmFkZHJsb19yZWc7DQorICAgIGludCBhZGRyaGlfcmVnID0g bGFiZWwtPmFkZHJoaV9yZWc7DQorI2VuZGlmDQorICAgIGludCBkYXRhX3JlZyA9IGxhYmVsLT5k YXRhbG9fcmVnOw0KKyAgICBpbnQgZGF0YV9yZWcyID0gbGFiZWwtPmRhdGFoaV9yZWc7DQorICAg IHVpbnQ4X3QgKnJhZGRyID0gbGFiZWwtPnJhZGRyOw0KKyAgICB1aW50OF90ICoqbGFiZWxfcHRy ID0gJmxhYmVsLT5sYWJlbF9wdHJbMF07DQorDQorICAgIHNfYml0cyA9IG9wYyAmIDM7DQorDQor ICAgIC8qIHJlc29sdmUgbGFiZWwgYWRkcmVzcyAqLw0KKyAgICAqKHVpbnQzMl90ICopbGFiZWxf cHRyWzBdID0gKHVpbnQzMl90KShzLT5jb2RlX3B0ciAtIGxhYmVsX3B0clswXSAtIDQpOw0KKyAg ICBpZiAoVEFSR0VUX0xPTkdfQklUUyA+IFRDR19UQVJHRVRfUkVHX0JJVFMpIHsNCisgICAgICAg ICoodWludDMyX3QgKilsYWJlbF9wdHJbMV0gPSAodWludDMyX3QpKHMtPmNvZGVfcHRyIC0gbGFi ZWxfcHRyWzFdIC0gNCk7DQorICAgIH0NCisNCisgICAgLyogZXh0ZW5kZWQgaGVscGVyIHNpZ25h dHVyZTogX19leHRfbGRfbW11KHRhcmdldF91bG9uZyBhZGRyLCBpbnQgbW11X2lkeCwNCisgICAg ICAgdWludHB0cl90IHJhZGRyKSAqLw0KKyNpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09IDMyDQor ICAgIHRjZ19vdXRfcHVzaGkocywgKHVpbnRwdHJfdCkocmFkZHIgLSAxKSk7IC8qIHJldHVybiBh ZGRyZXNzICovDQorICAgIHN0YWNrX2FkanVzdCA9IDQ7DQorICAgIHRjZ19vdXRfcHVzaGkocywg bWVtX2luZGV4KTsgICAgICAgIC8qIG1tdSBpbmRleCAqLw0KKyAgICBzdGFja19hZGp1c3QgKz0g NDsNCisgICAgaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQpIHsNCisgICAgICAgIHRjZ19vdXRf cHVzaChzLCBhZGRyaGlfcmVnKTsNCisgICAgICAgIHN0YWNrX2FkanVzdCArPSA0Ow0KKyAgICB9 DQorICAgIHRjZ19vdXRfcHVzaChzLCBhZGRybG9fcmVnKTsgLyogZ3Vlc3QgYWRkciAqLw0KKyAg ICBzdGFja19hZGp1c3QgKz0gNDsNCisjaWZkZWYgQ09ORklHX1RDR19QQVNTX0FSRUcwDQorICAg IHRjZ19vdXRfcHVzaChzLCBUQ0dfQVJFRzApOw0KKyAgICBzdGFja19hZGp1c3QgKz0gNDsNCisj ZW5kaWYNCisjZWxzZQ0KKyAgICAvKiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYWxyZWFkeSBsb2Fk ZWQgd2l0aCBhZGRybG8uICAqLw0KKyAgICBhcmdfaWR4ID0gMTsNCisgICAgdGNnX291dF9tb3Zp KHMsIFRDR19UWVBFX0kzMiwgdGNnX3RhcmdldF9jYWxsX2lhcmdfcmVnc1thcmdfaWR4KytdLA0K KyAgICAgICAgICAgICAgICAgbWVtX2luZGV4KTsNCisgICAgdGNnX291dF9tb3ZpKHMsIFRDR19U WVBFX0kzMiwgdGNnX3RhcmdldF9jYWxsX2lhcmdfcmVnc1thcmdfaWR4KytdLA0KKyAgICAgICAg ICAgICAgICAgKHVpbnRwdHJfdCkocmFkZHIgLSAxKSk7DQorI2lmZGVmIENPTkZJR19UQ0dfUEFT U19BUkVHMA0KKyAgICAvKiBYWFgvRklYTUU6IHN1Ym9wdGltYWwgKi8NCisgICAgdGNnX291dF9t b3YocywgVENHX1RZUEVfSTY0LCB0Y2dfdGFyZ2V0X2NhbGxfaWFyZ19yZWdzWzNdLA0KKyAgICAg ICAgICAgICAgICB0Y2dfdGFyZ2V0X2NhbGxfaWFyZ19yZWdzWzJdKTsNCisgICAgdGNnX291dF9t b3YocywgVENHX1RZUEVfSTY0LCB0Y2dfdGFyZ2V0X2NhbGxfaWFyZ19yZWdzWzJdLA0KKyAgICAg ICAgICAgICAgICB0Y2dfdGFyZ2V0X2NhbGxfaWFyZ19yZWdzWzFdKTsNCisgICAgdGNnX291dF9t b3YocywgVENHX1RZUEVfSTY0LCB0Y2dfdGFyZ2V0X2NhbGxfaWFyZ19yZWdzWzFdLA0KKyAgICAg ICAgICAgICAgICB0Y2dfdGFyZ2V0X2NhbGxfaWFyZ19yZWdzWzBdKTsNCisgICAgdGNnX291dF9t b3YocywgVENHX1RZUEVfSTY0LCB0Y2dfdGFyZ2V0X2NhbGxfaWFyZ19yZWdzWzBdLA0KKyAgICAg ICAgICAgICAgICBUQ0dfQVJFRzApOw0KKyNlbmRpZg0KKyNlbmRpZg0KKw0KKyAgICB0Y2dfb3V0 X2NhbGxpKHMsICh0Y2dfdGFyZ2V0X2xvbmcpcWVtdV9sZF9oZWxwZXJzW3NfYml0c10pOw0KKw0K KyNpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09IDMyDQorICAgIGlmIChzdGFja19hZGp1c3QgPT0g KFRDR19UQVJHRVRfUkVHX0JJVFMgLyA4KSkgew0KKyAgICAgICAgLyogUG9wIGFuZCBkaXNjYXJk LiAgVGhpcyBpcyAyIGJ5dGVzIHNtYWxsZXIgdGhhbiB0aGUgYWRkLiAgKi8NCisgICAgICAgIHRj Z19vdXRfcG9wKHMsIFRDR19SRUdfRUNYKTsNCisgICAgfSBlbHNlIGlmIChzdGFja19hZGp1c3Qg IT0gMCkgew0KKyAgICAgICAgdGNnX291dF9hZGRpKHMsIFRDR19SRUdfQ0FMTF9TVEFDSywgc3Rh Y2tfYWRqdXN0KTsNCisgICAgfQ0KKyNlbmRpZg0KKw0KKyAgICBzd2l0Y2gob3BjKSB7DQorICAg IGNhc2UgMCB8IDQ6DQorICAgICAgICB0Y2dfb3V0X2V4dDhzKHMsIGRhdGFfcmVnLCBUQ0dfUkVH X0VBWCwgUF9SRVhXKTsNCisgICAgICAgIGJyZWFrOw0KKyAgICBjYXNlIDEgfCA0Og0KKyAgICAg ICAgdGNnX291dF9leHQxNnMocywgZGF0YV9yZWcsIFRDR19SRUdfRUFYLCBQX1JFWFcpOw0KKyAg ICAgICAgYnJlYWs7DQorICAgIGNhc2UgMDoNCisgICAgICAgIHRjZ19vdXRfZXh0OHUocywgZGF0 YV9yZWcsIFRDR19SRUdfRUFYKTsNCisgICAgICAgIGJyZWFrOw0KKyAgICBjYXNlIDE6DQorICAg ICAgICB0Y2dfb3V0X2V4dDE2dShzLCBkYXRhX3JlZywgVENHX1JFR19FQVgpOw0KKyAgICAgICAg YnJlYWs7DQorICAgIGNhc2UgMjoNCisgICAgICAgIHRjZ19vdXRfbW92KHMsIFRDR19UWVBFX0kz MiwgZGF0YV9yZWcsIFRDR19SRUdfRUFYKTsNCisgICAgICAgIGJyZWFrOw0KKyNpZiBUQ0dfVEFS R0VUX1JFR19CSVRTID09IDY0DQorICAgIGNhc2UgMiB8IDQ6DQorICAgICAgICB0Y2dfb3V0X2V4 dDMycyhzLCBkYXRhX3JlZywgVENHX1JFR19FQVgpOw0KKyAgICAgICAgYnJlYWs7DQorI2VuZGlm DQorICAgIGNhc2UgMzoNCisgICAgICAgIGlmIChUQ0dfVEFSR0VUX1JFR19CSVRTID09IDY0KSB7 DQorICAgICAgICAgICAgdGNnX291dF9tb3YocywgVENHX1RZUEVfSTY0LCBkYXRhX3JlZywgVENH X1JFR19SQVgpOw0KKyAgICAgICAgfSBlbHNlIGlmIChkYXRhX3JlZyA9PSBUQ0dfUkVHX0VEWCkg ew0KKyAgICAgICAgICAgIC8qIHhjaGcgJWVkeCwgJWVheCAqLw0KKyAgICAgICAgICAgIHRjZ19v dXRfb3BjKHMsIE9QQ19YQ0hHX2F4X3IzMiArIFRDR19SRUdfRURYLCAwLCAwLCAwKTsNCisgICAg ICAgICAgICB0Y2dfb3V0X21vdihzLCBUQ0dfVFlQRV9JMzIsIGRhdGFfcmVnMiwgVENHX1JFR19F QVgpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0Y2dfb3V0X21vdihzLCBUQ0df VFlQRV9JMzIsIGRhdGFfcmVnLCBUQ0dfUkVHX0VBWCk7DQorICAgICAgICAgICAgdGNnX291dF9t b3YocywgVENHX1RZUEVfSTMyLCBkYXRhX3JlZzIsIFRDR19SRUdfRURYKTsNCisgICAgICAgIH0N CisgICAgICAgIGJyZWFrOw0KKyAgICBkZWZhdWx0Og0KKyAgICAgICAgdGNnX2Fib3J0KCk7DQor ICAgIH0NCisNCisgICAgLyoganVtcCBiYWNrIHRvIG9yaWdpbmFsIGNvZGUgKi8NCisgICAgdGNn X291dF9qbXAocywgKHRjZ190YXJnZXRfbG9uZykgcmFkZHIpOw0KK30NCisNCisvKiBnZW5lcmF0 ZXMgc2xvdyBjYXNlIG9mIHFlbXVfc3QgYXQgdGhlIGVuZCBvZiBUQiAqLw0KK3N0YXRpYyB2b2lk IHRjZ19vdXRfcWVtdV9zdF9zbG93X3BhdGgoVENHQ29udGV4dCAqcywgVENHTGFiZWxRZW11TGRz dCAqbGFiZWwpDQorew0KKyAgICBpbnQgc19iaXRzOw0KKyAgICBpbnQgc3RhY2tfYWRqdXN0Ow0K KyAgICBpbnQgb3BjID0gbGFiZWwtPm9wY19leHQgJiBITF9PUENfTUFTSzsNCisgICAgaW50IG1l bV9pbmRleCA9IGxhYmVsLT5tZW1faW5kZXg7DQorICAgIGludCBkYXRhX3JlZyA9IGxhYmVsLT5k YXRhbG9fcmVnOw0KKyNpZiBUQ0dfVEFSR0VUX1JFR19CSVRTID09IDMyDQorICAgIGludCBkYXRh X3JlZzIgPSBsYWJlbC0+ZGF0YWhpX3JlZzsNCisgICAgaW50IGFkZHJsb19yZWcgPSBsYWJlbC0+ YWRkcmxvX3JlZzsNCisgICAgaW50IGFkZHJoaV9yZWcgPSBsYWJlbC0+YWRkcmhpX3JlZzsNCisj ZW5kaWYNCisgICAgdWludDhfdCAqcmFkZHIgPSBsYWJlbC0+cmFkZHI7DQorICAgIHVpbnQ4X3Qg KipsYWJlbF9wdHIgPSAmbGFiZWwtPmxhYmVsX3B0clswXTsNCisNCisgICAgc19iaXRzID0gb3Bj ICYgMzsNCisNCisgICAgLyogcmVzb2x2ZSBsYWJlbCBhZGRyZXNzICovDQorICAgICoodWludDMy X3QgKilsYWJlbF9wdHJbMF0gPSAodWludDMyX3QpKHMtPmNvZGVfcHRyIC0gbGFiZWxfcHRyWzBd IC0gNCk7DQorICAgIGlmIChUQVJHRVRfTE9OR19CSVRTID4gVENHX1RBUkdFVF9SRUdfQklUUykg ew0KKyAgICAgICAgKih1aW50MzJfdCAqKWxhYmVsX3B0clsxXSA9ICh1aW50MzJfdCkocy0+Y29k ZV9wdHIgLSBsYWJlbF9wdHJbMV0gLSA0KTsNCisgICAgfQ0KKw0KKyAgICAvKiBleHRlbmRlZCBo ZWxwZXIgc2lnbmF0dXJlOiBfX2V4dF9zdF9tbXUodGFyZ2V0X3Vsb25nIGFkZHIsIHVpbnR4eF90 IHZhbCwNCisgICAgICAgaW50IG1tdV9pZHgsIHVpbnRwdHJfdCByYWRkcikgKi8NCisjaWYgVENH X1RBUkdFVF9SRUdfQklUUyA9PSAzMg0KKyAgICB0Y2dfb3V0X3B1c2hpKHMsICh1aW50cHRyX3Qp KHJhZGRyIC0gMSkpOyAvKiByZXR1cm4gYWRkcmVzcyAqLw0KKyAgICBzdGFja19hZGp1c3QgPSA0 Ow0KKyAgICB0Y2dfb3V0X3B1c2hpKHMsIG1lbV9pbmRleCk7IC8qIG1tdSBpbmRleCAqLw0KKyAg ICBzdGFja19hZGp1c3QgKz0gNDsNCisgICAgaWYgKG9wYyA9PSAzKSB7DQorICAgICAgICB0Y2df b3V0X3B1c2gocywgZGF0YV9yZWcyKTsNCisgICAgICAgIHN0YWNrX2FkanVzdCArPSA0Ow0KKyAg ICB9DQorICAgIHRjZ19vdXRfcHVzaChzLCBkYXRhX3JlZyk7ICAgLyogZ3Vlc3QgZGF0YSAqLw0K KyAgICBzdGFja19hZGp1c3QgKz0gNDsNCisgICAgaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQp IHsNCisgICAgICAgIHRjZ19vdXRfcHVzaChzLCBhZGRyaGlfcmVnKTsNCisgICAgICAgIHN0YWNr X2FkanVzdCArPSA0Ow0KKyAgICB9DQorICAgIHRjZ19vdXRfcHVzaChzLCBhZGRybG9fcmVnKTsg LyogZ3Vlc3QgYWRkciAqLw0KKyAgICBzdGFja19hZGp1c3QgKz0gNDsNCisjaWZkZWYgQ09ORklH X1RDR19QQVNTX0FSRUcwDQorICAgIHRjZ19vdXRfcHVzaChzLCBUQ0dfQVJFRzApOw0KKyAgICBz dGFja19hZGp1c3QgKz0gNDsNCisjZW5kaWYNCisjZWxzZQ0KKyAgICB0Y2dfb3V0X21vdihzLCAo b3BjID09IDMgPyBUQ0dfVFlQRV9JNjQgOiBUQ0dfVFlQRV9JMzIpLA0KKyAgICAgICAgICAgICAg ICB0Y2dfdGFyZ2V0X2NhbGxfaWFyZ19yZWdzWzFdLCBkYXRhX3JlZyk7DQorICAgIHRjZ19vdXRf bW92aShzLCBUQ0dfVFlQRV9JMzIsIHRjZ190YXJnZXRfY2FsbF9pYXJnX3JlZ3NbMl0sIG1lbV9p bmRleCk7DQorICAgIHRjZ19vdXRfbW92aShzLCBUQ0dfVFlQRV9JNjQsIHRjZ190YXJnZXRfY2Fs bF9pYXJnX3JlZ3NbM10sICh1aW50cHRyX3QpKHJhZGRyIC0gMSkpOw0KKyAgICBzdGFja19hZGp1 c3QgPSAwOw0KKyNpZmRlZiBDT05GSUdfVENHX1BBU1NfQVJFRzANCisgICAgLyogWFhYL0ZJWE1F OiBzdWJvcHRpbWFsICovDQorICAgIHRjZ19vdXRfbW92KHMsIFRDR19UWVBFX0k2NCwgdGNnX3Rh cmdldF9jYWxsX2lhcmdfcmVnc1szXSwNCisgICAgICAgICAgICAgICAgdGNnX3RhcmdldF9jYWxs X2lhcmdfcmVnc1syXSk7DQorICAgIHRjZ19vdXRfbW92KHMsIFRDR19UWVBFX0k2NCwgdGNnX3Rh cmdldF9jYWxsX2lhcmdfcmVnc1syXSwNCisgICAgICAgICAgICAgICAgdGNnX3RhcmdldF9jYWxs X2lhcmdfcmVnc1sxXSk7DQorICAgIHRjZ19vdXRfbW92KHMsIFRDR19UWVBFX0k2NCwgdGNnX3Rh cmdldF9jYWxsX2lhcmdfcmVnc1sxXSwNCisgICAgICAgICAgICAgICAgdGNnX3RhcmdldF9jYWxs X2lhcmdfcmVnc1swXSk7DQorICAgIHRjZ19vdXRfbW92KHMsIFRDR19UWVBFX0k2NCwgdGNnX3Rh cmdldF9jYWxsX2lhcmdfcmVnc1swXSwNCisgICAgICAgICAgICAgICAgVENHX0FSRUcwKTsNCisj ZW5kaWYNCisjZW5kaWYNCisNCisgICAgdGNnX291dF9jYWxsaShzLCAodGNnX3RhcmdldF9sb25n KXFlbXVfc3RfaGVscGVyc1tzX2JpdHNdKTsNCisNCisgICAgaWYgKHN0YWNrX2FkanVzdCA9PSAo VENHX1RBUkdFVF9SRUdfQklUUyAvIDgpKSB7DQorICAgICAgICAvKiBQb3AgYW5kIGRpc2NhcmQu ICBUaGlzIGlzIDIgYnl0ZXMgc21hbGxlciB0aGFuIHRoZSBhZGQuICAqLw0KKyAgICAgICAgdGNn X291dF9wb3AocywgVENHX1JFR19FQ1gpOw0KKyAgICB9IGVsc2UgaWYgKHN0YWNrX2FkanVzdCAh PSAwKSB7DQorICAgICAgICB0Y2dfb3V0X2FkZGkocywgVENHX1JFR19DQUxMX1NUQUNLLCBzdGFj a19hZGp1c3QpOw0KKyAgICB9DQorDQorICAgIC8qIGp1bXAgYmFjayB0byBvcmlnaW5hbCBjb2Rl ICovDQorICAgIHRjZ19vdXRfam1wKHMsICh0Y2dfdGFyZ2V0X2xvbmcpIHJhZGRyKTsNCit9DQor DQorLyogZ2VuZXJhdGVzIGFsbCBvZiB0aGUgc2xvdyBjYXNlcyBvZiBxZW11X2xkL3N0IGF0IHRo ZSBlbmQgb2YgVEIgKi8NCit2b2lkIHRjZ19vdXRfcWVtdV9sZHN0X3Nsb3dfcGF0aChUQ0dDb250 ZXh0ICpzKQ0KK3sNCisgICAgaW50IGk7DQorICAgIFRDR0xhYmVsUWVtdUxkc3QgKmxhYmVsOw0K Kw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgcy0+bmJfcWVtdV9sZHN0X2xhYmVsczsgaSsrKSB7DQor ICAgICAgICBsYWJlbCA9IChUQ0dMYWJlbFFlbXVMZHN0ICopJnMtPnFlbXVfbGRzdF9sYWJlbHNb aV07DQorICAgICAgICBpZiAoSVNfUUVNVV9MRF9MQUJFTChsYWJlbCkpIHsNCisgICAgICAgICAg ICB0Y2dfb3V0X3FlbXVfbGRfc2xvd19wYXRoKHMsIGxhYmVsKTsNCisgICAgICAgIH0gZWxzZSB7 DQorICAgICAgICAgICAgdGNnX291dF9xZW11X3N0X3Nsb3dfcGF0aChzLCBsYWJlbCk7DQorICAg ICAgICB9DQorICAgIH0NCit9DQorI2VuZGlmICAvKiBDT05GSUdfUUVNVV9MRFNUX09QVElNSVpB VElPTiAqLw0KKw0Kc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfb3AoVENHQ29udGV4dCAqcywg VENHT3Bjb2RlIG9wYywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ0dB cmcgKmFyZ3MsIGNvbnN0IGludCAqY29uc3RfYXJncykNCnsNCmRpZmYgLS1naXQgYS90Y2cvdGNn LmMgYi90Y2cvdGNnLmMNCmluZGV4IDgzODZiNzAuLmMzM2NiOTYgMTAwNjQ0DQotLS0gYS90Y2cv dGNnLmMNCisrKyBiL3RjZy90Y2cuYw0KQEAgLTMwMSw2ICszMDEsMTQgQEAgdm9pZCB0Y2dfZnVu Y19zdGFydChUQ0dDb250ZXh0ICpzKQ0KDQogICAgIGdlbl9vcGNfcHRyID0gZ2VuX29wY19idWY7 DQogICAgIGdlbl9vcHBhcmFtX3B0ciA9IGdlbl9vcHBhcmFtX2J1ZjsNCisjaWYgZGVmaW5lZChD T05GSUdfUUVNVV9MRFNUX09QVElNSVpBVElPTikNCisgICAgLyogaW5pdGlhbGl6ZSBxZW11X2xk L3N0IGxhYmVscyB3aGljaCBoZWxwIHRvIGdlbmVyYXRlIFRMQiBtaXNzIGNhc2UgY29kZXMgYXQg dGhlIGVuZCBvZiBUQiAqLw0KKyAgICBzLT5xZW11X2xkc3RfbGFiZWxzID0gdGNnX21hbGxvYyhz aXplb2YoVENHTGFiZWxRZW11TGRzdCkgKiBUQ0dfTUFYX1FFTVVfTERTVCk7DQorICAgIGlmICgh cy0+cWVtdV9sZHN0X2xhYmVscykgew0KKyAgICAgICAgdGNnX2Fib3J0KCk7DQorICAgIH0NCisg ICAgcy0+bmJfcWVtdV9sZHN0X2xhYmVscyA9IDA7DQorI2VuZGlmDQp9DQoNCnN0YXRpYyBpbmxp bmUgdm9pZCB0Y2dfdGVtcF9hbGxvYyhUQ0dDb250ZXh0ICpzLCBpbnQgbikNCkBAIC0yMTY5LDYg KzIxNzcsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgdGNnX2dlbl9jb2RlX2NvbW1vbihUQ0dDb250 ZXh0ICpzLCB1aW50OF90ICpnZW5fY29kZV9idWYsDQojZW5kaWYNCiAgICAgfQ0KICB0aGVfZW5k Og0KKyNpZiBkZWZpbmVkKENPTkZJR19RRU1VX0xEU1RfT1BUSU1JWkFUSU9OKQ0KKyAgICAvKiBH ZW5lcmF0ZSBNTVUgY2FsbCBoZWxwZXJzIGF0IHRoZSBlbmQgb2YgYmxvY2sgKGN1cnJlbnRseSBv bmx5IGZvciBxZW11X2xkL3N0KSAqLw0KKyAgICB0Y2dfb3V0X3FlbXVfbGRzdF9zbG93X3BhdGgo cyk7DQorI2VuZGlmDQogICAgIHJldHVybiAtMTsNCn0NCg0KZGlmZiAtLWdpdCBhL3RjZy90Y2cu aCBiL3RjZy90Y2cuaA0KaW5kZXggZDcxMDY5NC4uZTUyZDNhNCAxMDA2NDQNCi0tLSBhL3RjZy90 Y2cuaA0KKysrIGIvdGNnL3RjZy5oDQpAQCAtMTg3LDYgKzE4NywyOSBAQCB0eXBlZGVmIHRjZ190 YXJnZXRfdWxvbmcgVENHQXJnOw0KICAgIGFyZSBhbGlhc2VzIGZvciB0YXJnZXRfdWxvbmcgYW5k IGhvc3QgcG9pbnRlciBzaXplZCB2YWx1ZXMgcmVzcGVjdGl2ZWx5Lg0KICAqLw0KDQorI2lmIGRl ZmluZWQoQ09ORklHX1FFTVVfTERTVF9PUFRJTUlaQVRJT04pDQorLyogTWFjcm9zIGFuZCBzdHJ1 Y3R1cmVzIGZvciBxZW11X2xkL3N0IElSIGNvZGUgb3B0aW1pemF0aW9uOg0KKyAgIEl0IGxvb2tz IGdvb2QgZm9yIFRDR19NQVhfSEVMUEVSX0xBQkVMUyB0byBiZSBoYWxmIG9mIE9QQ19CVUZfU0la RSBpbiBleGVjLWFsbC5oLiAqLw0KKyNkZWZpbmUgVENHX01BWF9RRU1VX0xEU1QgICAgICAgMzIw DQorI2RlZmluZSBITF9MRFNUX1NISUZUICAgICAgICAgICA0DQorI2RlZmluZSBITF9MRFNUX01B U0sgICAgICAgICAgICAoMSA8PCBITF9MRFNUX1NISUZUKQ0KKyNkZWZpbmUgSExfU1RfTUFTSyAg ICAgICAgICAgICAgSExfTERTVF9NQVNLDQorI2RlZmluZSBITF9PUENfTUFTSyAgICAgICAgICAg ICAoSExfTERTVF9NQVNLIC0gMSkNCisjZGVmaW5lIElTX1FFTVVfTERfTEFCRUwoTCkgICAgICgh KChMKS0+b3BjX2V4dCAmIEhMX0xEU1RfTUFTSykpDQorI2RlZmluZSBJU19RRU1VX1NUX0xBQkVM KEwpICAgICAoKEwpLT5vcGNfZXh0ICYgSExfTERTVF9NQVNLKQ0KKw0KK3R5cGVkZWYgc3RydWN0 IFRDR0xhYmVsUWVtdUxkc3Qgew0KKyAgICBpbnQgb3BjX2V4dDsgICAgICAgICAgICAgICAgLyog fCAyN2JpdCAocmVzZXJ2ZWQpIHwgMWJpdCAobGQvc3QgZmxhZykgfCA0Yml0IChvcGMpIHwgKi8N CisgICAgaW50IGFkZHJsb19yZWc7ICAgICAgICAgICAgIC8qIHJlZyBpbmRleCBmb3IgdGhlIGxv dyB3b3JkIG9mIGd1ZXN0IHZpcnR1YWwgYWRkcmVzcyAqLw0KKyAgICBpbnQgYWRkcmhpX3JlZzsg ICAgICAgICAgICAgLyogcmVnIGluZGV4IGZvciB0aGUgaGlnaCB3b3JkIG9mIGd1ZXN0IHZpcnR1 YWwgYWRkcmVzcyAqLw0KKyAgICBpbnQgZGF0YWxvX3JlZzsgICAgICAgICAgICAgLyogcmVnIGlu ZGV4IGZvciB0aGUgbG93IHdvcmQgdG8gYmUgbG9hZGVkIG9yIHRvIGJlIHN0b3JlZCAqLw0KKyAg ICBpbnQgZGF0YWhpX3JlZzsgICAgICAgICAgICAgLyogcmVnIGluZGV4IGZvciB0aGUgaGlnaCB3 b3JkIHRvIGJlIGxvYWRlZCBvciB0byBiZSBzdG9yZWQgKi8NCisgICAgaW50IG1lbV9pbmRleDsg ICAgICAgICAgICAgIC8qIHNvZnQgTU1VIG1lbW9yeSBpbmRleCAqLw0KKyAgICB1aW50OF90ICpy YWRkcjsgICAgICAgICAgICAgLyogcmV0dXJuIGFkZHJlc3MgKGxvY2F0ZWQgZW5kIG9mIFRCKSAq Lw0KKyAgICB1aW50OF90ICpsYWJlbF9wdHJbMl07ICAgICAgLyogbGFiZWwgcG9pbnRlcnMgdG8g YmUgdXBkYXRlZCAqLw0KK30gVENHTGFiZWxRZW11TGRzdDsNCisjZW5kaWYgIC8qIENPTkZJR19R RU1VX0xEU1RfT1BUSU1JWkFUSU9OICovDQorDQojaWZkZWYgQ09ORklHX0RFQlVHX1RDRw0KI2Rl ZmluZSBERUJVR19UQ0dWIDENCiNlbmRpZg0KQEAgLTM4OSw2ICs0MTIsMTMgQEAgc3RydWN0IFRD R0NvbnRleHQgew0KI2lmZGVmIENPTkZJR19ERUJVR19UQ0cNCiAgICAgaW50IHRlbXBzX2luX3Vz ZTsNCiNlbmRpZg0KKw0KKyNpZiBkZWZpbmVkKENPTkZJR19RRU1VX0xEU1RfT1BUSU1JWkFUSU9O KQ0KKyAgICAvKiBsYWJlbHMgaW5mbyBmb3IgcWVtdV9sZC9zdCBJUnMNCisgICAgICAgVGhlIGxh YmVscyBoZWxwIHRvIGdlbmVyYXRlIFRMQiBtaXNzIGNhc2UgY29kZXMgYXQgdGhlIGVuZCBvZiBU QiAqLw0KKyAgICBUQ0dMYWJlbFFlbXVMZHN0ICpxZW11X2xkc3RfbGFiZWxzOw0KKyAgICBpbnQg bmJfcWVtdV9sZHN0X2xhYmVsczsNCisjZW5kaWYNCn07DQoNCmV4dGVybiBUQ0dDb250ZXh0IHRj Z19jdHg7DQpAQCAtNTg4LDMgKzYxOCw4IEBAIGV4dGVybiB1aW50OF90IGNvZGVfZ2VuX3Byb2xv Z3VlW107DQojZW5kaWYNCg0Kdm9pZCB0Y2dfcmVnaXN0ZXJfaml0KHZvaWQgKmJ1Ziwgc2l6ZV90 IGJ1Zl9zaXplKTsNCisNCisjaWYgZGVmaW5lZChDT05GSUdfUUVNVV9MRFNUX09QVElNSVpBVElP TikNCisvKiBxZW11X2xkL3N0IGdlbmVyYXRpb24gYXQgdGhlIGVuZCBvZiBUQiAqLw0KK3ZvaWQg dGNnX291dF9xZW11X2xkc3Rfc2xvd19wYXRoKFRDR0NvbnRleHQgKnMpOw0KKyNlbmRpZg0KDQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQpQcmluY2lwYWwgRW5naW5lZXIgDQpW TSBUZWFtIA0KWWVvbmdreW9vbiBMZWUgDQoNClMtQ29yZSBDby4sIEx0ZC4NCkQuTC46ICs4Mi0z MS02OTYtNzI0OQ0KTS5QLjogKzgyLTEwLTk5NjUtMTI2NQ0KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXyA=