From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1M350g-00020v-Ad for qemu-devel@nongnu.org; Sun, 10 May 2009 05:07:50 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1M350b-00020c-R2 for qemu-devel@nongnu.org; Sun, 10 May 2009 05:07:49 -0400 Received: from [199.232.76.173] (port=36587 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1M350b-00020Z-L7 for qemu-devel@nongnu.org; Sun, 10 May 2009 05:07:45 -0400 Received: from mail-bw0-f175.google.com ([209.85.218.175]:64658) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1M350a-0004Ij-Dr for qemu-devel@nongnu.org; Sun, 10 May 2009 05:07:45 -0400 Received: by bwz23 with SMTP id 23so1951712bwz.34 for ; Sun, 10 May 2009 02:07:43 -0700 (PDT) MIME-Version: 1.0 Date: Sun, 10 May 2009 12:07:43 +0300 Message-ID: From: Blue Swirl Content-Type: multipart/mixed; boundary=0016363b9cc2c3cde104698b310b Subject: [Qemu-devel] Dynamic condition code calculation for Sparc List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel --0016363b9cc2c3cde104698b310b Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, I just committed a patch series, which implement dynamic condition code calculation for Sparc, much like x86. The speedup for Sparc64 is clearly visible, less so for Sparc32. The attached follow-on optimization patches implement leaner carry calculation and calculating the (annulled) branch brcond directly from comparison sources, but currently they cause breakage. Also the normal branches should be converted to calculate the brcond directly, but this fails if the branch delay slot contains an instruction that changes the flags. I had some code for this but had to scratch it. Any suggestions welcome. --0016363b9cc2c3cde104698b310b Content-Type: application/mbox; name="0001-Branch-optimization-BROKEN.patch" Content-Disposition: attachment; filename="0001-Branch-optimization-BROKEN.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fujitczu RnJvbSAzMDJhY2U3OTAyZjU0M2I0NjIzYTJiZmFhN2ZkNDdjYTYyYWEzYzg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCbHVlIFN3aXJsIDxibGF1d2lyYmVsQGdtYWlsLmNvbT4KRGF0 ZTogU3VuLCAxMCBNYXkgMjAwOSAwODo1MDozOSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEJyYW5j aCBvcHRpbWl6YXRpb24gQlJPS0VOCgpTaWduZWQtb2ZmLWJ5OiBCbHVlIFN3aXJsIDxibGF1d2ly YmVsQGdtYWlsLmNvbT4KLS0tCiB0YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMgfCAgMTA4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZXMgY2hhbmdl ZCwgMTA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGFyZ2V0 LXNwYXJjL3RyYW5zbGF0ZS5jIGIvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCmluZGV4IDc2Mjc0 OWIuLmU0ZGQzZTggMTAwNjQ0Ci0tLSBhL3RhcmdldC1zcGFyYy90cmFuc2xhdGUuYworKysgYi90 YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMKQEAgLTExMDUsNiArMTEwNSwxMDQgQEAgc3RhdGljIGlu bGluZSB2b2lkIGdlbl9jb25kX3JlZyhUQ0d2IHJfZHN0LCBpbnQgY29uZCwgVENHdiByX3NyYykK IH0KICNlbmRpZgogCisvLyBJbnZlcnRlZCBsb2dpYworc3RhdGljIGNvbnN0IGludCBnZW5fdGNn X2NvbmRbMTZdID0geworICAgIC0xLAorICAgIFRDR19DT05EX05FLAorICAgIFRDR19DT05EX0dU LAorICAgIFRDR19DT05EX0dFLAorICAgIFRDR19DT05EX0dUVSwKKyAgICBUQ0dfQ09ORF9HRVUs CisgICAgLTEsCisgICAgLTEsCisgICAgLTEsCisgICAgVENHX0NPTkRfRVEsCisgICAgVENHX0NP TkRfTEUsCisgICAgVENHX0NPTkRfTFQsCisgICAgVENHX0NPTkRfTEVVLAorICAgIFRDR19DT05E X0xUVSwKKyAgICAtMSwKKyAgICAtMSwKK307CisKKy8qIGdlbmVyYXRlIGEgY29uZGl0aW9uYWwg anVtcCB0byBsYWJlbCAnbDEnIGFjY29yZGluZyB0byBqdW1wIG9wY29kZQorICAgdmFsdWUgJ2In LiBJbiB0aGUgZmFzdCBjYXNlLCBUMCBpcyBndWFyYW50ZWQgbm90IHRvIGJlIHVzZWQuICovCitz dGF0aWMgaW5saW5lIHZvaWQgZ2VuX2JyY29uZChEaXNhc0NvbnRleHQgKmRjLCBpbnQgY29uZCwg aW50IGwxLCBpbnQgY2MsIFRDR3Ygcl9jb25kKQoreworICAgIC8vcHJpbnRmKCJnZW5fYnJjb25k OiBjY19vcCAlZFxuIiwgZGMtPmNjX29wKTsKKyAgICBzd2l0Y2ggKGRjLT5jY19vcCkgeworICAg ICAgICAvKiB3ZSBvcHRpbWl6ZSB0aGUgY21wL2JyIGNhc2UgKi8KKyAgICBjYXNlIENDX09QX1NV QjoKKyAgICAgICAgLy8gSW52ZXJ0ZWQgbG9naWMKKyAgICAgICAgc3dpdGNoIChjb25kKSB7Cisg ICAgICAgIGNhc2UgMHgwOiAvLyBuCisgICAgICAgICAgICB0Y2dfZ2VuX2JyKGwxKTsKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDB4MTogLy8gZQorICAgICAgICAgICAgaWYgKGNj ID09IDEpIHsKKyAgICAgICAgICAgICAgICB0Y2dfZ2VuX2JyY29uZGlfaTY0KFRDR19DT05EX05F LCBjcHVfY2NfZHN0LCAwLCBsMSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg ICAgIHRjZ19nZW5fYnJjb25kaV9pMzIoVENHX0NPTkRfTkUsIGNwdV9jY19kc3QsIDAsIGwxKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDB4MjogLy8g bGUKKyAgICAgICAgY2FzZSAweDM6IC8vIGwKKyAgICAgICAgY2FzZSAweDQ6IC8vIGxldQorICAg ICAgICBjYXNlIDB4NTogLy8gY3MvbHUKKyAgICAgICAgY2FzZSAweGE6IC8vIGcKKyAgICAgICAg Y2FzZSAweGI6IC8vIGdlCisgICAgICAgIGNhc2UgMHhjOiAvLyBndQorICAgICAgICBjYXNlIDB4 ZDogLy8gY2MvZ2V1CisgICAgICAgICAgICBpZiAoY2MgPT0gMSkgeworICAgICAgICAgICAgICAg IHRjZ19nZW5fYnJjb25kaV9pNjQoZ2VuX3RjZ19jb25kW2NvbmRdLCBjcHVfY2Nfc3JjLCBjcHVf Y2Nfc3JjMiwgbDEpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0Y2df Z2VuX2JyY29uZGlfaTMyKGdlbl90Y2dfY29uZFtjb25kXSwgY3B1X2NjX3NyYywgY3B1X2NjX3Ny YzIsIGwxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl IDB4NjogLy8gbmVnCisgICAgICAgICAgICBpZiAoY2MgPT0gMSkgeworICAgICAgICAgICAgICAg IHRjZ19nZW5fYnJjb25kaV9pNjQoVENHX0NPTkRfR0UsIGNwdV9jY19kc3QsIDAsIGwxKTsKKyAg ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGNnX2dlbl9icmNvbmRpX2kzMihU Q0dfQ09ORF9HRSwgY3B1X2NjX2RzdCwgMCwgbDEpOworICAgICAgICAgICAgfQorICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgIGNhc2UgMHg3OiAvLyB2cworICAgICAgICAgICAgZ2VuX2hlbHBl cl9jb21wdXRlX3BzcigpOworICAgICAgICAgICAgZGMtPmNjX29wID0gQ0NfT1BfRkxBR1M7Cisg ICAgICAgICAgICBnZW5fb3BfZXZhbF9idnMoY3B1X2NjX2RzdCwgY3B1X2NjX3NyYyk7CisgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAweDg6IC8vIGEKKyAgICAgICAgICAgIC8vIG5v cAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMHg5OiAvLyBuZQorICAgICAgICAg ICAgaWYgKGNjID09IDEpIHsKKyAgICAgICAgICAgICAgICB0Y2dfZ2VuX2JyY29uZGlfaTY0KFRD R19DT05EX0VRLCBjcHVfY2NfZHN0LCAwLCBsMSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgICAgIHRjZ19nZW5fYnJjb25kaV9pMzIoVENHX0NPTkRfRVEsIGNwdV9jY19kc3Qs IDAsIGwxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl IDB4ZTogLy8gcG9zCisgICAgICAgICAgICBpZiAoY2MgPT0gMSkgeworICAgICAgICAgICAgICAg IHRjZ19nZW5fYnJjb25kaV9pNjQoVENHX0NPTkRfTFQsIGNwdV9jY19kc3QsIDAsIGwxKTsKKyAg ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGNnX2dlbl9icmNvbmRpX2kzMihU Q0dfQ09ORF9MVCwgY3B1X2NjX2RzdCwgMCwgbDEpOworICAgICAgICAgICAgfQorICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgIGNhc2UgMHhmOiAvLyB2YworICAgICAgICAgICAgZ2VuX2hlbHBl cl9jb21wdXRlX3BzcigpOworICAgICAgICAgICAgZGMtPmNjX29wID0gQ0NfT1BfRkxBR1M7Cisg ICAgICAgICAgICBnZW5fb3BfZXZhbF9idmMoY3B1X2NjX2RzdCwgY3B1X2NjX3NyYyk7CisgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIENDX09Q X0ZMQUdTOgorICAgIGRlZmF1bHQ6CisgICAgICAgIGdlbl9jb25kKHJfY29uZCwgY2MsIGNvbmQs IGRjKTsKKyAgICAgICAgdGNnX2dlbl9icmNvbmRpX3RsKFRDR19DT05EX0VRLCByX2NvbmQsIDAs IGwxKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiAvKiBYWFg6IHBvdGVudGlhbGx5IGlu Y29ycmVjdCBpZiBkeW5hbWljIG5wYyAqLwogc3RhdGljIHZvaWQgZG9fYnJhbmNoKERpc2FzQ29u dGV4dCAqZGMsIGludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBpbnNuLCBpbnQgY2MsCiAgICAgICAg ICAgICAgICAgICAgICAgVENHdiByX2NvbmQpCkBAIC0xMTMyLDExICsxMjMwLDE3IEBAIHN0YXRp YyB2b2lkIGRvX2JyYW5jaChEaXNhc0NvbnRleHQgKmRjLCBpbnQzMl90IG9mZnNldCwgdWludDMy X3QgaW5zbiwgaW50IGNjLAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgZmx1c2hf Y29uZChkYywgcl9jb25kKTsKLSAgICAgICAgZ2VuX2NvbmQocl9jb25kLCBjYywgY29uZCwgZGMp OwogICAgICAgICBpZiAoYSkgewotICAgICAgICAgICAgZ2VuX2JyYW5jaF9hKGRjLCB0YXJnZXQs IGRjLT5ucGMsIHJfY29uZCk7CisgICAgICAgICAgICBpbnQgbDEgPSBnZW5fbmV3X2xhYmVsKCk7 CisKKyAgICAgICAgICAgIGdlbl9icmNvbmQoZGMsIGNvbmQsIGwxLCBjYywgcl9jb25kKTsKKyAg ICAgICAgICAgIGdlbl9nb3RvX3RiKGRjLCAwLCBkYy0+bnBjLCB0YXJnZXQpOworCisgICAgICAg ICAgICBnZW5fc2V0X2xhYmVsKGwxKTsKKyAgICAgICAgICAgIGdlbl9nb3RvX3RiKGRjLCAxLCBk Yy0+bnBjICsgNCwgZGMtPm5wYyArIDgpOwogICAgICAgICAgICAgZGMtPmlzX2JyID0gMTsKICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdlbl9jb25kKHJfY29uZCwgY2MsIGNvbmQsIGRj KTsKICAgICAgICAgICAgIGRjLT5wYyA9IGRjLT5ucGM7CiAgICAgICAgICAgICBkYy0+anVtcF9w Y1swXSA9IHRhcmdldDsKICAgICAgICAgICAgIGRjLT5qdW1wX3BjWzFdID0gZGMtPm5wYyArIDQ7 Ci0tIAoxLjUuNi41Cgo= --0016363b9cc2c3cde104698b310b Content-Type: application/mbox; name="0001-Convert-C-flag-input-BROKEN.patch" Content-Disposition: attachment; filename="0001-Convert-C-flag-input-BROKEN.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fujitljm RnJvbSA5Mzk2Y2Y2NTc2NDE1MGZjMzM2YjFmNzZjYjE5MzVjYWM1YjNhZDJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCbHVlIFN3aXJsIDxibGF1d2lyYmVsQGdtYWlsLmNvbT4KRGF0 ZTogU3VuLCAxMCBNYXkgMjAwOSAwODo1MDozNCArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIENvbnZl cnQgQyBmbGFnIGlucHV0IEJST0tFTgoKU2lnbmVkLW9mZi1ieTogQmx1ZSBTd2lybCA8YmxhdXdp cmJlbEBnbWFpbC5jb20+Ci0tLQogdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jIHwgICAyNCArKysr KysrKy0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAx NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMgYi90 YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMKaW5kZXggY2QyMmYyYi4uNzYyNzQ5YiAxMDA2NDQKLS0t IGEvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCisrKyBiL3RhcmdldC1zcGFyYy90cmFuc2xhdGUu YwpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3BfYWRkeGlfY2Mo VENHdiBkc3QsIFRDR3Ygc3JjMSwgdGFyZ2V0X2xvbmcgc3JjMikKIHsKICAgICB0Y2dfZ2VuX21v dl90bChjcHVfY2Nfc3JjLCBzcmMxKTsKICAgICB0Y2dfZ2VuX21vdmlfdGwoY3B1X2NjX3NyYzIs IHNyYzIpOwotICAgIGdlbl9tb3ZfcmVnX0MoY3B1X3RtcDAsIGNwdV9wc3IpOworICAgIGdlbl9o ZWxwZXJfY29tcHV0ZV9DX2ljYyhjcHVfdG1wMCk7CiAgICAgdGNnX2dlbl9hZGRfdGwoY3B1X2Nj X2RzdCwgY3B1X2NjX3NyYywgY3B1X3RtcDApOwogICAgIHRjZ19nZW5fYWRkaV90bChjcHVfY2Nf ZHN0LCBjcHVfY2NfZHN0LCBzcmMyKTsKICAgICB0Y2dfZ2VuX21vdl90bChkc3QsIGNwdV9jY19k c3QpOwpAQCAtMzQxLDcgKzM0MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3BfYWRkeF9j YyhUQ0d2IGRzdCwgVENHdiBzcmMxLCBUQ0d2IHNyYzIpCiB7CiAgICAgdGNnX2dlbl9tb3ZfdGwo Y3B1X2NjX3NyYywgc3JjMSk7CiAgICAgdGNnX2dlbl9tb3ZfdGwoY3B1X2NjX3NyYzIsIHNyYzIp OwotICAgIGdlbl9tb3ZfcmVnX0MoY3B1X3RtcDAsIGNwdV9wc3IpOworICAgIGdlbl9oZWxwZXJf Y29tcHV0ZV9DX2ljYyhjcHVfdG1wMCk7CiAgICAgdGNnX2dlbl9hZGRfdGwoY3B1X2NjX2RzdCwg Y3B1X2NjX3NyYywgY3B1X3RtcDApOwogICAgIHRjZ19nZW5fYWRkX3RsKGNwdV9jY19kc3QsIGNw dV9jY19kc3QsIGNwdV9jY19zcmMyKTsKICAgICB0Y2dfZ2VuX21vdl90bChkc3QsIGNwdV9jY19k c3QpOwpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3Bfc3VieGlf Y2MoVENHdiBkc3QsIFRDR3Ygc3JjMSwgdGFyZ2V0X2xvbmcgc3JjMikKIHsKICAgICB0Y2dfZ2Vu X21vdl90bChjcHVfY2Nfc3JjLCBzcmMxKTsKICAgICB0Y2dfZ2VuX21vdmlfdGwoY3B1X2NjX3Ny YzIsIHNyYzIpOwotICAgIGdlbl9tb3ZfcmVnX0MoY3B1X3RtcDAsIGNwdV9wc3IpOworICAgIGdl bl9oZWxwZXJfY29tcHV0ZV9DX2ljYyhjcHVfdG1wMCk7CiAgICAgdGNnX2dlbl9zdWJfdGwoY3B1 X2NjX2RzdCwgY3B1X2NjX3NyYywgY3B1X3RtcDApOwogICAgIHRjZ19nZW5fc3ViaV90bChjcHVf Y2NfZHN0LCBjcHVfY2NfZHN0LCBzcmMyKTsKICAgICB0Y2dfZ2VuX21vdl90bChkc3QsIGNwdV9j Y19kc3QpOwpAQCAtNDI0LDcgKzQyNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3Bfc3Vi eF9jYyhUQ0d2IGRzdCwgVENHdiBzcmMxLCBUQ0d2IHNyYzIpCiB7CiAgICAgdGNnX2dlbl9tb3Zf dGwoY3B1X2NjX3NyYywgc3JjMSk7CiAgICAgdGNnX2dlbl9tb3ZfdGwoY3B1X2NjX3NyYzIsIHNy YzIpOwotICAgIGdlbl9tb3ZfcmVnX0MoY3B1X3RtcDAsIGNwdV9wc3IpOworICAgIGdlbl9oZWxw ZXJfY29tcHV0ZV9DX2ljYyhjcHVfdG1wMCk7CiAgICAgdGNnX2dlbl9zdWJfdGwoY3B1X2NjX2Rz dCwgY3B1X2NjX3NyYywgY3B1X3RtcDApOwogICAgIHRjZ19nZW5fc3ViX3RsKGNwdV9jY19kc3Qs IGNwdV9jY19kc3QsIGNwdV9jY19zcmMyKTsKICAgICB0Y2dfZ2VuX21vdl90bChkc3QsIGNwdV9j Y19kc3QpOwpAQCAtMjkxNywyNSArMjkxNywyMSBAQCBzdGF0aWMgdm9pZCBkaXNhc19zcGFyY19p bnNuKERpc2FzQ29udGV4dCAqIGRjKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElTX0lN TSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbW0gPSBHRVRfRklFTERzKGluc24s IDE5LCAzMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhvcCAmIDB4MTApIHsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX2hlbHBlcl9jb21wdXRlX3Bzcigp OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5fb3BfYWRkeGlfY2MoY3B1X2Rz dCwgY3B1X3NyYzEsIHNpbW0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2df Z2VuX21vdmlfaTMyKGNwdV9jY19vcCwgQ0NfT1BfQUREWCk7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRjLT5jY19vcCA9IENDX09QX0FERFg7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX2hl bHBlcl9jb21wdXRlX3BzcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5f bW92X3JlZ19DKGNwdV90bXAwLCBjcHVfcHNyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2VuX2hlbHBlcl9jb21wdXRlX0NfaWNjKGNwdV90bXAwKTsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGNwdV90bXAwLCBjcHVfdG1wMCwgc2lt bSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fYWRkX3RsKGNwdV9k c3QsIGNwdV9zcmMxLCBjcHVfdG1wMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAoeG9wICYgMHgxMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZW5faGVscGVyX2NvbXB1dGVfcHNyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdlbl9vcF9hZGR4X2NjKGNwdV9kc3QsIGNwdV9zcmMxLCBjcHVfc3JjMik7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fbW92aV9pMzIoY3B1X2NjX29wLCBDQ19PUF9B RERYKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGMtPmNjX29wID0gQ0NfT1Bf QUREWDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZW5faGVscGVyX2NvbXB1dGVfcHNyKCk7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdlbl9tb3ZfcmVnX0MoY3B1X3RtcDAsIGNwdV9wc3IpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5faGVscGVyX2NvbXB1dGVfQ19pY2Mo Y3B1X3RtcDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2FkZF90 bChjcHVfdG1wMCwgY3B1X3NyYzIsIGNwdV90bXAwKTsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGNnX2dlbl9hZGRfdGwoY3B1X2RzdCwgY3B1X3NyYzEsIGNwdV90bXAwKTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yOTczLDI1ICsyOTY5LDIxIEBAIHN0YXRp YyB2b2lkIGRpc2FzX3NwYXJjX2luc24oRGlzYXNDb250ZXh0ICogZGMpCiAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAoSVNfSU1NKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lt bSA9IEdFVF9GSUVMRHMoaW5zbiwgMTksIDMxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoeG9wICYgMHgxMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5f aGVscGVyX2NvbXB1dGVfcHNyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl bl9vcF9zdWJ4aV9jYyhjcHVfZHN0LCBjcHVfc3JjMSwgc2ltbSk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRjZ19nZW5fbW92aV9pMzIoY3B1X2NjX29wLCBDQ19PUF9TVUJYKTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGMtPmNjX29wID0gQ0NfT1BfU1VCWDsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZW5faGVscGVyX2NvbXB1dGVfcHNyKCk7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdlbl9tb3ZfcmVnX0MoY3B1X3RtcDAsIGNwdV9wc3IpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5faGVscGVyX2NvbXB1dGVfQ19pY2MoY3B1X3Rt cDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2FkZGlfdGwoY3B1 X3RtcDAsIGNwdV90bXAwLCBzaW1tKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGNnX2dlbl9zdWJfdGwoY3B1X2RzdCwgY3B1X3NyYzEsIGNwdV90bXAwKTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4b3AgJiAweDEwKSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdlbl9oZWxwZXJfY29tcHV0ZV9wc3IoKTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2VuX29wX3N1YnhfY2MoY3B1X2RzdCwgY3B1X3NyYzEsIGNw dV9zcmMyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9tb3ZpX2kz MihjcHVfY2Nfb3AsIENDX09QX1NVQlgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYy0+Y2Nfb3AgPSBDQ19PUF9TVUJYOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9oZWxwZXJfY29tcHV0 ZV9wc3IoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX21vdl9yZWdfQyhj cHVfdG1wMCwgY3B1X3Bzcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9o ZWxwZXJfY29tcHV0ZV9DX2ljYyhjcHVfdG1wMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRjZ19nZW5fYWRkX3RsKGNwdV90bXAwLCBjcHVfc3JjMiwgY3B1X3RtcDApOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3N1Yl90bChjcHVfZHN0LCBjcHVf c3JjMSwgY3B1X3RtcDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLS0gCjEuNS42 LjUKCg== --0016363b9cc2c3cde104698b310b--