From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:55359) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QOBwu-0003xA-Bn for qemu-devel@nongnu.org; Sun, 22 May 2011 12:56:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QOBws-0006CP-6V for qemu-devel@nongnu.org; Sun, 22 May 2011 12:56:16 -0400 Received: from mail-qy0-f173.google.com ([209.85.216.173]:48492) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QOBws-0006C8-0E for qemu-devel@nongnu.org; Sun, 22 May 2011 12:56:14 -0400 Received: by qyk36 with SMTP id 36so517351qyk.4 for ; Sun, 22 May 2011 09:56:13 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: From: Blue Swirl Date: Sun, 22 May 2011 19:55:53 +0300 Message-ID: Content-Type: multipart/mixed; boundary=20cf3005149e7ff29504a3e03bc8 Subject: Re: [Qemu-devel] [PATCH 9/9] cpu-exec.c: avoid AREG0 use List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel --20cf3005149e7ff29504a3e03bc8 Content-Type: text/plain; charset=UTF-8 On Sun, May 22, 2011 at 2:18 PM, Blue Swirl wrote: > Make functions take a parameter for CPUState instead of relying > on global env. Pass CPUState pointer to TCG prologue, which moves > it to AREG0. I found the problem with this patch on i386, TCG assumes that its caller is also using global env. Now i386 also works. Updated patch attached, but here's the diff to previous version: diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c index 294fc7a..7248520 100644 --- a/tcg/hppa/tcg-target.c +++ b/tcg/hppa/tcg-target.c @@ -1596,7 +1596,7 @@ static int tcg_target_callee_save_regs[] = { TCG_REG_R14, TCG_REG_R15, TCG_REG_R16, - /* R17 is the global env, so no need to save. */ + TCG_REG_R17, /* R17 is the global env. */ TCG_REG_R18 }; diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c index ba031ab..72b3a48 100644 --- a/tcg/i386/tcg-target.c +++ b/tcg/i386/tcg-target.c @@ -1901,10 +1901,10 @@ static int tcg_target_callee_save_regs[] = { TCG_REG_RBX, TCG_REG_R12, TCG_REG_R13, - /* TCG_REG_R14, */ /* Currently used for the global env. */ + TCG_REG_R14, /* Currently used for the global env. */ TCG_REG_R15, #else - /* TCG_REG_EBP, */ /* Currently used for the global env. */ + TCG_REG_EBP, /* Currently used for the global env. */ TCG_REG_EBX, TCG_REG_ESI, TCG_REG_EDI, diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c index a6b2457..cb2ab8b 100644 --- a/tcg/mips/tcg-target.c +++ b/tcg/mips/tcg-target.c @@ -1452,9 +1452,7 @@ static const TCGTargetOpDef mips_op_defs[] = { }; static int tcg_target_callee_save_regs[] = { -#if 0 /* used for the global env (TCG_AREG0), so no need to save */ - TCG_REG_S0, -#endif + TCG_REG_S0, /* used for the global env (TCG_AREG0) */ TCG_REG_S1, TCG_REG_S2, TCG_REG_S3, diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c index dd2a85a..266e699 100644 --- a/tcg/ppc/tcg-target.c +++ b/tcg/ppc/tcg-target.c @@ -160,8 +160,7 @@ static const int tcg_target_callee_save_regs[] = { TCG_REG_R24, TCG_REG_R25, TCG_REG_R26, - /* TCG_REG_R27, */ /* currently used for the global env, so no - need to save */ + TCG_REG_R27, /* currently used for the global env */ TCG_REG_R28, TCG_REG_R29, TCG_REG_R30, diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c index 83fa903..2e3cd2b 100644 --- a/tcg/ppc64/tcg-target.c +++ b/tcg/ppc64/tcg-target.c @@ -151,8 +151,7 @@ static const int tcg_target_callee_save_regs[] = { TCG_REG_R24, TCG_REG_R25, TCG_REG_R26, - /* TCG_REG_R27, */ /* currently used for the global env, so no - need to save */ + TCG_REG_R27, /* currently used for the global env */ TCG_REG_R28, TCG_REG_R29, TCG_REG_R30, For ARM, the handcrafted instructions below need to be changed to save also r7: /* stmdb sp!, { r4 - r6, r8 - r11, lr } */ tcg_out32(s, (COND_AL << 28) | 0x092d4f70); /* ldmia sp!, { r4 - r6, r8 - r11, pc } */ tcg_out32(s, (COND_AL << 28) | 0x08bd8f70); ia64 doesn't look like saving anything. Sparc is OK with the 'save'. Maybe S390x already saves R10: /* stmg %r6,%r15,48(%r15) (save registers) */ tcg_out_insn(s, RXY, STMG, TCG_REG_R6, TCG_REG_R15, TCG_REG_R15, 48); /* lmg %r6,%r15,208(%r15) (restore registers) */ tcg_out_insn(s, RXY, LMG, TCG_REG_R6, TCG_REG_R15, TCG_REG_R15, 208); --20cf3005149e7ff29504a3e03bc8 Content-Type: text/x-diff; charset=US-ASCII; name="0001-cpu-exec.c-avoid-AREG0-use.patch" Content-Disposition: attachment; filename="0001-cpu-exec.c-avoid-AREG0-use.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_go080u491 RnJvbSA3M2QxM2YyNTBiNzBiNjI1YjEyYzI2NjQ3ZDFiODc0NmRjYzBhZmI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8NzNkMTNmMjUwYjcwYjYyNWIxMmMyNjY0N2QxYjg3 NDZkY2MwYWZiOS4xMzA2MDgyODUwLmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNvbT4KRnJvbTogQmx1 ZSBTd2lybCA8YmxhdXdpcmJlbEBnbWFpbC5jb20+CkRhdGU6IFN1biwgMTUgTWF5IDIwMTEgMTY6 MDM6MjUgKzAwMDAKU3ViamVjdDogW1BBVENIXSBjcHUtZXhlYy5jOiBhdm9pZCBBUkVHMCB1c2UK Ck1ha2UgZnVuY3Rpb25zIHRha2UgYSBwYXJhbWV0ZXIgZm9yIENQVVN0YXRlIGluc3RlYWQgb2Yg cmVseWluZwpvbiBnbG9iYWwgZW52LiBQYXNzIENQVVN0YXRlIHBvaW50ZXIgdG8gVENHIHByb2xv Z3VlLCB3aGljaCBtb3ZlcwppdCB0byBBUkVHMC4KClJldmVydCB0aGUgaGFja3MgdG8gYXZvaWQg QVJFRzAgdXNlIG9uIFNwYXJjIGhvc3RzLgoKTW92ZSBjcHVfaGFzX3dvcmsoKSBhbmQgY3B1X3Bj X2Zyb21fdGIoKSBmcm9tIGV4ZWMuaCB0byBjcHUuaC4KCkNvbXBpbGUgdGhlIGZpbGUgd2l0aG91 dCBIRUxQRVJfQ0ZMQUdTLgoKU2lnbmVkLW9mZi1ieTogQmx1ZSBTd2lybCA8YmxhdXdpcmJlbEBn bWFpbC5jb20+Ci0tLQogTWFrZWZpbGUudGFyZ2V0ICAgICAgICB8ICAgIDIgKy0KIGNwdS1leGVj LmMgICAgICAgICAgICAgfCAgIDc0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogdGNnL2FybS90Y2ctdGFyZ2V0LmMgICB8ICAgIDQgKystCiB0Y2cvaHBw YS90Y2ctdGFyZ2V0LmMgIHwgICAgNiArKy0KIHRjZy9pMzg2L3RjZy10YXJnZXQuYyAgfCAgICA4 ICsrKy0tCiB0Y2cvaWE2NC90Y2ctdGFyZ2V0LmMgIHwgICAgNSArKy0KIHRjZy9taXBzL3RjZy10 YXJnZXQuYyAgfCAgICA4ICsrLS0tCiB0Y2cvcHBjL3RjZy10YXJnZXQuYyAgIHwgICAgNiArKy0t CiB0Y2cvcHBjNjQvdGNnLXRhcmdldC5jIHwgICAgNiArKy0tCiB0Y2cvczM5MC90Y2ctdGFyZ2V0 LmMgIHwgICAgNSArKy0KIHRjZy9zcGFyYy90Y2ctdGFyZ2V0LmMgfCAgICA0ICstCiB0Y2cvdGNn LmggICAgICAgICAgICAgIHwgICAgNyArKy0tCiAxMiBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRp b25zKCspLCA4MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9NYWtlZmlsZS50YXJnZXQgYi9N YWtlZmlsZS50YXJnZXQKaW5kZXggNjAyZDUwZC4uYjVmZGE0NCAxMDA2NDQKLS0tIGEvTWFrZWZp bGUudGFyZ2V0CisrKyBiL01ha2VmaWxlLnRhcmdldApAQCAtOTQsNyArOTQsNyBAQCB0Y2cvdGNn Lm86IGNwdS5oCiAKICMgSEVMUEVSX0NGTEFHUyBpcyB1c2VkIGZvciBhbGwgdGhlIGNvZGUgY29t cGlsZWQgd2l0aCBzdGF0aWMgcmVnaXN0ZXIKICMgdmFyaWFibGVzCi0lX2hlbHBlci5vIGNwdS1l eGVjLm8gdXNlci1leGVjLm86IFFFTVVfQ0ZMQUdTICs9ICQoSEVMUEVSX0NGTEFHUykKKyVfaGVs cGVyLm8gdXNlci1leGVjLm86IFFFTVVfQ0ZMQUdTICs9ICQoSEVMUEVSX0NGTEFHUykKIAogIyBO b3RlOiB0aGlzIGlzIGEgd29ya2Fyb3VuZC4gVGhlIHJlYWwgZml4IGlzIHRvIGF2b2lkIGNvbXBp bGluZwogIyBjcHVfc2lnbmFsX2hhbmRsZXIoKSBpbiB1c2VyLWV4ZWMuYy4KZGlmZiAtLWdpdCBh L2NwdS1leGVjLmMgYi9jcHUtZXhlYy5jCmluZGV4IGRkNGY1ZjUuLmY1ZjljYzMgMTAwNjQ0Ci0t LSBhL2NwdS1leGVjLmMKKysrIGIvY3B1LWV4ZWMuYwpAQCAtMTcsMTggKzE3LDEyIEBACiAgKiBM aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCiAgKi8KICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJl eGVjLmgiCisjaW5jbHVkZSAiY3B1LmgiCiAjaW5jbHVkZSAiZGlzYXMuaCIKICNpbmNsdWRlICJ0 Y2cuaCIKICNpbmNsdWRlICJrdm0uaCIKICNpbmNsdWRlICJxZW11LWJhcnJpZXIuaCIKIAotI2lm IGRlZmluZWQoX19zcGFyY19fKSAmJiAhZGVmaW5lZChDT05GSUdfU09MQVJJUykKLS8vIFdvcmsg YXJvdW5kIHVnbHkgYnVncyBpbiBnbGliYyB0aGF0IG1hbmdsZSBnbG9iYWwgcmVnaXN0ZXIgY29u dGVudHMKLSN1bmRlZiBlbnYKLSNkZWZpbmUgZW52IGNwdV9zaW5nbGVfZW52Ci0jZW5kaWYKLQog aW50IHRiX2ludmFsaWRhdGVkX2ZsYWc7CiAKIC8vI2RlZmluZSBDT05GSUdfREVCVUdfRVhFQwpA QCAtMzgsMjAgKzMyLDE4IEBAIGludCBxZW11X2NwdV9oYXNfd29yayhDUFVTdGF0ZSAqZW52KQog ICAgIHJldHVybiBjcHVfaGFzX3dvcmsoZW52KTsKIH0KIAotdm9pZCBjcHVfbG9vcF9leGl0KENQ VVN0YXRlICplbnYxKQordm9pZCBjcHVfbG9vcF9leGl0KENQVVN0YXRlICplbnYpCiB7Ci0gICAg ZW52MS0+Y3VycmVudF90YiA9IE5VTEw7Ci0gICAgbG9uZ2ptcChlbnYxLT5qbXBfZW52LCAxKTsK KyAgICBlbnYtPmN1cnJlbnRfdGIgPSBOVUxMOworICAgIGxvbmdqbXAoZW52LT5qbXBfZW52LCAx KTsKIH0KIAogLyogZXhpdCB0aGUgY3VycmVudCBUQiBmcm9tIGEgc2lnbmFsIGhhbmRsZXIuIFRo ZSBob3N0IHJlZ2lzdGVycyBhcmUKICAgIHJlc3RvcmVkIGluIGEgc3RhdGUgY29tcGF0aWJsZSB3 aXRoIHRoZSBDUFUgZW11bGF0b3IKICAqLwogI2lmIGRlZmluZWQoQ09ORklHX1NPRlRNTVUpCi12 b2lkIGNwdV9yZXN1bWVfZnJvbV9zaWduYWwoQ1BVU3RhdGUgKmVudjEsIHZvaWQgKnB1YykKK3Zv aWQgY3B1X3Jlc3VtZV9mcm9tX3NpZ25hbChDUFVTdGF0ZSAqZW52LCB2b2lkICpwdWMpCiB7Ci0g ICAgZW52ID0gZW52MTsKLQogICAgIC8qIFhYWDogcmVzdG9yZSBjcHUgcmVnaXN0ZXJzIHNhdmVk IGluIGhvc3QgcmVnaXN0ZXJzICovCiAKICAgICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9IC0xOwpA QCAtNjEsNyArNTMsOCBAQCB2b2lkIGNwdV9yZXN1bWVfZnJvbV9zaWduYWwoQ1BVU3RhdGUgKmVu djEsIHZvaWQgKnB1YykKIAogLyogRXhlY3V0ZSB0aGUgY29kZSB3aXRob3V0IGNhY2hpbmcgdGhl IGdlbmVyYXRlZCBjb2RlLiBBbiBpbnRlcnByZXRlcgogICAgY291bGQgYmUgdXNlZCBpZiBhdmFp bGFibGUuICovCi1zdGF0aWMgdm9pZCBjcHVfZXhlY19ub2NhY2hlKGludCBtYXhfY3ljbGVzLCBU cmFuc2xhdGlvbkJsb2NrICpvcmlnX3RiKQorc3RhdGljIHZvaWQgY3B1X2V4ZWNfbm9jYWNoZShD UFVTdGF0ZSAqZW52LCBpbnQgbWF4X2N5Y2xlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVHJhbnNsYXRpb25CbG9jayAqb3JpZ190YikKIHsKICAgICB1bnNpZ25lZCBsb25nIG5leHRf dGI7CiAgICAgVHJhbnNsYXRpb25CbG9jayAqdGI7CkBAIC03NSw3ICs2OCw3IEBAIHN0YXRpYyB2 b2lkIGNwdV9leGVjX25vY2FjaGUoaW50IG1heF9jeWNsZXMsIFRyYW5zbGF0aW9uQmxvY2sgKm9y aWdfdGIpCiAgICAgICAgICAgICAgICAgICAgICBtYXhfY3ljbGVzKTsKICAgICBlbnYtPmN1cnJl bnRfdGIgPSB0YjsKICAgICAvKiBleGVjdXRlIHRoZSBnZW5lcmF0ZWQgY29kZSAqLwotICAgIG5l eHRfdGIgPSB0Y2dfcWVtdV90Yl9leGVjKHRiLT50Y19wdHIpOworICAgIG5leHRfdGIgPSB0Y2df cWVtdV90Yl9leGVjKGVudiwgdGItPnRjX3B0cik7CiAgICAgZW52LT5jdXJyZW50X3RiID0gTlVM TDsKIAogICAgIGlmICgobmV4dF90YiAmIDMpID09IDIpIHsKQEAgLTg3LDcgKzgwLDggQEAgc3Rh dGljIHZvaWQgY3B1X2V4ZWNfbm9jYWNoZShpbnQgbWF4X2N5Y2xlcywgVHJhbnNsYXRpb25CbG9j ayAqb3JpZ190YikKICAgICB0Yl9mcmVlKHRiKTsKIH0KIAotc3RhdGljIFRyYW5zbGF0aW9uQmxv Y2sgKnRiX2ZpbmRfc2xvdyh0YXJnZXRfdWxvbmcgcGMsCitzdGF0aWMgVHJhbnNsYXRpb25CbG9j ayAqdGJfZmluZF9zbG93KENQVVN0YXRlICplbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRhcmdldF91bG9uZyBwYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGNzX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ2NF90IGZsYWdzKQogewpAQCAtMTQxLDcgKzEzNSw3IEBAIHN0 YXRpYyBUcmFuc2xhdGlvbkJsb2NrICp0Yl9maW5kX3Nsb3codGFyZ2V0X3Vsb25nIHBjLAogICAg IHJldHVybiB0YjsKIH0KIAotc3RhdGljIGlubGluZSBUcmFuc2xhdGlvbkJsb2NrICp0Yl9maW5k X2Zhc3Qodm9pZCkKK3N0YXRpYyBpbmxpbmUgVHJhbnNsYXRpb25CbG9jayAqdGJfZmluZF9mYXN0 KENQVVN0YXRlICplbnYpCiB7CiAgICAgVHJhbnNsYXRpb25CbG9jayAqdGI7CiAgICAgdGFyZ2V0 X3Vsb25nIGNzX2Jhc2UsIHBjOwpAQCAtMTU0LDcgKzE0OCw3IEBAIHN0YXRpYyBpbmxpbmUgVHJh bnNsYXRpb25CbG9jayAqdGJfZmluZF9mYXN0KHZvaWQpCiAgICAgdGIgPSBlbnYtPnRiX2ptcF9j YWNoZVt0Yl9qbXBfY2FjaGVfaGFzaF9mdW5jKHBjKV07CiAgICAgaWYgKHVubGlrZWx5KCF0YiB8 fCB0Yi0+cGMgIT0gcGMgfHwgdGItPmNzX2Jhc2UgIT0gY3NfYmFzZSB8fAogICAgICAgICAgICAg ICAgICB0Yi0+ZmxhZ3MgIT0gZmxhZ3MpKSB7Ci0gICAgICAgIHRiID0gdGJfZmluZF9zbG93KHBj LCBjc19iYXNlLCBmbGFncyk7CisgICAgICAgIHRiID0gdGJfZmluZF9zbG93KGVudiwgcGMsIGNz X2Jhc2UsIGZsYWdzKTsKICAgICB9CiAgICAgcmV0dXJuIHRiOwogfQpAQCAtMTg3LDMxICsxODEs MjIgQEAgc3RhdGljIHZvaWQgY3B1X2hhbmRsZV9kZWJ1Z19leGNlcHRpb24oQ1BVU3RhdGUgKmVu dikKIAogdm9sYXRpbGUgc2lnX2F0b21pY190IGV4aXRfcmVxdWVzdDsKIAotaW50IGNwdV9leGVj KENQVVN0YXRlICplbnYxKQoraW50IGNwdV9leGVjKENQVVN0YXRlICplbnYpCiB7Ci0gICAgdm9s YXRpbGUgaG9zdF9yZWdfdCBzYXZlZF9lbnZfcmVnOwogICAgIGludCByZXQsIGludGVycnVwdF9y ZXF1ZXN0OwogICAgIFRyYW5zbGF0aW9uQmxvY2sgKnRiOwogICAgIHVpbnQ4X3QgKnRjX3B0cjsK ICAgICB1bnNpZ25lZCBsb25nIG5leHRfdGI7CiAKLSAgICBpZiAoZW52MS0+aGFsdGVkKSB7Ci0g ICAgICAgIGlmICghY3B1X2hhc193b3JrKGVudjEpKSB7CisgICAgaWYgKGVudi0+aGFsdGVkKSB7 CisgICAgICAgIGlmICghY3B1X2hhc193b3JrKGVudikpIHsKICAgICAgICAgICAgIHJldHVybiBF WENQX0hBTFRFRDsKICAgICAgICAgfQogCi0gICAgICAgIGVudjEtPmhhbHRlZCA9IDA7CisgICAg ICAgIGVudi0+aGFsdGVkID0gMDsKICAgICB9CiAKLSAgICBjcHVfc2luZ2xlX2VudiA9IGVudjE7 Ci0KLSAgICAvKiB0aGUgYWNjZXNzIHRvIGVudiBiZWxvdyBpcyBhY3R1YWxseSBzYXZpbmcgdGhl IGdsb2JhbCByZWdpc3RlcidzCi0gICAgICAgdmFsdWUsIHNvIHRoYXQgZmlsZXMgbm90IGluY2x1 ZGluZyB0YXJnZXQteHl6L2V4ZWMuaCBhcmUgZnJlZSB0bwotICAgICAgIHVzZSBpdC4gICovCi0g ICAgUUVNVV9CVUlMRF9CVUdfT04gKHNpemVvZiAoc2F2ZWRfZW52X3JlZykgIT0gc2l6ZW9mIChl bnYpKTsKLSAgICBzYXZlZF9lbnZfcmVnID0gKGhvc3RfcmVnX3QpIGVudjsKLSAgICBiYXJyaWVy KCk7Ci0gICAgZW52ID0gZW52MTsKKyAgICBjcHVfc2luZ2xlX2VudiA9IGVudjsKIAogICAgIGlm ICh1bmxpa2VseShleGl0X3JlcXVlc3QpKSB7CiAgICAgICAgIGVudi0+ZXhpdF9yZXF1ZXN0ID0g MTsKQEAgLTI0NywxMSArMjMyLDYgQEAgaW50IGNwdV9leGVjKENQVVN0YXRlICplbnYxKQogICAg IC8qIHByZXBhcmUgc2V0am1wIGNvbnRleHQgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyAqLwogICAg IGZvcig7OykgewogICAgICAgICBpZiAoc2V0am1wKGVudi0+am1wX2VudikgPT0gMCkgewotI2lm IGRlZmluZWQoX19zcGFyY19fKSAmJiAhZGVmaW5lZChDT05GSUdfU09MQVJJUykKLSN1bmRlZiBl bnYKLSAgICAgICAgICAgIGVudiA9IGNwdV9zaW5nbGVfZW52OwotI2RlZmluZSBlbnYgY3B1X3Np bmdsZV9lbnYKLSNlbmRpZgogICAgICAgICAgICAgLyogaWYgYW4gZXhjZXB0aW9uIGlzIHBlbmRp bmcsIHdlIGV4ZWN1dGUgaXQgaGVyZSAqLwogICAgICAgICAgICAgaWYgKGVudi0+ZXhjZXB0aW9u X2luZGV4ID49IDApIHsKICAgICAgICAgICAgICAgICBpZiAoZW52LT5leGNlcHRpb25faW5kZXgg Pj0gRVhDUF9JTlRFUlJVUFQpIHsKQEAgLTMzNywxMSArMzE3LDYgQEAgaW50IGNwdV9leGVjKENQ VVN0YXRlICplbnYxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+aW50ZXJydXB0 X3JlcXVlc3QgJj0gfihDUFVfSU5URVJSVVBUX0hBUkQgfCBDUFVfSU5URVJSVVBUX1ZJUlEpOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludG5vID0gY3B1X2dldF9waWNfaW50ZXJydXB0 KGVudik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWVtdV9sb2dfbWFzayhDUFVfTE9H X1RCX0lOX0FTTSwgIlNlcnZpY2luZyBoYXJkd2FyZSBJTlQ9MHglMDJ4XG4iLCBpbnRubyk7Ci0j aWYgZGVmaW5lZChfX3NwYXJjX18pICYmICFkZWZpbmVkKENPTkZJR19TT0xBUklTKQotI3VuZGVm IGVudgotICAgICAgICAgICAgICAgICAgICBlbnYgPSBjcHVfc2luZ2xlX2VudjsKLSNkZWZpbmUg ZW52IGNwdV9zaW5nbGVfZW52Ci0jZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b19pbnRlcnJ1cHRfeDg2X2hhcmRpcnEoZW52LCBpbnRubywgMSk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogZW5zdXJlIHRoYXQgbm8gVEIganVtcCB3aWxsIGJlIG1vZGlmaWVkIGFz CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByb2dyYW0gZmxvdyB3YXMgY2hh bmdlZCAqLwpAQCAtNTIxLDcgKzQ5Niw3IEBAIGludCBjcHVfZXhlYyhDUFVTdGF0ZSAqZW52MSkK ICAgICAgICAgICAgICAgICB9CiAjZW5kaWYgLyogREVCVUdfRElTQVMgfHwgQ09ORklHX0RFQlVH X0VYRUMgKi8KICAgICAgICAgICAgICAgICBzcGluX2xvY2soJnRiX2xvY2spOwotICAgICAgICAg ICAgICAgIHRiID0gdGJfZmluZF9mYXN0KCk7CisgICAgICAgICAgICAgICAgdGIgPSB0Yl9maW5k X2Zhc3QoZW52KTsKICAgICAgICAgICAgICAgICAvKiBOb3RlOiB3ZSBkbyBpdCBoZXJlIHRvIGF2 b2lkIGEgZ2NjIGJ1ZyBvbiBNYWMgT1MgWCB3aGVuCiAgICAgICAgICAgICAgICAgICAgZG9pbmcg aXQgaW4gdGJfZmluZF9zbG93ICovCiAgICAgICAgICAgICAgICAgaWYgKHRiX2ludmFsaWRhdGVk X2ZsYWcpIHsKQEAgLTU1MywxMiArNTI4LDcgQEAgaW50IGNwdV9leGVjKENQVVN0YXRlICplbnYx KQogICAgICAgICAgICAgICAgIGlmIChsaWtlbHkoIWVudi0+ZXhpdF9yZXF1ZXN0KSkgewogICAg ICAgICAgICAgICAgICAgICB0Y19wdHIgPSB0Yi0+dGNfcHRyOwogICAgICAgICAgICAgICAgIC8q IGV4ZWN1dGUgdGhlIGdlbmVyYXRlZCBjb2RlICovCi0jaWYgZGVmaW5lZChfX3NwYXJjX18pICYm ICFkZWZpbmVkKENPTkZJR19TT0xBUklTKQotI3VuZGVmIGVudgotICAgICAgICAgICAgICAgICAg ICBlbnYgPSBjcHVfc2luZ2xlX2VudjsKLSNkZWZpbmUgZW52IGNwdV9zaW5nbGVfZW52Ci0jZW5k aWYKLSAgICAgICAgICAgICAgICAgICAgbmV4dF90YiA9IHRjZ19xZW11X3RiX2V4ZWModGNfcHRy KTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dF90YiA9IHRjZ19xZW11X3RiX2V4ZWMoZW52LCB0 Y19wdHIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoKG5leHRfdGIgJiAzKSA9PSAyKSB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnN0cnVjdGlvbiBjb3VudGVyIGV4cGlyZWQuICAq LwogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc25zX2xlZnQ7CkBAIC01NzksNyArNTQ5 LDcgQEAgaW50IGNwdV9leGVjKENQVVN0YXRlICplbnYxKQogICAgICAgICAgICAgICAgICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5zbnNfbGVmdCA+ IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRXhlY3V0ZSByZW1haW5p bmcgaW5zdHJ1Y3Rpb25zLiAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1 X2V4ZWNfbm9jYWNoZShpbnNuc19sZWZ0LCB0Yik7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNwdV9leGVjX25vY2FjaGUoZW52LCBpbnNuc19sZWZ0LCB0Yik7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+ZXhj ZXB0aW9uX2luZGV4ID0gRVhDUF9JTlRFUlJVUFQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmV4dF90YiA9IDA7CkBAIC02MjEsMTAgKzU5MSw2IEBAIGludCBjcHVfZXhlYyhDUFVTdGF0 ZSAqZW52MSkKICNlcnJvciB1bnN1cHBvcnRlZCB0YXJnZXQgQ1BVCiAjZW5kaWYKIAotICAgIC8q IHJlc3RvcmUgZ2xvYmFsIHJlZ2lzdGVycyAqLwotICAgIGJhcnJpZXIoKTsKLSAgICBlbnYgPSAo dm9pZCAqKSBzYXZlZF9lbnZfcmVnOwotCiAgICAgLyogZmFpbCBzYWZlIDogbmV2ZXIgdXNlIGNw dV9zaW5nbGVfZW52IG91dHNpZGUgY3B1X2V4ZWMoKSAqLwogICAgIGNwdV9zaW5nbGVfZW52ID0g TlVMTDsKICAgICByZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvdGNnL2FybS90Y2ctdGFyZ2V0LmMg Yi90Y2cvYXJtL3RjZy10YXJnZXQuYwppbmRleCBmYjg1OGQ4Li41MzgwMmViIDEwMDY0NAotLS0g YS90Y2cvYXJtL3RjZy10YXJnZXQuYworKysgYi90Y2cvYXJtL3RjZy10YXJnZXQuYwpAQCAtMTg1 Miw3ICsxODUyLDkgQEAgc3RhdGljIHZvaWQgdGNnX3RhcmdldF9xZW11X3Byb2xvZ3VlKFRDR0Nv bnRleHQgKnMpCiAgICAgLyogc3RtZGIgc3AhLCB7IHI0IC0gcjYsIHI4IC0gcjExLCBsciB9ICov CiAgICAgdGNnX291dDMyKHMsIChDT05EX0FMIDw8IDI4KSB8IDB4MDkyZDRmNzApOwogCi0gICAg dGNnX291dF9ieChzLCBDT05EX0FMLCBUQ0dfUkVHX1IwKTsKKyAgICB0Y2dfb3V0X21vdihzLCBU Q0dfVFlQRV9QVFIsIFRDR19BUkVHMCwgdGNnX3RhcmdldF9jYWxsX2lhcmdfcmVnc1swXSk7CisK KyAgICB0Y2dfb3V0X2J4KHMsIENPTkRfQUwsIHRjZ190YXJnZXRfY2FsbF9pYXJnX3JlZ3NbMV0p OwogICAgIHRiX3JldF9hZGRyID0gcy0+Y29kZV9wdHI7CiAKICAgICAvKiBsZG1pYSBzcCEsIHsg cjQgLSByNiwgcjggLSByMTEsIHBjIH0gKi8KZGlmZiAtLWdpdCBhL3RjZy9ocHBhL3RjZy10YXJn ZXQuYyBiL3RjZy9ocHBhL3RjZy10YXJnZXQuYwppbmRleCA3ZjQ2NTNlLi43MjQ4NTIwIDEwMDY0 NAotLS0gYS90Y2cvaHBwYS90Y2ctdGFyZ2V0LmMKKysrIGIvdGNnL2hwcGEvdGNnLXRhcmdldC5j CkBAIC0xNTk2LDcgKzE1OTYsNyBAQCBzdGF0aWMgaW50IHRjZ190YXJnZXRfY2FsbGVlX3NhdmVf cmVnc1tdID0gewogICAgIFRDR19SRUdfUjE0LAogICAgIFRDR19SRUdfUjE1LAogICAgIFRDR19S RUdfUjE2LAotICAgIC8qIFIxNyBpcyB0aGUgZ2xvYmFsIGVudiwgc28gbm8gbmVlZCB0byBzYXZl LiAgKi8KKyAgICBUQ0dfUkVHX1IxNywgLyogUjE3IGlzIHRoZSBnbG9iYWwgZW52LiAgKi8KICAg ICBUQ0dfUkVHX1IxOAogfTsKIApAQCAtMTYzNSw4ICsxNjM1LDEwIEBAIHN0YXRpYyB2b2lkIHRj Z190YXJnZXRfcWVtdV9wcm9sb2d1ZShUQ0dDb250ZXh0ICpzKQogICAgIH0KICNlbmRpZgogCisg ICAgdGNnX291dF9tb3YocywgVENHX1RZUEVfUFRSLCBUQ0dfQVJFRzAsIHRjZ190YXJnZXRfY2Fs bF9pYXJnX3JlZ3NbMF0pOworCiAgICAgLyogSnVtcCB0byBUQiwgYW5kIGFkanVzdCBSMTggdG8g YmUgdGhlIHJldHVybiBhZGRyZXNzLiAgKi8KLSAgICB0Y2dfb3V0MzIocywgSU5TTl9CTEVfU1I0 IHwgSU5TTl9SMihUQ0dfUkVHX1IyNikpOworICAgIHRjZ19vdXQzMihzLCBJTlNOX0JMRV9TUjQg fCBJTlNOX1IyKHRjZ190YXJnZXRfY2FsbF9pYXJnX3JlZ3NbMV0pKTsKICAgICB0Y2dfb3V0X21v dihzLCBUQ0dfVFlQRV9JMzIsIFRDR19SRUdfUjE4LCBUQ0dfUkVHX1IzMSk7CiAKICAgICAvKiBS ZXN0b3JlIGNhbGxlZSBzYXZlZCByZWdpc3RlcnMuICAqLwpkaWZmIC0tZ2l0IGEvdGNnL2kzODYv dGNnLXRhcmdldC5jIGIvdGNnL2kzODYvdGNnLXRhcmdldC5jCmluZGV4IGJiMTlhOTUuLjcyYjNh NDggMTAwNjQ0Ci0tLSBhL3RjZy9pMzg2L3RjZy10YXJnZXQuYworKysgYi90Y2cvaTM4Ni90Y2ct dGFyZ2V0LmMKQEAgLTE5MDEsMTAgKzE5MDEsMTAgQEAgc3RhdGljIGludCB0Y2dfdGFyZ2V0X2Nh bGxlZV9zYXZlX3JlZ3NbXSA9IHsKICAgICBUQ0dfUkVHX1JCWCwKICAgICBUQ0dfUkVHX1IxMiwK ICAgICBUQ0dfUkVHX1IxMywKLSAgICAvKiBUQ0dfUkVHX1IxNCwgKi8gLyogQ3VycmVudGx5IHVz ZWQgZm9yIHRoZSBnbG9iYWwgZW52LiAqLworICAgIFRDR19SRUdfUjE0LCAvKiBDdXJyZW50bHkg dXNlZCBmb3IgdGhlIGdsb2JhbCBlbnYuICovCiAgICAgVENHX1JFR19SMTUsCiAjZWxzZQotICAg IC8qIFRDR19SRUdfRUJQLCAqLyAvKiBDdXJyZW50bHkgdXNlZCBmb3IgdGhlIGdsb2JhbCBlbnYu ICovCisgICAgVENHX1JFR19FQlAsIC8qIEN1cnJlbnRseSB1c2VkIGZvciB0aGUgZ2xvYmFsIGVu di4gKi8KICAgICBUQ0dfUkVHX0VCWCwKICAgICBUQ0dfUkVHX0VTSSwKICAgICBUQ0dfUkVHX0VE SSwKQEAgLTE5MzMsOCArMTkzMywxMCBAQCBzdGF0aWMgdm9pZCB0Y2dfdGFyZ2V0X3FlbXVfcHJv bG9ndWUoVENHQ29udGV4dCAqcykKICAgICBzdGFja19hZGRlbmQgPSBmcmFtZV9zaXplIC0gcHVz aF9zaXplOwogICAgIHRjZ19vdXRfYWRkaShzLCBUQ0dfUkVHX0VTUCwgLXN0YWNrX2FkZGVuZCk7 CiAKKyAgICB0Y2dfb3V0X21vdihzLCBUQ0dfVFlQRV9QVFIsIFRDR19BUkVHMCwgdGNnX3Rhcmdl dF9jYWxsX2lhcmdfcmVnc1swXSk7CisKICAgICAvKiBqbXAgKnRiLiAgKi8KLSAgICB0Y2dfb3V0 X21vZHJtKHMsIE9QQ19HUlA1LCBFWFQ1X0pNUE5fRXYsIHRjZ190YXJnZXRfY2FsbF9pYXJnX3Jl Z3NbMF0pOworICAgIHRjZ19vdXRfbW9kcm0ocywgT1BDX0dSUDUsIEVYVDVfSk1QTl9FdiwgdGNn X3RhcmdldF9jYWxsX2lhcmdfcmVnc1sxXSk7CiAKICAgICAvKiBUQiBlcGlsb2d1ZSAqLwogICAg IHRiX3JldF9hZGRyID0gcy0+Y29kZV9wdHI7CmRpZmYgLS1naXQgYS90Y2cvaWE2NC90Y2ctdGFy Z2V0LmMgYi90Y2cvaWE2NC90Y2ctdGFyZ2V0LmMKaW5kZXggOGRhYzdmNy4uMjQ2YjJjMCAxMDA2 NDQKLS0tIGEvdGNnL2lhNjQvdGNnLXRhcmdldC5jCisrKyBiL3RjZy9pYTY0L3RjZy10YXJnZXQu YwpAQCAtMjI5Miw3ICsyMjkyLDcgQEAgc3RhdGljIHZvaWQgdGNnX3RhcmdldF9xZW11X3Byb2xv Z3VlKFRDR0NvbnRleHQgKnMpCiAgICAgICAgICAgICAgICAgICAgdGNnX29wY19tMzQoVENHX1JF R19QMCwgT1BDX0FMTE9DX00zNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0df UkVHX1IzMywgMzIsIDI0LCAwKSwKICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kyMShUQ0df UkVHX1AwLCBPUENfTU9WX0kyMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0df UkVHX0I2LCBUQ0dfUkVHX1IzMiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VENHX1JFR19CNiwgVENHX1JFR19SMzMsIDApLAogICAgICAgICAgICAgICAgICAgIHRjZ19vcGNf aTIyKFRDR19SRUdfUDAsIE9QQ19NT1ZfSTIyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRDR19SRUdfUjMyLCBUQ0dfUkVHX0IwKSk7CiAKQEAgLTIzMDgsNyArMjMwOCw4IEBAIHN0 YXRpYyB2b2lkIHRjZ190YXJnZXRfcWVtdV9wcm9sb2d1ZShUQ0dDb250ZXh0ICpzKQogICAgIH0K IAogICAgIHRjZ19vdXRfYnVuZGxlKHMsIG1pQiwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3Bj X200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCisgICAgICAgICAgICAgICAgICAgdGNn X29wY19tNDgoVENHX1JFR19QMCwgT1BDX01PVl9JMjEsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVENHX1JFR19BUkVHMCwgVENHX1JFR19SMzIsIDApLAogICAgICAgICAgICAgICAg ICAgIHRjZ19vcGNfYTQgKFRDR19SRUdfUDAsIE9QQ19BRERTX0E0LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRDR19SRUdfUjEyLCAtZnJhbWVfc2l6ZSwgVENHX1JFR19SMTIpLAog ICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfYjQgKFRDR19SRUdfUDAsIE9QQ19CUl9TUFRLX01B TllfQjQsIFRDR19SRUdfQjYpKTsKZGlmZiAtLWdpdCBhL3RjZy9taXBzL3RjZy10YXJnZXQuYyBi L3RjZy9taXBzL3RjZy10YXJnZXQuYwppbmRleCBlMDRiMGRjLi5jYjJhYjhiIDEwMDY0NAotLS0g YS90Y2cvbWlwcy90Y2ctdGFyZ2V0LmMKKysrIGIvdGNnL21pcHMvdGNnLXRhcmdldC5jCkBAIC0x NDUyLDkgKzE0NTIsNyBAQCBzdGF0aWMgY29uc3QgVENHVGFyZ2V0T3BEZWYgbWlwc19vcF9kZWZz W10gPSB7CiB9OwogCiBzdGF0aWMgaW50IHRjZ190YXJnZXRfY2FsbGVlX3NhdmVfcmVnc1tdID0g ewotI2lmIDAgLyogdXNlZCBmb3IgdGhlIGdsb2JhbCBlbnYgKFRDR19BUkVHMCksIHNvIG5vIG5l ZWQgdG8gc2F2ZSAqLwotICAgIFRDR19SRUdfUzAsCi0jZW5kaWYKKyAgICBUQ0dfUkVHX1MwLCAg ICAgICAvKiB1c2VkIGZvciB0aGUgZ2xvYmFsIGVudiAoVENHX0FSRUcwKSAqLwogICAgIFRDR19S RUdfUzEsCiAgICAgVENHX1JFR19TMiwKICAgICBUQ0dfUkVHX1MzLApAQCAtMTQ4Niw4ICsxNDg0 LDggQEAgc3RhdGljIHZvaWQgdGNnX3RhcmdldF9xZW11X3Byb2xvZ3VlKFRDR0NvbnRleHQgKnMp CiAgICAgfQogCiAgICAgLyogQ2FsbCBnZW5lcmF0ZWQgY29kZSAqLwotICAgIHRjZ19vdXRfb3Bj X3JlZyhzLCBPUENfSlIsIDAsIFRDR19SRUdfQTAsIDApOwotICAgIHRjZ19vdXRfbm9wKHMpOwor ICAgIHRjZ19vdXRfb3BjX3JlZyhzLCBPUENfSlIsIDAsIHRjZ190YXJnZXRfY2FsbF9pYXJnX3Jl Z3NbMV0pLCAwKTsKKyAgICB0Y2dfb3V0X21vdihzLCBUQ0dfVFlQRV9QVFIsIFRDR19BUkVHMCwg dGNnX3RhcmdldF9jYWxsX2lhcmdfcmVnc1swXSk7CiAgICAgdGJfcmV0X2FkZHIgPSBzLT5jb2Rl X3B0cjsKIAogICAgIC8qIFRCIGVwaWxvZ3VlICovCmRpZmYgLS1naXQgYS90Y2cvcHBjL3RjZy10 YXJnZXQuYyBiL3RjZy9wcGMvdGNnLXRhcmdldC5jCmluZGV4IDc5NzAyNjguLjI2NmU2OTkgMTAw NjQ0Ci0tLSBhL3RjZy9wcGMvdGNnLXRhcmdldC5jCisrKyBiL3RjZy9wcGMvdGNnLXRhcmdldC5j CkBAIC0xNjAsOCArMTYwLDcgQEAgc3RhdGljIGNvbnN0IGludCB0Y2dfdGFyZ2V0X2NhbGxlZV9z YXZlX3JlZ3NbXSA9IHsKICAgICBUQ0dfUkVHX1IyNCwKICAgICBUQ0dfUkVHX1IyNSwKICAgICBU Q0dfUkVHX1IyNiwKLSAgICAvKiBUQ0dfUkVHX1IyNywgKi8gLyogY3VycmVudGx5IHVzZWQgZm9y IHRoZSBnbG9iYWwgZW52LCBzbyBubwotICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRv IHNhdmUgKi8KKyAgICBUQ0dfUkVHX1IyNywgLyogY3VycmVudGx5IHVzZWQgZm9yIHRoZSBnbG9i YWwgZW52ICovCiAgICAgVENHX1JFR19SMjgsCiAgICAgVENHX1JFR19SMjksCiAgICAgVENHX1JF R19SMzAsCkBAIC05MzksNyArOTM4LDggQEAgc3RhdGljIHZvaWQgdGNnX3RhcmdldF9xZW11X3By b2xvZ3VlIChUQ0dDb250ZXh0ICpzKQogICAgIH0KICNlbmRpZgogCi0gICAgdGNnX291dDMyIChz LCBNVFNQUiB8IFJTICgzKSB8IENUUik7CisgICAgdGNnX291dF9tb3YgKHMsIFRDR19UWVBFX1BU UiwgVENHX0FSRUcwLCB0Y2dfdGFyZ2V0X2NhbGxfaWFyZ19yZWdzWzBdKTsKKyAgICB0Y2dfb3V0 MzIgKHMsIE1UU1BSIHwgUlMgKHRjZ190YXJnZXRfY2FsbF9pYXJnX3JlZ3NbMV0pIHwgQ1RSKTsK ICAgICB0Y2dfb3V0MzIgKHMsIEJDQ1RSIHwgQk9fQUxXQVlTKTsKICAgICB0Yl9yZXRfYWRkciA9 IHMtPmNvZGVfcHRyOwogCmRpZmYgLS1naXQgYS90Y2cvcHBjNjQvdGNnLXRhcmdldC5jIGIvdGNn L3BwYzY0L3RjZy10YXJnZXQuYwppbmRleCBlYmJlZTM0Li4yZTNjZDJiIDEwMDY0NAotLS0gYS90 Y2cvcHBjNjQvdGNnLXRhcmdldC5jCisrKyBiL3RjZy9wcGM2NC90Y2ctdGFyZ2V0LmMKQEAgLTE1 MSw4ICsxNTEsNyBAQCBzdGF0aWMgY29uc3QgaW50IHRjZ190YXJnZXRfY2FsbGVlX3NhdmVfcmVn c1tdID0gewogICAgIFRDR19SRUdfUjI0LAogICAgIFRDR19SRUdfUjI1LAogICAgIFRDR19SRUdf UjI2LAotICAgIC8qIFRDR19SRUdfUjI3LCAqLyAvKiBjdXJyZW50bHkgdXNlZCBmb3IgdGhlIGds b2JhbCBlbnYsIHNvIG5vCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gc2F2ZSAq LworICAgIFRDR19SRUdfUjI3LCAvKiBjdXJyZW50bHkgdXNlZCBmb3IgdGhlIGdsb2JhbCBlbnYg Ki8KICAgICBUQ0dfUkVHX1IyOCwKICAgICBUQ0dfUkVHX1IyOSwKICAgICBUQ0dfUkVHX1IzMCwK QEAgLTkwNSw3ICs5MDQsOCBAQCBzdGF0aWMgdm9pZCB0Y2dfdGFyZ2V0X3FlbXVfcHJvbG9ndWUg KFRDR0NvbnRleHQgKnMpCiAgICAgfQogI2VuZGlmCiAKLSAgICB0Y2dfb3V0MzIgKHMsIE1UU1BS IHwgUlMgKDMpIHwgQ1RSKTsKKyAgICB0Y2dfb3V0X21vdiAocywgVENHX1RZUEVfUFRSLCBUQ0df QVJFRzAsIHRjZ190YXJnZXRfY2FsbF9pYXJnX3JlZ3NbMF0pOworICAgIHRjZ19vdXQzMiAocywg TVRTUFIgfCBSUyAodGNnX3RhcmdldF9jYWxsX2lhcmdfcmVnc1sxXSkgfCBDVFIpOwogICAgIHRj Z19vdXQzMiAocywgQkNDVFIgfCBCT19BTFdBWVMpOwogCiAgICAgLyogRXBpbG9ndWUgKi8KZGlm ZiAtLWdpdCBhL3RjZy9zMzkwL3RjZy10YXJnZXQuYyBiL3RjZy9zMzkwL3RjZy10YXJnZXQuYwpp bmRleCA0NTBmY2FiLi44ZDg0OThjIDEwMDY0NAotLS0gYS90Y2cvczM5MC90Y2ctdGFyZ2V0LmMK KysrIGIvdGNnL3MzOTAvdGNnLXRhcmdldC5jCkBAIC0yMzA2LDggKzIzMDYsOSBAQCBzdGF0aWMg dm9pZCB0Y2dfdGFyZ2V0X3FlbXVfcHJvbG9ndWUoVENHQ29udGV4dCAqcykKICAgICAgICAgdGNn X3JlZ3NldF9zZXRfcmVnKHMtPnJlc2VydmVkX3JlZ3MsIFRDR19HVUVTVF9CQVNFX1JFRyk7CiAg ICAgfQogCi0gICAgLyogYnIgJXIyIChnbyB0byBUQikgKi8KLSAgICB0Y2dfb3V0X2luc24ocywg UlIsIEJDUiwgUzM5MF9DQ19BTFdBWVMsIFRDR19SRUdfUjIpOworICAgIHRjZ19vdXRfbW92KHMs IFRDR19UWVBFX1BUUiwgVENHX0FSRUcwLCB0Y2dfdGFyZ2V0X2NhbGxfaWFyZ19yZWdzWzBdKTsK KyAgICAvKiBiciAlcjMgKGdvIHRvIFRCKSAqLworICAgIHRjZ19vdXRfaW5zbihzLCBSUiwgQkNS LCBTMzkwX0NDX0FMV0FZUywgdGNnX3RhcmdldF9jYWxsX2lhcmdfcmVnc1sxXSk7CiAKICAgICB0 Yl9yZXRfYWRkciA9IHMtPmNvZGVfcHRyOwogCmRpZmYgLS1naXQgYS90Y2cvc3BhcmMvdGNnLXRh cmdldC5jIGIvdGNnL3NwYXJjL3RjZy10YXJnZXQuYwppbmRleCA1ZjEzNTNhLi5lY2Y3YWNlIDEw MDY0NAotLS0gYS90Y2cvc3BhcmMvdGNnLXRhcmdldC5jCisrKyBiL3RjZy9zcGFyYy90Y2ctdGFy Z2V0LmMKQEAgLTY5NSw5ICs2OTUsOSBAQCBzdGF0aWMgdm9pZCB0Y2dfdGFyZ2V0X3FlbXVfcHJv bG9ndWUoVENHQ29udGV4dCAqcykKIHsKICAgICB0Y2dfb3V0MzIocywgU0FWRSB8IElOU05fUkQo VENHX1JFR19PNikgfCBJTlNOX1JTMShUQ0dfUkVHX082KSB8CiAgICAgICAgICAgICAgIElOU05f SU1NMTMoLVRDR19UQVJHRVRfU1RBQ0tfTUlORlJBTUUpKTsKLSAgICB0Y2dfb3V0MzIocywgSk1Q TCB8IElOU05fUkQoVENHX1JFR19HMCkgfCBJTlNOX1JTMShUQ0dfUkVHX0kwKSB8CisgICAgdGNn X291dDMyKHMsIEpNUEwgfCBJTlNOX1JEKFRDR19SRUdfRzApIHwgSU5TTl9SUzEoVENHX1JFR19J MSkgfAogICAgICAgICAgICAgICBJTlNOX1JTMihUQ0dfUkVHX0cwKSk7Ci0gICAgdGNnX291dF9u b3Aocyk7CisgICAgdGNnX291dF9tb3YocywgVENHX1RZUEVfUFRSLCBUQ0dfQVJFRzAsIFRDR19S RUdfSTApOwogfQogCiAjaWYgZGVmaW5lZChDT05GSUdfU09GVE1NVSkKZGlmZiAtLWdpdCBhL3Rj Zy90Y2cuaCBiL3RjZy90Y2cuaAppbmRleCBjZWNlZjYzLi43M2U2OTU0IDEwMDY0NAotLS0gYS90 Y2cvdGNnLmgKKysrIGIvdGNnL3RjZy5oCkBAIC00OTksOCArNDk5LDkgQEAgVENHdl9pNjQgdGNn X2NvbnN0X2xvY2FsX2k2NChpbnQ2NF90IHZhbCk7CiAKIGV4dGVybiB1aW50OF90IGNvZGVfZ2Vu X3Byb2xvZ3VlW107CiAjaWYgZGVmaW5lZChfQVJDSF9QUEMpICYmICFkZWZpbmVkKF9BUkNIX1BQ QzY0KQotI2RlZmluZSB0Y2dfcWVtdV90Yl9leGVjKHRiX3B0cikgXAotICAgICgobG9uZyBSRUdQ QVJNIF9fYXR0cmlidXRlX18gKChsb25nY2FsbCkpICgqKSh2b2lkICopKWNvZGVfZ2VuX3Byb2xv Z3VlKSh0Yl9wdHIpCisjZGVmaW5lIHRjZ19xZW11X3RiX2V4ZWMoZW52LCB0Yl9wdHIpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgobG9uZyBSRUdQQVJNIF9fYXR0 cmlidXRlX18gKChsb25nY2FsbCkpICgqKSh2b2lkICosIHZvaWQgKikpY29kZV9nZW5fcHJvbG9n dWUpKGVudiwgdGJfcHRyKQogI2Vsc2UKLSNkZWZpbmUgdGNnX3FlbXVfdGJfZXhlYyh0Yl9wdHIp ICgobG9uZyBSRUdQQVJNICgqKSh2b2lkICopKWNvZGVfZ2VuX3Byb2xvZ3VlKSh0Yl9wdHIpCisj ZGVmaW5lIHRjZ19xZW11X3RiX2V4ZWMoZW52LCB0Yl9wdHIpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICgobG9uZyBSRUdQQVJNICgqKSh2b2lkICosIHZvaWQgKikp Y29kZV9nZW5fcHJvbG9ndWUpKGVudiwgdGJfcHRyKQogI2VuZGlmCi0tIAoxLjcuMi41Cgo= --20cf3005149e7ff29504a3e03bc8--