From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IhU0t-0003mZ-Rg for qemu-devel@nongnu.org; Mon, 15 Oct 2007 13:45:59 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IhU0q-0003kl-Ok for qemu-devel@nongnu.org; Mon, 15 Oct 2007 13:45:58 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IhU0q-0003kc-9k for qemu-devel@nongnu.org; Mon, 15 Oct 2007 13:45:56 -0400 Received: from ug-out-1314.google.com ([66.249.92.175]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IhU0o-000747-Cq for qemu-devel@nongnu.org; Mon, 15 Oct 2007 13:45:55 -0400 Received: by ug-out-1314.google.com with SMTP id m2so869118uge for ; Mon, 15 Oct 2007 10:45:53 -0700 (PDT) Message-ID: Date: Mon, 15 Oct 2007 20:45:52 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] RFC: reverse-endian softmmu memory accessors In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_38285_28117380.1192470352116" References: <1192362549.9976.389.camel@rapid> <1192450234.9976.413.camel@rapid> 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 ------=_Part_38285_28117380.1192470352116 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 10/15/07, Blue Swirl wrote: > On 10/15/07, J. Mayer wrote: > > On Sun, 2007-10-14 at 15:59 +0300, Blue Swirl wrote: > > > On 10/14/07, J. Mayer wrote: > > > > Here's an updated version of the patch against current CVS. > > > > This patches provides reverse-endian, little-endian and big-endian > > > > memory accessors, available with and without softmmu. It also provides > > > > an IO_MEM_REVERSE TLB flag to allow future support of per-page > > > > endianness control, which is required by some targets CPU emulations. > > > > Having reverse-endian memory accessors also make it possible to optimise > > > > reverse-endian memory access when the target CPU has dedicated > > > > instructions. For now, it includes optimisations for the PowerPC target. > > > > > > This breaks Sparc32 softmmu, I get a black screen. Your changes to > > > target-sparc and hw/sun4m.c look fine, so the problem could be in IO? > > > > Did it worked before my commits ? I may have done something wrong during > > the merge... > > I will do more checks and more tests... > > If I disable the IOSWAP code, black screen is gone. I think this is > logical: the io accessors return host CPU values, therefore no byte > swapping need to be performed. > > The attached version works for me. This patch takes the reverse endian functions into use for Sparc. I added hypervisor versions of the functions. This is getting a bit ugly, time for #include magic? Physical versions could be useful too. ------=_Part_38285_28117380.1192470352116 Content-Type: text/x-diff; name="sparc_reverse_endian.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sparc_reverse_endian.diff" X-Attachment-Id: f_f7ta1nff SW5kZXg6IHFlbXUvdGFyZ2V0LXNwYXJjL29wX2hlbHBlci5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUu b3JpZy90YXJnZXQtc3BhcmMvb3BfaGVscGVyLmMJMjAwNy0xMC0xNSAxNjo0NzoxMS4wMDAwMDAw MDAgKzAwMDAKKysrIHFlbXUvdGFyZ2V0LXNwYXJjL29wX2hlbHBlci5jCTIwMDctMTAtMTUgMTc6 MzQ6MjguMDAwMDAwMDAwICswMDAwCkBAIC02NDksOCArNjQ5LDYgQEAKICAgICBzd2l0Y2ggKGFz aSkgewogICAgIGNhc2UgMHg4MDogLy8gUHJpbWFyeQogICAgIGNhc2UgMHg4MjogLy8gUHJpbWFy eSBuby1mYXVsdAotICAgIGNhc2UgMHg4ODogLy8gUHJpbWFyeSBMRQotICAgIGNhc2UgMHg4YTog Ly8gUHJpbWFyeSBuby1mYXVsdCBMRQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2goc2l6 ZSkgewogICAgICAgICAgICAgY2FzZSAxOgpAQCAtNjY5LDYgKzY2NywyNiBAQAogICAgICAgICAg ICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgMHg4ODogLy8gUHJpbWFy eSBMRQorICAgIGNhc2UgMHg4YTogLy8gUHJpbWFyeSBuby1mYXVsdCBMRQorICAgICAgICB7Cisg ICAgICAgICAgICBzd2l0Y2goc2l6ZSkgeworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAg ICAgICAgIHJldCA9IGxkdWJfcmF3KFQwKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICByZXQgPSBsZHV3cl9yYXcoVDAgJiB+MSk7 CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAg ICAgICAgcmV0ID0gbGR1bHJfcmF3KFQwICYgfjMpOworICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgICAg ICByZXQgPSBsZHFyX3JhdyhUMCAmIH43KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBjYXNlIDB4ODE6IC8vIFNl Y29uZGFyeQogICAgIGNhc2UgMHg4MzogLy8gU2Vjb25kYXJ5IG5vLWZhdWx0CiAgICAgY2FzZSAw eDg5OiAvLyBTZWNvbmRhcnkgTEUKQEAgLTY3OSwyOSArNjk3LDYgQEAKICAgICAgICAgYnJlYWs7 CiAgICAgfQogCi0gICAgLyogQ29udmVydCBmcm9tIGxpdHRsZSBlbmRpYW4gKi8KLSAgICBzd2l0 Y2ggKGFzaSkgewotICAgIGNhc2UgMHg4ODogLy8gUHJpbWFyeSBMRQotICAgIGNhc2UgMHg4OTog Ly8gU2Vjb25kYXJ5IExFCi0gICAgY2FzZSAweDhhOiAvLyBQcmltYXJ5IG5vLWZhdWx0IExFCi0g ICAgY2FzZSAweDhiOiAvLyBTZWNvbmRhcnkgbm8tZmF1bHQgTEUKLSAgICAgICAgc3dpdGNoKHNp emUpIHsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgcmV0ID0gYnN3YXAxNihyZXQpOwot ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIHJldCA9IGJz d2FwMzIocmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDg6Ci0gICAgICAg ICAgICByZXQgPSBic3dhcDY0KHJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm YXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAg ICAgYnJlYWs7Ci0gICAgfQotCiAgICAgLyogQ29udmVydCB0byBzaWduZWQgbnVtYmVyICovCiAg ICAgaWYgKHNpZ24pIHsKICAgICAgICAgc3dpdGNoKHNpemUpIHsKQEAgLTcyNiwzMCArNzIxLDgg QEAKICAgICBpZiAoYXNpIDwgMHg4MCkKICAgICAgICAgcmFpc2VfZXhjZXB0aW9uKFRUX1BSSVZf QUNUKTsKIAotICAgIC8qIENvbnZlcnQgdG8gbGl0dGxlIGVuZGlhbiAqLwotICAgIHN3aXRjaCAo YXNpKSB7Ci0gICAgY2FzZSAweDg4OiAvLyBQcmltYXJ5IExFCi0gICAgY2FzZSAweDg5OiAvLyBT ZWNvbmRhcnkgTEUKLSAgICAgICAgc3dpdGNoKHNpemUpIHsKLSAgICAgICAgY2FzZSAyOgotICAg ICAgICAgICAgVDAgPSBic3dhcDE2KFQwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj YXNlIDQ6Ci0gICAgICAgICAgICBUMCA9IGJzd2FwMzIoVDApOwotICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgIGNhc2UgODoKLSAgICAgICAgICAgIFQwID0gYnN3YXA2NChUMCk7Ci0gICAgICAg ICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg ICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgc3dpdGNoKGFz aSkgewogICAgIGNhc2UgMHg4MDogLy8gUHJpbWFyeQotICAgIGNhc2UgMHg4ODogLy8gUHJpbWFy eSBMRQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2goc2l6ZSkgewogICAgICAgICAgICAg Y2FzZSAxOgpAQCAtNzY4LDYgKzc0MSwyNSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAg ICAgICAgIGJyZWFrOworICAgIGNhc2UgMHg4ODogLy8gUHJpbWFyeSBMRQorICAgICAgICB7Cisg ICAgICAgICAgICBzd2l0Y2goc2l6ZSkgeworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAg ICAgICAgIHN0Yl9yYXcoVDAsIFQxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBzdHdyX3JhdyhUMCAmIH4xLCBUMSk7CisgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAg c3Rscl9yYXcoVDAgJiB+MywgVDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgY2FzZSA4OgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBzdHFyX3Jh dyhUMCAmIH43LCBUMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDgxOiAvLyBTZWNvbmRhcnkKICAg ICBjYXNlIDB4ODk6IC8vIFNlY29uZGFyeSBMRQogICAgICAgICAvLyBYWFgKQEAgLTc5NSwxMSAr Nzg3LDggQEAKIAogICAgIHN3aXRjaCAoYXNpKSB7CiAgICAgY2FzZSAweDEwOiAvLyBBcyBpZiB1 c2VyIHByaW1hcnkKLSAgICBjYXNlIDB4MTg6IC8vIEFzIGlmIHVzZXIgcHJpbWFyeSBMRQogICAg IGNhc2UgMHg4MDogLy8gUHJpbWFyeQogICAgIGNhc2UgMHg4MjogLy8gUHJpbWFyeSBuby1mYXVs dAotICAgIGNhc2UgMHg4ODogLy8gUHJpbWFyeSBMRQotICAgIGNhc2UgMHg4YTogLy8gUHJpbWFy eSBuby1mYXVsdCBMRQogICAgICAgICBpZiAoKGFzaSAmIDB4ODApICYmIChlbnYtPnBzdGF0ZSAm IFBTX1BSSVYpKSB7CiAgICAgICAgICAgICBpZiAoZW52LT5ocHN0YXRlICYgSFNfUFJJVikgewog ICAgICAgICAgICAgICAgIHN3aXRjaChzaXplKSB7CkBAIC04NTIsMTAgKzg0MSw2MyBAQAogICAg ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgMHgxODogLy8g QXMgaWYgdXNlciBwcmltYXJ5IExFCisgICAgY2FzZSAweDg4OiAvLyBQcmltYXJ5IExFCisgICAg Y2FzZSAweDhhOiAvLyBQcmltYXJ5IG5vLWZhdWx0IExFCisgICAgICAgIGlmICgoYXNpICYgMHg4 MCkgJiYgKGVudi0+cHN0YXRlICYgUFNfUFJJVikpIHsKKyAgICAgICAgICAgIGlmIChlbnYtPmhw c3RhdGUgJiBIU19QUklWKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoKHNpemUpIHsKKyAgICAg ICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIHJldCA9IGxkdWJfaHlwdihU MCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjoK KyAgICAgICAgICAgICAgICAgICAgcmV0ID0gbGR1d3JfaHlwdihUMCAmIH4xKTsKKyAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAg ICAgICAgICByZXQgPSBsZHVscl9oeXB2KFQwICYgfjMpOworICAgICAgICAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNhc2UgODoK KyAgICAgICAgICAgICAgICAgICAgcmV0ID0gbGRxcl9oeXB2KFQwICYgfjcpOworICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgIHN3aXRjaChzaXplKSB7CisgICAgICAgICAgICAgICAgY2FzZSAx OgorICAgICAgICAgICAgICAgICAgICByZXQgPSBsZHViX2tlcm5lbChUMCk7CisgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAg ICAgICAgcmV0ID0gbGR1d3Jfa2VybmVsKFQwICYgfjEpOworICAgICAgICAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIHJldCA9 IGxkdWxyX2tlcm5lbChUMCAmIH4zKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjYXNlIDg6CisgICAgICAgICAg ICAgICAgICAgIHJldCA9IGxkcXJfa2VybmVsKFQwICYgfjcpOworICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICBzd2l0Y2goc2l6ZSkgeworICAgICAgICAgICAgY2FzZSAxOgorICAg ICAgICAgICAgICAgIHJldCA9IGxkdWJfdXNlcihUMCk7CisgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgcmV0ID0gbGR1d3JfdXNlcihU MCAmIH4xKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDoKKyAg ICAgICAgICAgICAgICByZXQgPSBsZHVscl91c2VyKFQwICYgfjMpOworICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNhc2UgODoKKyAgICAg ICAgICAgICAgICByZXQgPSBsZHFyX3VzZXIoVDAgJiB+Nyk7CisgICAgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAw eDE0OiAvLyBCeXBhc3MKICAgICBjYXNlIDB4MTU6IC8vIEJ5cGFzcywgbm9uLWNhY2hlYWJsZQot ICAgIGNhc2UgMHgxYzogLy8gQnlwYXNzIExFCi0gICAgY2FzZSAweDFkOiAvLyBCeXBhc3MsIG5v bi1jYWNoZWFibGUgTEUKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoKHNpemUpIHsKICAg ICAgICAgICAgIGNhc2UgMToKQEAgLTg3NCw2ICs5MTYsMjYgQEAKICAgICAgICAgICAgIH0KICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgY2FzZSAweDFjOiAvLyBCeXBhc3MgTEUK KyAgICBjYXNlIDB4MWQ6IC8vIEJ5cGFzcywgbm9uLWNhY2hlYWJsZSBMRQorICAgICAgICB7Cisg ICAgICAgICAgICBzd2l0Y2goc2l6ZSkgeworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAg ICAgICAgIHJldCA9IGxkdWJfcGh5cyhUMCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgcmV0ID0gYnN3YXAxNihsZHV3X3BoeXMo VDAgJiB+MSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA0Ogor ICAgICAgICAgICAgICAgIHJldCA9IGJzd2FwMzIobGR1bF9waHlzKFQwICYgfjMpKTsKKyAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjYXNl IDg6CisgICAgICAgICAgICAgICAgcmV0ID0gYnN3YXA2NChsZHFfcGh5cyhUMCAmIH43KSk7Cisg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK KyAgICAgICAgfQogICAgIGNhc2UgMHgwNDogLy8gTnVjbGV1cwogICAgIGNhc2UgMHgwYzogLy8g TnVjbGV1cyBMaXR0bGUgRW5kaWFuIChMRSkKICAgICBjYXNlIDB4MTE6IC8vIEFzIGlmIHVzZXIg c2Vjb25kYXJ5CkBAIC05NTcsMzQgKzEwMTksNiBAQAogICAgICAgICBicmVhazsKICAgICB9CiAK LSAgICAvKiBDb252ZXJ0IGZyb20gbGl0dGxlIGVuZGlhbiAqLwotICAgIHN3aXRjaCAoYXNpKSB7 Ci0gICAgY2FzZSAweDBjOiAvLyBOdWNsZXVzIExpdHRsZSBFbmRpYW4gKExFKQotICAgIGNhc2Ug MHgxODogLy8gQXMgaWYgdXNlciBwcmltYXJ5IExFCi0gICAgY2FzZSAweDE5OiAvLyBBcyBpZiB1 c2VyIHNlY29uZGFyeSBMRQotICAgIGNhc2UgMHgxYzogLy8gQnlwYXNzIExFCi0gICAgY2FzZSAw eDFkOiAvLyBCeXBhc3MsIG5vbi1jYWNoZWFibGUgTEUKLSAgICBjYXNlIDB4ODg6IC8vIFByaW1h cnkgTEUKLSAgICBjYXNlIDB4ODk6IC8vIFNlY29uZGFyeSBMRQotICAgIGNhc2UgMHg4YTogLy8g UHJpbWFyeSBuby1mYXVsdCBMRQotICAgIGNhc2UgMHg4YjogLy8gU2Vjb25kYXJ5IG5vLWZhdWx0 IExFCi0gICAgICAgIHN3aXRjaChzaXplKSB7Ci0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAg IHJldCA9IGJzd2FwMTYocmV0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDQ6 Ci0gICAgICAgICAgICByZXQgPSBic3dhcDMyKHJldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg ICAgICAgY2FzZSA4OgotICAgICAgICAgICAgcmV0ID0gYnN3YXA2NChyZXQpOwotICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg fQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIC8qIENvbnZlcnQg dG8gc2lnbmVkIG51bWJlciAqLwogICAgIGlmIChzaWduKSB7CiAgICAgICAgIHN3aXRjaChzaXpl KSB7CkBAIC0xMDEwLDM3ICsxMDQ0LDkgQEAKICAgICAgICAgfHwgKGFzaSA+PSAweDMwICYmIGFz aSA8IDB4ODApICYmICEoZW52LT5ocHN0YXRlICYgSFNfUFJJVikpCiAgICAgICAgIHJhaXNlX2V4 Y2VwdGlvbihUVF9QUklWX0FDVCk7CiAKLSAgICAvKiBDb252ZXJ0IHRvIGxpdHRsZSBlbmRpYW4g Ki8KLSAgICBzd2l0Y2ggKGFzaSkgewotICAgIGNhc2UgMHgwYzogLy8gTnVjbGV1cyBMaXR0bGUg RW5kaWFuIChMRSkKLSAgICBjYXNlIDB4MTg6IC8vIEFzIGlmIHVzZXIgcHJpbWFyeSBMRQotICAg IGNhc2UgMHgxOTogLy8gQXMgaWYgdXNlciBzZWNvbmRhcnkgTEUKLSAgICBjYXNlIDB4MWM6IC8v IEJ5cGFzcyBMRQotICAgIGNhc2UgMHgxZDogLy8gQnlwYXNzLCBub24tY2FjaGVhYmxlIExFCi0g ICAgY2FzZSAweDg4OiAvLyBQcmltYXJ5IExFCi0gICAgY2FzZSAweDg5OiAvLyBTZWNvbmRhcnkg TEUKLSAgICAgICAgc3dpdGNoKHNpemUpIHsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAg VDAgPSBic3dhcDE2KFQwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDQ6Ci0g ICAgICAgICAgICBUMCA9IGJzd2FwMzIoVDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg IGNhc2UgODoKLSAgICAgICAgICAgIFQwID0gYnN3YXA2NChUMCk7Ci0gICAgICAgICAgICBicmVh azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg ZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgc3dpdGNoKGFzaSkgewogICAg IGNhc2UgMHgxMDogLy8gQXMgaWYgdXNlciBwcmltYXJ5Ci0gICAgY2FzZSAweDE4OiAvLyBBcyBp ZiB1c2VyIHByaW1hcnkgTEUKICAgICBjYXNlIDB4ODA6IC8vIFByaW1hcnkKLSAgICBjYXNlIDB4 ODg6IC8vIFByaW1hcnkgTEUKICAgICAgICAgaWYgKChhc2kgJiAweDgwKSAmJiAoZW52LT5wc3Rh dGUgJiBQU19QUklWKSkgewogICAgICAgICAgICAgaWYgKGVudi0+aHBzdGF0ZSAmIEhTX1BSSVYp IHsKICAgICAgICAgICAgICAgICBzd2l0Y2goc2l6ZSkgewpAQCAtMTA5MywxMCArMTA5OSw2MiBA QAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgMHgx ODogLy8gQXMgaWYgdXNlciBwcmltYXJ5IExFCisgICAgY2FzZSAweDg4OiAvLyBQcmltYXJ5IExF CisgICAgICAgIGlmICgoYXNpICYgMHg4MCkgJiYgKGVudi0+cHN0YXRlICYgUFNfUFJJVikpIHsK KyAgICAgICAgICAgIGlmIChlbnYtPmhwc3RhdGUgJiBIU19QUklWKSB7CisgICAgICAgICAgICAg ICAgc3dpdGNoKHNpemUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAg ICAgICAgIHN0Yl9oeXB2KFQwLCBUMSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgc3R3cl9oeXB2KFQwICYg fjEsIFQxKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz ZSA0OgorICAgICAgICAgICAgICAgICAgICBzdGxyX2h5cHYoVDAgJiB+MywgVDEpOworICAgICAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDg6CisgICAgICAgICAg ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgc3Rxcl9oeXB2KFQwICYgfjcsIFQx KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2goc2l6ZSkgeworICAgICAgICAg ICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgc3RiX2tlcm5lbChUMCwgVDEpOwor ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAg ICAgICAgICAgICAgICAgIHN0d3Jfa2VybmVsKFQwICYgfjEsIFQxKTsKKyAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAg ICBzdGxyX2tlcm5lbChUMCAmIH4zLCBUMSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg ICAgICAgICAgICAgICBzdHFyX2tlcm5lbChUMCAmIH43LCBUMSk7CisgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgIHN3aXRjaChzaXplKSB7CisgICAgICAgICAgICBjYXNlIDE6Cisg ICAgICAgICAgICAgICAgc3RiX3VzZXIoVDAsIFQxKTsKKyAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBzdHdyX3VzZXIoVDAgJiB+MSwg VDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA0OgorICAgICAg ICAgICAgICAgIHN0bHJfdXNlcihUMCAmIH4zLCBUMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg ICAgIHN0cXJfdXNlcihUMCAmIH43LCBUMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDE0OiAvLyBC eXBhc3MKICAgICBjYXNlIDB4MTU6IC8vIEJ5cGFzcywgbm9uLWNhY2hlYWJsZQotICAgIGNhc2Ug MHgxYzogLy8gQnlwYXNzIExFCi0gICAgY2FzZSAweDFkOiAvLyBCeXBhc3MsIG5vbi1jYWNoZWFi bGUgTEUKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoKHNpemUpIHsKICAgICAgICAgICAg IGNhc2UgMToKQEAgLTExMTUsNiArMTE3MywyNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9 CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIDB4MWM6IC8vIEJ5cGFzcyBMRQorICAgIGNhc2Ug MHgxZDogLy8gQnlwYXNzLCBub24tY2FjaGVhYmxlIExFCisgICAgICAgIHsKKyAgICAgICAgICAg IHN3aXRjaChzaXplKSB7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgc3Ri X3BoeXMoVDAsIFQxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug MjoKKyAgICAgICAgICAgICAgICBzdHdfcGh5cyhUMCAmIH4xLCBic3dhcDE2KFQxKSk7CisgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAg c3RsX3BoeXMoVDAgJiB+MywgYnN3YXAzMihUMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg ICBzdHFfcGh5cyhUMCAmIH43LCBic3dhcDY0KFQxKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgMHgw NDogLy8gTnVjbGV1cwogICAgIGNhc2UgMHgwYzogLy8gTnVjbGV1cyBMaXR0bGUgRW5kaWFuIChM RSkKICAgICBjYXNlIDB4MTE6IC8vIEFzIGlmIHVzZXIgc2Vjb25kYXJ5CkluZGV4OiBxZW11L3Rh cmdldC1zcGFyYy9vcF9tZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdGFyZ2V0LXNwYXJj L29wX21lbS5oCTIwMDctMTAtMTUgMTY6NDc6MTEuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3Rh cmdldC1zcGFyYy9vcF9tZW0uaAkyMDA3LTEwLTE1IDE3OjAwOjE2LjAwMDAwMDAwMCArMDAwMApA QCAtODIsMTYgKzgyLDggQEAKIH0KIAogI2lmZGVmIFRBUkdFVF9TUEFSQzY0Ci12b2lkIE9QUFJP VE8gZ2x1ZShvcF9sZHV3LCBNRU1TVUZGSVgpKHZvaWQpCi17Ci0gICAgVDEgPSAodWludDY0X3Qp KGdsdWUobGR1bCwgTUVNU1VGRklYKShBRERSKFQwKSkgJiAweGZmZmZmZmZmKTsKLX0KLQotdm9p ZCBPUFBST1RPIGdsdWUob3BfbGRzdywgTUVNU1VGRklYKSh2b2lkKQotewotICAgIFQxID0gKGlu dDY0X3QpKGdsdWUobGR1bCwgTUVNU1VGRklYKShBRERSKFQwKSkgJiAweGZmZmZmZmZmKTsKLX0K LQorU1BBUkNfTERfT1AobGR1dywgbGR1bCk7CitTUEFSQ19MRF9PUChsZHN3LCBsZHNsKTsKIFNQ QVJDX0xEX09QKGxkeCwgbGRxKTsKIFNQQVJDX1NUX09QKHN0eCwgc3RxKTsKICNlbmRpZgpJbmRl eDogcWVtdS9jcHUtYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2NwdS1hbGwuaAkyMDA3 LTEwLTE1IDE3OjEwOjE1LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9jcHUtYWxsLmgJMjAwNy0x MC0xNSAxNzoyNzo0Ny4wMDAwMDAwMDAgKzAwMDAKQEAgLTExMjgsNiArMTEyOCwxMTggQEAKICNk ZWZpbmUgc3RmcV9sZV9rZXJuZWwocCwgdnQpIHN0ZnFfa2VybmVsKHAsIHZ0KQogI2VuZGlmCiAK Ky8qIG5hdGl2ZS1lbmRpYW4gKi8KKyNkZWZpbmUgbGR1Yl9oeXB2KHApIGxkdWJfcmF3KHApCisj ZGVmaW5lIGxkc2JfaHlwdihwKSBsZHNiX3JhdyhwKQorI2RlZmluZSBsZHV3X2h5cHYocCkgbGR1 d19yYXcocCkKKyNkZWZpbmUgbGRzd19oeXB2KHApIGxkc3dfcmF3KHApCisjZGVmaW5lIGxkdWxf aHlwdihwKSBsZHVsX3JhdyhwKQorI2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorI2RlZmlu ZSBsZHNsX2h5cHYocCkgbGRzbF9yYXcocCkKKyNlbmRpZgorI2RlZmluZSBsZHFfaHlwdihwKSBs ZHFfcmF3KHApCisjZGVmaW5lIGxkZmxfaHlwdihwKSBsZGZsX3JhdyhwKQorI2RlZmluZSBsZGZx X2h5cHYocCkgbGRmcV9yYXcocCkKKyNkZWZpbmUgc3RiX2h5cHYocCwgdikgc3RiX3JhdyhwLCB2 KQorI2RlZmluZSBzdHdfaHlwdihwLCB2KSBzdHdfcmF3KHAsIHYpCisjZGVmaW5lIHN0bF9oeXB2 KHAsIHYpIHN0bF9yYXcocCwgdikKKyNkZWZpbmUgc3RxX2h5cHYocCwgdikgc3RxX3JhdyhwLCB2 KQorI2RlZmluZSBzdGZsX2h5cHYocCwgdikgc3RmbF9yYXcocCwgdikKKyNkZWZpbmUgc3RmcV9o eXB2KHAsIHZ0KSBzdGZxX3JhdyhwLCB2KQorLyogcmV2ZXJzZS1lbmRpYW4gKi8KKyNkZWZpbmUg bGR1YnJfaHlwdihwKSBsZHViX3JhdyhwKQorI2RlZmluZSBsZHNicl9oeXB2KHApIGxkc2JfcmF3 KHApCisjZGVmaW5lIGxkdXdyX2h5cHYocCkgbGR1d3JfcmF3KHApCisjZGVmaW5lIGxkc3dyX2h5 cHYocCkgbGRzd3JfcmF3KHApCisjZGVmaW5lIGxkdWxyX2h5cHYocCkgbGR1bHJfcmF3KHApCisj aWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQpCisjZGVmaW5lIGxkc2xyX2h5cHYocCkgbGRzbHJf cmF3KHApCisjZW5kaWYKKyNkZWZpbmUgbGRxcl9oeXB2KHApIGxkcXJfcmF3KHApCisjZGVmaW5l IGxkZmxyX2h5cHYocCkgbGRmbHJfcmF3KHApCisjZGVmaW5lIGxkZnFyX2h5cHYocCkgbGRmcXJf cmF3KHApCisjZGVmaW5lIHN0YnJfaHlwdihwLCB2KSBzdGJyX3JhdyhwLCB2KQorI2RlZmluZSBz dHdyX2h5cHYocCwgdikgc3R3cl9yYXcocCwgdikKKyNkZWZpbmUgc3Rscl9oeXB2KHAsIHYpIHN0 bHJfcmF3KHAsIHYpCisjZGVmaW5lIHN0cXJfaHlwdihwLCB2KSBzdHFyX3JhdyhwLCB2KQorI2Rl ZmluZSBzdGZscl9oeXB2KHAsIHYpIHN0ZmxyX3JhdyhwLCB2KQorI2RlZmluZSBzdGZxcl9oeXB2 KHAsIHZ0KSBzdGZxcl9yYXcocCwgdikKKyNpZiBkZWZpbmVkKFRBUkdFVF9XT1JEU19CSUdFTkRJ QU4pCisvKiBiaWctZW5kaWFuICovCisjZGVmaW5lIGxkdWJfYmVfaHlwdihwKSBsZHViX2h5cHYo cCkKKyNkZWZpbmUgbGRzYl9iZV9oeXB2KHApIGxkc2JfaHlwdihwKQorI2RlZmluZSBsZHV3X2Jl X2h5cHYocCkgbGR1d19oeXB2KHApCisjZGVmaW5lIGxkc3dfYmVfaHlwdihwKSBsZHN3X2h5cHYo cCkKKyNkZWZpbmUgbGR1bF9iZV9oeXB2KHApIGxkdWxfaHlwdihwKQorI2lmIChUQVJHRVRfTE9O R19CSVRTID09IDY0KQorI2RlZmluZSBsZHNsX2JlX2h5cHYocCkgbGRzbF9oeXB2KHApCisjZW5k aWYKKyNkZWZpbmUgbGRxX2JlX2h5cHYocCkgbGRxX2h5cHYocCkKKyNkZWZpbmUgbGRmbF9iZV9o eXB2KHApIGxkZmxfaHlwdihwKQorI2RlZmluZSBsZGZxX2JlX2h5cHYocCkgbGRmcV9oeXB2KHAp CisjZGVmaW5lIHN0Yl9iZV9oeXB2KHAsIHYpIHN0Yl9oeXB2KHAsIHYpCisjZGVmaW5lIHN0d19i ZV9oeXB2KHAsIHYpIHN0d19oeXB2KHAsIHYpCisjZGVmaW5lIHN0bF9iZV9oeXB2KHAsIHYpIHN0 bF9oeXB2KHAsIHYpCisjZGVmaW5lIHN0cV9iZV9oeXB2KHAsIHYpIHN0cV9oeXB2KHAsIHYpCisj ZGVmaW5lIHN0ZmxfYmVfaHlwdihwLCB2KSBzdGZsX2h5cHYocCwgdikKKyNkZWZpbmUgc3RmcV9i ZV9oeXB2KHAsIHZ0KSBzdGZxX2h5cHYocCwgdnQpCisvKiBsaXR0bGUtZW5kaWFuICovCisjZGVm aW5lIGxkdWJfbGVfaHlwdihwKSBsZHVicl9oeXB2KHApCisjZGVmaW5lIGxkc2JfbGVfaHlwdihw KSBsZHNicl9oeXB2KHApCisjZGVmaW5lIGxkdXdfbGVfaHlwdihwKSBsZHV3cl9oeXB2KHApCisj ZGVmaW5lIGxkc3dfbGVfaHlwdihwKSBsZHN3cl9oeXB2KHApCisjZGVmaW5lIGxkdWxfbGVfaHlw dihwKSBsZHVscl9oeXB2KHApCisjaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gNjQpCisjZGVmaW5l IGxkc2xfbGVfaHlwdihwKSBsZHNscl9oeXB2KHApCisjZW5kaWYKKyNkZWZpbmUgbGRxX2xlX2h5 cHYocCkgbGRxcl9oeXB2KHApCisjZGVmaW5lIGxkZmxfbGVfaHlwdihwKSBsZGZscl9oeXB2KHAp CisjZGVmaW5lIGxkZnFfbGVfaHlwdihwKSBsZGZxcl9oeXB2KHApCisjZGVmaW5lIHN0Yl9sZV9o eXB2KHAsIHYpIHN0YnJfaHlwdihwLCB2KQorI2RlZmluZSBzdHdfbGVfaHlwdihwLCB2KSBzdHdy X2h5cHYocCwgdikKKyNkZWZpbmUgc3RsX2xlX2h5cHYocCwgdikgc3Rscl9oeXB2KHAsIHYpCisj ZGVmaW5lIHN0cV9sZV9oeXB2KHAsIHYpIHN0cXJfaHlwdihwLCB2KQorI2RlZmluZSBzdGZsX2xl X2h5cHYocCwgdikgc3RmbHJfaHlwdihwLCB2KQorI2RlZmluZSBzdGZxX2xlX2h5cHYocCwgdnQp IHN0ZnFyX2h5cHYocCwgdnQpCisjZWxzZQorLyogYmlnLWVuZGlhbiAqLworI2RlZmluZSBsZHVi X2JlX2h5cHYocCkgbGR1YnJfaHlwdihwKQorI2RlZmluZSBsZHNiX2JlX2h5cHYocCkgbGRzYnJf aHlwdihwKQorI2RlZmluZSBsZHV3X2JlX2h5cHYocCkgbGR1d3JfaHlwdihwKQorI2RlZmluZSBs ZHN3X2JlX2h5cHYocCkgbGRzd3JfaHlwdihwKQorI2RlZmluZSBsZHVsX2JlX2h5cHYocCkgbGR1 bHJfaHlwdihwKQorI2lmIChUQVJHRVRfTE9OR19CSVRTID09IDY0KQorI2RlZmluZSBsZHNsX2Jl X2h5cHYocCkgbGRzbHJfaHlwdihwKQorI2VuZGlmCisjZGVmaW5lIGxkcV9iZV9oeXB2KHApIGxk cXJfaHlwdihwKQorI2RlZmluZSBsZGZsX2JlX2h5cHYocCkgbGRmbHJfaHlwdihwKQorI2RlZmlu ZSBsZGZxX2JlX2h5cHYocCkgbGRmcXJfaHlwdihwKQorI2RlZmluZSBzdGJfYmVfaHlwdihwLCB2 KSBzdGJyX2h5cHYocCwgdikKKyNkZWZpbmUgc3R3X2JlX2h5cHYocCwgdikgc3R3cl9oeXB2KHAs IHYpCisjZGVmaW5lIHN0bF9iZV9oeXB2KHAsIHYpIHN0bHJfaHlwdihwLCB2KQorI2RlZmluZSBz dHFfYmVfaHlwdihwLCB2KSBzdHFyX2h5cHYocCwgdikKKyNkZWZpbmUgc3RmbF9iZV9oeXB2KHAs IHYpIHN0ZmxyX2h5cHYocCwgdikKKyNkZWZpbmUgc3RmcV9iZV9oeXB2KHAsIHZ0KSBzdGZxcl9o eXB2KHAsIHZ0KQorLyogbGl0dGxlLWVuZGlhbiAqLworI2RlZmluZSBsZHViX2xlX2h5cHYocCkg bGR1Yl9oeXB2KHApCisjZGVmaW5lIGxkc2JfbGVfaHlwdihwKSBsZHNiX2h5cHYocCkKKyNkZWZp bmUgbGR1d19sZV9oeXB2KHApIGxkdXdfaHlwdihwKQorI2RlZmluZSBsZHN3X2xlX2h5cHYocCkg bGRzd19oeXB2KHApCisjZGVmaW5lIGxkdWxfbGVfaHlwdihwKSBsZHVsX2h5cHYocCkKKyNpZiAo VEFSR0VUX0xPTkdfQklUUyA9PSA2NCkKKyNkZWZpbmUgbGRzbF9sZV9oeXB2KHApIGxkc2xfaHlw dihwKQorI2VuZGlmCisjZGVmaW5lIGxkcV9sZV9oeXB2KHApIGxkcV9oeXB2KHApCisjZGVmaW5l IGxkZmxfbGVfaHlwdihwKSBsZGZsX2h5cHYocCkKKyNkZWZpbmUgbGRmcV9sZV9oeXB2KHApIGxk ZnFfaHlwdihwKQorI2RlZmluZSBzdGJfbGVfaHlwdihwLCB2KSBzdGJfaHlwdihwLCB2KQorI2Rl ZmluZSBzdHdfbGVfaHlwdihwLCB2KSBzdHdfaHlwdihwLCB2KQorI2RlZmluZSBzdGxfbGVfaHlw dihwLCB2KSBzdGxfaHlwdihwLCB2KQorI2RlZmluZSBzdHFfbGVfaHlwdihwLCB2KSBzdHFfaHlw dihwLCB2KQorI2RlZmluZSBzdGZsX2xlX2h5cHYocCwgdikgc3RmbF9oeXB2KHAsIHYpCisjZGVm aW5lIHN0ZnFfbGVfaHlwdihwLCB2dCkgc3RmcV9oeXB2KHAsIHZ0KQorI2VuZGlmCisKICNlbmRp ZiAvKiBkZWZpbmVkKENPTkZJR19VU0VSX09OTFkpICovCiAKIC8qIHBhZ2UgcmVsYXRlZCBzdHVm ZiAqLwo= ------=_Part_38285_28117380.1192470352116--