Date: Thu, 23 Apr 1998 18:40:02 +0400 (MSD) From: Maxim Bolotin <max@rnd.runnet.ru> To: Mike Smith <mike@smith.net.au> Cc: hackers@FreeBSD.ORG Subject: Re: your mail Message-ID: <Pine.BSF.3.96.980423183109.29546A-300000@altos.rnd.runnet.ru> In-Reply-To: <199804222001.NAA00389@dingo.cdrom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-731731238-893342402=:29546 Content-Type: TEXT/PLAIN; charset=US-ASCII On Wed, 22 Apr 1998, Mike Smith wrote: > > Hi! > > G'day Max! > > > As I write year ago, We have driver for IBM EtherJet ethernet card. > > It's cs8920M chip based card. TP only. We have 70 computers with > > FreeBSD 2.2.5, work 1 year. I make some style changes of code, and > > I want commite it. What have I to do it. > > I looked at your driver last year, and made some suggestions then, but > never heard back from you. If your driver is available somewhere for > FTP, I'll do the same again. I think I should be able to obtain one of > these cards for testing as well, and once we're both happy, I'll arrange > for it to be committed. Hi! We made some perfomance improvement, add multicast. All this cards work 6 days per week, 1 year, 12 may 1997 - current. It's NFS/NIS client computers. We've to location, 48 and 22 computers. For me fork OK. Max. - Rostov State University Computer Center Rostov-on-Don, +7 (8632) 285794 or 357476 Russia, RUNNet, MAB1-RIPE max@rsu.ru --0-731731238-893342402=:29546 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="if_csreg.h" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.BSF.3.96.980423184001.29546B@altos.rnd.runnet.ru> Content-Description: /sys/i386/isa/if_csreg.h LyoNCiAqIENvcHlyaWdodCAoYykgMTk5NywxOTk4IE1heGltIEJvbG90aW4g YW5kIE9sZWcgU2hhcm9pa28uDQogKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K ICoNCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICogbW9kaWZpY2F0aW9u LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj b25kaXRpb25zDQogKiBhcmUgbWV0Og0KICogMS4gUmVkaXN0cmlidXRpb25z IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQNCiAqICAgIG5vdGljZSB1bm1vZGlmaWVkLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucywgYW5kIHRoZSBmb2xsb3dpbmcNCiAqICAgIGRpc2NsYWltZXIu DQogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluIHRoZQ0KICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4N CiAqDQogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRI T1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EDQogKiBBTlkgRVhQ UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUNCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFDQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQ0KICogRk9S IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAqIERBTUFHRVMgKElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT VElUVVRFIEdPT0RTDQogKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCiAq IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUDQogKiBMSUFCSUxJVFks IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg QVJJU0lORyBJTiBBTlkgV0FZDQogKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElT IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ IE9GDQogKiBTVUNIIERBTUFHRS4NCiAqDQogKi8NCg0KLyoNCiAqICRJZDog aWZfY3NyZWcuaCx2IDEuMiAxOTk4LzA0LzIwIDA5OjU4OjA5IHJvb3QgRXhw ICQNCiAqLw0KDQojZGVmaW5lIFBQX0NoaXBJRCAweDAwMDAJLyogb2Zmc2V0 ICAgMGggLT4gQ29ycCAtSUQgICAgICAgICAgICAgICovDQoJCQkJLyogb2Zm c2V0ICAgMmggLT4gTW9kZWwvUHJvZHVjdCBOdW1iZXIgICovDQoJCQkJLyog b2Zmc2V0ICAgM2ggLT4gQ2hpcCBSZXZpc2lvbiBOdW1iZXIgICovDQoNCiNk ZWZpbmUgUFBfSVNBSU9CCQkweDAwMjAJLyogIElPIGJhc2UgYWRkcmVzcyAq Lw0KI2RlZmluZSBQUF9DUzg5MjBfSVNBSU5UCTB4MDM3MAkvKiAgSVNBIGlu dGVycnVwdCBzZWxlY3QgKi8NCiNkZWZpbmUgUFBfQ1M4OTIwX0lTQURNQSAJ MHgwMzc0CS8qICBJU0EgUmVjIERNQSBjaGFubmVsICovDQojZGVmaW5lIFBQ X0lTQVNPRgkJMHgwMDI2CS8qICBJU0EgRE1BIG9mZnNldCAqLw0KI2RlZmlu ZSBQUF9EbWFGcmFtZUNudAkJMHgwMDI4CS8qICBJU0EgRE1BIEZyYW1lIGNv dW50ICovDQojZGVmaW5lIFBQX0RtYUJ5dGVDbnQJCTB4MDAyQQkvKiAgSVNB IERNQSBCeXRlIGNvdW50ICovDQojZGVmaW5lIFBQX0NTODkyMF9JU0FNZW1C CTB4MDM0OAkvKiAgTWVtb3J5IGJhc2UgKi8NCg0KLyogRUVQUk9NIGRhdGEg YW5kIGNvbW1hbmQgcmVnaXN0ZXJzICovDQojZGVmaW5lIFBQX0VFQ01ECQkw eDAwNDAJLyogIE5WUiBJbnRlcmZhY2UgQ29tbWFuZCByZWdpc3RlciAqLw0K I2RlZmluZSBQUF9FRURhdGEJCTB4MDA0MgkvKiAgTlZSIEludGVyZmFjZSBE YXRhIFJlZ2lzdGVyICovDQojZGVmaW5lIFBQX0RlYnVnUmVnCQkweDAwNDQJ LyogIERlYnVnIFJlZ2lzdGVyICovDQoNCiNkZWZpbmUgUFBfUnhDRkcJCTB4 MDEwMgkvKiAgUnggQnVzIGNvbmZpZyAqLw0KI2RlZmluZSBQUF9SeENUTAkJ MHgwMTA0CS8qICBSZWNlaXZlIENvbnRyb2wgUmVnaXN0ZXIgKi8NCiNkZWZp bmUgUFBfVHhDRkcJCTB4MDEwNgkvKiAgVHJhbnNtaXQgQ29uZmlnIFJlZ2lz dGVyICovDQojZGVmaW5lIFBQX1R4Q01ECQkweDAxMDgJLyogIFRyYW5zbWl0 IENvbW1hbmQgUmVnaXN0ZXIgKi8NCiNkZWZpbmUgUFBfQnVmQ0ZHCQkweDAx MEEJLyogIEJ1cyBjb25maWd1cmF0aW9uIFJlZ2lzdGVyICovDQojZGVmaW5l IFBQX0xpbmVDVEwJCTB4MDExMgkvKiAgTGluZSBDb25maWcgUmVnaXN0ZXIg Ki8NCiNkZWZpbmUgUFBfU2VsZkNUTAkJMHgwMTE0CS8qICBTZWxmIENvbW1h bmQgUmVnaXN0ZXIgKi8NCiNkZWZpbmUgUFBfQnVzQ1RMCQkweDAxMTYJLyog IElTQSBidXMgY29udHJvbCBSZWdpc3RlciAqLw0KI2RlZmluZSBQUF9UZXN0 Q1RMCQkweDAxMTgJLyogIFRlc3QgUmVnaXN0ZXIgKi8NCiNkZWZpbmUgUFBf QXV0b05lZ0NUTAkJMHgwMTFDCS8qICBBdXRvIE5lZ290aWF0aW9uIEN0cmwg Ki8NCg0KI2RlZmluZSBQUF9JU1EJCQkweDAxMjAJLyogIEludGVycnVwdCBT dGF0dXMgKi8NCiNkZWZpbmUgUFBfUnhFdmVudAkJMHgwMTI0CS8qICBSeCBF dmVudCBSZWdpc3RlciAqLw0KI2RlZmluZSBQUF9UeEV2ZW50CQkweDAxMjgJ LyogIFR4IEV2ZW50IFJlZ2lzdGVyICovDQojZGVmaW5lIFBQX0J1ZkV2ZW50 CQkweDAxMkMJLyogIEJ1cyBFdmVudCBSZWdpc3RlciAqLw0KI2RlZmluZSBQ UF9SeE1pc3MJCTB4MDEzMAkvKiAgUmVjZWl2ZSBNaXNzIENvdW50ICovDQoj ZGVmaW5lIFBQX1R4Q29sCQkweDAxMzIJLyogIFRyYW5zbWl0IENvbGxpc2lv biBDb3VudCAqLw0KI2RlZmluZSBQUF9MaW5lU1QJCTB4MDEzNAkvKiAgTGlu ZSBTdGF0ZSBSZWdpc3RlciAqLw0KI2RlZmluZSBQUF9TZWxmU1QJCTB4MDEz NgkvKiAgU2VsZiBTdGF0ZSByZWdpc3RlciAqLw0KI2RlZmluZSBQUF9CdXNT VAkJMHgwMTM4CS8qICBCdXMgU3RhdHVzICovDQojZGVmaW5lIFBQX1REUgkJ CTB4MDEzQwkvKiAgVGltZSBEb21haW4gUmVmbGVjdG9tZXRyeSAqLw0KI2Rl ZmluZSBQUF9BdXRvTmVnU1QJCTB4MDEzRQkvKiAgQXV0byBOZWcgU3RhdHVz ICovDQojZGVmaW5lIFBQX1R4Q29tbWFuZAkJMHgwMTQ0CS8qICBUeCBDb21t YW5kICovDQojZGVmaW5lIFBQX1R4TGVuZ3RoCQkweDAxNDYJLyogIFR4IExl bmd0aCAqLw0KI2RlZmluZSBQUF9MQUYJCQkweDAxNTAJLyogIEhhc2ggVGFi bGUgKi8NCiNkZWZpbmUgUFBfSUEJCQkweDAxNTgJLyogIFBoeXNpY2FsIEFk ZHJlc3MgUmVnaXN0ZXIgKi8NCg0KI2RlZmluZSBQUF9SeFN0YXR1cwkJMHgw NDAwCS8qICBSZWNlaXZlIHN0YXJ0IG9mIGZyYW1lICovDQojZGVmaW5lIFBQ X1J4TGVuZ3RoCQkweDA0MDIJLyogIFJlY2VpdmUgTGVuZ3RoIG9mIGZyYW1l ICovDQojZGVmaW5lIFBQX1J4RnJhbWUJCTB4MDQwNAkvKiAgUmVjZWl2ZSBm cmFtZSBwb2ludGVyICovDQojZGVmaW5lIFBQX1R4RnJhbWUJCTB4MEEwMAkv KiAgVHJhbnNtaXQgZnJhbWUgcG9pbnRlciAqLw0KDQovKg0KICogIFByaW1h cnkgSS9PIEJhc2UgQWRkcmVzcy4gSWYgbm8gSS9PIGJhc2UgaXMgc3VwcGxp ZWQgYnkgdGhlIHVzZXIsIHRoZW4gdGhpcw0KICogIGNhbiBiZSB1c2VkIGFz IHRoZSBkZWZhdWx0IEkvTyBiYXNlIHRvIGFjY2VzcyB0aGUgUGFja2V0UGFn ZSBBcmVhLg0KICovDQojZGVmaW5lIERFRkFVTFRJT0JBU0UJCTB4MDMwMA0K I2RlZmluZSBGSVJTVF9JTwkJMHgwMjBDCS8qICBGaXJzdCBJL08gcG9ydCB0 byBjaGVjayAqLw0KI2RlZmluZSBMQVNUX0lPCQkJMHgwMzdDCS8qICBMYXN0 IEkvTyBwb3J0IHRvIGNoZWNrICgrMTBoKSAqLw0KI2RlZmluZSBBRERfTUFT SwkJMHgzMDAwCS8qICBNYXNrIGl0IHVzZSBvZiB0aGUgQUREX1BPUlQgcmVn aXN0ZXIgKi8NCiNkZWZpbmUgQUREX1NJRwkJCTB4MzAwMAkvKiAgRXhwZWN0 ZWQgSUQgc2lnbmF0dXJlICovDQoNCiNkZWZpbmUgQ0hJUF9FSVNBX0lEX1NJ RwkweDYzMEUJLyogIFByb2R1Y3QgSUQgQ29kZSBmb3IgQ3J5c3RhbCBDaGlw IChDUzg5MDAgc3BlYyA0LjMpICovDQoNCiNkZWZpbmUgUFJPRFVDVF9JRF9B REQJCTB4MDAwMgkvKiAgQWRkcmVzcyBvZiBwcm9kdWN0IElEICovDQoNCi8q ICBNYXNrIHRvIGZpbmQgb3V0IHRoZSB0eXBlcyBvZiAgcmVnaXN0ZXJzICov DQojZGVmaW5lIFJFR19UWVBFX01BU0sJCTB4MDAxRg0KDQovKiAgRWVwcm9t IENvbW1hbmRzICovDQojZGVmaW5lIEVSU0VfV1JfRU5CTAkJMHgwMEYwDQoj ZGVmaW5lIEVSU0VfV1JfRElTQUJMRQkJMHgwMDAwDQoNCi8qICBEZWZpbmVz IENvbnRyb2wvQ29uZmlnIHJlZ2lzdGVyIHF1aW50dXBsZXQgbnVtYmVycyAq Lw0KI2RlZmluZSBSWF9CVUZfQ0ZHCQkweDAwMDMNCiNkZWZpbmUgUlhfQ09O VFJPTAkJMHgwMDA1DQojZGVmaW5lIFRYX0NGRwkJCTB4MDAwNw0KI2RlZmlu ZSBUWF9DT01NQU5ECQkweDAwMDkNCiNkZWZpbmUgQlVGX0NGRwkJCTB4MDAw Qg0KI2RlZmluZSBMSU5FX0NPTlRST0wJCTB4MDAxMw0KI2RlZmluZSBTRUxG X0NPTlRST0wJCTB4MDAxNQ0KI2RlZmluZSBCVVNfQ09OVFJPTAkJMHgwMDE3 DQojZGVmaW5lIFRFU1RfQ09OVFJPTAkJMHgwMDE5DQoNCi8qICBEZWZpbmVz IFN0YXR1cy9Db3VudCByZWdpc3RlcnMgcXVpbnR1cGxldCBudW1iZXJzICov DQojZGVmaW5lIFJYX0VWRU5UCQkweDAwMDQNCiNkZWZpbmUgVFhfRVZFTlQJ CTB4MDAwOA0KI2RlZmluZSBCVUZfRVZFTlQJCTB4MDAwQw0KI2RlZmluZSBS WF9NSVNTX0NPVU5UCQkweDAwMTANCiNkZWZpbmUgVFhfQ09MX0NPVU5UCQkw eDAwMTINCiNkZWZpbmUgTElORV9TVEFUVVMJCTB4MDAxNA0KI2RlZmluZSBT RUxGX1NUQVRVUwkJMHgwMDE2DQojZGVmaW5lIEJVU19TVEFUVVMJCTB4MDAx OA0KI2RlZmluZSBURFIJCQkweDAwMUMNCg0KLyoNCiAqIFBQX1J4Q0ZHIC0g UmVjZWl2ZSAgQ29uZmlndXJhdGlvbiBhbmQgSW50ZXJydXB0IE1hc2sNCiAq CQkJIGJpdCBkZWZpbml0aW9uIC0gIFJlYWQvd3JpdGUNCiAqLw0KI2RlZmlu ZSBTS0lQXzEJCQkweDAwNDANCiNkZWZpbmUgUlhfU1RSRUFNX0VOQkwJCTB4 MDA4MA0KI2RlZmluZSBSWF9PS19FTkJMCQkweDAxMDANCiNkZWZpbmUgUlhf RE1BX09OTFkJCTB4MDIwMA0KI2RlZmluZSBBVVRPX1JYX0RNQQkJMHgwNDAw DQojZGVmaW5lIEJVRkZFUl9DUkMJCTB4MDgwMA0KI2RlZmluZSBSWF9DUkNf RVJST1JfRU5CTAkweDEwMDANCiNkZWZpbmUgUlhfUlVOVF9FTkJMCQkweDIw MDANCiNkZWZpbmUgUlhfRVhUUkFfREFUQV9FTkJMCTB4NDAwMA0KDQovKiBQ UF9SeENUTCAtIFJlY2VpdmUgQ29udHJvbCBiaXQgZGVmaW5pdGlvbiAtIFJl YWQvd3JpdGUgKi8NCiNkZWZpbmUgUlhfSUFfSEFTSF9BQ0NFUFQJMHgwMDQw DQojZGVmaW5lIFJYX1BST01fQUNDRVBUCQkweDAwODANCiNkZWZpbmUgUlhf T0tfQUNDRVBUCQkweDAxMDANCiNkZWZpbmUgUlhfTVVMVENBU1RfQUNDRVBU CTB4MDIwMA0KI2RlZmluZSBSWF9JQV9BQ0NFUFQJCTB4MDQwMA0KI2RlZmlu ZSBSWF9CUk9BRENBU1RfQUNDRVBUCTB4MDgwMA0KI2RlZmluZSBSWF9CQURf Q1JDX0FDQ0VQVAkweDEwMDANCiNkZWZpbmUgUlhfUlVOVF9BQ0NFUFQJCTB4 MjAwMA0KI2RlZmluZSBSWF9FWFRSQV9EQVRBX0FDQ0VQVAkweDQwMDANCiNk ZWZpbmUgUlhfQUxMX0FDQ0VQVAkJKFJYX1BST01fQUNDRVBUIHwgUlhfQkFE X0NSQ19BQ0NFUFQgfAlcDQoJCQkJIFJYX1JVTlRfQUNDRVBUIHwgUlhfRVhU UkFfREFUQV9BQ0NFUFQpDQovKg0KICogIERlZmF1bHQgcmVjZWl2ZSBtb2Rl IC0gaW5kaXZpZHVhbGx5IGFkZHJlc3NlZCwgYnJvYWRjYXN0LCBhbmQgZXJy b3IgZnJlZQ0KICovDQojZGVmaW5lIFJYX0RFRl9BQ0NFUFQgKFJYX0lBX0FD Q0VQVCB8IFJYX0JST0FEQ0FTVF9BQ0NFUFQgfCBSWF9PS19BQ0NFUFQpDQoN Ci8qDQogKiBQUF9UeENGRyAtIFRyYW5zbWl0IENvbmZpZ3VyYXRpb24gSW50 ZXJydXB0IE1hc2sNCiAqCQkJIGJpdCBkZWZpbml0aW9uIC0gUmVhZC93cml0 ZQ0KICovDQojZGVmaW5lIFRYX0xPU1RfQ1JTX0VOQkwJMHgwMDQwDQojZGVm aW5lIFRYX1NRRV9FUlJPUl9FTkJMCTB4MDA4MA0KI2RlZmluZSBUWF9PS19F TkJMCQkweDAxMDANCiNkZWZpbmUgVFhfTEFURV9DT0xfRU5CTAkweDAyMDAN CiNkZWZpbmUgVFhfSkJSX0VOQkwJCTB4MDQwMA0KI2RlZmluZSBUWF9BTllf Q09MX0VOQkwJCTB4MDgwMA0KI2RlZmluZSBUWF8xNl9DT0xfRU5CTAkJMHg4 MDAwDQoNCi8qDQogKiBQUF9UeENNRCAtIFRyYW5zbWl0IENvbW1hbmQgYml0 IGRlZmluaXRpb24gLSBSZWFkLW9ubHkNCiAqLw0KI2RlZmluZSBUWF9TVEFS VF80X0JZVEVTCTB4MDAwMA0KI2RlZmluZSBUWF9TVEFSVF82NF9CWVRFUwkw eDAwNDANCiNkZWZpbmUgVFhfU1RBUlRfMTI4X0JZVEVTCTB4MDA4MA0KI2Rl ZmluZSBUWF9TVEFSVF9BTExfQllURVMJMHgwMEMwDQojZGVmaW5lIFRYX0ZP UkNFCQkweDAxMDANCiNkZWZpbmUgVFhfT05FX0NPTAkJMHgwMjAwDQojZGVm aW5lIFRYX1RXT19QQVJUX0RFRkZfRElTQUJMRSAweDA0MDANCiNkZWZpbmUg VFhfTk9fQ1JDCQkweDEwMDANCiNkZWZpbmUgVFhfUlVOVAkJCTB4MjAwMA0K DQovKg0KICogUFBfQnVmQ0ZHIC0gQnVmZmVyIENvbmZpZ3VyYXRpb24gSW50 ZXJydXB0IE1hc2sNCiAqCQkJIGJpdCBkZWZpbml0aW9uIC0gUmVhZC93cml0 ZQ0KICovDQojZGVmaW5lIEdFTkVSQVRFX1NXX0lOVEVSUlVQVAkweDAwNDAN CiNkZWZpbmUgUlhfRE1BX0VOQkwJCTB4MDA4MA0KI2RlZmluZSBSRUFEWV9G T1JfVFhfRU5CTAkweDAxMDANCiNkZWZpbmUgVFhfVU5ERVJSVU5fRU5CTAkw eDAyMDANCiNkZWZpbmUgUlhfTUlTU19FTkJMCQkweDA0MDANCiNkZWZpbmUg UlhfMTI4X0JZVEVfRU5CTAkweDA4MDANCiNkZWZpbmUgVFhfQ09MX0NPVU5U X09WUkZMT1dfRU5CTCAweDEwMDANCiNkZWZpbmUgUlhfTUlTU19DT1VOVF9P VlJGTE9XX0VOQkwgMHgyMDAwDQojZGVmaW5lIFJYX0RFU1RfTUFUQ0hfRU5C TAkweDgwMDANCg0KLyoNCiAqIFBQX0xpbmVDVEwgLSBMaW5lIENvbnRyb2wg Yml0IGRlZmluaXRpb24gLSBSZWFkL3dyaXRlDQogKi8NCiNkZWZpbmUgU0VS SUFMX1JYX09OCQkweDAwNDANCiNkZWZpbmUgU0VSSUFMX1RYX09OCQkweDAw ODANCiNkZWZpbmUgQVVJX09OTFkJCTB4MDEwMA0KI2RlZmluZSBBVVRPX0FV SV8xMEJBU0VUCTB4MDIwMA0KI2RlZmluZSBNT0RJRklFRF9CQUNLT0ZGCTB4 MDgwMA0KI2RlZmluZSBOT19BVVRPX1BPTEFSSVRZCTB4MTAwMA0KI2RlZmlu ZSBUV09fUEFSVF9ERUZESVMJCTB4MjAwMA0KI2RlZmluZSBMT1dfUlhfU1FV RUxDSAkJMHg0MDAwDQoNCi8qDQogKiBQUF9TZWxmQ1RMIC0gU29mdHdhcmUg U2VsZiBDb250cm9sIGJpdCBkZWZpbml0aW9uIC0gUmVhZC93cml0ZQ0KICov DQojZGVmaW5lIFBPV0VSX09OX1JFU0VUCQkweDAwNDANCiNkZWZpbmUgU1df U1RPUAkJCTB4MDEwMA0KI2RlZmluZSBTTEVFUF9PTgkJMHgwMjAwDQojZGVm aW5lIEFVVE9fV0FLRVVQCQkweDA0MDANCiNkZWZpbmUgSENCMF9FTkJMCQkw eDEwMDANCiNkZWZpbmUgSENCMV9FTkJMCQkweDIwMDANCiNkZWZpbmUgSENC MAkJCTB4NDAwMA0KI2RlZmluZSBIQ0IxCQkJMHg4MDAwDQoNCi8qDQogKiBQ UF9CdXNDVEwgLSBJU0EgQnVzIENvbnRyb2wgYml0IGRlZmluaXRpb24gLSBS ZWFkL3dyaXRlDQogKi8NCiNkZWZpbmUgUkVTRVRfUlhfRE1BCQkweDAwNDAN CiNkZWZpbmUgTUVNT1JZX09OCQkweDA0MDANCiNkZWZpbmUgRE1BX0JVUlNU X01PREUJCTB4MDgwMA0KI2RlZmluZSBJT19DSEFOTkVMX1JFQURZX09OCTB4 MTAwMA0KI2RlZmluZSBSWF9ETUFfU0laRV82NEtzCTB4MjAwMA0KI2RlZmlu ZSBFTkFCTEVfSVJRCQkweDgwMDANCg0KLyoNCiAqIFBQX1Rlc3RDVEwgLSBU ZXN0IENvbnRyb2wgYml0IGRlZmluaXRpb24gLSBSZWFkL3dyaXRlDQogKi8N CiNkZWZpbmUgTElOS19PRkYJCTB4MDA4MA0KI2RlZmluZSBFTkRFQ19MT09Q QkFDSwkJMHgwMjAwDQojZGVmaW5lIEFVSV9MT09QQkFDSwkJMHgwNDAwDQoj ZGVmaW5lIEJBQ0tPRkZfT0ZGCQkweDA4MDANCiNkZWZpbmUgRkFTVF9URVNU CQkweDgwMDANCg0KLyoNCiAqIFBQX1J4RXZlbnQgLSBSZWNlaXZlIEV2ZW50 IEJpdCBkZWZpbml0aW9uIC0gUmVhZC1vbmx5DQogKi8NCiNkZWZpbmUgUlhf SUFfSEFTSEVECQkweDAwNDANCiNkZWZpbmUgUlhfRFJJQkJMRQkJMHgwMDgw DQojZGVmaW5lIFJYX09LCQkJMHgwMTAwDQojZGVmaW5lIFJYX0hBU0hFRAkJ MHgwMjAwDQojZGVmaW5lIFJYX0lBCQkJMHgwNDAwDQojZGVmaW5lIFJYX0JS T0FEQ0FTVAkJMHgwODAwDQojZGVmaW5lIFJYX0NSQ19FUlJPUgkJMHgxMDAw DQojZGVmaW5lIFJYX1JVTlQJCQkweDIwMDANCiNkZWZpbmUgUlhfRVhUUkFf REFUQQkJMHg0MDAwDQoNCiNkZWZpbmUgSEFTSF9JTkRFWF9NQVNLCQkweDBG QzAwDQoNCi8qDQogKiBQUF9UeEV2ZW50IC0gVHJhbnNtaXQgRXZlbnQgQml0 IGRlZmluaXRpb24gLSBSZWFkLW9ubHkNCiAqLw0KI2RlZmluZSBUWF9MT1NU X0NSUwkJMHgwMDQwDQojZGVmaW5lIFRYX1NRRV9FUlJPUgkJMHgwMDgwDQoj ZGVmaW5lIFRYX09LCQkJMHgwMTAwDQojZGVmaW5lIFRYX0xBVEVfQ09MCQkw eDAyMDANCiNkZWZpbmUgVFhfSkJSCQkJMHgwNDAwDQojZGVmaW5lIFRYXzE2 X0NPTAkJMHg4MDAwDQojZGVmaW5lIFRYX1NFTkRfT0tfQklUUwkJKFRYX09L IHwgVFhfTE9TVF9DUlMpDQojZGVmaW5lIFRYX0NPTF9DT1VOVF9NQVNLCTB4 NzgwMA0KDQovKg0KICogUFBfQnVmRXZlbnQgLSBCdWZmZXIgRXZlbnQgQml0 IGRlZmluaXRpb24gLSBSZWFkLW9ubHkNCiAqLw0KI2RlZmluZSBTV19JTlRF UlJVUFQJCTB4MDA0MA0KI2RlZmluZSBSWF9ETUEJCQkweDAwODANCiNkZWZp bmUgUkVBRFlfRk9SX1RYCQkweDAxMDANCiNkZWZpbmUgVFhfVU5ERVJSVU4J CTB4MDIwMA0KI2RlZmluZSBSWF9NSVNTCQkJMHgwNDAwDQojZGVmaW5lIFJY XzEyOF9CWVRFCQkweDA4MDANCiNkZWZpbmUgVFhfQ09MX09WUkZMVwkJMHgx MDAwDQojZGVmaW5lIFJYX01JU1NfT1ZSRkxXCQkweDIwMDANCiNkZWZpbmUg UlhfREVTVF9NQVRDSAkJMHg4MDAwDQoNCi8qDQogKiBQUF9MaW5lU1QgLSBF dGhlcm5ldCBMaW5lIFN0YXR1cyBiaXQgZGVmaW5pdGlvbiAtIFJlYWQtb25s eQ0KICovDQojZGVmaW5lIExJTktfT0sJCQkweDAwODANCiNkZWZpbmUgQVVJ X09OCQkJMHgwMTAwDQojZGVmaW5lIFRFTkJBU0VUX09OCQkweDAyMDANCiNk ZWZpbmUgUE9MQVJJVFlfT0sJCTB4MTAwMA0KI2RlZmluZSBDUlNfT0sJCQkw eDQwMDANCg0KLyoNCiAqIFBQX1NlbGZTVCAtIENoaXAgU29mdHdhcmUgU3Rh dHVzIGJpdCBkZWZpbml0aW9uDQogKi8NCiNkZWZpbmUgQUNUSVZFXzMzVgkJ MHgwMDQwDQojZGVmaW5lIElOSVRfRE9ORQkJMHgwMDgwDQojZGVmaW5lIFNJ X0JVU1kJCQkweDAxMDANCiNkZWZpbmUgRUVQUk9NX1BSRVNFTlQJCTB4MDIw MA0KI2RlZmluZSBFRVBST01fT0sJCTB4MDQwMA0KI2RlZmluZSBFTF9QUkVT RU5UCQkweDA4MDANCiNkZWZpbmUgRUVfU0laRV82NAkJMHgxMDAwDQoNCi8q DQogKiBQUF9CdXNTVCAtIElTQSBCdXMgU3RhdHVzIGJpdCBkZWZpbml0aW9u DQogKi8NCiNkZWZpbmUgVFhfQklEX0VSUk9SCQkweDAwODANCiNkZWZpbmUg UkVBRFlfRk9SX1RYX05PVwkweDAxMDANCg0KLyoNCiAqIFBQX0F1dG9OZWdD VEwgLSBBdXRvIE5lZ290aWF0aW9uIENvbnRyb2wgYml0IGRlZmluaXRpb24N CiAqLw0KI2RlZmluZSBSRV9ORUdfTk9XCQkweDAwNDANCiNkZWZpbmUgQUxM T1dfRkRYCQkweDAwODANCiNkZWZpbmUgQVVUT19ORUdfRU5BQkxFCQkweDAx MDANCiNkZWZpbmUgTkxQX0VOQUJMRQkJMHgwMjAwDQojZGVmaW5lIEZPUkNF X0ZEWAkJMHg4MDAwDQojZGVmaW5lIEFVVE9fTkVHX0JJVFMJCShGT1JDRV9G RFggfCBOTFBfRU5BQkxFIHwgQVVUT19ORUdfRU5BQkxFKQ0KI2RlZmluZSBB VVRPX05FR19NQVNLCQkoRk9SQ0VfRkRYIHwgTkxQX0VOQUJMRSB8IEFVVE9f TkVHX0VOQUJMRSB8IFwNCgkJCQkgQUxMT1dfRkRYIHwgUkVfTkVHX05PVykN Cg0KLyoNCiAqIFBQX0F1dG9OZWdTVCAtIEF1dG8gTmVnb3RpYXRpb24gU3Rh dHVzIGJpdCBkZWZpbml0aW9uDQogKi8NCiNkZWZpbmUgQVVUT19ORUdfQlVT WQkJMHgwMDgwDQojZGVmaW5lIEZMUF9MSU5LCQkweDAxMDANCiNkZWZpbmUg RkxQX0xJTktfR09PRAkJMHgwODAwDQojZGVmaW5lIExJTktfRkFVTFQJCTB4 MTAwMA0KI2RlZmluZSBIRFhfQUNUSVZFCQkweDQwMDANCiNkZWZpbmUgRkRY X0FDVElWRQkJMHg4MDAwDQoNCi8qDQogKiBUaGUgZm9sbG93aW5nIGJsb2Nr IGRlZmluZXMgdGhlIElTUSBldmVudCB0eXBlcw0KICovDQojZGVmaW5lIElT UV9SRUNFSVZFUl9FVkVOVAkweDA0DQojZGVmaW5lIElTUV9UUkFOU01JVFRF Ul9FVkVOVAkweDA4DQojZGVmaW5lIElTUV9CVUZGRVJfRVZFTlQJMHgwYw0K I2RlZmluZSBJU1FfUlhfTUlTU19FVkVOVAkweDEwDQojZGVmaW5lIElTUV9U WF9DT0xfRVZFTlQJMHgxMg0KDQojZGVmaW5lIElTUV9FVkVOVF9NQVNLCQkw eDAwM0YJLyogSVNRIG1hc2sgdG8gZmluZCBvdXQgdHlwZSBvZiBldmVudCAq Lw0KI2RlZmluZSBJU1FfSElTVAkJMTYJLyogc21hbGwgaGlzdG9yeSBidWZm ZXIgKi8NCiNkZWZpbmUgQVVUT0lOQ1JFTUVOVAkJMHg4MDAwCS8qIEJpdCBt YXNrIHRvIHNldCBiaXQtMTUgZm9yIGF1dG9pbmNyZW1lbnQgKi8NCg0KI2Rl ZmluZSBUWFJYQlVGU0laRQkJMHgwNjAwDQojZGVmaW5lIFJYRE1BQlVGU0la RQkJMHg4MDAwDQojZGVmaW5lIFJYRE1BU0laRQkJMHg0MDAwDQojZGVmaW5l IFRYUlhfTEVOR1RIX01BU0sJMHgwN0ZGDQoNCi8qICByeCBvcHRpb25zIGJp dHMgKi8NCiNkZWZpbmUgUkNWX1dJVEhfUlhPTgkJMSAgICAgICAvKiAgU2V0 IFNlclJ4IE9OICovDQojZGVmaW5lIFJDVl9DT1VOVFMJCTIgICAgICAgLyog IFVzZSBGcmFtZWNudDEgKi8NCiNkZWZpbmUgUkNWX1BPTkcJCTQgICAgICAg LyogIFBvbmcgcmVzcG9uZGVudCAqLw0KI2RlZmluZSBSQ1ZfRE9ORwkJOCAg ICAgICAvKiAgRG9uZyBvcGVyYXRpb24gKi8NCiNkZWZpbmUgUkNWX1BPTExJ TkcJCTB4MTAJLyogIFBvbGwgUnhFdmVudCAqLw0KI2RlZmluZSBSQ1ZfSVNR CQkJMHgyMAkvKiAgVXNlIElTUSwgaW50ICovDQojZGVmaW5lIFJDVl9BVVRP X0RNQQkJMHgxMDAJLyogIFNldCBBdXRvUnhETUFFICovDQojZGVmaW5lIFJD Vl9ETUEJCQkweDIwMAkvKiAgU2V0IFJ4RE1BIG9ubHkgKi8NCiNkZWZpbmUg UkNWX0RNQV9BTEwJCTB4NDAwCS8qICBDb3B5IGFsbCBETUEnZWQgKi8NCiNk ZWZpbmUgUkNWX0ZJWEVEX0RBVEEJCTB4ODAwCS8qICBFdmVyeSBmcmFtZSBz YW1lICovDQojZGVmaW5lIFJDVl9JTwkJCTB4MTAwMAkvKiAgVXNlIElTQSBJ TyBvbmx5ICovDQojZGVmaW5lIFJDVl9NRU1PUlkJCTB4MjAwMAkvKiAgVXNl IElTQSBNZW1vcnkgKi8NCg0KI2RlZmluZSBSQU1fU0laRQkJMHgxMDAwICAg ICAgLyogIFRoZSBjYXJkIGhhcyA0ayBieXRlcyBvciBSQU0gKi8NCiNkZWZp bmUgUEtUX1NUQVJUCQlQUF9UeEZyYW1lICAvKiAgU3RhcnQgb2YgcGFja2V0 IFJBTSAqLw0KDQojZGVmaW5lIFJYX0ZSQU1FX1BPUlQJCTB4MDAwMA0KI2Rl ZmluZSBUWF9GUkFNRV9QT1JUCQlSWF9GUkFNRV9QT1JUDQojZGVmaW5lIFRY X0NNRF9QT1JUCQkweDAwMDQNCiNkZWZpbmUgVFhfTk9XCQkJMHgwMDAwICAv KiBUeCBwYWNrZXQgYWZ0ZXIgICA1IGJ5dGVzIGNvcGllZCAqLw0KI2RlZmlu ZSBUWF9BRlRFUl8zODEJCTB4MDAyMCAgLyogVHggcGFja2V0IGFmdGVyIDM4 MSBieXRlcyBjb3BpZWQgKi8NCiNkZWZpbmUgVFhfQUZURVJfQUxMCQkweDAw NjAgIC8qIFR4IHBhY2tldCBhZnRlciBhbGwgYnl0ZXMgY29waWVkICovDQoj ZGVmaW5lIFRYX0NTODkyMF9OT1cJCTB4MDAwMCAgLyogVHggcGFja2V0IGFm dGVyICAgNSBieXRlcyBjb3BpZWQgKi8NCiNkZWZpbmUgVFhfQ1M4OTIwX0FG VEVSXzM4MQkweDAwNDAgIC8qIFR4IHBhY2tldCBhZnRlciAzODEgYnl0ZXMg Y29waWVkICovDQojZGVmaW5lIFRYX0NTODkyMF9BRlRFUl8xMDIxCTB4MDA4 MCAgLyogVHggcGFja2V0IGFmdGVyMTAyMSBieXRlcyBjb3BpZWQgKi8NCiNk ZWZpbmUgVFhfQ1M4OTIwX0FGVEVSX0FMTAkweDAwQzAgIC8qIFR4IHBhY2tl dCBhZnRlciBhbGwgYnl0ZXMgY29waWVkICovDQojZGVmaW5lIFRYX0xFTl9Q T1JUCQkweDAwMDYNCiNkZWZpbmUgSVNRX1BPUlQJCTB4MDAwOA0KI2RlZmlu ZSBBRERfUE9SVAkJMHgwMDBBDQojZGVmaW5lIERBVEFfUE9SVAkJMHgwMDBD DQoNCiNkZWZpbmUgRUVQUk9NX1dSSVRFX0VOCQkweDAwRjANCiNkZWZpbmUg RUVQUk9NX1dSSVRFX0RJUwkweDAwMDANCiNkZWZpbmUgRUVQUk9NX1dSSVRF X0NNRAkweDAxMDANCiNkZWZpbmUgRUVQUk9NX1JFQURfQ01ECQkweDAyMDAN Cg0KLyogIFJlY2VpdmUgSGVhZGVyDQogKiAgRGVzY3JpcHRpb24gb2YgaGVh ZGVyIG9mIGVhY2ggcGFja2V0IGluIHJlY2VpdmUgYXJlYSBvZiBtZW1vcnkN CiAqLw0KI2RlZmluZSBSQlVGX0VWRU5UX0xPVwkwICAvKiBMb3cgYnl0ZSBv ZiBSeEV2ZW50IC0gc3RhdHVzIG9mIHJlY2VpdmVkIGZyYW1lICovDQojZGVm aW5lIFJCVUZfRVZFTlRfSElHSAkxICAvKiBIaWdoIGJ5dGUgb2YgUnhFdmVu dCAtIHN0YXR1cyBvZiByZWNlaXZlZCBmcmFtZSAqLw0KI2RlZmluZSBSQlVG X0xFTl9MT1cJMiAgLyogTGVuZ3RoIG9mIHJlY2VpdmVkIGRhdGEgLSBsb3cg Ynl0ZSAqLw0KI2RlZmluZSBSQlVGX0xFTl9ISQkzICAvKiBMZW5ndGggb2Yg cmVjZWl2ZWQgZGF0YSAtIGhpZ2ggYnl0ZSAqLw0KI2RlZmluZSBSQlVGX0hF QURfTEVOCTQgIC8qIExlbmd0aCBvZiB0aGlzIGhlYWRlciAqLw0KDQojZGVm aW5lIENISVBfUkVBRCAweDEgIC8qIFVzZWQgdG8gbWFyayBzdGF0ZSBvZiB0 aGUgcmVwaW5zIGNvZGUgKGNoaXAgb3IgZG1hKSAqLw0KI2RlZmluZSBETUFf UkVBRCAgMHgyICAvKiBVc2VkIHRvIG1hcmsgc3RhdGUgb2YgdGhlIHJlcGlu cyBjb2RlIChjaGlwIG9yIGRtYSkgKi8NCg0KLyogIGZvciBiaW9zIHNjYW4g Ki8NCi8qICAqLw0KI2lmZGVmIENTREVCVUcNCi8qICB1c2UgdGhlc2UgdmFs dWVzIGZvciBkZWJ1Z2dpbmcgYmlvcyBzY2FuICovDQojZGVmaW5lIEJJT1Nf U1RBUlRfU0VHCQkweDAwMDAwDQojZGVmaW5lIEJJT1NfT0ZGU0VUX0lOQwkJ MHgwMDEwDQojZWxzZQ0KI2RlZmluZSBCSU9TX1NUQVJUX1NFRwkJMHgwYzAw MA0KI2RlZmluZSBCSU9TX09GRlNFVF9JTkMJCTB4MDIwMA0KI2VuZGlmDQoN CiNkZWZpbmUgQklPU19MQVNUX09GRlNFVAkweDBmYzAwDQoNCi8qDQogKiAg Qnl0ZSBvZmZzZXRzIGludG8gdGhlIEVFUFJPTSBjb25maWd1cmF0aW9uIGJ1 ZmZlcg0KICovDQojZGVmaW5lIElTQV9DTkZfT0ZGU0VUCQkweDYNCiNkZWZp bmUgVFhfQ1RMX09GRlNFVAkJKElTQV9DTkZfT0ZGU0VUICsgOCkJLyogIDg5 MDAgZWVwcm9tICovDQojZGVmaW5lIEFVVE9fTkVHX0NORl9PRkZTRVQJKElT QV9DTkZfT0ZGU0VUICsgOCkJLyogIDg5MjAgZWVwcm9tICovDQoNCi8qDQog KiAgdGhlIGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0IHRoZSBiaXRzIGluIHRo ZSBlZXByb20gYXJlIGdlbmVyYWxseSANCiAqICBpbiB0aGUgc2FtZSBwb3Np dGlvbiBhcyB0aG9zZSBpbiB0aGUgYXV0b25lZ2N0bCByZWdpc3Rlci4gDQog KiAgT2YgY291cnNlIHRoZSBJTU0gYml0IGlzIG5vdCBpbiB0aGF0IHJlZ2lz dGVyIHNvIGl0IG11c3QgYmUgDQogKiAgbWFza2VkIG91dA0KICovDQojZGVm aW5lIEVFX0ZPUkNFX0ZEWAkJMHg4MDAwDQojZGVmaW5lIEVFX05MUF9FTkFC TEUJCTB4MDIwMA0KI2RlZmluZSBFRV9BVVRPX05FR19FTkFCTEUJMHgwMTAw DQojZGVmaW5lIEVFX0FMTE9XX0ZEWAkJMHgwMDgwDQojZGVmaW5lIEVFX0FV VE9fTkVHX0NORl9NQVNLCShFRV9GT1JDRV9GRFggfCBFRV9OTFBfRU5BQkxF IHwgCVwNCgkJCQkgRUVfQVVUT19ORUdfRU5BQkxFIHwgRUVfQUxMT1dfRkRY KQ0KDQojZGVmaW5lIElNTV9CSVQJCQkweDAwNDAJLyogIGlnbm9yZSBtaXNz aW5nIG1lZGlhCSAqLw0KDQojZGVmaW5lIEFEQVBURVJfQ05GX09GRlNFVAko QVVUT19ORUdfQ05GX09GRlNFVCArIDIpDQojZGVmaW5lIEFfQ05GXzEwQl9U CQkweDAwMDENCiNkZWZpbmUgQV9DTkZfQVVJCQkweDAwMDINCiNkZWZpbmUg QV9DTkZfMTBCXzIJCTB4MDAwNA0KI2RlZmluZSBBX0NORl9NRURJQV9UWVBF CTB4MDA2MA0KI2RlZmluZSBBX0NORl9NRURJQV9BVVRPCTB4MDAwMA0KI2Rl ZmluZSBBX0NORl9NRURJQV8xMEJfVAkweDAwMjANCiNkZWZpbmUgQV9DTkZf TUVESUFfQVVJCQkweDAwNDANCiNkZWZpbmUgQV9DTkZfTUVESUFfMTBCXzIJ MHgwMDYwDQojZGVmaW5lIEFfQ05GX0RDX0RDX1BPTEFSSVRZCTB4MDA4MA0K I2RlZmluZSBBX0NORl9OT19BVVRPX1BPTEFSSVRZCTB4MjAwMA0KI2RlZmlu ZSBBX0NORl9MT1dfUlhfU1FVRUxDSAkweDQwMDANCiNkZWZpbmUgQV9DTkZf RVhUTkRfMTBCXzIJMHg4MDAwDQoNCiNkZWZpbmUgUEFDS0VUX1BBR0VfT0ZG U0VUCTB4OA0KDQovKg0KICogIEJpdCBkZWZpbml0aW9ucyBmb3IgdGhlIElT QSBjb25maWd1cmF0aW9uIHdvcmQgZnJvbSB0aGUgRUVQUk9NDQogKi8NCiNk ZWZpbmUgSU5UX05PX01BU0sJCTB4MDAwRg0KI2RlZmluZSBETUFfTk9fTUFT SwkJMHgwMDcwDQojZGVmaW5lIElTQV9ETUFfU0laRQkJMHgwMjAwDQojZGVm aW5lIElTQV9BVVRPX1J4RE1BCQkweDA0MDANCiNkZWZpbmUgSVNBX1J4RE1B CQkweDA4MDANCiNkZWZpbmUgRE1BX0JVUlNUCQkweDEwMDANCiNkZWZpbmUg U1RSRUFNX1RSQU5TRkVSCQkweDIwMDANCiNkZWZpbmUgQU5ZX0lTQV9ETUEJ CShJU0FfQVVUT19SeERNQSB8IElTQV9SeERNQSkNCg0KLyogIERNQSBjb250 cm9sbGVyIHJlZ2lzdGVycyAqLw0KI2RlZmluZSBETUFfQkFTRQkJMHgwMCAg IC8qIERNQSBjb250cm9sbGVyIGJhc2UgKi8NCiNkZWZpbmUgRE1BX0JBU0Vf MgkJMHgwQzAgIC8qIERNQSBjb250cm9sbGVyIGJhc2UgKi8NCg0KI2RlZmlu ZSBETUFfU1RBVAkJMHgwRDAgIC8qIERNQSBjb250cm9sbGVyIHN0YXR1cyBy ZWdpc3RlciAqLw0KI2RlZmluZSBETUFfTUFTSwkJMHgwRDQgIC8qIERNQSBj b250cm9sbGVyIG1hc2sgcmVnaXN0ZXIgKi8NCiNkZWZpbmUgRE1BX01PREUJ CTB4MEQ2ICAvKiBETUEgY29udHJvbGxlciBtb2RlIHJlZ2lzdGVyICovDQoj ZGVmaW5lIERNQV9SRVNFVEZGCQkweDBEOCAgLyogRE1BIGNvbnRyb2xsZXIg Zmlyc3QvbGFzdCBmbGlwIGZsb3AgKi8NCg0KLyogIERNQSBkYXRhICovDQoj ZGVmaW5lIERNQV9ESVNBQkxFCQkweDA0ICAgLyogIERpc2FibGUgY2hhbm5l bCBuICovDQojZGVmaW5lIERNQV9FTkFCTEUJCTB4MDAgICAvKiAgRW5hYmxl IGNoYW5uZWwgbiAqLw0KLyogIERlbWFuZCB0cmFuc2ZlcnMsIGluY3IuIGFk ZHJlc3MsIGF1dG8gaW5pdCwgd3JpdGVzLCBjaC4gbiAqLw0KI2RlZmluZSBE TUFfUlhfTU9ERQkJMHgxNA0KLyogIERlbWFuZCB0cmFuc2ZlcnMsIGluY3Iu IGFkZHJlc3MsIGF1dG8gaW5pdCwgcmVhZHMsIGNoLiBuICovDQojZGVmaW5l IERNQV9UWF9NT0RFCQkweDE4DQoNCiNkZWZpbmUgRE1BX1NJWkUJCSgxNiox MDI0KQkvKiBTaXplIG9mIGRtYSBidWZmZXIgLSAxNmsgKi8NCg0KI2RlZmlu ZSBDUzg5MDAJCQkweDAwMDANCiNkZWZpbmUgQ1M4OTIwCQkJMHg0MDAwICAg DQojZGVmaW5lIENTODkyME0JCQkweDYwMDAgICANCiNkZWZpbmUgUkVWSVNP Tl9CSVRTCQkweDFGMDANCiNkZWZpbmUgRUVWRVJfTlVNQkVSCQkweDEyDQoj ZGVmaW5lIENIS1NVTV9MRU4JCTB4MTQNCiNkZWZpbmUgQ0hLU1VNX1ZBTAkJ MHgwMDAwDQojZGVmaW5lIFNUQVJUX0VFUFJPTV9EQVRBCTB4MDAxYyAvKiBP ZmZzZXQgaW50byBlZXByb20gZm9yIHN0YXJ0IG9mIGRhdGEgKi8NCiNkZWZp bmUgSVJRX01BUF9FRVBST01fREFUQQkweDAwNDYgLyogT2Zmc2V0IGludG8g ZWVwcm9tIGZvciB0aGUgSVJRIG1hcCAqLw0KI2RlZmluZSBJUlFfTUFQX0xF TgkJMHgwMDA0IC8qIE5vIG9mIGJ5dGVzIHRvIHJlYWQgZm9yIHRoZSBJUlEg bWFwICovDQojZGVmaW5lIFBOUF9JUlFfRlJNVAkJMHgwMDIyIC8qIFBOUCBz bWFsbCBpdGVtIElSUSBmb3JtYXQgKi8NCiNkZWZpbmUgQ1M4OTAwX0lSUV9N QVAJCTB4MWMyMCAvKiBUaGlzIElSUSBtYXAgaXMgZml4ZWQgKi8NCg0KI2Rl ZmluZSBDUzg5MjBfTk9fSU5UUwkJMHgwRiAgIC8qICBNYXggQ1M4OTIwIGlu dGVycnVwdCBzZWxlY3QgIyAqLw0KDQojZGVmaW5lIFBOUF9BRERfUE9SVAkJ MHgwMjc5DQojZGVmaW5lIFBOUF9XUklURV9QT1JUCQkweDBBNzkNCg0KI2Rl ZmluZSBHRVRfUE5QX0lTQV9TVFJVQ1QJMHg0MA0KI2RlZmluZSBQTlBfSVNB X1NUUlVDVF9MRU4JMHgwNg0KI2RlZmluZSBQTlBfQ1NOX0NOVF9PRkYJCTB4 MDENCiNkZWZpbmUgUE5QX1JEX1BPUlRfT0ZGCQkweDAyDQojZGVmaW5lIFBO UF9GVU5DVElPTl9PSwkJMHgwMA0KI2RlZmluZSBQTlBfV0FLRQkJMHgwMw0K I2RlZmluZSBQTlBfUlNSQ19EQVRBCQkweDA0DQojZGVmaW5lIFBOUF9SU1JD X1JFQURZCQkweDAxDQojZGVmaW5lIFBOUF9TVEFUVVMJCTB4MDUNCiNkZWZp bmUgUE5QX0FDVElWQVRFCQkweDMwDQojZGVmaW5lIFBOUF9DTkZfSU9fSAkJ MHg2MA0KI2RlZmluZSBQTlBfQ05GX0lPX0wJCTB4NjENCiNkZWZpbmUgUE5Q X0NORl9JTlQJCTB4NzANCiNkZWZpbmUgUE5QX0NORl9ETUEJCTB4NzQNCiNk ZWZpbmUgUE5QX0NORl9NRU0JCTB4NDgNCg0KI2RlZmluZSBCSVQwCQkJMQ0K I2RlZmluZSBCSVQxNQkJCTB4ODAwMA0KDQovKiBEZXZpY2UgbmFtZSAqLw0K I2RlZmluZSBDU19OQU1FCQkJImNzIg0KDQojZGVmaW5lIGNzX3JlYWRyZWco aW9iYXNlLCBwb3J0bm8pIFwNCgkob3V0dygoaW9iYXNlKSArIEFERF9QT1JU LCAocG9ydG5vKSksIFwNCglpbncoKGlvYmFzZSkgKyBEQVRBX1BPUlQpKQ0K I2RlZmluZSBjc193cml0ZXJlZyhpb2Jhc2UsIHBvcnRubywgdmFsdWUpIFwN Cgkob3V0dygoaW9iYXNlKSArIEFERF9QT1JULCAocG9ydG5vKSksIFwNCglv dXR3KChpb2Jhc2UpICsgREFUQV9QT1JULCAodmFsdWUpKSkNCiNkZWZpbmUg Y3NfcmVhZHdvcmQoaW9iYXNlLCBwb3J0bm8pIFwNCgkoaW53KChpb2Jhc2Up ICsgKHBvcnRubykpKQ0KI2RlZmluZSBjc193cml0ZXdvcmQoaW9iYXNlLCBw b3J0bm8sIHZhbHVlKSBcDQoJKG91dHcoKGlvYmFzZSkgKyAocG9ydG5vKSwg KHZhbHVlKSkpDQoNCiNkZWZpbmUgcmVzZXRfY2hpcChuaWNfYWRkcikgXA0K CWNzX3dyaXRlcmVnKG5pY19hZGRyLCBQUF9TZWxmQ1RMLCBjc19yZWFkcmVn KGlvYWRkciwgUFBfU2VsZkNUTCkgfCBQT1dFUl9PTl9SRVNFVCksIFwNCglE RUxBWSgzMDAwMCkNCg== --0-731731238-893342402=:29546 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="if_cs.c" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.BSF.3.96.980423184001.29546C@altos.rnd.runnet.ru> Content-Description: /sys/i386/isa/if_cs.c LyoNCiAqIENvcHlyaWdodCAoYykgMTk5NywxOTk4IE1heGltIEJvbG90aW4g YW5kIE9sZWcgU2hhcm9pa28uDQogKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K ICoNCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICogbW9kaWZpY2F0aW9u LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj b25kaXRpb25zDQogKiBhcmUgbWV0Og0KICogMS4gUmVkaXN0cmlidXRpb25z IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQNCiAqICAgIG5vdGljZSB1bm1vZGlmaWVkLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucywgYW5kIHRoZSBmb2xsb3dpbmcNCiAqICAgIGRpc2NsYWltZXIu DQogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluIHRoZQ0KICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4N CiAqDQogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRI T1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EDQogKiBBTlkgRVhQ UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUNCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFDQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQ0KICogRk9S IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAqIERBTUFHRVMgKElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT VElUVVRFIEdPT0RTDQogKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCiAq IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUDQogKiBMSUFCSUxJVFks IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg QVJJU0lORyBJTiBBTlkgV0FZDQogKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElT IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ IE9GDQogKiBTVUNIIERBTUFHRS4NCiAqDQogKi8NCg0KLyoNCiAqICRJZDog aWZfY3MuYyx2IDEuMiAxOTk4LzA0LzIwIDA4OjQyOjI0IHJvb3QgRXhwICQN CiAqDQogKiBEZXZpY2UgZHJpdmVyIGZvciBDcnlzdGFsIFNlbWljb25kdWN0 b3IgQ1M4OTIwIGJhc2VkIGV0aGVybmV0DQogKiAgIGFkYXB0ZXJzLiBCeSBN YXhpbSBCb2xvdGluIGFuZCBPbGVnIFNoYXJvaWtvLCAyNy1BcHJpbC0xOTk3 DQogKi8NCg0KI2luY2x1ZGUgImNzLmgiDQojaW5jbHVkZSAiYnBmaWx0ZXIu aCINCg0KI2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KI2luY2x1ZGUgPHN5cy9z eXN0bS5oPg0KI2luY2x1ZGUgPHN5cy9jb25mLmg+DQojaW5jbHVkZSA8c3lz L2Vycm5vLmg+DQojaW5jbHVkZSA8c3lzL2lvY3RsLmg+DQojaW5jbHVkZSA8 c3lzL21idWYuaD4NCiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+DQojaW5jbHVk ZSA8c3lzL3N5c2xvZy5oPg0KDQojaW5jbHVkZSA8bmV0L2lmLmg+DQojaW5j bHVkZSA8bmV0L2lmX2RsLmg+DQojaW5jbHVkZSA8bmV0L2lmX21pYi5oPg0K I2luY2x1ZGUgPG5ldC9pZl90eXBlcy5oPg0KDQojaWZkZWYgSU5FVA0KI2lu Y2x1ZGUgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRlIDxuZXRpbmV0L2luX3N5 c3RtLmg+DQojaW5jbHVkZSA8bmV0aW5ldC9pbl92YXIuaD4NCiNpbmNsdWRl IDxuZXRpbmV0L2lwLmg+DQojaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5o Pg0KI2VuZGlmDQoNCiNpZmRlZiBJUFgNCiNpbmNsdWRlIDxuZXRpcHgvaXB4 Lmg+DQojaW5jbHVkZSA8bmV0aXB4L2lweF9pZi5oPg0KI2VuZGlmDQoNCiNp ZmRlZiBOUw0KI2luY2x1ZGUgPG5ldG5zL25zLmg+DQojaW5jbHVkZSA8bmV0 bnMvbnNfaWYuaD4NCiNlbmRpZg0KDQojaWYgTkJQRklMVEVSID4gMA0KI2lu Y2x1ZGUgPG5ldC9icGYuaD4NCiNpbmNsdWRlIDxuZXQvYnBmZGVzYy5oPg0K I2VuZGlmDQoNCiNpbmNsdWRlIDxtYWNoaW5lL2Nsb2NrLmg+DQojaW5jbHVk ZSA8bWFjaGluZS9tZF92YXIuaD4NCg0KI2luY2x1ZGUgPGkzODYvaXNhL2lz YV9kZXZpY2UuaD4NCiNpbmNsdWRlIDxpMzg2L2lzYS9pY3UuaD4NCiNpbmNs dWRlIDxpMzg2L2lzYS9pZl9jc3JlZy5oPg0KDQojaWZkZWYgIENTX1VTRV82 NEtfRE1BDQojZGVmaW5lIENTX0RNQV9CVUZGRVJfU0laRSA2NTUzNg0KI2Vs c2UNCiNkZWZpbmUgQ1NfRE1BX0JVRkZFUl9TSVpFIDE2Mzg0DQojZW5kaWYN Cg0KI2RlZmluZQlUWF9ERUxBWSAxMDAwDQoNCi8qDQogKiBjc19zb2Z0Yzog cGVyIGxpbmUgaW5mbyBhbmQgc3RhdHVzDQogKi8NCnN0YXRpYyBzdHJ1Y3Qg Y3Nfc29mdGMgew0KDQoJLyogRXRoZXJuZXQgY29tbW9uIGNvZGUgKi8NCglz dHJ1Y3QgYXJwY29tIGFycGNvbTsNCg0KCS8qIENvbmZpZ3VyYXRpb24gd29y ZHMgZnJvbSBFRVBST00gKi8NCglpbnQgYXV0b19uZWdfY25mOyAgICAgICAg ICAgICAgIC8qIEF1dG9OZWdvdGl0YXRpb24gY29uZmlndXJhdGlvbiAqLw0K CWludCBhZGFwdGVyX2NuZjsgICAgICAgICAgICAgICAgLyogQWRhcHRlciBj b25maWd1cmF0aW9uICovDQoJaW50IGlzYV9jb25maWc7ICAgICAgICAgICAg ICAgICAvKiBJU0EgY29uZmlndXJhdGlvbiAqLw0KDQoJaW50IG5pY19hZGRy OyAJCQkvKiBCYXNlIElPIGFkZHJlc3Mgb2YgY2FyZCAqLw0KCWludCBzZW5k X2NtZDsNCglpbnQgbGluZV9jdGw7ICAgICAgICAgICAgICAgICAgIC8qICov DQoJaW50IHJ4X21vZGU7DQoJaW50IGN1cnJfcnhfY2ZnOw0KCWludCBzZW5k X3VuZGVycnVuOw0KCXZvaWQgKnJlY3ZfcmluZzsNCg0KCXVuc2lnbmVkIGNo YXIgKmJ1ZmZlcjsNCglpbnQgYnVmX2xlbjsNCg0KfQljc19zb2Z0Y1tOQ1Nd Ow0KDQpzdGF0aWMgaW50CWNzX2F0dGFjaAkJX19QKChzdHJ1Y3QgaXNhX2Rl dmljZSAqKSk7DQpzdGF0aWMgdm9pZAljc19pbml0CQkJX19QKCh2b2lkICop KTsNCnN0YXRpYyBpbnQJY3NfaW9jdGwJCV9fUCgoc3RydWN0IGlmbmV0ICos IGludCwgY2FkZHJfdCkpOw0Kc3RhdGljIGludAljc19wcm9iZQkJX19QKChz dHJ1Y3QgaXNhX2RldmljZSAqKSk7DQpzdGF0aWMgaW50CWNzX2NzODl4MF9w cm9iZQkJX19QKChzdHJ1Y3QgaXNhX2RldmljZSAqKSk7DQpzdGF0aWMgdm9p ZAljc19zdGFydAkJX19QKChzdHJ1Y3QgaWZuZXQgKikpOw0Kc3RhdGljIHZv aWQJY3Nfc3RvcAkJCV9fUCgoc3RydWN0IGNzX3NvZnRjICopKTsNCnN0YXRp YyB2b2lkCWNzX3Jlc2V0CQlfX1AoKHN0cnVjdCBjc19zb2Z0YyAqKSk7DQpz dGF0aWMgdm9pZAljc193YXRjaGRvZwkJX19QKChzdHJ1Y3QgaWZuZXQgKikp Ow0KDQpzdGF0aWMgdm9pZAljc193cml0ZV9tYnVmcyggc3RydWN0IGNzX3Nv ZnRjKiwgc3RydWN0ICBtYnVmKik7DQpzdGF0aWMgdm9pZAljc194bWl0X2J1 Ziggc3RydWN0IGNzX3NvZnRjICpzYyApOw0Kc3RhdGljIGludAljc19nZXRf cGFja2V0KCBzdHJ1Y3QgY3Nfc29mdGMgKiApOw0KDQpzdGF0aWMgaW50CWdl dF9lZXByb21fZGF0YShzdHJ1Y3QgY3Nfc29mdGMgKnNjLCBpbnQsIGludCwg aW50ICopOw0Kc3RhdGljIGludAlnZXRfZWVwcm9tX2Nrc3VtKGludCwgaW50 LCBpbnQgKik7DQpzdGF0aWMgaW50CXdhaXRfZWVwcm9tX3JlYWR5KCBzdHJ1 Y3QgY3Nfc29mdGMgKik7DQpzdGF0aWMgdm9pZAljb250cm9sX2RjX2RjKCBz dHJ1Y3QgY3Nfc29mdGMgKiwgaW50ICk7DQpzdGF0aWMgaW50CWRldGVjdF90 cCggc3RydWN0IGNzX3NvZnRjICosIGludCApOw0Kc3RhdGljIGludAlkZXRl Y3RfYXVpKCBzdHJ1Y3QgY3Nfc29mdGMgKiwgaW50ICk7DQpzdGF0aWMgaW50 CWRldGVjdF9ibmMoIHN0cnVjdCBjc19zb2Z0YyAqLCBpbnQgKTsNCg0Kc3Ry dWN0IGlzYV9kcml2ZXIgY3Nkcml2ZXIgPSB7DQoJY3NfcHJvYmUsDQoJY3Nf YXR0YWNoLA0KCUNTX05BTUUsDQoJMA0KfTsNCg0Kc3RhdGljIGludA0KZ2V0 X2VlcHJvbV9kYXRhKCBzdHJ1Y3QgY3Nfc29mdGMgKnNjLCBpbnQgb2ZmLCBp bnQgbGVuLCBpbnQgKmJ1ZmZlcikNCnsNCglpbnQgaTsNCg0KI2lmZGVmIENT X0RFQlVHDQoJcHJpbnRmKENTX05BTUUiOkVFUFJPTSBkYXRhIGZyb20gJXgg Zm9yICV4OlxuIiwgb2ZmLGxlbik7DQojZW5kaWYNCg0KCWZvciAoaT0wO2k8 bGVuO2krKykgew0KCQlpZiAod2FpdF9lZXByb21fcmVhZHkoc2MpIDwgMCkg cmV0dXJuIC0xOw0KCQkvKiBTZW5kIGNvbW1hbmQgdG8gRUVQUk9NIHRvIHJl YWQgKi8NCgkJY3Nfd3JpdGVyZWcoc2MtPm5pY19hZGRyLCBQUF9FRUNNRCwg KG9mZitpKXxFRVBST01fUkVBRF9DTUQgKTsNCgkJaWYgKHdhaXRfZWVwcm9t X3JlYWR5KHNjKTwwKQ0KCQkJcmV0dXJuIC0xOw0KCQlidWZmZXJbaV0gPSBj c19yZWFkcmVnIChzYy0+bmljX2FkZHIsIFBQX0VFRGF0YSk7DQoNCiNpZmRl ZiBDU19ERUJVRw0KCQlwcmludGYoIiUwNHggIixidWZmZXJbaV0pOw0KI2Vu ZGlmDQoJfQ0KDQojaWZkZWYgQ1NfREVCVUcNCglwcmludGYoIlxuIik7DQoj ZW5kaWYNCg0KCXJldHVybiAwOw0KfQ0KDQpzdGF0aWMgaW50DQpnZXRfZWVw cm9tX2Nrc3VtKGludCBvZmYsIGludCBsZW4sIGludCAqYnVmZmVyKQ0Kew0K CWludCBpLGNrc3VtPTA7DQoNCglmb3IgKGk9MDtpPGxlbjtpKyspDQoJCWNr c3VtKz1idWZmZXJbaV07DQoJY2tzdW0gJj0gMHhmZmZmOw0KCWlmIChja3N1 bT09MCkNCgkJcmV0dXJuIDA7DQoJcmV0dXJuIC0xOw0KfQ0KDQpzdGF0aWMg aW50DQp3YWl0X2VlcHJvbV9yZWFkeShzdHJ1Y3QgY3Nfc29mdGMgKnNjKQ0K ew0KCWludCB0aW1lb3V0PTEwMDA7DQoJREVMQVkgKCAzMDAwMCApOw0KCXJl dHVybiAwOw0KfQ0KDQpzdGF0aWMgdm9pZA0KY29udHJvbF9kY19kYyhzdHJ1 Y3QgY3Nfc29mdGMgKnNjLCBpbnQgb25fbm90X29mZikNCnsNCgl1bnNpZ25l ZCBpbnQgc2VsZl9jb250cm9sID0gSENCMV9FTkJMOw0KDQoJaWYgKCgoc2Mt PmFkYXB0ZXJfY25mICYgQV9DTkZfRENfRENfUE9MQVJJVFkpIT0wKSBeIG9u X25vdF9vZmYpDQoJCXNlbGZfY29udHJvbCB8PSBIQ0IxOw0KCWVsc2UNCgkJ c2VsZl9jb250cm9sICY9IH5IQ0IxOw0KCWNzX3dyaXRlcmVnKCBzYy0+bmlj X2FkZHIsIFBQX1NlbGZDVEwsIHNlbGZfY29udHJvbCApOw0KDQoJREVMQVko IDUwMDAwMCApOw0KfQ0KDQpzdGF0aWMgaW50DQpkZXRlY3RfdHAoc3RydWN0 IGNzX3NvZnRjICpzYywgaW50IHVuaXQpDQp7DQoJaW50IGk7DQoJY2hhciAq bmFtZSA9IGNzZHJpdmVyLm5hbWU7DQoNCglpZiAoYm9vdHZlcmJvc2UpDQoJ CXByaW50ZihDU19OQU1FIiUxZDogYXR0ZW1wdGluZyBUUFxuIiwgdW5pdCk7 DQoNCgljc193cml0ZXJlZyhzYy0+bmljX2FkZHIsIFBQX0xpbmVDVEwsIHNj LT5saW5lX2N0bCAmIH5BVUlfT05MWSk7DQoJY29udHJvbF9kY19kYyhzYywg MCk7DQoJREVMQVkoIDE1MDAwMCApOw0KDQoJaWYgKChjc19yZWFkcmVnKHNj LT5uaWNfYWRkciwgUFBfTGluZVNUKSZMSU5LX09LKT09MCkNCgkJcmV0dXJu IDA7DQoNCgkvKg0KCSAqIFRoaXMgY29kZSBpcyBmb3IgQ1M4OTIwIG9ubHku IENvZGUgZm9yIENTODkwMCBpc24ndCBpbXBsZW1lbnRlZCANCgkgKi8NCglj c193cml0ZXJlZyhzYy0+bmljX2FkZHIsIFBQX0F1dG9OZWdDVEwsc2MtPmF1 dG9fbmVnX2NuZiAmIEFVVE9fTkVHX01BU0spOw0KCWlmKChzYy0+YXV0b19u ZWdfY25mICYgQVVUT19ORUdfQklUUykgPT0gQVVUT19ORUdfRU5BQkxFKSB7 DQoJCWlmIChib290dmVyYm9zZSkNCgkJCXByaW50ZihDU19OQU1FIiUxZDog bmVnb3RpYXRpbmcgZHVwbGV4Li4uXG4iLCB1bml0KTsNCgkJZm9yKGk9MDtj c19yZWFkcmVnKHNjLT5uaWNfYWRkciwgUFBfQXV0b05lZ1NUKSZBVVRPX05F R19CVVNZO2krKykgew0KCQkJaWYoaSA+IDQwMDAwKSB7DQoJCQkJcHJpbnRm KENTX05BTUUiJTFkOiBmdWxsL2hhbGYgZHVwbGV4IGF1dG8gbmVnb3RpYXRp b24gdGltZW91dFxuIiwgdW5pdCk7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlE RUxBWSgxMDAwKTsNCgkJfQ0KCX0NCg0KCWlmIChib290dmVyYm9zZSkNCgkJ aWYoY3NfcmVhZHJlZyhzYy0+bmljX2FkZHIsIFBQX0F1dG9OZWdTVCkgJiBG RFhfQUNUSVZFKQ0KCQkJcHJpbnRmKENTX05BTUUiJTFkOiB1c2luZyBmdWxs IGR1cGxleFxuIiwgdW5pdCk7DQoJCWVsc2UNCgkJCXByaW50ZihDU19OQU1F IiUxZDogdXNpbmcgaGFsZiBkdXBsZXhcbiIsIHVuaXQpOw0KCS8qDQoJICog RW5kIG9mIENTODkyMCBjb2RlDQoJICovDQoNCglyZXR1cm4gQV9DTkZfTUVE SUFfMTBCX1Q7DQp9DQoNCi8qDQogKiBXaWxsIGJlIHJld3JpdHRlbiBmcm9t IExpbnV4IGRyaXZlci4NCiAqLw0Kc3RhdGljIGludA0KZGV0ZWN0X2F1aShz dHJ1Y3QgY3Nfc29mdGMgKnNjLCBpbnQgdW5pdCkNCnsNCglyZXR1cm4gMDsN Cn0NCg0KLyoNCiAqIFdpbGwgYmUgcmV3cml0dGVuIGZyb20gTGludXggZHJp dmVyLg0KICovDQpzdGF0aWMgaW50DQpkZXRlY3RfYm5jKHN0cnVjdCBjc19z b2Z0YyAqc2MsIGludCB1bml0KQ0Kew0KCXJldHVybiAwOw0KfQ0KDQpzdGF0 aWMgaW50DQpjc19jczg5eDBfcHJvYmUoc3RydWN0IGlzYV9kZXZpY2UgKmRl dikNCnsNCgl1bnNpZ25lZCByZXZfdHlwZSA9IDA7DQoJaW50IGksIGlycSwg cmVzdWx0Ow0KCWludCBpb2Jhc2UgPSBkZXYtPmlkX2lvYmFzZTsNCglpbnQg dW5pdCA9IGRldi0+aWRfdW5pdDsNCglpbnQgZWVwcm9tX2J1ZmZbQ0hLU1VN X0xFTl07DQoJaW50IGNoaXBfdHlwZTsNCgljaGFyIGNoaXBfcmV2aXNpb247 DQoJY2hhciAqbmFtZSA9IGNzZHJpdmVyLm5hbWU7DQoJc3RydWN0IGNzX3Nv ZnRjICpzYyA9ICZjc19zb2Z0Y1tkZXYtPmlkX3VuaXRdOw0KDQoJaWYoKGlu dyhpb2Jhc2UrQUREX1BPUlQpICYgQUREX01BU0spICE9IEFERF9TSUcpIHsN CgkJLyoNCgkJICogVHJ5aW5nIHRvIHJlc2V0IGNoaXANCgkJICovDQoJCXBy aW50ZihDU19OQU1FIiUxZDogdHJ5aW5nIHRvIHJlc2V0IHRoZSBjaGlwLlxu IiwgdW5pdCk7DQoJCW91dHcoaW9iYXNlK0FERF9QT1JULCBQUF9TZWxmQ1RM KTsNCgkJaSA9IGludyhpb2Jhc2UrREFUQV9QT1JUKTsNCgkJb3V0dyhpb2Jh c2UrQUREX1BPUlQsIFBQX1NlbGZDVEwpOw0KCQlvdXR3KGlvYmFzZStEQVRB X1BPUlQsIGkgfCBQT1dFUl9PTl9SRVNFVCk7DQoJCWlmKChpbncoaW9iYXNl K0FERF9QT1JUKSAmIEFERF9NQVNLKSAhPSBBRERfU0lHKQ0KCQkJcmV0dXJu IDA7DQoJfQ0KDQoJb3V0dyhpb2Jhc2UrQUREX1BPUlQsIFBQX0NoaXBJRCk7 DQoJaWYoaW53KGlvYmFzZStEQVRBX1BPUlQpICE9IENISVBfRUlTQV9JRF9T SUcpDQoJCXJldHVybiAwOw0KDQoJc2MtPm5pY19hZGRyID0gaW9iYXNlOw0K DQoJcmV2X3R5cGUgPSBjc19yZWFkcmVnKGlvYmFzZSwgUFJPRFVDVF9JRF9B REQpOw0KCWNoaXBfdHlwZSA9IHJldl90eXBlICYgflJFVklTT05fQklUUzsN CgljaGlwX3JldmlzaW9uID0gKChyZXZfdHlwZSAmIFJFVklTT05fQklUUykg Pj4gOCkgKyAnQSc7DQoNCglzYy0+c2VuZF9jbWQgPSBUWF9DUzg5MjBfQUZU RVJfQUxMOw0KDQoJLyoNCgkgKglyZXNldF9jaGlwKGRldik7IFdlIG5lZWRu J3QgaXQuDQoJICovDQoNCgkvKg0KCSAqIEVFUFJPTQ0KCSAqLw0KDQoJaWYo KGNzX3JlYWRyZWcoaW9iYXNlLCBQUF9TZWxmU1QpICYgRUVQUk9NX1BSRVNF TlQpID09IDApDQoJCXByaW50ZihDU19OQU1FIiUxZDogTm8gRUVQUk9NLCBy ZWx5aW5nIG9uIGNvbW1hbmQgbGluZS4uLlxuIiwNCgkJCXVuaXQpOw0KCWVs c2UNCgkJaWYgKGdldF9lZXByb21fZGF0YShzYyxTVEFSVF9FRVBST01fREFU QSxDSEtTVU1fTEVOLA0KCQkJCSAgICBlZXByb21fYnVmZik8MCkNCgkJCXBy aW50ZihDU19OQU1FIiUxZDogRUVQUk9NIHJlYWQgZmFpbGVkLCAiDQoJCQkJ InJlbHlpbmcgb24gY29tbWFuZCBsaW5lLlxuIiwgdW5pdCk7DQoJCWVsc2UN CgkJCWlmIChnZXRfZWVwcm9tX2Nrc3VtKFNUQVJUX0VFUFJPTV9EQVRBLENI S1NVTV9MRU4sDQoJCQkJCSAgICAgZWVwcm9tX2J1ZmYpPDApDQoJCQkJcHJp bnRmKCBDU19OQU1FIiUxZDogRUVQUk9NIGNoZWtzdW0gYmFkLCAiDQoJCQkJ CSJyZWx5aW5nIG9uIGNvbW1hbmQgbGluZS5cbiIsIHVuaXQgKTsNCgkJCWVs c2Ugew0KCQkJCWlmICghc2MtPmF1dG9fbmVnX2NuZikNCgkJCQkJc2MtPmF1 dG9fbmVnX2NuZiA9DQoJCQkJCSAgICBlZXByb21fYnVmZltBVVRPX05FR19D TkZfT0ZGU0VULzJdOw0KCQkJCWlmICghc2MtPmFkYXB0ZXJfY25mKQ0KCQkJ CQlzYy0+YWRhcHRlcl9jbmYgPSANCgkJCQkJICAgIGVlcHJvbV9idWZmW0FE QVBURVJfQ05GX09GRlNFVC8yXTsNCgkJCQlzYy0+aXNhX2NvbmZpZyA9IGVl cHJvbV9idWZmW0lTQV9DTkZfT0ZGU0VULzJdOw0KDQoJCQkJZm9yIChpPTA7 IGk8RVRIRVJfQUREUl9MRU4vMjsgaSsrKSB7DQoJCQkJCXNjLT5hcnBjb20u YWNfZW5hZGRyW2kqMl09DQoJCQkJCQkJZWVwcm9tX2J1ZmZbaV07DQoJCQkJ CXNjLT5hcnBjb20uYWNfZW5hZGRyW2kqMisxXT0NCgkJCQkJCQllZXByb21f YnVmZltpXSA+PiA4Ow0KCQkJCX0NCg0KCQkJCWlmIChkZXYtPmlkX2lycSA8 PSAwKSB7DQoJCQkJCWlycSA9IGNzX3JlYWRyZWcoIGlvYmFzZSwgDQoJCQkJ CQlQUF9DUzg5MjBfSVNBSU5UKSAmIDB4ZmY7DQoJCQkJCWlmIChpcnEgIT0g MCAmJiBpcnEgPCBDUzg5MjBfTk9fSU5UUykNCgkJCQkJCWRldi0+aWRfaXJx ID0gKDEgPDwgaXJxKTsNCgkJCQl9DQoJCQkJaWYgKGRldi0+aWRfZHJxIDwg MCkNCgkJCQkJZGV2LT5pZF9kcnE9Y3NfcmVhZHJlZyhpb2Jhc2UsIA0KCQkJ CQkJUFBfQ1M4OTIwX0lTQURNQSkgJiAweDBmOw0KCQkJfQ0KDQoJaWYgKGRl di0+aWRfaXJxPjApIHsNCgkJZm9yIChpcnE9MCwgaT1kZXYtPmlkX2lycTsg aTsgaSA9IGkgPj4gMSkNCgkJCWlycSsrOw0KCQljc193cml0ZXJlZyhpb2Jh c2UsIFBQX0NTODkyMF9JU0FJTlQsIC0taXJxKTsNCgl9IGVsc2Ugew0KCQlw cmludGYoQ1NfTkFNRSIlMWQ6IGluY29ycmVjdCBpcnFcbiIsIHVuaXQpOw0K CQlyZXR1cm4gMDsNCgl9DQovKg0KICogVGVtcG9yYXJ5IGRpc2FibGVkDQog Kg0KCWlmIChkZXYtPmlkX2RycT4wKQ0KCQljc193cml0ZXJlZyhpb2Jhc2Us IFBQX0NTODkyMF9JU0FETUEsIGRldi0+aWRfZHJxKTsNCgllbHNlIHsNCgkJ cHJpbnRmKCBDU19OQU1FIiUxZDogaW5jb3JyZWN0IGRycVxuIiwgdW5pdCAp Ow0KCQlyZXR1cm4gMDsNCgl9DQoqLw0KDQoJaWYgKGJvb3R2ZXJib3NlKQ0K CQkgcHJpbnRmKENTX05BTUUiJTFkOiBtb2RlbCBDUzg5JWMwJXMgcmV2ICVj XG4iDQoJCQlDU19OQU1FIiUxZDogbWVkaWEgJXMlcyVzXG4iDQoJCQlDU19O QU1FIiUxZDogaXJxICVkIGRycSAlZFxuIiwNCgkJCXVuaXQsDQoJCQljaGlw X3R5cGU9PUNTODkwMCA/ICcwJyA6ICcyJywNCgkJCWNoaXBfdHlwZT09Q1M4 OTIwTSA/ICJNIiA6ICIiLA0KCQkJY2hpcF9yZXZpc2lvbiwNCgkJCXVuaXQs DQoJCQkoY3Nfc29mdGNbZGV2LT5pZF91bml0XS5hZGFwdGVyX2NuZiAmIEFf Q05GXzEwQl9UKSA/DQoJCQkJIlJKLTQ1IiA6ICIiLA0KCQkJKGNzX3NvZnRj W2Rldi0+aWRfdW5pdF0uYWRhcHRlcl9jbmYgJiBBX0NORl9BVUkpICAgPw0K CQkJCSIgQVVJIiAgOiAiIiwNCgkJCShjc19zb2Z0Y1tkZXYtPmlkX3VuaXRd LmFkYXB0ZXJfY25mICYgQV9DTkZfMTBCXzIpID8NCgkJCQkiIEJOQyIgIDog IiIsDQoJCQl1bml0LCBpcnEsIGRldi0+aWRfZHJxKTsNCg0KCWlmICgoc2Mt PmFkYXB0ZXJfY25mICYgQV9DTkZfRVhUTkRfMTBCXzIpICYmDQoJICAgIChz Yy0+YWRhcHRlcl9jbmYgJiBBX0NORl9MT1dfUlhfU1FVRUxDSCkpDQoJCXNj LT5saW5lX2N0bCA9IExPV19SWF9TUVVFTENIOw0KCWVsc2UNCgkJc2MtPmxp bmVfY3RsID0gMDsNCg0KCXN3aXRjaCAoc2MtPmFkYXB0ZXJfY25mICYgQV9D TkZfTUVESUFfVFlQRSkgew0KCSAgY2FzZSBBX0NORl9NRURJQV8xMEJfVDoN CgkgICAgcmVzdWx0ID0gc2MtPmFkYXB0ZXJfY25mICYgQV9DTkZfMTBCX1Q7 DQoJICAgIGJyZWFrOw0KCSAgY2FzZSBBX0NORl9NRURJQV9BVUk6DQoJICAg IHJlc3VsdCA9IHNjLT5hZGFwdGVyX2NuZiAmIEFfQ05GX0FVSTsNCgkgICAg YnJlYWs7DQoJICBjYXNlIEFfQ05GX01FRElBXzEwQl8yOg0KCSAgICByZXN1 bHQgPSBzYy0+YWRhcHRlcl9jbmYgJiBBX0NORl8xMEJfMjsNCgkgICAgYnJl YWs7DQoJICBkZWZhdWx0Og0KCSAgICByZXN1bHQgPSBzYy0+YWRhcHRlcl9j bmYgJiAoQV9DTkZfMTBCX1QgfCBBX0NORl9BVUkgfCBBX0NORl8xMEJfMik7 DQoJfQ0KDQoJaWYgKCFyZXN1bHQpIHsNCgkJcHJpbnRmKENTX05BTUUiJTFk OiB1bmF2YWlsYWJsZSBtZWRpYSFcbiIsIHVuaXQpOw0KCQlyZXR1cm4gMDsN Cgl9DQoNCglzd2l0Y2ggKHNjLT5hZGFwdGVyX2NuZiAmIEFfQ05GX01FRElB X1RZUEUpew0KDQoJICBjYXNlIEFfQ05GX01FRElBXzEwQl9UOg0KCSAgICBy ZXN1bHQgPSBkZXRlY3RfdHAoc2MsIHVuaXQpOw0KCSAgICBpZiAoIXJlc3Vs dCkNCgkJICAgIHByaW50ZihDU19OQU1FIiUxZDogMTBCYXNlLVQgKFJKLTQ1 KSBoYXMgbm8gY2FibGVcbiIsDQoJCQkgICB1bml0KTsNCgkgICAgaWYgKHNj LT5hdXRvX25lZ19jbmYgJiBJTU1fQklUKQ0KCQkgICAgcmVzdWx0ID0gQV9D TkZfTUVESUFfMTBCX1Q7DQoJICAgIGJyZWFrOw0KDQoJICBjYXNlIEFfQ05G X01FRElBX0FVSToNCgkgICAgcmVzdWx0ID0gZGV0ZWN0X2F1aShzYywgdW5p dCk7DQoJICAgIGlmICghcmVzdWx0KQ0KCQkgICAgcHJpbnRmKENTX05BTUUi JTFkOiAxMEJhc2UtNSAoQVVJKSBoYXMgbm8gY2FibGVcbiIsIHVuaXQpOw0K CSAgICBpZiAoc2MtPmF1dG9fbmVnX2NuZiAmIElNTV9CSVQpDQoJCSAgICBy ZXN1bHQgPSBBX0NORl9NRURJQV9BVUk7DQoJICAgIGJyZWFrOw0KDQoJICBj YXNlIEFfQ05GX01FRElBXzEwQl8yOg0KCSAgICByZXN1bHQgPSBkZXRlY3Rf Ym5jKHNjLCB1bml0KTsNCgkgICAgaWYgKCFyZXN1bHQpDQoJCSAgICBwcmlu dGYoQ1NfTkFNRSIlMWQ6IDEwQmFzZS0yIChCTkMpIGhhcyBubyBjYWJsZVxu IiwgdW5pdCk7DQoJICAgIGlmIChzYy0+YXV0b19uZWdfY25mICYgSU1NX0JJ VCkNCgkJICAgIHJlc3VsdCA9IEFfQ05GX01FRElBXzEwQl8yOw0KCSAgICBi cmVhazsNCg0KCSAgY2FzZSBBX0NORl9NRURJQV9BVVRPOg0KCSAgICBjc193 cml0ZXJlZyhzYy0+bmljX2FkZHIsIFBQX0xpbmVDVEwsDQoJCQlzYy0+bGlu ZV9jdGwgfCBBVVRPX0FVSV8xMEJBU0VUKTsNCgkgICAgaWYgKChzYy0+YWRh cHRlcl9jbmYgJiBBX0NORl8xMEJfVCkgJiYNCgkJKChyZXN1bHQ9ZGV0ZWN0 X3RwKHNjLCB1bml0KSkhPTApKQ0KCQkgICAgYnJlYWs7DQoJICAgIGlmICgo c2MtPmFkYXB0ZXJfY25mICYgQV9DTkZfQVVJICkgJiYNCgkJKChyZXN1bHQ9 ZGV0ZWN0X2F1aShzYywgdW5pdCkpIT0wKSkNCgkJICAgIGJyZWFrOw0KCSAg ICBpZiAoKHNjLT5hZGFwdGVyX2NuZiAmIEFfQ05GXzEwQl8yKSAmJg0KCQko KHJlc3VsdD1kZXRlY3RfYm5jKHNjLCB1bml0KSkhPTApKQ0KCQkgICAgYnJl YWs7DQoJICAgIHByaW50ZihDU19OQU1FIiUxZDogbm8gbWVkaWEgZGV0ZWN0 ZWRcbiIsIHVuaXQpOw0KCSAgICByZXR1cm4gMDsNCgl9DQoNCglzd2l0Y2gg KHJlc3VsdCl7DQoJICBjYXNlIDA6DQoJICAgIHByaW50ZihDU19OQU1FIiUx ZDogbm8gY2FibGUgYXR0YWNoZWQgdG8gY29uZmlndXJlZCBtZWRpYVxuIiwg dW5pdCk7DQoJICAgIGJyZWFrOw0KCSAgY2FzZSBBX0NORl9NRURJQV8xMEJf VDoNCgkgICAgaWYgKGJvb3R2ZXJib3NlKQ0KCQkgICAgcHJpbnRmKENTX05B TUUiJTFkOiB1c2luZyAxMEJhc2UtVCAoUkotNDUpXG4iLCB1bml0KTsNCgkg ICAgYnJlYWs7DQoJICBjYXNlIEFfQ05GX01FRElBX0FVSToNCgkgICAgaWYg KGJvb3R2ZXJib3NlKQ0KCQkgICAgcHJpbnRmKENTX05BTUUiJTFkOiB1c2lu ZyAxMEJhc2UtNSAoQVVJKVxuIiwgdW5pdCk7DQoJICAgIGJyZWFrOw0KCSAg Y2FzZSBBX0NORl9NRURJQV8xMEJfMjoNCgkgICAgaWYgKGJvb3R2ZXJib3Nl KQ0KCQkgICAgcHJpbnRmKENTX05BTUUiJTFkOiB1c2luZyAxMEJhc2UtMiAo Qk5DKVxuIiwgdW5pdCk7DQoJICAgIGJyZWFrOw0KCSAgZGVmYXVsdDoNCgkg ICAgcHJpbnRmKENTX05BTUUiJTFkOiB1bmV4cGVjdGVkIHJlc3VsdCBpbiBt ZWRpYSBkZXRlY3QuXG4iLCB1bml0KTsNCgkgICAgcmV0dXJuIDA7DQoJfQ0K DQoJcmV0dXJuIFBQX0lTQUlPQjsNCn0NCg0KLyoNCiAqIERldGVybWluZSBp ZiB0aGUgZGV2aWNlIGlzIHByZXNlbnQNCiAqDQogKiAgIG9uIGVudHJ5Og0K ICogCWEgcG9pbnRlciB0byBhbiBpc2FfZGV2aWNlIHN0cnVjdA0KICogICBv biBleGl0Og0KICoJTlVMTCBpZiBkZXZpY2Ugbm90IGZvdW5kDQogKglvciAj IG9mIGkvbyBhZGRyZXNzZXMgdXNlZCAoaWYgZm91bmQpDQogKi8NCnN0YXRp YyBpbnQNCmNzX3Byb2JlKHN0cnVjdCBpc2FfZGV2aWNlICpkZXYpDQp7DQoJ aW50IG5wb3J0czsNCg0KCW5wb3J0cyA9IGNzX2NzODl4MF9wcm9iZShkZXYp Ow0KCWlmIChucG9ydHMpDQoJCXJldHVybiAobnBvcnRzKTsNCg0KCXJldHVy biAoMCk7DQp9DQoNCi8qDQogKiBJbnN0YWxsIHRoZSBpbnRlcmZhY2UgaW50 byBrZXJuZWwgbmV0d29ya2luZyBkYXRhIHN0cnVjdHVyZXMNCiAqLw0Kc3Rh dGljIGludA0KY3NfYXR0YWNoKHN0cnVjdCBpc2FfZGV2aWNlICpkZXYpDQp7 DQoJc3RydWN0IGNzX3NvZnRjICpzYyA9ICZjc19zb2Z0Y1tkZXYtPmlkX3Vu aXRdOw0KCXN0cnVjdCBpZm5ldCAqaWZwID0gJihzYy0+YXJwY29tLmFjX2lm KTsNCg0KCWlmICghaWZwLT5pZl9uYW1lKSB7DQoJCWlmcC0+aWZfc29mdGM9 c2M7DQoJCWlmcC0+aWZfdW5pdD1kZXYtPmlkX3VuaXQ7DQoJCWlmcC0+aWZf bmFtZT1jc2RyaXZlci5uYW1lOw0KCQlpZnAtPmlmX291dHB1dD1ldGhlcl9v dXRwdXQ7DQoJCWlmcC0+aWZfc3RhcnQ9Y3Nfc3RhcnQ7DQoJCWlmcC0+aWZf aW9jdGw9Y3NfaW9jdGw7DQoJCWlmcC0+aWZfd2F0Y2hkb2c9Y3Nfd2F0Y2hk b2c7DQoJCWlmcC0+aWZfaW5pdD1jc19pbml0Ow0KCQlpZnAtPmlmX3NuZC5p ZnFfbWF4bGVuPSBJRlFfTUFYTEVOOw0KCQkvKg0KCQkgKiAgTUlCIERBVEEN CgkJIGlmcC0+aWZfbGlua21pYj0mc2MtPm1pYmRhdGE7DQoJCSBpZnAtPmlm X2xpbmttaWJsZW49c2l6ZW9mIHNjLT5taWJkYXRhOw0KCQkgKi8NCg0KCQlp ZnAtPmlmX2ZsYWdzPShJRkZfQlJPQURDQVNUIHwgSUZGX1NJTVBMRVggfCBJ RkZfTVVMVElDQVNUICk7DQoNCgkJLyoNCgkJICogdGhpcyBjb2RlIHN0aWxs IGluIHByb2dyZXNzIChETUEgc3VwcG9ydCkNCgkJICoNCg0KCQlzYy0+cmVj dl9yaW5nPW1hbGxvYyhDU19ETUFfQlVGRkVSX1NJWkU8PDEsIE1fREVWQlVG LCBNX05PV0FJVCk7DQoJCWlmIChzYy0+cmVjdl9yaW5nID09IE5VTEwpIHsN CgkJCWxvZyhMT0dfRVJSLENTX05BTUUNCgkJCSIlZDogQ291bGRuJ3QgYWxs b2NhdGUgbWVtb3J5IGZvciBOSUNcbiIsIGRldi0+aWRfdW5pdCk7DQoJCQly ZXR1cm4oMCk7DQoJCX0NCgkJaWYgKChzYy0+cmVjdl9yaW5nLShzYy0+cmVj dl9yaW5nICYgMHgxRkZGRikpDQoJCSAgICA8ICgxMjgqMTAyNC1DU19ETUFf QlVGRkVSX1NJWkUpKQ0KCQkgICAgc2MtPnJlY3ZfcmluZys9MTYqMTAyNDsN Cg0KCQlzYy0+YnVmZmVyPW1hbGxvYyhFVEhFUl9NQVhfTEVOLUVUSEVSX0NS Q19MRU4sTV9ERVZCVUYsTV9OT1dBSVQpOw0KCQlpZiAoc2MtPmJ1ZmZlciA9 PSBOVUxMKSB7DQoJCQlsb2coTE9HX0VSUixDU19OQU1FDQoJCQkgICAgIiVk OiBDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIE5JQ1xuIiwNCgkJCSAg ICBkZXYtPmlkX3VuaXQpOw0KCQkJcmV0dXJuKDApOw0KCQl9DQoNCgkJICov DQoJCQ0KCQlpZl9hdHRhY2goaWZwKTsNCgkJY3Nfc3RvcCggc2MgKTsNCgkJ ZXRoZXJfaWZhdHRhY2goaWZwKTsNCgl9DQoNCglpZiAoYm9vdHZlcmJvc2Up DQoJCXByaW50ZihDU19OQU1FIiVkOiBldGhlcm5ldCBhZGRyZXNzICU2RFxu IiwNCgkJICAgICAgIGlmcC0+aWZfdW5pdCwgc2MtPmFycGNvbS5hY19lbmFk ZHIsICI6Iik7DQoNCiNpZiBOQlBGSUxURVIgPiAwDQoJYnBmYXR0YWNoKGlm cCwgRExUX0VOMTBNQiwgc2l6ZW9mIChzdHJ1Y3QgZXRoZXJfaGVhZGVyKSk7 DQojZW5kaWYNCglyZXR1cm4gMTsNCn0NCg0KLyoNCiAqIEluaXRpYWxpemUg dGhlIGJvYXJkDQogKi8NCnN0YXRpYyB2b2lkDQpjc19pbml0KHZvaWQgKnhz YykNCnsNCglzdHJ1Y3QgY3Nfc29mdGMgKnNjPShzdHJ1Y3QgY3Nfc29mdGMg Kil4c2M7DQoJc3RydWN0IGlmbmV0ICppZnAgPSAmc2MtPmFycGNvbS5hY19p ZjsNCglpbnQgaSxzLHJlc3VsdDsNCg0KCWlmIChpZnAtPmlmX2FkZHJsaXN0 ID09IChzdHJ1Y3QgaWZhZGRyICopIDApDQoJCXJldHVybjsNCg0KCS8qDQoJ ICogcmVzZXQgd2hhdGNoZG9nIHRpbWVyDQoJICovDQoJaWZwLT5pZl90aW1l cj0wOw0KCXNjLT5idWZfbGVuID0gMDsNCgkNCglzPXNwbGltcCgpOw0KDQoJ LyoNCgkgKiBIYXJkd2FyZSBpbml0aWFsaXphdGlvbiBvZiBjcw0KCSAqLw0K DQoJY3Nfd3JpdGVyZWcoc2MtPm5pY19hZGRyLCBQUF9MaW5lQ1RMLA0KCQkg ICAgY3NfcmVhZHJlZyggc2MtPm5pY19hZGRyLCBQUF9MaW5lQ1RMICkgfA0K CQkgICAgU0VSSUFMX1JYX09OIHwgU0VSSUFMX1RYX09OKTsNCg0KCWNzX3dy aXRlcmVnKHNjLT5uaWNfYWRkciwgUFBfUnhDVEwsIFJYX0RFRl9BQ0NFUFQg fCBSWF9NVUxUQ0FTVF9BQ0NFUFQpOw0KDQogICAgICAgIHNjLT5jdXJyX3J4 X2NmZyA9IFJYX09LX0VOQkw7DQogICAgICAgIA0KCWlmIChzYy0+aXNhX2Nv bmZpZyAmIFNUUkVBTV9UUkFOU0ZFUikNCgkJc2MtPmN1cnJfcnhfY2ZnIHw9 IFJYX1NUUkVBTV9FTkJMOw0KCWNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwg UFBfUnhDRkcsIHNjLT5jdXJyX3J4X2NmZyk7DQoNCgljc193cml0ZXJlZyhz Yy0+bmljX2FkZHIsIFBQX1R4Q0ZHLCBUWF9MT1NUX0NSU19FTkJMIHwNCgkJ ICAgIFRYX1NRRV9FUlJPUl9FTkJMIHwgVFhfT0tfRU5CTCB8IFRYX0xBVEVf Q09MX0VOQkwgfA0KCQkgICAgVFhfSkJSX0VOQkwgfCBUWF9BTllfQ09MX0VO QkwgfCBUWF8xNl9DT0xfRU5CTCk7DQoNCgljc193cml0ZXJlZyhzYy0+bmlj X2FkZHIsIFBQX0J1ZkNGRywgUkVBRFlfRk9SX1RYX0VOQkwgfA0KCQkgICAg UlhfTUlTU19DT1VOVF9PVlJGTE9XX0VOQkwgfCBUWF9DT0xfQ09VTlRfT1ZS RkxPV19FTkJMIHwNCgkJICAgIFRYX1VOREVSUlVOX0VOQkwgLyp8IFJYX0RN QV9FTkJMKi8pOw0KDQoJLyoNCgkgKiBOb3cgZW5hYmxlIGV2ZXJ5dGhpbmcN CgkgKi8NCi8qDQojaWZkZWYJQ1NfVVNFXzY0S19ETUENCgljc193cml0ZXJl ZyhzYy0+bmljX2FkZHIsIFBQX0J1c0NUTCwgRU5BQkxFX0lSUSB8IFJYX0RN QV9TSVpFXzY0Syk7DQogICAgICAgICNlbHNlDQoNCiAgICAgICAgY3Nfd3Jp dGVyZWcoc2MtPm5pY19hZGRyLCBQUF9CdXNDVEwsIEVOQUJMRV9JUlEpOw0K I2VuZGlmDQoqLw0KCWNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwgUFBfQnVz Q1RMLCBFTkFCTEVfSVJRKTsNCgkNCgkvKg0KCSAqIFNldCBydW5uaW5nIGFu ZCBjbGVhciBvdXRwdXQgYWN0aXZlIGZsYWdzDQoJICovDQoJc2MtPmFycGNv bS5hY19pZi5pZl9mbGFncyB8PSBJRkZfUlVOTklORzsNCglzYy0+YXJwY29t LmFjX2lmLmlmX2ZsYWdzICY9IH5JRkZfT0FDVElWRTsNCg0KCS8qDQoJICog U3RhcnQgc2VuZGluZyBwcm9jZXNzDQoJICovDQoJY3Nfc3RhcnQoaWZwKTsN Cg0KCSh2b2lkKSBzcGx4KHMpOw0KfQ0KDQovKg0KICogR2V0IHRoZSBwYWNr ZXQgZnJvbSB0aGUgYm9hcmQgYW5kIHNlbmQgaXQgdG8gdGhlIHVwcGVyIGxh eWVyDQogKiB2aWEgZXRoZXJfaW5wdXQoKS4NCiAqLw0Kc3RhdGljIGludA0K Y3NfZ2V0X3BhY2tldChzdHJ1Y3QgY3Nfc29mdGMgKnNjKQ0Kew0KCXN0cnVj dCBpZm5ldCAqaWZwID0gJihzYy0+YXJwY29tLmFjX2lmKTsNCglpbnQgaW9i YXNlID0gc2MtPm5pY19hZGRyLCBzdGF0dXMsIGxlbmd0aDsNCglzdHJ1Y3Qg ZXRoZXJfaGVhZGVyICplaDsNCglzdHJ1Y3QgbWJ1ZiAqbTsNCg0KCXN0YXR1 cyA9IGludyhpb2Jhc2UgKyBSWF9GUkFNRV9QT1JUKTsNCglsZW5ndGggPSBp bncoaW9iYXNlICsgUlhfRlJBTUVfUE9SVCk7DQoNCiNpZmRlZiBDU19ERUJV Rw0KCXByaW50ZihDU19OQU1FIiUxZDogcmN2ZDogc3RhdCAleCwgbGVuICVk XG4iLA0KCQlpZnAtPmlmX3VuaXQsIHN0YXR1cywgbGVuZ3RoKTsNCiNlbmRp Zg0KDQoJaWYgKCEoc3RhdHVzICYgUlhfT0spKSB7DQojaWZkZWYgQ1NfREVC VUcNCgkJcHJpbnRmKENTX05BTUUiJTFkOiBiYWQgcGt0IHN0YXQgJXhcbiIs IGlmcC0+aWZfdW5pdCwgc3RhdHVzKTsNCiNlbmRpZg0KCQlpZnAtPmlmX2ll cnJvcnMrKzsNCgkJcmV0dXJuIC0xOw0KCX0NCg0KCU1HRVRIRFIobSwgTV9E T05UV0FJVCwgTVRfREFUQSk7DQoJaWYgKG09PU5VTEwpDQoJCXJldHVybiAt MTsNCg0KCWlmIChsZW5ndGggPiBNSExFTikgew0KCQlNQ0xHRVQobSwgTV9E T05UV0FJVCk7DQoJCWlmICghKG0tPm1fZmxhZ3MgJiBNX0VYVCkpIHsNCgkJ CW1fZnJlZW0obSk7DQoJCQlyZXR1cm4gLTE7DQoJCX0NCgl9DQoNCgkvKiBJ bml0aWFsaXplIHBhY2tldCdzIGhlYWRlciBpbmZvICovDQoJbS0+bV9wa3Ro ZHIucmN2aWYgPSBpZnA7DQoJbS0+bV9wa3RoZHIubGVuID0gbGVuZ3RoOw0K CW0tPm1fbGVuID0gbGVuZ3RoOw0KDQoJLyogR2V0IHRoZSBkYXRhICovDQoJ aW5zdyhpb2Jhc2UgKyBSWF9GUkFNRV9QT1JULCBtLT5tX2RhdGEsIChsZW5n dGgrMSk+PjEpOw0KDQoJZWggPSBtdG9kKG0sIHN0cnVjdCBldGhlcl9oZWFk ZXIgKik7DQoNCiNpZiBOQlBGSUxURVIgPiAwDQoJaWYgKGlmcC0+aWZfYnBm KQ0KCQlicGZfbXRhcChpZnAsIG0pOw0KI2VuZGlmDQoNCglpZiAobGVuZ3Ro PT1FVEhFUl9NQVhfTEVOLUVUSEVSX0NSQ19MRU4pDQoJCURFTEFZKCA1NzAg KTsNCg0KI2lmZGVmIENTX0RFQlVHDQoJZm9yIChsZW5ndGgvPTI7IGxlbmd0 aDsgbGVuZ3RoLS0pDQoJCXByaW50ZigiICUwNHgiLCBtLT5tX2RhdGErbGVu Z3RoKTsNCglwcmludGYoICJcbiIgKTsNCiNlbmRpZg0KDQoJbS0+bV9wa3Ro ZHIubGVuIC09IHNpemVvZihzdHJ1Y3QgZXRoZXJfaGVhZGVyKTsNCgltLT5t X2xlbiAtPSBzaXplb2Yoc3RydWN0IGV0aGVyX2hlYWRlcik7DQoJbS0+bV9k YXRhICs9IHNpemVvZihzdHJ1Y3QgZXRoZXJfaGVhZGVyKTsNCg0KCS8qIEZl ZWQgdGhlIHBhY2tldCB0byB0aGUgdXBwZXIgbGF5ZXIgKi8NCglldGhlcl9p bnB1dChpZnAsIGVoLCBtKTsNCg0KCWlmcC0+aWZfaXBhY2tldHMrKzsNCg0K CXJldHVybiAwOw0KfQ0KDQovKg0KICogSGFuZGxlIGludGVycnVwdHMNCiAq Lw0Kdm9pZA0KY3NpbnRyKGludCB1bml0KQ0Kew0KCXN0cnVjdCBjc19zb2Z0 YyAqc2MgPSAmY3Nfc29mdGNbdW5pdF07DQoJc3RydWN0IGlmbmV0ICppZnAg PSAmKHNjLT5hcnBjb20uYWNfaWYpOw0KCWludCBzdGF0dXMsIHM7DQoNCiNp ZmRlZiBDU19ERUJVRw0KCXByaW50ZihDU19OQU1FIiUxZDogSW50ZXJydXB0 LlxuIiwgdW5pdCk7DQojZW5kaWYNCg0KCXdoaWxlICgoc3RhdHVzPWNzX3Jl YWR3b3JkKHNjLT5uaWNfYWRkciwgSVNRX1BPUlQpKSkgew0KDQojaWZkZWYg Q1NfREVCVUcNCgkJcHJpbnRmKCBDU19OQU1FIiUxZDpmcm9tIElTUTogJTA0 eFxuIiwgdW5pdCwgc3RhdHVzICk7DQojZW5kaWYNCg0KCQlzd2l0Y2ggKHN0 YXR1cyAmIElTUV9FVkVOVF9NQVNLKSB7DQoJCSAgY2FzZSBJU1FfUkVDRUlW RVJfRVZFTlQ6DQoJCSAgICBjc19nZXRfcGFja2V0KHNjKTsNCgkJICAgIGJy ZWFrOw0KDQoJCSAgY2FzZSBJU1FfVFJBTlNNSVRURVJfRVZFTlQ6DQoJCSAg ICBpZiAoc3RhdHVzICYgVFhfT0spDQoJCQkgICAgaWZwLT5pZl9vcGFja2V0 cysrOw0KCQkgICAgZWxzZQ0KCQkJICAgIGlmcC0+aWZfb2Vycm9ycysrOw0K CQkgICAgaWZwLT5pZl9mbGFncyAmPSB+SUZGX09BQ1RJVkU7DQoJCSAgICBp ZnAtPmlmX3RpbWVyID0gMDsNCgkJICAgIGJyZWFrOw0KDQoJCSAgY2FzZSBJ U1FfQlVGRkVSX0VWRU5UOg0KCQkgICAgaWYgKHN0YXR1cyAmIFJFQURZX0ZP Ul9UWCkgew0KCQkJICAgIGlmcC0+aWZfZmxhZ3MgJj0gfklGRl9PQUNUSVZF Ow0KCQkJICAgIGlmcC0+aWZfdGltZXIgPSAwOw0KCQkgICAgfQ0KDQoJCSAg ICBpZiAoc3RhdHVzICYgVFhfVU5ERVJSVU4pIHsNCgkJCSAgICBpZnAtPmlm X2ZsYWdzICY9IH5JRkZfT0FDVElWRTsNCgkJCSAgICBpZnAtPmlmX3RpbWVy ID0gMDsNCgkJCSAgICBpZnAtPmlmX29lcnJvcnMrKzsNCgkJICAgIH0NCgkJ ICAgIGJyZWFrOw0KDQoJCSAgY2FzZSBJU1FfUlhfTUlTU19FVkVOVDoNCgkJ ICAgIGlmcC0+aWZfaWVycm9ycys9KHN0YXR1cz4+Nik7DQoJCSAgICBicmVh azsNCg0KCQkgIGNhc2UgSVNRX1RYX0NPTF9FVkVOVDoNCgkJICAgIGlmcC0+ aWZfY29sbGlzaW9ucys9KHN0YXR1cz4+Nik7DQoJCSAgICBicmVhazsNCgkJ fQ0KCX0NCg0KCWlmICghKGlmcC0+aWZfZmxhZ3MgJiBJRkZfT0FDVElWRSkp IHsNCgkJY3Nfc3RhcnQoaWZwKTsNCgl9DQp9DQoNCi8qDQogKiBTYXZlIHRo ZSBkYXRhIGluIGJ1ZmZlcg0KICovDQoNCnN0YXRpYyB2b2lkDQpjc193cml0 ZV9tYnVmcyggc3RydWN0IGNzX3NvZnRjICpzYywgc3RydWN0IG1idWYgKm0g KQ0Kew0KCWludCBsZW47DQoJc3RydWN0IG1idWYgKm1wOw0KCXVuc2lnbmVk IGNoYXIgKmRhdGEsICpidWY7DQoNCglmb3IgKG1wPW0sIGJ1Zj1zYy0+YnVm ZmVyLCBzYy0+YnVmX2xlbj0wOyBtcCAhPSBOVUxMOyBtcD1tcC0+bV9uZXh0 KSB7DQoJCWxlbiA9IG1wLT5tX2xlbjsNCg0KCQkvKg0KCQkgKiBJZ25vcmUg ZW1wdHkgcGFydHMNCgkJICovDQoJCWlmICghbGVuKQ0KCQljb250aW51ZTsN Cg0KCQkvKg0KCQkgKiBGaW5kIGFjdHVhbCBkYXRhIGFkZHJlc3MNCgkJICov DQoJCWRhdGEgPSBtdG9kKG1wLCBjYWRkcl90KTsNCg0KCQliY29weSgoY2Fk ZHJfdCkgZGF0YSwgKGNhZGRyX3QpIGJ1ZiwgbGVuKTsNCgkJYnVmICs9IGxl bjsNCgkJc2MtPmJ1Zl9sZW4gKz0gbGVuOw0KCX0NCn0NCg0KDQpzdGF0aWMg dm9pZA0KY3NfeG1pdF9idWYoIHN0cnVjdCBjc19zb2Z0YyAqc2MgKQ0Kew0K CW91dHN3KHNjLT5uaWNfYWRkcitUWF9GUkFNRV9QT1JULCBzYy0+YnVmZmVy LCAoc2MtPmJ1Zl9sZW4rMSk+PjEpOw0KCXNjLT5idWZfbGVuID0gMDsNCn0N Cg0Kc3RhdGljIHZvaWQNCmNzX3N0YXJ0KHN0cnVjdCBpZm5ldCAqaWZwKQ0K ew0KCWludCBzLCBsZW5ndGg7DQoJc3RydWN0IG1idWYgKm0sICptcDsNCglz dHJ1Y3QgY3Nfc29mdGMgKnNjID0gaWZwLT5pZl9zb2Z0YzsNCg0KCXMgPSBz cGxpbXAoKTsNCg0KCWZvciAoOzspIHsNCgkJaWYgKHNjLT5idWZfbGVuKQ0K CQkJbGVuZ3RoID0gc2MtPmJ1Zl9sZW47DQoJCWVsc2Ugew0KCQkJSUZfREVR VUVVRSggJmlmcC0+aWZfc25kLCBtICk7DQoNCgkJCWlmIChtPT1OVUxMKSB7 DQoJCQkJKHZvaWQpIHNwbHgocyk7DQoJCQkJcmV0dXJuOw0KCQkJfQ0KDQoJ CQlmb3IgKGxlbmd0aD0wLCBtcD1tOyBtcCAhPSBOVUxMOyBtcD1tcC0+bV9u ZXh0KQ0KCQkJCWxlbmd0aCArPSBtcC0+bV9sZW47DQoNCgkJCS8qIFNraXAg emVyby1sZW5ndGggcGFja2V0cyAqLw0KCQkJaWYgKGxlbmd0aCA9PSAwKQ0K CQkJCWNvbnRpbnVlOw0KDQoJCQljc193cml0ZV9tYnVmcyhzYywgbSk7DQoN CiNpZiBOQlBGSUxURVIgPiAwDQoJCQlpZiAoaWZwLT5pZl9icGYpIHsNCgkJ CQlicGZfbXRhcChpZnAsIG0pOw0KCQkJfQ0KI2VuZGlmDQoNCgkJCW1fZnJl ZW0obSk7DQoJCX0NCg0KCQkvKg0KCQkgKiBJc3N1ZSBhIFNFTkQgY29tbWFu ZA0KCQkgKi8NCgkJb3V0dyhzYy0+bmljX2FkZHIrVFhfQ01EX1BPUlQsIHNj LT5zZW5kX2NtZCk7DQoJCW91dHcoc2MtPm5pY19hZGRyK1RYX0xFTl9QT1JU LCBsZW5ndGggKTsNCg0KCQkvKg0KCQkgKiBJZiB0aGVyZSdzIG5vIGZyZWUg c3BhY2UgaW4gdGhlIGJ1ZmZlciB0aGVuIGxlYXZlDQoJCSAqIHRoaXMgcGFj a2V0IGZvciB0aGUgbmV4dCB0aW1lOiBpbmRpY2F0ZSBvdXRwdXQgYWN0aXZl DQoJCSAqIGFuZCByZXR1cm4uDQoJCSAqLw0KCQlpZiAoIShjc19yZWFkcmVn KHNjLT5uaWNfYWRkciwgUFBfQnVzU1QpICYgUkVBRFlfRk9SX1RYX05PVykp IHsNCgkJCWlmcC0+aWZfdGltZXIgPSBzYy0+YnVmX2xlbjsNCgkJCSh2b2lk KSBzcGx4KHMpOw0KCQkJaWZwLT5pZl9mbGFncyB8PSBJRkZfT0FDVElWRTsN CgkJCXJldHVybjsNCgkJfQ0KDQogICAgICAgICAgICAgICAJY3NfeG1pdF9i dWYoc2MpOw0KDQoJCS8qDQoJCSAqIFNldCB0aGUgd2F0Y2hkb2cgdGltZXIg aW4gY2FzZSB3ZSBuZXZlciBoZWFyDQoJCSAqIGZyb20gYm9hcmQgYWdhaW4u IChJIGRvbid0IGtub3cgYWJvdXQgY29ycmVjdA0KCQkgKiB2YWx1ZSBmb3Ig dGhpcyB0aW1lb3V0KQ0KCQkgKi8NCgkJaWZwLT5pZl90aW1lciA9IGxlbmd0 aDsNCg0KCQkodm9pZCkgc3BseChzKTsNCgkJaWZwLT5pZl9mbGFncyB8PSBJ RkZfT0FDVElWRTsNCgkJcmV0dXJuOw0KCX0NCn0NCg0KLyoNCiAqIFN0b3Ag ZXZlcnl0aGluZyBvbiB0aGUgaW50ZXJmYWNlDQogKi8NCnN0YXRpYyB2b2lk DQpjc19zdG9wKHN0cnVjdCBjc19zb2Z0YyAqc2MpDQp7DQoJaW50IHMgPSBz cGxpbXAoKTsNCg0KCWNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwgUFBfUnhD RkcsIDApOw0KCWNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwgUFBfVHhDRkcs IDApOw0KCWNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwgUFBfQnVmQ0ZHLCAw KTsNCgljc193cml0ZXJlZyhzYy0+bmljX2FkZHIsIFBQX0J1c0NUTCwgMCk7 DQoNCglzYy0+YXJwY29tLmFjX2lmLmlmX2ZsYWdzICY9IH4oSUZGX1JVTk5J TkcgfCBJRkZfT0FDVElWRSk7DQoJc2MtPmFycGNvbS5hY19pZi5pZl90aW1l ciA9IDA7DQoNCgkodm9pZCkgc3BseChzKTsNCn0NCg0KLyoNCiAqIFJlc2V0 IHRoZSBpbnRlcmZhY2UNCiAqLw0Kc3RhdGljIHZvaWQNCmNzX3Jlc2V0KHN0 cnVjdCBjc19zb2Z0YyAqc2MpDQp7DQoJY3Nfc3RvcChzYyk7DQoJY3NfaW5p dChzYyk7DQp9DQoNCnN0YXRpYyBpbnQNCmNzX2lvY3RsKHJlZ2lzdGVyIHN0 cnVjdCBpZm5ldCAqaWZwLCBpbnQgY29tbWFuZCwgY2FkZHJfdCBkYXRhKQ0K ew0KCXN0cnVjdCBjc19zb2Z0YyAqc2M9aWZwLT5pZl9zb2Z0YzsNCglpbnQg cyxlcnJvcj0wOw0KDQojaWZkZWYgQ1NfREVCVUcNCglwcmludGYoQ1NfTkFN RSIlZDogaW9jdGwoJXgpXG4iLHNjLT5hcnBjb20uYWNfaWYuaWZfdW5pdCxj b21tYW5kKTsNCiNlbmRpZg0KDQoJcz1zcGxpbXAoKTsNCg0KCXN3aXRjaCAo Y29tbWFuZCkgew0KDQoJICBjYXNlIFNJT0NTSUZBRERSOg0KCSAgICB7DQoJ CSAgICBzdHJ1Y3QgaWZhZGRyICppZmEgPSAoc3RydWN0IGlmYWRkciAqKWRh dGE7DQoJCSAgICBzYy0+YXJwY29tLmFjX2lmLmlmX2ZsYWdzIHw9IElGRl9V UDsNCg0KCQkgICAgc3dpdGNoIChpZmEtPmlmYV9hZGRyLT5zYV9mYW1pbHkp IHsNCiNpZmRlZiBJTkVUDQoJCSAgICAgIGNhc2UgQUZfSU5FVDoNCgkJCWNz X2luaXQoc2MpOw0KCQkJYXJwX2lmaW5pdCgmc2MtPmFycGNvbSwgaWZhKTsN CgkJCWJyZWFrOw0KI2VuZGlmDQojaWZkZWYgSVBYDQoJCQkvKiBYWFgNCgkJ CSAqIFRoaXMgY29kZSBpcyB0YWtlbiB3aXRob3V0IGFueSB0ZXN0DQoJCQkg Ki8NCgkJICAgICAgY2FzZSBBRl9JUFg6DQoJCQl7DQoJCQkJcmVnaXN0ZXIg c3RydWN0IGlweF9hZGRyICppbmEgPQ0KCQkJCQkJJihJQV9TSVBYKGlmYSkt PnNpcHhfYWRkcik7DQoNCgkJCQlpZiAoaXB4X251bGxob3N0KCppbmEpKQ0K CQkJCQlpbmEtPnhfaG9zdCA9ICoodW5pb24gaXB4X2hvc3QqKQ0KCQkJCQkJ ICAgICAgKHNjLT5hcnBjb20uYWNfZW5hZGRyKTsNCgkJCQllbHNlIHsNCgkJ CQkJYmNvcHkoKGNhZGRyX3QpIGluYS0+eF9ob3N0LmNfaG9zdCwNCgkJCQkJ ICAgICAgKGNhZGRyX3QpIHNjLT5hcnBjb20uYWNfZW5hZGRyLA0KCQkJCQkg ICAgICBzaXplb2Yoc2MtPmFycGNvbS5hY19lbmFkZHIpKTsNCgkJCQl9DQoJ CQkJLyogU2V0IG5ldyBhZGRyZXNzICovDQoJCQkJY3NfaW5pdChzYy0+YXJw Y29tLmFjX2lmLmlmX3VuaXQpOw0KCQkJCWJyZWFrOw0KCQkJfQ0KI2VuZGlm DQoJCSAgICAgIGRlZmF1bHQ6DQoJCQljc19pbml0KHNjKTsNCgkJICAgIH0N CgkJICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KLyoNCiNpZmRlZiBTSU9D R0lGQUREUg0KCSAgY2FzZSBTSU9DR0lGQUREUjoNCiAgICAgICAgICAgIHsN CgkJc3RydWN0IGlmcmVxICogaWZyID0gKHN0cnVjdCBpZnJlcSAqKWRhdGE7 DQoJCXN0cnVjdCBzb2NrYWRkciAqIHNhID0gKHN0cnVjdCBzb2NrYWRkciAq KSZpZnItPmlmcl9kYXRhOw0KDQoJCWJjb3B5KChjYWRkcl90KXNjLT5zY19l bmFkZHIsDQoJCSAgICAgIChjYWRkcl90KXNhLT5zYV9kYXRhLCBFVEhFUl9B RERSX0xFTik7DQoJCWJyZWFrOw0KCSAgICB9DQojZW5kaWYNCiovDQojaWZk ZWYgU0lPQ0dJRlBIWVNBRERSDQoJICBjYXNlIFNJT0NHSUZQSFlTQUREUjoN CgkgICAgew0KCQlzdHJ1Y3QgaWZyZXEgKiBpZnIgPSAoc3RydWN0IGlmcmVx ICopZGF0YTsNCg0KCQliY29weSgoY2FkZHJfdClzYy0+c2NfZW5hZGRyLA0K CQkgICAgICAoY2FkZHJfdCkmaWZyLT5pZnJfZGF0YSwgRVRIRVJfQUREUl9M RU4pOw0KCQlicmVhazsNCgkgICAgfQ0KI2VuZGlmDQogICAgICAgICAgICAN CiNpZmRlZiBTSU9DU0lGRkxBR1MNCgkgIGNhc2UgU0lPQ1NJRkZMQUdTOg0K CSAgICB7DQoJCSAgICAvKg0KCQkgICAgICogU3dpdGNoIGludGVyZmFjZSBz dGF0ZSBiZXR3ZWVuICJydW5uaW5nIiBhbmQNCgkJICAgICAqICJzdG9wcGVk IiwgcmVmbGVjdGluZyB0aGUgVVAgZmxhZy4NCgkJICAgICAqLw0KCQkgICAg aWYgKHNjLT5hcnBjb20uYWNfaWYuaWZfZmxhZ3MgJiBJRkZfVVApIHsNCgkJ CSAgICBpZiAoKHNjLT5hcnBjb20uYWNfaWYuaWZfZmxhZ3MgJiBJRkZfUlVO TklORyk9PTApIHsNCgkJCQkgICAgY3NfaW5pdChzYyk7DQoJCQkgICAgfQ0K CQkgICAgfSBlbHNlIHsNCgkJCSAgICBpZiAoKHNjLT5hcnBjb20uYWNfaWYu aWZfZmxhZ3MgJiBJRkZfUlVOTklORykhPTApIHsNCgkJCQkgICAgY3Nfc3Rv cChzYyk7DQoJCQkgICAgfQ0KCQkgICAgfQ0KCQkgICAgLyoNCgkJICAgICAq IFByb21pc2N1b3VzIGFuZC9vciBtdWx0aWNhc3QgZmxhZ3MgbWF5IGhhdmUg Y2hhbmdlZCwNCgkJICAgICAqIHNvIHJlcHJvZ3JhbSB0aGUgbXVsdGljYXN0 IGZpbHRlciBhbmQvb3IgcmVjZWl2ZSBtb2RlLg0KCQkgICAgICovDQoJCSAg ICAvKgkJY3Nfc2V0bW9kZShzYyk7IEkgZG9uJ3Qga25vdyBub3cgYWJvdXQg aXQuICovDQoJCSAgICBicmVhazsNCgkgICAgfQ0KI2VuZGlmDQoNCiNpZmRl ZiBTSU9DQURETVVMVEkNCgkgIGNhc2UgU0lPQ0FERE1VTFRJOg0KCSAgY2Fz ZSBTSU9DREVMTVVMVEk6DQoJICAgIHsNCgkJLyoNCgkJICogVXBkYXRlIG91 dCBtdWx0aWNhc3QgbGlzdC4NCgkJICovDQoJCXN0cnVjdCBpZnJlcSAqIGlm ciA9IChzdHJ1Y3QgaWZyZXEgKilkYXRhOw0KDQoJCWVycm9yID0gKGNvbW1h bmQgPT0gU0lPQ0FERE1VTFRJKQ0KCQkgICAgICA/IGV0aGVyX2FkZG11bHRp KGlmciwgJnNjLT5hcnBjb20pDQoJCSAgICAgIDogZXRoZXJfZGVsbXVsdGko aWZyLCAmc2MtPmFycGNvbSk7DQoNCgkJaWYgKGVycm9yID09IEVORVRSRVNF VCkgew0KCQkJLyoNCgkJCSAqIE11bHRpY2FzdCBsaXN0IGhhcyBjaGFuZ2Vk OyBzZXQgdGhlIGhhcmR3YXJlIGZpbHRlcg0KCQkJICogYWNjb3JkaW5nbHku DQoJCQkgKi8NCgkJCS8qIGNzX3NldG1vZGUoc2MpOyAqLw0KCQkJZXJyb3Ig PSAwOw0KCQl9DQoNCgkJYnJlYWs7DQoJICAgIH0NCiNlbmRpZg0KDQojaWZk ZWYgU0lPQ1NJRk1UVQ0KCSAgY2FzZSBTSU9DU0lGTVRVOg0KCSAgICB7DQoJ CSAgICAvKg0KCQkgICAgICogU2V0IHRoZSBpbnRlcmZhY2UgTVRVLg0KCQkg ICAgICovDQoJCSAgICBzdHJ1Y3QgaWZyZXEgKmlmciA9IChzdHJ1Y3QgaWZy ZXEgKilkYXRhOw0KDQoJCSAgICBpZiAoaWZyLT5pZnJfbXR1ID4gRVRIRVJN VFUpIHsNCgkJCSAgICBlcnJvciA9IEVJTlZBTDsNCgkJICAgIH0gZWxzZSB7 DQoJCQkgICAgc2MtPmFycGNvbS5hY19pZi5pZl9tdHUgPSBpZnItPmlmcl9t dHU7DQoJCSAgICB9DQoJCSAgICBicmVhazsNCgkgICAgfQ0KI2VuZGlmDQoN CgkgIGRlZmF1bHQ6DQoJICAgIGVycm9yID0gRUlOVkFMOw0KCX0NCg0KCSh2 b2lkKSBzcGx4KHMpOw0KCXJldHVybiBlcnJvcjsNCn0NCg0KLyoNCiAqIERl dmljZSB0aW1lb3V0L3dhdGNoZG9nIHJvdXRpbmUuIEVudGVyZWQgaWYgdGhl IGRldmljZSBuZWdsZWN0cyB0bw0KICogZ2VuZXJhdGUgYW4gaW50ZXJydXB0 IGFmdGVyIGEgdHJhbnNtaXQgaGFzIGJlZW4gc3RhcnRlZCBvbiBpdC4NCiAq Lw0Kc3RhdGljIHZvaWQNCmNzX3dhdGNoZG9nKHN0cnVjdCBpZm5ldCAqaWZw KQ0Kew0KCXN0cnVjdCBjc19zb2Z0YyAqc2MgPSAmY3Nfc29mdGNbaWZwLT5p Zl91bml0XTsNCg0KCWlmcC0+aWZfb2Vycm9ycysrOw0KCWxvZyhMT0dfRVJS LCBDU19OQU1FIiVkOiBkZXZpY2UgdGltZW91dFxuIiwgaWZwLT5pZl91bml0 KTsNCg0KCS8qIFJlc2V0IHRoZSBpbnRlcmZhY2UgKi8NCglpZiAoaWZwLT5p Zl9mbGFncyAmIElGRl9VUCkNCgkJY3NfcmVzZXQoc2MpOw0KCWVsc2UNCgkJ Y3Nfc3RvcChzYyk7DQp9DQoNCg== --0-731731238-893342402=:29546-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.980423183109.29546A-300000>