From mboxrd@z Thu Jan 1 00:00:00 1970 X-Recipient: devel@linux.iplabs.ru From: Konstantin Volckov Organization: Goldhead Station To: devel@linux.iplabs.ru X-Mailer: KMail [version 1.1.99] Content-Type: Multipart/Mixed; boundary="------------Boundary-00=_9Z839Q8GI3BJSC6EHLUO" MIME-Version: 1.0 Message-Id: <01022106424502.02651@localhost.localdomain> Subject: [devel] =?koi8-r?q?=F1=C4=D2=CF=202=2E4=20=C9?= =?koi8-r?q?=DA=C1=CD=C5=DE=C1=CE=C9=D1=20=C4=CC=D1=202=2E2?= Sender: devel-admin@linux.iplabs.ru Errors-To: devel-admin@linux.iplabs.ru X-BeenThere: devel@linux.iplabs.ru X-Mailman-Version: 2.0 Precedence: bulk Reply-To: devel@linux.iplabs.ru List-Help: List-Post: List-Subscribe: , List-Id: IPLabs Linux Team Developers mailing list List-Unsubscribe: , List-Archive: X-Original-Date: Wed, 21 Feb 2001 06:42:45 +0300 Date: Wed, 21 Feb 2001 06:42:45 +0300 Archived-At: List-Archive: List-Post: --------------Boundary-00=_9Z839Q8GI3BJSC6EHLUO Content-Type: text/plain; charset="koi8r" Content-Transfer-Encoding: 8bit Всем привет! Вот список исправлений, которые я сделал для 2.4 ipl2mdk: * Tue Feb 20 2001 Konstantin Volckov 2.4.1-ipl2mdk - Added: + Integrated updated emu10k1 driver from creative - Fixed: + Some other small fixes - Updated: + Via82cxxx IDE driver + Kernel 2.4.1 ac-patch 20 + BTTV driver to 0.7.57 version Из того что осталось сделать - разобраться с глюками loop... чем я и занимаюсь уже целый день, пока безрезультатно. Если надо сделать что-либо еще - пишите. Теперь что касается ядра 2.2 - думаю стоит включить в него следующие фичи: 1. Добавить исправленный драйвер via82cxxx - в нем добавлена поддержка южного моста via686b с нормально работающим ATA100, что я проверил на своей плате (у меня именно 686b). К сведению - со стандартным драйвером via из 2.2 у меня винт выставляется в режим ATA33 :-( 2. Добавить драйвер радиокарточки sf16fmd2 - он работает точно также, как и мой sf16fmx2 - просто уже после написания своего я обнаружил существование sf16fmd2 для ядер 2.2, который также работает и с моей карточкой (fmr2). Все файлы драйверов приаттачены к этому письму. (via82cxx.c & ide-timings - linux/drivers/ide, radio-sf16fmd2 - linux/drivers/char). Впринципе добавить их несложно (надо только сгенерить патчи и поправить Makefile & COnfig.in для radio). Если есть необходимость, я могу это сделать. -- Удачи, Konstantin --------------Boundary-00=_9Z839Q8GI3BJSC6EHLUO Content-Type: text/english; name="via82cxxx.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="via82cxxx.c" LyoKICogJElkOiB2aWE4MmN4eHguYyx2IDQuMiAyMDAxLzAyLzExIDIwOjQwOjYwIHZvanRlY2gg RXhwICQKICoKICogIENvcHlyaWdodCAoYykgMjAwMC0yMDAxIFZvanRlY2ggUGF2bGlrCiAqCiAq ICBCYXNlZCBvbiB0aGUgd29yayBvZjoKICoJTWljaGVsIEF1YnJ5CiAqCUplZmYgR2FyemlrCiAq CUFuZHJlIEhlZHJpY2sKICoKICogIFNwb25zb3JlZCBieSBTdVNFCiAqLwoKLyoKICogVklBIElE RSBkcml2ZXIgZm9yIExpbnV4LiBTdXBwb3J0cwogKgogKiAgIHZ0ODJjNTg2LCB2dDgyYzU4NmEs IHZ0ODJjNTg2YiwgdnQ4MmM1OTZhLCB2dDgyYzU5NmIsCiAqICAgdnQ4MmM2ODYsIHZ0ODJjNjg2 YSwgdnQ4MmM2ODZiLCB2dDgyMzEsIHZ0ODIzMwogKgogKiBzb3V0aGJyaWRnZXMsIHdoaWNoIGNh biBiZSBmb3VuZCBpbgogKgogKiAgVklBIEFwb2xsbyBWUCwgVlBYLCBWUFgvOTcsIFZQMiwgVlAy Lzk3LCBWUDMsIE1WUDMsIE1WUDQsIFA2LCBQcm8sCiAqICBQcm8gUGx1cywgUHJvIDEzMywgUHJv IDEzM0EsIFByb01lZGlhIFBNNjAxLCBQcm9TYXZhZ2UgUE0xMzMsIFBMRTEzMywKICogIFBybyAy NjYsIEtYMTMzLCBLVDEzMywgUHJvU2F2YWdlIEtNMTMzLCBLVDEzM0EsIEtUMjY2CiAqICBQQy1D aGlwcyBWWFBybywgVlhQcm8rLCBUWFByby1JSUksIFRYUHJvLUFHUCwgVmlhR3JhLCBCWFRvbywg QlhUZWwKICogIEFNRCA2NDAsIDY0MCBBR1AsIDc1MCBJcm9uR2F0ZQogKiAgRVRFUSA2NjE4LCA2 NjI4LCA2NjM4CiAqICBNaWNyb24gU2FtdXJhaQogKgogKiBjaGlwc2V0cy4gU3VwcG9ydHMKICoK ICogICBQSU8gMC01LCBNV0RNQSAwLTIsIFNXRE1BIDAtMiBhbmQgVURNQSAwLTUKICoKICogKHRo aXMgaW5jbHVkZXMgVURNQTMzLCA2NiBhbmQgMTAwKSBtb2Rlcy4gVURNQTY2IGFuZCBoaWdoZXIg bW9kZXMgYXJlCiAqIGF1dG9lbmFibGVkIG9ubHkgaW4gY2FzZSB0aGUgQklPUyBoYXMgZGV0ZWN0 ZWQgYSA4MCB3aXJlIGNhYmxlLiBUbyBpZ25vcmUKICogdGhlIEJJT1MgZGF0YSBhbmQgYXNzdW1l IHRoZSBjYWJsZSBpcyBwcmVzZW50LCB1c2UgJ2lkZTA9YXRhNjYnIG9yCiAqICdpZGUxPWF0YTY2 JyBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4KICovCgovKgogKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQogKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgogKgogKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKiBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0x MzA3IFVTQQogKgogKiBTaG91bGQgeW91IG5lZWQgdG8gY29udGFjdCBtZSwgdGhlIGF1dGhvciwg eW91IGNhbiBkbyBzbyBlaXRoZXIgYnkKICogZS1tYWlsIC0gbWFpbCB5b3VyIG1lc3NhZ2UgdG8g PHZvanRlY2hAc3VzZS5jej4sIG9yIGJ5IHBhcGVyIG1haWw6CiAqIFZvanRlY2ggUGF2bGlrLCBV Y2l0ZWxza2EgMTU3NiwgUHJhZ3VlIDgsIDE4MiAwMCBDemVjaCBSZXB1YmxpYwogKi8KCiNpbmNs dWRlIDxsaW51eC9jb25maWcuaD4KI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgojaW5jbHVkZSA8 bGludXgvaW9wb3J0Lmg+CiNpbmNsdWRlIDxsaW51eC9ibGtkZXYuaD4KI2luY2x1ZGUgPGxpbnV4 L3BjaS5oPgojaW5jbHVkZSA8bGludXgvaW5pdC5oPgojaW5jbHVkZSA8bGludXgvaWRlLmg+CiNp bmNsdWRlIDxhc20vaW8uaD4KCiNpbmNsdWRlICJpZGUtdGltaW5nLmgiCgojZGVmaW5lIFZJQV9J REVfRU5BQkxFCQkweDQwCiNkZWZpbmUgVklBX0lERV9DT05GSUcJCTB4NDEKI2RlZmluZSBWSUFf RklGT19DT05GSUcJCTB4NDMKI2RlZmluZSBWSUFfTUlTQ18xCQkweDQ0CiNkZWZpbmUgVklBX01J U0NfMgkJMHg0NQojZGVmaW5lIFZJQV9NSVNDXzMJCTB4NDYKI2RlZmluZSBWSUFfRFJJVkVfVElN SU5HCTB4NDgKI2RlZmluZSBWSUFfOEJJVF9USU1JTkcJCTB4NGUKI2RlZmluZSBWSUFfQUREUkVT U19TRVRVUAkweDRjCiNkZWZpbmUgVklBX1VETUFfVElNSU5HCQkweDUwCgojZGVmaW5lIFZJQV9V RE1BCQkweDA3CiNkZWZpbmUgVklBX1VETUFfTk9ORQkJMHgwMAojZGVmaW5lIFZJQV9VRE1BXzMz CQkweDAxCiNkZWZpbmUgVklBX1VETUFfNjYJCTB4MDIKI2RlZmluZSBWSUFfVURNQV8xMDAJCTB4 MDMKI2RlZmluZSBWSUFfQkFEX1BSRVEJCTB4MTAJLyogQ3Jhc2hlcyBpZiBQUkVRIyB0aWxsIERE QUNLIyBzZXQgKi8KI2RlZmluZSBWSUFfQkFEX0NMSzY2CQkweDIwCS8qIDY2IE1IeiBjbG9jayBk b2Vzbid0IHdvcmsgY29ycmVjdGx5ICovCiNkZWZpbmUgVklBX1NFVF9GSUZPCQkweDQwCS8qIE5l ZWRzIHRvIGhhdmUgRklGTyBzcGxpdCBzZXQgKi8KI2RlZmluZSBWSUFfU0VUX1RIUkVTSAkJMHg4 MAkvKiBOZWVkcyB0byBoYXZlIEZJRk8gdGhyZXNob2xkcyBzZXQgKi8KI2RlZmluZSBWSUFfQkFE X1BJTwkJMHg4MAkvKiBBbHdheXMgdXNlcyAyNSBQQ0lDTEsveGZlciByZWdhcmRsZXMgb2YgUElP IG1vZGUgKi8KCi8qCiAqIFZJQSBTb3V0aEJyaWRnZSBjaGlwcy4KICovCgpzdGF0aWMgc3RydWN0 IHZpYV9pc2FfYnJpZGdlIHsKCWNoYXIgKm5hbWU7Cgl1bnNpZ25lZCBzaG9ydCBpZDsKCXVuc2ln bmVkIGNoYXIgcmV2X21pbjsKCXVuc2lnbmVkIGNoYXIgcmV2X21heDsKCXVuc2lnbmVkIGNoYXIg ZmxhZ3M7Cn0gdmlhX2lzYV9icmlkZ2VzW10gPSB7CiNpZmRlZiBWSUFfTkVXX0JSSURHRVNfVEVT VEVECgl7ICJ2dDgyMzMiLAlQQ0lfREVWSUNFX0lEX1ZJQV84MjMzXzAsICAgMHgwMCwgMHgyZiwg VklBX1VETUFfMTAwIH0sCgl7ICJ2dDgyMzEiLAlQQ0lfREVWSUNFX0lEX1ZJQV84MjMxLCAgICAg MHgwMCwgMHgyZiwgVklBX1VETUFfNjYgfSwKI2VuZGlmCgl7ICJ2dDgyYzY4NmIiLAlQQ0lfREVW SUNFX0lEX1ZJQV84MkM2ODYsICAgMHg0MCwgMHg0ZiwgVklBX1VETUFfMTAwIHwgVklBX0JBRF9Q SU8gfSwKCXsgInZ0ODJjNjg2YSIsCVBDSV9ERVZJQ0VfSURfVklBXzgyQzY4NiwgICAweDEwLCAw eDJmLCBWSUFfVURNQV82NiB9LAoJeyAidnQ4MmM2ODYiLAlQQ0lfREVWSUNFX0lEX1ZJQV84MkM2 ODYsICAgMHgwMCwgMHgwZiwgVklBX1VETUFfMzMgfCBWSUFfQkFEX0NMSzY2IH0sCgl7ICJ2dDgy YzU5NmIiLAlQQ0lfREVWSUNFX0lEX1ZJQV84MkM1OTYsICAgMHgxMiwgMHgyZiwgVklBX1VETUFf NjYgfSwKCXsgInZ0ODJjNTk2YSIsCVBDSV9ERVZJQ0VfSURfVklBXzgyQzU5NiwgICAweDAwLCAw eDBmLCBWSUFfVURNQV8zMyB8IFZJQV9CQURfQ0xLNjYgfSwKCXsgInZ0ODJjNTg2YiIsCVBDSV9E RVZJQ0VfSURfVklBXzgyQzU4Nl8wLCAweDQwLCAweDRmLCBWSUFfVURNQV8zMyB8IFZJQV9TRVRf RklGTyB8IFZJQV9CQURfUFJFUSB9LAoJeyAidnQ4MmM1ODZiIiwJUENJX0RFVklDRV9JRF9WSUFf ODJDNTg2XzAsIDB4MzAsIDB4M2YsIFZJQV9VRE1BXzMzIHwgVklBX1NFVF9GSUZPIH0sCgl7ICJ2 dDgyYzU4NmEiLAlQQ0lfREVWSUNFX0lEX1ZJQV84MkM1ODZfMCwgMHgyMCwgMHgyZiwgVklBX1VE TUFfMzMgfCBWSUFfU0VUX0ZJRk8gfSwKCXsgInZ0ODJjNTg2IiwJUENJX0RFVklDRV9JRF9WSUFf ODJDNTg2XzAsIDB4MDAsIDB4MGYsIFZJQV9VRE1BX05PTkUgfCBWSUFfU0VUX0ZJRk8gfSwKCXsg TlVMTCB9Cn07CgpzdGF0aWMgc3RydWN0IHZpYV9pc2FfYnJpZGdlICp2aWFfY29uZmlnOwpzdGF0 aWMgdW5zaWduZWQgY2hhciB2aWFfZW5hYmxlZDsKc3RhdGljIHVuc2lnbmVkIGludCB2aWFfODB3 OwpzdGF0aWMgdW5zaWduZWQgaW50IHZpYV9jbG9jazsKCi8qCiAqIFZJQSAvcHJvYyBlbnRyeS4K ICovCgojaWZkZWYgQ09ORklHX1BST0NfRlMKCiNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+CiNpbmNs dWRlIDxsaW51eC9wcm9jX2ZzLmg+CgppbnQgdmlhX3Byb2MsIHZpYV9iYXNlOwpzdGF0aWMgc3Ry dWN0IHBjaV9kZXYgKmJtaWRlX2RldiwgKmlzYV9kZXY7CmV4dGVybiBpbnQgKCp2aWFfZGlzcGxh eV9pbmZvKShjaGFyICosIGNoYXIgKiosIG9mZl90LCBpbnQpOyAvKiBpZGUtcHJvYy5jICovCgpz dGF0aWMgY2hhciAqdmlhX2RtYVtdID0geyAiTVdETUExNiIsICJVRE1BMzMiLCAiVURNQTY2Iiwg IlVETUExMDAiIH07CnN0YXRpYyBjaGFyICp2aWFfY29udHJvbDNbXSA9IHsgIk5vIGxpbWl0Iiwg IjY0IiwgIjEyOCIsICIxOTIiIH07CgojZGVmaW5lIHZpYV9wcmludChmb3JtYXQsIGFyZy4uLikg cCArPSBzcHJpbnRmKHAsIGZvcm1hdCAiXG4iICwgIyMgYXJnKQojZGVmaW5lIHZpYV9wcmludF9k cml2ZShuYW1lLCBmb3JtYXQsIGFyZy4uLilcCglwICs9IHNwcmludGYocCwgbmFtZSk7IGZvciAo aSA9IDA7IGkgPCA0OyBpKyspIHAgKz0gc3ByaW50ZihwLCBmb3JtYXQsICMjIGFyZyk7IHAgKz0g c3ByaW50ZihwLCAiXG4iKTsKCnN0YXRpYyBpbnQgdmlhX2dldF9pbmZvKGNoYXIgKmJ1ZmZlciwg Y2hhciAqKmFkZHIsIG9mZl90IG9mZnNldCwgaW50IGNvdW50KQp7CglzaG9ydCBzcGVlZFs0XSwg Y3ljbGVbNF0sIHNldHVwWzRdLCBhY3RpdmVbNF0sCgkJcmVjb3Zlcls0XSwgdWVuWzRdLCB1ZG1h WzRdLCB1bXVsWzRdLCBhY3RpdmU4Yls0XSwgcmVjb3ZlcjhiWzRdOwoJc3RydWN0IHBjaV9kZXYg KmRldiA9IGJtaWRlX2RldjsKCXVuc2lnbmVkIGludCB2LCB1LCBpOwoJdW5zaWduZWQgc2hvcnQg YywgdzsKCXVuc2lnbmVkIGNoYXIgdCwgeDsKCWNoYXIgKnAgPSBidWZmZXI7CgoJdmlhX3ByaW50 KCItLS0tLS0tLS0tVklBIEJ1c01hc3RlcmluZyBJREUgQ29uZmlndXJhdGlvbi0tLS0tLS0tLS0t LS0tLS0iKTsKCgl2aWFfcHJpbnQoIkRyaXZlciBWZXJzaW9uOiAgICAgICAgICAgICAgICAgICAg IDQuMSIpOwoJdmlhX3ByaW50KCJTb3V0aCBCcmlkZ2U6ICAgICAgICAgICAgICAgICAgICAgICBW SUEgJXMiLCB2aWFfY29uZmlnLT5uYW1lKTsKCglwY2lfcmVhZF9jb25maWdfYnl0ZShpc2FfZGV2 LCBQQ0lfUkVWSVNJT05fSUQsICZ0KTsKCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldiwgUENJX1JF VklTSU9OX0lELCAmeCk7Cgl2aWFfcHJpbnQoIlJldmlzaW9uOiAgICAgICAgICAgICAgICAgICAg ICAgICAgIElTQSAlI3ggSURFICUjeCIsIHQsIHgpOwoJdmlhX3ByaW50KCJIaWdoZXN0IERNQSBy YXRlOiAgICAgICAgICAgICAgICAgICAlcyIsIHZpYV9kbWFbdmlhX2NvbmZpZy0+ZmxhZ3MgJiBW SUFfVURNQV0pOwoKCXZpYV9wcmludCgiQk0tRE1BIGJhc2U6ICAgICAgICAgICAgICAgICAgICAg ICAgJSN4IiwgdmlhX2Jhc2UpOwoJdmlhX3ByaW50KCJQQ0kgY2xvY2s6ICAgICAgICAgICAgICAg ICAgICAgICAgICAlZE1IeiIsIHZpYV9jbG9jayk7CgoJcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2 LCBWSUFfTUlTQ18xLCAmdCk7Cgl2aWFfcHJpbnQoIk1hc3RlciBSZWFkICBDeWNsZSBJUkRZOiAg ICAgICAgICAgICVkd3MiLCAodCAmIDY0KSA+PiA2KTsKCXZpYV9wcmludCgiTWFzdGVyIFdyaXRl IEN5Y2xlIElSRFk6ICAgICAgICAgICAgJWR3cyIsICh0ICYgMzIpID4+IDUpOwoJdmlhX3ByaW50 KCJCTSBJREUgU3RhdHVzIFJlZ2lzdGVyIFJlYWQgUmV0cnk6ICAlcyIsICh0ICYgOCkgPyAieWVz IiA6ICJubyIpOwoKCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldiwgVklBX01JU0NfMywgJnQpOwoJ dmlhX3ByaW50KCJNYXggRFJEWSBQdWxzZSBXaWR0aDogICAgICAgICAgICAgICAlcyVzIiwgdmlh X2NvbnRyb2wzWyh0ICYgMHgwMyldLCAodCAmIDB4MDMpID8gIiBQQ0kgY2xvY2tzIiA6ICIiKTsK Cgl2aWFfcHJpbnQoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tUHJpbWFyeSBJREUtLS0tLS0tU2Vj b25kYXJ5IElERS0tLS0tLSIpOwoJdmlhX3ByaW50KCJSZWFkIERNQSBGSUZPIGZsdXNoOiAgICUx MHMlMjBzIiwgKHQgJiAweDgwKSA/ICJ5ZXMiIDogIm5vIiwgKHQgJiAweDQwKSA/ICJ5ZXMiIDog Im5vIik7Cgl2aWFfcHJpbnQoIkVuZCBTZWN0b3IgRklGTyBmbHVzaDogJTEwcyUyMHMiLCAodCAm IDB4MjApID8gInllcyIgOiAibm8iLCAodCAmIDB4MTApID8gInllcyIgOiAibm8iKTsKCglwY2lf cmVhZF9jb25maWdfYnl0ZShkZXYsIFZJQV9JREVfQ09ORklHLCAmdCk7Cgl2aWFfcHJpbnQoIlBy ZWZldGNoIEJ1ZmZlcjogICAgICAgJTEwcyUyMHMiLCAodCAmIDB4ODApID8gInllcyIgOiAibm8i LCAodCAmIDB4MjApID8gInllcyIgOiAibm8iKTsKCXZpYV9wcmludCgiUG9zdCBXcml0ZSBCdWZm ZXI6ICAgICAlMTBzJTIwcyIsICh0ICYgMHg0MCkgPyAieWVzIiA6ICJubyIsICh0ICYgMHgxMCkg PyAieWVzIiA6ICJubyIpOwoKCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldiwgVklBX0lERV9FTkFC TEUsICZ0KTsKCXZpYV9wcmludCgiRW5hYmxlZDogICAgICAgICAgICAgICAlMTBzJTIwcyIsICh0 ICYgMHgwMikgPyAieWVzIiA6ICJubyIsICh0ICYgMHgwMSkgPyAieWVzIiA6ICJubyIpOwoKCWMg PSBpbmIodmlhX2Jhc2UgKyAweDAyKSB8IChpbmIodmlhX2Jhc2UgKyAweDBhKSA8PCA4KTsKCXZp YV9wcmludCgiU2ltcGxleCBvbmx5OiAgICAgICAgICAlMTBzJTIwcyIsIChjICYgMHg4MCkgPyAi eWVzIiA6ICJubyIsIChjICYgMHg4MDAwKSA/ICJ5ZXMiIDogIm5vIik7CgoJdmlhX3ByaW50KCJD YWJsZSBUeXBlOiAgICAgICAgICAgICUxMHMlMjBzIiwgKHZpYV84MHcgJiAxKSA/ICI4MHciIDog IjQwdyIsICh2aWFfODB3ICYgMikgPyAiODB3IiA6ICI0MHciKTsKCglpZiAoIXZpYV9jbG9jaykK CQlyZXR1cm4gcCAtIGJ1ZmZlcjsKCgl2aWFfcHJpbnQoIi0tLS0tLS0tLS0tLS0tLS0tLS1kcml2 ZTAtLS0tZHJpdmUxLS0tLWRyaXZlMi0tLS1kcml2ZTMtLS0tLSIpOwoKCXBjaV9yZWFkX2NvbmZp Z19ieXRlKGRldiwgVklBX0FERFJFU1NfU0VUVVAsICZ0KTsKCXBjaV9yZWFkX2NvbmZpZ19kd29y ZChkZXYsIFZJQV9EUklWRV9USU1JTkcsICZ2KTsKCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwg VklBXzhCSVRfVElNSU5HLCAmdyk7CgoJaWYgKHZpYV9jb25maWctPmZsYWdzICYgVklBX1VETUEp CgkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgVklBX1VETUFfVElNSU5HLCAmdSk7CgllbHNl IHUgPSAwOwoKCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKCgkJc2V0dXBbaV0gICAgID0gKCh0 ID4+ICgoMyAtIGkpIDw8IDEpKSAmIDB4MykgKyAxOwoJCXJlY292ZXI4YltpXSA9ICgodyA+PiAo KDEgLSAoaSA+PiAxKSkgPDwgMykpICYgMHhmKSArIDE7CgkJYWN0aXZlOGJbaV0gID0gKCh3ID4+ ICgoKDEgLSAoaSA+PiAxKSkgPDwgMykgKyA0KSkgJiAweGYpICsgMTsKCQlhY3RpdmVbaV0gICAg PSAoKHYgPj4gKCgoMyAtIGkpIDw8IDMpICsgNCkpICYgMHhmKSArIDE7CgkJcmVjb3ZlcltpXSAg ID0gKCh2ID4+ICgoMyAtIGkpIDw8IDMpKSAmIDB4ZikgKyAxOwoJCXVkbWFbaV0gICAgICA9ICgo dSA+PiAoKDMgLSBpKSA8PCAzKSkgJiAweDcpICsgMjsKCQl1bXVsW2ldICAgICAgPSAoKHUgPj4g KCgoMyAtIGkpICYgMikgPDwgMykpICYgMHg4KSA/IDEgOiAyOwoJCXVlbltpXSAgICAgICA9ICh1 ID4+ICgoMyAtIGkpIDw8IDMpKSAmIDB4MjA7CgoJCXNwZWVkW2ldID0gMjAgKiB2aWFfY2xvY2sg LyAoYWN0aXZlW2ldICsgcmVjb3ZlcltpXSk7CgkJY3ljbGVbaV0gPSAxMDAwIC8gdmlhX2Nsb2Nr ICogKGFjdGl2ZVtpXSArIHJlY292ZXJbaV0pOwoKCQlpZiAoIXVlbltpXSkKCQkJY29udGludWU7 CgoJCXN3aXRjaCAodmlhX2NvbmZpZy0+ZmxhZ3MgJiBWSUFfVURNQSkgewoJCQkKCQkJY2FzZSBW SUFfVURNQV8xMDA6CgkJCQlzcGVlZFtpXSA9IDIwMDAgLyB1ZG1hW2ldOwoJCQkJY3ljbGVbaV0g PSAxMCAqIHVkbWFbaV07CgkJCQlicmVhazsKCgkJCWNhc2UgVklBX1VETUFfNjY6CgkJCQlzcGVl ZFtpXSA9IDQwICogdmlhX2Nsb2NrIC8gKHVkbWFbaV0gKiB1bXVsW2ldKTsKCQkJCWN5Y2xlW2ld ID0gNTAwIC8gdmlhX2Nsb2NrICogKHVkbWFbaV0gKiB1bXVsW2ldKTsKCQkJCWJyZWFrOwoKCQkJ Y2FzZSBWSUFfVURNQV8zMzoKCQkJCXNwZWVkW2ldID0gMjAgKiB2aWFfY2xvY2sgLyB1ZG1hW2ld OwoJCQkJY3ljbGVbaV0gPSAxMDAwIC8gdmlhX2Nsb2NrICogdWRtYVtpXTsKCQkJCWJyZWFrOwoJ CX0KCX0KCgl2aWFfcHJpbnRfZHJpdmUoIlRyYW5zZmVyIE1vZGU6ICIsICIlMTBzIiwKCQkJKGMg JiAoKGkgJiAxKSA/IDB4NDAgOiAweDIwKSA8PCAoKGkgJiAyKSA8PCAyKSkgPyAodWVuW2ldID8g IlVETUEiIDogIkRNQSIpIDogIlBJTyIpOwoKCXZpYV9wcmludF9kcml2ZSgiQWRkcmVzcyBTZXR1 cDogIiwgIiU4ZG5zIiwgKDEwMDAgLyB2aWFfY2xvY2spICogc2V0dXBbaV0pOwoJdmlhX3ByaW50 X2RyaXZlKCJDbWQgQWN0aXZlOiAgICAiLCAiJThkbnMiLCAoMTAwMCAvIHZpYV9jbG9jaykgKiBh Y3RpdmU4YltpXSk7Cgl2aWFfcHJpbnRfZHJpdmUoIkNtZCBSZWNvdmVyeTogICIsICIlOGRucyIs ICgxMDAwIC8gdmlhX2Nsb2NrKSAqIHJlY292ZXI4YltpXSk7Cgl2aWFfcHJpbnRfZHJpdmUoIkRh dGEgQWN0aXZlOiAgICIsICIlOGRucyIsICgxMDAwIC8gdmlhX2Nsb2NrKSAqIGFjdGl2ZVtpXSk7 Cgl2aWFfcHJpbnRfZHJpdmUoIkRhdGEgUmVjb3Zlcnk6ICIsICIlOGRucyIsICgxMDAwIC8gdmlh X2Nsb2NrKSAqIHJlY292ZXJbaV0pOwoJdmlhX3ByaW50X2RyaXZlKCJDeWNsZSBUaW1lOiAgICAi LCAiJThkbnMiLCBjeWNsZVtpXSk7Cgl2aWFfcHJpbnRfZHJpdmUoIlRyYW5zZmVyIFJhdGU6ICIs ICIlNGQuJWRNQi9zIiwgc3BlZWRbaV0gLyAxMCwgc3BlZWRbaV0gJSAxMCk7CgoJcmV0dXJuIHAg LSBidWZmZXI7CS8qIGhvcGluZyBpdCBpcyBsZXNzIHRoYW4gNEsuLi4gKi8KfQoKI2VuZGlmCgov KgogKiB2aWFfc2V0X3NwZWVkKCkgd3JpdGVzIHRpbWluZyB2YWx1ZXMgdG8gdGhlIGNoaXBzZXQg cmVnaXN0ZXJzCiAqLwoKc3RhdGljIHZvaWQgdmlhX3NldF9zcGVlZChzdHJ1Y3QgcGNpX2RldiAq ZGV2LCB1bnNpZ25lZCBjaGFyIGRuLCBzdHJ1Y3QgaWRlX3RpbWluZyAqdGltaW5nKQp7Cgl1bnNp Z25lZCBjaGFyIHQ7CgoJcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LCBWSUFfQUREUkVTU19TRVRV UCwgJnQpOwoJdCA9ICh0ICYgfigzIDw8ICgoMyAtIGRuKSA8PCAxKSkpIHwgKChGSVQodGltaW5n LT5zZXR1cCwgMSwgNCkgLSAxKSA8PCAoKDMgLSBkbikgPDwgMSkpOwoJcGNpX3dyaXRlX2NvbmZp Z19ieXRlKGRldiwgVklBX0FERFJFU1NfU0VUVVAsIHQpOwoKCXBjaV93cml0ZV9jb25maWdfYnl0 ZShkZXYsIFZJQV84QklUX1RJTUlORyArICgxIC0gKGRuID4+IDEpKSwKCQkoKEZJVCh0aW1pbmct PmFjdDhiLCAxLCAxNikgLSAxKSA8PCA0KSB8IChGSVQodGltaW5nLT5yZWM4YiwgMSwgMTYpIC0g MSkpOwoKCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIFZJQV9EUklWRV9USU1JTkcgKyAoMyAt IGRuKSwKCQkoKEZJVCh0aW1pbmctPmFjdGl2ZSwgMSwgMTYpIC0gMSkgPDwgNCkgfCAoRklUKHRp bWluZy0+cmVjb3ZlciwgMSwgMTYpIC0gMSkpOwoKCXN3aXRjaCAodmlhX2NvbmZpZy0+ZmxhZ3Mg JiBWSUFfVURNQSkgewoJCWNhc2UgVklBX1VETUFfMzM6ICB0ID0gdGltaW5nLT51ZG1hID8gKDB4 ZTAgfCAoRklUKHRpbWluZy0+dWRtYSwgMiwgNSkgLSAyKSkgOiAweDAzOyBicmVhazsKCQljYXNl IFZJQV9VRE1BXzY2OiAgdCA9IHRpbWluZy0+dWRtYSA/ICgweGU4IHwgKEZJVCh0aW1pbmctPnVk bWEsIDIsIDkpIC0gMikpIDogMHgwZjsgYnJlYWs7CgkJY2FzZSBWSUFfVURNQV8xMDA6IHQgPSB0 aW1pbmctPnVkbWEgPyAoMHhlMCB8IChGSVQodGltaW5nLT51ZG1hLCAyLCA5KSAtIDIpKSA6IDB4 MDc7IGJyZWFrOwoJCWRlZmF1bHQ6IHJldHVybjsKCX0KCglwY2lfd3JpdGVfY29uZmlnX2J5dGUo ZGV2LCBWSUFfVURNQV9USU1JTkcgKyAoMyAtIGRuKSwgdCk7Cn0KCi8qCiAqIHZpYV9jYWxpYnJh dGVfcGNpX2Nsb2NrKCkgY2FsaWJyYXRlcyB0aGUgUENJIGNsb2NrIHVzaW5nIElERU5USUZZIHRy YW5zZmVycwogKiBpbiBQSU8gbW9kZS4gIEl0IGRvZXMgdGhpcyBieSBtZWFzdXJpbmcgdGhlIHRp bWUgaXQgdGFrZXMgdG8gdHJhbnNmZXIgdGhlIHNlY3RvcgogKiBhdCBQSU9fU0xPVyBzcGVlZC4K ICovCgpzdGF0aWMgaW50IHZpYV9jYWxpYnJhdGVfcGNpX2Nsb2NrKGlkZV9kcml2ZV90ICpkcml2 ZSkKewoJc3RydWN0IGlkZV90aW1pbmcgdDsKCWludCB0aW1lLCBjbG9jaywgc3BlZWQ7CgkKCXBy aW50ayhLRVJOX0lORk8gIlZQX0lERTogQ2FsaWJyYXRpbmcgUENJIGNsb2NrIC4uLiIpOwoKCWNs b2NrID0gaWRlX3RpbWluZ19jYWxpYnJhdGVfdGltZXIoKTsKCWlkZV90aW1pbmdfY29tcHV0ZShk cml2ZSwgWEZFUl9QSU9fU0xPVywgJnQsIDIwLCAxMCk7CQkvKiBBc3N1bWUgNTAgTUh6IFBDSSBt YXggKi8KCgl2aWFfc2V0X3NwZWVkKEhXSUYoZHJpdmUpLT5wY2lfZGV2LCBkcml2ZS0+ZG4sICZ0 KTsKCWlmICgodGltZSA9IGlkZV90aW1pbmdfbWVhc3VyZV94ZmVyKGRyaXZlKSkgPD0gMCkgewkJ LyogTWVhc3VyZW1lbnQgZmFpbGVkICovCgkJcHJpbnRrKCIgZmFpbGVkLlxuIik7CgkJcmV0dXJu IHN5c3RlbV9idXNfY2xvY2soKTsKCX0KCglzcGVlZCA9IGNsb2NrICogMjU2IC8gdGltZSAqCQkJ CQkvKiAyNTYgd29yZHMsIDMyIFBDSSBjbG9ja3MgcGVyIHdvcmQgKi8KCQkodmlhX2NvbmZpZy0+ ZmxhZ3MgJiBWSUFfQkFEX1BJTyA/IDI2IDogMzIpOwkJLyogUElPIHByb2dyYW1taW5nIGRvZXNu J3Qgd29yayAqLwoKCXByaW50aygiICVkLiUwMmQgTUh6XG4iLCBzcGVlZCAvIDEwMDAsIHNwZWVk ICUgMTAwMCAvIDEwKTsKCglyZXR1cm4gKHNwZWVkICsgNTAwKSAvIDEwMDA7Cn0JCgovKgogKiB2 aWFfc2V0X2RyaXZlKCkgY29tcHV0ZXMgdGltaW5nIHZhbHVlcyBjb25maWd1cmVzIHRoZSBkcml2 ZSBhbmQKICogdGhlIGNoaXBzZXQgdG8gYSBkZXNpcmVkIHRyYW5zZmVyIG1vZGUuIEl0IGFsc28g Y2FuIGJlIGNhbGxlZAogKiBieSB1cHBlciBsYXllcnMuCiAqLwoKc3RhdGljIGludCB2aWFfc2V0 X2RyaXZlKGlkZV9kcml2ZV90ICpkcml2ZSwgdW5zaWduZWQgY2hhciBzcGVlZCkKewoJaWRlX2Ry aXZlX3QgKnBlZXIgPSBIV0lGKGRyaXZlKS0+ZHJpdmVzICsgKH5kcml2ZS0+ZG4gJiAxKTsKCXN0 cnVjdCBpZGVfdGltaW5nIHQsIHA7CglpbnQgVCwgVVQ7CgoJaWYgKCF2aWFfY2xvY2spCgkJdmlh X2Nsb2NrID0gdmlhX2NhbGlicmF0ZV9wY2lfY2xvY2soZHJpdmUpOwoKCWlmIChzcGVlZCAhPSBY RkVSX1BJT19TTE9XICYmIHNwZWVkICE9IGRyaXZlLT5jdXJyZW50X3NwZWVkKQoJCWlmIChpZGVf Y29uZmlnX2RyaXZlX3NwZWVkKGRyaXZlLCBzcGVlZCkpCgkJCXByaW50ayhLRVJOX1dBUk5JTkcg ImlkZSVkOiBEcml2ZSAlZCBkaWRuJ3QgYWNjZXB0IHNwZWVkIHNldHRpbmcuIE9oLCB3ZWxsLlxu IiwKCQkJCWRyaXZlLT5kbiA+PiAxLCBkcml2ZS0+ZG4gJiAxKTsKCglUID0gMTAwMCAvIHZpYV9j bG9jazsKCglzd2l0Y2ggKHZpYV9jb25maWctPmZsYWdzICYgVklBX1VETUEpIHsKCQljYXNlIFZJ QV9VRE1BXzMzOiAgIFVUID0gVDsgICBicmVhazsKCQljYXNlIFZJQV9VRE1BXzY2OiAgIFVUID0g VC8yOyBicmVhazsKCQljYXNlIFZJQV9VRE1BXzEwMDogIFVUID0gMTA7ICBicmVhazsKCQlkZWZh dWx0OgkgICAgVVQgPSBUOyAgIGJyZWFrOwoJfQoKCWlkZV90aW1pbmdfY29tcHV0ZShkcml2ZSwg c3BlZWQsICZ0LCBULCBVVCk7CgoJaWYgKHBlZXItPnByZXNlbnQpIHsKCQlpZGVfdGltaW5nX2Nv bXB1dGUocGVlciwgcGVlci0+Y3VycmVudF9zcGVlZCwgJnAsIFQsIFVUKTsKCQlpZGVfdGltaW5n X21lcmdlKCZwLCAmdCwgJnQsIElERV9USU1JTkdfOEJJVCk7Cgl9CgoJdmlhX3NldF9zcGVlZChI V0lGKGRyaXZlKS0+cGNpX2RldiwgZHJpdmUtPmRuLCAmdCk7CgoJaWYgKCFkcml2ZS0+aW5pdF9z cGVlZCkKCQlkcml2ZS0+aW5pdF9zcGVlZCA9IHNwZWVkOwoJZHJpdmUtPmN1cnJlbnRfc3BlZWQg PSBzcGVlZDsKCglyZXR1cm4gMDsKfQoKLyoKICogdmlhODJjeHh4X3R1bmVfZHJpdmUoKSBpcyBh IGNhbGxiYWNrIGZyb20gdXBwZXIgbGF5ZXJzIGZvcgogKiBQSU8tb25seSB0dW5pbmcuCiAqLwoK c3RhdGljIHZvaWQgdmlhODJjeHh4X3R1bmVfZHJpdmUoaWRlX2RyaXZlX3QgKmRyaXZlLCB1bnNp Z25lZCBjaGFyIHBpbykKewoJaWYgKCEoKHZpYV9lbmFibGVkID4+IEhXSUYoZHJpdmUpLT5jaGFu bmVsKSAmIDEpKQoJCXJldHVybjsKCglpZiAocGlvID09IDI1NSkgewoJCXZpYV9zZXRfZHJpdmUo ZHJpdmUsIGlkZV9maW5kX2Jlc3RfbW9kZShkcml2ZSwgWEZFUl9QSU8gfCBYRkVSX0VQSU8pKTsK CQlyZXR1cm47Cgl9CgoJdmlhX3NldF9kcml2ZShkcml2ZSwgWEZFUl9QSU9fMCArIE1JTihwaW8s IDUpKTsKfQoKI2lmZGVmIENPTkZJR19CTEtfREVWX0lERURNQQoKLyoKICogdmlhODJjeHh4X2Rt YXByb2MoKSBpcyBhIGNhbGxiYWNrIGZyb20gdXBwZXIgbGF5ZXJzIHRoYXQgY2FuIGRvCiAqIGEg bG90LCBidXQgd2UgdXNlIGl0IGZvciBETUEvUElPIHR1bmluZyBvbmx5LCBkZWxlZ2F0aW5nIGV2 ZXJ5dGhpbmcKICogZWxzZSB0byB0aGUgZGVmYXVsdCBpZGVfZG1hcHJvYygpLgogKi8KCmludCB2 aWE4MmN4eHhfZG1hcHJvYyhpZGVfZG1hX2FjdGlvbl90IGZ1bmMsIGlkZV9kcml2ZV90ICpkcml2 ZSkKewoKCWlmIChmdW5jID09IGlkZV9kbWFfY2hlY2spIHsKCgkJc2hvcnQgdzgwID0gSFdJRihk cml2ZSktPnVkbWFfZm91cjsKCgkJc2hvcnQgc3BlZWQgPSBpZGVfZmluZF9iZXN0X21vZGUoZHJp dmUsCgkJCVhGRVJfUElPIHwgWEZFUl9FUElPIHwgWEZFUl9TV0RNQSB8IFhGRVJfTVdETUEgfAoJ CQkodmlhX2NvbmZpZy0+ZmxhZ3MgJiBWSUFfVURNQSA/IFhGRVJfVURNQSA6IDApIHwKCQkJKHc4 MCAmJiAodmlhX2NvbmZpZy0+ZmxhZ3MgJiBWSUFfVURNQSkgPj0gVklBX1VETUFfNjYgPyBYRkVS X1VETUFfNjYgOiAwKSB8CgkJCSh3ODAgJiYgKHZpYV9jb25maWctPmZsYWdzICYgVklBX1VETUEp ID49IFZJQV9VRE1BXzEwMCA/IFhGRVJfVURNQV8xMDAgOiAwKSk7CgoJCWZ1bmMgPSAoKHNwZWVk ICYgWEZFUl9NT0RFKSAhPSBYRkVSX1BJTykgPyBpZGVfZG1hX29uIDogaWRlX2RtYV9vZmZfcXVp ZXRseTsKCgkJdmlhX3NldF9kcml2ZShkcml2ZSwgc3BlZWQpOwoJfQoKCXJldHVybiBpZGVfZG1h cHJvYyhmdW5jLCBkcml2ZSk7Cn0KCiNlbmRpZiAvKiBDT05GSUdfQkxLX0RFVl9JREVETUEgKi8K Ci8qCiAqIFRoZSBpbml0aWFsaXphdGlvbiBjYWxsYmFjay4gSGVyZSB3ZSBkZXRlcm1pbmUgdGhl IElERSBjaGlwIHR5cGUKICogYW5kIGluaXRpYWxpemUgaXRzIGRyaXZlIGluZGVwZW5kZW50IHJl Z2lzdGVycy4KICovCgp1bnNpZ25lZCBpbnQgX19pbml0IHBjaV9pbml0X3ZpYTgyY3h4eChzdHJ1 Y3QgcGNpX2RldiAqZGV2LCBjb25zdCBjaGFyICpuYW1lKQp7CglzdHJ1Y3QgcGNpX2RldiAqaXNh ID0gTlVMTDsKCXVuc2lnbmVkIGNoYXIgdCwgdjsKCXVuc2lnbmVkIGludCB1OwoJaW50IGk7Cgov KgogKiBGaW5kIHRoZSBJU0EgYnJpZGdlIHRvIHNlZSBob3cgZ29vZCB0aGUgSURFIGlzLgogKi8K Cglmb3IgKHZpYV9jb25maWcgPSB2aWFfaXNhX2JyaWRnZXM7IHZpYV9jb25maWctPmlkOyB2aWFf Y29uZmlnKyspCgkJaWYgKChpc2EgPSBwY2lfZmluZF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9WSUEs IHZpYV9jb25maWctPmlkLCBOVUxMKSkpIHsKCQkJcGNpX3JlYWRfY29uZmlnX2J5dGUoaXNhLCBQ Q0lfUkVWSVNJT05fSUQsICZ0KTsKCQkJaWYgKHQgPj0gdmlhX2NvbmZpZy0+cmV2X21pbiAmJiB0 IDw9IHZpYV9jb25maWctPnJldl9tYXgpCgkJCQlicmVhazsKCQl9CgoJaWYgKCF2aWFfY29uZmln LT5pZCkgewoJCXByaW50ayhLRVJOX1dBUk5JTkcgIlZQX0lERTogVW5rbm93biBWSUEgU291dGhC cmlkZ2UsIGNvbnRhY3QgVm9qdGVjaCBQYXZsaWsgPHZvanRlY2hAc3VzZS5jej5cbiIpOwoJCXJl dHVybiAtRU5PREVWOwoJfQoKLyoKICogQ2hlY2sgODAtd2lyZSBjYWJsZSBwcmVzZW5jZSBhbmQg c2V0dXAgQ2xrNjYuCiAqLwoKCXN3aXRjaCAodmlhX2NvbmZpZy0+ZmxhZ3MgJiBWSUFfVURNQSkg ewoKCQljYXNlIFZJQV9VRE1BXzEwMDoKCgkJCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYsIFZJ QV9VRE1BX1RJTUlORywgJnUpOwoJCQlmb3IgKGkgPSAyNDsgaSA+PSAwOyBpIC09IDgpCgkJCQlp ZiAoKCh1ID4+IGkpICYgMHgxMCkgfHwgKCgodSA+PiBpKSAmIDB4MjApICYmICgoKHUgPj4gaSkg JiA3KSA8IDMpKSkKCQkJCQl2aWFfODB3IHw9ICgxIDw8ICgxIC0gKGkgPj4gNCkpKTsJLyogQklP UyA4MC13aXJlIGJpdCBvciBVRE1BIHcvIDwgNTBucy9jeWNsZSAqLwoJCQlicmVhazsKCgkJY2Fz ZSBWSUFfVURNQV82NjoKCgkJCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYsIFZJQV9VRE1BX1RJ TUlORywgJnUpOwkvKiBFbmFibGUgQ2xrNjYgKi8KCQkJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChk ZXYsIFZJQV9VRE1BX1RJTUlORywgdSB8IDB4ODAwMDgpOwoJCQlmb3IgKGkgPSAyNDsgaSA+PSAw OyBpIC09IDgpCgkJCQlpZiAoKCh1ID4+IChpICYgMTYpKSAmIDgpICYmICgodSA+PiBpKSAmIDB4 MjApICYmICgoKHUgPj4gaSkgJiA3KSA8IDIpKQoJCQkJCXZpYV84MHcgfD0gKDEgPDwgKDEgLSAo aSA+PiA0KSkpOwkvKiAyeCBQQ0kgY2xvY2sgYW5kIFVETUEgdy8gPCAzVC9jeWNsZSAqLwoJCQli cmVhazsKCX0KCglpZiAodmlhX2NvbmZpZy0+ZmxhZ3MgJiBWSUFfQkFEX0NMSzY2KSB7CQkJCS8q IERpc2FibGUgQ2xrNjYgKi8KCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2LCBWSUFfVURNQV9U SU1JTkcsICZ1KTsJCS8qIFdvdWxkIGNhdXNlIENSQyBlcnJvcnMgKi8KCQlwY2lfd3JpdGVfY29u ZmlnX2R3b3JkKGRldiwgVklBX1VETUFfVElNSU5HLCB1ICYgfjB4ODAwMDgpOwoJfQoKLyoKICog Q2hlY2sgd2hldGhlciBpbnRlcmZhY2VzIGFyZSBlbmFibGVkLgogKi8KCglwY2lfcmVhZF9jb25m aWdfYnl0ZShkZXYsIFZJQV9JREVfRU5BQkxFLCAmdik7Cgl2aWFfZW5hYmxlZCA9ICgodiAmIDEp ID8gMiA6IDApIHwgKCh2ICYgMikgPyAxIDogMCk7CgovKgogKiBTZXQgdXAgRklGTyBzaXplcyBh bmQgdGhyZXNob2xkcy4KICovCgoJcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LCBWSUFfRklGT19D T05GSUcsICZ0KTsKCglpZiAodmlhX2NvbmZpZy0+ZmxhZ3MgJiBWSUFfQkFEX1BSRVEpCQkJCS8q IERpc2FibGUgUFJFUSMgdGlsbCBEREFDSyMgKi8KCQl0ICY9IDB4N2Y7CQkJCQkJLyogV291bGQg Y3Jhc2ggKi8KCglpZiAodmlhX2NvbmZpZy0+ZmxhZ3MgJiBWSUFfU0VUX0ZJRk8pIHsJCQkJLyog Rml4IEZJRk8gc3BsaXQgYmV0d2VlbiBjaGFubmVscyAqLwoJCXQgJj0gKHQgJiAweDlmKTsKCQlz d2l0Y2ggKHZpYV9lbmFibGVkKSB7CgkJCWNhc2UgMTogdCB8PSAweDAwOyBicmVhazsJCQkvKiAx NiBvbiBwcmltYXJ5ICovCgkJCWNhc2UgMjogdCB8PSAweDYwOyBicmVhazsJCQkvKiAxNiBvbiBz ZWNvbmRhcnkgKi8KCQkJY2FzZSAzOiB0IHw9IDB4MjA7IGJyZWFrOwkJCS8qIDggcHJpIDggc2Vj ICovCgkJfQoJfQoKCWlmICh2aWFfY29uZmlnLT5mbGFncyAmIFZJQV9TRVRfVEhSRVNIKQkJCQkv KiAxLzIgRklGTyBmdWxsIHRvIHRyaWdnZXIgeG1pdCAqLwoJCXQgPSAodCAmIDB4ZjApIHwgMHgw YTsKCglwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBWSUFfRklGT19DT05GSUcsIHQpOwoKLyoK ICogUHJpbnQgdGhlIGJvb3QgbWVzc2FnZS4KICovCgoJcGNpX3JlYWRfY29uZmlnX2J5dGUoaXNh LCBQQ0lfUkVWSVNJT05fSUQsICZ0KTsKCXByaW50ayhLRVJOX0lORk8gIlZQX0lERTogVklBICVz IChyZXYgJTAyeCkgSURFICVzIGNvbnRyb2xsZXIgb24gcGNpJXNcbiIsCgkJCXZpYV9jb25maWct Pm5hbWUsIHQsIHZpYV9kbWFbdmlhX2NvbmZpZy0+ZmxhZ3MgJiBWSUFfVURNQV0sIGRldi0+c2xv dF9uYW1lKTsKCi8qCiAqIFNldHVwIC9wcm9jL2lkZS92aWEgZW50cnkuCiAqLwoKI2lmZGVmIENP TkZJR19QUk9DX0ZTCglpZiAoIXZpYV9wcm9jKSB7CgkJdmlhX2Jhc2UgPSBwY2lfcmVzb3VyY2Vf c3RhcnQoZGV2LCA0KTsKCQlibWlkZV9kZXYgPSBkZXY7CgkJaXNhX2RldiA9IGlzYTsKCQl2aWFf ZGlzcGxheV9pbmZvID0gJnZpYV9nZXRfaW5mbzsKCQl2aWFfcHJvYyA9IDE7Cgl9CiNlbmRpZgoK CXJldHVybiAwOwp9Cgp1bnNpZ25lZCBpbnQgX19pbml0IGF0YTY2X3ZpYTgyY3h4eChpZGVfaHdp Zl90ICpod2lmKQp7CglyZXR1cm4gKCh2aWFfZW5hYmxlZCAmIHZpYV84MHcpID4+IGh3aWYtPmNo YW5uZWwpICYgMTsKfQoKdm9pZCBfX2luaXQgaWRlX2luaXRfdmlhODJjeHh4KGlkZV9od2lmX3Qg Kmh3aWYpCnsKCWludCBpOwoKCWh3aWYtPnR1bmVwcm9jID0gJnZpYTgyY3h4eF90dW5lX2RyaXZl OwoJaHdpZi0+c3BlZWRwcm9jID0gJnZpYV9zZXRfZHJpdmU7Cglod2lmLT5hdXRvZG1hID0gMDsK Cglmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CgkJaHdpZi0+ZHJpdmVzW2ldLmlvXzMyYml0ID0g MTsKCQlod2lmLT5kcml2ZXNbaV0udW5tYXNrID0gMTsKCQlod2lmLT5kcml2ZXNbaV0uYXV0b3R1 bmUgPSAxOwoJCWh3aWYtPmRyaXZlc1tpXS5kbiA9IGh3aWYtPmNoYW5uZWwgKiAyICsgaTsKCX0K CiNpZmRlZiBDT05GSUdfQkxLX0RFVl9JREVETUEKCWlmIChod2lmLT5kbWFfYmFzZSkgewoJCWh3 aWYtPmRtYXByb2MgPSAmdmlhODJjeHh4X2RtYXByb2M7CiNpZmRlZiBDT05GSUdfSURFRE1BX0FV VE8KCQlod2lmLT5hdXRvZG1hID0gMTsKI2VuZGlmCgl9CiNlbmRpZiAvKiBDT05GSUdfQkxLX0RF Vl9JREVETUEgKi8KfQoKLyoKICogV2UgYWxsb3cgdGhlIEJNLURNQSBkcml2ZXIgdG8gb25seSB3 b3JrIG9uIGVuYWJsZWQgaW50ZXJmYWNlcy4KICovCgp2b2lkIF9faW5pdCBpZGVfZG1hY2FwYWJs ZV92aWE4MmN4eHgoaWRlX2h3aWZfdCAqaHdpZiwgdW5zaWduZWQgbG9uZyBkbWFiYXNlKQp7Cglp ZiAoKHZpYV9lbmFibGVkID4+IGh3aWYtPmNoYW5uZWwpICYgMSkKCQlpZGVfc2V0dXBfZG1hKGh3 aWYsIGRtYWJhc2UsIDgpOwp9CgA= --------------Boundary-00=_9Z839Q8GI3BJSC6EHLUO Content-Type: text/english; name="ide-timing.h" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ide-timing.h" I2lmbmRlZiBfSURFX1RJTUlOR19ICiNkZWZpbmUgX0lERV9USU1JTkdfSAoKLyoKICogJElkOiBp ZGUtdGltaW5nLmgsdiAyLjAgMjAwMS8wMi8wOCAxOTozMjo1NiB2b2p0ZWNoIEV4cCAkCiAqCiAq ICBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMCBWb2p0ZWNoIFBhdmxpawogKgogKiAgU3BvbnNvcmVk IGJ5IFN1U0UKICovCgovKgogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogKiB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgogKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQogKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQogKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg UGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQogKgogKiBTaG91bGQg eW91IG5lZWQgdG8gY29udGFjdCBtZSwgdGhlIGF1dGhvciwgeW91IGNhbiBkbyBzbyBlaXRoZXIg YnkKICogZS1tYWlsIC0gbWFpbCB5b3VyIG1lc3NhZ2UgdG8gPHZvanRlY2hAc3VzZS5jej4sIG9y IGJ5IHBhcGVyIG1haWw6CiAqIFZvanRlY2ggUGF2bGlrLCBVY2l0ZWxza2EgMTU3NiwgUHJhZ3Vl IDgsIDE4MiAwMCBDemVjaCBSZXB1YmxpYwogKi8KCiNpbmNsdWRlIDxsaW51eC9oZHJlZy5oPgoj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4KCiNkZWZpbmUgWEZFUl9QSU9fNQkJMHgwZAojZGVmaW5l IFhGRVJfVURNQV9TTE9XCQkweDRmCgpzdHJ1Y3QgaWRlX3RpbWluZyB7CglzaG9ydCBtb2RlOwoJ c2hvcnQgc2V0dXA7CS8qIHQxICovCglzaG9ydCBhY3Q4YjsJLyogdDIgZm9yIDgtYml0IGlvICov CglzaG9ydCByZWM4YjsJLyogdDJpIGZvciA4LWJpdCBpbyAqLwoJc2hvcnQgY3ljOGI7CS8qIHQw IGZvciA4LWJpdCBpbyAqLwoJc2hvcnQgYWN0aXZlOwkvKiB0MiBvciB0RCAqLwoJc2hvcnQgcmVj b3ZlcjsJLyogdDJpIG9yIHRLICovCglzaG9ydCBjeWNsZTsJLyogdDAgKi8KCXNob3J0IHVkbWE7 CS8qIHQyQ1lDVFlQLzIgKi8KfTsKCi8qCiAqIFBJTyAwLTUsIE1XRE1BIDAtMiBhbmQgVURNQSAw LTUgdGltaW5ncyAoaW4gbmFub3NlY29uZHMpLgogKiBUaGVzZSB3ZXJlIHRha2VuIGZyb20gQVRB L0FUQVBJLTYgc3RhbmRhcmQsIHJldiAwYSwgZXhjZXB0CiAqIGZvciBQSU8gNSwgd2hpY2ggaXMg YSBub25zdGFuZGFyZCBleHRlbnNpb24uCiAqLwoKc3RhdGljIHN0cnVjdCBpZGVfdGltaW5nIGlk ZV90aW1pbmdbXSA9IHsKCgl7IFhGRVJfVURNQV81LCAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw LCAgIDAsICAgMCwgIDIwIH0sCgl7IFhGRVJfVURNQV80LCAgICAgMCwgICAwLCAgIDAsICAgMCwg ICAwLCAgIDAsICAgMCwgIDMwIH0sCgl7IFhGRVJfVURNQV8zLCAgICAgMCwgICAwLCAgIDAsICAg MCwgICAwLCAgIDAsICAgMCwgIDQ1IH0sCgoJeyBYRkVSX1VETUFfMiwgICAgIDAsICAgMCwgICAw LCAgIDAsICAgMCwgICAwLCAgIDAsICA2MCB9LAoJeyBYRkVSX1VETUFfMSwgICAgIDAsICAgMCwg ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICA4MCB9LAoJeyBYRkVSX1VETUFfMCwgICAgIDAsICAg MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIDEyMCB9LAoKCXsgWEZFUl9VRE1BX1NMT1csICAw LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAxNTAgfSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCgl7IFhGRVJfTVdfRE1BXzIsICAyNSwgICAwLCAgIDAs ICAgMCwgIDcwLCAgMjUsIDEyMCwgICAwIH0sCgl7IFhGRVJfTVdfRE1BXzEsICA0NSwgICAwLCAg IDAsICAgMCwgIDgwLCAgNTAsIDE1MCwgICAwIH0sCgl7IFhGRVJfTVdfRE1BXzAsICA2MCwgICAw LCAgIDAsICAgMCwgMjE1LCAyMTUsIDQ4MCwgICAwIH0sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAoJeyBYRkVSX1NXX0RNQV8yLCAgNjAsICAgMCwgICAwLCAgIDAs IDEyMCwgMTIwLCAyNDAsICAgMCB9LAoJeyBYRkVSX1NXX0RNQV8xLCAgOTAsICAgMCwgICAwLCAg IDAsIDI0MCwgMjQwLCA0ODAsICAgMCB9LAoJeyBYRkVSX1NXX0RNQV8wLCAxMjAsICAgMCwgICAw LCAgIDAsIDQ4MCwgNDgwLCA5NjAsICAgMCB9LAoKCXsgWEZFUl9QSU9fNSwgICAgIDIwLCAgNTAs ICAzMCwgMTAwLCAgNTAsICAzMCwgMTAwLCAgIDAgfSwKCXsgWEZFUl9QSU9fNCwgICAgIDI1LCAg NzAsICAyNSwgMTIwLCAgNzAsICAyNSwgMTIwLCAgIDAgfSwKCXsgWEZFUl9QSU9fMywgICAgIDMw LCAgODAsICA3MCwgMTgwLCAgODAsICA3MCwgMTgwLCAgIDAgfSwKCgl7IFhGRVJfUElPXzIsICAg ICAzMCwgMjkwLCAgNDAsIDMzMCwgMTAwLCAgOTAsIDI0MCwgICAwIH0sCgl7IFhGRVJfUElPXzEs ICAgICA1MCwgMjkwLCAgOTMsIDM4MywgMTI1LCAxMDAsIDM4MywgICAwIH0sCgl7IFhGRVJfUElP XzAsICAgICA3MCwgMjkwLCAyNDAsIDYwMCwgMTY1LCAxNTAsIDYwMCwgICAwIH0sCgoJeyBYRkVS X1BJT19TTE9XLCAxMjAsIDI5MCwgMjQwLCA5NjAsIDI5MCwgMjQwLCA5NjAsICAgMCB9LAoKCXsg LTEgfQp9OwoKI2RlZmluZSBJREVfVElNSU5HX1NFVFVQCTB4MDEKI2RlZmluZSBJREVfVElNSU5H X0FDVDhCCTB4MDIKI2RlZmluZSBJREVfVElNSU5HX1JFQzhCCTB4MDQKI2RlZmluZSBJREVfVElN SU5HX0NZQzhCCTB4MDgKI2RlZmluZSBJREVfVElNSU5HXzhCSVQJCTB4MGUKI2RlZmluZSBJREVf VElNSU5HX0FDVElWRQkweDEwCiNkZWZpbmUgSURFX1RJTUlOR19SRUNPVkVSCTB4MjAKI2RlZmlu ZSBJREVfVElNSU5HX0NZQ0xFCTB4NDAKI2RlZmluZSBJREVfVElNSU5HX1VETUEJCTB4ODAKI2Rl ZmluZSBJREVfVElNSU5HX0FMTAkJMHhmZgoKI2RlZmluZSBNSU4oYSxiKQkoKGEpPChiKT8oYSk6 KGIpKQojZGVmaW5lIE1BWChhLGIpCSgoYSk+KGIpPyhhKTooYikpCiNkZWZpbmUgRklUKHYsbWlu LG1heCkJTUFYKE1JTih2LG1heCksbWluKQojZGVmaW5lIEVOT1VHSCh2LHVuaXQpCSgoKHYpLTEp Lyh1bml0KSsxKQojZGVmaW5lIEVaKHYsdW5pdCkJKCh2KT9FTk9VR0godix1bml0KTowKQoKI2Rl ZmluZSBYRkVSX01PREUJMHhmMAojZGVmaW5lIFhGRVJfVURNQV8xMDAJMHg0NAojZGVmaW5lIFhG RVJfVURNQV82NgkweDQyCiNkZWZpbmUgWEZFUl9VRE1BCTB4NDAKI2RlZmluZSBYRkVSX01XRE1B CTB4MjAKI2RlZmluZSBYRkVSX1NXRE1BCTB4MTAKI2RlZmluZSBYRkVSX0VQSU8JMHgwMQojZGVm aW5lIFhGRVJfUElPCTB4MDAKCnN0YXRpYyBzaG9ydCBpZGVfZmluZF9iZXN0X21vZGUoaWRlX2Ry aXZlX3QgKmRyaXZlLCBpbnQgbWFwKQp7CglzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQgPSBkcml2ZS0+ aWQ7CglzaG9ydCBiZXN0ID0gMDsKCglpZiAoIWlkKQoJCXJldHVybiBYRkVSX1BJT19TTE9XOwoK CWlmICgobWFwICYgWEZFUl9VRE1BKSAmJiAoaWQtPmZpZWxkX3ZhbGlkICYgNCkpIHsJLyogV2Fu dCBVRE1BIGFuZCBVRE1BIGJpdG1hcCB2YWxpZCAqLwoKCQlpZiAoKG1hcCAmIFhGRVJfVURNQV8x MDApID09IFhGRVJfVURNQV8xMDApCgkJCWlmICgoYmVzdCA9IChpZC0+ZG1hX3VsdHJhICYgMHgw MDIwKSA/IFhGRVJfVURNQV81IDogMCkpIHJldHVybiBiZXN0OwoKCQlpZiAoKG1hcCAmIFhGRVJf VURNQV82NikgPT0gWEZFUl9VRE1BXzY2KQoJCQlpZiAoKGJlc3QgPSAoaWQtPmRtYV91bHRyYSAm IDB4MDAxMCkgPyBYRkVSX1VETUFfNCA6CiAgICAgICAgICAgICAgICAJICAgIAkgICAgKGlkLT5k bWFfdWx0cmEgJiAweDAwMDgpID8gWEZFUl9VRE1BXzMgOiAwKSkgcmV0dXJuIGJlc3Q7CgogICAg ICAgICAgICAgICAgaWYgKChiZXN0ID0gKGlkLT5kbWFfdWx0cmEgJiAweDAwMDQpID8gWEZFUl9V RE1BXzIgOgogICAgICAgICAgICAgICAgCSAgICAoaWQtPmRtYV91bHRyYSAmIDB4MDAwMikgPyBY RkVSX1VETUFfMSA6CiAgICAgICAgICAgICAgICAJICAgIChpZC0+ZG1hX3VsdHJhICYgMHgwMDAx KSA/IFhGRVJfVURNQV8wIDogMCkpIHJldHVybiBiZXN0OwoJfQoKCWlmICgobWFwICYgWEZFUl9N V0RNQSkgJiYgKGlkLT5maWVsZF92YWxpZCAmIDIpKSB7CS8qIFdhbnQgTVdETUEgYW5kIGRyaXZl IGhhcyBFSURFIGZpZWxkcyAqLwoKCQlpZiAoKGJlc3QgPSAoaWQtPmRtYV9td29yZCAmIDB4MDAw NCkgPyBYRkVSX01XX0RNQV8yIDoKICAgICAgICAgICAgICAgIAkgICAgKGlkLT5kbWFfbXdvcmQg JiAweDAwMDIpID8gWEZFUl9NV19ETUFfMSA6CiAgICAgICAgICAgICAgICAJICAgIChpZC0+ZG1h X213b3JkICYgMHgwMDAxKSA/IFhGRVJfTVdfRE1BXzAgOiAwKSkgcmV0dXJuIGJlc3Q7Cgl9CgoJ aWYgKG1hcCAmIFhGRVJfU1dETUEpIHsJCQkJCS8qIFdhbnQgU1dETUEgKi8KCiAJCWlmIChpZC0+ ZmllbGRfdmFsaWQgJiAyKSB7CQkJLyogRUlERSBTV0RNQSAqLwoKCQkJaWYgKChiZXN0ID0gKGlk LT5kbWFfMXdvcmQgJiAweDAwMDQpID8gWEZFUl9TV19ETUFfMiA6CiAgICAgIAkJCQkgICAgKGlk LT5kbWFfMXdvcmQgJiAweDAwMDIpID8gWEZFUl9TV19ETUFfMSA6CgkJCQkgICAgKGlkLT5kbWFf MXdvcmQgJiAweDAwMDEpID8gWEZFUl9TV19ETUFfMCA6IDApKSByZXR1cm4gYmVzdDsKCQl9CgoJ CWlmIChpZC0+Y2FwYWJpbGl0eSAmIDEpIHsJCQkvKiBQcmUtRUlERSBzdHlsZSBTV0RNQSAqLwoK CQkJaWYgKChiZXN0ID0gKGlkLT50RE1BID09IDIpID8gWEZFUl9TV19ETUFfMiA6CgkJCQkgICAg KGlkLT50RE1BID09IDEpID8gWEZFUl9TV19ETUFfMSA6CgkJCQkgICAgKGlkLT50RE1BID09IDAp ID8gWEZFUl9TV19ETUFfMCA6IDApKSByZXR1cm4gYmVzdDsKCQl9Cgl9CgoKCWlmICgobWFwICYg WEZFUl9FUElPKSAmJiAoaWQtPmZpZWxkX3ZhbGlkICYgMikpIHsJLyogRUlERSBQSU8gbW9kZXMg Ki8KCgkJaWYgKChiZXN0ID0gKGRyaXZlLT5pZC0+ZWlkZV9waW9fbW9kZXMgJiA0KSA/IFhGRVJf UElPXzUgOgoJCQkgICAgKGRyaXZlLT5pZC0+ZWlkZV9waW9fbW9kZXMgJiAyKSA/IFhGRVJfUElP XzQgOgoJCQkgICAgKGRyaXZlLT5pZC0+ZWlkZV9waW9fbW9kZXMgJiAxKSA/IFhGRVJfUElPXzMg OiAwKSkgcmV0dXJuIGJlc3Q7Cgl9CgkKCXJldHVybiAgKGRyaXZlLT5pZC0+dFBJTyA9PSAyKSA/ IFhGRVJfUElPXzIgOgoJCShkcml2ZS0+aWQtPnRQSU8gPT0gMSkgPyBYRkVSX1BJT18xIDoKCQko ZHJpdmUtPmlkLT50UElPID09IDApID8gWEZFUl9QSU9fMCA6IFhGRVJfUElPX1NMT1c7Cn0KCnN0 YXRpYyB2b2lkIGlkZV90aW1pbmdfcXVhbnRpemUoc3RydWN0IGlkZV90aW1pbmcgKnQsIHN0cnVj dCBpZGVfdGltaW5nICpxLCBpbnQgVCwgaW50IFVUKQp7CglxLT5zZXR1cCAgID0gRVoodC0+c2V0 dXAsICAgVCk7CglxLT5hY3Q4YiAgID0gRVoodC0+YWN0OGIsICAgVCk7CglxLT5yZWM4YiAgID0g RVoodC0+cmVjOGIsICAgVCk7CglxLT5jeWM4YiAgID0gRVoodC0+Y3ljOGIsICAgVCk7CglxLT5h Y3RpdmUgID0gRVoodC0+YWN0aXZlLCAgVCk7CglxLT5yZWNvdmVyID0gRVoodC0+cmVjb3Zlciwg VCk7CglxLT5jeWNsZSAgID0gRVoodC0+Y3ljbGUsICAgVCk7CglxLT51ZG1hICAgID0gRVoodC0+ dWRtYSwgICBVVCk7Cn0KCnN0YXRpYyB2b2lkIGlkZV90aW1pbmdfbWVyZ2Uoc3RydWN0IGlkZV90 aW1pbmcgKmEsIHN0cnVjdCBpZGVfdGltaW5nICpiLCBzdHJ1Y3QgaWRlX3RpbWluZyAqbSwgdW5z aWduZWQgaW50IHdoYXQpCnsKCWlmICh3aGF0ICYgSURFX1RJTUlOR19TRVRVUCAgKSBtLT5zZXR1 cCAgID0gTUFYKGEtPnNldHVwLCAgIGItPnNldHVwKTsKCWlmICh3aGF0ICYgSURFX1RJTUlOR19B Q1Q4QiAgKSBtLT5hY3Q4YiAgID0gTUFYKGEtPmFjdDhiLCAgIGItPmFjdDhiKTsKCWlmICh3aGF0 ICYgSURFX1RJTUlOR19SRUM4QiAgKSBtLT5yZWM4YiAgID0gTUFYKGEtPnJlYzhiLCAgIGItPnJl YzhiKTsKCWlmICh3aGF0ICYgSURFX1RJTUlOR19DWUM4QiAgKSBtLT5jeWM4YiAgID0gTUFYKGEt PmN5YzhiLCAgIGItPmN5YzhiKTsKCWlmICh3aGF0ICYgSURFX1RJTUlOR19BQ1RJVkUgKSBtLT5h Y3RpdmUgID0gTUFYKGEtPmFjdGl2ZSwgIGItPmFjdGl2ZSk7CglpZiAod2hhdCAmIElERV9USU1J TkdfUkVDT1ZFUikgbS0+cmVjb3ZlciA9IE1BWChhLT5yZWNvdmVyLCBiLT5yZWNvdmVyKTsKCWlm ICh3aGF0ICYgSURFX1RJTUlOR19DWUNMRSAgKSBtLT5jeWNsZSAgID0gTUFYKGEtPmN5Y2xlLCAg IGItPmN5Y2xlKTsKCWlmICh3aGF0ICYgSURFX1RJTUlOR19VRE1BICAgKSBtLT51ZG1hICAgID0g TUFYKGEtPnVkbWEsICAgIGItPnVkbWEpOwp9CgpzdGF0aWMgc3RydWN0IGlkZV90aW1pbmcqIGlk ZV90aW1pbmdfZmluZF9tb2RlKHNob3J0IHNwZWVkKQp7CglzdHJ1Y3QgaWRlX3RpbWluZyAqdDsK Cglmb3IgKHQgPSBpZGVfdGltaW5nOyB0LT5tb2RlICE9IHNwZWVkOyB0KyspCgkJaWYgKHQtPm1v ZGUgPCAwKQoJCQlyZXR1cm4gTlVMTDsKCXJldHVybiB0OyAKfQoKc3RhdGljIGludCBpZGVfdGlt aW5nX2NvbXB1dGUoaWRlX2RyaXZlX3QgKmRyaXZlLCBzaG9ydCBzcGVlZCwgc3RydWN0IGlkZV90 aW1pbmcgKnQsIGludCBULCBpbnQgVVQpCnsKCXN0cnVjdCBoZF9kcml2ZWlkICppZCA9IGRyaXZl LT5pZDsKCXN0cnVjdCBpZGVfdGltaW5nICpzLCBwOwoKLyoKICogRmluZCB0aGUgbW9kZS4KICov CgoJaWYgKCEocyA9IGlkZV90aW1pbmdfZmluZF9tb2RlKHNwZWVkKSkpCgkJcmV0dXJuIC1FSU5W QUw7CgovKgogKiBJZiB0aGUgZHJpdmUgaXMgYW4gRUlERSBkcml2ZSwgaXQgY2FuIHRlbGwgdXMg aXQgbmVlZHMgZXh0ZW5kZWQKICogUElPL01XRE1BIGN5Y2xlIHRpbWluZy4KICovCgoJaWYgKGlk ICYmIGlkLT5maWVsZF92YWxpZCAmIDIpIHsJLyogRUlERSBkcml2ZSAqLwoKCQltZW1zZXQoJnAs IDAsIHNpemVvZihwKSk7CgoJCXN3aXRjaCAoc3BlZWQgJiBYRkVSX01PREUpIHsKCgkJCWNhc2Ug WEZFUl9QSU86CgkJCQlpZiAoc3BlZWQgPD0gWEZFUl9QSU9fMikgcC5jeWNsZSA9IHAuY3ljOGIg PSBpZC0+ZWlkZV9waW87CgkJCQkJCSAgICBlbHNlIHAuY3ljbGUgPSBwLmN5YzhiID0gaWQtPmVp ZGVfcGlvX2lvcmR5OwoJCQkJYnJlYWs7CgoJCQljYXNlIFhGRVJfTVdETUE6CgkJCQlwLmN5Y2xl ID0gaWQtPmVpZGVfZG1hX21pbjsKCQkJCWJyZWFrOwoJCX0KCgkJaWRlX3RpbWluZ19tZXJnZSgm cCwgdCwgdCwgSURFX1RJTUlOR19DWUNMRSB8IElERV9USU1JTkdfQ1lDOEIpOwoJfQoKLyoKICog Q29udmVydCB0aGUgdGltaW5nIHRvIGJ1cyBjbG9jayBjb3VudHMuCiAqLwoKCWlkZV90aW1pbmdf cXVhbnRpemUocywgdCwgVCwgVVQpOwoKLyoKICogRXZlbiBpbiBETUEvVURNQSBtb2RlcyB3ZSBz dGlsbCB1c2UgUElPIGFjY2VzcyBmb3IgSURFTlRJRlksIFMuTS5BLlIuVAogKiBhbmQgc29tZSBv dGhlciBjb21tYW5kcy4gV2UgaGF2ZSB0byBlbnN1cmUgdGhhdCB0aGUgRE1BIGN5Y2xlIHRpbWlu ZyBpcwogKiBzbG93ZXIvZXF1YWwgdGhhbiB0aGUgZmFzdGVzdCBQSU8gdGltaW5nLgogKi8KCglp ZiAoKHNwZWVkICYgWEZFUl9NT0RFKSAhPSBYRkVSX1BJTykgewoJCWlkZV90aW1pbmdfY29tcHV0 ZShkcml2ZSwgaWRlX2ZpbmRfYmVzdF9tb2RlKGRyaXZlLCBYRkVSX1BJTyB8IFhGRVJfRVBJTyks ICZwLCBULCBVVCk7CgkJaWRlX3RpbWluZ19tZXJnZSgmcCwgdCwgdCwgSURFX1RJTUlOR19BTEwp OwoJfQoKLyoKICogTGVuZ2h0ZW4gYWN0aXZlICYgcmVjb3ZlcnkgdGltZSBzbyB0aGF0IGN5Y2xl IHRpbWUgaXMgY29ycmVjdC4KICovCgoJaWYgKHQtPmFjdDhiICsgdC0+cmVjOGIgPCB0LT5jeWM4 YikgewoJCXQtPmFjdDhiICs9ICh0LT5jeWM4YiAtICh0LT5hY3Q4YiArIHQtPnJlYzhiKSkgLyAy OwoJCXQtPnJlYzhiID0gdC0+Y3ljOGIgLSB0LT5hY3Q4YjsKCX0KCglpZiAodC0+YWN0aXZlICsg dC0+cmVjb3ZlciA8IHQtPmN5Y2xlKSB7CgkJdC0+YWN0aXZlICs9ICh0LT5jeWNsZSAtICh0LT5h Y3RpdmUgKyB0LT5yZWNvdmVyKSkgLyAyOwoJCXQtPnJlY292ZXIgPSB0LT5jeWNsZSAtIHQtPmFj dGl2ZTsKCX0KCglyZXR1cm4gMDsKfQoKI2lmZGVmIF9faTM4Nl9fCiNpZmRlZiBDT05GSUdfWDg2 X1RTQwojZGVmaW5lIEdFVF9USU1FKHgpICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoICJyZHRz YyIgOiAiPWEiICh4KSA6IDogImR4IiApCiNkZWZpbmUgREVMVEEoeCx5KSAgICAgICgoeSktKHgp KQojZGVmaW5lIFRJTUVfTkFNRSAiVFNDIgojZWxzZQojZGVmaW5lIEdFVF9USU1FKHgpICAgICBk byB7IG91dGIoMCwgMHg0Myk7IHggPSBpbmIoMHg0MCk7IHggfD0gaW5iKDB4NDApIDw8IDg7IH0g d2hpbGUgKDApCiNkZWZpbmUgREVMVEEoeCx5KSAgICAgICgoeCktKHkpKygoeCk8KHkpPzExOTMx ODBML0haOjApKQojZGVmaW5lIFRJTUVfTkFNRSAiUElUIgojZW5kaWYKI2VsaWYgX19hbHBoYV9f CiNkZWZpbmUgR0VUX1RJTUUoeCkgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICggInJwY2MgJTAi IDogIj1yIiAoeCkgKQojZGVmaW5lIERFTFRBKHgseSkgICAgICAoKHkpLSh4KSkKI2RlZmluZSBU SU1FX05BTUUgIlBDQyIKI2VuZGlmCgpzdGF0aWMgdW5zaWduZWQgaW50IGlkZV90aW1pbmdfY2Fs aWJyYXRlX3RpbWVyKHZvaWQpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgdDEsIHQyOwogICAgICAg IHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAgIF9fc2F2ZV9mbGFncyhmbGFncyk7CiAgICAg ICAgX19jbGkoKTsKICAgICAgICBHRVRfVElNRSh0MSk7CiAgICAgICAgdWRlbGF5KDEwMDApOwog ICAgICAgIEdFVF9USU1FKHQyKTsKICAgICAgICBfX3Jlc3RvcmVfZmxhZ3MoZmxhZ3MpOwoKICAg ICAgICByZXR1cm4gREVMVEEodDEsIHQyKTsKfQoKc3RhdGljIGludCBpZGVfdGltaW5nX21lYXN1 cmVfeGZlcihpZGVfZHJpdmVfdCAqZHJpdmUpCnsKCXVuc2lnbmVkIGxvbmcgdGltZW91dCwgZmxh Z3M7CglfX3UzMiBidWZbU0VDVE9SX1dPUkRTICogNF07Cgl1bnNpZ25lZCBpbnQgc3RhcnQsIGVu ZDsKCglpZiAoSURFX0NPTlRST0xfUkVHKQoJCU9VVF9CWVRFKGRyaXZlLT5jdGwsIElERV9DT05U Uk9MX1JFRyk7CgoJaWRlX2RlbGF5XzUwbXMoKTsKCglPVVRfQllURShXSU5fSURFTlRJRlksIElE RV9DT01NQU5EX1JFRyk7CgoJdGltZW91dCA9IGppZmZpZXMgKyBXQUlUX1dPUlNUQ0FTRTsKCWRv IHsKCQlpZiAoMCA8IChzaWduZWQgbG9uZykoamlmZmllcyAtIHRpbWVvdXQpKQoJCQlyZXR1cm4g LTE7CgkJaWRlX2RlbGF5XzUwbXMoKTsKCX0gd2hpbGUgKElOX0JZVEUoSURFX0FMVFNUQVRVU19S RUcpICYgQlVTWV9TVEFUKTsKCglpZGVfZGVsYXlfNTBtcygpOwoKCWlmICghT0tfU1RBVChHRVRf U1RBVCgpLCBEUlFfU1RBVCwgQkFEX1JfU1RBVCkpCgkJcmV0dXJuIC0xOwoKCV9fc2F2ZV9mbGFn cyhmbGFncyk7CglfX2NsaSgpOwoJR0VUX1RJTUUoc3RhcnQpOwkKCWlkZV9pbnB1dF9kYXRhKGRy aXZlLCBidWYsIFNFQ1RPUl9XT1JEUyk7CglHRVRfVElNRShlbmQpOwoJR0VUX1NUQVQoKTsKCV9f cmVzdG9yZV9mbGFncyhmbGFncyk7CQoKCXJldHVybiBERUxUQShzdGFydCwgZW5kKTsKfQoKI2Vu ZGlmCgA= --------------Boundary-00=_9Z839Q8GI3BJSC6EHLUO Content-Type: text/x-c; name="radio-sf16fmd2.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="radio-sf16fmd2.c" LyogU0YxNkZNRDIgcmFkaW8gZHJpdmVyIGZvciBMaW51eCByYWRpbyBzdXBwb3J0CiAqIGhlYXZp bHkgYmFzZWQgb24gcnRyYWNrIGRyaXZlci4uLgogKiAoYykgMTk5NyBNLiBLaXJrd29vZAogKiAo YykgMTk5OCBQZXRyIFZhbmRyb3ZlYywgdmFuZHJvdmVAdmMuY3Z1dC5jegogKgogKiBBZGFwdGVk IGZvciBTRjE2LUZNRDIgYnkgQW5keSBSYW1lbnNreSwgPGFuZHlAY2xocy5raWV2LnVhPgogKgog KiBGaXR0ZWQgdG8gbmV3IGludGVyZmFjZSBieSBBbGFuIENveCA8YWxhbi5jb3hAbGludXgub3Jn PgogKiBNYWRlIHdvcmtpbmcgYW5kIGNsZWFuZWQgdXAgZnVuY3Rpb25zIDxtaWthZWwuaGVkaW5A aXJmLnNlPgogKgogKiBOb3RlcyBvbiB0aGUgaGFyZHdhcmUKICoKICogIEZyZXF1ZW5jeSBjb250 cm9sIGlzIGRvbmUgZGlnaXRhbGx5IC0tIGllIG91dChwb3J0LGVuY29kZWZyZXEoOTUuOCkpOwog KiAgTm8gdm9sdW1lIGNvbnRyb2wgLSBvbmx5IG11dGUvdW5tdXRlIC0geW91IGhhdmUgdG8gdXNl IExJTkUxIHZvbHVtZQogKiAgY29udHJvbCBvbiBTQi1wYXJ0IG9mIFNGMTZGTUQyLgogKiAgU0Yx Ni1GTUQyIHJhZGlvLWNhcmQgc3VwcG9ydCBTQ0FOIGZ1bmN0aW9uIG9uIGhhcmR3YXJlIGxldmVs LiAKICogIFN0YXR1cyBub3Qgc3VwcG9ydGVkIChJIHRoaW5rKSBhbHdheXMgVFVORSAmIFNURVJF TyAhCiAqICAKICovCgojaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CS8qIE1vZHVsZXMgCQkJKi8K I2luY2x1ZGUgPGxpbnV4L2luaXQuaD4JCS8qIEluaXRkYXRhCQkJKi8KI2luY2x1ZGUgPGxpbnV4 L2lvcG9ydC5oPgkvKiBjaGVja19yZWdpb24sIHJlcXVlc3RfcmVnaW9uCSovCiNpbmNsdWRlIDxs aW51eC9kZWxheS5oPgkvKiB1ZGVsYXkJCQkqLwojaW5jbHVkZSA8YXNtL2lvLmg+CQkJLyogb3V0 Yiwgb3V0Yl9wCQkJKi8KI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CS8qIGNvcHkgdG8vZnJvbSB1 c2VyCQkqLwojaW5jbHVkZSA8bGludXgvdmlkZW9kZXYuaD4JLyoga2VybmVsIHJhZGlvIHN0cnVj dHMJCSovCiNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4JLyogQ09ORklHX1JBRElPX1NGMTZGTUQy X1BPUlQgCSovCgpzdHJ1Y3QgZm1kMl9kZXZpY2UKewoJaW50IHBvcnQ7CiAgICAgICAgaW50IGN1 cnZvbDsgLyogMSBvciAwICovCiAgICAgICAgdW5zaWduZWQgbG9uZyBjdXJmcmVxOyAvKiBmcmVx IGluIGtIeiAqLwogICAgICAgIF9fdTMyIGZsYWdzOwp9OwoKI2lmbmRlZiBDT05GSUdfUkFESU9f U0YxNkZNRDJfUE9SVAojZGVmaW5lIENPTkZJR19SQURJT19TRjE2Rk1EMl9QT1JUIC0xCiNlbmRp ZgoKc3RhdGljIGludCBpbyA9IENPTkZJR19SQURJT19TRjE2Rk1EMl9QT1JUOyAKc3RhdGljIGlu dCB1c2VycyA9IDA7CgovKiBmcmVxIGlzIGluIDEvMTYga0h6IHRvIGludGVybmFsIG51bWJlciwg aHcgcHJlY2lzaW9uIGlzIDUwIGtIeiAqLwovKiBJdCBpcyBvbmx5IHVzZWZ1bGwgdG8gZ2l2ZSBm cmVxIGluIGludGVydmFsbCBvZiA4MDAgKD0wLjA1TWh6KSwKICogb3RoZXIgYml0cyB3aWxsIGJl IHRydW5jYXRlZCwgZS5nIDkyLjc0MDAwMTYgLT4gOTIuNywgYnV0IAogKiA5Mi43NDAwMDE3IC0+ IDkyLjc1CiAqLwoKI2RlZmluZSBSU0YxNl9FTkNPREUoeCkgKGludCkoKGZsb2F0KSh4KS8yMDAu MzU3NzkrODcxLjI4NTcxKQojZGVmaW5lIFJTRjE2X01JTkZSRVEgODcqMTYwMDAKI2RlZmluZSBS U0YxNl9NQVhGUkVRIDEwOCoxNjAwMAoKc3RhdGljIGlubGluZSB2b2lkIGluYml0cyhpbnQgY250 LCBpbnQgcG9ydCkKewogICAgd2hpbGUoY250LS0pCglpbmIocG9ydCk7Cn0KCnN0YXRpYyB2b2lk IG91dGJpdHMoaW50IGJpdHMsIHVuc2lnbmVkIGludCBkYXRhLCBpbnQgcG9ydCkKewoJaW50IGNu dGJpdHM9Yml0czsKCXVuc2lnbmVkIGludCB0bXBkYXRhPWRhdGE7Cgl3aGlsZShiaXRzLS0pCgl7 CgkgICBkYXRhPXRtcGRhdGE7OwoJICAgZGF0YT4+PWJpdHM7CgkgICBpZihjbnRiaXRzPjEwKQoJ CXsKIAkJb3V0YigoZGF0YSAmIDEpLHBvcnQpOwoJCWluYml0cygyLHBvcnQpOwogCQlvdXRiKChk YXRhICYgMSkgfCAyLHBvcnQpOwoJCWluYml0cygyLHBvcnQpOwogCQlvdXRiKChkYXRhICYgMSks cG9ydCk7CgkJaW5iaXRzKDIscG9ydCk7CgkJfQoJICAgZWxzZQoJCXsKIAkJb3V0YigoZGF0YSAm IDEpLHBvcnQpOwoJCWluYml0cygzLHBvcnQpOwogCQlvdXRiKChkYXRhICYgMSkgfCAyLHBvcnQp OwoJCWluYml0cygzLHBvcnQpOwogCQlvdXRiKChkYXRhICYgMSkscG9ydCk7CgkJaW5iaXRzKDMs cG9ydCk7CgkJfQoJfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZm1kMl9tdXRlKGludCBwb3J0KQp7 CglvdXRiKDB4MDAsIHBvcnQpOwoJaW5iaXRzKDQscG9ydCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p ZCBmbWQyX3VubXV0ZShpbnQgcG9ydCkKewoJb3V0YigweDA0LCBwb3J0KTsKCWluYml0cyg0LHBv cnQpOwp9CgoKc3RhdGljIGlubGluZSBpbnQgZm1kMl9zZXRmcmVxKHN0cnVjdCBmbWQyX2Rldmlj ZSAqZGV2KQp7CiAgICAgICAgaW50IG15cG9ydCA9IGRldi0+cG9ydDsKCXVuc2lnbmVkIGxvbmcg ZnJlcSA9IGRldi0+Y3VyZnJlcTsKCWludCBpOwoJb3V0Yml0cygweDA5LCAweDAyLCBteXBvcnQp OwoJb3V0Yml0cygweDEwLCBSU0YxNl9FTkNPREUoZnJlcSksIG15cG9ydCk7Cglmb3IoaT0wOyBp PCAxMDA7IGkrKykKCXsKCQl1ZGVsYXkoMTQwMCk7CgkJaWYoY3VycmVudC0+bmVlZF9yZXNjaGVk KQoJCQlzY2hlZHVsZSgpOwoJfQovKiBJZiB0aGlzIGJlY29tZXMgYWxsb3dlZCB1c2UgaXQgLi4u IAkKCWN1cnJlbnQtPnN0YXRlID0gVEFTS19VTklOVEVSUlVQVElCTEU7CglzY2hlZHVsZV90aW1l b3V0KEhaLzcpOwoqLwkKCWlmIChkZXYtPmN1cnZvbCkgZm1kMl91bm11dGUobXlwb3J0KTsKCXJl dHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBmbWQyX2dldHNpZ3N0cihzdHJ1Y3QgZm1kMl9k ZXZpY2UgKmRldikKewovKgogKiBOb3RlOglJIGRpZCBub3Qga25vdyBob3cgdG8gdGFrZSBzdGF0 dXMgb2YgdGhpcyByYWRpby1jYXJkIDooCiAqCUFsd2F5cyBUVU5FICYgU1RFUkVPICEhIQogKi8J CglyZXR1cm4gMHhGRkZGOwp9CgpzdGF0aWMgaW50IGZtZDJfaW9jdGwoc3RydWN0IHZpZGVvX2Rl dmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgY21kLCB2b2lkICphcmcpCnsKCXN0cnVjdCBmbWQyX2Rl dmljZSAqZm1kMj1kZXYtPnByaXY7CgkKCXN3aXRjaChjbWQpCgl7CgkJY2FzZSBWSURJT0NHQ0FQ OgoJCXsKCQkJc3RydWN0IHZpZGVvX2NhcGFiaWxpdHkgdjsKCQkJc3RyY3B5KHYubmFtZSwgIlNG MTYtRk1EMiByYWRpbyIpOwoJCQl2LnR5cGU9VklEX1RZUEVfVFVORVI7CgkJCXYuY2hhbm5lbHM9 MTsKCQkJdi5hdWRpb3M9MTsKCQkJLyogTm8gd2UgZG9uJ3QgZG8gcGljdHVyZXMgKi8KCQkJdi5t YXh3aWR0aD0wOwoJCQl2Lm1heGhlaWdodD0wOwoJCQl2Lm1pbndpZHRoPTA7CgkJCXYubWluaGVp Z2h0PTA7CgkJCWlmKGNvcHlfdG9fdXNlcihhcmcsJnYsc2l6ZW9mKHYpKSkKCQkJCXJldHVybiAt RUZBVUxUOwoJCQlyZXR1cm4gMDsKCQl9CgkJY2FzZSBWSURJT0NHVFVORVI6CgkJewoJCQlzdHJ1 Y3QgdmlkZW9fdHVuZXIgdjsKCQkJaW50IG11bHQ7CgoJCQlpZihjb3B5X2Zyb21fdXNlcigmdiwg YXJnLHNpemVvZih2KSkhPTApCgkJCQlyZXR1cm4gLUVGQVVMVDsKCQkJaWYodi50dW5lcikJLyog T25seSAxIHR1bmVyICovCgkJCQlyZXR1cm4gLUVJTlZBTDsKCQkJc3RyY3B5KHYubmFtZSwgIkZN Iik7CgkJCW11bHQgPSAoZm1kMi0+ZmxhZ3MgJiBWSURFT19UVU5FUl9MT1cpID8gMSA6IDEwMDA7 CgkJCXYucmFuZ2Vsb3cgPSBSU0YxNl9NSU5GUkVRL211bHQ7CgkJCXYucmFuZ2VoaWdoID0gUlNG MTZfTUFYRlJFUS9tdWx0OwoJCQl2LmZsYWdzPWZtZDItPmZsYWdzOwoJCQl2Lm1vZGU9VklERU9f TU9ERV9BVVRPOwoJCQl2LnNpZ25hbCA9IGZtZDJfZ2V0c2lnc3RyKGZtZDIpOwoJCQlpZihjb3B5 X3RvX3VzZXIoYXJnLCZ2LCBzaXplb2YodikpKQoJCQkJcmV0dXJuIC1FRkFVTFQ7CgkJCXJldHVy biAwOwoJCX0KCQljYXNlIFZJRElPQ1NUVU5FUjoKCQl7CgkJCXN0cnVjdCB2aWRlb190dW5lciB2 OwoJCQlpZihjb3B5X2Zyb21fdXNlcigmdiwgYXJnLCBzaXplb2YodikpKQoJCQkJcmV0dXJuIC1F RkFVTFQ7CgkJCWlmKHYudHVuZXIhPTApCgkJCQlyZXR1cm4gLUVJTlZBTDsKCQkJZm1kMi0+Zmxh Z3MgPSB2LmZsYWdzICYgVklERU9fVFVORVJfTE9XOwoJCQkvKiBPbmx5IDEgdHVuZXIgc28gbm8g c2V0dGluZyBuZWVkZWQgISAqLwoJCQlyZXR1cm4gMDsKCQl9CgkJY2FzZSBWSURJT0NHRlJFUToK CQl7CgkJCXVuc2lnbmVkIGxvbmcgdG1wID0gZm1kMi0+Y3VyZnJlcTsKCQkJaWYgKCEoZm1kMi0+ ZmxhZ3MgJiBWSURFT19UVU5FUl9MT1cpKQoJCQkJdG1wIC89IDEwMDA7CgkJCWlmKGNvcHlfdG9f dXNlcihhcmcsICZ0bXAsIHNpemVvZih0bXApKSkKCQkJCXJldHVybiAtRUZBVUxUOwoJCQlyZXR1 cm4gMDsKCQl9CgkJY2FzZSBWSURJT0NTRlJFUToKCQl7CgkJCXVuc2lnbmVkIGxvbmcgdG1wOwoJ CQlpZihjb3B5X2Zyb21fdXNlcigmdG1wLCBhcmcsIHNpemVvZih0bXApKSkKCQkJCXJldHVybiAt RUZBVUxUOwoJCQlpZiAoIShmbWQyLT5mbGFncyAmIFZJREVPX1RVTkVSX0xPVykpCgkJCQl0bXAg Kj0gMTAwMDsKCQkJaWYgKCB0bXA8UlNGMTZfTUlORlJFUSB8fCB0bXA+UlNGMTZfTUFYRlJFUSAp CgkJCSAgcmV0dXJuIC1FSU5WQUw7CgkJCS8qcm91bmRpbmcgaW4gc3RlcHMgb2YgODAwIHRvIG1h dGNoIHRoIGZyZXEKCQkJICB0aGF0IHdpbGwgYmUgdXNlZCAqLwoJCQlmbWQyLT5jdXJmcmVxID0g KHRtcC84MDApKjgwMDsgCgkJCWZtZDJfc2V0ZnJlcShmbWQyKTsKCQkJcmV0dXJuIDA7CgkJfQoJ CWNhc2UgVklESU9DR0FVRElPOgoJCXsJCgkJCXN0cnVjdCB2aWRlb19hdWRpbyB2OwoJCQl2LmF1 ZGlvPTA7CgkJCXYudm9sdW1lPTA7CgkJCXYuYmFzcz0wOwoJCQl2LnRyZWJsZT0wOwoJCQl2LmZs YWdzPSggKCFmbWQyLT5jdXJ2b2wpKlZJREVPX0FVRElPX01VVEUgfCBWSURFT19BVURJT19NVVRB QkxFKTsKCQkJc3RyY3B5KHYubmFtZSwgIlJhZGlvIik7CgkJCXYubW9kZT1WSURFT19TT1VORF9T VEVSRU87CgkJCXYuYmFsYW5jZT0wOwoJCQl2LnN0ZXA9MDsgLyogTm8gdm9sdW1lLCBqdXN0ICh1 biltdXRlICovCgkJCWlmKGNvcHlfdG9fdXNlcihhcmcsJnYsIHNpemVvZih2KSkpCgkJCQlyZXR1 cm4gLUVGQVVMVDsKCQkJcmV0dXJuIDA7CQkJCgkJfQoJCWNhc2UgVklESU9DU0FVRElPOgoJCXsK CQkJc3RydWN0IHZpZGVvX2F1ZGlvIHY7CgkJCWlmKGNvcHlfZnJvbV91c2VyKCZ2LCBhcmcsIHNp emVvZih2KSkpCgkJCQlyZXR1cm4gLUVGQVVMVDsKCQkJaWYodi5hdWRpbykKCQkJCXJldHVybiAt RUlOVkFMOwoJCQlmbWQyLT5jdXJ2b2w9IHYuZmxhZ3MmVklERU9fQVVESU9fTVVURSA/IDAgOiAx OwoJCQlmbWQyLT5jdXJ2b2wgPyAKCQkJICBmbWQyX3VubXV0ZShmbWQyLT5wb3J0KSA6IGZtZDJf bXV0ZShmbWQyLT5wb3J0KTsKCQkJcmV0dXJuIDA7CgkJfQoJICAgICAgICBjYXNlIFZJRElPQ0dV TklUOgoJCXsKICAgICAgICAgICAgICAgCQlzdHJ1Y3QgdmlkZW9fdW5pdCB2OwoJCQl2LnZpZGVv PVZJREVPX05PX1VOSVQ7CgkJCXYudmJpPVZJREVPX05PX1VOSVQ7CgkJCXYucmFkaW89ZGV2LT5t aW5vcjsKCQkJdi5hdWRpbz0wOyAvKiBIb3cgZG8gd2UgZmluZCBvdXQgdGhpcz8/PyAqLwoJCQl2 LnRlbGV0ZXh0PVZJREVPX05PX1VOSVQ7CgkJCWlmKGNvcHlfdG9fdXNlcihhcmcsICZ2LCBzaXpl b2YodikpKQoJCQkJcmV0dXJuIC1FRkFVTFQ7CgkJCXJldHVybiAwOwkJCQoJCX0KCQlkZWZhdWx0 OgoJCQlyZXR1cm4gLUVOT0lPQ1RMQ01EOwoJfQp9CgpzdGF0aWMgaW50IGZtZDJfb3BlbihzdHJ1 Y3QgdmlkZW9fZGV2aWNlICpkZXYsIGludCBmbGFncykKewoJaWYodXNlcnMpCgkJcmV0dXJuIC1F QlVTWTsKCXVzZXJzKys7CglNT0RfSU5DX1VTRV9DT1VOVDsKCXJldHVybiAwOwp9CgpzdGF0aWMg dm9pZCBmbWQyX2Nsb3NlKHN0cnVjdCB2aWRlb19kZXZpY2UgKmRldikKewoJdXNlcnMtLTsKCU1P RF9ERUNfVVNFX0NPVU5UOwp9CgpzdGF0aWMgc3RydWN0IGZtZDJfZGV2aWNlIGZtZDJfdW5pdDsK CnN0YXRpYyBzdHJ1Y3QgdmlkZW9fZGV2aWNlIGZtZDJfcmFkaW89CnsKCSJTRjE2Rk1EMiByYWRp byIsCglWSURfVFlQRV9UVU5FUiwKCVZJRF9IQVJEV0FSRV9TRjE2TUksCglmbWQyX29wZW4sCglm bWQyX2Nsb3NlLAoJTlVMTCwJLyogQ2FuJ3QgcmVhZCAgKG5vIGNhcHR1cmUgYWJpbGl0eSkgKi8K CU5VTEwsCS8qIENhbid0IHdyaXRlICovCglOVUxMLAkvKiBDYW4ndCBwb2xsICovCglmbWQyX2lv Y3RsLAoJTlVMTCwKCU5VTEwKfTsKCl9faW5pdGZ1bmMoaW50IGZtZDJfaW5pdChzdHJ1Y3Qgdmlk ZW9faW5pdCAqdikpCnsKCWlmIChjaGVja19yZWdpb24oaW8sIDIpKSAKCXsKCQlwcmludGsoS0VS Tl9FUlIgImZtZDI6IHBvcnQgMHgleCBhbHJlYWR5IGluIHVzZVxuIiwgaW8pOwoJCXJldHVybiAt RUJVU1k7Cgl9CgoJZm1kMl91bml0LnBvcnQgPSBpbzsKCWZtZDJfdW5pdC5jdXJ2b2wgPSAwOwoJ Zm1kMl91bml0LmN1cmZyZXEgPSAwOwoJZm1kMl91bml0LmZsYWdzID0gVklERU9fVFVORVJfTE9X OwoJZm1kMl9yYWRpby5wcml2ID0gJmZtZDJfdW5pdDsKCQoJaWYodmlkZW9fcmVnaXN0ZXJfZGV2 aWNlKCZmbWQyX3JhZGlvLCBWRkxfVFlQRV9SQURJTyk9PS0xKQoJCXJldHVybiAtRUlOVkFMOwoJ CQoJcmVxdWVzdF9yZWdpb24oaW8sIDIsICJmbWQyIik7CglwcmludGsoS0VSTl9JTkZPICJTRjE2 Rk1EMiByYWRpbyBjYXJkIGRyaXZlciBhdCAweCV4LlxuIiwgaW8pOwoJcHJpbnRrKEtFUk5fSU5G TyAiKGMpIDE5OTggUGV0ciBWYW5kcm92ZWMsIHZhbmRyb3ZlQHZjLmN2dXQuY3ouXG4iKTsKCXBy aW50ayhLRVJOX0lORk8gIkFkYXB0ZWQgZm9yIFNGMTYtRk1EMlxuIik7CglwcmludGsoS0VSTl9J TkZPICIoYykgMTk5OSBBbmR5IFJhbWVuc2t5IGFuZHlAY2xocy5raWV2LnVhLlxuIik7CgkvKiBt dXRlIGNhcmQgLSBwcmV2ZW50cyBub2lzeSBib290dXBzICovCglmbWQyX211dGUoaW8pOwoJcmV0 dXJuIDA7Cn0KCiNpZmRlZiBNT0RVTEUKCk1PRFVMRV9BVVRIT1IoIlBldHIgVmFuZHJvdmVjLCB2 YW5kcm92ZUB2Yy5jdnV0LmN6LCBNLiBLaXJrd29vZCAmIEFuZHkgUmFtZW5za3kiKTsKTU9EVUxF X0RFU0NSSVBUSU9OKCJBIGRyaXZlciBmb3IgdGhlIFNGMTZGTUQyIHJhZGlvLiIpOwpNT0RVTEVf UEFSTShpbywgImkiKTsKTU9EVUxFX1BBUk1fREVTQyhpbywgIkkvTyBhZGRyZXNzIG9mIHRoZSBT RjE2Rk1EMiBjYXJkICgweDM4NCBvciAweDI4NCkiKTsKCkVYUE9SVF9OT19TWU1CT0xTOwoKaW50 IGluaXRfbW9kdWxlKHZvaWQpCnsKCWlmKGlvPT0tMSkKCXsKCQlwcmludGsoS0VSTl9FUlIgIllv dSBtdXN0IHNldCBhbiBJL08gYWRkcmVzcyB3aXRoIGlvPTB4Pz8/XG4iKTsKCQlyZXR1cm4gLUVJ TlZBTDsKCX0KCXJldHVybiBmbWQyX2luaXQoTlVMTCk7Cn0KCnZvaWQgY2xlYW51cF9tb2R1bGUo dm9pZCkKewoJdmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoJmZtZDJfcmFkaW8pOwoJcmVsZWFzZV9y ZWdpb24oaW8sMik7Cn0KCiNlbmRpZgo= --------------Boundary-00=_9Z839Q8GI3BJSC6EHLUO-- _______________________________________________ Devel mailing list Devel@linux.iplabs.ru http://www.logic.ru/mailman/listinfo/devel