From mboxrd@z Thu Jan 1 00:00:00 1970 Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Nov 2014 06:54:18 +0100 (CET) Received: from resqmta-po-09v.sys.comcast.net ([96.114.154.168]:50579 "EHLO resqmta-po-09v.sys.comcast.net" rhost-flags-OK-OK-OK-OK) by eddie.linux-mips.org with ESMTP id S27009303AbaKCFyQV3jGJ (ORCPT ); Mon, 3 Nov 2014 06:54:16 +0100 Received: from resomta-po-09v.sys.comcast.net ([96.114.154.233]) by resqmta-po-09v.sys.comcast.net with comcast id Atu91p00152QWKC01tu9Eu; Mon, 03 Nov 2014 05:54:09 +0000 Received: from [192.168.1.13] ([69.251.152.165]) by resomta-po-09v.sys.comcast.net with comcast id Atu71p00T3aNLgd01tu8Ky; Mon, 03 Nov 2014 05:54:09 +0000 Message-ID: <5457187D.6030708@gentoo.org> Date: Mon, 03 Nov 2014 00:54:05 -0500 From: Joshua Kinard User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: Linux MIPS List Subject: IP30: SMP Help Content-Type: multipart/mixed; boundary="------------060803030900080801060404" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=q20140121; t=1414994049; bh=Q5oJNSvQFkhFnyIBGR3pmqdayFMsLfbKW0UPkIrueXo=; h=Received:Received:Message-ID:Date:From:MIME-Version:To:Subject: Content-Type; b=EEDbqnMjApEdQTHtmP/D7wgPzKo19iJ9PfmlQmLD5hYYnmA3QkLiRZalRyyD6fCwf xhNutynb5iIv0q+I/Pw6+NeoyTfFM4kTU9xZNgmlQ8p7XrUxLemN5uUyC3tYMyHT7t Svh6bRdKlaUgmAui3hrx9rjWGVNnJHBjYm/b1UGnGjLqz5Y+QzsWtufTCZXKtq5coq b4qJ3xTQC3aAyBbkQdYb4/pjQoaW0b20tRtiPWLlLMcp/anXt4HF5eO2JlsBynm/hM hbrUB341wfrBk/OC8M9Nwpq22c9P8egHaR2LE9ko/Rj/YG14kfsop/ElDyg8lGUgu7 tiUnFOmr1rFqw== Return-Path: X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0) X-Orcpt: rfc822;linux-mips@linux-mips.org Original-Recipient: rfc822;linux-mips@linux-mips.org X-archive-position: 43838 X-ecartis-version: Ecartis v1.0.0 Sender: linux-mips-bounce@linux-mips.org Errors-to: linux-mips-bounce@linux-mips.org X-original-sender: kumba@gentoo.org Precedence: bulk List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: linux-mips X-List-ID: linux-mips List-subscribe: List-owner: List-post: List-archive: X-list: linux-mips This is a multi-part message in MIME format. --------------060803030900080801060404 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit I've recently acquired a dual R14000 CPU for the Octane, so I am trying to get SMP working again, but I can't get things setup properly. I've attached both ip30-irq.c and ip30-smp.c -- does anyone see any immediate problems (or just where I am doing it wrong)? Most reboot cycles with this code panics because init exited with a code of 0xa or 0xb (which matches w/ SIGSEGV or SIGBUS). Randomly, I can acquire a dash shell by passing init=/bin/dash. I can't do much in it, though. A basic 'ls' either segfaults or triggers a SIGBUS. If I execute 'ls' enough times, it eventually works. Can't get much farther beyond that. -- Joshua Kinard Gentoo/MIPS kumba@gentoo.org 4096R/D25D95E3 2011-03-28 "The past tempts us, the present confuses us, the future frightens us. And our lives slip away, moment by moment, lost in that vast, terrible in-between." --Emperor Turhan, Centauri Republic --------------060803030900080801060404 Content-Type: text/plain; charset=windows-1252; name="ip30-irq.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ip30-irq.c" LyoKICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZS4gIFNlZSB0aGUgZmlsZSAi Q09QWUlORyIgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQogKiBmb3Ig bW9yZSBkZXRhaWxzLgogKgogKiBpcDMwLWlycS5jOiBIaWdobGV2ZWwgaW50ZXJydXB0IGhh bmRsaW5nIGZvciBJUDMwIGFyY2hpdGVjdHVyZS4KICoKICogQ29weXJpZ2h0IChDKSAyMDA0 LTIwMDcgU3RhbmlzbGF3IFNrb3dyb25layA8c2t5bGFya0BsaW51eC1taXBzLm9yZz4KICoJ CSAyMDA5IEpvaGFubmVzIERpY2tncmViZXIgPHRhbnp5QGdteC5kZT4KICoJCSAyMDA3LTIw MTQgSm9zaHVhIEtpbmFyZCA8a3VtYmFAZ2VudG9vLm9yZz4KICoKICogSW5zcGlyZWQgYnkg aXAyNy1pcnEuYyBhbmQgaXAzMi1pcnEuYwogKi8KCiNpbmNsdWRlIDxsaW51eC9pbml0Lmg+ CiNpbmNsdWRlIDxsaW51eC9pcnEuaD4KI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CiNpbmNs dWRlIDxsaW51eC90eXBlcy5oPgojaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CiNpbmNs dWRlIDxsaW51eC90aWNrLmg+CgojaW5jbHVkZSA8YXNtL2lycV9jcHUuaD4KI2luY2x1ZGUg PGFzbS9wY2kvYnJpZGdlLmg+CgojaW5jbHVkZSA8YXNtL21hY2gtaXAzMC9oZWFydC5oPgoj aW5jbHVkZSA8YXNtL21hY2gtaXAzMC9wY2lici5oPgojaW5jbHVkZSA8YXNtL21hY2gtaXAz MC9yYWNlcm1wLmg+CiNpbmNsdWRlIDxhc20vbWFjaC1pcDMwL2FkZHJzLmg+CgojdW5kZWYg REVCVUdfSVJRCgpzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGhlYXJ0X2xvY2spOwpzdGF0aWMg aW50IGhlYXJ0X2lycV9vd25lcltOUl9JUlFTXTsKYnJpZGdlX3QgKmlwMzBfaXJxX3RvX2Jy aWRnZVtOUl9JUlFTXTsKdW5zaWduZWQgaW50IGlwMzBfaXJxX3RvX3Nsb3RbTlJfSVJRU107 CgovL2V4dGVybiB2b2lkIGlwMzBfY2xvY2tldmVudF9icm9hZGNhc3QoY29uc3QgaW50IGNw dSk7Ci8vZXh0ZXJuIHZvaWQgaXAzMF9jbG9ja2V2ZW50X2Jyb2FkY2FzdChjb25zdCBjcHVt YXNrX3QgbWFzayk7CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyoqCiAqIGlwMzBfZG9f ZXJyb3JfaXJxIC0gSVJRIGRpc3BhdGNoIGZvciBhbGwgSEVBUlQgZXJyb3IgSVJRcyAoNTEg LSA2MykuCiAqLwpzdGF0aWMgbm9pbmxpbmUgdm9pZAppcDMwX2RvX2Vycm9yX2lycSh2b2lk KQp7Cgl1bnNpZ25lZCBsb25nIGVycm9yczsKCXVuc2lnbmVkIGxvbmcgY2F1c2U7CglpbnQg aTsKCglpcnFfZW50ZXIoKTsKCWVycm9ycyA9IHJlYWRxKEhFQVJUX0lTUik7CgljYXVzZSA9 IHJlYWRxKEhFQVJUX0NBVVNFKTsKCXdyaXRlcShIRUFSVF9JTlRfTEVWRUw0LCBIRUFSVF9D TFJfSVNSKTsKCgkvKiBSZWZlciB0byBpcDMwLWhlYXJ0LmggZm9yIHRoZSBIQ18qIG1hY3Jv cyB0byBrbm93IHdoYXQgdGhlIGNhdXNlIHdhcyAqLwoJaWYgKGNhdXNlID4gMCkgewoJCXBy aW50ayhLRVJOX1dBUk5JTkcgIklQMzA6IEhFQVJUIEFUVEFDSyEgSVNSID0gMHglLjE2bGx4 ICIKCQkgICAgICAgIkNBVVNFID0gMHglLjE2bGx4XG4iLCAodTY0KShlcnJvcnMpLCh1NjQp KGNhdXNlKSk7CgoJCS8qIGkgPSA2MzsgaSA+PSA1MTsgaS0tICovCgkJZm9yIChpID0gSEVB UlRfRVJSX01BU0tfRU5EOyBpID49IEhFQVJUX0VSUl9NQVNLX1NUQVJUOyBpLS0pCgkJCWlm ICgoZXJyb3JzID4+IGkpICYgMSkKCQkJCXByaW50ayhLRVJOX0NPTlQgIiAgSEVBUlQgRXJy b3IgSVJRICMlZFxuIiwgaSk7Cgl9CglpcnFfZXhpdCgpOwp9CgovKioKICogaXAzMF9kb19o ZWFydF9pcnEgLSBJUlEgZGlzcGF0Y2ggZm9yIGFsbCBIRUFSVCBMMCwgTDEsIEwyIElSUXMg KDAgLSA0OSkuCiAqLwpzdGF0aWMgbm9pbmxpbmUgdm9pZAppcDMwX2RvX2hlYXJ0X2lycSh2 b2lkKQp7CglpbnQgaXJxbnVtID0gNDk7CglpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgp OwoJdTY0IGhlYXJ0X2lzciA9IHJlYWRxKEhFQVJUX0lTUik7Cgl1NjQgaGVhcnRfaW1yID0g cmVhZHEoSEVBUlRfSU1SKGNwdSkpOwoJdTY0IGlycXMgPSAoaGVhcnRfaXNyICYKCSAgICAg ICAgICAgIChIRUFSVF9JTlRfTEVWRUwwIHwgSEVBUlRfSU5UX0xFVkVMMSB8IEhFQVJUX0lO VF9MRVZFTDIpICYKCSAgICAgICAgICAgIGhlYXJ0X2ltcik7CgojaWZkZWYgREVCVUdfSVJR CglicmlkZ2VfdCAqYnZtYSA9IChicmlkZ2VfdCAqKVJBV19OT0RFX1NXSU5fQkFTRSgwLCAx NSk7CgoJcHJpbnRrKEtFUk5fSU5GTyAiSVAzMDogcmVjZWl2ZWQgSEVBUlQgSVJRczogMHgl MDE2bGx4ICIKCSAgICAgICAgICAgICAgICAgIihtYXNrIDB4JTAxNmxseCkgQ1BVJWQgQlJJ REdFICUwOHhcbiIsCgkgICAgICAgICAgICAgICAgIGhlYXJ0X2lzciwgaGVhcnRfaW1yLCBj cHUsIGJ2bWEtPmJfaW50X3N0YXR1cyk7CiNlbmRpZgoKCS8qIFBvbGwgYWxsIElSUXMgaW4g ZGVjcmVhc2luZyBwcmlvcml0eSBvcmRlciAqLwoJZG8gewoJCWlmIChpcnFzICYgKDFVTCA8 PCBpcnFudW0pKQoJCQlkb19JUlEoaXJxbnVtKTsKCQlpcnFudW0tLTsKCX0gd2hpbGUgKGxp a2VseShpcnFudW0gPj0gMCkpOwp9CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyoqCiAq IHBsYXRfaXJxX2Rpc3BhdGNoIC0gcGxhdGZvcm0gSVJRIGRpc3BhdGNoLgogKi8KYXNtbGlu a2FnZSB2b2lkCnBsYXRfaXJxX2Rpc3BhdGNoKHZvaWQpCnsKCXVuc2lnbmVkIGxvbmcgcGVu ZGluZzsKCglwZW5kaW5nID0gKHJlYWRfYzBfY2F1c2UoKSAmIHJlYWRfYzBfc3RhdHVzKCkg JiBTVDBfSU0pOwoKCS8qIEw1LCBDUFUgQ291bnRlci9Db21wYXJlICovCglpZiAocGVuZGlu ZyAmIENBVVNFRl9JUDcpCgkJZG9fSVJRKE1JUFNfQ1BVX0lSUV9CQVNFKTsKCS8qIEwzLCBI RUFSVCBDb3VudGVyL0NvbXBhcmUgKi8KCWVsc2UgaWYgKGxpa2VseShwZW5kaW5nICYgQ0FV U0VGX0lQNSkpCgkJZG9fSVJRKEhFQVJUX0wzX0lOVF9USU1FUik7CgkvKiBMMC1MMiwgSEVB UlQgbm9ybWFsIElSUXMgKyBJUEkvU01QIElSUXMqLwoJZWxzZSBpZiAobGlrZWx5KHBlbmRp bmcgJiAoQ0FVU0VGX0lQMiB8IENBVVNFRl9JUDMgfCBDQVVTRUZfSVA0KSkpCgkJaXAzMF9k b19oZWFydF9pcnEoKTsKCS8qIEw0LCBIRUFSVCBFcnJvcnMgKi8KCWVsc2UgaWYgKHVubGlr ZWx5KHBlbmRpbmcgJiBDQVVTRUZfSVA2KSkKCQlpcDMwX2RvX2Vycm9yX2lycSgpOwp9Cgov KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKCgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwovKiBI RUFSVCBJUlEgT3BzICovCgovKioKICogc3RhcnR1cF9oZWFydF9pcnEgLSBhc3NpZ25zIGEg SEVBUlQgSVJRIHRvIGEgQ1BVIGFuZC9vciBCcmlkZ2Ugc2xvdC4KICogQGQ6IHN0cnVjdCBp cnFfZGF0YSBjb250YWluaW5nIElSUSBpbmZvcm1hdGlvbi4KICoKICogUmV0dXJucyAwIGZv ciBub3cgKFhYWDogdGhpcyBtYXkgbmVlZCByZXZpZXcsIHBvc3NpYmxlIHBlbmRpbmcgaW50 ZXJydXB0cykuCiAqLwpzdGF0aWMgdW5zaWduZWQgaW50CnN0YXJ0dXBfaGVhcnRfaXJxKHN0 cnVjdCBpcnFfZGF0YSAqZCkKewoJYnJpZGdlX3QgKmJyaWRnZTsKCWludCBjcHUgPSBzbXBf cHJvY2Vzc29yX2lkKCk7Cgl1MzIgZGV2aWNlLCBzbG90OwoJdTY0ICppbXI7CgoJc3Bpbl9s b2NrKCZoZWFydF9sb2NrKTsKCglpZiAoaGVhcnRfaXJxX293bmVyW2QtPmlycV0gIT0gLTEp IHsKCQlwcmludGsoS0VSTl9FUlIgIkRFQlVHOiBzdGFydHVwX2hlYXJ0X2lycTogYmFkIElS USAiCgkJICAgICAgICJzdGFydHVwIHJlcXVlc3QgZm9yIElSUSAlZCBvbiBDUFUgJWQgIgoJ CSAgICAgICAiKGFscmVhZHkgYXNzaWduZWQgdG8gJWQpIVxuIiwKCQkgICAgICAgZC0+aXJx LCBjcHUsIGhlYXJ0X2lycV9vd25lcltkLT5pcnFdKTsKCQlnb3RvIG91dDsKCX0KCgkvKiBz dG9yZSB3aGljaCBDUFUgb3ducyB0aGlzIElSUSAqLwoJaGVhcnRfaXJxX293bmVyW2QtPmly cV0gPSBjcHU7CgojaWZkZWYgREVCVUdfSVJRCglwcmludGsoS0VSTl9JTkZPICJERUJVRzog SVAzMDogSVJROiBzdGFydHVwX2hlYXJ0X2lycTogIgoJICAgICAgICJJUlEgJWQgb24gQ1BV ICVkIVxuIiwgZC0+aXJxLCBoZWFydF9pcnFfb3duZXJbZC0+aXJxXSk7CiNlbmRpZgoKCS8q IGNsZWFyIElSUSBmbGFnICovCgl3cml0ZXEoSEVBUlRfVkVDX1RPX0lCSVQoZC0+aXJxKSwg SEVBUlRfQ0xSX0lTUik7CgoJLyogdW5tYXNrIElSUSAqLwoJaW1yID0gSEVBUlRfSU1SKGNw dSk7Cgl3cml0ZXEocmVhZHEoaW1yKSB8IEhFQVJUX1ZFQ19UT19JQklUKGQtPmlycSksIGlt cik7CgoJLyogSGFuZGxlIEJSSURHRSBJUlFzLiAqLwoJYnJpZGdlID0gaXAzMF9pcnFfdG9f YnJpZGdlW2QtPmlycV07CglpZiAoYnJpZGdlKSB7CgkJc2xvdCA9IGlwMzBfaXJxX3RvX3Ns b3RbZC0+aXJxXTsKCQlicmlkZ2UtPmJfaW50X2VuYWJsZSB8PSAoMSA8PCBzbG90KTsKCQli cmlkZ2UtPmJfaW50X21vZGUgfD0gKDEgPDwgc2xvdCk7CgkJZGV2aWNlID0gYnJpZGdlLT5i X2ludF9kZXZpY2U7CgkJZGV2aWNlICY9IH5CUklER0VfSU5UX0RFVl9NQVNLKHNsb3QpOwoJ CWRldmljZSB8PSAgQlJJREdFX0lOVF9ERVZfU0VUKHNsb3QsIHNsb3QpOwoJCWJyaWRnZS0+ Yl9pbnRfZGV2aWNlID0gZGV2aWNlOwoJCWJyaWRnZS0+Yl93aWRnZXQud190Zmx1c2g7Cgl9 CgpvdXQ6CglzcGluX3VubG9jaygmaGVhcnRfbG9jayk7CgoJLyogWFhYOiBUaGlzIGlzIHBy b2JhYmx5IG5vdCByaWdodDsgd2UgY291bGQgaGF2ZSBwZW5kaW5nIGlycXMgKi8KCXJldHVy biAwOwp9CgovKioKICogc2h1dGRvd25faGVhcnRfaXJxIC0gcmVtb3ZlcyBhIEhFQVJUIElS USBmcm9tIGEgQ1BVIGFuZC9vciBCcmlkZ2Ugc2xvdC4KICogQGQ6IHN0cnVjdCBpcnFfZGF0 YSBjb250YWluaW5nIElSUSBpbmZvcm1hdGlvbi4KICovCnN0YXRpYyB2b2lkCnNodXRkb3du X2hlYXJ0X2lycShzdHJ1Y3QgaXJxX2RhdGEgKmQpCnsKCWJyaWRnZV90ICpicmlkZ2U7Cgl1 NjQgKmltcjsKCglzcGluX2xvY2soJmhlYXJ0X2xvY2spOwoKCWltciA9IEhFQVJUX0lNUiho ZWFydF9pcnFfb3duZXJbZC0+aXJxXSk7Cgl3cml0ZXEocmVhZHEoaW1yKSAmIH4oSEVBUlRf VkVDX1RPX0lCSVQoZC0+aXJxKSksIGltcik7CgoJYnJpZGdlID0gaXAzMF9pcnFfdG9fYnJp ZGdlW2QtPmlycV07CglpZiAoYnJpZGdlKQoJCWJyaWRnZS0+Yl9pbnRfZW5hYmxlICY9IH4o MVVMIDw8IGlwMzBfaXJxX3RvX3Nsb3RbZC0+aXJxXSk7CgoJaGVhcnRfaXJxX293bmVyW2Qt PmlycV0gPSAtMTsKCglzcGluX3VubG9jaygmaGVhcnRfbG9jayk7Cn0KCi8qKgogKiBhY2tf aGVhcnRfaXJxIC0gYWNrcyBhIEhFQVJUIElSUS4KICogQGQ6IHN0cnVjdCBpcnFfZGF0YSBj b250YWluaW5nIElSUSBpbmZvcm1hdGlvbi4KICovCnN0YXRpYyB2b2lkCmFja19oZWFydF9p cnEoc3RydWN0IGlycV9kYXRhICpkKQp7CgoJc3Bpbl9sb2NrKCZoZWFydF9sb2NrKTsKCXdy aXRlcShIRUFSVF9WRUNfVE9fSUJJVChkLT5pcnEpLCBIRUFSVF9DTFJfSVNSKTsKCXNwaW5f dW5sb2NrKCZoZWFydF9sb2NrKTsKfQoKLyoqCiAqIG1hc2tfaGVhcnRfaXJxIC0gbWFza3Mg YSBIRUFSVCBJUlEuCiAqIEBkOiBzdHJ1Y3QgaXJxX2RhdGEgY29udGFpbmluZyBJUlEgaW5m b3JtYXRpb24uCiAqLwpzdGF0aWMgdm9pZAptYXNrX2hlYXJ0X2lycShzdHJ1Y3QgaXJxX2Rh dGEgKmQpCnsKCXU2NCAqaW1yOwoKCXNwaW5fbG9jaygmaGVhcnRfbG9jayk7CglpbXIgPSBI RUFSVF9JTVIoaGVhcnRfaXJxX293bmVyW2QtPmlycV0pOwoJd3JpdGVxKHJlYWRxKGltcikg JiB+KEhFQVJUX1ZFQ19UT19JQklUKGQtPmlycSkpLCBpbXIpOwoJc3Bpbl91bmxvY2soJmhl YXJ0X2xvY2spOwp9CgovKioKICogbWFza19hbmRfYWNrX2hlYXJ0X2lycSAtIG1hc2tzIGFu ZCBhY2tzIGEgSEVBUlQgSVJRLgogKiBAZDogc3RydWN0IGlycV9kYXRhIGNvbnRhaW5pbmcg SVJRIGluZm9ybWF0aW9uLgogKi8Kc3RhdGljIHZvaWQKbWFza19hbmRfYWNrX2hlYXJ0X2ly cShzdHJ1Y3QgaXJxX2RhdGEgKmQpCnsKCXU2NCAqaW1yOwoKCXNwaW5fbG9jaygmaGVhcnRf bG9jayk7Cgl3cml0ZXEoSEVBUlRfVkVDX1RPX0lCSVQoZC0+aXJxKSwgSEVBUlRfQ0xSX0lT Uik7CglpbXIgPSBIRUFSVF9JTVIoaGVhcnRfaXJxX293bmVyW2QtPmlycV0pOwoJd3JpdGVx KHJlYWRxKGltcikgJiB+KEhFQVJUX1ZFQ19UT19JQklUKGQtPmlycSkpLCBpbXIpOwoJc3Bp bl91bmxvY2soJmhlYXJ0X2xvY2spOwp9CgovKioKICogdW5tYXNrX2hlYXJ0X2lycSAtIHVu bWFza3MgYSBIRUFSVCBJUlEuCiAqIEBkOiBzdHJ1Y3QgaXJxX2RhdGEgY29udGFpbmluZyBJ UlEgaW5mb3JtYXRpb24uCiAqLwpzdGF0aWMgdm9pZAp1bm1hc2tfaGVhcnRfaXJxKHN0cnVj dCBpcnFfZGF0YSAqZCkKewoJdTY0ICppbXI7CgoJc3Bpbl9sb2NrKCZoZWFydF9sb2NrKTsK CWltciA9IEhFQVJUX0lNUihoZWFydF9pcnFfb3duZXJbZC0+aXJxXSk7Cgl3cml0ZXEocmVh ZHEoaW1yKSB8IEhFQVJUX1ZFQ19UT19JQklUKGQtPmlycSksIGltcik7CglzcGluX3VubG9j aygmaGVhcnRfbG9jayk7Cn0KCi8qKgogKiBzdHJ1Y3QgaXAzMF9oZWFydF9pcnEgLSBIRUFS VCBzdHJ1Y3QgaXJxX2NoaXAgb3BzLgogKiBAaXJxX3N0YXJ0dXA6IHN0YXJ0dXAgZnVuY3Rp b24uCiAqIEBpcnFfc2h1dGRvd246IHNodXRkb3duIGZ1bmN0aW9uLgogKiBAaXJxX2Fjazog YWNrIGZ1bmN0aW9uLgogKiBAaXJxX21hc2s6IG1hc2sgZnVuY3Rpb24uCiAqIEBpcnFfbWFz a19hY2s6IG1hc2sgJiBhY2sgZnVuY3Rpb24uCiAqIEBpcnFfdW5tYXNrOiB1bm1hc2sgZnVu Y3Rpb24uCiAqLwpzdGF0aWMgc3RydWN0CmlycV9jaGlwIGlwMzBfaGVhcnRfaXJxID0gewoJ Lm5hbWUgPSAiSEVBUlQiLAoJLmlycV9zdGFydHVwID0gc3RhcnR1cF9oZWFydF9pcnEsCgku aXJxX3NodXRkb3duID0gc2h1dGRvd25faGVhcnRfaXJxLAoJLmlycV9hY2sgPSBhY2tfaGVh cnRfaXJxLAoJLmlycV9tYXNrID0gbWFza19oZWFydF9pcnEsCgkuaXJxX21hc2tfYWNrID0g bWFza19hbmRfYWNrX2hlYXJ0X2lycSwKCS5pcnFfdW5tYXNrID0gdW5tYXNrX2hlYXJ0X2ly cSwKfTsKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCnN0YXRpYyBpbmxpbmUgdm9pZCBpcDMw X3VubWFza19ib290X2NwdV9pcnEoc3RydWN0IGlycV9kYXRhICpkKQp7CglzZXRfYzBfc3Rh dHVzKDB4MTAwIDw8IChkLT5pcnEgLSBNSVBTX0NQVV9JUlFfQkFTRSkpOwp9CgpzdGF0aWMg aW5saW5lIHZvaWQgaXAzMF9tYXNrX2Jvb3RfY3B1X2lycShzdHJ1Y3QgaXJxX2RhdGEgKmQp CnsKCWNsZWFyX2MwX3N0YXR1cygweDEwMCA8PCAoZC0+aXJxIC0gTUlQU19DUFVfSVJRX0JB U0UpKTsKfQoKc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBpcDMwX2Jvb3RfY3B1X2lycV9jb250 cm9sbGVyID0gewoJLm5hbWUJCT0gIklQMzAtQ1BVMC1JUlEiLAoJLmlycV9hY2sJPSBpcDMw X21hc2tfYm9vdF9jcHVfaXJxLAoJLmlycV9tYXNrCT0gaXAzMF9tYXNrX2Jvb3RfY3B1X2ly cSwKCS5pcnFfbWFza19hY2sJPSBpcDMwX21hc2tfYm9vdF9jcHVfaXJxLAoJLmlycV91bm1h c2sJPSBpcDMwX3VubWFza19ib290X2NwdV9pcnEsCgkuaXJxX2VvaQk9IGlwMzBfdW5tYXNr X2Jvb3RfY3B1X2lycSwKfTsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi8qIEFyY2ggSVJR IGluaXRpYWxpemF0aW9uIC0gcnVucyBvbiBDUFUwIG9ubHkuICovCgovKioKICogYXJjaF9p bml0X2lycSAtIGFyY2ggaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uCiAqLwp2b2lkIF9faW5p dAphcmNoX2luaXRfaXJxKHZvaWQpCnsKCWludCBpcnE7CgoJLyogQWNrIGV2ZXJ5dGhpbmcg Ki8KCXdyaXRlcShIRUFSVF9BQ0tfQUxMX01BU0ssIEhFQVJUX0NMUl9JU1IpOwoKCS8qIE1h c2sgYWxsIElSUXMgKi8KCXdyaXRlcShIRUFSVF9DTFJfQUxMX01BU0ssIEhFQVJUX0lNUigw KSk7Cgl3cml0ZXEoSEVBUlRfQ0xSX0FMTF9NQVNLLCBIRUFSVF9JTVIoMSkpOwoJd3JpdGVx KEhFQVJUX0NMUl9BTExfTUFTSywgSEVBUlRfSU1SKDIpKTsKCXdyaXRlcShIRUFSVF9DTFJf QUxMX01BU0ssIEhFQVJUX0lNUigzKSk7CgoJLyogTGVhdmUgSEVBUlQgZXJyb3JzIGVuYWJs ZWQgKi8KCXdyaXRlcShIRUFSVF9CUl9FUlJfTUFTSywgSEVBUlRfSU1SKDApKTsKCglmb3Ig KGlycSA9IEhFQVJUX0lSUV9CQVNFOyBpcnEgPCBIRUFSVF9JUlFTOyBpcnErKykgewoJCWhl YXJ0X2lycV9vd25lcltpcnFdID0gLTE7CgkJaXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGly cSwgJmlwMzBfaGVhcnRfaXJxLCBoYW5kbGVfbGV2ZWxfaXJxKTsKCX0KCgkvKiBJbml0IENQ VTAgSVJRcyAqLwovLwltaXBzX2NwdV9pcnFfaW5pdCgpOwoJaXJxX3NldF9jaGlwX2FuZF9o YW5kbGVyKE1JUFNfQ1BVX0lSUV9CQVNFLAoJCQkJICZpcDMwX2Jvb3RfY3B1X2lycV9jb250 cm9sbGVyLAoJCQkJIGhhbmRsZV9wZXJjcHVfaXJxKTsKCWNoYW5nZV9jMF9zdGF0dXMoU1Qw X0lNLCAoU1RBVFVTRl9JUDIgfCBTVEFUVVNGX0lQMyB8IFNUQVRVU0ZfSVA0IHwKCSAgICAg ICAgICAgICAgICAgICAgICAgICAgU1RBVFVTRl9JUDUgfCBTVEFUVVNGX0lQNiB8IFNUQVRV U0ZfSVA3KSk7CgoJcHJpbnRrKEtFUk5fSU5GTyAiSVAzMDogSEVBUlQgaW50ZXJydXB0IGNv bnRyb2xsZXIgaW5pdGlhbGl6ZWQuXG4iKTsKfQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwo= --------------060803030900080801060404 Content-Type: text/plain; charset=windows-1252; name="ip30-smp.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ip30-smp.c" LyoKICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZS4gIFNlZSB0aGUgZmlsZSAi Q09QWUlORyIgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQogKiBmb3Ig bW9yZSBkZXRhaWxzLgogKgogKiBpcDMwLXNtcC5jOiBTTVAgb24gSVAzMCBhcmNoaXRlY3R1 cmUuCiAqCiAqIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IFN0YW5pc2xhdyBTa293cm9uZWsg PHNreWxhcmtAbGludXgtbWlwcy5vcmc+CiAqICAgICAgICAgICAgICAgMjAwNi0yMDA3IEpv c2h1YSBLaW5hcmQgPGt1bWJhQGdlbnRvby5vcmc+CiAqICAgICAgICAgICAgICAgMjAwOSBK b2hhbm5lcyBEaWNrZ3JlYmVyIDx0YW56eUBnbXguZGU+CiAqLwoKI2luY2x1ZGUgPGxpbnV4 L2luaXQuaD4KI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgojaW5jbHVkZSA8bGludXgv aXJxLmg+CiNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KI2luY2x1ZGUgPGxpbnV4L3NjaGVk Lmg+CiNpbmNsdWRlIDxsaW51eC90aWNrLmg+CiNpbmNsdWRlIDxsaW51eC9zcGlubG9ja190 eXBlcy5oPgoKI2luY2x1ZGUgPGFzbS90aW1lLmg+CiNpbmNsdWRlIDxhc20vY2FjaGVmbHVz aC5oPgoKI2luY2x1ZGUgPGFzbS9tYWNoLWlwMzAvaGVhcnQuaD4KI2luY2x1ZGUgPGFzbS9t YWNoLWlwMzAvcmFjZXJtcC5oPgoKc3RhdGljIERFRklORV9TUElOTE9DSyhpcDMwX2lwaV9s b2NrKTsKLy9zdGF0aWMgREVGSU5FX1NQSU5MT0NLKGlwMzBfdGltZXJfbG9jayk7CnN0YXRp YyBERUZJTkVfUEVSX0NQVShpbnQsIGlwMzBfaXBpX2FjdGlvbl9tYXNrKTsKc3RhdGljIERF RklORV9QRVJfQ1BVKGNoYXJbMTVdLCBpcDMwX2lwaV9uYW1lKTsKLy9zdGF0aWMgREVGSU5F X1BFUl9DUFUoY2hhclsxN10sIGlwMzBfdGltZXJfbmFtZSk7CgovL3ZvaWQgaXAzMF9jbG9j a2V2ZW50X2Jyb2FkY2FzdChjb25zdCBpbnQgY3B1KQovL3sKLy8jaWZkZWYgQ09ORklHX1NN UAovLwkvKiBUaGVyZSBjYW4gb25seSBldmVyIGJlIDIgQ1BVcyBpbiBhbiBPY3RhbmUsIHNv IGtlZXAgaXQgc2ltcGxlLiAqLwovLyNlbmRpZgovL30KCi8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ICovCi8qIFNNUCBJUEkgT3BzICovCgovKiBSdW5zIG9uIENQVXggYW5kIHNlbmRzIGFuIElQ SSB0byBDUFV5LiAqLwpzdGF0aWMgdm9pZCBpcDMwX3NlbmRfaXBpX3NpbmdsZShpbnQgY3B1 LCB1bnNpZ25lZCBpbnQgYWN0aW9uKQp7Ci8vCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CgovLwlw cmludGsoS0VSTl9JTkZPICJERUJVRzogSVAzMDogU01QOiBpcDMwX3NlbmRfaXBpX3Npbmds ZSBDUFUlZCAtPiBDUFUlZDogYWN0aW9uOiAweCUuOHhcbiIsIHNtcF9wcm9jZXNzb3JfaWQo KSwgY3B1LCBhY3Rpb24pOwovLwlzcGluX2xvY2tfaXJxc2F2ZSgmaXAzMF9pcGlfbG9jaywg ZmxhZ3MpOwoJc3Bpbl9sb2NrKCZpcDMwX2lwaV9sb2NrKTsKCXBlcl9jcHUoaXAzMF9pcGlf YWN0aW9uX21hc2ssIGNwdSkgfD0gYWN0aW9uOwoJd3JpdGVxKEhFQVJUX1ZFQ19UT19JQklU KEhFQVJUX0wyX0lOVF9JUElfQ1BVKGNwdSkpLCBIRUFSVF9TRVRfSVNSKTsKCXNwaW5fdW5s b2NrKCZpcDMwX2lwaV9sb2NrKTsKLy8Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaXAzMF9p cGlfbG9jaywgZmxhZ3MpOwp9CgovKiBJUlEgaGFuZGxlciB0aGF0IHJ1bnMgb24gQ1BVeSBh bmQgc2VydmljZXMgdGhlIElQSS4gKi8Kc3RhdGljIGlycXJldHVybl90IGlwMzBfaXBpX2ly cShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCnsKCWludCBhY3Rpb247CglpbnQgY3B1ID0gc21w X3Byb2Nlc3Nvcl9pZCgpOwovLwl1bnNpZ25lZCBsb25nIGZsYWdzOwoKLy8Jc3Bpbl9sb2Nr X2lycXNhdmUoJmlwMzBfaXBpX2xvY2ssIGZsYWdzKTsKCXNwaW5fbG9jaygmaXAzMF9pcGlf bG9jayk7CglhY3Rpb24gPSBfX2dldF9jcHVfdmFyKGlwMzBfaXBpX2FjdGlvbl9tYXNrKTsK CXBlcl9jcHUoaXAzMF9pcGlfYWN0aW9uX21hc2ssIGNwdSkgPSAwOwoJd3JpdGVxKEhFQVJU X1ZFQ19UT19JQklUKEhFQVJUX0wyX0lOVF9JUElfQ1BVKGNwdSkpLCBIRUFSVF9DTFJfSVNS KTsKCXNwaW5fdW5sb2NrKCZpcDMwX2lwaV9sb2NrKTsKLy8Jc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmaXAzMF9pcGlfbG9jaywgZmxhZ3MpOwoKLy8JcHJpbnRrKEtFUk5fSU5GTyAiREVC VUc6IElQMzA6IFNNUDogaXAzMF9pcGlfaXJxOiBjcHUlZDogYWN0aW9uOiAweCUuOHhcbiIs IGNwdSwgYWN0aW9uKTsKCglpZiAoYWN0aW9uICYgU01QX1JFU0NIRURVTEVfWU9VUlNFTEYp CgkJc2NoZWR1bGVyX2lwaSgpOwoKCWlmIChhY3Rpb24gJiBTTVBfQ0FMTF9GVU5DVElPTikK CQlzbXBfY2FsbF9mdW5jdGlvbl9pbnRlcnJ1cHQoKTsKCglyZXR1cm4gSVJRX0hBTkRMRUQ7 Cn0KCi8vLyogSVJRIGhhbmRsZXIgdGhhdCBydW5zIG9uIENQVXkgYW5kIHNlcnZpY2VzIHRo ZSBDUFUgVGltZXIuICovCi8vc3RhdGljIGlycXJldHVybl90IGlwMzBfdGltZXJfaXJxKGlu dCBpcnEsIHZvaWQgKmRldl9pZCkKLy97Ci8vCWludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lk KCk7Ci8vCXN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmNkOwovLwovLwlzcGluX2xvY2so JmlwMzBfdGltZXJfbG9jayk7Ci8vCWNkID0gdGlja19nZXRfZGV2aWNlKGNwdSktPmV2dGRl djsKLy8JY2QtPmV2ZW50X2hhbmRsZXIoY2QpOwovLy8vCXByaW50ayhLRVJOX0lORk8gIkRF QlVHOiBJUDMwOiBTTVA6IGlwMzBfdGltZXJfaXJxOiBDUFUlZDogJXNcbiIsIGNwdSwgY2Qt Pm5hbWUpOwovLwlzcGluX3VubG9jaygmaXAzMF90aW1lcl9sb2NrKTsKLy8Jd3JpdGVxKEhF QVJUX1ZFQ19UT19JQklUKEhFQVJUX0wyX0lOVF9USU1FUl9DUFUoY3B1KSksIEhFQVJUX0NM Ul9JU1IpOwovLwovLwlyZXR1cm4gSVJRX0hBTkRMRUQ7Ci8vfQoKc3RhdGljIHZvaWQgaXAz MF9zZW5kX2lwaV9tYXNrKGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCB1bnNpZ25lZCBp bnQgYWN0aW9uKQp7Cgl1MzIgaTsKCglmb3JfZWFjaF9jcHUoaSwgbWFzaykKCQlpcDMwX3Nl bmRfaXBpX3NpbmdsZShpLCBhY3Rpb24pOwp9CgpzdGF0aWMgdm9pZCBfX2luaXQgaXAzMF9z bXBfc2V0dXAodm9pZCkKewoJaW50IGk7CglpbnQgbmNwdSA9IDA7CglpbnQgdmNwdTsKCglm b3IgKGkgPSAwOyBpIDwgTlJfQ1BVUzsgaSsrKSB7CgkJaWYgKHJlYWRsKE1QX01BR0lDKGkp KSA9PSBNUENPTkZfTUFHSUMpIHsKCQkJdmNwdSA9IHJlYWRsKE1QX1ZJUlRJRChpKSk7CgkJ CV9fY3B1X251bWJlcl9tYXBbaV0gPSB2Y3B1OwoJCQlfX2NwdV9sb2dpY2FsX21hcFt2Y3B1 XSA9IGk7CgkJCXNldF9jcHVfcG9zc2libGUoaSwgdHJ1ZSk7CgkJCXNldF9jcHVfcHJlc2Vu dChpLCB0cnVlKTsKCQkJcHJpbnRrKEtFUk5fSU5GTyAiSVAzMDogU2xvdDogJWQsIFBySUQ6 ICUuOHgsIFBoeUlEOiAlZCwgVmlydElEOiAlZFxuIiwKCQkJICAgICAgIGksIHJlYWRsKE1Q X1BSSUQoaSkpLCByZWFkbChNUF9QSFlTSUQoaSkpLCB2Y3B1KTsKCQkJbmNwdSsrOwoJCX0K CX0KCXByaW50ayhLRVJOX0lORk8gIklQMzA6IERldGVjdGVkICVkIENQVShzKSBwcmVzZW50 LlxuIiwgbmNwdSk7Cn0KCi8qIFJ1bnMgb24gQ1BVMCAqLwpzdGF0aWMgdm9pZCBfX2luaXQg aXAzMF9wcmVwYXJlX2NwdXModW5zaWduZWQgaW50IG1heF9jcHVzKQp7CglpbnQgY3B1ID0g c21wX3Byb2Nlc3Nvcl9pZCgpOwoJdW5zaWduZWQgY2hhciAqaXBpX25hbWUgPSBwZXJfY3B1 KGlwMzBfaXBpX25hbWUsIGNwdSk7Ci8vCXVuc2lnbmVkIGNoYXIgKnRpbWVyX25hbWUgPSBw ZXJfY3B1KGlwMzBfdGltZXJfbmFtZSwgY3B1KTsKCglwcmludGsoS0VSTl9JTkZPICJERUJV RzogSVAzMDogU01QOiBpcDMwX3ByZXBhcmVfY3B1c1xuIik7CgoJLyogUmVxdWVzdCBhbiBJ UlEgbnVtYmVyIGZvciBDUFUwIElQSS4gKi8KCXNucHJpbnRmKGlwaV9uYW1lLCAxNSwgImlw MzAtY3B1JWQtaXBpIiwgY3B1KTsKCWlmIChyZXF1ZXN0X2lycShIRUFSVF9MMl9JTlRfSVBJ X0NQVShjcHUpLCBpcDMwX2lwaV9pcnEsIElSUUZfUEVSQ1BVLAoJICAgICAgICAgICAgICAg IGlwaV9uYW1lLCBOVUxMKSkKCQlwYW5pYygiQ2FuJ3QgcmVxdWVzdCBDUFUlZCBJUEkgaW50 ZXJydXB0IiwgY3B1KTsKCi8vCXNucHJpbnRmKHRpbWVyX25hbWUsIDE3LCAiaXAzMC1jcHUl ZC10aW1lciIsIGNwdSk7Ci8vCWlmIChyZXF1ZXN0X2lycShIRUFSVF9MMl9JTlRfVElNRVJf Q1BVKGNwdSksIGlwMzBfdGltZXJfaXJxLCBJUlFGX1BFUkNQVSwKLy8JICAgICAgICAgICAg ICAgIHRpbWVyX25hbWUsIE5VTEwpKQovLwkJcGFuaWMoIkNhbid0IHJlcXVlc3QgQ1BVJWQg QnJvYWRjYXN0IFRpbWVyIGludGVycnVwdCIsIGNwdSk7CgoJLyogRW5hYmxlIHRoZSBJUEkg aW50ZXJydXB0IG9uIENQVTAgSVA0LiAqLwovLwljaGFuZ2VfYzBfc3RhdHVzKFNUMF9JTSwg U1RBVFVTRl9JUDQpOwp9CgovKiBSdW5zIG9uIENQVTAgYW5kIGJvb3RzIENQVXgsIHdoZXJl IHggPiAwICovCnN0YXRpYyB2b2lkIGlwMzBfYm9vdF9zZWNvbmRhcnkoaW50IGNwdSwgc3Ry dWN0IHRhc2tfc3RydWN0ICppZGxlKQp7CglpbnQgYm9vdF9jcHUgPSBzbXBfcHJvY2Vzc29y X2lkKCk7Ci8vCXN0cnVjdCB0aHJlYWRfaW5mbyAqZ3AgPSB0YXNrX3RocmVhZF9pbmZvKGlk bGUpOwoKCXByaW50ayhLRVJOX0lORk8gIkRFQlVHOiBJUDMwOiBTTVA6IGlwMzBfYm9vdF9z ZWNvbmRhcnk6IENQVSVkIC0+IENQVSVkXG4iLCBib290X2NwdSwgY3B1KTsKCgkvKiBTdGFj ayBwb2ludGVyIChzcCkuICovCgl3cml0ZXEoX19LU1RLX1RPUyhpZGxlKSwgTVBfU1RBQ0tB RERSKGNwdSkpOwoKCS8qIEdsb2JhbCBwb2ludGVyIChncCkuICovCgl3cml0ZXEoKHVuc2ln bmVkIGxvbmcpdGFza190aHJlYWRfaW5mbyhpZGxlKSwgTVBfTFBBUk0oY3B1KSk7Ci8vCXdy aXRlcSgodW5zaWduZWQgbG9uZylncCwgTVBfTFBBUk0oY3B1KSk7CgoJLyogWFhYOiBJIGRv bid0IGtub3cgaWYgdGhpcyBpcyBuZWVkZWQgb3Igbm90LiAgQ29waWVkIGZyb20gZWxzZXdo ZXJlLiAqLwovLwlmbHVzaF9pY2FjaGVfcmFuZ2UoKHVuc2lnbmVkIGxvbmcpZ3AsCi8vCSAg ICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykoZ3AgKyBzaXplb2Yoc3RydWN0IHRo cmVhZF9pbmZvKSkpOwoKCS8qIEJvb3QgQ1BVMS4gKi8KCXdyaXRlcSgodW5zaWduZWQgbG9u ZylpcDMwX3NtcF9ib290c3RyYXAsIE1QX0xBVU5DSChjcHUpKTsKLy8JbWIoKTsKCgkvKiBY WFg6IFRoaXMgaXMgbmVlZGVkIHRvICJraWNrIiB0aGUgQ1BVIGF3YWtlLiAgQnVnPyAqLwoJ cHJfaW5mbygiU01QOiBCb290aW5nIENQVSVkLi4uXG4iLCBjcHUpOwp9CgovKiBSdW5zIG9u IENQVXgsIHdoZXJlIHggPiAwICovCnN0YXRpYyB2b2lkIGlwMzBfaW5pdF9zZWNvbmRhcnko dm9pZCkKewoJaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKCglwcmludGsoS0VSTl9J TkZPICJERUJVRzogSVAzMDogU01QOiBpcDMwX2luaXRfc2Vjb25kYXJ5IG9uIENQVSVkXG4i LCBjcHUpOwoKfQoKc3RhdGljIGlubGluZSB2b2lkIGlwMzBfdW5tYXNrXzJuZF9jcHVfaXJx KHN0cnVjdCBpcnFfZGF0YSAqZCkKewoJc2V0X2MwX3N0YXR1cygweDEwMCA8PCAoZC0+aXJx IC0gKE1JUFNfQ1BVX0lSUV9CQVNFICsgMSkpKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGlw MzBfbWFza18ybmRfY3B1X2lycShzdHJ1Y3QgaXJxX2RhdGEgKmQpCnsKCWNsZWFyX2MwX3N0 YXR1cygweDEwMCA8PCAoZC0+aXJxIC0gKE1JUFNfQ1BVX0lSUV9CQVNFICsgMSkpKTsKfQoK c3RhdGljIHN0cnVjdCBpcnFfY2hpcCBpcDMwXzJuZF9jcHVfaXJxX2NvbnRyb2xsZXIgPSB7 CgkubmFtZQkJPSAiSVAzMC1DUFUxLUlSUSIsCgkuaXJxX2Fjawk9IGlwMzBfbWFza18ybmRf Y3B1X2lycSwKCS5pcnFfbWFzawk9IGlwMzBfbWFza18ybmRfY3B1X2lycSwKCS5pcnFfbWFz a19hY2sJPSBpcDMwX21hc2tfMm5kX2NwdV9pcnEsCgkuaXJxX3VubWFzawk9IGlwMzBfdW5t YXNrXzJuZF9jcHVfaXJxLAoJLmlycV9lb2kJPSBpcDMwX3VubWFza18ybmRfY3B1X2lycSwK fTsKCnN0YXRpYyB2b2lkIGlwMzBfc21wX2ZpbmlzaCh2b2lkKQp7CglpbnQgY3B1ID0gc21w X3Byb2Nlc3Nvcl9pZCgpOwoJdW5zaWduZWQgY2hhciAqaXBpX25hbWUgPSBwZXJfY3B1KGlw MzBfaXBpX25hbWUsIGNwdSk7Ci8vCXVuc2lnbmVkIGNoYXIgKnRpbWVyX25hbWUgPSBwZXJf Y3B1KGlwMzBfdGltZXJfbmFtZSwgY3B1KTsKCglwcmludGsoS0VSTl9JTkZPICJERUJVRzog SVAzMDogU01QOiBpcDMwX3NtcF9maW5pc2g6IENQVSVkXG4iLCBjcHUpOwoKCWlycV9zZXRf Y2hpcF9hbmRfaGFuZGxlcigoTUlQU19DUFVfSVJRX0JBU0UgKyAxKSwKCQkJCSAmaXAzMF8y bmRfY3B1X2lycV9jb250cm9sbGVyLAoJCQkJIGhhbmRsZV9wZXJjcHVfaXJxKTsKLy8Jd3Jp dGVfYzBfY29tcGFyZShyZWFkX2MwX2NvdW50KCkgKyBtaXBzX2hwdF9mcmVxdWVuY3kgLyBI Wik7CgljaGFuZ2VfYzBfc3RhdHVzKFNUMF9JTSwgKFNUQVRVU0ZfSVAyIHwgU1RBVFVTRl9J UDMgfCBTVEFUVVNGX0lQNCB8CgkgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVRVU0Zf SVA1IHwgU1RBVFVTRl9JUDYgfCBTVEFUVVNGX0lQNykpOwoJbG9jYWxfaXJxX2VuYWJsZSgp OwoKCS8qIFJlcXVlc3QgYW4gSVJRIG51bWJlciBmb3IgQ1BVMSBJUEkuICovCglzbnByaW50 ZihpcGlfbmFtZSwgMTUsICJpcDMwLWNwdSVkLWlwaSIsIGNwdSk7CglpZiAocmVxdWVzdF9p cnEoSEVBUlRfTDJfSU5UX0lQSV9DUFUoY3B1KSwgaXAzMF9pcGlfaXJxLCBJUlFGX1BFUkNQ VSwKCSAgICAgICAgICAgICAgICBpcGlfbmFtZSwgTlVMTCkpCgkJcGFuaWMoIkNhbid0IHJl cXVlc3QgQ1BVJWQgSVBJIGludGVycnVwdCIsIGNwdSk7CgovLwlzbnByaW50Zih0aW1lcl9u YW1lLCAxNywgImlwMzAtY3B1JWQtdGltZXIiLCBjcHUpOwovLwlpZiAocmVxdWVzdF9pcnEo SEVBUlRfTDJfSU5UX1RJTUVSX0NQVShjcHUpLCBpcDMwX3RpbWVyX2lycSwgSVJRRl9QRVJD UFUsCi8vCSAgICAgICAgICAgICAgICB0aW1lcl9uYW1lLCBOVUxMKSkKLy8JCXBhbmljKCJD YW4ndCByZXF1ZXN0IENQVSVkIEJyb2FkY2FzdCBUaW1lciBpbnRlcnJ1cHQiLCBjcHUpOwoK CXByX2luZm8oIlNNUDogQ1BVJWQgaXMgcnVubmluZ1xuIiwgc21wX3Byb2Nlc3Nvcl9pZCgp KTsKfQoKc3RydWN0IHBsYXRfc21wX29wcyBpcDMwX3NtcF9vcHMgPSB7Cgkuc2VuZF9pcGlf c2luZ2xlCT0gaXAzMF9zZW5kX2lwaV9zaW5nbGUsCgkuc2VuZF9pcGlfbWFzawkJPSBpcDMw X3NlbmRfaXBpX21hc2ssCgkuaW5pdF9zZWNvbmRhcnkJCT0gaXAzMF9pbml0X3NlY29uZGFy eSwKCS5zbXBfZmluaXNoCQk9IGlwMzBfc21wX2ZpbmlzaCwKCS5ib290X3NlY29uZGFyeQkJ PSBpcDMwX2Jvb3Rfc2Vjb25kYXJ5LAoJLnNtcF9zZXR1cAkJPSBpcDMwX3NtcF9zZXR1cCwK CS5wcmVwYXJlX2NwdXMJCT0gaXAzMF9wcmVwYXJlX2NwdXMsCn07Cg== --------------060803030900080801060404--