From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IxJcf-0002T0-W4 for qemu-devel@nongnu.org; Wed, 28 Nov 2007 04:54:26 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IxJcd-0002Ry-8M for qemu-devel@nongnu.org; Wed, 28 Nov 2007 04:54:25 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IxJcc-0002Rs-UK for qemu-devel@nongnu.org; Wed, 28 Nov 2007 04:54:22 -0500 Received: from rn-out-0910.google.com ([64.233.170.190] helo=rn-out-0102.google.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IxJcc-0005sJ-CO for qemu-devel@nongnu.org; Wed, 28 Nov 2007 04:54:22 -0500 Received: by rn-out-0102.google.com with SMTP id e13so1065953rng for ; Wed, 28 Nov 2007 01:54:21 -0800 (PST) Message-ID: Date: Wed, 28 Nov 2007 18:54:20 +0900 From: "Magnus Damm" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_347_16504438.1196243660937" Subject: [Qemu-devel] [PATCH]: sh4 delay slot code update 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_347_16504438.1196243660937 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi everyone, This patch updates the delay slot handling for the sh4 target. The main feature is that delay slot flags now are stored in the tlb. This is needed for signal emulation and interrupts. There are also some correctness fixes included in this patch - with this patch applied i'm able to run quite a few dynamically linked busybox applets (uclibc). Some of these applets were broken without this fix. I've ran the sh4 binaries included in linux-user-test-0.2 and they work as usual. Some code and ideas come from the mips target. This is done to make the sh4 code less special and more readable for people coming from that architecture. cpu-exec.c | 4 - target-sh4/cpu.h | 18 +++---- target-sh4/op.c | 54 +++++++---------------- target-sh4/translate.c | 112 ++++++++++++++++++++++++++++++------------------ translate-all.c | 5 +- 5 files changed, 104 insertions(+), 89 deletions(-) Please apply! Thank you. / magnus ------=_Part_347_16504438.1196243660937 Content-Type: application/octet-stream; name=qemu-cvs-20071128c-sh-delay-slot.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_f9joc7ja0 Content-Disposition: attachment; filename=qemu-cvs-20071128c-sh-delay-slot.patch LS0tIDAwMDEvY3B1LWV4ZWMuYworKysgd29yay9jcHUtZXhlYy5jCTIwMDctMTEtMjggMTc6NTU6 NTIuMDAwMDAwMDAwICswOTAwCkBAIC0yMDIsOCArMjAyLDggQEAgc3RhdGljIGlubGluZSBUcmFu c2xhdGlvbkJsb2NrICp0Yl9maW5kXwogICAgIGNzX2Jhc2UgPSAwOwogICAgIHBjID0gZW52LT5w YzsKICNlbGlmIGRlZmluZWQoVEFSR0VUX1NINCkKLSAgICBmbGFncyA9IGVudi0+c3IgJiAoU1Jf TUQgfCBTUl9SQik7Ci0gICAgY3NfYmFzZSA9IDA7ICAgICAgICAgLyogWFhYWFggKi8KKyAgICBm bGFncyA9IGVudi0+ZmxhZ3M7CisgICAgY3NfYmFzZSA9IDA7CiAgICAgcGMgPSBlbnYtPnBjOwog I2VsaWYgZGVmaW5lZChUQVJHRVRfQUxQSEEpCiAgICAgZmxhZ3MgPSBlbnYtPnBzOwotLS0gMDAw MS90YXJnZXQtc2g0L2NwdS5oCisrKyB3b3JrL3RhcmdldC1zaDQvY3B1LmgJMjAwNy0xMS0yOCAx Nzo1NTo1Mi4wMDAwMDAwMDAgKzA5MDAKQEAgLTQ2LDE2ICs0NiwxNiBAQAogI2RlZmluZSBGUFND Ul9TWiAoMSA8PCAyMCkKICNkZWZpbmUgRlBTQ1JfUFIgKDEgPDwgMTkpCiAjZGVmaW5lIEZQU0NS X0ROICgxIDw8IDE4KQotCi0jZGVmaW5lIERFTEFZX1NMT1QgICAgICAgICAgICAgKDEgPDwgMCkg LyogTXVzdCBiZSB0aGUgc2FtZSBhcyBTUl9ULiAgKi8KLS8qIFRoaXMgZmxhZyBpcyBzZXQgaWYg dGhlIG5leHQgaW5zbiBpcyBhIGRlbGF5IHNsb3QgZm9yIGEgY29uZGl0aW9uYWwganVtcC4KLSAg IFRoZSBkeW5hbWljIHZhbHVlIG9mIHRoZSBERUxBWV9TTE9UIGRldGVybWluZXMgd2hldGhlciB0 aGUganVwIGlzIHRha2VuLiAqLworI2RlZmluZSBERUxBWV9TTE9UICAgICAgICAgICAgICgxIDw8 IDApCiAjZGVmaW5lIERFTEFZX1NMT1RfQ09ORElUSU9OQUwgKDEgPDwgMSkKLS8qIFRob3NlIGFy ZSB1c2VkIGluIGNvbnRleHRzIG9ubHkgKi8KLSNkZWZpbmUgQlJBTkNIICAgICAgICAgICAgICAg ICAoMSA8PCAyKQotI2RlZmluZSBCUkFOQ0hfQ09ORElUSU9OQUwgICAgICgxIDw8IDMpCi0jZGVm aW5lIE1PREVfQ0hBTkdFICAgICAgICAgICAgKDEgPDwgNCkJLyogUG90ZW50aWFsIE1EfFJCIGNo YW5nZSAqLwotI2RlZmluZSBCUkFOQ0hfRVhDRVBUSU9OICAgICAgICgxIDw8IDUpCS8qIEJyYW5j aCBhZnRlciBleGNlcHRpb24gKi8KKyNkZWZpbmUgREVMQVlfU0xPVF9UUlVFICAgICAgICAoMSA8 PCAyKQorI2RlZmluZSBERUxBWV9TTE9UX0NMRUFSTUUgICAgICgxIDw8IDMpCisvKiBUaGUgZHlu YW1pYyB2YWx1ZSBvZiB0aGUgREVMQVlfU0xPVF9UUlVFIGZsYWcgZGV0ZXJtaW5lcyB3aGV0aGVy IHRoZSBqdW1wCisgKiBhZnRlciB0aGUgZGVsYXkgc2xvdCBzaG91bGQgYmUgdGFrZW4gb3Igbm90 LiBJdCBpcyBjYWxjdWxhdGVkIGZyb20gU1JfVC4KKyAqCisgKiBJdCBpcyB1bmNsZWFyIGlmIGl0 IGlzIHBlcm1pdHRlZCB0byBtb2RpZnkgdGhlIFNSX1QgZmxhZyBpbiBhIGRlbGF5IHNsb3QuCisg KiBUaGUgdXNlIG9mIERFTEFZX1NMT1RfVFJVRSBmbGFnIG1ha2VzIHVzIGFjY2VwdCBzdWNoIFNS X1QgbW9kaWZpY2F0aW9uLgorICovCiAKIC8qIFhYWFhYIFRoZSBzdHJ1Y3R1cmUgY291bGQgYmUg bWFkZSBtb3JlIGNvbXBhY3QgKi8KIHR5cGVkZWYgc3RydWN0IHRsYl90IHsKLS0tIDAwMDEvdGFy Z2V0LXNoNC9vcC5jCisrKyB3b3JrL3RhcmdldC1zaDQvb3AuYwkyMDA3LTExLTI4IDE3OjU1OjUy LjAwMDAwMDAwMCArMDkwMApAQCAtMTksMTYgKzE5LDYgQEAKICAqLwogI2luY2x1ZGUgImV4ZWMu aCIKIAotc3RhdGljIGlubGluZSB2b2lkIHNldF9mbGFnKHVpbnQzMl90IGZsYWcpCi17Ci0gICAg ZW52LT5mbGFncyB8PSBmbGFnOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgY2xyX2ZsYWcodWlu dDMyX3QgZmxhZykKLXsKLSAgICBlbnYtPmZsYWdzICY9IH5mbGFnOwotfQotCiBzdGF0aWMgaW5s aW5lIHZvaWQgc2V0X3Qodm9pZCkKIHsKICAgICBlbnYtPnNyIHw9IFNSX1Q7CkBAIC0xMTAsMjgg KzEwMCwzNyBAQCB2b2lkIE9QUFJPVE8gb3Bfbm90X1QwKHZvaWQpCiB2b2lkIE9QUFJPVE8gb3Bf YmZfcyh2b2lkKQogewogICAgIGVudi0+ZGVsYXllZF9wYyA9IFBBUkFNMTsKLSAgICBzZXRfZmxh ZyhERUxBWV9TTE9UX0NPTkRJVElPTkFMIHwgKCh+ZW52LT5zcikgJiBTUl9UKSk7CisgICAgaWYg KCEoZW52LT5zciAmIFNSX1QpKSB7CisgICAgICAgIGVudi0+ZmxhZ3MgfD0gREVMQVlfU0xPVF9U UlVFOworICAgIH0KICAgICBSRVRVUk4oKTsKIH0KIAogdm9pZCBPUFBST1RPIG9wX2J0X3Modm9p ZCkKIHsKICAgICBlbnYtPmRlbGF5ZWRfcGMgPSBQQVJBTTE7Ci0gICAgc2V0X2ZsYWcoREVMQVlf U0xPVF9DT05ESVRJT05BTCB8IChlbnYtPnNyICYgU1JfVCkpOworICAgIGlmIChlbnYtPnNyICYg U1JfVCkgeworICAgICAgICBlbnYtPmZsYWdzIHw9IERFTEFZX1NMT1RfVFJVRTsKKyAgICB9Cisg ICAgUkVUVVJOKCk7Cit9CisKK3ZvaWQgT1BQUk9UTyBvcF9zdG9yZV9mbGFncyh2b2lkKQorewor ICAgIGVudi0+ZmxhZ3MgJj0gREVMQVlfU0xPVF9UUlVFOworICAgIGVudi0+ZmxhZ3MgfD0gUEFS QU0xOwogICAgIFJFVFVSTigpOwogfQogCiB2b2lkIE9QUFJPVE8gb3BfYnJhKHZvaWQpCiB7CiAg ICAgZW52LT5kZWxheWVkX3BjID0gUEFSQU0xOwotICAgIHNldF9mbGFnKERFTEFZX1NMT1QpOwog ICAgIFJFVFVSTigpOwogfQogCiB2b2lkIE9QUFJPVE8gb3BfYnJhZl9UMCh2b2lkKQogewogICAg IGVudi0+ZGVsYXllZF9wYyA9IFBBUkFNMSArIFQwOwotICAgIHNldF9mbGFnKERFTEFZX1NMT1Qp OwogICAgIFJFVFVSTigpOwogfQogCkBAIC0xMzksNyArMTM4LDYgQEAgdm9pZCBPUFBST1RPIG9w X2Jzcih2b2lkKQogewogICAgIGVudi0+cHIgPSBQQVJBTTE7CiAgICAgZW52LT5kZWxheWVkX3Bj ID0gUEFSQU0yOwotICAgIHNldF9mbGFnKERFTEFZX1NMT1QpOwogICAgIFJFVFVSTigpOwogfQog CkBAIC0xNDcsNyArMTQ1LDYgQEAgdm9pZCBPUFBST1RPIG9wX2JzcmZfVDAodm9pZCkKIHsKICAg ICBlbnYtPnByID0gUEFSQU0xOwogICAgIGVudi0+ZGVsYXllZF9wYyA9IFBBUkFNMSArIFQwOwot ICAgIHNldF9mbGFnKERFTEFZX1NMT1QpOwogICAgIFJFVFVSTigpOwogfQogCkBAIC0xNTUsMjYg KzE1MiwxMiBAQCB2b2lkIE9QUFJPVE8gb3BfanNyX1QwKHZvaWQpCiB7CiAgICAgZW52LT5wciA9 IFBBUkFNMTsKICAgICBlbnYtPmRlbGF5ZWRfcGMgPSBUMDsKLSAgICBzZXRfZmxhZyhERUxBWV9T TE9UKTsKICAgICBSRVRVUk4oKTsKIH0KIAogdm9pZCBPUFBST1RPIG9wX3J0cyh2b2lkKQogewog ICAgIGVudi0+ZGVsYXllZF9wYyA9IGVudi0+cHI7Ci0gICAgc2V0X2ZsYWcoREVMQVlfU0xPVCk7 Ci0gICAgUkVUVVJOKCk7Ci19Ci0KLXZvaWQgT1BQUk9UTyBvcF9jbHJfZGVsYXlfc2xvdCh2b2lk KQotewotICAgIGNscl9mbGFnKERFTEFZX1NMT1QpOwotICAgIFJFVFVSTigpOwotfQotCi12b2lk IE9QUFJPVE8gb3BfY2xyX2RlbGF5X3Nsb3RfY29uZGl0aW9uYWwodm9pZCkKLXsKLSAgICBjbHJf ZmxhZyhERUxBWV9TTE9UX0NPTkRJVElPTkFMKTsKICAgICBSRVRVUk4oKTsKIH0KIApAQCAtMjQy LDcgKzIyNSw2IEBAIHZvaWQgT1BQUk9UTyBvcF9ydGUodm9pZCkKIHsKICAgICBlbnYtPnNyID0g ZW52LT5zc3I7CiAgICAgZW52LT5kZWxheWVkX3BjID0gZW52LT5zcGM7Ci0gICAgc2V0X2ZsYWco REVMQVlfU0xPVCk7CiAgICAgUkVUVVJOKCk7CiB9CiAKQEAgLTQ1OCw3ICs0NDAsNiBAQCB2b2lk IE9QUFJPVE8gb3BfY21wX3B6X1QwKHZvaWQpCiB2b2lkIE9QUFJPVE8gb3Bfam1wX1QwKHZvaWQp CiB7CiAgICAgZW52LT5kZWxheWVkX3BjID0gVDA7Ci0gICAgc2V0X2ZsYWcoREVMQVlfU0xPVCk7 CiAgICAgUkVUVVJOKCk7CiB9CiAKQEAgLTk5MywxMSArOTc0LDEwIEBAIHZvaWQgT1BQUk9UTyBv cF9qVCh2b2lkKQogCiB2b2lkIE9QUFJPVE8gb3BfamRlbGF5ZWQodm9pZCkKIHsKLSAgICB1aW50 MzJfdCBmbGFnczsKLSAgICBmbGFncyA9IGVudi0+ZmxhZ3M7Ci0gICAgZW52LT5mbGFncyAmPSB+ KERFTEFZX1NMT1QgfCBERUxBWV9TTE9UX0NPTkRJVElPTkFMKTsKLSAgICBpZiAoZmxhZ3MgJiBE RUxBWV9TTE9UKQotCUdPVE9fTEFCRUxfUEFSQU0oMSk7CisgICAgaWYgKGVudi0+ZmxhZ3MgJiBE RUxBWV9TTE9UX1RSVUUpIHsKKyAgICAgICAgZW52LT5mbGFncyAmPSB+REVMQVlfU0xPVF9UUlVF OworICAgICAgICBHT1RPX0xBQkVMX1BBUkFNKDEpOworICAgIH0KICAgICBSRVRVUk4oKTsKIH0K IAotLS0gMDAwMS90YXJnZXQtc2g0L3RyYW5zbGF0ZS5jCisrKyB3b3JrL3RhcmdldC1zaDQvdHJh bnNsYXRlLmMJMjAwNy0xMS0yOCAxODowNDo1OC4wMDAwMDAwMDAgKzA5MDAKQEAgLTU3LDExICs1 NywyMSBAQCB0eXBlZGVmIHN0cnVjdCBEaXNhc0NvbnRleHQgewogICAgIHVpbnQzMl90IGZwc2Ny OwogICAgIHVpbnQxNl90IG9wY29kZTsKICAgICB1aW50MzJfdCBmbGFnczsKKyAgICBpbnQgYnN0 YXRlOwogICAgIGludCBtZW1pZHg7CiAgICAgdWludDMyX3QgZGVsYXllZF9wYzsKICAgICBpbnQg c2luZ2xlc3RlcF9lbmFibGVkOwogfSBEaXNhc0NvbnRleHQ7CiAKK2VudW0geworICAgIEJTX05P TkUgICAgID0gMCwgLyogV2UgZ28gb3V0IG9mIHRoZSBUQiB3aXRob3V0IHJlYWNoaW5nIGEgYnJh bmNoIG9yIGFuCisgICAgICAgICAgICAgICAgICAgICAgKiBleGNlcHRpb24gY29uZGl0aW9uCisg ICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICBCU19TVE9QICAgICA9IDEsIC8qIFdlIHdhbnQg dG8gc3RvcCB0cmFuc2xhdGlvbiBmb3IgYW55IHJlYXNvbiAqLworICAgIEJTX0JSQU5DSCAgID0g MiwgLyogV2UgcmVhY2hlZCBhIGJyYW5jaCBjb25kaXRpb24gICAgICovCisgICAgQlNfRVhDUCAg ICAgPSAzLCAvKiBXZSByZWFjaGVkIGFuIGV4Y2VwdGlvbiBjb25kaXRpb24gKi8KK307CisKICNp ZmRlZiBDT05GSUdfVVNFUl9PTkxZCiAKICNkZWZpbmUgR0VOX09QX0xEKHdpZHRoLCByZWcpIFwK QEAgLTE3OSwxMCArMTg5LDYgQEAgc3RhdGljIHZvaWQgZ2VuX2dvdG9fdGIoRGlzYXNDb250ZXh0 ICogYwogLyogSnVtcCB0byBwYyBhZnRlciBhbiBleGNlcHRpb24gKi8KIHN0YXRpYyB2b2lkIGdl bl9qdW1wX2V4Y2VwdGlvbihEaXNhc0NvbnRleHQgKiBjdHgpCiB7Ci0gICAgZ2VuX29wX21vdmxf aW1tX1QwKDApOwotICAgIGlmIChjdHgtPnNpbmdsZXN0ZXBfZW5hYmxlZCkKLQlnZW5fb3BfZGVi dWcoKTsKLSAgICBnZW5fb3BfZXhpdF90YigpOwogfQogCiBzdGF0aWMgdm9pZCBnZW5fanVtcChE aXNhc0NvbnRleHQgKiBjdHgpCkBAIC0yMjAsNyArMjI2LDcgQEAgc3RhdGljIHZvaWQgZ2VuX2Rl bGF5ZWRfY29uZGl0aW9uYWxfanVtcAogCiAgICAgbDEgPSBnZW5fbmV3X2xhYmVsKCk7CiAgICAg Z2VuX29wX2pkZWxheWVkKGwxKTsKLSAgICBnZW5fZ290b190YihjdHgsIDEsIGN0eC0+cGMpOwor ICAgIGdlbl9nb3RvX3RiKGN0eCwgMSwgY3R4LT5wYyArIDIpOwogICAgIGdlbl9zZXRfbGFiZWwo bDEpOwogICAgIGdlbl9qdW1wKGN0eCk7CiB9CkBAIC0yNDgsMTAgKzI1NCwxMCBAQCBzdGF0aWMg dm9pZCBnZW5fZGVsYXllZF9jb25kaXRpb25hbF9qdW1wCiAKICNkZWZpbmUgQ0hFQ0tfTk9UX0RF TEFZX1NMT1QgXAogICBpZiAoY3R4LT5mbGFncyAmIChERUxBWV9TTE9UIHwgREVMQVlfU0xPVF9D T05ESVRJT05BTCkpIFwKLSAge2dlbl9vcF9yYWlzZV9zbG90X2lsbGVnYWxfaW5zdHJ1Y3Rpb24g KCk7IGN0eC0+ZmxhZ3MgfD0gQlJBTkNIX0VYQ0VQVElPTjsgXAorICB7Z2VuX29wX3JhaXNlX3Ns b3RfaWxsZWdhbF9pbnN0cnVjdGlvbiAoKTsgY3R4LT5ic3RhdGUgPSBCU19FWENQOyBcCiAgICBy ZXR1cm47fQogCi12b2lkIGRlY29kZV9vcGMoRGlzYXNDb250ZXh0ICogY3R4KQordm9pZCBfZGVj b2RlX29wYyhEaXNhc0NvbnRleHQgKiBjdHgpCiB7CiAjaWYgMAogICAgIGZwcmludGYoc3RkZXJy LCAiVHJhbnNsYXRpbmcgb3Bjb2RlIDB4JTA0eFxuIiwgY3R4LT5vcGNvZGUpOwpAQCAtMjkwLDEx ICsyOTYsMTEgQEAgdm9pZCBkZWNvZGVfb3BjKERpc2FzQ29udGV4dCAqIGN0eCkKIAlyZXR1cm47 CiAgICAgY2FzZSAweGZiZmI6CQkvKiBmcmNoZyAqLwogCWdlbl9vcF9mcmNoZygpOwotCWN0eC0+ ZmxhZ3MgfD0gTU9ERV9DSEFOR0U7CisJY3R4LT5ic3RhdGUgPSBCU19TVE9QOwogCXJldHVybjsK ICAgICBjYXNlIDB4ZjNmYjoJCS8qIGZzY2hnICovCiAJZ2VuX29wX2ZzY2hnKCk7Ci0JY3R4LT5m bGFncyB8PSBNT0RFX0NIQU5HRTsKKwljdHgtPmJzdGF0ZSA9IEJTX1NUT1A7CiAJcmV0dXJuOwog ICAgIGNhc2UgMHgwMDA5OgkJLyogbm9wICovCiAJcmV0dXJuOwpAQCAtODA1LDcgKzgxMSw3IEBA IHZvaWQgZGVjb2RlX29wYyhEaXNhc0NvbnRleHQgKiBjdHgpCiAJQ0hFQ0tfTk9UX0RFTEFZX1NM T1QKIAkgICAgZ2VuX2NvbmRpdGlvbmFsX2p1bXAoY3R4LCBjdHgtPnBjICsgMiwKIAkJCQkgY3R4 LT5wYyArIDQgKyBCN18wcyAqIDIpOwotCWN0eC0+ZmxhZ3MgfD0gQlJBTkNIX0NPTkRJVElPTkFM OworCWN0eC0+YnN0YXRlID0gQlNfQlJBTkNIOwogCXJldHVybjsKICAgICBjYXNlIDB4OGYwMDoJ CS8qIGJmL3MgbGFiZWwgKi8KIAlDSEVDS19OT1RfREVMQVlfU0xPVApAQCAtODE2LDcgKzgyMiw3 IEBAIHZvaWQgZGVjb2RlX29wYyhEaXNhc0NvbnRleHQgKiBjdHgpCiAJQ0hFQ0tfTk9UX0RFTEFZ X1NMT1QKIAkgICAgZ2VuX2NvbmRpdGlvbmFsX2p1bXAoY3R4LCBjdHgtPnBjICsgNCArIEI3XzBz ICogMiwKIAkJCQkgY3R4LT5wYyArIDIpOwotCWN0eC0+ZmxhZ3MgfD0gQlJBTkNIX0NPTkRJVElP TkFMOworCWN0eC0+YnN0YXRlID0gQlNfQlJBTkNIOwogCXJldHVybjsKICAgICBjYXNlIDB4OGQw MDoJCS8qIGJ0L3MgbGFiZWwgKi8KIAlDSEVDS19OT1RfREVMQVlfU0xPVApAQCAtOTA4LDcgKzkx NCw3IEBAIHZvaWQgZGVjb2RlX29wYyhEaXNhc0NvbnRleHQgKiBjdHgpCiAgICAgY2FzZSAweGMz MDA6CQkvKiB0cmFwYSAjaW1tICovCiAJQ0hFQ0tfTk9UX0RFTEFZX1NMT1QgZ2VuX29wX21vdmxf aW1tX1BDKGN0eC0+cGMpOwogCWdlbl9vcF90cmFwYShCN18wKTsKLQljdHgtPmZsYWdzIHw9IEJS QU5DSDsKKwljdHgtPmJzdGF0ZSA9IEJTX0JSQU5DSDsKIAlyZXR1cm47CiAgICAgY2FzZSAweGM4 MDA6CQkvKiB0c3QgI2ltbSxSMCAqLwogCWdlbl9vcF90c3RfaW1tX3JOKEI3XzAsIFJFRygwKSk7 CkBAIC0xMDEyLDggKzEwMTgsOCBAQCB2b2lkIGRlY29kZV9vcGMoRGlzYXNDb250ZXh0ICogY3R4 KQogICAgIGdlbl9vcF9tb3ZsX3JOX1QxIChSRUcoQjExXzgpKTsJCQkJXAogICAgIGdlbl9vcF9z dGxfVDBfVDEgKGN0eCk7CQkJCQlcCiAgICAgcmV0dXJuOwotCUxEU1Qoc3IsIDB4NDAwZSwgMHg0 MDA3LCBsZGMsIDB4MDAwMiwgMHg0MDAzLCBzdGMsIGN0eC0+ZmxhZ3MgfD0KLQkgICAgIE1PREVf Q0hBTkdFOykKKwlMRFNUKHNyLCAweDQwMGUsIDB4NDAwNywgbGRjLCAweDAwMDIsIDB4NDAwMywg c3RjLCBjdHgtPmJzdGF0ZSA9CisJICAgICBCU19TVE9QOykKIAlMRFNUKGdiciwgMHg0MDFlLCAw eDQwMTcsIGxkYywgMHgwMDEyLCAweDQwMTMsIHN0YywpCiAJTERTVCh2YnIsIDB4NDAyZSwgMHg0 MDI3LCBsZGMsIDB4MDAyMiwgMHg0MDIzLCBzdGMsKQogCUxEU1Qoc3NyLCAweDQwM2UsIDB4NDAz NywgbGRjLCAweDAwMzIsIDB4NDAzMywgc3RjLCkKQEAgLTEwMjMsOCArMTAyOSw4IEBAIHZvaWQg ZGVjb2RlX29wYyhEaXNhc0NvbnRleHQgKiBjdHgpCiAJTERTVChtYWNsLCAweDQwMWEsIDB4NDAx NiwgbGRzLCAweDAwMWEsIDB4NDAxMiwgc3RzLCkKIAlMRFNUKHByLCAweDQwMmEsIDB4NDAyNiwg bGRzLCAweDAwMmEsIDB4NDAyMiwgc3RzLCkKIAlMRFNUKGZwdWwsIDB4NDA1YSwgMHg0MDU2LCBs ZHMsIDB4MDA1YSwgMHg0MDUyLCBzdHMsKQotCUxEU1QoZnBzY3IsIDB4NDA2YSwgMHg0MDY2LCBs ZHMsIDB4MDA2YSwgMHg0MDYyLCBzdHMsIGN0eC0+ZmxhZ3MgfD0KLQkgICAgIE1PREVfQ0hBTkdF OykKKwlMRFNUKGZwc2NyLCAweDQwNmEsIDB4NDA2NiwgbGRzLCAweDAwNmEsIDB4NDA2Miwgc3Rz LCBjdHgtPmJzdGF0ZSA9CisJICAgICBCU19TVE9QOykKICAgICBjYXNlIDB4MDBjMzoJCS8qIG1v dmNhLmwgUjAsQFJtICovCiAJZ2VuX29wX21vdmxfck5fVDAoUkVHKDApKTsKIAlnZW5fb3BfbW92 bF9yTl9UMShSRUcoQjExXzgpKTsKQEAgLTExNDEsNyArMTE0NywyOCBAQCB2b2lkIGRlY29kZV9v cGMoRGlzYXNDb250ZXh0ICogY3R4KQogICAgIGZwcmludGYoc3RkZXJyLCAidW5rbm93biBpbnN0 cnVjdGlvbiAweCUwNHggYXQgcGMgMHglMDh4XG4iLAogCSAgICBjdHgtPm9wY29kZSwgY3R4LT5w Yyk7CiAgICAgZ2VuX29wX3JhaXNlX2lsbGVnYWxfaW5zdHJ1Y3Rpb24oKTsKLSAgICBjdHgtPmZs YWdzIHw9IEJSQU5DSF9FWENFUFRJT047CisgICAgY3R4LT5ic3RhdGUgPSBCU19FWENQOworfQor Cit2b2lkIGRlY29kZV9vcGMoRGlzYXNDb250ZXh0ICogY3R4KQoreworICAgIHVpbnQzMl90IG9s ZF9mbGFncyA9IGN0eC0+ZmxhZ3M7CisgICAgCisgICAgX2RlY29kZV9vcGMoY3R4KTsKKworICAg IGlmIChvbGRfZmxhZ3MgJiAoREVMQVlfU0xPVCB8IERFTEFZX1NMT1RfQ09ORElUSU9OQUwpKSB7 CisgICAgICAgIGlmIChjdHgtPmZsYWdzICYgREVMQVlfU0xPVF9DTEVBUk1FKSB7CisgICAgICAg ICAgICBnZW5fb3Bfc3RvcmVfZmxhZ3MoMCk7CisgICAgICAgIH0KKyAgICAgICAgY3R4LT5mbGFn cyA9IDA7CisgICAgICAgIGN0eC0+YnN0YXRlID0gQlNfQlJBTkNIOworICAgICAgICBpZiAob2xk X2ZsYWdzICYgREVMQVlfU0xPVF9DT05ESVRJT05BTCkgeworCSAgICBnZW5fZGVsYXllZF9jb25k aXRpb25hbF9qdW1wKGN0eCk7CisgICAgICAgIH0gZWxzZSBpZiAob2xkX2ZsYWdzICYgREVMQVlf U0xPVCkgeworICAgICAgICAgICAgZ2VuX2p1bXAoY3R4KTsKKwl9CisKKyAgICB9CiB9CiAKIHN0 YXRpYyBpbmxpbmUgaW50CkBAIC0xMTUxLDcgKzExNzgsNiBAQCBnZW5faW50ZXJtZWRpYXRlX2Nv ZGVfaW50ZXJuYWwoQ1BVU3RhdGUgCiAgICAgRGlzYXNDb250ZXh0IGN0eDsKICAgICB0YXJnZXRf dWxvbmcgcGNfc3RhcnQ7CiAgICAgc3RhdGljIHVpbnQxNl90ICpnZW5fb3BjX2VuZDsKLSAgICB1 aW50MzJfdCBvbGRfZmxhZ3M7CiAgICAgaW50IGksIGlpOwogCiAgICAgcGNfc3RhcnQgPSB0Yi0+ cGM7CkBAIC0xMTU5LDE0ICsxMTg1LDE0IEBAIGdlbl9pbnRlcm1lZGlhdGVfY29kZV9pbnRlcm5h bChDUFVTdGF0ZSAKICAgICBnZW5fb3BjX2VuZCA9IGdlbl9vcGNfYnVmICsgT1BDX01BWF9TSVpF OwogICAgIGdlbl9vcHBhcmFtX3B0ciA9IGdlbl9vcHBhcmFtX2J1ZjsKICAgICBjdHgucGMgPSBw Y19zdGFydDsKLSAgICBjdHguZmxhZ3MgPSBlbnYtPmZsYWdzOwotICAgIG9sZF9mbGFncyA9IDA7 CisgICAgY3R4LmZsYWdzID0gKHVpbnQzMl90KXRiLT5mbGFnczsKKyAgICBjdHguYnN0YXRlID0g QlNfTk9ORTsKICAgICBjdHguc3IgPSBlbnYtPnNyOwogICAgIGN0eC5mcHNjciA9IGVudi0+ZnBz Y3I7CiAgICAgY3R4Lm1lbWlkeCA9IChlbnYtPnNyICYgU1JfTUQpID8gMSA6IDA7CiAgICAgLyog V2UgZG9uJ3Qga25vdyBpZiB0aGUgZGVsYXllZCBwYyBjYW1lIGZyb20gYSBkeW5hbWljIG9yIHN0 YXRpYyBicmFuY2gsCiAgICAgICAgc28gYXNzdW1lIGl0IGlzIGEgZHluYW1pYyBicmFuY2guICAq LwotICAgIGN0eC5kZWxheWVkX3BjID0gLTE7CisgICAgY3R4LmRlbGF5ZWRfcGMgPSAtMTsgLyog dXNlIGRlbGF5ZWQgcGMgZnJvbSBlbnYgcG9pbnRlciAqLwogICAgIGN0eC50YiA9IHRiOwogICAg IGN0eC5zaW5nbGVzdGVwX2VuYWJsZWQgPSBlbnYtPnNpbmdsZXN0ZXBfZW5hYmxlZDsKICAgICBu Yl9nZW5fbGFiZWxzID0gMDsKQEAgLTExODAsMTggKzEyMDYsMTQgQEAgZ2VuX2ludGVybWVkaWF0 ZV9jb2RlX2ludGVybmFsKENQVVN0YXRlIAogI2VuZGlmCiAKICAgICBpaSA9IC0xOwotICAgIHdo aWxlICgob2xkX2ZsYWdzICYgKERFTEFZX1NMT1QgfCBERUxBWV9TTE9UX0NPTkRJVElPTkFMKSkg PT0gMCAmJgotCSAgIChjdHguZmxhZ3MgJiAoQlJBTkNIIHwgQlJBTkNIX0NPTkRJVElPTkFMIHwg TU9ERV9DSEFOR0UgfAotCQkJIEJSQU5DSF9FWENFUFRJT04pKSA9PSAwICYmCi0JICAgZ2VuX29w Y19wdHIgPCBnZW5fb3BjX2VuZCAmJiBjdHguc3IgPT0gZW52LT5zcikgewotCW9sZF9mbGFncyA9 IGN0eC5mbGFnczsKKyAgICB3aGlsZSAoY3R4LmJzdGF0ZSA9PSBCU19OT05FICYmIGdlbl9vcGNf cHRyIDwgZ2VuX29wY19lbmQpIHsKIAlpZiAoZW52LT5uYl9icmVha3BvaW50cyA+IDApIHsKIAkg ICAgZm9yIChpID0gMDsgaSA8IGVudi0+bmJfYnJlYWtwb2ludHM7IGkrKykgewogCQlpZiAoY3R4 LnBjID09IGVudi0+YnJlYWtwb2ludHNbaV0pIHsKIAkJICAgIC8qIFdlIGhhdmUgaGl0IGEgYnJl YWtwb2ludCAtIG1ha2Ugc3VyZSBQQyBpcyB1cC10by1kYXRlICovCiAJCSAgICBnZW5fb3BfbW92 bF9pbW1fUEMoY3R4LnBjKTsKIAkJICAgIGdlbl9vcF9kZWJ1ZygpOwotCQkgICAgY3R4LmZsYWdz IHw9IEJSQU5DSF9FWENFUFRJT047CisJCSAgICBjdHguYnN0YXRlID0gQlNfRVhDUDsKIAkJICAg IGJyZWFrOwogCQl9CiAJICAgIH0KQEAgLTEyMDQsNiArMTIyNiw3IEBAIGdlbl9pbnRlcm1lZGlh dGVfY29kZV9pbnRlcm5hbChDUFVTdGF0ZSAKICAgICAgICAgICAgICAgICAgICAgZ2VuX29wY19p bnN0cl9zdGFydFtpaSsrXSA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnZW5fb3Bj X3BjW2lpXSA9IGN0eC5wYzsKKyAgICAgICAgICAgIGdlbl9vcGNfaGZsYWdzW2lpXSA9IGN0eC5m bGFnczsKICAgICAgICAgICAgIGdlbl9vcGNfaW5zdHJfc3RhcnRbaWldID0gMTsKICAgICAgICAg fQogI2lmIDAKQEAgLTEyMjEsMjEgKzEyNDQsMzAgQEAgZ2VuX2ludGVybWVkaWF0ZV9jb2RlX2lu dGVybmFsKENQVVN0YXRlIAogCWJyZWFrOwogI2VuZGlmCiAgICAgfQotCi0gICAgaWYgKG9sZF9m bGFncyAmIERFTEFZX1NMT1RfQ09ORElUSU9OQUwpIHsKLQlnZW5fZGVsYXllZF9jb25kaXRpb25h bF9qdW1wKCZjdHgpOwotICAgIH0gZWxzZSBpZiAob2xkX2ZsYWdzICYgREVMQVlfU0xPVCkgewot CWdlbl9vcF9jbHJfZGVsYXlfc2xvdCgpOwotCWdlbl9qdW1wKCZjdHgpOwotICAgIH0gZWxzZSBp ZiAoY3R4LmZsYWdzICYgQlJBTkNIX0VYQ0VQVElPTikgewotICAgICAgICBnZW5fanVtcF9leGNl cHRpb24oJmN0eCk7Ci0gICAgfSBlbHNlIGlmICgoY3R4LmZsYWdzICYgKEJSQU5DSCB8IEJSQU5D SF9DT05ESVRJT05BTCkpID09IDApIHsKLSAgICAgICAgZ2VuX2dvdG9fdGIoJmN0eCwgMCwgY3R4 LnBjKTsKLSAgICB9Ci0KICAgICBpZiAoZW52LT5zaW5nbGVzdGVwX2VuYWJsZWQpIHsKLQlnZW5f b3BfZGVidWcoKTsKKyAgICAgICAgZ2VuX29wX2RlYnVnKCk7CisgICAgfSBlbHNlIHsKKwlzd2l0 Y2ggKGN0eC5ic3RhdGUpIHsKKyAgICAgICAgY2FzZSBCU19TVE9QOgorICAgICAgICAgICAgLyog Z2VuX29wX2ludGVycnVwdF9yZXN0YXJ0KCk7ICovCisgICAgICAgICAgICAvKiBmYWxsIHRocm91 Z2ggKi8KKyAgICAgICAgY2FzZSBCU19OT05FOgorICAgICAgICAgICAgaWYgKGN0eC5mbGFncykg eworICAgICAgICAgICAgICAgIGdlbl9vcF9zdG9yZV9mbGFncyhjdHguZmxhZ3MgfCBERUxBWV9T TE9UX0NMRUFSTUUpOworCSAgICB9CisgICAgICAgICAgICBnZW5fZ290b190YigmY3R4LCAwLCBj dHgucGMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQlNfRVhDUDoKKyAgICAg ICAgICAgIC8qIGdlbl9vcF9pbnRlcnJ1cHRfcmVzdGFydCgpOyAqLworICAgICAgICAgICAgZ2Vu X29wX21vdmxfaW1tX1QwKDApOworICAgICAgICAgICAgZ2VuX29wX2V4aXRfdGIoKTsKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJTX0JSQU5DSDoKKyAgICAgICAgZGVmYXVsdDoK KyAgICAgICAgICAgIGJyZWFrOworCX0KICAgICB9CisKICAgICAqZ2VuX29wY19wdHIgPSBJTkRF WF9vcF9lbmQ7CiAgICAgaWYgKHNlYXJjaF9wYykgewogICAgICAgICBpID0gZ2VuX29wY19wdHIg LSBnZW5fb3BjX2J1ZjsKLS0tIDAwMDEvdHJhbnNsYXRlLWFsbC5jCisrKyB3b3JrL3RyYW5zbGF0 ZS1hbGwuYwkyMDA3LTExLTI4IDE4OjAxOjAyLjAwMDAwMDAwMCArMDkwMApAQCAtNTMsNyArNTMs NyBAQCB1aW50OF90IGdlbl9vcGNfY2Nfb3BbT1BDX0JVRl9TSVpFXTsKICNlbGlmIGRlZmluZWQo VEFSR0VUX1NQQVJDKQogdGFyZ2V0X3Vsb25nIGdlbl9vcGNfbnBjW09QQ19CVUZfU0laRV07CiB0 YXJnZXRfdWxvbmcgZ2VuX29wY19qdW1wX3BjWzJdOwotI2VsaWYgZGVmaW5lZChUQVJHRVRfTUlQ UykKKyNlbGlmIGRlZmluZWQoVEFSR0VUX01JUFMpIHx8IGRlZmluZWQoVEFSR0VUX1NINCkKIHVp bnQzMl90IGdlbl9vcGNfaGZsYWdzW09QQ19CVUZfU0laRV07CiAjZW5kaWYKIApAQCAtMjk4LDYg KzI5OCw5IEBAIGludCBjcHVfcmVzdG9yZV9zdGF0ZShUcmFuc2xhdGlvbkJsb2NrICoKICAgICBl bnYtPmhmbGFncyB8PSBnZW5fb3BjX2hmbGFnc1tqXTsKICNlbGlmIGRlZmluZWQoVEFSR0VUX0FM UEhBKQogICAgIGVudi0+cGMgPSBnZW5fb3BjX3BjW2pdOworI2VsaWYgZGVmaW5lZChUQVJHRVRf U0g0KQorICAgIGVudi0+cGMgPSBnZW5fb3BjX3BjW2pdOworICAgIGVudi0+ZmxhZ3MgPSBnZW5f b3BjX2hmbGFnc1tqXTsKICNlbmRpZgogICAgIHJldHVybiAwOwogfQo= ------=_Part_347_16504438.1196243660937--