From owner-freebsd-hackers Sun Jul 19 09:25:16 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id JAA26959 for freebsd-hackers-outgoing; Sun, 19 Jul 1998 09:25:16 -0700 (PDT) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from altos.rnd.runnet.ru (root@altos.rnd.runnet.ru [195.208.248.40]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id JAA26932 for ; Sun, 19 Jul 1998 09:24:59 -0700 (PDT) (envelope-from max@rsu.ru) Received: from localhost (max@localhost [127.0.0.1]) by altos.rnd.runnet.ru (8.8.8/8.8.8) with SMTP id UAA26246; Sun, 19 Jul 1998 20:25:44 +0400 (MSD) Date: Sun, 19 Jul 1998 20:25:44 +0400 (MSD) From: Maxim Bolotin X-Sender: max@altos.rnd.runnet.ru Reply-To: Maxim Bolotin To: Mike Smith cc: Oleg Sharoiko , MIHIRA Sanpei Yoshiro , "Randal S. Masutani" , hackers@FreeBSD.ORG Subject: cs89x0 driver for 2.2.7 RELEASE Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-1615265065-900865544=:25782" Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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-1615265065-900865544=:25782 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi! Here's the latest version of cs89x0 driver. There're if_media and PNP support. I hope it'll be included in 2.2.7 RELEASE. Max. - Rostov State University Computer Center Rostov-on-Don, +7 (8632) 285794 or 357476 Russia, RUNNet, MAB1-RIPE max@rsu.ru --0-1615265065-900865544=:25782 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="if_cs.c" Content-Transfer-Encoding: BASE64 Content-ID: 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 aWZfY3MuYyx2IDEuNyAxOTk4LzA3LzE5IDE2OjAxOjIzIHJvb3QgRXhwIHJv b3QgJA0KICoNCiAqIERldmljZSBkcml2ZXIgZm9yIENyeXN0YWwgU2VtaWNv bmR1Y3RvciBDUzg5MjAgYmFzZWQgZXRoZXJuZXQNCiAqICAgYWRhcHRlcnMu IEJ5IE1heGltIEJvbG90aW4gYW5kIE9sZWcgU2hhcm9pa28sIDI3LUFwcmls LTE5OTcNCiAqLw0KDQovKiAjZGVmaW5lCSBDU19ERUJVRyAqLw0KI2luY2x1 ZGUgImNzLmgiDQojaW5jbHVkZSAiYnBmaWx0ZXIuaCINCg0KI2luY2x1ZGUg PHN5cy9wYXJhbS5oPg0KI2luY2x1ZGUgPHN5cy9zeXN0bS5oPg0KI2luY2x1 ZGUgPHN5cy9jb25mLmg+DQojaW5jbHVkZSA8c3lzL2Vycm5vLmg+DQojaW5j bHVkZSA8c3lzL2lvY3RsLmg+DQojaW5jbHVkZSA8c3lzL2tlcm5lbC5oPg0K I2luY2x1ZGUgPHN5cy9tYnVmLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5o Pg0KI2luY2x1ZGUgPHN5cy9zeXNsb2cuaD4NCg0KI2luY2x1ZGUgPG5ldC9p Zi5oPg0KI2luY2x1ZGUgPG5ldC9pZl9kbC5oPg0KI2luY2x1ZGUgPG5ldC9p Zl9taWIuaD4NCiNpbmNsdWRlIDxuZXQvaWZfbWVkaWEuaD4NCiNpbmNsdWRl IDxuZXQvaWZfdHlwZXMuaD4NCg0KI2lmZGVmIElORVQNCiNpbmNsdWRlIDxu ZXRpbmV0L2luLmg+DQojaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPg0K I2luY2x1ZGUgPG5ldGluZXQvaW5fdmFyLmg+DQojaW5jbHVkZSA8bmV0aW5l dC9pcC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4NCiNlbmRp Zg0KDQojaWZkZWYgSVBYDQojaW5jbHVkZSA8bmV0aXB4L2lweC5oPg0KI2lu Y2x1ZGUgPG5ldGlweC9pcHhfaWYuaD4NCiNlbmRpZg0KDQojaWZkZWYgTlMN CiNpbmNsdWRlIDxuZXRucy9ucy5oPg0KI2luY2x1ZGUgPG5ldG5zL25zX2lm Lmg+DQojZW5kaWYNCg0KI2lmIE5CUEZJTFRFUiA+IDANCiNpbmNsdWRlIDxu ZXQvYnBmLmg+DQojaW5jbHVkZSA8bmV0L2JwZmRlc2MuaD4NCiNlbmRpZg0K DQojaW5jbHVkZSA8bWFjaGluZS9jbG9jay5oPg0KI2luY2x1ZGUgPG1hY2hp bmUvbWRfdmFyLmg+DQoNCiNpbmNsdWRlIDxpMzg2L2lzYS9pc2FfZGV2aWNl Lmg+DQojaW5jbHVkZSA8aTM4Ni9pc2EvaWN1Lmg+DQojaW5jbHVkZSA8aTM4 Ni9pc2EvaWZfY3NyZWcuaD4NCg0KI2luY2x1ZGUgInBucC5oIg0KDQojaWYg TlBOUCA+IDANCiNpbmNsdWRlIDxpMzg2L2lzYS9wbnAuaD4NCiNlbmRpZg0K DQojaWZkZWYgIENTX1VTRV82NEtfRE1BDQojZGVmaW5lIENTX0RNQV9CVUZG RVJfU0laRSA2NTUzNg0KI2Vsc2UNCiNkZWZpbmUgQ1NfRE1BX0JVRkZFUl9T SVpFIDE2Mzg0DQojZW5kaWYNCg0KI2lmbmRlZiBDU19XQUlUX05FWFRfUEFD S0VUDQojZGVmaW5lCUNTX1dBSVRfTkVYVF9QQUNLRVQgNTcwDQojZW5kaWYN Cg0KLyoNCiAqIGNzX3NvZnRjOiBwZXIgbGluZSBpbmZvIGFuZCBzdGF0dXMN CiAqLw0Kc3RhdGljIHN0cnVjdCBjc19zb2Z0YyB7DQoNCiAgICAgICAgLyog RXRoZXJuZXQgY29tbW9uIGNvZGUgKi8NCiAgICAgICAgc3RydWN0IGFycGNv bSBhcnBjb207DQoNCiAgICAgICAgLyogQ29uZmlndXJhdGlvbiB3b3JkcyBm cm9tIEVFUFJPTSAqLw0KICAgICAgICBpbnQgYXV0b19uZWdfY25mOyAgICAg ICAgICAgICAgIC8qIEF1dG9OZWdvdGl0YXRpb24gY29uZmlndXJhdGlvbiAq Lw0KCWludCBhZGFwdGVyX2NuZjsgICAgICAgICAgICAgICAgLyogQWRhcHRl ciBjb25maWd1cmF0aW9uICovDQogICAgICAgIGludCBpc2FfY29uZmlnOyAg ICAgICAgICAgICAgICAgLyogSVNBIGNvbmZpZ3VyYXRpb24gKi8NCiAgICAg ICAgaW50IGNoaXBfdHlwZTsJCQkvKiBUeXBlIG9mIGNoaXAgKi8NCg0KICAg ICAgICBzdHJ1Y3QgaWZtZWRpYSBtZWRpYTsJCS8qIE1lZGlhIGluZm9ybWF0 aW9uICovDQoNCiAgICAgICAgaW50IG5pY19hZGRyOyAJCQkvKiBCYXNlIElP IGFkZHJlc3Mgb2YgY2FyZCAqLw0KCWludCBzZW5kX2NtZDsNCiAgICAgICAg aW50IGxpbmVfY3RsOyAgICAgICAgICAgICAgICAgICAvKiAqLw0KICAgICAg ICBpbnQgc2VuZF91bmRlcnJ1bjsNCiAgICAgICAgdm9pZCAqcmVjdl9yaW5n Ow0KDQogICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsNCiAgICAgICAg aW50IGJ1Zl9sZW47DQoNCn0gY3Nfc29mdGNbTkNTXTsNCg0Kc3RhdGljIHVf bG9uZwljc191bml0ID0gTkNTOw0KDQpzdGF0aWMgaW50ICAgICAgY3NfYXR0 YWNoICAgICAgICAgICAgICAgX19QKChzdHJ1Y3QgY3Nfc29mdGMgKiwgaW50 LCBpbnQpKTsNCnN0YXRpYyBpbnQgICAgICBjc19hdHRhY2hfaXNhICAgICAg ICAgICBfX1AoKHN0cnVjdCBpc2FfZGV2aWNlICopKTsNCnN0YXRpYyB2b2lk CWNzX2luaXQJCQlfX1AoKHZvaWQgKikpOw0Kc3RhdGljIGludAljc19pb2N0 bAkJX19QKChzdHJ1Y3QgaWZuZXQgKiwgaW50LCBjYWRkcl90KSk7DQpzdGF0 aWMgaW50CWNzX3Byb2JlCQlfX1AoKHN0cnVjdCBpc2FfZGV2aWNlICopKTsN CnN0YXRpYyBpbnQJY3NfY3M4OXgwX3Byb2JlCQlfX1AoKHN0cnVjdCBjc19z b2Z0YyAqLA0KCQkJCQkgdV9zaG9ydCAqLCBzaG9ydCAqLCBpbnQsIGludCwg aW50KSk7DQpzdGF0aWMgdm9pZAljc19zdGFydAkJX19QKChzdHJ1Y3QgaWZu ZXQgKikpOw0Kc3RhdGljIHZvaWQJY3Nfc3RvcAkJCV9fUCgoc3RydWN0IGNz X3NvZnRjICopKTsNCnN0YXRpYyB2b2lkCWNzX3Jlc2V0CQlfX1AoKHN0cnVj dCBjc19zb2Z0YyAqKSk7DQpzdGF0aWMgdm9pZAljc193YXRjaGRvZwkJX19Q KChzdHJ1Y3QgaWZuZXQgKikpOw0KDQpzdGF0aWMgaW50CWNzX21lZGlhY2hh bmdlCV9fUCgoc3RydWN0IGlmbmV0ICopKTsNCnN0YXRpYyB2b2lkCWNzX21l ZGlhc3RhdHVzCV9fUCgoc3RydWN0IGlmbmV0ICosIHN0cnVjdCBpZm1lZGlh cmVxICopKTsNCnN0YXRpYyBpbnQgICAgICBjc19tZWRpYXNldAlfX1AoKHN0 cnVjdCBjc19zb2Z0YyAqLCBpbnQpKTsNCg0Kc3RhdGljIHZvaWQJY3Nfd3Jp dGVfbWJ1ZnMoc3RydWN0IGNzX3NvZnRjKiwgc3RydWN0IG1idWYqKTsNCnN0 YXRpYyB2b2lkCWNzX3htaXRfYnVmKHN0cnVjdCBjc19zb2Z0YyopOw0Kc3Rh dGljIGludAljc19nZXRfcGFja2V0KHN0cnVjdCBjc19zb2Z0YyopOw0Kc3Rh dGljIHZvaWQJY3Nfc2V0bW9kZShzdHJ1Y3QgY3Nfc29mdGMqKTsNCg0Kc3Rh dGljIGludAlnZXRfZWVwcm9tX2RhdGEoc3RydWN0IGNzX3NvZnRjICpzYywg aW50LCBpbnQsIGludCAqKTsNCnN0YXRpYyBpbnQJZ2V0X2VlcHJvbV9ja3N1 bShpbnQsIGludCwgaW50ICopOw0Kc3RhdGljIGludAl3YWl0X2VlcHJvbV9y ZWFkeSggc3RydWN0IGNzX3NvZnRjICopOw0Kc3RhdGljIHZvaWQJY29udHJv bF9kY19kYyggc3RydWN0IGNzX3NvZnRjICosIGludCApOw0Kc3RhdGljIGlu dAlzZW5kX3Rlc3RfcGt0KCBzdHJ1Y3QgY3Nfc29mdGMgKiApOw0Kc3RhdGlj IGludAllbmFibGVfdHAoc3RydWN0IGNzX3NvZnRjICopOw0Kc3RhdGljIGlu dAllbmFibGVfYXVpKHN0cnVjdCBjc19zb2Z0YyAqKTsNCnN0YXRpYyBpbnQJ ZW5hYmxlX2JuYyhzdHJ1Y3QgY3Nfc29mdGMgKik7DQpzdGF0aWMgaW50ICAg ICAgY3NfZHVwbGV4X2F1dG8oc3RydWN0IGNzX3NvZnRjICopOw0KDQpzdHJ1 Y3QgaXNhX2RyaXZlciBjc2RyaXZlciA9IHsNCgljc19wcm9iZSwNCgljc19h dHRhY2hfaXNhLA0KCUNTX05BTUUsDQoJMA0KfTsNCg0Kc3RhdGljIGludA0K Z2V0X2VlcHJvbV9kYXRhKCBzdHJ1Y3QgY3Nfc29mdGMgKnNjLCBpbnQgb2Zm LCBpbnQgbGVuLCBpbnQgKmJ1ZmZlcikNCnsNCglpbnQgaTsNCg0KI2lmZGVm IENTX0RFQlVHDQoJcHJpbnRmKENTX05BTUUiOkVFUFJPTSBkYXRhIGZyb20g JXggZm9yICV4OlxuIiwgb2ZmLGxlbik7DQojZW5kaWYNCg0KCWZvciAoaT0w O2k8bGVuO2krKykgew0KCQlpZiAod2FpdF9lZXByb21fcmVhZHkoc2MpIDwg MCkgcmV0dXJuIC0xOw0KCQkvKiBTZW5kIGNvbW1hbmQgdG8gRUVQUk9NIHRv IHJlYWQgKi8NCgkJY3Nfd3JpdGVyZWcoc2MtPm5pY19hZGRyLCBQUF9FRUNN RCwgKG9mZitpKXxFRVBST01fUkVBRF9DTUQgKTsNCgkJaWYgKHdhaXRfZWVw cm9tX3JlYWR5KHNjKTwwKQ0KCQkJcmV0dXJuIC0xOw0KCQlidWZmZXJbaV0g PSBjc19yZWFkcmVnIChzYy0+bmljX2FkZHIsIFBQX0VFRGF0YSk7DQoNCiNp ZmRlZiBDU19ERUJVRw0KCQlwcmludGYoIiUwMnggJTAyeCAiLCh1bnNpZ25l ZCBjaGFyKWJ1ZmZlcltpXSwNCgkJCQkJKHVuc2lnbmVkIGNoYXIpYnVmZmVy W2krMV0pOw0KI2VuZGlmDQoJfQ0KDQojaWZkZWYgQ1NfREVCVUcNCglwcmlu dGYoIlxuIik7DQojZW5kaWYNCg0KCXJldHVybiAwOw0KfQ0KDQpzdGF0aWMg aW50DQpnZXRfZWVwcm9tX2Nrc3VtKGludCBvZmYsIGludCBsZW4sIGludCAq YnVmZmVyKQ0Kew0KCWludCBpLGNrc3VtPTA7DQoNCglmb3IgKGk9MDtpPGxl bjtpKyspDQoJCWNrc3VtKz1idWZmZXJbaV07DQoJY2tzdW0gJj0gMHhmZmZm Ow0KCWlmIChja3N1bT09MCkNCgkJcmV0dXJuIDA7DQoJcmV0dXJuIC0xOw0K fQ0KDQpzdGF0aWMgaW50DQp3YWl0X2VlcHJvbV9yZWFkeShzdHJ1Y3QgY3Nf c29mdGMgKnNjKQ0Kew0KCWludCB0aW1lb3V0PTEwMDA7DQoJREVMQVkgKCAz MDAwMCApOwkvKiBYWFggc2hvdWxkIHdlIGRvIHNvbWUgY2hlY2tzIGhlcmUg PyAqLw0KCXJldHVybiAwOw0KfQ0KDQpzdGF0aWMgdm9pZA0KY29udHJvbF9k Y19kYyhzdHJ1Y3QgY3Nfc29mdGMgKnNjLCBpbnQgb25fbm90X29mZikNCnsN Cgl1bnNpZ25lZCBpbnQgc2VsZl9jb250cm9sID0gSENCMV9FTkJMOw0KDQoJ aWYgKCgoc2MtPmFkYXB0ZXJfY25mICYgQV9DTkZfRENfRENfUE9MQVJJVFkp IT0wKSBeIG9uX25vdF9vZmYpDQoJCXNlbGZfY29udHJvbCB8PSBIQ0IxOw0K CWVsc2UNCgkJc2VsZl9jb250cm9sICY9IH5IQ0IxOw0KCWNzX3dyaXRlcmVn KCBzYy0+bmljX2FkZHIsIFBQX1NlbGZDVEwsIHNlbGZfY29udHJvbCApOw0K DQoJREVMQVkoIDUwMDAwMCApOw0KfQ0KDQoNCnN0YXRpYyBpbnQNCmNzX2R1 cGxleF9hdXRvKHN0cnVjdCBjc19zb2Z0YyAqc2MpDQp7DQogICAgICAgIGlu dCBpLCBlcnJvcj0wLCB1bml0PXNjLT5hcnBjb20uYWNfaWYuaWZfdW5pdDsN CiAgICAgICAgDQogICAgICAgIGNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwg UFBfQXV0b05lZ0NUTCwNCiAgICAgICAgICAgICAgICAgICAgUkVfTkVHX05P VyB8IEFMTE9XX0ZEWCB8IEFVVE9fTkVHX0VOQUJMRSApOw0KICAgICAgICBm b3IgKGk9MDsgY3NfcmVhZHJlZyhzYy0+bmljX2FkZHIsUFBfQXV0b05lZ1NU KSZBVVRPX05FR19CVVNZOyBpKyspIHsNCiAgICAgICAgICAgICAgICBpZiAo aSA+IDQwMDAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYo Q1NfTkFNRSIlMWQ6IGZ1bGwvaGFsZiBkdXBsZXggIg0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJhdXRvIG5lZ290aWF0aW9uIHRpbWVvdXRc biIsIHVuaXQpOw0KCQkJZXJyb3IgPSBFVElNRURPVVQ7DQogICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgREVMQVkoMTAwMCk7DQogICAgICAgIH0NCiAgICAgICAg REVMQVkoIDEwMDAwMDAgKTsNCglyZXR1cm4gZXJyb3I7DQp9DQoNCnN0YXRp YyBpbnQNCmVuYWJsZV90cChzdHJ1Y3QgY3Nfc29mdGMgKnNjKQ0Kew0KCWlu dCBpOw0KCWludCB1bml0ID0gc2MtPmFycGNvbS5hY19pZi5pZl91bml0Ow0K DQoJY3Nfd3JpdGVyZWcoc2MtPm5pY19hZGRyLCBQUF9MaW5lQ1RMLCBzYy0+ bGluZV9jdGwgJiB+QVVJX09OTFkpOw0KCWNvbnRyb2xfZGNfZGMoc2MsIDAp Ow0KCURFTEFZKCAxNTAwMDAgKTsNCg0KCWlmICgoY3NfcmVhZHJlZyhzYy0+ bmljX2FkZHIsIFBQX0xpbmVTVCkgJiBMSU5LX09LKT09MCkgew0KCQlwcmlu dGYoQ1NfTkFNRSIlMWQ6IGZhaWxlZCB0byBlbmFibGUgVFBcbiIsIHVuaXQp Ow0KICAgICAgICAgICAgICAgIHJldHVybiBFSU5WQUw7DQoJfQ0KDQoJcmV0 dXJuIDA7DQp9DQoNCi8qDQogKiBYWFggVGhpcyB3YXMgcmV3cml0dGVuIGZy b20gTGludXggZHJpdmVyIHdpdGhvdXQgYW55IHRlc3RzLg0KICovICAgICAg ICAgICAgIA0Kc3RhdGljIGludA0Kc2VuZF90ZXN0X3BrdChzdHJ1Y3QgY3Nf c29mdGMgKnNjKQ0Kew0KCWludCB1bml0ID0gc2MtPmFycGNvbS5hY19pZi5p Zl91bml0Ow0KCWNoYXIgdGVzdF9wYWNrZXRbXSA9IHsgMCwwLDAsMCwwLDAs IDAsMCwwLDAsMCwwLA0KCQkJCTAsIDQ2LCAgLyogQSA0NiBpbiBuZXR3b3Jr IG9yZGVyICovDQoJCQkJMCwgMCwgICAvKiBEU0FQPTAgJiBTU0FQPTAgZmll bGRzICovDQoJCQkJMHhmMywgMCAvKiBDb250cm9sIChUZXN0IFJlcSArIFAg Yml0IHNldCkgKi8gfTsNCg0KCWNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwg UFBfTGluZUNUTCwNCgkJY3NfcmVhZHJlZyhzYy0+bmljX2FkZHIsIFBQX0xp bmVDVEwpIHwgU0VSSUFMX1RYX09OICk7DQoJYmNvcHkodGVzdF9wYWNrZXQs DQoJCQlzYy0+YXJwY29tLmFjX2VuYWRkciwgRVRIRVJfQUREUl9MRU4pOw0K CWJjb3B5KHRlc3RfcGFja2V0K0VUSEVSX0FERFJfTEVOLA0KCQkJc2MtPmFy cGNvbS5hY19lbmFkZHIsIEVUSEVSX0FERFJfTEVOKTsNCglvdXR3KHNjLT5u aWNfYWRkciArIFRYX0NNRF9QT1JULCBzYy0+c2VuZF9jbWQpOw0KCW91dHco c2MtPm5pY19hZGRyICsgVFhfTEVOX1BPUlQsIHNpemVvZih0ZXN0X3BhY2tl dCkpOw0KDQoJLyogV2FpdCBmb3IgY2hpcCB0byBhbGxvY2F0ZSBtZW1vcnkg Ki8NCglERUxBWSg1MDAwMCk7DQoJaWYgKCEoY3NfcmVhZHJlZyhzYy0+bmlj X2FkZHIsIFBQX0J1c1NUKSAmIFJFQURZX0ZPUl9UWF9OT1cpKQ0KCQlyZXR1 cm4gMDsNCg0KCW91dHN3KHNjLT5uaWNfYWRkciArIFRYX0ZSQU1FX1BPUlQs IHRlc3RfcGFja2V0LCBzaXplb2YodGVzdF9wYWNrZXQpKTsNCg0KCURFTEFZ KDMwMDAwKTsNCg0KCWlmICgoY3NfcmVhZHJlZyhzYy0+bmljX2FkZHIsUFBf VHhFdmVudCkgJiBUWF9TRU5EX09LX0JJVFMpID09IFRYX09LKQ0KCQlyZXR1 cm4gMTsNCglyZXR1cm4gMDsNCn0NCg0KLyoNCiAqIFhYWCBUaGlzIHdhcyBy ZXdyaXR0ZW4gZnJvbSBMaW51eCBkcml2ZXIgd2l0aG91dCBhbnkgdGVzdHMu DQogKi8NCnN0YXRpYyBpbnQNCmVuYWJsZV9hdWkoc3RydWN0IGNzX3NvZnRj ICpzYykNCnsNCglpbnQgdW5pdCA9IHNjLT5hcnBjb20uYWNfaWYuaWZfdW5p dDsNCg0KCWNvbnRyb2xfZGNfZGMoc2MsIDApOw0KCWNzX3dyaXRlcmVnKHNj LT5uaWNfYWRkciwgUFBfTGluZUNUTCwNCgkJKHNjLT5saW5lX2N0bCAmIH5B VVRPX0FVSV8xMEJBU0VUKSB8IEFVSV9PTkxZKTsNCg0KCWlmICghc2VuZF90 ZXN0X3BrdChzYykpIHsNCgkJcHJpbnRmKENTX05BTUUiJTFkIGZhaWxlZCB0 byBlbmFibGUgQVVJXG4iLCB1bml0KTsNCgkJcmV0dXJuIEVJTlZBTDsNCiAg ICAgICAgfQ0KICAgICAgICByZXR1cm4gMDsNCn0NCg0KLyoNCiAqIFhYWCBU aGlzIHdhcyByZXdyaXR0ZW4gZnJvbSBMaW51eCBkcml2ZXIgd2l0aG91dCBh bnkgdGVzdHMuDQogKi8gICAgICAgICAgICAgDQpzdGF0aWMgaW50DQplbmFi bGVfYm5jKHN0cnVjdCBjc19zb2Z0YyAqc2MpDQp7DQoJaW50IHVuaXQgPSBz Yy0+YXJwY29tLmFjX2lmLmlmX3VuaXQ7DQoNCgljb250cm9sX2RjX2RjKHNj LCAxKTsNCgljc193cml0ZXJlZyhzYy0+bmljX2FkZHIsIFBQX0xpbmVDVEws DQoJCShzYy0+bGluZV9jdGwgJiB+QVVUT19BVUlfMTBCQVNFVCkgfCBBVUlf T05MWSk7DQoNCglpZiAoIXNlbmRfdGVzdF9wa3Qoc2MpKSB7DQoJCXByaW50 ZihDU19OQU1FIiUxZCBmYWlsZWQgdG8gZW5hYmxlIEJOQ1xuIiwgdW5pdCk7 DQoJCXJldHVybiBFSU5WQUw7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJu IDA7DQp9DQoNCnN0YXRpYyBpbnQNCmNzX2NzODl4MF9wcm9iZShzdHJ1Y3Qg Y3Nfc29mdGMgKnNjLCB1X3Nob3J0ICpkZXZfaXJxLA0KCQkJc2hvcnQgKmRl dl9kcnEsIGludCBpb2Jhc2UsIGludCB1bml0LCBpbnQgZmxhZ3MpDQp7DQoJ dW5zaWduZWQgcmV2X3R5cGUgPSAwOw0KCWludCBpLCBpcnE9MCwgcmVzdWx0 Ow0KCWludCBlZXByb21fYnVmZltDSEtTVU1fTEVOXTsNCglpbnQgY2hpcF90 eXBlLCBwcF9pc2FpbnQsIHBwX2lzYWRtYTsNCgljaGFyIGNoaXBfcmV2aXNp b247DQoNCglpZiAoKGludyhpb2Jhc2UrQUREX1BPUlQpICYgQUREX01BU0sp ICE9IEFERF9TSUcpIHsNCgkJLyogQ2hpcCBub3QgZGV0ZWN0ZWQuIExldCdz IHRyeSB0byByZXNldCBpdCAqLw0KCQlpZiAoYm9vdHZlcmJvc2UpDQoJCQlw cmludGYoQ1NfTkFNRSIlMWQ6IHRyeWluZyB0byByZXNldCB0aGUgY2hpcC5c biIsIHVuaXQpOw0KCQlvdXR3KGlvYmFzZStBRERfUE9SVCwgUFBfU2VsZkNU TCk7DQoJCWkgPSBpbncoaW9iYXNlK0RBVEFfUE9SVCk7DQoJCW91dHcoaW9i YXNlK0FERF9QT1JULCBQUF9TZWxmQ1RMKTsNCgkJb3V0dyhpb2Jhc2UrREFU QV9QT1JULCBpIHwgUE9XRVJfT05fUkVTRVQpOw0KCQlpZiAoKGludyhpb2Jh c2UrQUREX1BPUlQpICYgQUREX01BU0spICE9IEFERF9TSUcpDQoJCQlyZXR1 cm4gMDsNCgl9DQoNCglvdXR3KGlvYmFzZStBRERfUE9SVCwgUFBfQ2hpcElE KTsNCglpZiAoaW53KGlvYmFzZStEQVRBX1BPUlQpICE9IENISVBfRUlTQV9J RF9TSUcpDQoJCXJldHVybiAwOw0KDQoJcmV2X3R5cGUgPSBjc19yZWFkcmVn KGlvYmFzZSwgUFJPRFVDVF9JRF9BREQpOw0KCWNoaXBfdHlwZSA9IHJldl90 eXBlICYgflJFVklTT05fQklUUzsNCgljaGlwX3JldmlzaW9uID0gKChyZXZf dHlwZSAmIFJFVklTT05fQklUUykgPj4gOCkgKyAnQSc7DQoNCglzYy0+bmlj X2FkZHIgPSBpb2Jhc2U7DQoJc2MtPmNoaXBfdHlwZSA9IGNoaXBfdHlwZTsN CglpZihjaGlwX3R5cGU9PUNTODkwMCkgew0KCQlwcF9pc2FpbnQgPSBQUF9D Uzg5MDBfSVNBSU5UOw0KCQlwcF9pc2FkbWEgPSBQUF9DUzg5MDBfSVNBRE1B Ow0KCQlzYy0+c2VuZF9jbWQgPSBUWF9DUzg5MDBfQUZURVJfQUxMOw0KCX0g ZWxzZSB7DQoJCXBwX2lzYWludCA9IFBQX0NTODkyMF9JU0FJTlQ7DQoJCXBw X2lzYWRtYSA9IFBQX0NTODkyMF9JU0FETUE7DQoJCXNjLT5zZW5kX2NtZCA9 IFRYX0NTODkyMF9BRlRFUl9BTEw7DQoJfQ0KDQogICAgICAgIC8qDQogICAg ICAgICAqIENsZWFyIHNvbWUgZmllbGRzIHNvIHRoYXQgZmFpbCBvZiBFRVBS T00gd2lsbCBsZWZ0IHRoZW0gY2xlYW4NCiAgICAgICAgICovDQogICAgICAg IHNjLT5hdXRvX25lZ19jbmYgPSAwOw0KICAgICAgICBzYy0+YWRhcHRlcl9j bmYgID0gMDsNCiAgICAgICAgc2MtPmlzYV9jb25maWcgICA9IDA7DQogICAg ICAgIA0KCS8qDQoJICogRUVQUk9NDQoJICovDQoJaWYoKGNzX3JlYWRyZWco aW9iYXNlLCBQUF9TZWxmU1QpICYgRUVQUk9NX1BSRVNFTlQpID09IDApIHsN CgkJcHJpbnRmKENTX05BTUUiJTFkOiBObyBFRVBST00sIGFzc3VtaW5nIGRl ZmF1bHRzLlxuIiwNCgkJCXVuaXQpOw0KCX0gZWxzZSB7DQoJCWlmIChnZXRf ZWVwcm9tX2RhdGEoc2MsU1RBUlRfRUVQUk9NX0RBVEEsQ0hLU1VNX0xFTiwg ZWVwcm9tX2J1ZmYpPDApIHsNCgkJCSBwcmludGYoQ1NfTkFNRSIlMWQ6IEVF UFJPTSByZWFkIGZhaWxlZCwgIg0KCQkJCSJhc3N1bWluZyBkZWZhdWx0cy4u XG4iLCB1bml0KTsNCgkJfSBlbHNlIHsNCgkJCWlmIChnZXRfZWVwcm9tX2Nr c3VtKFNUQVJUX0VFUFJPTV9EQVRBLENIS1NVTV9MRU4sIGVlcHJvbV9idWZm KTwwKSB7DQoJCQkJcHJpbnRmKCBDU19OQU1FIiUxZDogRUVQUk9NIGNoZWtz dW0gYmFkLCAiDQoJCQkJCSJhc3N1bWluZyBkZWZhdWx0cy4uXG4iLCB1bml0 ICk7DQoJCQl9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzYy0+YXV0b19uZWdfY25mID0NCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlZXByb21fYnVmZltBVVRPX05FR19DTkZf T0ZGU0VULzJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz Yy0+YWRhcHRlcl9jbmYgPQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVlcHJvbV9idWZmW0FEQVBURVJfQ05GX09GRlNFVC8y XTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2MtPmlzYV9j b25maWcgPQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVlcHJvbV9idWZmW0lTQV9DTkZfT0ZGU0VULzJdOw0KDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPEVUSEVSX0FE RFJfTEVOLzI7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNjLT5hcnBjb20uYWNfZW5hZGRyW2kqMl09DQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl ZXByb21fYnVmZltpXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzYy0+YXJwY29tLmFjX2VuYWRkcltpKjIrMV09DQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl ZXByb21fYnVmZltpXSA+PiA4Ow0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSWYgbm8g aW50ZXJydXB0IHNwZWNpZmllZCAob3IgIj8iKSwNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICogdXNlIHdoYXQgdGhlIGJvYXJkIHRlbGxz IHVzLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpkZXZfaXJxIDw9 IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpcnEgPSBzYy0+aXNhX2NvbmZpZyAmIElOVF9OT19NQVNLOw0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlwX3R5 cGU9PUNTODkwMCkgew0KCQkJCQkJc3dpdGNoKGlycSkgew0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAw OiBpcnE9MTA7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiBpcnE9MTE7IGJyZWFrOw0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2FzZSAyOiBpcnE9MTI7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiBpcnE9NTsg IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVmYXVsdDogcHJpbnRmKENTX05BTUUiJTFkOiBpbnZh bGlkIGlycSBpbiBFRVBST00uXG4iLHVuaXQpOw0KCQkJCQkJfQ0KCQkJCQkJ aWYgKGlycSE9MCkNCgkJCQkJCQkqZGV2X2lycT0odV9zaG9ydCkoMTw8aXJx KTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWlmIChpcnEhPTAgJiYgaXJxPD1D Uzg5MjBfTk9fSU5UUykNCgkJCQkJCQkqZGV2X2lycT0odV9zaG9ydCkoMTw8 aXJxKTsNCgkJCQkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9DQoJCQl9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAg ICAgICAgaWYgKChpcnE9ZmZzKCpkZXZfaXJxKSkpIHsNCiAgICAgICAgICAg ICAgICBpcnEtLTsNCiAgICAgICAgICAgICAgICBpZiAoY2hpcF90eXBlID09 IENTODkwMCkgew0KCQkJc3dpdGNoKGlycSkgew0KICAgICAgICAgICAgICAg ICAgICAgICAgY2FzZSAgNTogaXJxID0gMzsgYnJlYWs7DQogICAgICAgICAg ICAgICAgICAgICAgICBjYXNlIDEwOiBpcnEgPSAwOyBicmVhazsNCiAgICAg ICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6IGlycSA9IDE7IGJyZWFrOw0K ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjogaXJxID0gMjsgYnJl YWs7DQogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBwcmludGYo Q1NfTkFNRSIlMWQ6IGludmFsaWQgaXJxXG4iLCB1bml0KTsNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQoJCQl9DQogICAg ICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAg IGlmIChpcnEgPiBDUzg5MjBfTk9fSU5UUykgew0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcmludGYoQ1NfTkFNRSIlMWQ6IGludmFsaWQg aXJxXG4iLCB1bml0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIDA7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNzX3dyaXRlcmVnKGlv YmFzZSwgcHBfaXNhaW50LCBpcnEpOw0KCX0gZWxzZSB7DQoJICAgICAgIAlw cmludGYoQ1NfTkFNRSIlMWQ6IGludmFsaWQgaXJxXG4iLCB1bml0KTsNCiAg ICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgfQ0KICAgICAgICAN CiAgICAgICAgLyoNCiAgICAgICAgICogVGVtcG9yYXJ5IGRpc2FibGVkDQog ICAgICAgICAqDQogICAgICAgIGlmIChkcnE+MCkNCgkJY3Nfd3JpdGVyZWco aW9iYXNlLCBwcF9pc2FkbWEsIGRycSk7DQoJZWxzZSB7DQoJCXByaW50Zigg Q1NfTkFNRSIlMWQ6IGluY29ycmVjdCBkcnFcbiIsIHVuaXQgKTsNCgkJcmV0 dXJuIDA7DQoJfQ0KICAgICAgICAqLw0KDQoJaWYgKGJvb3R2ZXJib3NlKQ0K CQkgcHJpbnRmKENTX05BTUUiJTFkOiBtb2RlbCBDUzg5JWMwJXMgcmV2ICVj XG4iDQoJCQlDU19OQU1FIiUxZDogbWVkaWElcyVzJXNcbiINCgkJCUNTX05B TUUiJTFkOiBpcnEgJWQgZHJxICVkXG4iLA0KCQkJdW5pdCwNCgkJCWNoaXBf dHlwZT09Q1M4OTAwID8gJzAnIDogJzInLA0KCQkJY2hpcF90eXBlPT1DUzg5 MjBNID8gIk0iIDogIiIsDQoJCQljaGlwX3JldmlzaW9uLA0KCQkJdW5pdCwN CgkJCShzYy0+YWRhcHRlcl9jbmYgJiBBX0NORl8xMEJfVCkgPyAiIFRQIiAg OiAiIiwNCgkJCShzYy0+YWRhcHRlcl9jbmYgJiBBX0NORl9BVUkpICAgPyAi IEFVSSIgOiAiIiwNCgkJCShzYy0+YWRhcHRlcl9jbmYgJiBBX0NORl8xMEJf MikgPyAiIEJOQyIgOiAiIiwNCgkJCXVuaXQsIChpbnQpKmRldl9pcnEsIChp bnQpKmRldl9kcnEpOw0KDQogICAgICAgIGlmICgoc2MtPmFkYXB0ZXJfY25m ICYgQV9DTkZfRVhUTkRfMTBCXzIpICYmDQogICAgICAgICAgICAoc2MtPmFk YXB0ZXJfY25mICYgQV9DTkZfTE9XX1JYX1NRVUVMQ0gpKQ0KICAgICAgICAg ICAgICAgIHNjLT5saW5lX2N0bCA9IExPV19SWF9TUVVFTENIOw0KICAgICAg ICBlbHNlDQogICAgICAgICAgICAgICAgc2MtPmxpbmVfY3RsID0gMDsNCg0K ICAgICAgICANCglyZXR1cm4gUFBfSVNBSU9COw0KfQ0KDQovKg0KICogRGV0 ZXJtaW5lIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudA0KICoNCiAqICAgb24g ZW50cnk6DQogKiAJYSBwb2ludGVyIHRvIGFuIGlzYV9kZXZpY2Ugc3RydWN0 DQogKiAgIG9uIGV4aXQ6DQogKglOVUxMIGlmIGRldmljZSBub3QgZm91bmQN CiAqCW9yICMgb2YgaS9vIGFkZHJlc3NlcyB1c2VkIChpZiBmb3VuZCkNCiAq Lw0Kc3RhdGljIGludA0KY3NfcHJvYmUoc3RydWN0IGlzYV9kZXZpY2UgKmRl dikNCnsNCglpbnQgbnBvcnRzOw0KDQoJc3RydWN0IGNzX3NvZnRjICpzYz0m Y3Nfc29mdGNbZGV2LT5pZF91bml0XTsNCg0KCW5wb3J0cz1jc19jczg5eDBf cHJvYmUoc2MsICYoZGV2LT5pZF9pcnEpLCAmKGRldi0+aWRfZHJxKSwNCgkJ CShkZXYtPmlkX2lvYmFzZSksIChkZXYtPmlkX3VuaXQpLCAoZGV2LT5pZF9m bGFncykpOw0KDQoJaWYgKG5wb3J0cykNCgkJcmV0dXJuIChucG9ydHMpOw0K DQoJcmV0dXJuICgwKTsNCn0NCg0KLyoNCiAqIEluc3RhbGwgdGhlIGludGVy ZmFjZSBpbnRvIGtlcm5lbCBuZXR3b3JraW5nIGRhdGEgc3RydWN0dXJlcw0K ICovDQpzdGF0aWMgaW50DQpjc19hdHRhY2goc3RydWN0IGNzX3NvZnRjICpz YywgaW50IHVuaXQsIGludCBmbGFncykNCnsNCiAgICAgICAgaW50IG1lZGlh PTA7DQovKglzdHJ1Y3QgY3Nfc29mdGMgKnNjID0gJmNzX3NvZnRjW2Rldi0+ aWRfdW5pdF07ICovDQoJc3RydWN0IGlmbmV0ICppZnAgPSAmKHNjLT5hcnBj b20uYWNfaWYpOw0KDQoJaWYgKCFpZnAtPmlmX25hbWUpIHsNCgkJaWZwLT5p Zl9zb2Z0Yz1zYzsNCgkJaWZwLT5pZl91bml0PXVuaXQ7DQoJCWlmcC0+aWZf bmFtZT1jc2RyaXZlci5uYW1lOw0KCQlpZnAtPmlmX291dHB1dD1ldGhlcl9v dXRwdXQ7DQoJCWlmcC0+aWZfc3RhcnQ9Y3Nfc3RhcnQ7DQoJCWlmcC0+aWZf aW9jdGw9Y3NfaW9jdGw7DQoJCWlmcC0+aWZfd2F0Y2hkb2c9Y3Nfd2F0Y2hk b2c7DQoJCWlmcC0+aWZfaW5pdD1jc19pbml0Ow0KCQlpZnAtPmlmX3NuZC5p ZnFfbWF4bGVuPSBJRlFfTUFYTEVOOw0KCQkvKg0KICAgICAgICAgICAgICAg ICAqICBNSUIgREFUQQ0KICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAg ICAgICAgIC8qDQoJCWlmcC0+aWZfbGlua21pYj0mc2MtPm1pYmRhdGE7DQoJ CWlmcC0+aWZfbGlua21pYmxlbj1zaXplb2Ygc2MtPm1pYmRhdGE7DQogICAg ICAgICAgICAgICAgKi8NCg0KCQlpZnAtPmlmX2ZsYWdzPShJRkZfQlJPQURD QVNUIHwgSUZGX1NJTVBMRVggfCBJRkZfTVVMVElDQVNUICk7DQoNCgkJLyoN CgkJICogdGhpcyBjb2RlIHN0aWxsIGluIHByb2dyZXNzIChETUEgc3VwcG9y dCkNCgkJICoNCg0KCQlzYy0+cmVjdl9yaW5nPW1hbGxvYyhDU19ETUFfQlVG RkVSX1NJWkU8PDEsIE1fREVWQlVGLCBNX05PV0FJVCk7DQoJCWlmIChzYy0+ cmVjdl9yaW5nID09IE5VTEwpIHsNCgkJCWxvZyhMT0dfRVJSLENTX05BTUUN CgkJCSIlZDogQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBOSUNcbiIs IHVuaXQpOw0KCQkJcmV0dXJuKDApOw0KCQl9DQoJCWlmICgoc2MtPnJlY3Zf cmluZy0oc2MtPnJlY3ZfcmluZyAmIDB4MUZGRkYpKQ0KCQkgICAgPCAoMTI4 KjEwMjQtQ1NfRE1BX0JVRkZFUl9TSVpFKSkNCgkJICAgIHNjLT5yZWN2X3Jp bmcrPTE2KjEwMjQ7DQoNCgkJKi8NCg0KCQlzYy0+YnVmZmVyPW1hbGxvYyhF VEhFUl9NQVhfTEVOLUVUSEVSX0NSQ19MRU4sTV9ERVZCVUYsTV9OT1dBSVQp Ow0KCQlpZiAoc2MtPmJ1ZmZlciA9PSBOVUxMKSB7DQogICAgICAgICAgICAg ICAgICAgICAgICBwcmludGYoQ1NfTkFNRSIlZDogQ291bGRuJ3QgYWxsb2Nh dGUgbWVtb3J5IGZvciBOSUNcbiIsDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5pdCk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4oMCk7DQoJCX0NCg0KCQkvKg0KCQkgKiBJbml0aWFsaXplIHRoZSBtZWRp YSBzdHJ1Y3R1cmVzLg0KCQkgKi8NCgkJaWZtZWRpYV9pbml0KCZzYy0+bWVk aWEsIDAsIGNzX21lZGlhY2hhbmdlLCBjc19tZWRpYXN0YXR1cyk7DQoNCgkJ aWYgKHNjLT5hZGFwdGVyX2NuZiAmIEFfQ05GXzEwQl9UKSB7DQoJCQlpZm1l ZGlhX2FkZCgmc2MtPm1lZGlhLCBJRk1fRVRIRVJ8SUZNXzEwX1QsIDAsIE5V TEwpOw0KCQkJaWYgKHNjLT5jaGlwX3R5cGUgIT0gQ1M4OTAwKSB7DQoJCQkJ aWZtZWRpYV9hZGQoJnNjLT5tZWRpYSwNCgkJCQkJSUZNX0VUSEVSfElGTV8x MF9UfElGTV9GRFgsIDAsIE5VTEwpOw0KCQkJCWlmbWVkaWFfYWRkKCZzYy0+ bWVkaWEsDQoJCQkJCUlGTV9FVEhFUnxJRk1fMTBfVHxJRk1fSERYLCAwLCBO VUxMKTsNCgkJCX0NCgkJfSANCg0KCQlpZiAoc2MtPmFkYXB0ZXJfY25mICYg QV9DTkZfMTBCXzIpDQoJCQlpZm1lZGlhX2FkZCgmc2MtPm1lZGlhLCBJRk1f RVRIRVJ8SUZNXzEwXzIsIDAsIE5VTEwpOw0KDQoJCWlmIChzYy0+YWRhcHRl cl9jbmYgJiBBX0NORl9BVUkpDQoJCQlpZm1lZGlhX2FkZCgmc2MtPm1lZGlh LCBJRk1fRVRIRVJ8SUZNXzEwXzUsIDAsIE5VTEwpOw0KDQogICAgICAgICAg ICAgICAgaWYgKHNjLT5hZGFwdGVyX2NuZiAmIEFfQ05GX01FRElBKQ0KICAg ICAgICAgICAgICAgICAgICAgICAgaWZtZWRpYV9hZGQoJnNjLT5tZWRpYSwg SUZNX0VUSEVSfElGTV9BVVRPLCAwLCBOVUxMKTsNCg0KICAgICAgICAgICAg ICAgIC8qIFNldCBkZWZhdWx0IG1lZGlhIGZyb20gRUVQUk9NICovDQogICAg ICAgICAgICAgICAgc3dpdGNoIChzYy0+YWRhcHRlcl9jbmYgJiBBX0NORl9N RURJQV9UWVBFKSB7DQogICAgICAgICAgICAgICAgY2FzZSBBX0NORl9NRURJ QV9BVVRPOiAgbWVkaWEgPSBJRk1fRVRIRVJ8SUZNX0FVVE87IGJyZWFrOw0K ICAgICAgICAgICAgICAgIGNhc2UgQV9DTkZfTUVESUFfMTBCX1Q6IG1lZGlh ID0gSUZNX0VUSEVSfElGTV8xMF9UOyBicmVhazsNCiAgICAgICAgICAgICAg ICBjYXNlIEFfQ05GX01FRElBXzEwQl8yOiBtZWRpYSA9IElGTV9FVEhFUnxJ Rk1fMTBfMjsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSBBX0NORl9N RURJQV9BVUk6ICAgbWVkaWEgPSBJRk1fRVRIRVJ8SUZNXzEwXzU7IGJyZWFr Ow0KICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHByaW50ZihDU19OQU1FIiVk OiBhZGFwdGVyIGhhcyBubyBtZWRpYVxuIiwgdW5pdCk7DQogICAgICAgICAg ICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmbWVkaWFfc2V0KCZzYy0+bWVk aWEsIG1lZGlhKTsNCgkJY3NfbWVkaWFzZXQoc2MsIG1lZGlhKTsNCg0KCQlp Zl9hdHRhY2goaWZwKTsNCgkJY3Nfc3RvcCggc2MgKTsNCgkJZXRoZXJfaWZh dHRhY2goaWZwKTsNCgl9DQoNCglpZiAoYm9vdHZlcmJvc2UpDQoJCXByaW50 ZihDU19OQU1FIiVkOiBldGhlcm5ldCBhZGRyZXNzICU2RFxuIiwNCgkJICAg ICAgIGlmcC0+aWZfdW5pdCwgc2MtPmFycGNvbS5hY19lbmFkZHIsICI6Iik7 DQoNCiNpZiBOQlBGSUxURVIgPiAwDQoJYnBmYXR0YWNoKGlmcCwgRExUX0VO MTBNQiwgc2l6ZW9mIChzdHJ1Y3QgZXRoZXJfaGVhZGVyKSk7DQojZW5kaWYN CglyZXR1cm4gMTsNCn0NCg0Kc3RhdGljIGludA0KY3NfYXR0YWNoX2lzYShz dHJ1Y3QgaXNhX2RldmljZSAqZGV2KQ0Kew0KICAgICAgICBpbnQgdW5pdD1k ZXYtPmlkX3VuaXQ7DQogICAgICAgIHN0cnVjdCBjc19zb2Z0YyAqc2M9JmNz X3NvZnRjW3VuaXRdOw0KICAgICAgICBpbnQgZmxhZ3M9ZGV2LT5pZF9mbGFn czsNCg0KICAgICAgICByZXR1cm4gY3NfYXR0YWNoKHNjLCB1bml0LCBmbGFn cyk7DQp9DQoNCi8qDQogKiBJbml0aWFsaXplIHRoZSBib2FyZA0KICovDQpz dGF0aWMgdm9pZA0KY3NfaW5pdCh2b2lkICp4c2MpDQp7DQoJc3RydWN0IGNz X3NvZnRjICpzYz0oc3RydWN0IGNzX3NvZnRjICopeHNjOw0KCXN0cnVjdCBp Zm5ldCAqaWZwID0gJnNjLT5hcnBjb20uYWNfaWY7DQoJaW50IGksIHMsIHJl c3VsdCwgcnhfY2ZnOw0KDQoJaWYgKGlmcC0+aWZfYWRkcmxpc3QgPT0gKHN0 cnVjdCBpZmFkZHIgKikgMCkNCgkJcmV0dXJuOw0KDQoJLyoNCgkgKiByZXNl dCB3aGF0Y2hkb2cgdGltZXINCgkgKi8NCglpZnAtPmlmX3RpbWVyPTA7DQoJ c2MtPmJ1Zl9sZW4gPSAwOw0KCQ0KCXM9c3BsaW1wKCk7DQoNCgkvKg0KCSAq IEhhcmR3YXJlIGluaXRpYWxpemF0aW9uIG9mIGNzDQoJICovDQoNCgkvKiBF bmFibGUgcmVjZWl2ZXIgYW5kIHRyYW5zbWl0dGVyICovDQoJY3Nfd3JpdGVy ZWcoc2MtPm5pY19hZGRyLCBQUF9MaW5lQ1RMLA0KCQkgICAgc2MtPmxpbmVf Y3RsIHwgU0VSSUFMX1JYX09OIHwgU0VSSUFMX1RYX09OKTsNCg0KCS8qIENv bmZpZ3VyZSB0aGUgcmVjZWl2ZXIgbW9kZSAqLw0KCWNzX3NldG1vZGUoc2Mp Ow0KDQoJLyoNCgkgKiBUaGlzIGRlZmluZXMgd2hhdCB0eXBlIG9mIGZyYW1l cyB3aWxsIGNhdXNlIGludGVycnVwdHMNCgkgKiBCYWQgZnJhbWVzIHNob3Vs ZCBnZW5lcmF0ZSBpbnRlcnJ1cHRzIHNvIHRoYXQgdGhlIGRyaXZlcg0KCSAq IGNvdWxkIHRyYWNrIHN0YXRpc3RpY3Mgb2YgZGlzY2FyZGVkIHBhY2tldHMN CgkgKi8NCiAgICAgICAgcnhfY2ZnID0gUlhfT0tfRU5CTCB8IFJYX0NSQ19F UlJPUl9FTkJMIHwgUlhfUlVOVF9FTkJMIHwNCgkJIFJYX0VYVFJBX0RBVEFf RU5CTDsNCglpZiAoc2MtPmlzYV9jb25maWcgJiBTVFJFQU1fVFJBTlNGRVIp DQoJCXJ4X2NmZyB8PSBSWF9TVFJFQU1fRU5CTDsNCgljc193cml0ZXJlZyhz Yy0+bmljX2FkZHIsIFBQX1J4Q0ZHLCByeF9jZmcpOw0KDQoJY3Nfd3JpdGVy ZWcoc2MtPm5pY19hZGRyLCBQUF9UeENGRywgVFhfTE9TVF9DUlNfRU5CTCB8 DQoJCSAgICBUWF9TUUVfRVJST1JfRU5CTCB8IFRYX09LX0VOQkwgfCBUWF9M QVRFX0NPTF9FTkJMIHwNCgkJICAgIFRYX0pCUl9FTkJMIHwgVFhfQU5ZX0NP TF9FTkJMIHwgVFhfMTZfQ09MX0VOQkwpOw0KDQoJY3Nfd3JpdGVyZWcoc2Mt Pm5pY19hZGRyLCBQUF9CdWZDRkcsIFJFQURZX0ZPUl9UWF9FTkJMIHwNCgkJ ICAgIFJYX01JU1NfQ09VTlRfT1ZSRkxPV19FTkJMIHwgVFhfQ09MX0NPVU5U X09WUkZMT1dfRU5CTCB8DQoJCSAgICBUWF9VTkRFUlJVTl9FTkJMIC8qfCBS WF9ETUFfRU5CTCovKTsNCg0KICAgICAgICAvKiBXcml0ZSBNQUMgYWRkcmVz cyBpbnRvIElBIGZpbHRlciAqLw0KICAgICAgICBmb3IgKGk9MDsgaTxFVEhF Ul9BRERSX0xFTi8yOyBpKyspDQogICAgICAgICAgICAgICAgY3Nfd3JpdGVy ZWcoc2MtPm5pY19hZGRyLCBQUF9JQStpKjIsDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2MtPmFycGNvbS5hY19lbmFkZHJbaSoyXSB8DQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNjLT5hcnBjb20uYWNfZW5hZGRy W2kqMisxXSA8PCA4KSApOw0KDQoJLyoNCgkgKiBOb3cgZW5hYmxlIGV2ZXJ5 dGhpbmcNCgkgKi8NCi8qDQojaWZkZWYJQ1NfVVNFXzY0S19ETUENCgljc193 cml0ZXJlZyhzYy0+bmljX2FkZHIsIFBQX0J1c0NUTCwgRU5BQkxFX0lSUSB8 IFJYX0RNQV9TSVpFXzY0Syk7DQogICAgICAgICNlbHNlDQoNCiAgICAgICAg Y3Nfd3JpdGVyZWcoc2MtPm5pY19hZGRyLCBQUF9CdXNDVEwsIEVOQUJMRV9J UlEpOw0KI2VuZGlmDQoqLw0KCWNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwg UFBfQnVzQ1RMLCBFTkFCTEVfSVJRKTsNCgkNCgkvKg0KCSAqIFNldCBydW5u aW5nIGFuZCBjbGVhciBvdXRwdXQgYWN0aXZlIGZsYWdzDQoJICovDQoJc2Mt PmFycGNvbS5hY19pZi5pZl9mbGFncyB8PSBJRkZfUlVOTklORzsNCglzYy0+ YXJwY29tLmFjX2lmLmlmX2ZsYWdzICY9IH5JRkZfT0FDVElWRTsNCg0KCS8q DQoJICogU3RhcnQgc2VuZGluZyBwcm9jZXNzDQoJICovDQoJY3Nfc3RhcnQo aWZwKTsNCg0KCSh2b2lkKSBzcGx4KHMpOw0KfQ0KDQovKg0KICogR2V0IHRo ZSBwYWNrZXQgZnJvbSB0aGUgYm9hcmQgYW5kIHNlbmQgaXQgdG8gdGhlIHVw cGVyIGxheWVyDQogKiB2aWEgZXRoZXJfaW5wdXQoKS4NCiAqLw0Kc3RhdGlj IGludA0KY3NfZ2V0X3BhY2tldChzdHJ1Y3QgY3Nfc29mdGMgKnNjKQ0Kew0K CXN0cnVjdCBpZm5ldCAqaWZwID0gJihzYy0+YXJwY29tLmFjX2lmKTsNCglp bnQgaW9iYXNlID0gc2MtPm5pY19hZGRyLCBzdGF0dXMsIGxlbmd0aDsNCglz dHJ1Y3QgZXRoZXJfaGVhZGVyICplaDsNCglzdHJ1Y3QgbWJ1ZiAqbTsNCg0K I2lmZGVmIENTX0RFQlVHDQoJaW50IGk7DQojZW5kaWYNCg0KCXN0YXR1cyA9 IGludyhpb2Jhc2UgKyBSWF9GUkFNRV9QT1JUKTsNCglsZW5ndGggPSBpbnco aW9iYXNlICsgUlhfRlJBTUVfUE9SVCk7DQoNCiNpZmRlZiBDU19ERUJVRw0K CXByaW50ZihDU19OQU1FIiUxZDogcmN2ZDogc3RhdCAleCwgbGVuICVkXG4i LA0KCQlpZnAtPmlmX3VuaXQsIHN0YXR1cywgbGVuZ3RoKTsNCiNlbmRpZg0K DQoJaWYgKCEoc3RhdHVzICYgUlhfT0spKSB7DQojaWZkZWYgQ1NfREVCVUcN CgkJcHJpbnRmKENTX05BTUUiJTFkOiBiYWQgcGt0IHN0YXQgJXhcbiIsIGlm cC0+aWZfdW5pdCwgc3RhdHVzKTsNCiNlbmRpZg0KCQlpZnAtPmlmX2llcnJv cnMrKzsNCgkJcmV0dXJuIC0xOw0KCX0NCg0KCU1HRVRIRFIobSwgTV9ET05U V0FJVCwgTVRfREFUQSk7DQoJaWYgKG09PU5VTEwpDQoJCXJldHVybiAtMTsN Cg0KCWlmIChsZW5ndGggPiBNSExFTikgew0KCQlNQ0xHRVQobSwgTV9ET05U V0FJVCk7DQoJCWlmICghKG0tPm1fZmxhZ3MgJiBNX0VYVCkpIHsNCgkJCW1f ZnJlZW0obSk7DQoJCQlyZXR1cm4gLTE7DQoJCX0NCgl9DQoNCgkvKiBJbml0 aWFsaXplIHBhY2tldCdzIGhlYWRlciBpbmZvICovDQoJbS0+bV9wa3RoZHIu cmN2aWYgPSBpZnA7DQoJbS0+bV9wa3RoZHIubGVuID0gbGVuZ3RoOw0KCW0t Pm1fbGVuID0gbGVuZ3RoOw0KDQoJLyogR2V0IHRoZSBkYXRhICovDQoJaW5z dyhpb2Jhc2UgKyBSWF9GUkFNRV9QT1JULCBtLT5tX2RhdGEsIChsZW5ndGgr MSk+PjEpOw0KDQoJZWggPSBtdG9kKG0sIHN0cnVjdCBldGhlcl9oZWFkZXIg Kik7DQoNCiNpZiBOQlBGSUxURVIgPiAwDQoJaWYgKGlmcC0+aWZfYnBmKQ0K CQlicGZfbXRhcChpZnAsIG0pOw0KI2VuZGlmDQoNCiNpZmRlZiBDU19ERUJV Rw0KCWZvciAoaT0wO2k8bGVuZ3RoO2krKykNCgkgICAgIHByaW50ZigiICUw MngiLCh1bnNpZ25lZCBjaGFyKSooKGNoYXIgKikobS0+bV9kYXRhK2kpKSk7 DQoJcHJpbnRmKCAiXG4iICk7DQojZW5kaWYNCg0KCWlmIChzdGF0dXMgJiAo UlhfSUEgfCBSWF9CUk9BRENBU1QpIHx8IA0KCSAgICAoaWZwLT5pZl9mbGFn cyAmIElGRl9NVUxUSUNBU1QgJiYgc3RhdHVzICYgUlhfSEFTSEVEKSkgew0K CQltLT5tX3BrdGhkci5sZW4gLT0gc2l6ZW9mKHN0cnVjdCBldGhlcl9oZWFk ZXIpOw0KCQltLT5tX2xlbiAtPSBzaXplb2Yoc3RydWN0IGV0aGVyX2hlYWRl cik7DQoJCW0tPm1fZGF0YSArPSBzaXplb2Yoc3RydWN0IGV0aGVyX2hlYWRl cik7DQoNCgkJLyogRmVlZCB0aGUgcGFja2V0IHRvIHRoZSB1cHBlciBsYXll ciAqLw0KCQlldGhlcl9pbnB1dChpZnAsIGVoLCBtKTsNCg0KCQlpZnAtPmlm X2lwYWNrZXRzKys7DQoNCgkJaWYgKGxlbmd0aD09RVRIRVJfTUFYX0xFTi1F VEhFUl9DUkNfTEVOKQ0KICAgICAgICAgICAgICAgICAgICAgICAgREVMQVko IENTX1dBSVRfTkVYVF9QQUNLRVQgKTsNCgl9IGVsc2Ugew0KCQltX2ZyZWVt KG0pOw0KCX0NCg0KCXJldHVybiAwOw0KfQ0KDQovKg0KICogU29mdHdhcmUg Y2FsbHMgaW50ZXJydXB0IGhhbmRsZXINCiAqLw0Kc3RhdGljIHZvaWQNCmNz aW50cl9zYyhzdHJ1Y3QgY3Nfc29mdGMgKnNjLCBpbnQgdW5pdCkNCnsNCglz dHJ1Y3QgaWZuZXQgKmlmcCA9ICYoc2MtPmFycGNvbS5hY19pZik7DQoJaW50 IHN0YXR1cywgczsNCg0KI2lmZGVmIENTX0RFQlVHDQoJcHJpbnRmKENTX05B TUUiJTFkOiBJbnRlcnJ1cHQuXG4iLCB1bml0KTsNCiNlbmRpZg0KDQoJd2hp bGUgKChzdGF0dXM9Y3NfcmVhZHdvcmQoc2MtPm5pY19hZGRyLCBJU1FfUE9S VCkpKSB7DQoNCiNpZmRlZiBDU19ERUJVRw0KCQlwcmludGYoIENTX05BTUUi JTFkOmZyb20gSVNROiAlMDR4XG4iLCB1bml0LCBzdGF0dXMgKTsNCiNlbmRp Zg0KDQoJCXN3aXRjaCAoc3RhdHVzICYgSVNRX0VWRU5UX01BU0spIHsNCiAg ICAgICAgICAgICAgICBjYXNlIElTUV9SRUNFSVZFUl9FVkVOVDoNCiAgICAg ICAgICAgICAgICAgICAgICAgIGNzX2dldF9wYWNrZXQoc2MpOw0KICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICBj YXNlIElTUV9UUkFOU01JVFRFUl9FVkVOVDoNCiAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChzdGF0dXMgJiBUWF9PSykNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWZwLT5pZl9vcGFja2V0cysrOw0KICAgICAgICAg ICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZnAtPmlmX29lcnJvcnMrKzsNCiAgICAgICAgICAgICAgICAg ICAgICAgIGlmcC0+aWZfZmxhZ3MgJj0gfklGRl9PQUNUSVZFOw0KICAgICAg ICAgICAgICAgICAgICAgICAgaWZwLT5pZl90aW1lciA9IDA7DQogICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgIGNh c2UgSVNRX0JVRkZFUl9FVkVOVDoNCiAgICAgICAgICAgICAgICAgICAgICAg IGlmIChzdGF0dXMgJiBSRUFEWV9GT1JfVFgpIHsNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWZwLT5pZl9mbGFncyAmPSB+SUZGX09BQ1RJ VkU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcC0+aWZf dGltZXIgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAg ICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICYgVFhfVU5ERVJSVU4p IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZwLT5pZl9m bGFncyAmPSB+SUZGX09BQ1RJVkU7DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmcC0+aWZfdGltZXIgPSAwOw0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZnAtPmlmX29lcnJvcnMrKzsNCiAgICAgICAg ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOw0KDQogICAgICAgICAgICAgICAgY2FzZSBJU1FfUlhfTUlTU19FVkVO VDoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmcC0+aWZfaWVycm9ycys9 KHN0YXR1cz4+Nik7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsN Cg0KICAgICAgICAgICAgICAgIGNhc2UgSVNRX1RYX0NPTF9FVkVOVDoNCiAg ICAgICAgICAgICAgICAgICAgICAgIGlmcC0+aWZfY29sbGlzaW9ucys9KHN0 YXR1cz4+Nik7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAg ICAgICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoIShp ZnAtPmlmX2ZsYWdzICYgSUZGX09BQ1RJVkUpKSB7DQogICAgICAgICAgICAg ICAgY3Nfc3RhcnQoaWZwKTsNCiAgICAgICAgfQ0KfQ0KDQovKg0KICogSGFu ZGxlIGludGVycnVwdHMNCiAqLw0Kc3RhdGljIHZvaWQNCmNzaW50cihpbnQg dW5pdCkNCnsNCglzdHJ1Y3QgY3Nfc29mdGMgKnNjID0gJmNzX3NvZnRjW3Vu aXRdOw0KDQoJY3NpbnRyX3NjKHNjLCB1bml0KTsNCn0NCg0KLyoNCiAqIFNh dmUgdGhlIGRhdGEgaW4gYnVmZmVyDQogKi8NCg0Kc3RhdGljIHZvaWQNCmNz X3dyaXRlX21idWZzKCBzdHJ1Y3QgY3Nfc29mdGMgKnNjLCBzdHJ1Y3QgbWJ1 ZiAqbSApDQp7DQoJaW50IGxlbjsNCglzdHJ1Y3QgbWJ1ZiAqbXA7DQoJdW5z aWduZWQgY2hhciAqZGF0YSwgKmJ1ZjsNCg0KCWZvciAobXA9bSwgYnVmPXNj LT5idWZmZXIsIHNjLT5idWZfbGVuPTA7IG1wICE9IE5VTEw7IG1wPW1wLT5t X25leHQpIHsNCgkJbGVuID0gbXAtPm1fbGVuOw0KDQoJCS8qDQoJCSAqIEln bm9yZSBlbXB0eSBwYXJ0cw0KCQkgKi8NCgkJaWYgKCFsZW4pDQoJCWNvbnRp bnVlOw0KDQoJCS8qDQoJCSAqIEZpbmQgYWN0dWFsIGRhdGEgYWRkcmVzcw0K CQkgKi8NCgkJZGF0YSA9IG10b2QobXAsIGNhZGRyX3QpOw0KDQoJCWJjb3B5 KChjYWRkcl90KSBkYXRhLCAoY2FkZHJfdCkgYnVmLCBsZW4pOw0KCQlidWYg Kz0gbGVuOw0KCQlzYy0+YnVmX2xlbiArPSBsZW47DQoJfQ0KfQ0KDQoNCnN0 YXRpYyB2b2lkDQpjc194bWl0X2J1Ziggc3RydWN0IGNzX3NvZnRjICpzYyAp DQp7DQoJb3V0c3coc2MtPm5pY19hZGRyK1RYX0ZSQU1FX1BPUlQsIHNjLT5i dWZmZXIsIChzYy0+YnVmX2xlbisxKT4+MSk7DQoJc2MtPmJ1Zl9sZW4gPSAw Ow0KfQ0KDQpzdGF0aWMgdm9pZA0KY3Nfc3RhcnQoc3RydWN0IGlmbmV0ICpp ZnApDQp7DQoJaW50IHMsIGxlbmd0aDsNCglzdHJ1Y3QgbWJ1ZiAqbSwgKm1w Ow0KCXN0cnVjdCBjc19zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRjOw0KDQoJ cyA9IHNwbGltcCgpOw0KDQoJZm9yICg7Oykgew0KCQlpZiAoc2MtPmJ1Zl9s ZW4pDQoJCQlsZW5ndGggPSBzYy0+YnVmX2xlbjsNCgkJZWxzZSB7DQoJCQlJ Rl9ERVFVRVVFKCAmaWZwLT5pZl9zbmQsIG0gKTsNCg0KCQkJaWYgKG09PU5V TEwpIHsNCgkJCQkodm9pZCkgc3BseChzKTsNCgkJCQlyZXR1cm47DQoJCQl9 DQoNCgkJCWZvciAobGVuZ3RoPTAsIG1wPW07IG1wICE9IE5VTEw7IG1wPW1w LT5tX25leHQpDQoJCQkJbGVuZ3RoICs9IG1wLT5tX2xlbjsNCg0KCQkJLyog U2tpcCB6ZXJvLWxlbmd0aCBwYWNrZXRzICovDQoJCQlpZiAobGVuZ3RoID09 IDApIHsNCgkJCQltX2ZyZWVtKG0pOw0KCQkJCWNvbnRpbnVlOw0KCQkJfQ0K DQoJCQljc193cml0ZV9tYnVmcyhzYywgbSk7DQoNCiNpZiBOQlBGSUxURVIg PiAwDQoJCQlpZiAoaWZwLT5pZl9icGYpIHsNCgkJCQlicGZfbXRhcChpZnAs IG0pOw0KCQkJfQ0KI2VuZGlmDQoNCgkJCW1fZnJlZW0obSk7DQoJCX0NCg0K CQkvKg0KCQkgKiBJc3N1ZSBhIFNFTkQgY29tbWFuZA0KCQkgKi8NCgkJb3V0 dyhzYy0+bmljX2FkZHIrVFhfQ01EX1BPUlQsIHNjLT5zZW5kX2NtZCk7DQoJ CW91dHcoc2MtPm5pY19hZGRyK1RYX0xFTl9QT1JULCBsZW5ndGggKTsNCg0K CQkvKg0KCQkgKiBJZiB0aGVyZSdzIG5vIGZyZWUgc3BhY2UgaW4gdGhlIGJ1 ZmZlciB0aGVuIGxlYXZlDQoJCSAqIHRoaXMgcGFja2V0IGZvciB0aGUgbmV4 dCB0aW1lOiBpbmRpY2F0ZSBvdXRwdXQgYWN0aXZlDQoJCSAqIGFuZCByZXR1 cm4uDQoJCSAqLw0KCQlpZiAoIShjc19yZWFkcmVnKHNjLT5uaWNfYWRkciwg UFBfQnVzU1QpICYgUkVBRFlfRk9SX1RYX05PVykpIHsNCgkJCWlmcC0+aWZf dGltZXIgPSBzYy0+YnVmX2xlbjsNCgkJCSh2b2lkKSBzcGx4KHMpOw0KCQkJ aWZwLT5pZl9mbGFncyB8PSBJRkZfT0FDVElWRTsNCgkJCXJldHVybjsNCgkJ fQ0KDQogICAgICAgICAgICAgICAJY3NfeG1pdF9idWYoc2MpOw0KDQoJCS8q DQoJCSAqIFNldCB0aGUgd2F0Y2hkb2cgdGltZXIgaW4gY2FzZSB3ZSBuZXZl ciBoZWFyDQoJCSAqIGZyb20gYm9hcmQgYWdhaW4uIChJIGRvbid0IGtub3cg YWJvdXQgY29ycmVjdA0KCQkgKiB2YWx1ZSBmb3IgdGhpcyB0aW1lb3V0KQ0K CQkgKi8NCgkJaWZwLT5pZl90aW1lciA9IGxlbmd0aDsNCg0KCQkodm9pZCkg c3BseChzKTsNCgkJaWZwLT5pZl9mbGFncyB8PSBJRkZfT0FDVElWRTsNCgkJ cmV0dXJuOw0KCX0NCn0NCg0KLyoNCiAqIFN0b3AgZXZlcnl0aGluZyBvbiB0 aGUgaW50ZXJmYWNlDQogKi8NCnN0YXRpYyB2b2lkDQpjc19zdG9wKHN0cnVj dCBjc19zb2Z0YyAqc2MpDQp7DQoJaW50IHMgPSBzcGxpbXAoKTsNCg0KCWNz X3dyaXRlcmVnKHNjLT5uaWNfYWRkciwgUFBfUnhDRkcsIDApOw0KCWNzX3dy aXRlcmVnKHNjLT5uaWNfYWRkciwgUFBfVHhDRkcsIDApOw0KCWNzX3dyaXRl cmVnKHNjLT5uaWNfYWRkciwgUFBfQnVmQ0ZHLCAwKTsNCgljc193cml0ZXJl ZyhzYy0+bmljX2FkZHIsIFBQX0J1c0NUTCwgMCk7DQoNCglzYy0+YXJwY29t LmFjX2lmLmlmX2ZsYWdzICY9IH4oSUZGX1JVTk5JTkcgfCBJRkZfT0FDVElW RSk7DQoJc2MtPmFycGNvbS5hY19pZi5pZl90aW1lciA9IDA7DQoNCgkodm9p ZCkgc3BseChzKTsNCn0NCg0KLyoNCiAqIFJlc2V0IHRoZSBpbnRlcmZhY2UN CiAqLw0Kc3RhdGljIHZvaWQNCmNzX3Jlc2V0KHN0cnVjdCBjc19zb2Z0YyAq c2MpDQp7DQoJY3Nfc3RvcChzYyk7DQoJY3NfaW5pdChzYyk7DQp9DQoNCnN0 YXRpYyB2b2lkDQpjc19zZXRtb2RlKHN0cnVjdCBjc19zb2Z0YyAqc2MpDQp7 DQoJc3RydWN0IGlmbmV0ICppZnAgPSAmKHNjLT5hcnBjb20uYWNfaWYpOw0K CWludCByeF9jdGw7DQoNCgkvKiBTdG9wIHRoZSByZWNlaXZlciB3aGlsZSBj aGFuZ2luZyBmaWx0ZXJzICovDQoJY3Nfd3JpdGVyZWcoc2MtPm5pY19hZGRy LCBQUF9MaW5lQ1RMLCANCgkJCWNzX3JlYWRyZWcoc2MtPm5pY19hZGRyLCBQ UF9MaW5lQ1RMKSAmIH5TRVJJQUxfUlhfT04pOw0KDQoJaWYgKGlmcC0+aWZf ZmxhZ3MgJiBJRkZfUFJPTUlTQykgew0KCQkvKiBUdXJuIG9uIHByb21pc2N1 b3VzIG1vZGUuICovDQoJCXJ4X2N0bCA9IFJYX09LX0FDQ0VQVCB8IFJYX1BS T01fQUNDRVBUOw0KCX0gZWxzZSB7DQoJCWlmIChpZnAtPmlmX2ZsYWdzICYg SUZGX01VTFRJQ0FTVCkgew0KCQkJLyogQWxsb3cgcmVjZWl2aW5nIGZyYW1l cyB3aXRoIG11bHRpY2FzdCBhZGRyZXNzZXMgKi8NCgkJCXJ4X2N0bCA9IFJY X0lBX0FDQ0VQVCB8IFJYX0JST0FEQ0FTVF9BQ0NFUFQgfA0KCQkJCSBSWF9P S19BQ0NFUFQgfCBSWF9NVUxUQ0FTVF9BQ0NFUFQ7DQoJCQkvKg0KCQkJICog SGVyZSB0aGUgcmVjb25maWd1cmF0aW9uIG9mIGNoaXAncyBtdWx0aWNhc3QN CgkJCSAqIGZpbHRlcnMgc2hvdWxkIGJlIGRvbmUgYnV0IEkndmUgbm8gaWRl YSBhYm91dA0KCQkJICogaGFzaCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGlzIGNo aXAuIElmIHlvdSBjYW4NCgkJCSAqIGFkZCB0aGlzIGNvZGUgb3IgZGVzY3Jp YmUgbWUgdGhlIHRyYW5zZm9ybWF0aW9uDQoJCQkgKiBJJ2QgYmUgdmVyeSBn bGFkLg0KCQkJICovDQoJCX0gZWxzZSB7DQoJCQkvKg0KCQkJICogUmVjZWl2 ZSBvbmx5IGdvb2QgZnJhbWVzIGFkZHJlc3NlZCBmb3IgdXMgYW5kDQoJCQkg KiBnb29kIGJyb2FkY2FzdHMuDQoJCQkgKi8NCgkJCXJ4X2N0bCA9IFJYX0lB X0FDQ0VQVCB8IFJYX0JST0FEQ0FTVF9BQ0NFUFQgfA0KCQkJCSBSWF9PS19B Q0NFUFQ7DQoJCX0NCgl9DQoNCgkvKiBTZXQgdXAgdGhlIGZpbHRlciAqLw0K CWNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwgUFBfUnhDVEwsIFJYX0RFRl9B Q0NFUFQgfCBSWF9NVUxUQ0FTVF9BQ0NFUFQpOw0KDQoJLyogVHVybiBvbiBy ZWNlaXZlciAqLw0KCWNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwgUFBfTGlu ZUNUTCwNCgkJCWNzX3JlYWRyZWcoc2MtPm5pY19hZGRyLCBQUF9MaW5lQ1RM KSB8IFNFUklBTF9SWF9PTik7DQp9DQoNCnN0YXRpYyBpbnQNCmNzX2lvY3Rs KHJlZ2lzdGVyIHN0cnVjdCBpZm5ldCAqaWZwLCBpbnQgY29tbWFuZCwgY2Fk ZHJfdCBkYXRhKQ0Kew0KCXN0cnVjdCBjc19zb2Z0YyAqc2M9aWZwLT5pZl9z b2Z0YzsNCglzdHJ1Y3QgaWZyZXEgKmlmciA9IChzdHJ1Y3QgaWZyZXEgKilk YXRhOw0KCWludCBzLGVycm9yPTA7DQoNCiNpZmRlZiBDU19ERUJVRw0KCXBy aW50ZihDU19OQU1FIiVkOiBpb2N0bCgleClcbiIsc2MtPmFycGNvbS5hY19p Zi5pZl91bml0LGNvbW1hbmQpOw0KI2VuZGlmDQoNCglzPXNwbGltcCgpOw0K DQoJc3dpdGNoIChjb21tYW5kKSB7DQoJY2FzZSBTSU9DU0lGQUREUjoNCglj YXNlIFNJT0NHSUZBRERSOg0KCWNhc2UgU0lPQ1NJRk1UVToNCgkJZXRoZXJf aW9jdGwoaWZwLCBjb21tYW5kLCBkYXRhKTsNCgkJYnJlYWs7DQoNCgljYXNl IFNJT0NTSUZGTEFHUzoNCgkJLyoNCgkJICogU3dpdGNoIGludGVyZmFjZSBz dGF0ZSBiZXR3ZWVuICJydW5uaW5nIiBhbmQNCgkJICogInN0b3BwZWQiLCBy ZWZsZWN0aW5nIHRoZSBVUCBmbGFnLg0KICAgICAgICAgICAgICAgICAqLw0K ICAgICAgICAgICAgICAgIGlmIChzYy0+YXJwY29tLmFjX2lmLmlmX2ZsYWdz ICYgSUZGX1VQKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNj LT5hcnBjb20uYWNfaWYuaWZfZmxhZ3MgJiBJRkZfUlVOTklORyk9PTApIHsN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NfaW5pdChzYyk7 DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg fSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2MtPmFy cGNvbS5hY19pZi5pZl9mbGFncyAmIElGRl9SVU5OSU5HKSE9MCkgew0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc19zdG9wKHNjKTsNCiAg ICAgICAgICAgICAgICAgICAgICAgIH0NCgkJfQ0KCQkvKg0KCQkgKiBQcm9t aXNjdW91cyBhbmQvb3IgbXVsdGljYXN0IGZsYWdzIG1heSBoYXZlIGNoYW5n ZWQsDQoJCSAqIHNvIHJlcHJvZ3JhbSB0aGUgbXVsdGljYXN0IGZpbHRlciBh bmQvb3IgcmVjZWl2ZSBtb2RlLg0KCQkgKg0KCQkgKiBTZWUgbm90ZSBhYm91 dCBtdWx0aWNhc3RzIGluIGNzX3NldG1vZGUNCgkJICovDQoJCWNzX3NldG1v ZGUoc2MpOw0KCQlicmVhazsNCg0KCWNhc2UgU0lPQ0FERE1VTFRJOg0KCWNh c2UgU0lPQ0RFTE1VTFRJOg0KCQkvKg0KCQkgKiBVcGRhdGUgb3V0IG11bHRp Y2FzdCBsaXN0Lg0KCQkgKi8NCiAgICAgICAgICAgICAgICBlcnJvciA9IChj b21tYW5kID09IFNJT0NBRERNVUxUSSkNCiAgICAgICAgICAgICAgICAgICAg ICAgID8gZXRoZXJfYWRkbXVsdGkoaWZyLCAmc2MtPmFycGNvbSkNCiAgICAg ICAgICAgICAgICAgICAgICAgIDogZXRoZXJfZGVsbXVsdGkoaWZyLCAmc2Mt PmFycGNvbSk7DQoNCiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgPT0gRU5F VFJFU0VUKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvKg0KICAgICAg ICAgICAgICAgICAgICAgICAgICogTXVsdGljYXN0IGxpc3QgaGFzIGNoYW5n ZWQ7IHNldCB0aGUgaGFyZHdhcmUgZmlsdGVyDQogICAgICAgICAgICAgICAg ICAgICAgICAgKiBhY2NvcmRpbmdseS4NCiAgICAgICAgICAgICAgICAgICAg ICAgICAqDQogICAgICAgICAgICAgICAgICAgICAgICAgKiBTZWUgbm90ZSBh Ym91dCBtdWx0aWNhc3RzIGluIGNzX3NldG1vZGUNCgkJCSAqLw0KICAgICAg ICAgICAgICAgICAgICAgICAgY3Nfc2V0bW9kZShzYyk7DQogICAgICAgICAg ICAgICAgICAgICAgICBlcnJvciA9IDA7DQogICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgIGNhc2UgU0lPQ1NJ Rk1FRElBOg0KICAgICAgICBjYXNlIFNJT0NHSUZNRURJQToNCiAgICAgICAg ICAgICAgICBlcnJvciA9IGlmbWVkaWFfaW9jdGwoaWZwLCBpZnIsICZzYy0+ bWVkaWEsIGNvbW1hbmQpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KDQog ICAgICAgIGRlZmF1bHQ6DQoJCWVycm9yID0gRUlOVkFMOw0KICAgICAgICB9 DQoNCgkodm9pZCkgc3BseChzKTsNCglyZXR1cm4gZXJyb3I7DQp9DQoNCi8q DQogKiBEZXZpY2UgdGltZW91dC93YXRjaGRvZyByb3V0aW5lLiBFbnRlcmVk IGlmIHRoZSBkZXZpY2UgbmVnbGVjdHMgdG8NCiAqIGdlbmVyYXRlIGFuIGlu dGVycnVwdCBhZnRlciBhIHRyYW5zbWl0IGhhcyBiZWVuIHN0YXJ0ZWQgb24g aXQuDQogKi8NCnN0YXRpYyB2b2lkDQpjc193YXRjaGRvZyhzdHJ1Y3QgaWZu ZXQgKmlmcCkNCnsNCglzdHJ1Y3QgY3Nfc29mdGMgKnNjID0gJmNzX3NvZnRj W2lmcC0+aWZfdW5pdF07DQoNCglpZnAtPmlmX29lcnJvcnMrKzsNCglsb2co TE9HX0VSUiwgQ1NfTkFNRSIlZDogZGV2aWNlIHRpbWVvdXRcbiIsIGlmcC0+ aWZfdW5pdCk7DQoNCgkvKiBSZXNldCB0aGUgaW50ZXJmYWNlICovDQoJaWYg KGlmcC0+aWZfZmxhZ3MgJiBJRkZfVVApDQoJCWNzX3Jlc2V0KHNjKTsNCgll bHNlDQoJCWNzX3N0b3Aoc2MpOw0KfQ0KDQpzdGF0aWMgaW50DQpjc19tZWRp YWNoYW5nZShzdHJ1Y3QgaWZuZXQgKmlmcCkNCnsNCglzdHJ1Y3QgY3Nfc29m dGMgKnNjID0gaWZwLT5pZl9zb2Z0YzsNCglzdHJ1Y3QgaWZtZWRpYSAqaWZt ID0gJnNjLT5tZWRpYTsNCg0KCWlmIChJRk1fVFlQRShpZm0tPmlmbV9tZWRp YSkgIT0gSUZNX0VUSEVSKQ0KCQlyZXR1cm4gRUlOVkFMOw0KDQoJcmV0dXJu IGNzX21lZGlhc2V0KHNjLCBpZm0tPmlmbV9tZWRpYSk7DQp9DQoNCnN0YXRp YyB2b2lkDQpjc19tZWRpYXN0YXR1cyhzdHJ1Y3QgaWZuZXQgKmlmcCwgc3Ry dWN0IGlmbWVkaWFyZXEgKmlmbXIpDQp7DQoJaW50IGxpbmVfc3RhdHVzOw0K CXN0cnVjdCBjc19zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRjOw0KDQoJaWZt ci0+aWZtX2FjdGl2ZSA9IElGTV9FVEhFUjsNCglsaW5lX3N0YXR1cyA9IGNz X3JlYWRyZWcoc2MtPm5pY19hZGRyLCBQUF9MaW5lU1QpOw0KCWlmIChsaW5l X3N0YXR1cyAmIFRFTkJBU0VUX09OKSB7DQoJCWlmbXItPmlmbV9hY3RpdmUg fD0gSUZNXzEwX1Q7DQoJCWlmIChzYy0+Y2hpcF90eXBlICE9IENTODkwMCkg ew0KCQkJaWYgKGNzX3JlYWRyZWcoc2MtPm5pY19hZGRyLCBQUF9BdXRvTmVn U1QpICYgRkRYX0FDVElWRSkNCgkJCQlpZm1yLT5pZm1fYWN0aXZlIHw9IElG TV9GRFg7DQoJCQlpZiAoY3NfcmVhZHJlZyhzYy0+bmljX2FkZHIsIFBQX0F1 dG9OZWdTVCkgJiBIRFhfQUNUSVZFKQ0KCQkJCWlmbXItPmlmbV9hY3RpdmUg fD0gSUZNX0hEWDsNCgkJfQ0KCQlpZm1yLT5pZm1fc3RhdHVzID0gSUZNX0FW QUxJRDsNCgkJaWYgKGxpbmVfc3RhdHVzICYgTElOS19PSykNCgkJCWlmbXIt PmlmbV9zdGF0dXMgfD0gSUZNX0FDVElWRTsNCgl9IGVsc2Ugew0KCQkvKg0K CQkgKiBYWFggSSBkb24ndCBrbm93IGlmIHRoaXMgaXMgY29ycmVjdCBvciBu b3QuDQoJCSAqIElmIEFVSSB3aWxsIGJlIHJlcG9ydGVkIGluc3RlYWQgb2Yg Qk5DDQogICAgICAgICAgICAgICAgICogdGhlbiB0aGlzIGlzIHdyb25nLg0K CQkgKi8NCgkJaWYgKGxpbmVfc3RhdHVzICYgQVVJX09OKQ0KCQkJaWZtci0+ aWZtX2FjdGl2ZSB8PSBJRk1fMTBfNTsNCgkJZWxzZQ0KCQkJaWZtci0+aWZt X2FjdGl2ZSB8PSBJRk1fMTBfMjsNCiNpZmRlZiBDU19CUk9LRU5fQk5DX0RF VEVDVA0KCQlwcmludGYoQ1NfTkFNRSIlZDogUFBfTGluZVNUOiAlMDJ4IFBQ X1NlbGZTVDogJTAyeFxuIiwNCgkJCQlpZnAtPmlmX3VuaXQsbGluZV9zdGF0 dXMsDQoJCQkJY3NfcmVhZHJlZyhzYy0+bmljX2FkZHIsUFBfU2VsZlNUKSk7 DQojZW5kaWYNCgl9DQp9DQoNCnN0YXRpYyBpbnQNCmNzX21lZGlhc2V0KHN0 cnVjdCBjc19zb2Z0YyAqc2MsIGludCBtZWRpYSkNCnsNCiAgICAgICAgaW50 IGVycm9yOw0KDQoJLyogU3RvcCB0aGUgcmVjZWl2ZXIgJiB0cmFuc21pdHRl ciAqLw0KCWNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwgUFBfTGluZUNUTCwN CiAgICAgICAgICAgICAgICAgICAgY3NfcmVhZHJlZyhzYy0+bmljX2FkZHIs IFBQX0xpbmVDVEwpICYNCgkJICAgIH4oU0VSSUFMX1JYX09OIHwgU0VSSUFM X1RYX09OKSk7DQoNCiNpZmRlZiBDU19ERUJVRw0KCXByaW50ZihDU19OQU1F IiVkOiBjc19zZXRtZWRpYSgleClcbiIsc2MtPmFycGNvbS5hY19pZi5pZl91 bml0LG1lZGlhKTsNCiNlbmRpZg0KDQoJc3dpdGNoIChJRk1fU1VCVFlQRSht ZWRpYSkpIHsNCgljYXNlIElGTV9BVVRPOg0KCQlpZiAoZXJyb3I9ZW5hYmxl X3RwKHNjKSkNCiAgICAgICAJCWlmIChlcnJvcj1lbmFibGVfYm5jKHNjKSkN CgkJICAgIGVycm9yPWVuYWJsZV9hdWkoc2MpOw0KCQlicmVhazsNCgljYXNl IElGTV8xMF9UOg0KCQlpZiAoZXJyb3I9ZW5hYmxlX3RwKHNjKSkNCgkJCWJy ZWFrOw0KCQlpZiAobWVkaWEgJiBJRk1fRkRYKQ0KCQkJY3NfZHVwbGV4X2Z1 bGwoc2MpOw0KCQllbHNlIGlmIChtZWRpYSAmIElGTV9IRFgpDQoJCQljc19k dXBsZXhfaGFsZihzYyk7DQoJCWVsc2UNCgkJCWVycm9yID0gY3NfZHVwbGV4 X2F1dG8oc2MpOw0KCQlicmVhazsNCgljYXNlIElGTV8xMF8yOg0KCQllcnJv ciA9IGVuYWJsZV9ibmMoc2MpOw0KCQlicmVhazsNCgljYXNlIElGTV8xMF81 Og0KCQllcnJvciA9IGVuYWJsZV9hdWkoc2MpOw0KCQlicmVhazsNCgl9DQoN CgkvKg0KCSAqIFR1cm4gdGhlIHRyYW5zbWl0dGVyICYgcmVjZWl2ZXIgYmFj ayBvbg0KCSAqLw0KCWNzX3dyaXRlcmVnKHNjLT5uaWNfYWRkciwgUFBfTGlu ZUNUTCwNCgkJICAgIGNzX3JlYWRyZWcoIHNjLT5uaWNfYWRkciwgUFBfTGlu ZUNUTCApIHwNCgkJICAgIFNFUklBTF9SWF9PTiB8IFNFUklBTF9UWF9PTik7 IA0KDQoJcmV0dXJuIGVycm9yOw0KfQ0KDQoNCiNpZiBOUE5QID4gMA0KDQpz dGF0aWMgc3RydWN0IGNzcG5wX2lkcyB7DQoJdV9sb25nCXZlbmRfaWQ7DQoJ Y2hhciAJKmlkX3N0cjsNCn0gY3NwbnBfaWRzW109IHsNCgl7IDB4NDA2MDYz MGUsICJDU0M2MDQwIiB9LA0KCXsgMHgxMDEwNGQyNCwgIklCTSBFdGhlckpl dCIgfSwNCgl7IDAgfQ0KfTsNCg0Kc3RhdGljIGNoYXIgKmNzX3BucF9wcm9i ZSh1X2xvbmcsIHVfbG9uZyk7DQpzdGF0aWMgdm9pZCBjc19wbnBfYXR0YWNo KHVfbG9uZywgdV9sb25nLCBjaGFyICosIHN0cnVjdCBpc2FfZGV2aWNlICop Ow0KDQpzdHJ1Y3QgcG5wX2RldmljZSBjc19wbnAgPSB7DQoJIkNTODkyMCBi YXNlZCBQblAgRXRoZXJuZXQiLA0KCWNzX3BucF9wcm9iZSwNCgljc19wbnBf YXR0YWNoLA0KCSZjc191bml0LA0KCSZuZXRfaW1hc2sJLyogaW1hc2sgKi8N Cn07DQoNCkRBVEFfU0VUIChwbnBkZXZpY2Vfc2V0LCBjc19wbnApOw0KDQpz dHJ1Y3QgY3NpbnRyX2xpc3Qgew0KCXN0cnVjdCBjc19zb2Z0YyAqc2M7DQoJ aW50IHVuaXQ7DQoJc3RydWN0IGNzaW50cl9saXN0ICpuZXh0Ow0KfTsNCg0K c3RhdGljIHN0cnVjdCBjc2ludHJfbGlzdCAqY3NpbnRyX2hlYWQ7DQoNCnN0 YXRpYyB2b2lkIGNzaW50cl9wbnBfYWRkKHN0cnVjdCBjc19zb2Z0YyAqc2Ms IGludCB1bml0KTsNCnN0YXRpYyB2b2lkIGNzaW50cl9wbnAoaW50IHVuaXQp Ow0KDQpzdGF0aWMgdm9pZA0KY3NpbnRyX3BucF9hZGQoc3RydWN0IGNzX3Nv ZnRjICpzYywgaW50IHVuaXQpDQp7DQogICAgc3RydWN0IGNzaW50cl9saXN0 ICppbnRyOw0KDQogICAgaWYgKCFzYykgcmV0dXJuOw0KDQogICAgaW50ciA9 IG1hbGxvYyAoc2l6ZW9mICgqaW50ciksIE1fREVWQlVGLCBNX1dBSVRPSyk7 DQogICAgaWYgKCFpbnRyKSByZXR1cm47DQoNCiAgICBpbnRyLT5zYyA9IHNj Ow0KICAgIGludHItPnVuaXQgPSB1bml0Ow0KICAgIGludHItPm5leHQgPSBj c2ludHJfaGVhZDsNCiAgICBjc2ludHJfaGVhZCA9IGludHI7DQp9DQoNCi8q DQogKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgUE5QIGluc3RhbGxlZCBjYXJk DQogKiBXZSBoYXZlIHRvIGZpbmQgdGhlIG51bWJlciBvZiB0aGUgY2FyZC4N CiAqLw0Kc3RhdGljIHZvaWQNCmNzaW50cl9wbnAoaW50IHVuaXQpDQp7DQog ICAgc3RydWN0IGNzX3NvZnRjICpzYzsNCiAgICBzdHJ1Y3QgY3NpbnRyX2xp c3QgKmludHI7DQoNCiAgICBmb3IgKGludHI9Y3NpbnRyX2hlYWQ7IGludHI7 IGludHI9aW50ci0+bmV4dCkgew0KCSAgICBpZiAoaW50ci0+dW5pdCA9PSB1 bml0KQ0KCQljc2ludHJfc2MoaW50ci0+c2MsIHVuaXQpOw0KCQlicmVhazsN Cgl9DQp9DQoNCnN0YXRpYyBjaGFyICoNCmNzX3BucF9wcm9iZSh1X2xvbmcg Y3NuLCB1X2xvbmcgdmVuZF9pZCkNCnsNCiAgICBzdHJ1Y3QgY3NwbnBfaWRz ICppZHM7DQogICAgY2hhcgkgICAgICpzPU5VTEw7DQoNCiAgICBmb3IoaWRz ID0gY3NwbnBfaWRzOyBpZHMtPnZlbmRfaWQgIT0gMDsgaWRzKyspIHsNCglp ZiAodmVuZF9pZCA9PSBpZHMtPnZlbmRfaWQpIHsNCgkgICAgcyA9IGlkcy0+ aWRfc3RyOw0KCSAgICBicmVhazsNCgl9DQogICAgfQ0KDQogICAgaWYgKHMp IHsNCglzdHJ1Y3QgcG5wX2NpbmZvIGQ7DQoJaW50IGxkbiA9IDA7DQoNCgly ZWFkX3BucF9wYXJtcygmZCwgbGRuKTsNCglpZiAoZC5lbmFibGUgPT0gMCkg ew0KCSAgICBwcmludGYoIlRoaXMgaXMgYSAlcywgYnV0IExETiAlZCBpcyBk aXNhYmxlZFxuIiwgcywgbGRuKTsNCgkgICAgcmV0dXJuIE5VTEwgOw0KCX0N CglyZXR1cm4gczsNCiAgICB9DQoNCiAgICByZXR1cm4gTlVMTCA7DQp9DQoN CnN0YXRpYyB2b2lkDQpjc19wbnBfYXR0YWNoKHVfbG9uZyBjc24sIHVfbG9u ZyB2ZW5kX2lkLCBjaGFyICpuYW1lLA0KCXN0cnVjdCBpc2FfZGV2aWNlICpk ZXYpDQp7DQoNCiAgICBzdHJ1Y3QgcG5wX2NpbmZvIGQ7DQogICAgaW50CWxk biA9IDA7DQogICAgaW50IGlvYmFzZSwgdW5pdCwgZmxhZ3M7DQogICAgdV9z aG9ydCBpcnE7DQogICAgc2hvcnQgZHJxOw0KICAgIHN0cnVjdCBpc2FfZGV2 aWNlICpkdnA7DQogICAgc3RydWN0IGNzX3NvZnRjICpzYyA9IG1hbGxvYyhz aXplb2YgKnNjLCBNX0RFVkJVRiwgTV9OT1dBSVQpOw0KDQogICAgaWYgKHJl YWRfcG5wX3Bhcm1zICggJmQgLCBsZG4gKSA9PSAwICkgew0KCXByaW50Zigi ZmFpbGVkIHRvIHJlYWQgcG5wIHBhcm1zXG4iKTsNCglyZXR1cm47DQogICAg fQ0KDQogICAgd3JpdGVfcG5wX3Bhcm1zKCAmZCwgbGRuICk7DQogICAgZW5h YmxlX3BucF9jYXJkKCk7DQoNCiAgICBpb2Jhc2UgPSBkZXYtPmlkX2lvYmFz ZSA9IGQucG9ydFswXTsNCiAgICBpcnEgPSBkZXYtPmlkX2lycSA9ICgxIDw8 IGQuaXJxWzBdICk7DQogICAgZHJxID0gZGV2LT5pZF9kcnEgPSBkLmRycVsw XTsNCiAgICBkZXYtPmlkX21hZGRyID0gMDsNCiAgICBkZXYtPmlkX2ludHIg PSBjc2ludHJfcG5wOw0KICAgIGZsYWdzID0gZGV2LT5pZF9mbGFncyA9IDA7 DQogICAgdW5pdCA9IGRldi0+aWRfdW5pdDsNCg0KICAgIGlmIChkZXYtPmlk X2RyaXZlciA9PSBOVUxMKSB7DQoJZGV2LT5pZF9kcml2ZXIgPSAmY3Nkcml2 ZXI7DQoJZHZwID0gZmluZF9pc2FkZXYoaXNhX2RldnRhYl9uZXQsICZjc2Ry aXZlciwgMCk7DQoJaWYgKGR2cCAhPSBOVUxMKQ0KCWRldi0+aWRfaWQgPSBk dnAtPmlkX2lkOw0KICAgIH0NCg0KICAgIGlmICghc2MpIHJldHVybjsNCg0K ICAgIGJ6ZXJvKHNjLCBzaXplb2YgKnNjKTsNCiAgICBpZiAoY3NfY3M4OXgw X3Byb2JlKHNjLCAmaXJxLCAmZHJxLCBpb2Jhc2UsIHVuaXQsIGZsYWdzKSA9 PSAwDQoJfHwgY3NfYXR0YWNoKHNjLCB1bml0LCBmbGFncykgPT0gMCkgew0K CSAgICBmcmVlKHNjLCBNX0RFVkJVRik7DQogICAgfSBlbHNlIHsNCglpZiAo KGlycSAhPSBkZXYtPmlkX2lycSkNCgkgICAgfHwgKGRycSAhPSBkZXYtPmlk X2RycSkNCgkgICAgfHwgKGlvYmFzZSAhPSBkZXYtPmlkX2lvYmFzZSkNCgkg ICAgfHwgKHVuaXQgIT0gZGV2LT5pZF91bml0KQ0KCSAgICB8fCAoZmxhZ3Mg IT0gZGV2LT5pZF9mbGFncykNCgkJKSB7DQoJCXByaW50ZigiZmFpbGVkIHRv IHBucCBjYXJkIHBhcmFtZXRhcnNcbiIpOw0KCX0NCiAgICB9DQogICAgY3Np bnRyX3BucF9hZGQoc2MsIGRldi0+aWRfdW5pdCk7DQp9DQojZW5kaWYgLyog TlBOUCAqLw0K --0-1615265065-900865544=:25782 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="if_csreg.h" Content-Transfer-Encoding: BASE64 Content-ID: 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 aWZfY3NyZWcuaCx2IDEuNyAxOTk4LzA3LzE5IDE2OjEzOjM5IHJvb3QgRXhw IHJvb3QgJA0KICovDQoNCiNkZWZpbmUgUFBfQ2hpcElEIDB4MDAwMAkvKiBv ZmZzZXQgICAwaCAtPiBDb3JwIC1JRCAgICAgICAgICAgICAgKi8NCgkJCQkv KiBvZmZzZXQgICAyaCAtPiBNb2RlbC9Qcm9kdWN0IE51bWJlciAgKi8NCgkJ CQkvKiBvZmZzZXQgICAzaCAtPiBDaGlwIFJldmlzaW9uIE51bWJlciAgKi8N Cg0KI2RlZmluZSBQUF9JU0FJT0IJCTB4MDAyMAkvKiAgSU8gYmFzZSBhZGRy ZXNzICovDQojZGVmaW5lCVBQX0NTODkwMF9JU0FJTlQJMHgwMDIyCS8qICBJ U0EgaW50ZXJydXB0IHNlbGVjdCAqLw0KI2RlZmluZQlQUF9DUzg5MDBfSVNB RE1BCTB4MDAyNAkvKiAgSVNBIFJlYyBETUEgY2hhbm5lbCAqLw0KI2RlZmlu ZSBQUF9DUzg5MjBfSVNBSU5UCTB4MDM3MAkvKiAgSVNBIGludGVycnVwdCBz ZWxlY3QgKi8NCiNkZWZpbmUgUFBfQ1M4OTIwX0lTQURNQSAJMHgwMzc0CS8q ICBJU0EgUmVjIERNQSBjaGFubmVsICovDQojZGVmaW5lIFBQX0lTQVNPRgkJ MHgwMDI2CS8qICBJU0EgRE1BIG9mZnNldCAqLw0KI2RlZmluZSBQUF9EbWFG cmFtZUNudAkJMHgwMDI4CS8qICBJU0EgRE1BIEZyYW1lIGNvdW50ICovDQoj ZGVmaW5lIFBQX0RtYUJ5dGVDbnQJCTB4MDAyQQkvKiAgSVNBIERNQSBCeXRl IGNvdW50ICovDQojZGVmaW5lIFBQX0NTODkyMF9JU0FNZW1CCTB4MDM0OAkv KiAgTWVtb3J5IGJhc2UgKi8NCg0KLyogRUVQUk9NIGRhdGEgYW5kIGNvbW1h bmQgcmVnaXN0ZXJzICovDQojZGVmaW5lIFBQX0VFQ01ECQkweDAwNDAJLyog IE5WUiBJbnRlcmZhY2UgQ29tbWFuZCByZWdpc3RlciAqLw0KI2RlZmluZSBQ UF9FRURhdGEJCTB4MDA0MgkvKiAgTlZSIEludGVyZmFjZSBEYXRhIFJlZ2lz dGVyICovDQojZGVmaW5lIFBQX0RlYnVnUmVnCQkweDAwNDQJLyogIERlYnVn IFJlZ2lzdGVyICovDQoNCiNkZWZpbmUgUFBfUnhDRkcJCTB4MDEwMgkvKiAg UnggQnVzIGNvbmZpZyAqLw0KI2RlZmluZSBQUF9SeENUTAkJMHgwMTA0CS8q ICBSZWNlaXZlIENvbnRyb2wgUmVnaXN0ZXIgKi8NCiNkZWZpbmUgUFBfVHhD RkcJCTB4MDEwNgkvKiAgVHJhbnNtaXQgQ29uZmlnIFJlZ2lzdGVyICovDQoj ZGVmaW5lIFBQX1R4Q01ECQkweDAxMDgJLyogIFRyYW5zbWl0IENvbW1hbmQg UmVnaXN0ZXIgKi8NCiNkZWZpbmUgUFBfQnVmQ0ZHCQkweDAxMEEJLyogIEJ1 cyBjb25maWd1cmF0aW9uIFJlZ2lzdGVyICovDQojZGVmaW5lIFBQX0xpbmVD VEwJCTB4MDExMgkvKiAgTGluZSBDb25maWcgUmVnaXN0ZXIgKi8NCiNkZWZp bmUgUFBfU2VsZkNUTAkJMHgwMTE0CS8qICBTZWxmIENvbW1hbmQgUmVnaXN0 ZXIgKi8NCiNkZWZpbmUgUFBfQnVzQ1RMCQkweDAxMTYJLyogIElTQSBidXMg Y29udHJvbCBSZWdpc3RlciAqLw0KI2RlZmluZSBQUF9UZXN0Q1RMCQkweDAx MTgJLyogIFRlc3QgUmVnaXN0ZXIgKi8NCiNkZWZpbmUgUFBfQXV0b05lZ0NU TAkJMHgwMTFDCS8qICBBdXRvIE5lZ290aWF0aW9uIEN0cmwgKi8NCg0KI2Rl ZmluZSBQUF9JU1EJCQkweDAxMjAJLyogIEludGVycnVwdCBTdGF0dXMgKi8N CiNkZWZpbmUgUFBfUnhFdmVudAkJMHgwMTI0CS8qICBSeCBFdmVudCBSZWdp c3RlciAqLw0KI2RlZmluZSBQUF9UeEV2ZW50CQkweDAxMjgJLyogIFR4IEV2 ZW50IFJlZ2lzdGVyICovDQojZGVmaW5lIFBQX0J1ZkV2ZW50CQkweDAxMkMJ LyogIEJ1cyBFdmVudCBSZWdpc3RlciAqLw0KI2RlZmluZSBQUF9SeE1pc3MJ CTB4MDEzMAkvKiAgUmVjZWl2ZSBNaXNzIENvdW50ICovDQojZGVmaW5lIFBQ X1R4Q29sCQkweDAxMzIJLyogIFRyYW5zbWl0IENvbGxpc2lvbiBDb3VudCAq Lw0KI2RlZmluZSBQUF9MaW5lU1QJCTB4MDEzNAkvKiAgTGluZSBTdGF0ZSBS ZWdpc3RlciAqLw0KI2RlZmluZSBQUF9TZWxmU1QJCTB4MDEzNgkvKiAgU2Vs ZiBTdGF0ZSByZWdpc3RlciAqLw0KI2RlZmluZSBQUF9CdXNTVAkJMHgwMTM4 CS8qICBCdXMgU3RhdHVzICovDQojZGVmaW5lIFBQX1REUgkJCTB4MDEzQwkv KiAgVGltZSBEb21haW4gUmVmbGVjdG9tZXRyeSAqLw0KI2RlZmluZSBQUF9B dXRvTmVnU1QJCTB4MDEzRQkvKiAgQXV0byBOZWcgU3RhdHVzICovDQojZGVm aW5lIFBQX1R4Q29tbWFuZAkJMHgwMTQ0CS8qICBUeCBDb21tYW5kICovDQoj ZGVmaW5lIFBQX1R4TGVuZ3RoCQkweDAxNDYJLyogIFR4IExlbmd0aCAqLw0K I2RlZmluZSBQUF9MQUYJCQkweDAxNTAJLyogIEhhc2ggVGFibGUgKi8NCiNk ZWZpbmUgUFBfSUEJCQkweDAxNTgJLyogIFBoeXNpY2FsIEFkZHJlc3MgUmVn aXN0ZXIgKi8NCg0KI2RlZmluZSBQUF9SeFN0YXR1cwkJMHgwNDAwCS8qICBS ZWNlaXZlIHN0YXJ0IG9mIGZyYW1lICovDQojZGVmaW5lIFBQX1J4TGVuZ3Ro CQkweDA0MDIJLyogIFJlY2VpdmUgTGVuZ3RoIG9mIGZyYW1lICovDQojZGVm aW5lIFBQX1J4RnJhbWUJCTB4MDQwNAkvKiAgUmVjZWl2ZSBmcmFtZSBwb2lu dGVyICovDQojZGVmaW5lIFBQX1R4RnJhbWUJCTB4MEEwMAkvKiAgVHJhbnNt aXQgZnJhbWUgcG9pbnRlciAqLw0KDQovKg0KICogIFByaW1hcnkgSS9PIEJh c2UgQWRkcmVzcy4gSWYgbm8gSS9PIGJhc2UgaXMgc3VwcGxpZWQgYnkgdGhl IHVzZXIsIHRoZW4gdGhpcw0KICogIGNhbiBiZSB1c2VkIGFzIHRoZSBkZWZh dWx0IEkvTyBiYXNlIHRvIGFjY2VzcyB0aGUgUGFja2V0UGFnZSBBcmVhLg0K ICovDQojZGVmaW5lIERFRkFVTFRJT0JBU0UJCTB4MDMwMA0KI2RlZmluZSBG SVJTVF9JTwkJMHgwMjBDCS8qICBGaXJzdCBJL08gcG9ydCB0byBjaGVjayAq Lw0KI2RlZmluZSBMQVNUX0lPCQkJMHgwMzdDCS8qICBMYXN0IEkvTyBwb3J0 IHRvIGNoZWNrICgrMTBoKSAqLw0KI2RlZmluZSBBRERfTUFTSwkJMHgzMDAw CS8qICBNYXNrIGl0IHVzZSBvZiB0aGUgQUREX1BPUlQgcmVnaXN0ZXIgKi8N CiNkZWZpbmUgQUREX1NJRwkJCTB4MzAwMAkvKiAgRXhwZWN0ZWQgSUQgc2ln bmF0dXJlICovDQoNCiNkZWZpbmUgQ0hJUF9FSVNBX0lEX1NJRwkweDYzMEUJ LyogIFByb2R1Y3QgSUQgQ29kZSBmb3IgQ3J5c3RhbCBDaGlwIChDUzg5MDAg c3BlYyA0LjMpICovDQoNCiNkZWZpbmUgUFJPRFVDVF9JRF9BREQJCTB4MDAw MgkvKiAgQWRkcmVzcyBvZiBwcm9kdWN0IElEICovDQoNCi8qICBNYXNrIHRv IGZpbmQgb3V0IHRoZSB0eXBlcyBvZiAgcmVnaXN0ZXJzICovDQojZGVmaW5l IFJFR19UWVBFX01BU0sJCTB4MDAxRg0KDQovKiAgRWVwcm9tIENvbW1hbmRz ICovDQojZGVmaW5lIEVSU0VfV1JfRU5CTAkJMHgwMEYwDQojZGVmaW5lIEVS U0VfV1JfRElTQUJMRQkJMHgwMDAwDQoNCi8qICBEZWZpbmVzIENvbnRyb2wv Q29uZmlnIHJlZ2lzdGVyIHF1aW50dXBsZXQgbnVtYmVycyAqLw0KI2RlZmlu ZSBSWF9CVUZfQ0ZHCQkweDAwMDMNCiNkZWZpbmUgUlhfQ09OVFJPTAkJMHgw MDA1DQojZGVmaW5lIFRYX0NGRwkJCTB4MDAwNw0KI2RlZmluZSBUWF9DT01N QU5ECQkweDAwMDkNCiNkZWZpbmUgQlVGX0NGRwkJCTB4MDAwQg0KI2RlZmlu ZSBMSU5FX0NPTlRST0wJCTB4MDAxMw0KI2RlZmluZSBTRUxGX0NPTlRST0wJ CTB4MDAxNQ0KI2RlZmluZSBCVVNfQ09OVFJPTAkJMHgwMDE3DQojZGVmaW5l IFRFU1RfQ09OVFJPTAkJMHgwMDE5DQoNCi8qICBEZWZpbmVzIFN0YXR1cy9D b3VudCByZWdpc3RlcnMgcXVpbnR1cGxldCBudW1iZXJzICovDQojZGVmaW5l IFJYX0VWRU5UCQkweDAwMDQNCiNkZWZpbmUgVFhfRVZFTlQJCTB4MDAwOA0K I2RlZmluZSBCVUZfRVZFTlQJCTB4MDAwQw0KI2RlZmluZSBSWF9NSVNTX0NP VU5UCQkweDAwMTANCiNkZWZpbmUgVFhfQ09MX0NPVU5UCQkweDAwMTINCiNk ZWZpbmUgTElORV9TVEFUVVMJCTB4MDAxNA0KI2RlZmluZSBTRUxGX1NUQVRV UwkJMHgwMDE2DQojZGVmaW5lIEJVU19TVEFUVVMJCTB4MDAxOA0KI2RlZmlu ZSBURFIJCQkweDAwMUMNCg0KLyoNCiAqIFBQX1J4Q0ZHIC0gUmVjZWl2ZSAg Q29uZmlndXJhdGlvbiBhbmQgSW50ZXJydXB0IE1hc2sNCiAqCQkJIGJpdCBk ZWZpbml0aW9uIC0gIFJlYWQvd3JpdGUNCiAqLw0KI2RlZmluZSBTS0lQXzEJ CQkweDAwNDANCiNkZWZpbmUgUlhfU1RSRUFNX0VOQkwJCTB4MDA4MA0KI2Rl ZmluZSBSWF9PS19FTkJMCQkweDAxMDANCiNkZWZpbmUgUlhfRE1BX09OTFkJ CTB4MDIwMA0KI2RlZmluZSBBVVRPX1JYX0RNQQkJMHgwNDAwDQojZGVmaW5l IEJVRkZFUl9DUkMJCTB4MDgwMA0KI2RlZmluZSBSWF9DUkNfRVJST1JfRU5C TAkweDEwMDANCiNkZWZpbmUgUlhfUlVOVF9FTkJMCQkweDIwMDANCiNkZWZp bmUgUlhfRVhUUkFfREFUQV9FTkJMCTB4NDAwMA0KDQovKiBQUF9SeENUTCAt IFJlY2VpdmUgQ29udHJvbCBiaXQgZGVmaW5pdGlvbiAtIFJlYWQvd3JpdGUg Ki8NCiNkZWZpbmUgUlhfSUFfSEFTSF9BQ0NFUFQJMHgwMDQwDQojZGVmaW5l IFJYX1BST01fQUNDRVBUCQkweDAwODANCiNkZWZpbmUgUlhfT0tfQUNDRVBU CQkweDAxMDANCiNkZWZpbmUgUlhfTVVMVENBU1RfQUNDRVBUCTB4MDIwMA0K I2RlZmluZSBSWF9JQV9BQ0NFUFQJCTB4MDQwMA0KI2RlZmluZSBSWF9CUk9B RENBU1RfQUNDRVBUCTB4MDgwMA0KI2RlZmluZSBSWF9CQURfQ1JDX0FDQ0VQ VAkweDEwMDANCiNkZWZpbmUgUlhfUlVOVF9BQ0NFUFQJCTB4MjAwMA0KI2Rl ZmluZSBSWF9FWFRSQV9EQVRBX0FDQ0VQVAkweDQwMDANCiNkZWZpbmUgUlhf QUxMX0FDQ0VQVAkJKFJYX1BST01fQUNDRVBUIHwgUlhfQkFEX0NSQ19BQ0NF UFQgfAlcDQoJCQkJIFJYX1JVTlRfQUNDRVBUIHwgUlhfRVhUUkFfREFUQV9B Q0NFUFQpDQovKg0KICogIERlZmF1bHQgcmVjZWl2ZSBtb2RlIC0gaW5kaXZp ZHVhbGx5IGFkZHJlc3NlZCwgYnJvYWRjYXN0LCBhbmQgZXJyb3IgZnJlZQ0K ICovDQojZGVmaW5lIFJYX0RFRl9BQ0NFUFQgKFJYX0lBX0FDQ0VQVCB8IFJY X0JST0FEQ0FTVF9BQ0NFUFQgfCBSWF9PS19BQ0NFUFQpDQoNCi8qDQogKiBQ UF9UeENGRyAtIFRyYW5zbWl0IENvbmZpZ3VyYXRpb24gSW50ZXJydXB0IE1h c2sNCiAqCQkJIGJpdCBkZWZpbml0aW9uIC0gUmVhZC93cml0ZQ0KICovDQoj ZGVmaW5lIFRYX0xPU1RfQ1JTX0VOQkwJMHgwMDQwDQojZGVmaW5lIFRYX1NR RV9FUlJPUl9FTkJMCTB4MDA4MA0KI2RlZmluZSBUWF9PS19FTkJMCQkweDAx MDANCiNkZWZpbmUgVFhfTEFURV9DT0xfRU5CTAkweDAyMDANCiNkZWZpbmUg VFhfSkJSX0VOQkwJCTB4MDQwMA0KI2RlZmluZSBUWF9BTllfQ09MX0VOQkwJ CTB4MDgwMA0KI2RlZmluZSBUWF8xNl9DT0xfRU5CTAkJMHg4MDAwDQoNCi8q DQogKiBQUF9UeENNRCAtIFRyYW5zbWl0IENvbW1hbmQgYml0IGRlZmluaXRp b24gLSBSZWFkLW9ubHkNCiAqLw0KI2RlZmluZSBUWF9TVEFSVF80X0JZVEVT CTB4MDAwMA0KI2RlZmluZSBUWF9TVEFSVF82NF9CWVRFUwkweDAwNDANCiNk ZWZpbmUgVFhfU1RBUlRfMTI4X0JZVEVTCTB4MDA4MA0KI2RlZmluZSBUWF9T VEFSVF9BTExfQllURVMJMHgwMEMwDQojZGVmaW5lIFRYX0ZPUkNFCQkweDAx MDANCiNkZWZpbmUgVFhfT05FX0NPTAkJMHgwMjAwDQojZGVmaW5lIFRYX1RX T19QQVJUX0RFRkZfRElTQUJMRSAweDA0MDANCiNkZWZpbmUgVFhfTk9fQ1JD CQkweDEwMDANCiNkZWZpbmUgVFhfUlVOVAkJCTB4MjAwMA0KDQovKg0KICog UFBfQnVmQ0ZHIC0gQnVmZmVyIENvbmZpZ3VyYXRpb24gSW50ZXJydXB0IE1h c2sNCiAqCQkJIGJpdCBkZWZpbml0aW9uIC0gUmVhZC93cml0ZQ0KICovDQoj ZGVmaW5lIEdFTkVSQVRFX1NXX0lOVEVSUlVQVAkweDAwNDANCiNkZWZpbmUg UlhfRE1BX0VOQkwJCTB4MDA4MA0KI2RlZmluZSBSRUFEWV9GT1JfVFhfRU5C TAkweDAxMDANCiNkZWZpbmUgVFhfVU5ERVJSVU5fRU5CTAkweDAyMDANCiNk ZWZpbmUgUlhfTUlTU19FTkJMCQkweDA0MDANCiNkZWZpbmUgUlhfMTI4X0JZ VEVfRU5CTAkweDA4MDANCiNkZWZpbmUgVFhfQ09MX0NPVU5UX09WUkZMT1df RU5CTCAweDEwMDANCiNkZWZpbmUgUlhfTUlTU19DT1VOVF9PVlJGTE9XX0VO QkwgMHgyMDAwDQojZGVmaW5lIFJYX0RFU1RfTUFUQ0hfRU5CTAkweDgwMDAN Cg0KLyoNCiAqIFBQX0xpbmVDVEwgLSBMaW5lIENvbnRyb2wgYml0IGRlZmlu aXRpb24gLSBSZWFkL3dyaXRlDQogKi8NCiNkZWZpbmUgU0VSSUFMX1JYX09O CQkweDAwNDANCiNkZWZpbmUgU0VSSUFMX1RYX09OCQkweDAwODANCiNkZWZp bmUgQVVJX09OTFkJCTB4MDEwMA0KI2RlZmluZSBBVVRPX0FVSV8xMEJBU0VU CTB4MDIwMA0KI2RlZmluZSBNT0RJRklFRF9CQUNLT0ZGCTB4MDgwMA0KI2Rl ZmluZSBOT19BVVRPX1BPTEFSSVRZCTB4MTAwMA0KI2RlZmluZSBUV09fUEFS VF9ERUZESVMJCTB4MjAwMA0KI2RlZmluZSBMT1dfUlhfU1FVRUxDSAkJMHg0 MDAwDQoNCi8qDQogKiBQUF9TZWxmQ1RMIC0gU29mdHdhcmUgU2VsZiBDb250 cm9sIGJpdCBkZWZpbml0aW9uIC0gUmVhZC93cml0ZQ0KICovDQojZGVmaW5l IFBPV0VSX09OX1JFU0VUCQkweDAwNDANCiNkZWZpbmUgU1dfU1RPUAkJCTB4 MDEwMA0KI2RlZmluZSBTTEVFUF9PTgkJMHgwMjAwDQojZGVmaW5lIEFVVE9f V0FLRVVQCQkweDA0MDANCiNkZWZpbmUgSENCMF9FTkJMCQkweDEwMDANCiNk ZWZpbmUgSENCMV9FTkJMCQkweDIwMDANCiNkZWZpbmUgSENCMAkJCTB4NDAw MA0KI2RlZmluZSBIQ0IxCQkJMHg4MDAwDQoNCi8qDQogKiBQUF9CdXNDVEwg LSBJU0EgQnVzIENvbnRyb2wgYml0IGRlZmluaXRpb24gLSBSZWFkL3dyaXRl DQogKi8NCiNkZWZpbmUgUkVTRVRfUlhfRE1BCQkweDAwNDANCiNkZWZpbmUg TUVNT1JZX09OCQkweDA0MDANCiNkZWZpbmUgRE1BX0JVUlNUX01PREUJCTB4 MDgwMA0KI2RlZmluZSBJT19DSEFOTkVMX1JFQURZX09OCTB4MTAwMA0KI2Rl ZmluZSBSWF9ETUFfU0laRV82NEtzCTB4MjAwMA0KI2RlZmluZSBFTkFCTEVf SVJRCQkweDgwMDANCg0KLyoNCiAqIFBQX1Rlc3RDVEwgLSBUZXN0IENvbnRy b2wgYml0IGRlZmluaXRpb24gLSBSZWFkL3dyaXRlDQogKi8NCiNkZWZpbmUg TElOS19PRkYJCTB4MDA4MA0KI2RlZmluZSBFTkRFQ19MT09QQkFDSwkJMHgw MjAwDQojZGVmaW5lIEFVSV9MT09QQkFDSwkJMHgwNDAwDQojZGVmaW5lIEJB Q0tPRkZfT0ZGCQkweDA4MDANCiNkZWZpbmUgRkFTVF9URVNUCQkweDgwMDAN Cg0KLyoNCiAqIFBQX1J4RXZlbnQgLSBSZWNlaXZlIEV2ZW50IEJpdCBkZWZp bml0aW9uIC0gUmVhZC1vbmx5DQogKi8NCiNkZWZpbmUgUlhfSUFfSEFTSEVE CQkweDAwNDANCiNkZWZpbmUgUlhfRFJJQkJMRQkJMHgwMDgwDQojZGVmaW5l IFJYX09LCQkJMHgwMTAwDQojZGVmaW5lIFJYX0hBU0hFRAkJMHgwMjAwDQoj ZGVmaW5lIFJYX0lBCQkJMHgwNDAwDQojZGVmaW5lIFJYX0JST0FEQ0FTVAkJ MHgwODAwDQojZGVmaW5lIFJYX0NSQ19FUlJPUgkJMHgxMDAwDQojZGVmaW5l IFJYX1JVTlQJCQkweDIwMDANCiNkZWZpbmUgUlhfRVhUUkFfREFUQQkJMHg0 MDAwDQoNCiNkZWZpbmUgSEFTSF9JTkRFWF9NQVNLCQkweDBGQzAwDQoNCi8q DQogKiBQUF9UeEV2ZW50IC0gVHJhbnNtaXQgRXZlbnQgQml0IGRlZmluaXRp b24gLSBSZWFkLW9ubHkNCiAqLw0KI2RlZmluZSBUWF9MT1NUX0NSUwkJMHgw MDQwDQojZGVmaW5lIFRYX1NRRV9FUlJPUgkJMHgwMDgwDQojZGVmaW5lIFRY X09LCQkJMHgwMTAwDQojZGVmaW5lIFRYX0xBVEVfQ09MCQkweDAyMDANCiNk ZWZpbmUgVFhfSkJSCQkJMHgwNDAwDQojZGVmaW5lIFRYXzE2X0NPTAkJMHg4 MDAwDQojZGVmaW5lIFRYX1NFTkRfT0tfQklUUwkJKFRYX09LIHwgVFhfTE9T VF9DUlMpDQojZGVmaW5lIFRYX0NPTF9DT1VOVF9NQVNLCTB4NzgwMA0KDQov Kg0KICogUFBfQnVmRXZlbnQgLSBCdWZmZXIgRXZlbnQgQml0IGRlZmluaXRp b24gLSBSZWFkLW9ubHkNCiAqLw0KI2RlZmluZSBTV19JTlRFUlJVUFQJCTB4 MDA0MA0KI2RlZmluZSBSWF9ETUEJCQkweDAwODANCiNkZWZpbmUgUkVBRFlf Rk9SX1RYCQkweDAxMDANCiNkZWZpbmUgVFhfVU5ERVJSVU4JCTB4MDIwMA0K I2RlZmluZSBSWF9NSVNTCQkJMHgwNDAwDQojZGVmaW5lIFJYXzEyOF9CWVRF CQkweDA4MDANCiNkZWZpbmUgVFhfQ09MX09WUkZMVwkJMHgxMDAwDQojZGVm aW5lIFJYX01JU1NfT1ZSRkxXCQkweDIwMDANCiNkZWZpbmUgUlhfREVTVF9N QVRDSAkJMHg4MDAwDQoNCi8qDQogKiBQUF9MaW5lU1QgLSBFdGhlcm5ldCBM aW5lIFN0YXR1cyBiaXQgZGVmaW5pdGlvbiAtIFJlYWQtb25seQ0KICovDQoj ZGVmaW5lIExJTktfT0sJCQkweDAwODANCiNkZWZpbmUgQVVJX09OCQkJMHgw MTAwDQojZGVmaW5lIFRFTkJBU0VUX09OCQkweDAyMDANCiNkZWZpbmUgUE9M QVJJVFlfT0sJCTB4MTAwMA0KI2RlZmluZSBDUlNfT0sJCQkweDQwMDANCg0K LyoNCiAqIFBQX1NlbGZTVCAtIENoaXAgU29mdHdhcmUgU3RhdHVzIGJpdCBk ZWZpbml0aW9uDQogKi8NCiNkZWZpbmUgQUNUSVZFXzMzVgkJMHgwMDQwDQoj ZGVmaW5lIElOSVRfRE9ORQkJMHgwMDgwDQojZGVmaW5lIFNJX0JVU1kJCQkw eDAxMDANCiNkZWZpbmUgRUVQUk9NX1BSRVNFTlQJCTB4MDIwMA0KI2RlZmlu ZSBFRVBST01fT0sJCTB4MDQwMA0KI2RlZmluZSBFTF9QUkVTRU5UCQkweDA4 MDANCiNkZWZpbmUgRUVfU0laRV82NAkJMHgxMDAwDQoNCi8qDQogKiBQUF9C dXNTVCAtIElTQSBCdXMgU3RhdHVzIGJpdCBkZWZpbml0aW9uDQogKi8NCiNk ZWZpbmUgVFhfQklEX0VSUk9SCQkweDAwODANCiNkZWZpbmUgUkVBRFlfRk9S X1RYX05PVwkweDAxMDANCg0KLyoNCiAqIFBQX0F1dG9OZWdDVEwgLSBBdXRv IE5lZ290aWF0aW9uIENvbnRyb2wgYml0IGRlZmluaXRpb24NCiAqLw0KI2Rl ZmluZSBSRV9ORUdfTk9XCQkweDAwNDANCiNkZWZpbmUgQUxMT1dfRkRYCQkw eDAwODANCiNkZWZpbmUgQVVUT19ORUdfRU5BQkxFCQkweDAxMDANCiNkZWZp bmUgTkxQX0VOQUJMRQkJMHgwMjAwDQojZGVmaW5lIEZPUkNFX0ZEWAkJMHg4 MDAwDQojZGVmaW5lIEFVVE9fTkVHX0JJVFMJCShGT1JDRV9GRFggfCBOTFBf RU5BQkxFIHwgQVVUT19ORUdfRU5BQkxFKQ0KI2RlZmluZSBBVVRPX05FR19N QVNLCQkoRk9SQ0VfRkRYIHwgTkxQX0VOQUJMRSB8IEFVVE9fTkVHX0VOQUJM RSB8IFwNCgkJCQkgQUxMT1dfRkRYIHwgUkVfTkVHX05PVykNCg0KLyoNCiAq IFBQX0F1dG9OZWdTVCAtIEF1dG8gTmVnb3RpYXRpb24gU3RhdHVzIGJpdCBk ZWZpbml0aW9uDQogKi8NCiNkZWZpbmUgQVVUT19ORUdfQlVTWQkJMHgwMDgw DQojZGVmaW5lIEZMUF9MSU5LCQkweDAxMDANCiNkZWZpbmUgRkxQX0xJTktf R09PRAkJMHgwODAwDQojZGVmaW5lIExJTktfRkFVTFQJCTB4MTAwMA0KI2Rl ZmluZSBIRFhfQUNUSVZFCQkweDQwMDANCiNkZWZpbmUgRkRYX0FDVElWRQkJ MHg4MDAwDQoNCi8qDQogKiBUaGUgZm9sbG93aW5nIGJsb2NrIGRlZmluZXMg dGhlIElTUSBldmVudCB0eXBlcw0KICovDQojZGVmaW5lIElTUV9SRUNFSVZF Ul9FVkVOVAkweDA0DQojZGVmaW5lIElTUV9UUkFOU01JVFRFUl9FVkVOVAkw eDA4DQojZGVmaW5lIElTUV9CVUZGRVJfRVZFTlQJMHgwYw0KI2RlZmluZSBJ U1FfUlhfTUlTU19FVkVOVAkweDEwDQojZGVmaW5lIElTUV9UWF9DT0xfRVZF TlQJMHgxMg0KDQojZGVmaW5lIElTUV9FVkVOVF9NQVNLCQkweDAwM0YJLyog SVNRIG1hc2sgdG8gZmluZCBvdXQgdHlwZSBvZiBldmVudCAqLw0KI2RlZmlu ZSBJU1FfSElTVAkJMTYJLyogc21hbGwgaGlzdG9yeSBidWZmZXIgKi8NCiNk ZWZpbmUgQVVUT0lOQ1JFTUVOVAkJMHg4MDAwCS8qIEJpdCBtYXNrIHRvIHNl dCBiaXQtMTUgZm9yIGF1dG9pbmNyZW1lbnQgKi8NCg0KI2RlZmluZSBUWFJY QlVGU0laRQkJMHgwNjAwDQojZGVmaW5lIFJYRE1BQlVGU0laRQkJMHg4MDAw DQojZGVmaW5lIFJYRE1BU0laRQkJMHg0MDAwDQojZGVmaW5lIFRYUlhfTEVO R1RIX01BU0sJMHgwN0ZGDQoNCi8qICByeCBvcHRpb25zIGJpdHMgKi8NCiNk ZWZpbmUgUkNWX1dJVEhfUlhPTgkJMSAgICAgICAvKiAgU2V0IFNlclJ4IE9O ICovDQojZGVmaW5lIFJDVl9DT1VOVFMJCTIgICAgICAgLyogIFVzZSBGcmFt ZWNudDEgKi8NCiNkZWZpbmUgUkNWX1BPTkcJCTQgICAgICAgLyogIFBvbmcg cmVzcG9uZGVudCAqLw0KI2RlZmluZSBSQ1ZfRE9ORwkJOCAgICAgICAvKiAg RG9uZyBvcGVyYXRpb24gKi8NCiNkZWZpbmUgUkNWX1BPTExJTkcJCTB4MTAJ LyogIFBvbGwgUnhFdmVudCAqLw0KI2RlZmluZSBSQ1ZfSVNRCQkJMHgyMAkv KiAgVXNlIElTUSwgaW50ICovDQojZGVmaW5lIFJDVl9BVVRPX0RNQQkJMHgx MDAJLyogIFNldCBBdXRvUnhETUFFICovDQojZGVmaW5lIFJDVl9ETUEJCQkw eDIwMAkvKiAgU2V0IFJ4RE1BIG9ubHkgKi8NCiNkZWZpbmUgUkNWX0RNQV9B TEwJCTB4NDAwCS8qICBDb3B5IGFsbCBETUEnZWQgKi8NCiNkZWZpbmUgUkNW X0ZJWEVEX0RBVEEJCTB4ODAwCS8qICBFdmVyeSBmcmFtZSBzYW1lICovDQoj ZGVmaW5lIFJDVl9JTwkJCTB4MTAwMAkvKiAgVXNlIElTQSBJTyBvbmx5ICov DQojZGVmaW5lIFJDVl9NRU1PUlkJCTB4MjAwMAkvKiAgVXNlIElTQSBNZW1v cnkgKi8NCg0KI2RlZmluZSBSQU1fU0laRQkJMHgxMDAwICAgICAgLyogIFRo ZSBjYXJkIGhhcyA0ayBieXRlcyBvciBSQU0gKi8NCiNkZWZpbmUgUEtUX1NU QVJUCQlQUF9UeEZyYW1lICAvKiAgU3RhcnQgb2YgcGFja2V0IFJBTSAqLw0K DQojZGVmaW5lIFJYX0ZSQU1FX1BPUlQJCTB4MDAwMA0KI2RlZmluZSBUWF9G UkFNRV9QT1JUCQlSWF9GUkFNRV9QT1JUDQojZGVmaW5lIFRYX0NNRF9QT1JU CQkweDAwMDQNCiNkZWZpbmUgVFhfQ1M4OTAwX05PVwkJMHgwMDAwICAvKiBU eCBwYWNrZXQgYWZ0ZXIgICA1IGJ5dGVzIGNvcGllZCAqLw0KI2RlZmluZSBU WF9DUzg5MDBfQUZURVJfMzgxCTB4MDAyMCAgLyogVHggcGFja2V0IGFmdGVy IDM4MSBieXRlcyBjb3BpZWQgKi8NCiNkZWZpbmUgVFhfQ1M4OTAwX0FGVEVS X0FMTAkweDAwNjAgIC8qIFR4IHBhY2tldCBhZnRlciBhbGwgYnl0ZXMgY29w aWVkICovDQojZGVmaW5lIFRYX0NTODkyMF9OT1cJCTB4MDAwMCAgLyogVHgg cGFja2V0IGFmdGVyICAgNSBieXRlcyBjb3BpZWQgKi8NCiNkZWZpbmUgVFhf Q1M4OTIwX0FGVEVSXzM4MQkweDAwNDAgIC8qIFR4IHBhY2tldCBhZnRlciAz ODEgYnl0ZXMgY29waWVkICovDQojZGVmaW5lIFRYX0NTODkyMF9BRlRFUl8x MDIxCTB4MDA4MCAgLyogVHggcGFja2V0IGFmdGVyMTAyMSBieXRlcyBjb3Bp ZWQgKi8NCiNkZWZpbmUgVFhfQ1M4OTIwX0FGVEVSX0FMTAkweDAwQzAgIC8q IFR4IHBhY2tldCBhZnRlciBhbGwgYnl0ZXMgY29waWVkICovDQojZGVmaW5l IFRYX0xFTl9QT1JUCQkweDAwMDYNCiNkZWZpbmUgSVNRX1BPUlQJCTB4MDAw OA0KI2RlZmluZSBBRERfUE9SVAkJMHgwMDBBDQojZGVmaW5lIERBVEFfUE9S VAkJMHgwMDBDDQoNCiNkZWZpbmUgRUVQUk9NX1dSSVRFX0VOCQkweDAwRjAN CiNkZWZpbmUgRUVQUk9NX1dSSVRFX0RJUwkweDAwMDANCiNkZWZpbmUgRUVQ Uk9NX1dSSVRFX0NNRAkweDAxMDANCiNkZWZpbmUgRUVQUk9NX1JFQURfQ01E CQkweDAyMDANCg0KLyogIFJlY2VpdmUgSGVhZGVyDQogKiAgRGVzY3JpcHRp b24gb2YgaGVhZGVyIG9mIGVhY2ggcGFja2V0IGluIHJlY2VpdmUgYXJlYSBv ZiBtZW1vcnkNCiAqLw0KI2RlZmluZSBSQlVGX0VWRU5UX0xPVwkwICAvKiBM b3cgYnl0ZSBvZiBSeEV2ZW50IC0gc3RhdHVzIG9mIHJlY2VpdmVkIGZyYW1l ICovDQojZGVmaW5lIFJCVUZfRVZFTlRfSElHSAkxICAvKiBIaWdoIGJ5dGUg b2YgUnhFdmVudCAtIHN0YXR1cyBvZiByZWNlaXZlZCBmcmFtZSAqLw0KI2Rl ZmluZSBSQlVGX0xFTl9MT1cJMiAgLyogTGVuZ3RoIG9mIHJlY2VpdmVkIGRh dGEgLSBsb3cgYnl0ZSAqLw0KI2RlZmluZSBSQlVGX0xFTl9ISQkzICAvKiBM ZW5ndGggb2YgcmVjZWl2ZWQgZGF0YSAtIGhpZ2ggYnl0ZSAqLw0KI2RlZmlu ZSBSQlVGX0hFQURfTEVOCTQgIC8qIExlbmd0aCBvZiB0aGlzIGhlYWRlciAq Lw0KDQojZGVmaW5lIENISVBfUkVBRCAweDEgIC8qIFVzZWQgdG8gbWFyayBz dGF0ZSBvZiB0aGUgcmVwaW5zIGNvZGUgKGNoaXAgb3IgZG1hKSAqLw0KI2Rl ZmluZSBETUFfUkVBRCAgMHgyICAvKiBVc2VkIHRvIG1hcmsgc3RhdGUgb2Yg dGhlIHJlcGlucyBjb2RlIChjaGlwIG9yIGRtYSkgKi8NCg0KLyogIGZvciBi aW9zIHNjYW4gKi8NCi8qICAqLw0KI2lmZGVmIENTREVCVUcNCi8qICB1c2Ug dGhlc2UgdmFsdWVzIGZvciBkZWJ1Z2dpbmcgYmlvcyBzY2FuICovDQojZGVm aW5lIEJJT1NfU1RBUlRfU0VHCQkweDAwMDAwDQojZGVmaW5lIEJJT1NfT0ZG U0VUX0lOQwkJMHgwMDEwDQojZWxzZQ0KI2RlZmluZSBCSU9TX1NUQVJUX1NF RwkJMHgwYzAwMA0KI2RlZmluZSBCSU9TX09GRlNFVF9JTkMJCTB4MDIwMA0K I2VuZGlmDQoNCiNkZWZpbmUgQklPU19MQVNUX09GRlNFVAkweDBmYzAwDQoN Ci8qDQogKiAgQnl0ZSBvZmZzZXRzIGludG8gdGhlIEVFUFJPTSBjb25maWd1 cmF0aW9uIGJ1ZmZlcg0KICovDQojZGVmaW5lIElTQV9DTkZfT0ZGU0VUCQkw eDYNCiNkZWZpbmUgVFhfQ1RMX09GRlNFVAkJKElTQV9DTkZfT0ZGU0VUICsg OCkJLyogIDg5MDAgZWVwcm9tICovDQojZGVmaW5lIEFVVE9fTkVHX0NORl9P RkZTRVQJKElTQV9DTkZfT0ZGU0VUICsgOCkJLyogIDg5MjAgZWVwcm9tICov DQoNCi8qDQogKiAgdGhlIGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0IHRoZSBi aXRzIGluIHRoZSBlZXByb20gYXJlIGdlbmVyYWxseSANCiAqICBpbiB0aGUg c2FtZSBwb3NpdGlvbiBhcyB0aG9zZSBpbiB0aGUgYXV0b25lZ2N0bCByZWdp c3Rlci4gDQogKiAgT2YgY291cnNlIHRoZSBJTU0gYml0IGlzIG5vdCBpbiB0 aGF0IHJlZ2lzdGVyIHNvIGl0IG11c3QgYmUgDQogKiAgbWFza2VkIG91dA0K ICovDQojZGVmaW5lIEVFX0ZPUkNFX0ZEWAkJMHg4MDAwDQojZGVmaW5lIEVF X05MUF9FTkFCTEUJCTB4MDIwMA0KI2RlZmluZSBFRV9BVVRPX05FR19FTkFC TEUJMHgwMTAwDQojZGVmaW5lIEVFX0FMTE9XX0ZEWAkJMHgwMDgwDQojZGVm aW5lIEVFX0FVVE9fTkVHX0NORl9NQVNLCShFRV9GT1JDRV9GRFggfCBFRV9O TFBfRU5BQkxFIHwgCVwNCgkJCQkgRUVfQVVUT19ORUdfRU5BQkxFIHwgRUVf QUxMT1dfRkRYKQ0KDQojZGVmaW5lIElNTV9CSVQJCQkweDAwNDAJLyogIGln bm9yZSBtaXNzaW5nIG1lZGlhCSAqLw0KDQojZGVmaW5lIEFEQVBURVJfQ05G X09GRlNFVAkoQVVUT19ORUdfQ05GX09GRlNFVCArIDIpDQojZGVmaW5lIEFf Q05GX01FRElBICAgICAgICAgICAgIDB4MDAwNw0KI2RlZmluZSBBX0NORl8x MEJfVAkJMHgwMDAxDQojZGVmaW5lIEFfQ05GX0FVSQkJMHgwMDAyDQojZGVm aW5lIEFfQ05GXzEwQl8yCQkweDAwMDQNCiNkZWZpbmUgQV9DTkZfTUVESUFf VFlQRQkweDAwNjANCiNkZWZpbmUgQV9DTkZfTUVESUFfQVVUTwkweDAwMDAN CiNkZWZpbmUgQV9DTkZfTUVESUFfMTBCX1QJMHgwMDIwDQojZGVmaW5lIEFf Q05GX01FRElBX0FVSQkJMHgwMDQwDQojZGVmaW5lIEFfQ05GX01FRElBXzEw Ql8yCTB4MDA2MA0KI2RlZmluZSBBX0NORl9EQ19EQ19QT0xBUklUWQkweDAw ODANCiNkZWZpbmUgQV9DTkZfTk9fQVVUT19QT0xBUklUWQkweDIwMDANCiNk ZWZpbmUgQV9DTkZfTE9XX1JYX1NRVUVMQ0gJMHg0MDAwDQojZGVmaW5lIEFf Q05GX0VYVE5EXzEwQl8yCTB4ODAwMA0KDQojZGVmaW5lIFBBQ0tFVF9QQUdF X09GRlNFVAkweDgNCg0KLyoNCiAqICBCaXQgZGVmaW5pdGlvbnMgZm9yIHRo ZSBJU0EgY29uZmlndXJhdGlvbiB3b3JkIGZyb20gdGhlIEVFUFJPTQ0KICov DQojZGVmaW5lIElOVF9OT19NQVNLCQkweDAwMEYNCiNkZWZpbmUgRE1BX05P X01BU0sJCTB4MDA3MA0KI2RlZmluZSBJU0FfRE1BX1NJWkUJCTB4MDIwMA0K I2RlZmluZSBJU0FfQVVUT19SeERNQQkJMHgwNDAwDQojZGVmaW5lIElTQV9S eERNQQkJMHgwODAwDQojZGVmaW5lIERNQV9CVVJTVAkJMHgxMDAwDQojZGVm aW5lIFNUUkVBTV9UUkFOU0ZFUgkJMHgyMDAwDQojZGVmaW5lIEFOWV9JU0Ff RE1BCQkoSVNBX0FVVE9fUnhETUEgfCBJU0FfUnhETUEpDQoNCi8qICBETUEg Y29udHJvbGxlciByZWdpc3RlcnMgKi8NCiNkZWZpbmUgRE1BX0JBU0UJCTB4 MDAgICAvKiBETUEgY29udHJvbGxlciBiYXNlICovDQojZGVmaW5lIERNQV9C QVNFXzIJCTB4MEMwICAvKiBETUEgY29udHJvbGxlciBiYXNlICovDQoNCiNk ZWZpbmUgRE1BX1NUQVQJCTB4MEQwICAvKiBETUEgY29udHJvbGxlciBzdGF0 dXMgcmVnaXN0ZXIgKi8NCiNkZWZpbmUgRE1BX01BU0sJCTB4MEQ0ICAvKiBE TUEgY29udHJvbGxlciBtYXNrIHJlZ2lzdGVyICovDQojZGVmaW5lIERNQV9N T0RFCQkweDBENiAgLyogRE1BIGNvbnRyb2xsZXIgbW9kZSByZWdpc3RlciAq Lw0KI2RlZmluZSBETUFfUkVTRVRGRgkJMHgwRDggIC8qIERNQSBjb250cm9s bGVyIGZpcnN0L2xhc3QgZmxpcCBmbG9wICovDQoNCi8qICBETUEgZGF0YSAq Lw0KI2RlZmluZSBETUFfRElTQUJMRQkJMHgwNCAgIC8qICBEaXNhYmxlIGNo YW5uZWwgbiAqLw0KI2RlZmluZSBETUFfRU5BQkxFCQkweDAwICAgLyogIEVu YWJsZSBjaGFubmVsIG4gKi8NCi8qICBEZW1hbmQgdHJhbnNmZXJzLCBpbmNy LiBhZGRyZXNzLCBhdXRvIGluaXQsIHdyaXRlcywgY2guIG4gKi8NCiNkZWZp bmUgRE1BX1JYX01PREUJCTB4MTQNCi8qICBEZW1hbmQgdHJhbnNmZXJzLCBp bmNyLiBhZGRyZXNzLCBhdXRvIGluaXQsIHJlYWRzLCBjaC4gbiAqLw0KI2Rl ZmluZSBETUFfVFhfTU9ERQkJMHgxOA0KDQojZGVmaW5lIERNQV9TSVpFCQko MTYqMTAyNCkJLyogU2l6ZSBvZiBkbWEgYnVmZmVyIC0gMTZrICovDQoNCiNk ZWZpbmUgQ1M4OTAwCQkJMHgwMDAwDQojZGVmaW5lIENTODkyMAkJCTB4NDAw MCAgIA0KI2RlZmluZSBDUzg5MjBNCQkJMHg2MDAwICAgDQojZGVmaW5lIFJF VklTT05fQklUUwkJMHgxRjAwDQojZGVmaW5lIEVFVkVSX05VTUJFUgkJMHgx Mg0KI2RlZmluZSBDSEtTVU1fTEVOCQkweDE0DQojZGVmaW5lIENIS1NVTV9W QUwJCTB4MDAwMA0KI2RlZmluZSBTVEFSVF9FRVBST01fREFUQQkweDAwMWMg LyogT2Zmc2V0IGludG8gZWVwcm9tIGZvciBzdGFydCBvZiBkYXRhICovDQoj ZGVmaW5lIElSUV9NQVBfRUVQUk9NX0RBVEEJMHgwMDQ2IC8qIE9mZnNldCBp bnRvIGVlcHJvbSBmb3IgdGhlIElSUSBtYXAgKi8NCiNkZWZpbmUgSVJRX01B UF9MRU4JCTB4MDAwNCAvKiBObyBvZiBieXRlcyB0byByZWFkIGZvciB0aGUg SVJRIG1hcCAqLw0KI2RlZmluZSBQTlBfSVJRX0ZSTVQJCTB4MDAyMiAvKiBQ TlAgc21hbGwgaXRlbSBJUlEgZm9ybWF0ICovDQojZGVmaW5lIENTODkwMF9J UlFfTUFQCQkweDFjMjAgLyogVGhpcyBJUlEgbWFwIGlzIGZpeGVkICovDQoN CiNkZWZpbmUgQ1M4OTIwX05PX0lOVFMJCTB4MEYgICAvKiAgTWF4IENTODky MCBpbnRlcnJ1cHQgc2VsZWN0ICMgKi8NCg0KI2RlZmluZSBQTlBfQUREX1BP UlQJCTB4MDI3OQ0KI2RlZmluZSBQTlBfV1JJVEVfUE9SVAkJMHgwQTc5DQoN CiNkZWZpbmUgR0VUX1BOUF9JU0FfU1RSVUNUCTB4NDANCiNkZWZpbmUgUE5Q X0lTQV9TVFJVQ1RfTEVOCTB4MDYNCiNkZWZpbmUgUE5QX0NTTl9DTlRfT0ZG CQkweDAxDQojZGVmaW5lIFBOUF9SRF9QT1JUX09GRgkJMHgwMg0KI2RlZmlu ZSBQTlBfRlVOQ1RJT05fT0sJCTB4MDANCiNkZWZpbmUgUE5QX1dBS0UJCTB4 MDMNCiNkZWZpbmUgUE5QX1JTUkNfREFUQQkJMHgwNA0KI2RlZmluZSBQTlBf UlNSQ19SRUFEWQkJMHgwMQ0KI2RlZmluZSBQTlBfU1RBVFVTCQkweDA1DQoj ZGVmaW5lIFBOUF9BQ1RJVkFURQkJMHgzMA0KI2RlZmluZSBQTlBfQ05GX0lP X0gJCTB4NjANCiNkZWZpbmUgUE5QX0NORl9JT19MCQkweDYxDQojZGVmaW5l IFBOUF9DTkZfSU5UCQkweDcwDQojZGVmaW5lIFBOUF9DTkZfRE1BCQkweDc0 DQojZGVmaW5lIFBOUF9DTkZfTUVNCQkweDQ4DQoNCiNkZWZpbmUgQklUMAkJ CTENCiNkZWZpbmUgQklUMTUJCQkweDgwMDANCg0KI2RlZmluZQlDU19EVVBM RVhfQVVUTwkJMA0KI2RlZmluZSBDU19EVVBMRVhfRlVMTAkJMQ0KI2RlZmlu ZSBDU19EVVBMRVhfSEFMRgkJMg0KDQovKiBEZXZpY2UgbmFtZSAqLw0KI2Rl ZmluZSBDU19OQU1FCQkJImNzIg0KDQojZGVmaW5lIGNzX3JlYWRyZWcoaW9i YXNlLCBwb3J0bm8pIFwNCgkob3V0dygoaW9iYXNlKSArIEFERF9QT1JULCAo cG9ydG5vKSksIFwNCglpbncoKGlvYmFzZSkgKyBEQVRBX1BPUlQpKQ0KI2Rl ZmluZSBjc193cml0ZXJlZyhpb2Jhc2UsIHBvcnRubywgdmFsdWUpIFwNCgko b3V0dygoaW9iYXNlKSArIEFERF9QT1JULCAocG9ydG5vKSksIFwNCglvdXR3 KChpb2Jhc2UpICsgREFUQV9QT1JULCAodmFsdWUpKSkNCiNkZWZpbmUgY3Nf cmVhZHdvcmQoaW9iYXNlLCBwb3J0bm8pIFwNCgkoaW53KChpb2Jhc2UpICsg KHBvcnRubykpKQ0KI2RlZmluZSBjc193cml0ZXdvcmQoaW9iYXNlLCBwb3J0 bm8sIHZhbHVlKSBcDQoJKG91dHcoKGlvYmFzZSkgKyAocG9ydG5vKSwgKHZh bHVlKSkpDQoNCiNkZWZpbmUgcmVzZXRfY2hpcChuaWNfYWRkcikgXA0KCWNz X3dyaXRlcmVnKG5pY19hZGRyLCBQUF9TZWxmQ1RMLCBjc19yZWFkcmVnKGlv YWRkciwgUFBfU2VsZkNUTCkgfCBQT1dFUl9PTl9SRVNFVCksIFwNCglERUxB WSgzMDAwMCkNCg0KI2RlZmluZSBjc19kdXBsZXhfZnVsbChzYykgXA0KICAg ICAgICAoY3Nfd3JpdGVyZWcoc2MtPm5pY19hZGRyLCBQUF9BdXRvTmVnQ1RM LCBGT1JDRV9GRFgpKQ0KDQojZGVmaW5lIGNzX2R1cGxleF9oYWxmKHNjKSBc DQogICAgICAgIChjc193cml0ZXJlZyhzYy0+bmljX2FkZHIsIFBQX0F1dG9O ZWdDVEwsIE5MUF9FTkFCTEUpKQ0KDQo= --0-1615265065-900865544=:25782-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message