From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LITNZ-0005p0-Fy for qemu-devel@nongnu.org; Thu, 01 Jan 2009 14:38:49 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LITNX-0005oo-Sk for qemu-devel@nongnu.org; Thu, 01 Jan 2009 14:38:48 -0500 Received: from [199.232.76.173] (port=56922 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LITNX-0005ol-N2 for qemu-devel@nongnu.org; Thu, 01 Jan 2009 14:38:47 -0500 Received: from smtp1-g21.free.fr ([212.27.42.1]:54965) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LITNW-0002TS-J6 for qemu-devel@nongnu.org; Thu, 01 Jan 2009 14:38:47 -0500 Received: from smtp1-g21.free.fr (localhost [127.0.0.1]) by smtp1-g21.free.fr (Postfix) with ESMTP id 2CB5F679 for ; Thu, 1 Jan 2009 20:38:39 +0100 (CET) Received: from [192.168.0.32] (rob92-10-88-171-126-33.fbx.proxad.net [88.171.126.33]) by smtp1-g21.free.fr (Postfix) with ESMTP id 103C2411 for ; Thu, 1 Jan 2009 20:38:37 +0100 (CET) Message-ID: <495D1BBB.6090204@reactos.org> Date: Thu, 01 Jan 2009 20:38:35 +0100 From: =?ISO-8859-1?Q?Herv=E9_Poussineau?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020508080608020107080401" Subject: [Qemu-devel] [RFC] MIPS CP0 random register strategy Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------020508080608020107080401 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Hello, MIPS TLBWR instruction asks the CPU to randomly overwrite a TLB entry by=20 the one we want to write. The TLB index needs to be between number of=20 wired TLB entries and TLB count - 1. However, algorithm to choose which one to overwrite is implementation=20 dependant. After checking MIPS CPU documentations, 4 algorithms are emerging: - Random register is decremented once at each clock tick - Random register is decremented once after 'number of wired TLB=20 entries' clock ticks - Random register is decremented only after TLBWR instruction - Random register uses a Not Last Used algorithm, ie whatever value=20 which is not the previous one At the moment, Qemu implementation seems to be more the 4th one, but can=20 return the same value more than once. Due to this, NetBSD 1.6.2 on MIPS Magnum emulation crashes. Attached patch tries to fix the problem by adding 4 methods to update=20 Random value. Each CPU needs to define which Random algorithm it is using. Patch also optimizes CP0_Random access, by not requiring call to a=20 helper function Finally, it initializes CP0_Random even in user mode emulation, which=20 was not the case before. Signed-off-by: Herv=E9 Poussineau Please comment Herv=E9 --------------020508080608020107080401 Content-Type: plain/text; name="cp0_random.diff" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="cp0_random.diff" SW5kZXg6IGh3L21pcHNfdGltZXIuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGh3L21pcHNfdGlt ZXIuYwkocmV2aXNpb24gNjE0NSkNCisrKyBody9taXBzX3RpbWVyLmMJKHdvcmtpbmcgY29w eSkNCkBAIC00LDI1ICs0LDExIEBADQogCiAjZGVmaW5lIFRJTUVSX0ZSRVEJMTAwICogMTAw MCAqIDEwMDAKIAotLyogWFhYOiBkbyBub3QgdXNlIGEgZ2xvYmFsICovCi11aW50MzJfdCBj cHVfbWlwc19nZXRfcmFuZG9tIChDUFVTdGF0ZSAqZW52KQotewotICAgIHN0YXRpYyB1aW50 MzJfdCBzZWVkID0gMDsKLSAgICB1aW50MzJfdCBpZHg7Ci0gICAgc2VlZCA9IHNlZWQgKiAz MTQxNTkgKyAxOwotICAgIGlkeCA9IChzZWVkID4+IDE2KSAlIChlbnYtPnRsYi0+bmJfdGxi IC0gZW52LT5DUDBfV2lyZWQpICsgZW52LT5DUDBfV2lyZWQ7Ci0gICAgcmV0dXJuIGlkeDsK LX0KLQogLyogTUlQUyBSNEsgdGltZXIgKi8KIHVpbnQzMl90IGNwdV9taXBzX2dldF9jb3Vu dCAoQ1BVU3RhdGUgKmVudikKIHsKLSAgICBpZiAoZW52LT5DUDBfQ2F1c2UgJiAoMSA8PCBD UDBDYV9EQykpCi0gICAgICAgIHJldHVybiBlbnYtPkNQMF9Db3VudDsKLSAgICBlbHNlCi0g ICAgICAgIHJldHVybiBlbnYtPkNQMF9Db3VudCArCi0gICAgICAgICAgICAodWludDMyX3Qp bXVsZGl2NjQocWVtdV9nZXRfY2xvY2sodm1fY2xvY2spLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRJTUVSX0ZSRVEsIHRpY2tzX3Blcl9zZWMpOworICAgIHJldHVybiAo dWludDMyX3QpbXVsZGl2NjQocWVtdV9nZXRfY2xvY2sodm1fY2xvY2spLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVElNRVJfRlJFUSwgdGlja3NfcGVyX3NlYyk7CiB9CiAK IHN0YXRpYyB2b2lkIGNwdV9taXBzX3RpbWVyX3VwZGF0ZShDUFVTdGF0ZSAqZW52KQpJbmRl eDogdGFyZ2V0LW1pcHMvY3B1LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0YXJnZXQtbWlwcy9j cHUuaAkocmV2aXNpb24gNjE0NSkNCisrKyB0YXJnZXQtbWlwcy9jcHUuaAkod29ya2luZyBj b3B5KQ0KQEAgLTQ0OSw2ICs0NDksOCBAQA0KICAgICB1aW50MzJfdCBDUDBfVENTdGF0dXNf cndfYml0bWFzazsgLyogUmVhZC93cml0ZSBiaXRzIGluIENQMF9UQ1N0YXR1cyAqLwogICAg IGludCBpbnNuX2ZsYWdzOyAvKiBTdXBwb3J0ZWQgaW5zdHJ1Y3Rpb24gc2V0ICovCiAKKyAg ICB2b2lkICgqdXBkYXRlX2NwMF9yYW5kb20pIChzdHJ1Y3QgQ1BVTUlQU1N0YXRlICplbnYp OworCiAgICAgdGFyZ2V0X3Vsb25nIHRsc192YWx1ZTsgLyogRm9yIHVzZXJtb2RlIGVtdWxh dGlvbiAqLwogCiAgICAgQ1BVX0NPTU1PTgpAQCAtNDcwLDYgKzQ3MiwxMSBAQA0KIHZvaWQg cjRrX2RvX3RsYnIgKHZvaWQpOwogdm9pZCBtaXBzX2NwdV9saXN0IChGSUxFICpmLCBpbnQg KCpjcHVfZnByaW50ZikoRklMRSAqZiwgY29uc3QgY2hhciAqZm10LCAuLi4pKTsKIAordm9p ZCBjcDBfcmFuZG9tX2VhY2hfd2lyZWQgKENQVU1JUFNTdGF0ZSAqZW52KTsKK3ZvaWQgY3Aw X3JhbmRvbV9lYWNoX3RsYndyIChDUFVNSVBTU3RhdGUgKmVudik7Cit2b2lkIGNwMF9yYW5k b21fZWFjaF9pbnN0ciAoQ1BVTUlQU1N0YXRlICplbnYpOwordm9pZCBjcDBfcmFuZG9tX25s dSAoQ1BVTUlQU1N0YXRlICplbnYpOworCiB2b2lkIGRvX3VuYXNzaWduZWRfYWNjZXNzKHRh cmdldF9waHlzX2FkZHJfdCBhZGRyLCBpbnQgaXNfd3JpdGUsIGludCBpc19leGVjLAogICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgdW51c2VkLCBpbnQgc2l6ZSk7CiAKQEAgLTU2 NSw3ICs1NzIsNiBAQA0KIGludCBjcHVfbWlwc19zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9z aWdudW0sIHZvaWQgKnBpbmZvLCB2b2lkICpwdWMpOwogCiAvKiBtaXBzX3RpbWVyLmMgKi8K LXVpbnQzMl90IGNwdV9taXBzX2dldF9yYW5kb20gKENQVVN0YXRlICplbnYpOwogdWludDMy X3QgY3B1X21pcHNfZ2V0X2NvdW50IChDUFVTdGF0ZSAqZW52KTsKIHZvaWQgY3B1X21pcHNf c3RvcmVfY291bnQgKENQVVN0YXRlICplbnYsIHVpbnQzMl90IHZhbHVlKTsKIHZvaWQgY3B1 X21pcHNfc3RvcmVfY29tcGFyZSAoQ1BVU3RhdGUgKmVudiwgdWludDMyX3QgdmFsdWUpOwpJ bmRleDogdGFyZ2V0LW1pcHMvaGVscGVyLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0YXJnZXQt bWlwcy9oZWxwZXIuYwkocmV2aXNpb24gNjE0NSkNCisrKyB0YXJnZXQtbWlwcy9oZWxwZXIu Ywkod29ya2luZyBjb3B5KQ0KQEAgLTYyNiwzICs2MjYsNDIgQEANCiAgICAgICAgIH0KICAg ICB9CiB9CisKK3ZvaWQgY3AwX3JhbmRvbV9lYWNoX3dpcmVkIChDUFVNSVBTU3RhdGUgKmVu dikKK3sKKyAgICB1aW50MzJfdCBpbnN0cl9jb3VudDsKKyAgICBpbnN0cl9jb3VudCA9IChp bnQzMl90KWNwdV9taXBzX2dldF9jb3VudChlbnYpOworICAgIGluc3RyX2NvdW50IC89IGVu di0+Q1AwX1dpcmVkICsgMTsKKyAgICBpbnN0cl9jb3VudCAlPSBlbnYtPnRsYi0+bmJfdGxi IC0gZW52LT5DUDBfV2lyZWQ7CisgICAgZW52LT5DUDBfUmFuZG9tID0gKGludDMyX3QpaW5z dHJfY291bnQgKyBlbnYtPkNQMF9XaXJlZDsKK30KKwordm9pZCBjcDBfcmFuZG9tX2VhY2hf dGxid3IgKENQVU1JUFNTdGF0ZSAqZW52KQoreworICAgIGVudi0+Q1AwX1JhbmRvbS0tOwor ICAgIGlmIChlbnYtPkNQMF9SYW5kb20gPD0gZW52LT5DUDBfV2lyZWQpCisgICAgICAgIGVu di0+Q1AwX1JhbmRvbSA9IGVudi0+dGxiLT5uYl90bGIgLSAxOworfQorCit2b2lkIGNwMF9y YW5kb21fZWFjaF9pbnN0ciAoQ1BVTUlQU1N0YXRlICplbnYpCit7CisgICAgdWludDMyX3Qg aW5zdHJfY291bnQ7CisgICAgaW5zdHJfY291bnQgPSAoaW50MzJfdCljcHVfbWlwc19nZXRf Y291bnQoZW52KTsKKyAgICBpbnN0cl9jb3VudCAlPSBlbnYtPnRsYi0+bmJfdGxiIC0gZW52 LT5DUDBfV2lyZWQ7CisgICAgZW52LT5DUDBfUmFuZG9tID0gKGludDMyX3QpaW5zdHJfY291 bnQgKyBlbnYtPkNQMF9XaXJlZDsKK30KKwordm9pZCBjcDBfcmFuZG9tX25sdSAoQ1BVTUlQ U1N0YXRlICplbnYpCit7CisgICAgc3RhdGljIHVpbnQzMl90IHNlZWQgPSAwOworICAgIHVp bnQzMl90IGlkeDsKKyAgICBzZWVkID0gc2VlZCAqIDMxNDE1OSArIDE7CisgICAgaWR4ID0g KHNlZWQgPj4gMTYpICUgKGVudi0+dGxiLT5uYl90bGIgLSBlbnYtPkNQMF9XaXJlZCkgKyBl bnYtPkNQMF9XaXJlZDsKKyAgICBpZiAoaWR4ID09IGVudi0+Q1AwX1JhbmRvbSkgeworICAg ICAgICAvKiBwcmV2ZW50IHNhbWUgdmFsdWUgdHdpY2UgKi8KKyAgICAgICAgaWR4Kys7Cisg ICAgICAgIGlmIChpZHggPT0gZW52LT50bGItPm5iX3RsYikKKyAgICAgICAgICAgIGlkeCA9 IGVudi0+Q1AwX1dpcmVkOworICAgIH0KKyAgICBlbnYtPkNQMF9SYW5kb20gPSBpZHg7Cit9 CkluZGV4OiB0YXJnZXQtbWlwcy9oZWxwZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRhcmdl dC1taXBzL2hlbHBlci5oCShyZXZpc2lvbiA2MTQ1KQ0KKysrIHRhcmdldC1taXBzL2hlbHBl ci5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNDksNyArNDksNiBAQA0KIERFRl9IRUxQRVJfMCht ZmMwX212cGNvbnRyb2wsIHRsKQogREVGX0hFTFBFUl8wKG1mYzBfbXZwY29uZjAsIHRsKQog REVGX0hFTFBFUl8wKG1mYzBfbXZwY29uZjEsIHRsKQotREVGX0hFTFBFUl8wKG1mYzBfcmFu ZG9tLCB0bCkKIERFRl9IRUxQRVJfMChtZmMwX3Rjc3RhdHVzLCB0bCkKIERFRl9IRUxQRVJf MChtZnRjMF90Y3N0YXR1cywgdGwpCiBERUZfSEVMUEVSXzAobWZjMF90Y2JpbmQsIHRsKQpJ bmRleDogdGFyZ2V0LW1pcHMvb3BfaGVscGVyLmMNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB0YXJn ZXQtbWlwcy9vcF9oZWxwZXIuYwkocmV2aXNpb24gNjE0NSkNCisrKyB0YXJnZXQtbWlwcy9v cF9oZWxwZXIuYwkod29ya2luZyBjb3B5KQ0KQEAgLTYxNiwxMSArNjE2LDYgQEANCiAgICAg cmV0dXJuIGVudi0+bXZwLT5DUDBfTVZQQ29uZjE7CiB9CiAKLXRhcmdldF91bG9uZyBkb19t ZmMwX3JhbmRvbSAodm9pZCkKLXsKLSAgICByZXR1cm4gKGludDMyX3QpY3B1X21pcHNfZ2V0 X3JhbmRvbShlbnYpOwotfQotCiB0YXJnZXRfdWxvbmcgZG9fbWZjMF90Y3N0YXR1cyAodm9p ZCkKIHsKICAgICByZXR1cm4gZW52LT5hY3RpdmVfdGMuQ1AwX1RDU3RhdHVzOwpAQCAtNzI4 LDcgKzcyMywxMCBAQA0KIAogdGFyZ2V0X3Vsb25nIGRvX21mYzBfY291bnQgKHZvaWQpCiB7 Ci0gICAgcmV0dXJuIChpbnQzMl90KWNwdV9taXBzX2dldF9jb3VudChlbnYpOworICAgIGlm IChlbnYtPkNQMF9DYXVzZSAmICgxIDw8IENQMENhX0RDKSkKKyAgICAgICAgcmV0dXJuIGVu di0+Q1AwX0NvdW50OworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGVudi0+Q1AwX0NvdW50 ICsgKGludDMyX3QpY3B1X21pcHNfZ2V0X2NvdW50KGVudik7CiB9CiAKIHRhcmdldF91bG9u ZyBkb19tZnRjMF9lbnRyeWhpKHZvaWQpCkBAIC0xNTkwLDggKzE1ODgsMTEgQEANCiAKIHZv aWQgcjRrX2RvX3RsYndyICh2b2lkKQogewotICAgIGludCByID0gY3B1X21pcHNfZ2V0X3Jh bmRvbShlbnYpOworICAgIGludCByOwogCisgICAgZW52LT51cGRhdGVfY3AwX3JhbmRvbShl bnYpOworICAgIHIgPSBlbnYtPkNQMF9SYW5kb207CisKICAgICByNGtfaW52YWxpZGF0ZV90 bGIoZW52LCByLCAxKTsKICAgICByNGtfZmlsbF90bGIocik7CiB9CkluZGV4OiB0YXJnZXQt bWlwcy90cmFuc2xhdGUuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRhcmdldC1taXBzL3RyYW5z bGF0ZS5jCShyZXZpc2lvbiA2MTQ1KQ0KKysrIHRhcmdldC1taXBzL3RyYW5zbGF0ZS5jCSh3 b3JraW5nIGNvcHkpDQpAQCAtMjc2Nyw3ICsyNzY3LDcgQEANCiAgICAgY2FzZSAxOgogICAg ICAgICBzd2l0Y2ggKHNlbCkgewogICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICBnZW5f aGVscGVyX21mYzBfcmFuZG9tKHQwKTsKKyAgICAgICAgICAgIGdlbl9tZmMwX2xvYWQzMih0 MCwgb2Zmc2V0b2YoQ1BVU3RhdGUsIENQMF9SYW5kb20pKTsKICAgICAgICAgICAgIHJuID0g IlJhbmRvbSI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAxOgpAQCAtMzk2 NCw3ICszOTY0LDcgQEANCiAgICAgY2FzZSAxOgogICAgICAgICBzd2l0Y2ggKHNlbCkgewog ICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICBnZW5faGVscGVyX21mYzBfcmFuZG9tKHQw KTsKKyAgICAgICAgICAgIGdlbl9tZmMwX2xvYWQzMih0MCwgb2Zmc2V0b2YoQ1BVU3RhdGUs IENQMF9SYW5kb20pKTsKICAgICAgICAgICAgIHJuID0gIlJhbmRvbSI7CiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgY2FzZSAxOgpJbmRleDogdGFyZ2V0LW1pcHMvdHJhbnNsYXRl X2luaXQuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHRhcmdldC1taXBzL3RyYW5zbGF0ZV9pbml0 LmMJKHJldmlzaW9uIDYxNDUpDQorKysgdGFyZ2V0LW1pcHMvdHJhbnNsYXRlX2luaXQuYwko d29ya2luZyBjb3B5KQ0KQEAgLTYyLDYgKzYyLDE0IEBADQogICAgIE1NVV9UWVBFX1I4MDAw CiB9OwogCitlbnVtIG1pcHNfcmFuZG9tX3JlZ2lzdGVyX3R5cGVzIHsKKyAgICBSQU5ET01f VFlQRV9VTktOT1dOLAorICAgIFJBTkRPTV9UWVBFX0RFQ1JfRUFDSF9XSVJFRCwKKyAgICBS QU5ET01fVFlQRV9ERUNSX0VBQ0hfVExCV1IsCisgICAgUkFORE9NX1RZUEVfREVDUl9FQUNI X0lOU1RSLAorICAgIFJBTkRPTV9UWVBFX05PVF9MQVNUX1VTRUQsCit9OworCiBzdHJ1Y3Qg bWlwc19kZWZfdCB7CiAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICBpbnQzMl90IENQMF9Q UmlkOwpAQCAtOTEsNiArOTksNyBAQA0KICAgICBpbnQzMl90IENQMF9TUlNDb25mNDsKICAg ICBpbnQgaW5zbl9mbGFnczsKICAgICBlbnVtIG1pcHNfbW11X3R5cGVzIG1tdV90eXBlOwor ICAgIGVudW0gbWlwc19yYW5kb21fcmVnaXN0ZXJfdHlwZXMgcmFuZG9tX3R5cGU7CiB9Owog CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xMTMsNiArMTIyLDcgQEANCiAgICAg ICAgIC5QQUJJVFMgPSAzMiwKICAgICAgICAgLmluc25fZmxhZ3MgPSBDUFVfTUlQUzMyIHwg QVNFX01JUFMxNiwKICAgICAgICAgLm1tdV90eXBlID0gTU1VX1RZUEVfUjQwMDAsCisgICAg ICAgIC5yYW5kb21fdHlwZSA9IFJBTkRPTV9UWVBFX0RFQ1JfRUFDSF9XSVJFRCwKICAgICB9 LAogICAgIHsKICAgICAgICAgLm5hbWUgPSAiNEttIiwKQEAgLTEzMiw2ICsxNDIsNyBAQA0K ICAgICAgICAgLlBBQklUUyA9IDMyLAogICAgICAgICAuaW5zbl9mbGFncyA9IENQVV9NSVBT MzIgfCBBU0VfTUlQUzE2LAogICAgICAgICAubW11X3R5cGUgPSBNTVVfVFlQRV9GTVQsCisg ICAgICAgIC5yYW5kb21fdHlwZSA9IFJBTkRPTV9UWVBFX0RFQ1JfRUFDSF9XSVJFRCwKICAg ICB9LAogICAgIHsKICAgICAgICAgLm5hbWUgPSAiNEtFY1IxIiwKQEAgLTE0OSw2ICsxNjAs NyBAQA0KICAgICAgICAgLlBBQklUUyA9IDMyLAogICAgICAgICAuaW5zbl9mbGFncyA9IENQ VV9NSVBTMzIgfCBBU0VfTUlQUzE2LAogICAgICAgICAubW11X3R5cGUgPSBNTVVfVFlQRV9S NDAwMCwKKyAgICAgICAgLnJhbmRvbV90eXBlID0gUkFORE9NX1RZUEVfREVDUl9FQUNIX1dJ UkVELAogICAgIH0sCiAgICAgewogICAgICAgICAubmFtZSA9ICI0S0VtUjEiLApAQCAtMTY2 LDYgKzE3OCw3IEBADQogICAgICAgICAuUEFCSVRTID0gMzIsCiAgICAgICAgIC5pbnNuX2Zs YWdzID0gQ1BVX01JUFMzMiB8IEFTRV9NSVBTMTYsCiAgICAgICAgIC5tbXVfdHlwZSA9IE1N VV9UWVBFX0ZNVCwKKyAgICAgICAgLnJhbmRvbV90eXBlID0gUkFORE9NX1RZUEVfREVDUl9F QUNIX1dJUkVELAogICAgIH0sCiAgICAgewogICAgICAgICAubmFtZSA9ICI0S0VjIiwKQEAg LTE4NCw2ICsxOTcsNyBAQA0KICAgICAgICAgLlBBQklUUyA9IDMyLAogICAgICAgICAuaW5z bl9mbGFncyA9IENQVV9NSVBTMzJSMiB8IEFTRV9NSVBTMTYsCiAgICAgICAgIC5tbXVfdHlw ZSA9IE1NVV9UWVBFX1I0MDAwLAorICAgICAgICAucmFuZG9tX3R5cGUgPSBSQU5ET01fVFlQ RV9ERUNSX0VBQ0hfV0lSRUQsCiAgICAgfSwKICAgICB7CiAgICAgICAgIC5uYW1lID0gIjRL RW0iLApAQCAtMjAyLDYgKzIxNiw3IEBADQogICAgICAgICAuUEFCSVRTID0gMzIsCiAgICAg ICAgIC5pbnNuX2ZsYWdzID0gQ1BVX01JUFMzMlIyIHwgQVNFX01JUFMxNiwKICAgICAgICAg Lm1tdV90eXBlID0gTU1VX1RZUEVfRk1ULAorICAgICAgICAucmFuZG9tX3R5cGUgPSBSQU5E T01fVFlQRV9ERUNSX0VBQ0hfV0lSRUQsCiAgICAgfSwKICAgICB7CiAgICAgICAgIC5uYW1l ID0gIjI0S2MiLApAQCAtMjIxLDYgKzIzNiw3IEBADQogICAgICAgICAuUEFCSVRTID0gMzIs CiAgICAgICAgIC5pbnNuX2ZsYWdzID0gQ1BVX01JUFMzMlIyIHwgQVNFX01JUFMxNiwKICAg ICAgICAgLm1tdV90eXBlID0gTU1VX1RZUEVfUjQwMDAsCisgICAgICAgIC5yYW5kb21fdHlw ZSA9IFJBTkRPTV9UWVBFX0RFQ1JfRUFDSF9XSVJFRCwKICAgICB9LAogICAgIHsKICAgICAg ICAgLm5hbWUgPSAiMjRLZiIsCkBAIC0yNDIsNiArMjU4LDcgQEANCiAgICAgICAgIC5QQUJJ VFMgPSAzMiwKICAgICAgICAgLmluc25fZmxhZ3MgPSBDUFVfTUlQUzMyUjIgfCBBU0VfTUlQ UzE2LAogICAgICAgICAubW11X3R5cGUgPSBNTVVfVFlQRV9SNDAwMCwKKyAgICAgICAgLnJh bmRvbV90eXBlID0gUkFORE9NX1RZUEVfREVDUl9FQUNIX1dJUkVELAogICAgIH0sCiAgICAg ewogICAgICAgICAubmFtZSA9ICIzNEtmIiwKQEAgLTI4Niw2ICszMDMsNyBAQA0KICAgICAg ICAgLlBBQklUUyA9IDMyLAogICAgICAgICAuaW5zbl9mbGFncyA9IENQVV9NSVBTMzJSMiB8 IEFTRV9NSVBTMTYgfCBBU0VfRFNQIHwgQVNFX01ULAogICAgICAgICAubW11X3R5cGUgPSBN TVVfVFlQRV9SNDAwMCwKKyAgICAgICAgLnJhbmRvbV90eXBlID0gUkFORE9NX1RZUEVfREVD Ul9FQUNIX1dJUkVELAogICAgIH0sCiAjaWYgZGVmaW5lZChUQVJHRVRfTUlQUzY0KQogICAg IHsKQEAgLTMwNCw2ICszMjIsNyBAQA0KICAgICAgICAgLlBBQklUUyA9IDM2LAogICAgICAg ICAuaW5zbl9mbGFncyA9IENQVV9NSVBTMywKICAgICAgICAgLm1tdV90eXBlID0gTU1VX1RZ UEVfUjQwMDAsCisgICAgICAgIC5yYW5kb21fdHlwZSA9IFJBTkRPTV9UWVBFX0RFQ1JfRUFD SF9JTlNUUiwKICAgICB9LAogICAgIHsKICAgICAgICAgLm5hbWUgPSAiVlI1NDMyIiwKQEAg LTMyMCw2ICszMzksNyBAQA0KICAgICAgICAgLlBBQklUUyA9IDMyLAogICAgICAgICAuaW5z bl9mbGFncyA9IENQVV9WUjU0WFgsCiAgICAgICAgIC5tbXVfdHlwZSA9IE1NVV9UWVBFX1I0 MDAwLAorICAgICAgICAucmFuZG9tX3R5cGUgPSBSQU5ET01fVFlQRV9ERUNSX0VBQ0hfSU5T VFIsCiAgICAgfSwKICAgICB7CiAgICAgICAgIC5uYW1lID0gIjVLYyIsCkBAIC0zMzksNiAr MzU5LDcgQEANCiAgICAgICAgIC5QQUJJVFMgPSAzNiwKICAgICAgICAgLmluc25fZmxhZ3Mg PSBDUFVfTUlQUzY0LAogICAgICAgICAubW11X3R5cGUgPSBNTVVfVFlQRV9SNDAwMCwKKyAg ICAgICAgLnJhbmRvbV90eXBlID0gUkFORE9NX1RZUEVfREVDUl9FQUNIX1RMQldSLAogICAg IH0sCiAgICAgewogICAgICAgICAubmFtZSA9ICI1S2YiLApAQCAtMzYxLDYgKzM4Miw3IEBA DQogICAgICAgICAuUEFCSVRTID0gMzYsCiAgICAgICAgIC5pbnNuX2ZsYWdzID0gQ1BVX01J UFM2NCwKICAgICAgICAgLm1tdV90eXBlID0gTU1VX1RZUEVfUjQwMDAsCisgICAgICAgIC5y YW5kb21fdHlwZSA9IFJBTkRPTV9UWVBFX0RFQ1JfRUFDSF9UTEJXUiwKICAgICB9LAogICAg IHsKICAgICAgICAgLm5hbWUgPSAiMjBLYyIsCkBAIC0zODYsNiArNDA4LDcgQEANCiAgICAg ICAgIC5QQUJJVFMgPSAzNiwKICAgICAgICAgLmluc25fZmxhZ3MgPSBDUFVfTUlQUzY0IHwg QVNFX01JUFMzRCwKICAgICAgICAgLm1tdV90eXBlID0gTU1VX1RZUEVfUjQwMDAsCisgICAg ICAgIC5yYW5kb21fdHlwZSA9IFJBTkRPTV9UWVBFX05PVF9MQVNUX1VTRUQsCiAgICAgfSwK ICAgICB7CiAJLyogQSBnZW5lcmljIENQVSBwcm92aWRpbmcgTUlQUzY0IFJlbGVhc2UgMiBm ZWF0dXJlcy4KQEAgLTQxMyw2ICs0MzYsNyBAQA0KICAgICAgICAgLlBBQklUUyA9IDM2LAog ICAgICAgICAuaW5zbl9mbGFncyA9IENQVV9NSVBTNjRSMiB8IEFTRV9NSVBTM0QsCiAgICAg ICAgIC5tbXVfdHlwZSA9IE1NVV9UWVBFX1I0MDAwLAorICAgICAgICAucmFuZG9tX3R5cGUg PSBSQU5ET01fVFlQRV9OT1RfTEFTVF9VU0VELAogICAgIH0sCiAjZW5kaWYKIH07CkBAIC00 ODIsOSArNTA2LDM4IEBADQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY3B1X2Fi b3J0KGVudiwgIk1NVSB0eXBlIG5vdCBzdXBwb3J0ZWRcbiIpOwogICAgIH0KLSAgICBlbnYt PkNQMF9SYW5kb20gPSBlbnYtPnRsYi0+bmJfdGxiIC0gMTsKICAgICBlbnYtPnRsYi0+dGxi X2luX3VzZSA9IGVudi0+dGxiLT5uYl90bGI7CiB9CisKK3N0YXRpYyB2b2lkIHJhbmRvbV9p bml0IChDUFVNSVBTU3RhdGUgKmVudiwgY29uc3QgbWlwc19kZWZfdCAqZGVmKQoreworICAg IHN3aXRjaCAoZGVmLT5yYW5kb21fdHlwZSkgeworICAgICAgICBjYXNlIFJBTkRPTV9UWVBF X0RFQ1JfRUFDSF9XSVJFRDoKKyAgICAgICAgICAgIGVudi0+dXBkYXRlX2NwMF9yYW5kb20g PSBjcDBfcmFuZG9tX2VhY2hfd2lyZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg Y2FzZSBSQU5ET01fVFlQRV9ERUNSX0VBQ0hfVExCV1I6CisgICAgICAgICAgICBlbnYtPnVw ZGF0ZV9jcDBfcmFuZG9tID0gY3AwX3JhbmRvbV9lYWNoX3RsYndyOworICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIGNhc2UgUkFORE9NX1RZUEVfREVDUl9FQUNIX0lOU1RSOgorICAg ICAgICAgICAgZW52LT51cGRhdGVfY3AwX3JhbmRvbSA9IGNwMF9yYW5kb21fZWFjaF9pbnN0 cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJBTkRPTV9UWVBFX05PVF9M QVNUX1VTRUQ6CisgICAgICAgICAgICBlbnYtPnVwZGF0ZV9jcDBfcmFuZG9tID0gY3AwX3Jh bmRvbV9ubHU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg ICAgICAgIGNwdV9hYm9ydChlbnYsICJyYW5kb20gcmVnaXN0ZXIgdHlwZSBub3Qgc3VwcG9y dGVkXG4iKTsKKyAgICB9CisKKyAgICBlbnYtPkNQMF9SYW5kb20gPSBlbnYtPnRsYi0+bmJf dGxiIC0gMTsKK30KKworI2Vsc2UgLyogQ09ORklHX1VTRVJfT05MWSAqLworCitzdGF0aWMg dm9pZCByYW5kb21faW5pdCAoQ1BVTUlQU1N0YXRlICplbnYsIGNvbnN0IG1pcHNfZGVmX3Qg KmRlZikKK3sKKyAgICBlbnYtPkNQMF9SYW5kb20gPSAwOworfQorCiAjZW5kaWYgLyogQ09O RklHX1VTRVJfT05MWSAqLwogCiBzdGF0aWMgdm9pZCBmcHVfaW5pdCAoQ1BVTUlQU1N0YXRl ICplbnYsIGNvbnN0IG1pcHNfZGVmX3QgKmRlZikKQEAgLTU3NSw2ICs2MjgsNyBAQA0KICAg ICBpZiAoIWVudi0+dXNlcl9tb2RlX29ubHkpCiAgICAgICAgIG1tdV9pbml0KGVudiwgZGVm KTsKICNlbmRpZgorICAgIHJhbmRvbV9pbml0KGVudiwgZGVmKTsKICAgICBmcHVfaW5pdChl bnYsIGRlZik7CiAgICAgbXZwX2luaXQoZW52LCBkZWYpOwogICAgIHJldHVybiAwOwo= --------------020508080608020107080401--