From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ixyhf-0003bv-LW for qemu-devel@nongnu.org; Fri, 30 Nov 2007 00:46:19 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ixyhd-0003bT-UN for qemu-devel@nongnu.org; Fri, 30 Nov 2007 00:46:19 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ixyhd-0003bQ-Lx for qemu-devel@nongnu.org; Fri, 30 Nov 2007 00:46:17 -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 1Ixyhd-0007gk-4S for qemu-devel@nongnu.org; Fri, 30 Nov 2007 00:46:17 -0500 Received: by rn-out-0102.google.com with SMTP id i19so2281793rng for ; Thu, 29 Nov 2007 21:46:16 -0800 (PST) Message-ID: Date: Fri, 30 Nov 2007 14:46:16 +0900 From: "Magnus Damm" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_1503_5102663.1196401576640" Subject: [Qemu-devel] [PATCH] sh4: signal handling for the user space emulator 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_1503_5102663.1196401576640 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi everyone, Here comes a patch that implements signal handling for the sh4 user space emulator. Please apply on top of the recently posted delay slot patch. linux-user/main.c | 12 + linux-user/sh4/target_signal.h | 5 linux-user/signal.c | 321 ++++++++++++++++++++++++++++++++++++++-- target-sh4/helper.c | 6 4 files changed, 331 insertions(+), 13 deletions(-) Thanks, / magnus ------=_Part_1503_5102663.1196401576640 Content-Type: application/octet-stream; name=qemu-cvs-20071128-sh-signal.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_f9magtmz0 Content-Disposition: attachment; filename=qemu-cvs-20071128-sh-signal.patch LS0tIDAwMDEvbGludXgtdXNlci9tYWluLmMKKysrIHdvcmsvbGludXgtdXNlci9tYWluLmMJMjAw Ny0xMS0yOCAxNjoxMzoxNS4wMDAwMDAwMDAgKzA5MDAKQEAgLTE2MTcsNiArMTYxNyw5IEBAIHZv aWQgY3B1X2xvb3AgKENQVVN0YXRlICplbnYpCiAgICAgICAgICAgICBlbnYtPmdyZWdzWzBdID0g cmV0OwogICAgICAgICAgICAgZW52LT5wYyArPSAyOwogICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgIGNhc2UgRVhDUF9JTlRFUlJVUFQ6CisgICAgICAgICAgICAvKiBqdXN0IGluZGljYXRlIHRo YXQgc2lnbmFscyBzaG91bGQgYmUgaGFuZGxlZCBhc2FwICovCisgICAgICAgICAgICBicmVhazsK ICAgICAgICAgY2FzZSBFWENQX0RFQlVHOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg IGludCBzaWc7CkBAIC0xNjMxLDYgKzE2MzQsMTUgQEAgdm9pZCBjcHVfbG9vcCAoQ1BVU3RhdGUg KmVudikKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy ZWFrOworCWNhc2UgMHhhMDoKKwljYXNlIDB4YzA6CisgICAgICAgICAgICBpbmZvLnNpX3NpZ25v ID0gU0lHU0VHVjsKKyAgICAgICAgICAgIGluZm8uc2lfZXJybm8gPSAwOworICAgICAgICAgICAg aW5mby5zaV9jb2RlID0gVEFSR0VUX1NFR1ZfTUFQRVJSOworICAgICAgICAgICAgaW5mby5fc2lm aWVsZHMuX3NpZ2ZhdWx0Ll9hZGRyID0gZW52LT50ZWE7CisgICAgICAgICAgICBxdWV1ZV9zaWdu YWwoaW5mby5zaV9zaWdubywgJmluZm8pOworCSAgICBicmVhazsKKwogICAgICAgICBkZWZhdWx0 OgogICAgICAgICAgICAgcHJpbnRmICgiVW5oYW5kbGVkIHRyYXA6IDB4JXhcbiIsIHRyYXBucik7 CiAgICAgICAgICAgICBjcHVfZHVtcF9zdGF0ZShlbnYsIHN0ZGVyciwgZnByaW50ZiwgMCk7Ci0t LSAwMDAxL2xpbnV4LXVzZXIvc2g0L3RhcmdldF9zaWduYWwuaAorKysgd29yay9saW51eC11c2Vy L3NoNC90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMS0yOCAxNjoxMzoxNS4wMDAwMDAwMDAgKzA5MDAK QEAgLTIxLDQgKzIxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsKICNk ZWZpbmUgVEFSR0VUX01JTlNJR1NUS1NaICAgIDIwNDgKICNkZWZpbmUgVEFSR0VUX1NJR1NUS1Na ICAgICAgIDgxOTIKIAorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3Rh dGUoQ1BVU0g0U3RhdGUgKnN0YXRlKQoreworICAgIHJldHVybiBzdGF0ZS0+Z3JlZ3NbMTVdOwor fQorCiAjZW5kaWYgLyogVEFSR0VUX1NJR05BTF9IICovCi0tLSAwMDAxL2xpbnV4LXVzZXIvc2ln bmFsLmMKKysrIHdvcmsvbGludXgtdXNlci9zaWduYWwuYwkyMDA3LTExLTI4IDE2OjEzOjE1LjAw MDAwMDAwMCArMDkwMApAQCAtNTYyLDYgKzU2MiwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBjb3B5 X3NpZ2luZm9fdG9fdXNlcih0CiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50 IGN1cnJlbnRfZXhlY19kb21haW5fc2lnKGludCBzaWcpCit7CisgICAgcmV0dXJuIC8qIGN1cnJl bnQtPmV4ZWNfZG9tYWluICYmIGN1cnJlbnQtPmV4ZWNfZG9tYWluLT5zaWduYWxfaW52bWFwCisJ ICAgICAgJiYgc2lnIDwgMzIgPyBjdXJyZW50LT5leGVjX2RvbWFpbi0+c2lnbmFsX2ludm1hcFtz aWddIDogKi8gc2lnOworfQorCiAjaWYgZGVmaW5lZChUQVJHRVRfSTM4NikgJiYgVEFSR0VUX0FC SV9CSVRTID09IDMyCiAKIC8qIGZyb20gdGhlIExpbnV4IGtlcm5lbCAqLwpAQCAtNzQ1LDExICs3 NTEsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9mcmFtZShpbnQgc2lnLCBzdHJ1Y3QgCiAJaWYgKCFs b2NrX3VzZXJfc3RydWN0KFZFUklGWV9XUklURSwgZnJhbWUsIGZyYW1lX2FkZHIsIDApKQogCQln b3RvIGdpdmVfc2lnc2VndjsKIAotCWVyciB8PSBfX3B1dF91c2VyKCgvKmN1cnJlbnQtPmV4ZWNf ZG9tYWluCi0JCSAgICAgICAgICAgJiYgY3VycmVudC0+ZXhlY19kb21haW4tPnNpZ25hbF9pbnZt YXAKLQkJICAgICAgICAgICAmJiBzaWcgPCAzMgotCQkgICAgICAgICAgID8gY3VycmVudC0+ZXhl Y19kb21haW4tPnNpZ25hbF9pbnZtYXBbc2lnXQotCQkgICAgICAgICAgIDogKi8gc2lnKSwKKwll cnIgfD0gX19wdXRfdXNlcihjdXJyZW50X2V4ZWNfZG9tYWluX3NpZyhzaWcpLAogCQkgICAgICAg ICAgJmZyYW1lLT5zaWcpOwogCWlmIChlcnIpCiAJCWdvdG8gZ2l2ZV9zaWdzZWd2OwpAQCAtODE5 LDExICs4MjEsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9ydF9mcmFtZShpbnQgc2lnLCBzdHJ1CiAJ aWYgKCFsb2NrX3VzZXJfc3RydWN0KFZFUklGWV9XUklURSwgZnJhbWUsIGZyYW1lX2FkZHIsIDAp KQogCQlnb3RvIGdpdmVfc2lnc2VndjsKIAotCWVyciB8PSBfX3B1dF91c2VyKCgvKmN1cnJlbnQt PmV4ZWNfZG9tYWluCi0JCSAgICAJICAgJiYgY3VycmVudC0+ZXhlY19kb21haW4tPnNpZ25hbF9p bnZtYXAKLQkJICAgIAkgICAmJiBzaWcgPCAzMgotCQkgICAgCSAgID8gY3VycmVudC0+ZXhlY19k b21haW4tPnNpZ25hbF9pbnZtYXBbc2lnXQotCQkJICAgOiAqL3NpZyksCisJZXJyIHw9IF9fcHV0 X3VzZXIoY3VycmVudF9leGVjX2RvbWFpbl9zaWcoc2lnKSwKIAkJCSAgJmZyYW1lLT5zaWcpOwog ICAgICAgICBhZGRyID0gZnJhbWVfYWRkciArIG9mZnNldG9mKHN0cnVjdCBydF9zaWdmcmFtZSwg aW5mbyk7CiAJZXJyIHw9IF9fcHV0X3VzZXIoYWRkciwgJmZyYW1lLT5waW5mbyk7CkBAIC0yNDA2 LDYgKzI0MDQsMzA5IEBAIGxvbmcgZG9fcnRfc2lncmV0dXJuKENQVVN0YXRlICplbnYpCiAgICAg cmV0dXJuIC1UQVJHRVRfRU5PU1lTOwogfQogCisjZWxpZiBkZWZpbmVkKFRBUkdFVF9TSDQpCisK Ky8qCisgKiBjb2RlIGFuZCBkYXRhIHN0cnVjdHVyZXMgZnJvbSBsaW51eCBrZXJuZWw6CisgKiBp bmNsdWRlL2FzbS1zaC9zaWdjb250ZXh0LmgKKyAqIGFyY2gvc2gva2VybmVsL3NpZ25hbC5jCisg Ki8KKworc3RydWN0IHRhcmdldF9zaWdjb250ZXh0IHsKKyAgICB0YXJnZXRfdWxvbmcgIG9sZG1h c2s7CisKKyAgICAvKiBDUFUgcmVnaXN0ZXJzICovCisgICAgdGFyZ2V0X3Vsb25nICBzY19ncmVn c1sxNl07CisgICAgdGFyZ2V0X3Vsb25nICBzY19wYzsKKyAgICB0YXJnZXRfdWxvbmcgIHNjX3By OworICAgIHRhcmdldF91bG9uZyAgc2Nfc3I7CisgICAgdGFyZ2V0X3Vsb25nICBzY19nYnI7Cisg ICAgdGFyZ2V0X3Vsb25nICBzY19tYWNoOworICAgIHRhcmdldF91bG9uZyAgc2NfbWFjbDsKKwor ICAgIC8qIEZQVSByZWdpc3RlcnMgKi8KKyAgICB0YXJnZXRfdWxvbmcgIHNjX2ZwcmVnc1sxNl07 CisgICAgdGFyZ2V0X3Vsb25nICBzY194ZnByZWdzWzE2XTsKKyAgICB1bnNpZ25lZCBpbnQgc2Nf ZnBzY3I7CisgICAgdW5zaWduZWQgaW50IHNjX2ZwdWw7CisgICAgdW5zaWduZWQgaW50IHNjX293 bmVkZnA7Cit9OworCitzdHJ1Y3QgdGFyZ2V0X3NpZ2ZyYW1lCit7CisgICAgc3RydWN0IHRhcmdl dF9zaWdjb250ZXh0IHNjOworICAgIHRhcmdldF91bG9uZyBleHRyYW1hc2tbVEFSR0VUX05TSUdf V09SRFMtMV07CisgICAgdWludDE2X3QgcmV0Y29kZVszXTsKK307CisKKworc3RydWN0IHRhcmdl dF91Y29udGV4dCB7CisgICAgdGFyZ2V0X3Vsb25nIHVjX2ZsYWdzOworICAgIHN0cnVjdCB0YXJn ZXRfdWNvbnRleHQgKnVjX2xpbms7CisgICAgdGFyZ2V0X3N0YWNrX3QgdWNfc3RhY2s7CisgICAg c3RydWN0IHRhcmdldF9zaWdjb250ZXh0IHVjX21jb250ZXh0OworICAgIHRhcmdldF9zaWdzZXRf dCB1Y19zaWdtYXNrOwkvKiBtYXNrIGxhc3QgZm9yIGV4dGVuc2liaWxpdHkgKi8KK307CisKK3N0 cnVjdCB0YXJnZXRfcnRfc2lnZnJhbWUKK3sKKyAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2luZm8gaW5m bzsKKyAgICBzdHJ1Y3QgdGFyZ2V0X3Vjb250ZXh0IHVjOworICAgIHVpbnQxNl90IHJldGNvZGVb M107Cit9OworCisKKyNkZWZpbmUgTU9WVyhuKSAgKDB4OTMwMHwoKG4pLTIpKSAvKiBNb3ZlIG1l bSB3b3JkIGF0IFBDK24gdG8gUjMgKi8KKyNkZWZpbmUgVFJBUF9OT0FSRyAweGMzMTAgICAgICAg ICAvKiBTeXNjYWxsIHcvbm8gYXJncyAoTlIgaW4gUjMpIFNIMy80ICovCisKK3N0YXRpYyBhYmlf dWxvbmcgZ2V0X3NpZ2ZyYW1lKHN0cnVjdCBlbXVsYXRlZF9zaWdhY3Rpb24gKmthLAorICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3AsIHNpemVfdCBmcmFtZV9zaXplKQor eworICAgIGlmICgoa2EtPnNhLnNhX2ZsYWdzICYgVEFSR0VUX1NBX09OU1RBQ0spICYmIChzYXNf c3NfZmxhZ3Moc3ApID09IDApKSB7CisgICAgICAgIHNwID0gdGFyZ2V0X3NpZ2FsdHN0YWNrX3Vz ZWQuc3Nfc3AgKyB0YXJnZXRfc2lnYWx0c3RhY2tfdXNlZC5zc19zaXplOworICAgIH0KKworICAg IHJldHVybiAoc3AgLSBmcmFtZV9zaXplKSAmIC04dWw7Cit9CisKK3N0YXRpYyBpbnQgc2V0dXBf c2lnY29udGV4dChzdHJ1Y3QgdGFyZ2V0X3NpZ2NvbnRleHQgKnNjLAorCQkJICAgIENQVVN0YXRl ICpyZWdzLCB1bnNpZ25lZCBsb25nIG1hc2spCit7CisgICAgaW50IGVyciA9IDA7CisKKyNkZWZp bmUgQ09QWSh4KSAgICAgICAgIGVyciB8PSBfX3B1dF91c2VyKHJlZ3MtPngsICZzYy0+c2NfIyN4 KQorICAgIENPUFkoZ3JlZ3NbMF0pOyBDT1BZKGdyZWdzWzFdKTsKKyAgICBDT1BZKGdyZWdzWzJd KTsgQ09QWShncmVnc1szXSk7CisgICAgQ09QWShncmVnc1s0XSk7IENPUFkoZ3JlZ3NbNV0pOwor ICAgIENPUFkoZ3JlZ3NbNl0pOyBDT1BZKGdyZWdzWzddKTsKKyAgICBDT1BZKGdyZWdzWzhdKTsg Q09QWShncmVnc1s5XSk7CisgICAgQ09QWShncmVnc1sxMF0pOyBDT1BZKGdyZWdzWzExXSk7Cisg ICAgQ09QWShncmVnc1sxMl0pOyBDT1BZKGdyZWdzWzEzXSk7CisgICAgQ09QWShncmVnc1sxNF0p OyBDT1BZKGdyZWdzWzE1XSk7CisgICAgQ09QWShnYnIpOyBDT1BZKG1hY2gpOworICAgIENPUFko bWFjbCk7IENPUFkocHIpOworICAgIENPUFkoc3IpOyBDT1BZKHBjKTsKKyN1bmRlZiBDT1BZCisK KyAgICAvKiB0b2RvOiBzYXZlIEZQVSByZWdpc3RlcnMgaGVyZSAqLworCisgICAgLyogbm9uLWlC Q1MyIGV4dGVuc2lvbnMuLiAqLworICAgIGVyciB8PSBfX3B1dF91c2VyKG1hc2ssICZzYy0+b2xk bWFzayk7CisKKyAgICByZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IHJlc3RvcmVfc2lnY29u dGV4dChzdHJ1Y3QgQ1BVU3RhdGUgKnJlZ3MsCisJCQkgICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2Nv bnRleHQgKnNjKQoreworICAgIHVuc2lnbmVkIGludCBlcnIgPSAwOworCisjZGVmaW5lIENPUFko eCkgICAgICAgICBlcnIgfD0gX19nZXRfdXNlcihyZWdzLT54LCAmc2MtPnNjXyMjeCkKKyAgICBD T1BZKGdyZWdzWzFdKTsKKyAgICBDT1BZKGdyZWdzWzJdKTsgQ09QWShncmVnc1szXSk7CisgICAg Q09QWShncmVnc1s0XSk7IENPUFkoZ3JlZ3NbNV0pOworICAgIENPUFkoZ3JlZ3NbNl0pOyBDT1BZ KGdyZWdzWzddKTsKKyAgICBDT1BZKGdyZWdzWzhdKTsgQ09QWShncmVnc1s5XSk7CisgICAgQ09Q WShncmVnc1sxMF0pOyBDT1BZKGdyZWdzWzExXSk7CisgICAgQ09QWShncmVnc1sxMl0pOyBDT1BZ KGdyZWdzWzEzXSk7CisgICAgQ09QWShncmVnc1sxNF0pOyBDT1BZKGdyZWdzWzE1XSk7CisgICAg Q09QWShnYnIpOyBDT1BZKG1hY2gpOworICAgIENPUFkobWFjbCk7IENPUFkocHIpOworICAgIENP UFkoc3IpOyBDT1BZKHBjKTsKKyN1bmRlZiBDT1BZCisKKyAgICAvKiB0b2RvOiByZXN0b3JlIEZQ VSByZWdpc3RlcnMgaGVyZSAqLworCisgICAgcmVncy0+dHJhID0gLTE7ICAgICAgICAgLyogZGlz YWJsZSBzeXNjYWxsIGNoZWNrcyAqLworICAgIHJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lk IHNldHVwX2ZyYW1lKGludCBzaWcsIHN0cnVjdCBlbXVsYXRlZF9zaWdhY3Rpb24gKmthLAorCQkJ dGFyZ2V0X3NpZ3NldF90ICpzZXQsIENQVVN0YXRlICpyZWdzKQoreworICAgIHN0cnVjdCB0YXJn ZXRfc2lnZnJhbWUgKmZyYW1lOworICAgIGFiaV91bG9uZyBmcmFtZV9hZGRyOworICAgIGludCBp OworICAgIGludCBlcnIgPSAwOworICAgIGludCBzaWduYWw7CisKKyAgICBmcmFtZV9hZGRyID0g Z2V0X3NpZ2ZyYW1lKGthLCByZWdzLT5ncmVnc1sxNV0sIHNpemVvZigqZnJhbWUpKTsKKyAgICBp ZiAoIWxvY2tfdXNlcl9zdHJ1Y3QoVkVSSUZZX1dSSVRFLCBmcmFtZSwgZnJhbWVfYWRkciwgMCkp CisJZ290byBnaXZlX3NpZ3NlZ3Y7CisKKyAgICBzaWduYWwgPSBjdXJyZW50X2V4ZWNfZG9tYWlu X3NpZyhzaWcpOworCisgICAgZXJyIHw9IHNldHVwX3NpZ2NvbnRleHQoJmZyYW1lLT5zYywgcmVn cywgc2V0LT5zaWdbMF0pOworCisgICAgZm9yIChpID0gMDsgaSA8IFRBUkdFVF9OU0lHX1dPUkRT IC0gMTsgaSsrKSB7CisgICAgICAgIGVyciB8PSBfX3B1dF91c2VyKHNldC0+c2lnW2kgKyAxXSwg JmZyYW1lLT5leHRyYW1hc2tbaV0pOworICAgIH0KKworICAgIC8qIFNldCB1cCB0byByZXR1cm4g ZnJvbSB1c2Vyc3BhY2UuICBJZiBwcm92aWRlZCwgdXNlIGEgc3R1YgorICAgICAgIGFscmVhZHkg aW4gdXNlcnNwYWNlLiAgKi8KKyAgICBpZiAoa2EtPnNhLnNhX2ZsYWdzICYgVEFSR0VUX1NBX1JF U1RPUkVSKSB7CisgICAgICAgIHJlZ3MtPnByID0gKHVuc2lnbmVkIGxvbmcpIGthLT5zYS5zYV9y ZXN0b3JlcjsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBHZW5lcmF0ZSByZXR1cm4gY29kZSAo c3lzdGVtIGNhbGwgdG8gc2lncmV0dXJuKSAqLworICAgICAgICBlcnIgfD0gX19wdXRfdXNlcihN T1ZXKDIpLCAmZnJhbWUtPnJldGNvZGVbMF0pOworICAgICAgICBlcnIgfD0gX19wdXRfdXNlcihU UkFQX05PQVJHLCAmZnJhbWUtPnJldGNvZGVbMV0pOworICAgICAgICBlcnIgfD0gX19wdXRfdXNl cigoVEFSR0VUX05SX3NpZ3JldHVybiksICZmcmFtZS0+cmV0Y29kZVsyXSk7CisgICAgICAgIHJl Z3MtPnByID0gKHVuc2lnbmVkIGxvbmcpIGZyYW1lLT5yZXRjb2RlOworICAgIH0KKworICAgIGlm IChlcnIpCisgICAgICAgIGdvdG8gZ2l2ZV9zaWdzZWd2OworCisgICAgLyogU2V0IHVwIHJlZ2lz dGVycyBmb3Igc2lnbmFsIGhhbmRsZXIgKi8KKyAgICByZWdzLT5ncmVnc1sxNV0gPSAodW5zaWdu ZWQgbG9uZykgZnJhbWU7CisgICAgcmVncy0+Z3JlZ3NbNF0gPSBzaWduYWw7IC8qIEFyZyBmb3Ig c2lnbmFsIGhhbmRsZXIgKi8KKyAgICByZWdzLT5ncmVnc1s1XSA9IDA7CisgICAgcmVncy0+Z3Jl Z3NbNl0gPSAodW5zaWduZWQgbG9uZykgJmZyYW1lLT5zYzsKKyAgICByZWdzLT5wYyA9ICh1bnNp Z25lZCBsb25nKSBrYS0+c2EuX3NhX2hhbmRsZXI7CisKKyAgICB1bmxvY2tfdXNlcl9zdHJ1Y3Qo ZnJhbWUsIGZyYW1lX2FkZHIsIDEpOworICAgIHJldHVybjsKKworZ2l2ZV9zaWdzZWd2OgorICAg IHVubG9ja191c2VyX3N0cnVjdChmcmFtZSwgZnJhbWVfYWRkciwgMSk7CisgICAgZm9yY2Vfc2ln KFNJR1NFR1YpOworfQorCitzdGF0aWMgdm9pZCBzZXR1cF9ydF9mcmFtZShpbnQgc2lnLCBzdHJ1 Y3QgZW11bGF0ZWRfc2lnYWN0aW9uICprYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh cmdldF9zaWdpbmZvX3QgKmluZm8sCisJCQkgICB0YXJnZXRfc2lnc2V0X3QgKnNldCwgQ1BVU3Rh dGUgKnJlZ3MpCit7CisgICAgc3RydWN0IHRhcmdldF9ydF9zaWdmcmFtZSAqZnJhbWU7CisgICAg YWJpX3Vsb25nIGZyYW1lX2FkZHI7CisgICAgaW50IGk7CisgICAgaW50IGVyciA9IDA7CisgICAg aW50IHNpZ25hbDsKKworICAgIGZyYW1lX2FkZHIgPSBnZXRfc2lnZnJhbWUoa2EsIHJlZ3MtPmdy ZWdzWzE1XSwgc2l6ZW9mKCpmcmFtZSkpOworICAgIGlmICghbG9ja191c2VyX3N0cnVjdChWRVJJ RllfV1JJVEUsIGZyYW1lLCBmcmFtZV9hZGRyLCAwKSkKKwlnb3RvIGdpdmVfc2lnc2VndjsKKwor ICAgIHNpZ25hbCA9IGN1cnJlbnRfZXhlY19kb21haW5fc2lnKHNpZyk7CisKKyAgICBlcnIgfD0g Y29weV9zaWdpbmZvX3RvX3VzZXIoJmZyYW1lLT5pbmZvLCBpbmZvKTsKKworICAgIC8qIENyZWF0 ZSB0aGUgdWNvbnRleHQuICAqLworICAgIGVyciB8PSBfX3B1dF91c2VyKDAsICZmcmFtZS0+dWMu dWNfZmxhZ3MpOworICAgIGVyciB8PSBfX3B1dF91c2VyKDAsICh1bnNpZ25lZCBsb25nICopJmZy YW1lLT51Yy51Y19saW5rKTsKKyAgICBlcnIgfD0gX19wdXRfdXNlcigodm9pZCAqKXRhcmdldF9z aWdhbHRzdGFja191c2VkLnNzX3NwLAorCQkgICAgICAmZnJhbWUtPnVjLnVjX3N0YWNrLnNzX3Nw KTsKKyAgICBlcnIgfD0gX19wdXRfdXNlcihzYXNfc3NfZmxhZ3MocmVncy0+Z3JlZ3NbMTVdKSwK KwkJICAgICAgJmZyYW1lLT51Yy51Y19zdGFjay5zc19mbGFncyk7CisgICAgZXJyIHw9IF9fcHV0 X3VzZXIodGFyZ2V0X3NpZ2FsdHN0YWNrX3VzZWQuc3Nfc2l6ZSwKKwkJICAgICAgJmZyYW1lLT51 Yy51Y19zdGFjay5zc19zaXplKTsKKyAgICBlcnIgfD0gc2V0dXBfc2lnY29udGV4dCgmZnJhbWUt PnVjLnVjX21jb250ZXh0LAorCQkJICAgIHJlZ3MsIHNldC0+c2lnWzBdKTsKKyAgICBmb3IoaSA9 IDA7IGkgPCBUQVJHRVRfTlNJR19XT1JEUzsgaSsrKSB7CisgICAgICAgIGVyciB8PSBfX3B1dF91 c2VyKHNldC0+c2lnW2ldLCAmZnJhbWUtPnVjLnVjX3NpZ21hc2suc2lnW2ldKTsKKyAgICB9CisK KyAgICAvKiBTZXQgdXAgdG8gcmV0dXJuIGZyb20gdXNlcnNwYWNlLiAgSWYgcHJvdmlkZWQsIHVz ZSBhIHN0dWIKKyAgICAgICBhbHJlYWR5IGluIHVzZXJzcGFjZS4gICovCisgICAgaWYgKGthLT5z YS5zYV9mbGFncyAmIFRBUkdFVF9TQV9SRVNUT1JFUikgeworICAgICAgICByZWdzLT5wciA9ICh1 bnNpZ25lZCBsb25nKSBrYS0+c2Euc2FfcmVzdG9yZXI7CisgICAgfSBlbHNlIHsKKyAgICAgICAg LyogR2VuZXJhdGUgcmV0dXJuIGNvZGUgKHN5c3RlbSBjYWxsIHRvIHNpZ3JldHVybikgKi8KKyAg ICAgICAgZXJyIHw9IF9fcHV0X3VzZXIoTU9WVygyKSwgJmZyYW1lLT5yZXRjb2RlWzBdKTsKKyAg ICAgICAgZXJyIHw9IF9fcHV0X3VzZXIoVFJBUF9OT0FSRywgJmZyYW1lLT5yZXRjb2RlWzFdKTsK KyAgICAgICAgZXJyIHw9IF9fcHV0X3VzZXIoKFRBUkdFVF9OUl9ydF9zaWdyZXR1cm4pLCAmZnJh bWUtPnJldGNvZGVbMl0pOworICAgICAgICByZWdzLT5wciA9ICh1bnNpZ25lZCBsb25nKSBmcmFt ZS0+cmV0Y29kZTsKKyAgICB9CisKKyAgICBpZiAoZXJyKQorICAgICAgICBnb3RvIGdpdmVfc2ln c2VndjsKKworICAgIC8qIFNldCB1cCByZWdpc3RlcnMgZm9yIHNpZ25hbCBoYW5kbGVyICovCisg ICAgcmVncy0+Z3JlZ3NbMTVdID0gKHVuc2lnbmVkIGxvbmcpIGZyYW1lOworICAgIHJlZ3MtPmdy ZWdzWzRdID0gc2lnbmFsOyAvKiBBcmcgZm9yIHNpZ25hbCBoYW5kbGVyICovCisgICAgcmVncy0+ Z3JlZ3NbNV0gPSAodW5zaWduZWQgbG9uZykgJmZyYW1lLT5pbmZvOworICAgIHJlZ3MtPmdyZWdz WzZdID0gKHVuc2lnbmVkIGxvbmcpICZmcmFtZS0+dWM7CisgICAgcmVncy0+cGMgPSAodW5zaWdu ZWQgbG9uZykga2EtPnNhLl9zYV9oYW5kbGVyOworCisgICAgdW5sb2NrX3VzZXJfc3RydWN0KGZy YW1lLCBmcmFtZV9hZGRyLCAxKTsKKyAgICByZXR1cm47CisKK2dpdmVfc2lnc2VndjoKKyAgICB1 bmxvY2tfdXNlcl9zdHJ1Y3QoZnJhbWUsIGZyYW1lX2FkZHIsIDEpOworICAgIGZvcmNlX3NpZyhT SUdTRUdWKTsKK30KKworbG9uZyBkb19zaWdyZXR1cm4oQ1BVU3RhdGUgKnJlZ3MpCit7CisgICAg c3RydWN0IHRhcmdldF9zaWdmcmFtZSAqZnJhbWU7CisgICAgYWJpX3Vsb25nIGZyYW1lX2FkZHI7 CisgICAgc2lnc2V0X3QgYmxvY2tlZDsKKyAgICB0YXJnZXRfc2lnc2V0X3QgdGFyZ2V0X3NldDsK KyAgICBpbnQgaTsKKyAgICBpbnQgZXJyID0gMDsKKworI2lmIGRlZmluZWQoREVCVUdfU0lHTkFM KQorICAgIGZwcmludGYoc3RkZXJyLCAiZG9fc2lncmV0dXJuXG4iKTsKKyNlbmRpZgorICAgIGZy YW1lX2FkZHIgPSByZWdzLT5ncmVnc1sxNV07CisgICAgaWYgKCFsb2NrX3VzZXJfc3RydWN0KFZF UklGWV9SRUFELCBmcmFtZSwgZnJhbWVfYWRkciwgMSkpCisgICAJZ290byBiYWRmcmFtZTsKKwor ICAgIGVyciB8PSBfX2dldF91c2VyKHRhcmdldF9zZXQuc2lnWzBdLCAmZnJhbWUtPnNjLm9sZG1h c2spOworICAgIGZvcihpID0gMTsgaSA8IFRBUkdFVF9OU0lHX1dPUkRTOyBpKyspIHsKKyAgICAg ICAgZXJyIHw9IChfX2dldF91c2VyKHRhcmdldF9zZXQuc2lnW2ldLCAmZnJhbWUtPmV4dHJhbWFz a1tpIC0gMV0pKTsKKyAgICB9CisKKyAgICBpZiAoZXJyKQorICAgICAgICBnb3RvIGJhZGZyYW1l OworCisgICAgdGFyZ2V0X3RvX2hvc3Rfc2lnc2V0X2ludGVybmFsKCZibG9ja2VkLCAmdGFyZ2V0 X3NldCk7CisgICAgc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZibG9ja2VkLCBOVUxMKTsKKwor ICAgIGlmIChyZXN0b3JlX3NpZ2NvbnRleHQocmVncywgJmZyYW1lLT5zYykpCisgICAgICAgIGdv dG8gYmFkZnJhbWU7CisKKyAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QoZnJhbWUsIGZyYW1lX2FkZHIs IDApOworICAgIHJldHVybiByZWdzLT5ncmVnc1swXTsKKworYmFkZnJhbWU6CisgICAgdW5sb2Nr X3VzZXJfc3RydWN0KGZyYW1lLCBmcmFtZV9hZGRyLCAwKTsKKyAgICBmb3JjZV9zaWcoVEFSR0VU X1NJR1NFR1YpOworICAgIHJldHVybiAwOworfQorCitsb25nIGRvX3J0X3NpZ3JldHVybihDUFVT dGF0ZSAqcmVncykKK3sKKyAgICBzdHJ1Y3QgdGFyZ2V0X3J0X3NpZ2ZyYW1lICpmcmFtZTsKKyAg ICBhYmlfdWxvbmcgZnJhbWVfYWRkcjsKKyAgICBzaWdzZXRfdCBibG9ja2VkOworCisjaWYgZGVm aW5lZChERUJVR19TSUdOQUwpCisgICAgZnByaW50ZihzdGRlcnIsICJkb19ydF9zaWdyZXR1cm5c biIpOworI2VuZGlmCisgICAgZnJhbWVfYWRkciA9IHJlZ3MtPmdyZWdzWzE1XTsKKyAgICBpZiAo IWxvY2tfdXNlcl9zdHJ1Y3QoVkVSSUZZX1JFQUQsIGZyYW1lLCBmcmFtZV9hZGRyLCAxKSkKKyAg IAlnb3RvIGJhZGZyYW1lOworCisgICAgdGFyZ2V0X3RvX2hvc3Rfc2lnc2V0KCZibG9ja2VkLCAm ZnJhbWUtPnVjLnVjX3NpZ21hc2spOworICAgIHNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmYmxv Y2tlZCwgTlVMTCk7CisKKyAgICBpZiAocmVzdG9yZV9zaWdjb250ZXh0KHJlZ3MsICZmcmFtZS0+ dWMudWNfbWNvbnRleHQpKQorICAgICAgICBnb3RvIGJhZGZyYW1lOworCisgICAgaWYgKGRvX3Np Z2FsdHN0YWNrKGZyYW1lX2FkZHIgKworCQkgICAgICAgb2Zmc2V0b2Yoc3RydWN0IHRhcmdldF9y dF9zaWdmcmFtZSwgdWMudWNfc3RhY2spLAorCQkgICAgICAgMCwgZ2V0X3NwX2Zyb21fY3B1c3Rh dGUocmVncykpID09IC1FRkFVTFQpCisgICAgICAgIGdvdG8gYmFkZnJhbWU7CisKKyAgICB1bmxv Y2tfdXNlcl9zdHJ1Y3QoZnJhbWUsIGZyYW1lX2FkZHIsIDApOworICAgIHJldHVybiByZWdzLT5n cmVnc1swXTsKKworYmFkZnJhbWU6CisgICAgdW5sb2NrX3VzZXJfc3RydWN0KGZyYW1lLCBmcmFt ZV9hZGRyLCAwKTsKKyAgICBmb3JjZV9zaWcoVEFSR0VUX1NJR1NFR1YpOworICAgIHJldHVybiAw OworfQorCiAjZWxzZQogCiBzdGF0aWMgdm9pZCBzZXR1cF9mcmFtZShpbnQgc2lnLCBzdHJ1Y3Qg ZW11bGF0ZWRfc2lnYWN0aW9uICprYSwKLS0tIDAwMDEvdGFyZ2V0LXNoNC9oZWxwZXIuYworKysg d29yay90YXJnZXQtc2g0L2hlbHBlci5jCTIwMDctMTEtMjggMTY6MTM6MTUuMDAwMDAwMDAwICsw OTAwCkBAIC0zOSwxNiArMzksMTYgQEAgaW50IGNwdV9zaDRfaGFuZGxlX21tdV9mYXVsdChDUFVT dGF0ZSAqIAogCQkJICAgICBpbnQgbW11X2lkeCwgaW50IGlzX3NvZnRtbXUpCiB7CiAgICAgZW52 LT50ZWEgPSBhZGRyZXNzOworICAgIGVudi0+ZXhjZXB0aW9uX2luZGV4ID0gMDsKICAgICBzd2l0 Y2ggKHJ3KSB7CiAgICAgY2FzZSAwOgorCWVudi0+dGVhID0gYWRkcmVzczsKICAgICAgICAgZW52 LT5leGNlcHRpb25faW5kZXggPSAweDBhMDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAxOgor CWVudi0+dGVhID0gYWRkcmVzczsKICAgICAgICAgZW52LT5leGNlcHRpb25faW5kZXggPSAweDBj MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICBlbnYtPmV4Y2VwdGlvbl9p bmRleCA9IDB4MGEwOwotICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9Cg== ------=_Part_1503_5102663.1196401576640--