From mboxrd@z Thu Jan 1 00:00:00 1970 From: Magnus Damm Date: Thu, 17 Mar 2011 06:40:01 +0000 Subject: SH Core Linux 20110317 Message-Id: MIME-Version: 1 Content-Type: multipart/mixed; boundary="0016e6ddab194fe10f049ea7ee30" List-Id: To: linux-sh@vger.kernel.org --0016e6ddab194fe10f049ea7ee30 Content-Type: text/plain; charset=ISO-8859-1 This is the first public release of SH Core Linux, version 20110317. SH Core Linux brings the Linux to the SH core included in sh7372 - running in parallel with the ARM core. Many modern SoCs contain multiple CPU cores in asymmetric multiprocessing configurations. These asymmetric CPU configurations often run multiple operating system instances; sometimes multiple instances of Linux and sometimes Linux on the main CPU and some customized software on the other CPU cores. Asymmetric CPU configurations are different from symmetric multiprocessing configurations which make use of a single Linux kernel together with SMP to support multiple processor cores. To make things even more complicated, come SoCs are configured to have some CPU cores operating in SMP mode, and others in AMP. This SH Core Linux prototype is written for the sh7372 SoC from Renesas. The sh7372 contains one ARM Cortex-A8 and one SH4AL-DSP core. This release includes all that is needed to run two instances of Linux; one on the ARM core and one on the SH core. The ARM core is the main SoC processor which runs a user space program to control the SH core. The SH core does not make use of any special hardware except a mailbox interface where Virtio serves as a communication link. - - - Features - - - - Console and network support via Virtio - SH Core Linux boots in less than a second - Early console printouts via Virtio - Basic power management - clock stopping in the SH idle loop - ARM User space program interfaces to the kernel with UIO - The power domain can be off when the UIO device is closed - Fully open system - no firmware or magic binaries - - - Usage - - - To start the SH Core Linux use the rtcpu-loader program on the ARM core: # /rtcpu-loader /romImage 0x100000 To exit the SH Core Linux use the "poweroff" program inside the SH core: # poweroff To enable networking create the network interface "tap0" on the ARM core: # tunctl -t tap0 - - - Source code - - - This SH Core Linux release consists of 4 parts: 1) Virtio platform driver patches used on the SH core http://lwn.net/Articles/432753/ https://patchwork.kernel.org/patch/623551/ https://patchwork.kernel.org/patch/623581/ 2) sh7372 SH4AL-DSP kernel patch and configuration (attached) linux-2.6.38-sh-shmobile-sh7372-sh-core-slave-20110317.patch linux-2.6.38-sh-shmobile-sh7372-sh-core-slave-20110317.config.gz 3) sh7372 ARM kernel patch and configuration (attached) linux-2.6.38-arm-shmobile-sh7372-sh-core-slave-20110317.patch linux-2.6.38-arm-shmobile-mackerel-sh-core-slave-20110317.config.gz 4) User space prototype for the ARM core based on lguest.c (attached) rtcpu-loader-20110228.c Please note the experimental code quality of all contents above except 1). Questions? Please ask! / magnus --0016e6ddab194fe10f049ea7ee30 Content-Type: application/octet-stream; name="linux-2.6.38-sh-shmobile-sh7372-sh-core-slave-20110317.patch" Content-Disposition: attachment; filename="linux-2.6.38-sh-shmobile-sh7372-sh-core-slave-20110317.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gld9op0c0 RnJvbTogTWFnbnVzIERhbW0gPGRhbW1Ab3BlbnNvdXJjZS5zZT4KClNpZ25lZC1vZmYtYnk6IE1h Z251cyBEYW1tIDxkYW1tQG9wZW5zb3VyY2Uuc2U+Ci0tLQoKIGFyY2gvc2gvS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgCiBhcmNoL3NoL01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAxIAogYXJjaC9zaC9ib2FyZHMvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgIHwgICAgNiAKIGFyY2gvc2gvYm9hcmRzL21hY2gtc2xhdmUvTWFrZWZpbGUg ICAgICAgICB8ICAgIDEgCiBhcmNoL3NoL2JvYXJkcy9tYWNoLXNsYXZlL3NldHVwLmMgICAgICAg ICAgfCAgMjkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGFyY2gvc2gvaW5jbHVkZS9t YWNoLXNsYXZlL21hY2gvcm9taW1hZ2UuaCB8ICAgNjIgKysrKysKIGFyY2gvc2gva2VybmVsL2Nw dS9zaDRhL01ha2VmaWxlICAgICAgICAgICB8ICAgIDEgCiBhcmNoL3NoL2tlcm5lbC9jcHUvc2g0 YS9zZXR1cC1zbGF2ZS5jICAgICAgfCAgIDM3ICsrKwogYXJjaC9zaC9tbS9LY29uZmlnICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMiAKIDkgZmlsZXMgY2hhbmdlZCwgNDA4IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKCi0tLSAwMDAxL2FyY2gvc2gvS2NvbmZpZworKysgd29yay9h cmNoL3NoL0tjb25maWcJMjAxMS0wMy0xNyAxNDoxODowMy4wMDAwMDAwMDAgKzA5MDAKQEAgLTUw NCw2ICs1MDQsMTIgQEAgY29uZmlnIENQVV9TVUJUWVBFX1NINzM2NgogCXNlbGVjdCBTWVNfU1VQ UE9SVFNfTlVNQQogCXNlbGVjdCBTWVNfU1VQUE9SVFNfQ01UCiAKK2NvbmZpZyBDUFVfU1VCVFlQ RV9TTEFWRV9TSDRBTF9EU1AKKwlib29sICJTdXBwb3J0IFNsYXZlIG9wZXJhdGlvbiBvZiBTSDRB TC1EU1AgcHJvY2Vzc29yIgorCXNlbGVjdCBDUFVfU0g0QUxfRFNQCisJc2VsZWN0IENQVV9TSFgy CisJc2VsZWN0IEFSQ0hfU0hNT0JJTEUKKwlzZWxlY3QgQVJDSF9TUEFSU0VNRU1fRU5BQkxFCiBl bmRjaG9pY2UKIAogZW5kaWYKQEAgLTc2Nyw2ICs3NzMsNyBAQCBjb25maWcgWkVST19QQUdFX09G RlNFVAogCiBjb25maWcgQk9PVF9MSU5LX09GRlNFVAogCWhleAorCWRlZmF1bHQgIjB4MDA4MDAw MDAiIGlmIENQVV9TVUJUWVBFX1NMQVZFX1NINEFMX0RTUAogCWRlZmF1bHQgIjB4MDAyMTAwMDAi IGlmIFNIX1NITUlOCiAJZGVmYXVsdCAiMHgwMDQwMDAwMCIgaWYgU0hfQ0FZTUFOCiAJZGVmYXVs dCAiMHgwMDgxMDAwMCIgaWYgU0hfNzc4MF9TT0xVVElPTl9FTkdJTkUKLS0tIDAwMDEvYXJjaC9z aC9NYWtlZmlsZQorKysgd29yay9hcmNoL3NoL01ha2VmaWxlCTIwMTEtMDMtMTcgMTQ6MTg6MDMu MDAwMDAwMDAwICswOTAwCkBAIC0xNDgsNiArMTQ4LDcgQEAgbWFjaGRpci0kKENPTkZJR19TSF9M QU5ESVNLKQkJCSs9IG1hY2gtbAogbWFjaGRpci0kKENPTkZJR19TSF9MQk9YX1JFMikJCQkrPSBt YWNoLWxib3hyZTIKIG1hY2hkaXItJChDT05GSUdfU0hfQ0FZTUFOKQkJCSs9IG1hY2gtY2F5bWFu CiBtYWNoZGlyLSQoQ09ORklHX1NIX1JTSykJCQkrPSBtYWNoLXJzaworbWFjaGRpci0kKENPTkZJ R19TSF9TTEFWRSkJCQkrPSBtYWNoLXNsYXZlCiAKIGlmbmVxICgkKG1hY2hkaXIteSksKQogY29y ZS15CSs9ICQoYWRkcHJlZml4IGFyY2gvc2gvYm9hcmRzLywgXAotLS0gMDAwMS9hcmNoL3NoL2Jv YXJkcy9LY29uZmlnCisrKyB3b3JrL2FyY2gvc2gvYm9hcmRzL0tjb25maWcJMjAxMS0wMy0xNyAx NDoxODowMy4wMDAwMDAwMDAgKzA5MDAKQEAgLTEzOCw2ICsxMzgsMTIgQEAgY29uZmlnIFNIX1JT SwogCSBTZWxlY3QgdGhpcyBvcHRpb24gaWYgY29uZmlndXJpbmcgZm9yIGFueSBvZiB0aGUgUlNL KyBNQ1UKIAkgZXZhbHVhdGlvbiBwbGF0Zm9ybXMuCiAKK2NvbmZpZyBTSF9TTEFWRQorCWRlcGVu ZHMgb24gQ1BVX1NVQlRZUEVfU0xBVkVfU0g0QUxfRFNQCisJYm9vbCAiU2xhdmUgQ1BVIFN1cHBv cnQiCisJaGVscAorCSBTZWxlY3QgdGhpcyBvcHRpb24gaWYgY29uZmlndXJpbmcgZm9yIFNsYXZl IENQVSB1c2UuCisKIGNvbmZpZyBTSF9TREs3NzgwCiAJYm9vbCAiU0RLNzc4MFIzIgogCWRlcGVu ZHMgb24gQ1BVX1NVQlRZUEVfU0g3NzgwCi0tLSAvZGV2L251bGwKKysrIHdvcmsvYXJjaC9zaC9i b2FyZHMvbWFjaC1zbGF2ZS9NYWtlZmlsZQkyMDExLTAzLTE3IDE0OjE4OjA0LjAwMDAwMDAwMCAr MDkwMApAQCAtMCwwICsxIEBACitvYmoteQkgOj0gc2V0dXAubwotLS0gL2Rldi9udWxsCisrKyB3 b3JrL2FyY2gvc2gvYm9hcmRzL21hY2gtc2xhdmUvc2V0dXAuYwkyMDExLTAzLTE3IDE0OjIyOjI0 LjAwMDAwMDAwMCArMDkwMApAQCAtMCwwICsxLDI5MiBAQAorLyoKKyAqIFNsYXZlIENQVSBTZXR1 cAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgIE1hZ251cyBEYW1tCisgKiAgQ29weXJpZ2h0 IChDKSAyMDA2IC0gMjAwOCAgUGF1bCBNdW5kdAorICoKKyAqIFRoaXMgZmlsZSBpcyBzdWJqZWN0 IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlLiAgU2VlIHRoZSBmaWxlICJDT1BZSU5HIiBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkg b2YgdGhpcyBhcmNoaXZlCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICovCisjaW5jbHVkZSA8bGlu dXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2Jvb3RtZW0uaD4KKyNpbmNsdWRlIDxsaW51eC9t bS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4 L3ZpcnRpb19wbGF0Zm9ybS5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsb2NrY2hpcHMuaD4KKyNpbmNs dWRlIDxsaW51eC9jb25zb2xlLmg+CisjaW5jbHVkZSA8bGludXgvdmlydGlvX2NvbnNvbGUuaD4K KyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pcnEuaD4KKyNp bmNsdWRlIDxsaW51eC9kZWxheS5oPgorCisjaW5jbHVkZSA8YXNtL21hY2h2ZWMuaD4KKyNpbmNs dWRlIDxhc20vY2xvY2suaD4KKyNpbmNsdWRlIDxhc20vbW16b25lLmg+CisjaW5jbHVkZSA8YXNt L2NhY2hlZmx1c2guaD4KKworI2RlZmluZSBJUlFfREVNVVggMAorI2RlZmluZSBJUlFfRUFSTFlf Q09OU09MRSAwCisjZGVmaW5lIElSUV9QT1dFUl9PRkYgMQorI2RlZmluZSBJUlFfVElNRVIgMgor I2RlZmluZSBJUlFfVklSVElPIDMKKyNkZWZpbmUgSVJRX05SIDE2CisKKyNkZWZpbmUgTUZSQU0g KHZvaWQgKikweGU2YTcwMDAwCisKK3N0YXRpYyB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphMnNf ZW5hYmxlZCA9IChNRlJBTSArIDB4MTAwKTsgLyogMSA9IGVuYWJsZWQgKi8KK3N0YXRpYyB2b2xh dGlsZSB1bnNpZ25lZCBsb25nICphMnNfcGVuZGluZyA9IChNRlJBTSArIDB4MjAwKTsgLyogMSA9 IHBlbmRpbmcgKi8KK3N0YXRpYyB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpzMmFfcGVuZGluZyA9 IChNRlJBTSArIDB4MzAwKTsgLyogMSA9IHBlbmRpbmcgKi8KKworc3RhdGljIHZvaWQgczJhX3Bl bmRpbmdfaXJxX3NldChpbnQgcGVuZGluZykKK3sKKwlfX3Jhd193cml0ZWwocGVuZGluZywgMHhl NmE2MDAxNCk7IC8qIE1GSVNFSUNSICovCit9CisKK3N0YXRpYyB2b2lkIGEyc19wZW5kaW5nX2ly cV9zZXQoaW50IHBlbmRpbmcpCit7CisJX19yYXdfd3JpdGVsKHBlbmRpbmcsIDB4ZTZhNjAwMTAp OyAvKiBNRklTSUlDUiAqLworfQorCitzdGF0aWMgX19pbml0IHZvaWQgZWFybHlfcHV0X2NoYXIo Y29uc3QgY2hhciBjKQoreworCXMyYV9wZW5kaW5nW0lSUV9FQVJMWV9DT05TT0xFXSA9IGM7CisJ czJhX3BlbmRpbmdfaXJxX3NldCgxKTsKKwl3aGlsZSAoczJhX3BlbmRpbmdbSVJRX0VBUkxZX0NP TlNPTEVdKQorCQk7Cit9CisKK3N0YXRpYyBfX2luaXQgaW50IGVhcmx5X3B1dF9jaGFycyh1MzIg dnRlcm1ubywgY29uc3QgY2hhciAqYnVmLCBpbnQgY291bnQpCit7CisJaW50IGs7CisJY2hhciBj OworCisJZm9yIChrID0gMDsgayA8IGNvdW50OyBrKyspIHsKKwkJYyA9ICpidWYrKzsKKworCQlp ZiAoYykKKwkJCWVhcmx5X3B1dF9jaGFyKGMpOworCisJCWlmIChjID09ICdcbicpCisJCQllYXJs eV9wdXRfY2hhcignXHInKTsKKwl9CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyB2b2lk IG5vdGlmeV9ob3N0KGludCBpcnEpCit7CisJczJhX3BlbmRpbmdbaXJxXSA9IDE7CisJczJhX3Bl bmRpbmdfaXJxX3NldCgxKTsKK30KKworc3RhdGljIHZvaWQgc2xhdmVfcG93ZXJfb2ZmKHZvaWQp Cit7CisJbm90aWZ5X2hvc3QoSVJRX1BPV0VSX09GRik7CisKKwkvKiBidXN5IGxvb3AgdGhhdCBk b2VzIF9ub3RfIHVzZSB0aGUgc2xlZXAgaW5zdHJ1Y3Rpb24gKi8KKwl3aGlsZSgxKQorCSAgOwor fQorCitzdGF0aWMgdm9pZCBfX2luaXQgc2xhdmVfc2V0dXAoY2hhciAqKmNtZGxpbmVfcCkKK3sK KwlhZGRfcHJlZmVycmVkX2NvbnNvbGUoImh2YyIsIDAsIE5VTEwpOworCXZpcnRpb19jb25zX2Vh cmx5X2luaXQoZWFybHlfcHV0X2NoYXJzKTsKKworCXBtX3Bvd2VyX29mZiA9IHNsYXZlX3Bvd2Vy X29mZjsKK30KKworCitzdGF0aWMgdm9pZCBub3RpZnlfdmlydGlvKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCit7CisJbm90aWZ5X2hvc3QoSVJRX1ZJUlRJTyk7Cit9CisKK3N0YXRpYyB2 b2lkIG5vdGlmeV92aXJ0cXVldWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKKwkJCSAg ICAgc3RydWN0IGxndWVzdF92cWNvbmZpZyAqY29uZmlnKQoreworCW5vdGlmeV9ob3N0KGNvbmZp Zy0+aXJxKTsKK30KKworc3RhdGljIHN0cnVjdCB2aXJ0aW9fcGxhdGZvcm1fZGF0YSB2aXJ0aW9f cGRhdGEgPSB7CisJLm5vdGlmeV92aXJ0aW8gPSBub3RpZnlfdmlydGlvLAorCS5ub3RpZnlfdmly dHF1ZXVlID0gbm90aWZ5X3ZpcnRxdWV1ZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ug dmlydGlvX3Jlc291cmNlc1sxXTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugdmly dGlvX2RldmljZSA9IHsKKwkubmFtZQkJPSAidmlydGlvLXBsYXRmb3JtIiwKKwkuaWQJCT0gMCwK KwkucmVzb3VyY2UJPSB2aXJ0aW9fcmVzb3VyY2VzLAorCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlf U0laRSh2aXJ0aW9fcmVzb3VyY2VzKSwKKwkuZGV2CQk9IHsKKwkJLnBsYXRmb3JtX2RhdGEJPSAm dmlydGlvX3BkYXRhLAorCX0sCit9OworCitzdGF0aWMgaW50IF9faW5pdCBkZXZpY2VzX3NldHVw KHZvaWQpCit7CisJdmlydGlvX3Jlc291cmNlc1swXS5zdGFydCA9IG1heF9wZm4gPDwgUEFHRV9T SElGVDsKKwl2aXJ0aW9fcmVzb3VyY2VzWzBdLmVuZCA9IHZpcnRpb19yZXNvdXJjZXNbMF0uc3Rh cnQgKyAoMSA8PCAyMCkgLSAxOworCXZpcnRpb19yZXNvdXJjZXNbMF0uZmxhZ3MgPSBJT1JFU09V UkNFX01FTTsKKworCXJldHVybiBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJnZpcnRpb19kZXZp Y2UpOworfQorYXJjaF9pbml0Y2FsbChkZXZpY2VzX3NldHVwKTsKKworc3RhdGljIHZvaWQgZGlz YWJsZV92aXJ0X2lycShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpCit7CisJYTJzX2VuYWJsZWRbZGF0 YS0+aXJxXSA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIGVuYWJsZV92aXJ0X2lycShzdHJ1Y3QgaXJx X2RhdGEgKmRhdGEpCit7CisJYTJzX2VuYWJsZWRbZGF0YS0+aXJxXSA9IDE7CisKKwlpZiAoYTJz X3BlbmRpbmdbZGF0YS0+aXJxXSkKKwkJYTJzX3BlbmRpbmdfaXJxX3NldCgxKTsKK30KKworc3Rh dGljIHN0cnVjdCBpcnFfY2hpcCB2aXJ0X2lycV9jb250cm9sbGVyID0geworCS5uYW1lCQk9ICJ2 aXJ0IiwKKwkuaXJxX21hc2sJPSBkaXNhYmxlX3ZpcnRfaXJxLAorCS5pcnFfbWFza19hY2sJPSBk aXNhYmxlX3ZpcnRfaXJxLAorCS5pcnFfdW5tYXNrCT0gZW5hYmxlX3ZpcnRfaXJxLAorfTsKKwor c3RhdGljIHZvaWQgc2xhdmVfZGVtdXgodW5zaWduZWQgaW50IGlycSwgc3RydWN0IGlycV9kZXNj ICpkZXNjKQoreworCWludCBrOworCisJd2hpbGUgKF9fcmF3X3JlYWRsKDB4ZTZhNjAwMTApKSB7 IC8qIGlmIHBlbmRpbmcgKi8KKwkJYTJzX3BlbmRpbmdfaXJxX3NldCgwKTsgLyogc2V0IG5vdCBw ZW5kaW5nICovCisKKwkJZm9yIChrID0gMDsgayA8IElSUV9OUjsgaysrKSB7CisJCQl3aGlsZSAo YTJzX2VuYWJsZWRba10gJiYgYTJzX3BlbmRpbmdba10pIHsKKwkJCQlhMnNfcGVuZGluZ1trXSA9 IDA7IC8qIG5vdCBwZW5kaW5nIGFueW1vcmUgKi8KKwkJCQlnZW5lcmljX2hhbmRsZV9pcnEoayk7 CisJCQl9CisJCX0KKwl9Cit9CisKK3ZvaWQgX19pbml0IHNsYXZlX2luaXRfaXJxKHZvaWQpCit7 CisJaW50IGs7CisKKwlpcnFfdG9fZGVzY19hbGxvY19ub2RlKElSUV9ERU1VWCwgMCk7CisJc2V0 X2lycV9jaGlwX2FuZF9oYW5kbGVyX25hbWUoSVJRX0RFTVVYLCAmZHVtbXlfaXJxX2NoaXAsCisJ CQkJICAgICAgaGFuZGxlX2xldmVsX2lycSwgImxldmVsIik7CisJc2V0X2lycV9jaGFpbmVkX2hh bmRsZXIoSVJRX0RFTVVYLCBzbGF2ZV9kZW11eCk7CisKKwlmb3IgKGsgPSAxOyBrIDwgSVJRX05S OyBrKyspIHsKKwkJaXJxX3RvX2Rlc2NfYWxsb2Nfbm9kZShrLCAwKTsKKwkJc2V0X2lycV9jaGlw X2FuZF9oYW5kbGVyX25hbWUoaywgJnZpcnRfaXJxX2NvbnRyb2xsZXIsCisJCQkJCSAgICAgIGhh bmRsZV9sZXZlbF9pcnEsICJsZXZlbCIpOworCX0KK30KKworCitzdGF0aWMgaW50IHNsYXZlX2ly cV9kZW11eChpbnQgaXJxKQoreworCXJldHVybiBJUlFfREVNVVg7Cit9CisKK3N0cnVjdCBjbG9j a2V2ZW50X3ByaXYgeworCXN0cnVjdCBpcnFhY3Rpb24gaXJxYWN0aW9uOworCXN0cnVjdCBjbG9j a19ldmVudF9kZXZpY2UgY2VkOworfTsKKworc3RhdGljIHN0cnVjdCBjbG9ja2V2ZW50X3ByaXYg KmNlZF90b19wcml2KHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmNlZCkKK3sKKwlyZXR1cm4g Y29udGFpbmVyX29mKGNlZCwgc3RydWN0IGNsb2NrZXZlbnRfcHJpdiwgY2VkKTsKK30KKworc3Rh dGljIHZvaWQgY2xvY2tldmVudF9wcml2X2V2ZW50X3N0YXJ0KHN0cnVjdCBjbG9ja2V2ZW50X3By aXYgKnApCit7CisJc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqY2VkID0gJnAtPmNlZDsKKwor CS8qIFRPRE86IGNhbGN1bGF0ZSBnb29kIHNoaWZ0IGZyb20gcmF0ZSBhbmQgY291bnRlciBiaXQg d2lkdGggKi8KKworCWNlZC0+c2hpZnQgPSAzMjsKKwljZWQtPm11bHQgPSBkaXZfc2MoMTAwMCwg TlNFQ19QRVJfU0VDLCBjZWQtPnNoaWZ0KTsKKwljZWQtPm1heF9kZWx0YV9ucyA9IGNsb2NrZXZl bnRfZGVsdGEybnMoMHhmZmZmZmZmZiwgY2VkKTsKKwljZWQtPm1pbl9kZWx0YV9ucyA9IDUwMDA7 Cit9CisKK3N0YXRpYyB2b2lkIGNsb2NrZXZlbnRfcHJpdl9jbG9ja19ldmVudF9tb2RlKGVudW0g Y2xvY2tfZXZlbnRfbW9kZSBtb2RlLAorCQkJCQkgICAgIHN0cnVjdCBjbG9ja19ldmVudF9kZXZp Y2UgKmNlZCkKK3sKKwlzdHJ1Y3QgY2xvY2tldmVudF9wcml2ICpwID0gY2VkX3RvX3ByaXYoY2Vk KTsKKworCXN3aXRjaCAobW9kZSkgeworCWNhc2UgQ0xPQ0tfRVZUX01PREVfUEVSSU9ESUM6CisJ CWNsb2NrZXZlbnRfcHJpdl9ldmVudF9zdGFydChwKTsKKwkJcHJpbnRrKCJwYXJhdmlydHVhbGl6 ZWQgcGVyaW9kaWMgY2xvY2sgZXZlbnRzIGVuYWJsZWRcbiIpOworCQlicmVhazsKKwlkZWZhdWx0 OgorCQlicmVhazsKKwl9Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBjbG9ja2V2ZW50X3ByaXZf aW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCkKK3sKKwlzdHJ1Y3QgY2xvY2tldmVudF9w cml2ICpwID0gZGV2X2lkOworCS8qIG5vdGlmeSBjbG9ja2V2ZW50IGxheWVyICovCisJcC0+Y2Vk LmV2ZW50X2hhbmRsZXIoJnAtPmNlZCk7CisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0 aWMgdm9pZCBjbG9ja2V2ZW50X3ByaXZfcmVnaXN0ZXJfY2xvY2tldmVudChzdHJ1Y3QgY2xvY2tl dmVudF9wcml2ICpwKQoreworCXN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmNlZCA9ICZwLT5j ZWQ7CisJaW50IHJldDsKKworCW1lbXNldChjZWQsIDAsIHNpemVvZigqY2VkKSk7CisKKwljZWQt Pm5hbWUgPSAidGltZXIiOworCWNlZC0+ZmVhdHVyZXMgPSBDTE9DS19FVlRfRkVBVF9QRVJJT0RJ QzsKKwljZWQtPnJhdGluZyA9IDEwMDsKKwljZWQtPmNwdW1hc2sgPSBjcHVtYXNrX29mKDApOwor CWNlZC0+c2V0X21vZGUgPSBjbG9ja2V2ZW50X3ByaXZfY2xvY2tfZXZlbnRfbW9kZTsKKworCWNs b2NrZXZlbnRzX3JlZ2lzdGVyX2RldmljZShjZWQpOworCisJLyogc2V0dXAgZGF0YSBmb3Igc2V0 dXBfaXJxKCkgKHRvbyBlYXJseSBmb3IgcmVxdWVzdF9pcnEoKSkgKi8KKwlwLT5pcnFhY3Rpb24u bmFtZSA9IGNlZC0+bmFtZTsKKwlwLT5pcnFhY3Rpb24uaGFuZGxlciA9IGNsb2NrZXZlbnRfcHJp dl9pbnRlcnJ1cHQ7CisJcC0+aXJxYWN0aW9uLmRldl9pZCA9IHA7CisJcC0+aXJxYWN0aW9uLmly cSA9IElSUV9USU1FUjsKKwlwLT5pcnFhY3Rpb24uZmxhZ3MgPSBJUlFGX0RJU0FCTEVEIHwgSVJR Rl9USU1FUiB8IFwKKwkJCSAgICAgSVJRRl9JUlFQT0xMICB8IElSUUZfTk9CQUxBTkNJTkc7CisK KwlyZXQgPSBzZXR1cF9pcnEocC0+aXJxYWN0aW9uLmlycSwgJnAtPmlycWFjdGlvbik7CisJaWYg KHJldCkgeworCQlwcmludGsoInRpbWVyIGZhaWxlZCB0byByZXF1ZXN0IGlycSAlZFxuIiwKKwkJ CXAtPmlycWFjdGlvbi5pcnEpOworCQlyZXR1cm47CisJfQorCisJbm90aWZ5X2hvc3QoSVJRX1RJ TUVSKTsKK30KKworc3RhdGljIHN0cnVjdCBjbG9ja2V2ZW50X3ByaXYgcDsKKworc3RhdGljIGlu dCBfX2luaXQgYXJjaF90aW1lcl9pbml0KHZvaWQpCit7CisJY2xvY2tldmVudF9wcml2X3JlZ2lz dGVyX2Nsb2NrZXZlbnQoJnApOworCXJldHVybiAwOworfQorYXJjaF9pbml0Y2FsbChhcmNoX3Rp bWVyX2luaXQpOworCisvKgorICogVGhlIE1hY2hpbmUgVmVjdG9yCisgKi8KK3N0YXRpYyBzdHJ1 Y3Qgc2hfbWFjaGluZV92ZWN0b3IgbXZfc2g0YWxfZHNwX3NsYXZlIF9faW5pdG12ID0geworCS5t dl9uYW1lCQk9ICJTSDRBTC1EU1Agc2xhdmUiLAorCS5tdl9zZXR1cAkJPSBzbGF2ZV9zZXR1cCwK KwkubXZfaW5pdF9pcnEJCT0gc2xhdmVfaW5pdF9pcnEsCisJLm12X2lycV9kZW11eAkJPSBzbGF2 ZV9pcnFfZGVtdXgsCit9OwotLS0gL2Rldi9udWxsCisrKyB3b3JrL2FyY2gvc2gvaW5jbHVkZS9t YWNoLXNsYXZlL21hY2gvcm9taW1hZ2UuaAkyMDExLTAzLTE3IDE0OjE4OjA0LjAwMDAwMDAwMCAr MDkwMApAQCAtMCwwICsxLDYyIEBACisjaWZkZWYgX19BU1NFTUJMWV9fCisJLyogYXQgdGhpcyBw b2ludCB3ZSBhc3N1bWUgdGhhdCB3ZSBleGVjdXRlIGZyb20gVTAvUDAgKi8KKworCS8qIHNldHVw IFBNQjAgKi8KKwltb3YubCAgIHBtYjBfYWRkciwgcjEKKwltb3YubCAgIHBtYjBfYWRkcl92YWx1 ZSwgcjAKKwltb3YubCAgIHIwLCBAcjEKKwltb3YubCAgIHBtYjBfZGF0YSwgcjEKKwltb3YubCAg IHBtYjBfZGF0YV92YWx1ZSwgcjAKKwltb3YubCAgIHIwLCBAcjEKKworCS8qIHNldHVwIFBNQjEg Ki8KKwltb3YubCAgIHBtYjFfYWRkciwgcjEKKwltb3YubCAgIHBtYjFfYWRkcl92YWx1ZSwgcjAK Kwltb3YubCAgIHIwLCBAcjEKKwltb3YubCAgIHBtYjFfZGF0YSwgcjEKKwltb3YubCAgIHBtYjFf ZGF0YV92YWx1ZSwgcjAKKwltb3YubCAgIHIwLCBAcjEKKworCS8qIGVuYWJsZSBjYWNoZSAqLwor CW1vdi5sICAgY2NyX2FkZHIsIHIxCisJbW92LmwgICBjY3JfZGF0YSwgcjAKKwltb3YubCAgIHIw LCBAcjEKKwlpY2JpCUByMQorCisJYnJhIGRvbmUKKwkgbm9wCisKKwkuYWxpZ24gMgorbm1pZmNy c19hZGRyOgorCS5sb25nICAgMHhmZmQzMDBjMAorcG1iMF9hZGRyOgorCS5sb25nICAgMHhmNjEw MDAwMAorcG1iMF9hZGRyX3ZhbHVlOgorCS5sb25nICAgMHg4MDAwMDEwMAorcG1iMF9kYXRhOgor CS5sb25nICAgMHhmNzEwMDAwMAorcG1iMF9kYXRhX3ZhbHVlOgorCS5sb25nICAgMHg0YzAwMDMx OSAvKiA2NE0gLSBtdXN0IG1hdGNoIENPTkZJR19NRU1PUllfU1RBUlQsIEMrV1QrVUIgKi8KKwor cG1iMV9hZGRyOgorCS5sb25nICAgMHhmNjEwMDEwMAorcG1iMV9hZGRyX3ZhbHVlOgorCS5sb25n ICAgMHhhMDAwMDEwMAorcG1iMV9kYXRhOgorCS5sb25nICAgMHhmNzEwMDEwMAorcG1iMV9kYXRh X3ZhbHVlOgorCS5sb25nICAgMHg0YzAwMDExMCAvKiA2NE0gKi8KKworY2NyX2FkZHI6CisJLmxv bmcgICAweGZmMDAwMDFjCitjY3JfZGF0YToKKwkubG9uZyAgIDB4MDAwMDA5MGIKK2RvbmU6CisK KyNlbHNlIC8qIF9fQVNTRU1CTFlfXyAqLworCitleHRlcm4gaW5saW5lIHZvaWQgbW1jaWZfdXBk YXRlX3Byb2dyZXNzKGludCBucikKK3sKK30KKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwot LS0gMDAwMS9hcmNoL3NoL2tlcm5lbC9jcHUvc2g0YS9NYWtlZmlsZQorKysgd29yay9hcmNoL3No L2tlcm5lbC9jcHUvc2g0YS9NYWtlZmlsZQkyMDExLTAzLTE3IDE0OjE4OjAzLjAwMDAwMDAwMCAr MDkwMApAQCAtMyw2ICszLDcgQEAKICMKIAogIyBDUFUgc3VidHlwZSBzZXR1cAorb2JqLSQoQ09O RklHX0NQVV9TVUJUWVBFX1NMQVZFX1NINEFMX0RTUCkJKz0gc2V0dXAtc2xhdmUubwogb2JqLSQo Q09ORklHX0NQVV9TVUJUWVBFX1NINzc1NykJKz0gc2V0dXAtc2g3NzU3Lm8KIG9iai0kKENPTkZJ R19DUFVfU1VCVFlQRV9TSDc3NjMpCSs9IHNldHVwLXNoNzc2My5vCiBvYmotJChDT05GSUdfQ1BV X1NVQlRZUEVfU0g3NzcwKQkrPSBzZXR1cC1zaDc3NzAubwotLS0gL2Rldi9udWxsCisrKyB3b3Jr L2FyY2gvc2gva2VybmVsL2NwdS9zaDRhL3NldHVwLXNsYXZlLmMJMjAxMS0wMy0xNyAxNDoxODow NC4wMDAwMDAwMDAgKzA5MDAKQEAgLTAsMCArMSwzNyBAQAorI2luY2x1ZGUgPGxpbnV4L2luaXQu aD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGtkZXYuaD4KKyNp bmNsdWRlIDxhc20vY2xvY2suaD4KKworc3RhdGljIHN0cnVjdCBjbGtfb3BzIGNwdV9jbGtfb3Bz ID0geworCS5yZWNhbGMJCT0gZm9sbG93cGFyZW50X3JlY2FsYywKK307CisKK3N0YXRpYyBzdHJ1 Y3QgY2xrIGNwdV9jbGsgPSB7CisJLnJhdGUJCT0gNDAwMDAwMDAwLAorCS5vcHMJCT0gJmNwdV9j bGtfb3BzLAorCS5mbGFncwkJPSBDTEtfRU5BQkxFX09OX0lOSVQsCit9OworCisjZGVmaW5lIENM S0RFVl9DT05fSUQoX2lkLCBfY2xrKSB7IC5jb25faWQgPSBfaWQsIC5jbGsgPSBfY2xrIH0KKwor c3RhdGljIHN0cnVjdCBjbGtfbG9va3VwIGxvb2t1cHNbXSA9IHsKKwlDTEtERVZfQ09OX0lEKCJj cHVfY2xrIiwgJmNwdV9jbGspLAorfTsKKworaW50IF9faW5pdCBhcmNoX2Nsa19pbml0KHZvaWQp Cit7CisJaW50IHJldDsKKworCXJldCA9IGNsa19yZWdpc3RlcigmY3B1X2Nsayk7CisJaWYgKCFy ZXQpCisJCWNsa2Rldl9hZGRfdGFibGUobG9va3VwcywgQVJSQVlfU0laRShsb29rdXBzKSk7CisK KwlyZXR1cm4gcmV0OworfQorCit2b2lkIF9faW5pdCBwbGF0X2lycV9zZXR1cCh2b2lkKQorewor CS8qIG5vdGhpbmcgdG8gZG8gaGVyZSAqLworfQorCi0tLSAwMDAxL2FyY2gvc2gvbW0vS2NvbmZp ZworKysgd29yay9hcmNoL3NoL21tL0tjb25maWcJMjAxMS0wMy0xNyAxNDoxODowMy4wMDAwMDAw MDAgKzA5MDAKQEAgLTgzLDcgKzgzLDcgQEAgY29uZmlnIDMyQklUCiAKIGNvbmZpZyBQTUIKIAli b29sICJTdXBwb3J0IDMyLWJpdCBwaHlzaWNhbCBhZGRyZXNzaW5nIHRocm91Z2ggUE1CIgotCWRl cGVuZHMgb24gTU1VICYmIEVYUEVSSU1FTlRBTCAmJiBDUFVfU0g0QSAmJiAhQ1BVX1NINEFMX0RT UAorCWRlcGVuZHMgb24gTU1VICYmIEVYUEVSSU1FTlRBTCAmJiBDUFVfU0g0QQogCXNlbGVjdCAz MkJJVAogCXNlbGVjdCBVTkNBQ0hFRF9NQVBQSU5HCiAJaGVscAo= --0016e6ddab194fe10f049ea7ee30 Content-Type: application/x-gzip; name="linux-2.6.38-sh-shmobile-sh7372-sh-core-slave-20110317.config.gz" Content-Disposition: attachment; filename="linux-2.6.38-sh-shmobile-sh7372-sh-core-slave-20110317.config.gz" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gld9q8zm1 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 /w+2M5jLK0UAAA== --0016e6ddab194fe10f049ea7ee30 Content-Type: application/octet-stream; name="linux-2.6.38-arm-shmobile-sh7372-sh-core-slave-20110317.patch" Content-Disposition: attachment; filename="linux-2.6.38-arm-shmobile-sh7372-sh-core-slave-20110317.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gld9ttkh2 RnJvbTogTWFnbnVzIERhbW0gPGRhbW1Ab3BlbnNvdXJjZS5zZT4KClNpZ25lZC1vZmYtYnk6IE1h Z251cyBEYW1tIDxkYW1tQG9wZW5zb3VyY2Uuc2U+Ci0tLQoKIGFyY2gvYXJtL21hY2gtc2htb2Jp bGUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAgMSAKIGFyY2gvYXJtL21hY2gtc2htb2JpbGUv Ym9hcmQtYXA0ZXZiLmMgICAgICAgIHwgICAgMSAKIGFyY2gvYXJtL21hY2gtc2htb2JpbGUvYm9h cmQtbWFja2VyZWwuYyAgICAgIHwgICAgMSAKIGFyY2gvYXJtL21hY2gtc2htb2JpbGUvY2xvY2st c2g3MzcyLmMgICAgICAgIHwgICA4NSArKysrKysrKysrKysrKysrKysrKysrKysrLQogYXJjaC9h cm0vbWFjaC1zaG1vYmlsZS9pbmNsdWRlL21hY2gvY29tbW9uLmggfCAgICA0ICsKIGFyY2gvYXJt L21hY2gtc2htb2JpbGUvbWVtY2h1bmsuYyAgICAgICAgICAgIHwgICA3OCArKysrKysrKysrKysr KysrKysrKysrKwogYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9zZXR1cC1zaDczNzIuYyAgICAgICAg fCAgIDQxICsrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQoKLS0tIDAwMDEvYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9NYWtlZmlsZQor Kysgd29yay9hcmNoL2FybS9tYWNoLXNobW9iaWxlL01ha2VmaWxlCTIwMTEtMDMtMTcgMTQ6MDM6 MDMuMDAwMDAwMDAwICswOTAwCkBAIC00LDYgKzQsNyBAQAogCiAjIENvbW1vbiBvYmplY3RzCiBv YmoteQkJCQk6PSB0aW1lci5vIGNvbnNvbGUubyBjbG9jay5vIHBtX3J1bnRpbWUubworb2JqLXkJ CQkJKz0gbWVtY2h1bmsubwogCiAjIENQVSBvYmplY3RzCiBvYmotJChDT05GSUdfQVJDSF9TSDcz NjcpCSs9IHNldHVwLXNoNzM2Ny5vIGNsb2NrLXNoNzM2Ny5vIGludGMtc2g3MzY3Lm8KLS0tIDAw MDEvYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9ib2FyZC1hcDRldmIuYworKysgd29yay9hcmNoL2Fy bS9tYWNoLXNobW9iaWxlL2JvYXJkLWFwNGV2Yi5jCTIwMTEtMDMtMTcgMTQ6MDM6MDMuMDAwMDAw MDAwICswOTAwCkBAIC0xMzY2LDUgKzEzNjYsNiBAQCBNQUNISU5FX1NUQVJUKEFQNEVWQiwgImFw NGV2YiIpCiAJLmluaXRfaXJxCT0gc2g3MzcyX2luaXRfaXJxLAogCS5oYW5kbGVfaXJxCT0gc2ht b2JpbGVfaGFuZGxlX2lycV9pbnRjLAogCS5pbml0X21hY2hpbmUJPSBhcDRldmJfaW5pdCwKKwku cmVzZXJ2ZQk9IHNoNzM3Ml9yZXNlcnZlX21lbW9yeSwKIAkudGltZXIJCT0gJmFwNGV2Yl90aW1l ciwKIE1BQ0hJTkVfRU5ECi0tLSAwMDAxL2FyY2gvYXJtL21hY2gtc2htb2JpbGUvYm9hcmQtbWFj a2VyZWwuYworKysgd29yay9hcmNoL2FybS9tYWNoLXNobW9iaWxlL2JvYXJkLW1hY2tlcmVsLmMJ MjAxMS0wMy0xNyAxNDowMzowMy4wMDAwMDAwMDAgKzA5MDAKQEAgLTEyMTYsNSArMTIxNiw2IEBA IE1BQ0hJTkVfU1RBUlQoTUFDS0VSRUwsICJtYWNrZXJlbCIpCiAJLmluaXRfaXJxCT0gc2g3Mzcy X2luaXRfaXJxLAogCS5oYW5kbGVfaXJxCT0gc2htb2JpbGVfaGFuZGxlX2lycV9pbnRjLAogCS5p bml0X21hY2hpbmUJPSBtYWNrZXJlbF9pbml0LAorCS5yZXNlcnZlCT0gc2g3MzcyX3Jlc2VydmVf bWVtb3J5LAogCS50aW1lcgkJPSAmbWFja2VyZWxfdGltZXIsCiBNQUNISU5FX0VORAotLS0gMDAw MS9hcmNoL2FybS9tYWNoLXNobW9iaWxlL2Nsb2NrLXNoNzM3Mi5jCisrKyB3b3JrL2FyY2gvYXJt L21hY2gtc2htb2JpbGUvY2xvY2stc2g3MzcyLmMJMjAxMS0wMy0xNyAxNDowMzowMy4wMDAwMDAw MDAgKzA5MDAKQEAgLTE2LDExICsxNiwxNCBAQAogICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAqIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EK ICAqLworI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5o PgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L2lvLmg+CiAjaW5j bHVkZSA8bGludXgvc2hfY2xrLmg+CiAjaW5jbHVkZSA8bGludXgvY2xrZGV2Lmg+CisjaW5jbHVk ZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9zaF9pbnRjLmg+CiAjaW5jbHVkZSA8 bWFjaC9jb21tb24uaD4KIAogLyogU0g3MzcyIHJlZ2lzdGVycyAqLwpAQCAtMzQ1LDcgKzM0OCw3 IEBAIGVudW0geyBESVY0X0ksIERJVjRfWkcsIERJVjRfQiwgRElWNF9NMSwKICAgU0hfQ0xLX0RJ VjQoJnBsbGMxX2NsaywgX3JlZywgX2JpdCwgX21hc2ssIF9mbGFncykKIAogc3RhdGljIHN0cnVj dCBjbGsgZGl2NF9jbGtzW0RJVjRfTlJdID0gewotCVtESVY0X0ldID0gRElWNChGUlFDUkEsIDIw LCAweDZmZmYsIENMS19FTkFCTEVfT05fSU5JVCksCisJW0RJVjRfSV0gPSBESVY0KEZSUUNSQSwg MjAsIDB4NmZmZiwgMCksCiAJW0RJVjRfWkddID0gRElWNChGUlFDUkEsIDE2LCAweDZmZmYsIENM S19FTkFCTEVfT05fSU5JVCksCiAJW0RJVjRfQl0gPSBESVY0KEZSUUNSQSwgOCwgMHg2ZmZmLCBD TEtfRU5BQkxFX09OX0lOSVQpLAogCVtESVY0X00xXSA9IERJVjQoRlJRQ1JBLCA0LCAweDZmZmYs IENMS19FTkFCTEVfT05fSU5JVCksCkBAIC01NTQsNiArNTU3LDgyIEBAIHN0YXRpYyBzdHJ1Y3Qg Y2xrIG1zdHBfY2xrc1tNU1RQX05SXSA9IHsKIAlbTVNUUDQwM10gPSBNU1RQKCZyX2NsaywgU01T VFBDUjQsIDMsIDApLCAvKiBLRVlTQyAqLwogfTsKIAorLyogUlQtQ1BVICovCisKKyNkZWZpbmUg UkVTQ05UICh2b2lkIF9faW9tZW0gKikweGU2MTg4MDFjIC8qIGluIFNZU0MgKi8KKyNkZWZpbmUg UkJBUiAodm9pZCBfX2lvbWVtICopMHhlNjE4MDAxYworI2RlZmluZSBTUkNSMCAodm9pZCBfX2lv bWVtICopMHhlNjE1ODBhMAorI2RlZmluZSBTTUZSQU0gMHhlNmE3MDAwMCAKKworc3RhdGljIHVu c2lnbmVkIGNoYXIgc2hfYm9vdF9jb2RlW10gPQoreworCS8qIFNIIG1hY2hpbmUgY29kZSB0byB3 YWl0IGZvciBNRkkgSVJRIGFuZCBqdW1wIHRvIG1lbW9yeSAoYmFyMy0zLlMpICovCisJMHgwOSwg MHgwMCwgMHgwOSwgMHgwMCwJMHgwNCwgMHhkMSwgMHgwMCwgMHhlMCwKKwkweDAyLCAweDIxLCAw eDA5LCAweDAwLAkweDEyLCAweDYwLCAweDAwLCAweDg4LCAKKwkweGZiLCAweDg5LCAweDAyLCAw eGQxLAkweDJiLCAweDQxLCAweDA5LCAweDAwLAorCTB4MTAsIDB4MDAsIDB4YTYsIDB4ZTYsIDB4 ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYKK307CisKK3ZvaWQgc2V0X3J0Y3B1X2Jhc2UodW5zaWduZWQg bG9uZyBiYXNlKQoreworCXVuc2lnbmVkIGxvbmcgKnAgPSAodm9pZCAqKSZzaF9ib290X2NvZGVb MjhdOworCisJKnAgPSBiYXNlOworfQorCitzdGF0aWMgaW50IHJ0Y3B1X2VuYWJsZShzdHJ1Y3Qg Y2xrICpjbGspCit7CisJLyogY29weSBjb2RlIGludG8gTUZSQU0gKi8KKwltZW1jcHkoKHZvaWQg KilTTUZSQU0sIHNoX2Jvb3RfY29kZSwgc2l6ZW9mKHNoX2Jvb3RfY29kZSkpOworCisJLyogc2V0 IFJULUNQVSByZXNldCB2ZWN0b3IgdG8gTUZSQU0gKi8KKwlfX3Jhd193cml0ZWwoU01GUkFNIHwg MHgwMSwgUkJBUik7CisKKwkgLyogYXNzZXJ0IFJULUNQVSByZXNldCAqLworCV9fcmF3X3dyaXRl bChfX3Jhd19yZWFkbChTUkNSMCkgfCAoMSA8PCAzMCksIFNSQ1IwKTsKKworCS8qIGVuYWJsZSBS VC1DUFUgY2xvY2sgKi8KKwlfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwoUkVTQ05UKSAmIH4oMSA8 PCA5KSwgUkVTQ05UKTsKKworCS8qIHdhaXQgZm9yIHJlc2V0ICovCisJbWRlbGF5KDEpOworCisJ LyogZW5hYmxlIE1GSVMgY2xvY2sgKi8KKwlfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwoU01TVFBD UjIpICYgfigxIDw8IDEzKSwgU01TVFBDUjIpOworCisJLyogbGV0IGdvIG9mIFJULUNQVSByZXNl dCAqLworCV9fcmF3X3dyaXRlbChfX3Jhd19yZWFkbChTUkNSMCkgJiB+KDEgPDwgMzApLCBTUkNS MCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcnRjcHVfZGlzYWJsZShzdHJ1Y3Qg Y2xrICpjbGspCit7CisJLyogZGlzYWJsZSBNRklTIGNsb2NrICovCisJX19yYXdfd3JpdGVsKF9f cmF3X3JlYWRsKFNNU1RQQ1IyKSAmIH4oMSA8PCAxMyksIFNNU1RQQ1IyKTsKKworCS8qIGRpc2Fi bGUgUlQtQ1BVIGNsb2NrICovCisJX19yYXdfd3JpdGVsKF9fcmF3X3JlYWRsKFJFU0NOVCkgfCAo MSA8PCA5KSwgUkVTQ05UKTsKK30KKworc3RhdGljIHN0cnVjdCBjbGtfb3BzIHJ0Y3B1X2Nsa19v cHMgPSB7CisJLnJlY2FsYwkJPSBmb2xsb3dwYXJlbnRfcmVjYWxjLAorCS5lbmFibGUJCT0gcnRj cHVfZW5hYmxlLAorCS5kaXNhYmxlCT0gcnRjcHVfZGlzYWJsZSwKK307CisKK3N0cnVjdCBjbGsg cnRjcHVfY2xrID0geworCS5vcHMJCT0gJnJ0Y3B1X2Nsa19vcHMsCisJLnBhcmVudAkJPSAmZGl2 NF9jbGtzW0RJVjRfSV0sCit9OworCitlbnVtIHsgTUlTQ19SVENQVSwKKyAgICAgICBNSVNDX05S IH07CisKK3N0YXRpYyBzdHJ1Y3QgY2xrICptaXNjX2Nsa3NbXSA9IHsKKwlbTUlTQ19SVENQVV0g PSAmcnRjcHVfY2xrLAorfTsKKwogI2RlZmluZSBDTEtERVZfQ09OX0lEKF9pZCwgX2NsaykgeyAu Y29uX2lkID0gX2lkLCAuY2xrID0gX2NsayB9CiAjZGVmaW5lIENMS0RFVl9ERVZfSUQoX2lkLCBf Y2xrKSB7IC5kZXZfaWQgPSBfaWQsIC5jbGsgPSBfY2xrIH0KICNkZWZpbmUgQ0xLREVWX0lDS19J RChfY2lkLCBfZGlkLCBfY2xrKSB7IC5jb25faWQgPSBfY2lkLCAuZGV2X2lkID0gX2RpZCwgLmNs ayA9IF9jbGsgfQpAQCAtNjQ1LDYgKzcyNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgY2xrX2xvb2t1cCBs b29rdXBzW10gPSB7CiAJQ0xLREVWX0RFVl9JRCgicjhhNjY1OTdfaGNkLjEiLCAmbXN0cF9jbGtz W01TVFA0MDZdKSwgLyogVVNCMSAqLwogCUNMS0RFVl9ERVZfSUQoInI4YTY2NTk3X3VkYy4xIiwg Jm1zdHBfY2xrc1tNU1RQNDA2XSksIC8qIFVTQjEgKi8KIAlDTEtERVZfREVWX0lEKCJzaF9rZXlz Yy4wIiwgJm1zdHBfY2xrc1tNU1RQNDAzXSksIC8qIEtFWVNDICovCisJQ0xLREVWX0RFVl9JRCgi dWlvX3BkcnZfZ2VuaXJxLjgiLCAmcnRjcHVfY2xrKSwgLyogUlQtQ1BVICovCiAKIAlDTEtERVZf SUNLX0lEKCJpY2siLCAic2gtbW9iaWxlLWhkbWkiLCAmZGl2Nl9yZXBhcmVudF9jbGtzW0RJVjZf SERNSV0pLAogCUNMS0RFVl9JQ0tfSUQoImlja2EiLCAic2hfZnNpMiIsICZkaXY2X3JlcGFyZW50 X2Nsa3NbRElWNl9GU0lBXSksCkBAIC02NzMsNiArNzUzLDkgQEAgdm9pZCBfX2luaXQgc2g3Mzcy X2Nsb2NrX2luaXQodm9pZCkKIAlmb3IgKGsgPSAwOyAhcmV0ICYmIChrIDwgQVJSQVlfU0laRShs YXRlX21haW5fY2xrcykpOyBrKyspCiAJCXJldCA9IGNsa19yZWdpc3RlcihsYXRlX21haW5fY2xr c1trXSk7CiAKKwlmb3IgKGsgPSAwOyAhcmV0ICYmIChrIDwgQVJSQVlfU0laRShtaXNjX2Nsa3Mp KTsgaysrKQorCQlyZXQgPSBjbGtfcmVnaXN0ZXIobWlzY19jbGtzW2tdKTsKKwogCWNsa2Rldl9h ZGRfdGFibGUobG9va3VwcywgQVJSQVlfU0laRShsb29rdXBzKSk7CiAKIAlpZiAoIXJldCkKLS0t IDAwMDEvYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9pbmNsdWRlL21hY2gvY29tbW9uLmgKKysrIHdv cmsvYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9pbmNsdWRlL21hY2gvY29tbW9uLmgJMjAxMS0wMy0x NyAxNDowMzowMy4wMDAwMDAwMDAgKzA5MDAKQEAgLTYsNiArNiw5IEBAIGV4dGVybiB2b2lkIHNo bW9iaWxlX3NldHVwX2NvbnNvbGUodm9pZCkKIGV4dGVybiB2b2lkIHNobW9iaWxlX3NlY29uZGFy eV92ZWN0b3Iodm9pZCk7CiBzdHJ1Y3QgY2xrOwogZXh0ZXJuIGludCBjbGtfaW5pdCh2b2lkKTsK K3N0cnVjdCBwbGF0Zm9ybV9kZXZpY2U7CitleHRlcm4gaW50IHNobW9iaWxlX21lbWNodW5rX3Nl dHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCisJCQkJICAgY2hhciAqbmFtZSwgdW5z aWduZWQgbG9uZyBtZW1zaXplKTsKIGV4dGVybiB2b2lkIHNobW9iaWxlX2hhbmRsZV9pcnFfaW50 YyhzdHJ1Y3QgcHRfcmVncyAqKTsKIGV4dGVybiB2b2lkIHNobW9iaWxlX2hhbmRsZV9pcnFfZ2lj KHN0cnVjdCBwdF9yZWdzICopOwogCkBAIC0yOCw2ICszMSw3IEBAIGV4dGVybiBzdHJ1Y3QgY2xr IHNoNzM3N19leHRhbDJfY2xrOwogZXh0ZXJuIHZvaWQgc2g3MzcyX2luaXRfaXJxKHZvaWQpOwog ZXh0ZXJuIHZvaWQgc2g3MzcyX2FkZF9lYXJseV9kZXZpY2VzKHZvaWQpOwogZXh0ZXJuIHZvaWQg c2g3MzcyX2FkZF9zdGFuZGFyZF9kZXZpY2VzKHZvaWQpOworZXh0ZXJuIHZvaWQgc2g3MzcyX3Jl c2VydmVfbWVtb3J5KHZvaWQpOwogZXh0ZXJuIHZvaWQgc2g3MzcyX2Nsb2NrX2luaXQodm9pZCk7 CiBleHRlcm4gdm9pZCBzaDczNzJfcGlubXV4X2luaXQodm9pZCk7CiBleHRlcm4gc3RydWN0IGNs ayBzaDczNzJfZXh0YWwxX2NsazsKLS0tIC9kZXYvbnVsbAorKysgd29yay9hcmNoL2FybS9tYWNo LXNobW9iaWxlL21lbWNodW5rLmMJMjAxMS0wMy0xNyAxNDowMzowNC4wMDAwMDAwMDAgKzA5MDAK QEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIFNILU1vYmlsZSAibWVtY2h1bmsiIC0gUGh5c2ljYWxs eSBjb250aWd1b3VzIG1lbW9yeSByZXNlcnZhdGlvbiBjb2RlCisgKgorICogQ29weXJpZ2h0IChD KSAyMDEwICBNYWdudXMgRGFtbQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBG b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg IDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9tZW1ibG9jay5o PgorI2luY2x1ZGUgPG1hY2gvY29tbW9uLmg+CisKK3N0YXRpYyBpbnQgX19pbml0IG1lbWNodW5r X3NldHVwKGNoYXIgKnN0cikKK3sKKwlyZXR1cm4gMTsgLyogYWNjZXB0IGFueXRoaW5nIHRoYXQg YmVnaW5zIHdpdGggIm1lbWNodW5rLiIgKi8KK30KK19fc2V0dXAoIm1lbWNodW5rLiIsIG1lbWNo dW5rX3NldHVwKTsKKworc3RhdGljIHZvaWQgX19pbml0IG1lbWNodW5rX2NtZGxpbmVfb3ZlcnJp ZGUoY2hhciAqbmFtZSwgdW5zaWduZWQgbG9uZyAqc2l6ZXApCit7CisJY2hhciAqcCA9IGJvb3Rf Y29tbWFuZF9saW5lOworCWludCBrID0gc3RybGVuKG5hbWUpOworCisJd2hpbGUgKChwID0gc3Ry c3RyKHAsICJtZW1jaHVuay4iKSkpIHsKKwkJcCArPSA5OyAvKiBzdHJsZW4oIm1lbWNodW5rLiIp ICovCisJCWlmICghc3RybmNtcChuYW1lLCBwLCBrKSAmJiBwW2tdID09ICc9JykgeworCQkJcCAr PSBrICsgMTsKKwkJCSpzaXplcCA9IG1lbXBhcnNlKHAsIE5VTEwpOworCQkJcHJfaW5mbygiJXM6 IGZvcmNpbmcgbWVtb3J5IGNodW5rIHNpemUgdG8gMHglMDhseFxuIiwKKwkJCQluYW1lLCAqc2l6 ZXApOworCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKK2ludCBfX2luaXQgc2htb2JpbGVfbWVtY2h1 bmtfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKKwkJCQkgICBjaGFyICpuYW1l LCB1bnNpZ25lZCBsb25nIG1lbXNpemUpCit7CisJc3RydWN0IHJlc291cmNlICpyOworCXU2NCBh ZGRyOworCisJciA9IHBkZXYtPnJlc291cmNlICsgcGRldi0+bnVtX3Jlc291cmNlcyAtIDE7CisJ aWYgKHItPmZsYWdzKSB7CisJCXByX3dhcm5pbmcoIiVzOiB1bmFibGUgdG8gZmluZCBlbXB0eSBz cGFjZSBmb3IgcmVzb3VyY2VcbiIsCisJCQluYW1lKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQor CisJbWVtY2h1bmtfY21kbGluZV9vdmVycmlkZShuYW1lLCAmbWVtc2l6ZSk7CisJaWYgKCFtZW1z aXplKQorCQlyZXR1cm4gMDsKKworCWFkZHIgPSBtZW1ibG9ja19hbGxvYyhtZW1zaXplLCBQQUdF X1NJWkUpOworCWlmIChhZGRyID09IH4odTY0KTApIHsKKwkJcHJfd2FybmluZygiJXM6IHVuYWJs ZSB0byBhbGxvY2F0ZSBtZW1vcnlcbiIsIG5hbWUpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJ bWVtYmxvY2tfZnJlZShhZGRyLCBtZW1zaXplKTsKKwltZW1ibG9ja19yZW1vdmUoYWRkciwgbWVt c2l6ZSk7CisKKwlyLT5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOworCXItPnN0YXJ0ID0gYWRkcjsK KwlyLT5lbmQgPSByLT5zdGFydCArIG1lbXNpemUgLSAxOworCXItPm5hbWUgPSBuYW1lOworCXJl dHVybiAwOworfQotLS0gMDAwMS9hcmNoL2FybS9tYWNoLXNobW9iaWxlL3NldHVwLXNoNzM3Mi5j CisrKyB3b3JrL2FyY2gvYXJtL21hY2gtc2htb2JpbGUvc2V0dXAtc2g3MzcyLmMJMjAxMS0wMy0x NyAxNDowMzowMy4wMDAwMDAwMDAgKzA5MDAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlIDxs aW51eC9pbnRlcnJ1cHQuaD4KICNpbmNsdWRlIDxsaW51eC9pcnEuaD4KICNpbmNsdWRlIDxsaW51 eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC91aW9fZHJpdmVyLmg+CiAjaW5j bHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgogI2luY2x1ZGUg PGxpbnV4L2lvLmg+CkBAIC0zMCw2ICszMSw3IEBACiAjaW5jbHVkZSA8bGludXgvc2hfaW50Yy5o PgogI2luY2x1ZGUgPGxpbnV4L3NoX3RpbWVyLmg+CiAjaW5jbHVkZSA8bWFjaC9oYXJkd2FyZS5o PgorI2luY2x1ZGUgPG1hY2gvY29tbW9uLmg+CiAjaW5jbHVkZSA8bWFjaC9zaDczNzIuaD4KICNp bmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgogI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KQEAg LTYwMSw2ICs2MDMsMzUgQEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgZG1hMl9kZXZp YwogCX0sCiB9OwogCisvKiBNRklTICovCitzdGF0aWMgc3RydWN0IHVpb19pbmZvIG1maXNfcGxh dGZvcm1fZGF0YSA9IHsKKwkubmFtZSA9ICJNRklTIiwKKwkudmVyc2lvbiA9ICIwIiwKKwkuaXJx ID0gZXZ0MmlycSgweDA5MjApLAorfTsKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBtZmlzX3Jl c291cmNlc1tdID0geworCVswXSA9IHsKKwkJLm5hbWUJPSAiTUZJUyIsCisJCS5zdGFydAk9IDB4 ZTZhNjAwMDAsCisJCS5lbmQJPSAweGU2YTdmZmZmLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX01F TSwKKwl9LAorCVsxXSA9IHsKKwkJLyogcGxhY2UgaG9sZGVyIGZvciBjb250aWd1b3VzIG1lbW9y eSAqLworCX0sCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBtZmlzX2Rldmlj ZSA9IHsKKwkubmFtZQkJPSAidWlvX3BkcnZfZ2VuaXJxIiwKKwkuaWQJCT0gOCwKKwkuZGV2ID0g eworCQkucGxhdGZvcm1fZGF0YQk9ICZtZmlzX3BsYXRmb3JtX2RhdGEsCisJfSwKKwkucmVzb3Vy Y2UJPSBtZmlzX3Jlc291cmNlcywKKwkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUobWZpc19y ZXNvdXJjZXMpLAorfTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnNoNzM3Ml9l YXJseV9kZXZpY2VzW10gX19pbml0ZGF0YSA9IHsKIAkmc2NpZjBfZGV2aWNlLAogCSZzY2lmMV9k ZXZpY2UsCkBAIC02MjAsOCArNjUxLDExIEBAIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpzaDczNzJfbGEKIAkmZG1hMF9kZXZpY2UsCiAJJmRtYTFfZGV2aWNlLAogCSZkbWEyX2Rldmlj ZSwKKwkmbWZpc19kZXZpY2UsCiB9OwogCit2b2lkIHNldF9ydGNwdV9iYXNlKHVuc2lnbmVkIGxv bmcgYmFzZSk7CisKIHZvaWQgX19pbml0IHNoNzM3Ml9hZGRfc3RhbmRhcmRfZGV2aWNlcyh2b2lk KQogewogCXBsYXRmb3JtX2FkZF9kZXZpY2VzKHNoNzM3Ml9lYXJseV9kZXZpY2VzLApAQCAtNjMx LDYgKzY2NSwxMyBAQCB2b2lkIF9faW5pdCBzaDczNzJfYWRkX3N0YW5kYXJkX2RldmljZXMoCiAJ CQkgICAgQVJSQVlfU0laRShzaDczNzJfbGF0ZV9kZXZpY2VzKSk7CiB9CiAKK3ZvaWQgX19pbml0 IHNoNzM3Ml9yZXNlcnZlX21lbW9yeSh2b2lkKQoreworCS8qIHJlc2VydmUgTUZJUyBtZW1vcnkg Zmlyc3QgdG8gcHV0IGl0IGF0IHRoZSB0b3Agb2YgbWVtb3J5ICovCisJc2htb2JpbGVfbWVtY2h1 bmtfc2V0dXAoJm1maXNfZGV2aWNlLCAibWZpcyIsIDY0IDw8IDIwKTsKKwlzZXRfcnRjcHVfYmFz ZSgobWZpc19kZXZpY2UucmVzb3VyY2UgKyAxKS0+c3RhcnQpOworfQorCiB2b2lkIF9faW5pdCBz aDczNzJfYWRkX2Vhcmx5X2RldmljZXModm9pZCkKIHsKIAllYXJseV9wbGF0Zm9ybV9hZGRfZGV2 aWNlcyhzaDczNzJfZWFybHlfZGV2aWNlcywK --0016e6ddab194fe10f049ea7ee30 Content-Type: application/x-gzip; name="linux-2.6.38-arm-shmobile-mackerel-sh-core-slave-20110317.config.gz" Content-Disposition: attachment; filename="linux-2.6.38-arm-shmobile-mackerel-sh-core-slave-20110317.config.gz" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gld9uyfm3 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 --0016e6ddab194fe10f049ea7ee30 Content-Type: text/x-csrc; charset=US-ASCII; name="rtcpu-loader-20110228.c" Content-Disposition: attachment; filename="rtcpu-loader-20110228.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_glda4ssk4 LyoKICogcnRjcHUtbG9hZGVyIC0gQVA0IFNIIENvcmUgTGludXggYmFja2luZyBjb2RlLCAyMDEx MDIyOCBNYWdudXMgRGFtbQogKgogKiBBIHNtYWxsIExpbnV4IHByb2dyYW0gdGhhdCBleGVjdXRl cyBhIFNIIExpbnV4IGtlcm5lbCBvbiB0aGUgUlQtQ1BVLgogKgogKiBDb21waWxlIGZvciBMaW51 eCBydW5uaW5nIG9uIHRoZSBBUk0gc2lkZSB1c2luZzoKICogJCBhcm0tY3Jvc3MtZ2NjIC1vIHJ0 Y3B1LWxvYWRlciBydGNwdS1sb2FkZXIuYwogKgogKiBJbmNsdWRlcyBjb2RlIGZyb20gdGhlIGxn dWVzdCwgbWFueSB0aGFua3MgdG8gUnVzdHkgUnVzc2VsbC4KICogRm9yIG1vcmUgaW5mbyBzZWUg bGludXgga2VybmVsIHNvdXJjZSBEb2N1bWVudGF0aW9uL2xndWVzdC9sZ3Vlc3QuYwogKgogKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQogKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBG bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+ CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8c3lzL3N0 YXQuaD4KI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiNpbmNsdWRlIDxmY250bC5oPgojaW5jbHVkZSA8 c3lzL3RpbWUuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL2lvY3RsLmg+ CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHRlcm1pb3MuaD4KCiNpbmNsdWRlIDxsaW51 eC9pZl90dW4uaD4KI2luY2x1ZGUgPG5ldC9pZi5oPgoKI2RlZmluZSBJUlFfRUFSTFlfQ09OU09M RSAwIC8qIG11c3QgbWF0Y2gga2VybmVsIGlycSBzZXR1cCAqLwojZGVmaW5lIElSUV9QT1dFUl9P RkYgMSAvKiBtdXN0IG1hdGNoIGtlcm5lbCBpcnEgc2V0dXAgKi8KI2RlZmluZSBJUlFfVElNRVIg MiAvKiBtdXN0IG1hdGNoIGtlcm5lbCBpcnEgc2V0dXAgKi8KI2RlZmluZSBJUlFfVklSVElPIDMg LyogbXVzdCBtYXRjaCBrZXJuZWwgaXJxIHNldHVwICovCiNkZWZpbmUgSVJRX0NPTlNPTEVfUlgg NAojZGVmaW5lIElSUV9DT05TT0xFX1RYIDUKI2RlZmluZSBJUlFfTkVUX1JYIDYKI2RlZmluZSBJ UlFfTkVUX1RYIDcKI2RlZmluZSBJUlFfTlIgMTYKCnN0YXRpYyBpbnQgZmdldHNfd2l0aF9vcGVu Y2xvc2UoY2hhciAqZm5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IG1heGxlbikgewogICAgICAgRklM RSAqZnA7CgogICAgICAgaWYgKChmcCA9IGZvcGVuKGZuYW1lLCAiciIpKSAhPSBOVUxMKSB7CiAg ICAgICAgICAgICAgIGZnZXRzKGJ1ZiwgbWF4bGVuLCBmcCk7CiAgICAgICAgICAgICAgIGZjbG9z ZShmcCk7CiAgICAgICAgICAgICAgIHJldHVybiBzdHJsZW4oYnVmKTsKICAgICAgIH0gZWxzZSB7 CiAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgIH0KfQoKc3RydWN0IHVpb19kZXZpY2Ug ewogICAgICAgY2hhciAqbmFtZTsKICAgICAgIGNoYXIgKnBhdGg7CiAgICAgICBpbnQgZmQ7Cn07 CgojZGVmaW5lIE1BWFVJT0lEUyAgMTAwCiNkZWZpbmUgTUFYTkFNRUxFTiAyNTYKCnN0YXRpYyBp bnQgbG9jYXRlX3Vpb19kZXZpY2UoY2hhciAqbmFtZSwgc3RydWN0IHVpb19kZXZpY2UgKnVkcCkK ewogICAgICAgY2hhciBmbmFtZVtNQVhOQU1FTEVOXSwgYnVmW01BWE5BTUVMRU5dOwogICAgICAg aW50IHVpb19pZCwgaTsKCiAgICAgICBmb3IgKHVpb19pZCA9IDA7IHVpb19pZCA8IE1BWFVJT0lE UzsgdWlvX2lkKyspIHsKICAgICAgICAgICAgICAgc3ByaW50ZihmbmFtZSwgIi9zeXMvY2xhc3Mv dWlvL3VpbyVkL25hbWUiLCB1aW9faWQpOwogICAgICAgICAgICAgICBpZiAoZmdldHNfd2l0aF9v cGVuY2xvc2UoZm5hbWUsIGJ1ZiwgTUFYTkFNRUxFTikgPCAwKQogICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICBpZiAoc3RybmNtcChuYW1lLCBidWYsIHN0cmxl bihuYW1lKSkgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgIH0KCiAg ICAgICBpZiAodWlvX2lkID49IE1BWFVJT0lEUykKICAgICAgICAgICAgICAgcmV0dXJuIC0xOwoK ICAgICAgIHVkcC0+bmFtZSA9IHN0cmR1cChidWYpOwogICAgICAgdWRwLT5wYXRoID0gc3RyZHVw KGZuYW1lKTsKICAgICAgIHVkcC0+cGF0aFtzdHJsZW4odWRwLT5wYXRoKSAtIDRdID0gJ1wwJzsK CiAgICAgICBzcHJpbnRmKGJ1ZiwgIi9kZXYvdWlvJWQiLCB1aW9faWQpOwogICAgICAgdWRwLT5m ZCA9IG9wZW4oYnVmLCBPX1JEV1J8T19TWU5DIC8qfCBPX05PTkJMT0NLKi8pOwoKICAgICAgIGlm ICh1ZHAtPmZkIDwgMCkgewogICAgICAgICAgICAgICBwZXJyb3IoIm9wZW4iKTsKICAgICAgICAg ICAgICAgcmV0dXJuIC0xOwogICAgICAgfQoKICAgICAgIHJldHVybiAwOwp9CgpzdHJ1Y3QgdWlv X21hcCB7CiAgICAgICB1bnNpZ25lZCBsb25nIGFkZHJlc3M7CiAgICAgICB1bnNpZ25lZCBsb25n IHNpemU7CiAgICAgICB2b2lkICppb21lbTsKfTsKCnN0YXRpYyBpbnQgc2V0dXBfdWlvX21hcChz dHJ1Y3QgdWlvX2RldmljZSAqdWRwLCBpbnQgbnIsIHN0cnVjdCB1aW9fbWFwICp1bXApCnsKICAg ICAgIGNoYXIgZm5hbWVbTUFYTkFNRUxFTl0sIGJ1ZltNQVhOQU1FTEVOXTsKIAogICAgICAgc3By aW50ZihmbmFtZSwgIiVzL21hcHMvbWFwJWQvYWRkciIsIHVkcC0+cGF0aCwgbnIpOwogICAgICAg aWYgKGZnZXRzX3dpdGhfb3BlbmNsb3NlKGZuYW1lLCBidWYsIE1BWE5BTUVMRU4pIDw9IDApCiAg ICAgICAgICAgICAgIHJldHVybiAtMTsKCiAgICAgICB1bXAtPmFkZHJlc3MgPSBzdHJ0b3VsKGJ1 ZiwgTlVMTCwgMCk7CgogICAgICAgc3ByaW50ZihmbmFtZSwgIiVzL21hcHMvbWFwJWQvc2l6ZSIs IHVkcC0+cGF0aCwgbnIpOwogICAgICAgaWYgKGZnZXRzX3dpdGhfb3BlbmNsb3NlKGZuYW1lLCBi dWYsIE1BWE5BTUVMRU4pIDw9IDApCiAgICAgICAgICAgICAgIHJldHVybiAtMTsKCiAgICAgICB1 bXAtPnNpemUgPSBzdHJ0b3VsKGJ1ZiwgTlVMTCwgMCk7CgogICAgICAgdW1wLT5pb21lbSA9IG1t YXAoMCwgdW1wLT5zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgUFJPVF9SRUFEfFBST1Rf V1JJVEUsIE1BUF9TSEFSRUQsCiAgICAgICAgICAgICAgICAgICAgICAgICB1ZHAtPmZkLCBuciAq IGdldHBhZ2VzaXplKCkpOwoKICAgICAgIGlmICh1bXAtPmlvbWVtID09IE1BUF9GQUlMRUQpCiAg ICAgICAgICAgICAgIHJldHVybiAtMTsKCiAgICAgICByZXR1cm4gMDsKfQoKc3RydWN0IHVpb19k ZXZpY2UgdWlvX2RldjsKc3RydWN0IHVpb19tYXAgdWlvX21taW8sIHVpb19tZW07Cgp0eXBlZGVm IHVuc2lnbmVkIGNoYXIgX191ODsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3UxNjsKdHlwZWRl ZiB1bnNpZ25lZCBsb25nIF9fX3UzMjsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX191NjQ7 CnN0cnVjdCBsZ3Vlc3RfZGV2aWNlX2Rlc2MgewoJLyogVGhlIGRldmljZSB0eXBlOiBjb25zb2xl LCBuZXR3b3JrLCBkaXNrIGV0Yy4gIFR5cGUgMCB0ZXJtaW5hdGVzLiAqLwoJX191OCB0eXBlOwoJ LyogVGhlIG51bWJlciBvZiB2aXJ0cXVldWVzIChmaXJzdCBpbiBjb25maWcgYXJyYXkpICovCglf X3U4IG51bV92cTsKCS8qCgkgKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIG9mIGZlYXR1cmUgYml0cy4g IE11bHRpcGx5IGJ5IDI6IG9uZSBmb3IgaG9zdAoJICogZmVhdHVyZXMgYW5kIG9uZSBmb3IgR3Vl c3QgYWNrbm93bGVkZ2VtZW50cy4KCSAqLwoJX191OCBmZWF0dXJlX2xlbjsKCS8qIFRoZSBudW1i ZXIgb2YgYnl0ZXMgb2YgdGhlIGNvbmZpZyBhcnJheSBhZnRlciB2aXJ0cXVldWVzLiAqLwoJX191 OCBjb25maWdfbGVuOwoJLyogQSBzdGF0dXMgYnl0ZSwgd3JpdHRlbiBieSB0aGUgR3Vlc3QuICov CglfX3U4IHN0YXR1czsKCV9fdTggY29uZmlnWzBdOwp9OwoKLypEOjEzNQogKiBUaGlzIGlzIGhv dyB3ZSBleHBlY3QgdGhlIGRldmljZSBjb25maWd1cmF0aW9uIGZpZWxkIGZvciBhIHZpcnRxdWV1 ZQogKiB0byBiZSBsYWlkIG91dCBpbiBjb25maWcgc3BhY2UuCiAqLwpzdHJ1Y3QgbGd1ZXN0X3Zx Y29uZmlnIHsKCS8qIFRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgdmlydGlvX3JpbmcgKi8K CV9fdTE2IG51bTsKCS8qIFRoZSBpbnRlcnJ1cHQgd2UgZ2V0IHdoZW4gc29tZXRoaW5nIGhhcHBl bnMuICovCglfX3UxNiBpcnE7CgkvKiBUaGUgcGFnZSBudW1iZXIgb2YgdGhlIHZpcnRpbyByaW5n IGZvciB0aGlzIGRldmljZS4gKi8KCV9fX3UzMiBwZm47Cn07Ci8qOiovCgojZGVmaW5lIFJJTkdf TlIgMjU2CgovKiBWaXJ0aW8gcmluZyBkZXNjcmlwdG9yczogMTYgYnl0ZXMuICBUaGVzZSBjYW4g Y2hhaW4gdG9nZXRoZXIgdmlhICJuZXh0Ii4gKi8Kc3RydWN0IHZyaW5nX2Rlc2MgewoJLyogQWRk cmVzcyAoZ3Vlc3QtcGh5c2ljYWwpLiAqLwoJX191NjQgYWRkcjsKCS8qIExlbmd0aC4gKi8KCV9f X3UzMiBsZW47CgkvKiBUaGUgZmxhZ3MgYXMgaW5kaWNhdGVkIGFib3ZlLiAqLwoJX191MTYgZmxh Z3M7CgkvKiBXZSBjaGFpbiB1bnVzZWQgZGVzY3JpcHRvcnMgdmlhIHRoaXMsIHRvbyAqLwoJX191 MTYgbmV4dDsKfTsKCnN0cnVjdCB2cmluZ19hdmFpbCB7CglfX3UxNiBmbGFnczsKCV9fdTE2IGlk eDsKCV9fdTE2IHJpbmdbXTsKfTsKCi8qIHUzMiBpcyB1c2VkIGhlcmUgZm9yIGlkcyBmb3IgcGFk ZGluZyByZWFzb25zLiAqLwpzdHJ1Y3QgdnJpbmdfdXNlZF9lbGVtIHsKCS8qIEluZGV4IG9mIHN0 YXJ0IG9mIHVzZWQgZGVzY3JpcHRvciBjaGFpbi4gKi8KCV9fX3UzMiBpZDsKCS8qIFRvdGFsIGxl bmd0aCBvZiB0aGUgZGVzY3JpcHRvciBjaGFpbiB3aGljaCB3YXMgdXNlZCAod3JpdHRlbiB0bykg Ki8KCV9fX3UzMiBsZW47Cn07CgpzdHJ1Y3QgdnJpbmdfdXNlZCB7CglfX3UxNiBmbGFnczsKCV9f dTE2IGlkeDsKCXZvbGF0aWxlIHN0cnVjdCB2cmluZ191c2VkX2VsZW0gcmluZ1tdOwp9OwoKc3Ry dWN0IHZyaW5nIHsKCXVuc2lnbmVkIGludCBudW07CgoJdm9sYXRpbGUgc3RydWN0IHZyaW5nX2Rl c2MgKmRlc2M7CgoJdm9sYXRpbGUgc3RydWN0IHZyaW5nX2F2YWlsICphdmFpbDsKCgl2b2xhdGls ZSBzdHJ1Y3QgdnJpbmdfdXNlZCAqdXNlZDsKfTsKCnN0YXRpYyBpbmxpbmUgdm9pZCB2cmluZ19p bml0KHZvbGF0aWxlIHN0cnVjdCB2cmluZyAqdnIsIHVuc2lnbmVkIGludCBudW0sCgkJCSAgICAg IHZvaWQgKnAsIHVuc2lnbmVkIGxvbmcgYWxpZ24pCnsKCXZyLT5udW0gPSBudW07Cgl2ci0+ZGVz YyA9IHA7Cgl2ci0+YXZhaWwgPSBwICsgbnVtKnNpemVvZihzdHJ1Y3QgdnJpbmdfZGVzYyk7Cgl2 ci0+dXNlZCA9ICh2b2lkICopKCgodW5zaWduZWQgbG9uZykmdnItPmF2YWlsLT5yaW5nW251bV0g KyBhbGlnbi0xKQoJCQkgICAgJiB+KGFsaWduIC0gMSkpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2ln bmVkIHZyaW5nX3NpemUodW5zaWduZWQgaW50IG51bSwgdW5zaWduZWQgbG9uZyBhbGlnbikKewoJ cmV0dXJuICgoc2l6ZW9mKHN0cnVjdCB2cmluZ19kZXNjKSAqIG51bSArIHNpemVvZihfX3UxNikg KiAoMiArIG51bSkKCQkgKyBhbGlnbiAtIDEpICYgfihhbGlnbiAtIDEpKQoJCSsgc2l6ZW9mKF9f dTE2KSAqIDIgKyBzaXplb2Yoc3RydWN0IHZyaW5nX3VzZWRfZWxlbSkgKiBudW07Cn0KCnN0cnVj dCBfX3ZxIHsKCXVuc2lnbmVkIGludCBsb2NhbDsKCXZvbGF0aWxlIHN0cnVjdCB2cmluZyB2cmlu ZzsKfTsKCnZvbGF0aWxlIHN0cnVjdCBfX3ZxIGNvbnNvbGVfaW47CnZvbGF0aWxlIHN0cnVjdCBf X3ZxIGNvbnNvbGVfb3V0OwoKdm9sYXRpbGUgc3RydWN0IF9fdnEgbmV0X2luOwp2b2xhdGlsZSBz dHJ1Y3QgX192cSBuZXRfb3V0OwoKdm9pZCBzZXR1cF92cSh2b2xhdGlsZSBzdHJ1Y3QgX192cSAq dnEsIHVuc2lnbmVkIGxvbmcgcGZuKQp7Cgl1bnNpZ25lZCBsb25nIG9mZnNldDsKCglvZmZzZXQg PSAocGZuIDw8IDEyKSAtIHVpb19tZW0uYWRkcmVzczsKCgl2cS0+bG9jYWwgPSAwOwoJbWVtc2V0 KHVpb19tZW0uaW9tZW0gKyBvZmZzZXQsIDAsIHZyaW5nX3NpemUoUklOR19OUiwgNDA5NikpOwoJ dnJpbmdfaW5pdCgmdnEtPnZyaW5nLCBSSU5HX05SLCB1aW9fbWVtLmlvbWVtICsgb2Zmc2V0LCA0 MDk2KTsKfQoKI2RlZmluZSB3bWIoKSBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIiA6IDogOiAibWVt b3J5IikKCmludCB2cV9kbyh2b2xhdGlsZSBzdHJ1Y3QgX192cSAqdnEsIGludCBpbnB1dCwgaW50 IG91dHB1dCkKewoJdm9sYXRpbGUgc3RydWN0IHZyaW5nICp2cmluZyA9ICZ2cS0+dnJpbmc7Cgl2 b2xhdGlsZSBzdHJ1Y3QgdnJpbmdfZGVzYyAqZGVzYzsKCXZvbGF0aWxlIHN0cnVjdCB2cmluZ191 c2VkX2VsZW0gKnVzZWQ7CglpbnQgaWR4ID0gdnJpbmctPmF2YWlsLT5pZHg7CglpbnQgaSwgbGVu OwoKCWRlc2MgPSB2cmluZy0+ZGVzYzsKCglpZiAodnEtPmxvY2FsID09IGlkeCkKCQlyZXR1cm4g MDsKCglpID0gdnEtPnZyaW5nLmF2YWlsLT5yaW5nW3ZxLT5sb2NhbCAlIHZxLT52cmluZy5udW1d OwoKCXdtYigpOwoJaWYgKG91dHB1dCkgewoJCXdyaXRlKDAsIChkZXNjW2ldLmFkZHIgLSB1aW9f bWVtLmFkZHJlc3MpCgkJICAgICAgKyB1aW9fbWVtLmlvbWVtLCBkZXNjW2ldLmxlbik7CgkJbGVu ID0gMDsKCX0KCglpZiAoaW5wdXQpIHsKCQl1bnNpZ25lZCBjaGFyIGluX2J1ZjsKCQlsZW4gPSBy ZWFkKDEsICZpbl9idWYsIDEpOwoJCWlmIChsZW4gPiAwKQoJCQkqKHVuc2lnbmVkIGNoYXIgKiko KGRlc2NbaV0uYWRkciAtIHVpb19tZW0uYWRkcmVzcykgKwoJCQkJCSAgIHVpb19tZW0uaW9tZW0p ID0gaW5fYnVmOwoKCQlpZiAobGVuIDw9IDApCgkJCXJldHVybiAtMTsKCX0KCgl3bWIoKTsKCgl1 c2VkID0gJnZyaW5nLT51c2VkLT5yaW5nW3ZyaW5nLT51c2VkLT5pZHggJSB2cmluZy0+bnVtXTsK CXVzZWQtPmlkID0gaTsKCXVzZWQtPmxlbiA9IGxlbjsKCgl3bWIoKTsKCgl2cmluZy0+dXNlZC0+ aWR4Kys7CgoJdnEtPmxvY2FsKys7CgoJcmV0dXJuIDE7Cn0KCnN0YXRpYyBpbnQgdnFfZmlyc3Qo dm9sYXRpbGUgc3RydWN0IF9fdnEgKnZxLAoJCSAgICB1bnNpZ25lZCBsb25nICphZGRycCwKCQkg ICAgaW50ICpsZW5wLCBpbnQgKmhlYWRwKQp7Cgl2b2xhdGlsZSBzdHJ1Y3QgdnJpbmcgKnZyaW5n ID0gJnZxLT52cmluZzsKCXZvbGF0aWxlIHN0cnVjdCB2cmluZ19kZXNjICpkZXNjOwoJaW50IGlk eCA9IHZyaW5nLT5hdmFpbC0+aWR4OwoJaW50IGk7CgoJZGVzYyA9IHZyaW5nLT5kZXNjOwoKCWlm ICh2cS0+bG9jYWwgPT0gaWR4KQoJCXJldHVybiAwOwoKCWkgPSB2cS0+dnJpbmcuYXZhaWwtPnJp bmdbdnEtPmxvY2FsICUgdnEtPnZyaW5nLm51bV07CgoJd21iKCk7CgoJKmFkZHJwID0gZGVzY1tp XS5hZGRyOwoJKmxlbnAgPSBkZXNjW2ldLmxlbjsKCSpoZWFkcCA9IGk7CgoJcmV0dXJuIDE7Cn0K CnN0YXRpYyBpbnQgdnFfbmV4dCh2b2xhdGlsZSBzdHJ1Y3QgX192cSAqdnEsCgkJICAgIHVuc2ln bmVkIGxvbmcgKmFkZHJwLAoJCSAgICBpbnQgKmxlbnAsIGludCAqY3VycnApCnsKCXZvbGF0aWxl IHN0cnVjdCB2cmluZyAqdnJpbmcgPSAmdnEtPnZyaW5nOwoJdm9sYXRpbGUgc3RydWN0IHZyaW5n X2Rlc2MgKmRlc2MgPSB2cmluZy0+ZGVzYzsKCWludCBpOwoKCS8qIGhhbmRsZSBsb29wZWQgZGVz Y3JpcHRvciAqLwoJaWYgKGRlc2NbKmN1cnJwXS5mbGFncyAmIDEpIHsKCQlpID0gZGVzY1sqY3Vy cnBdLm5leHQ7CgoJCSphZGRycCA9IGRlc2NbaV0uYWRkcjsKCQkqbGVucCA9IGRlc2NbaV0ubGVu OwoJCSpjdXJycCA9IGk7CgkJcmV0dXJuIDE7Cgl9CgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lk ICp1aW9fYWRkcih1bnNpZ25lZCBsb25nIGFkZHIpCnsKCXJldHVybiB1aW9fbWVtLmlvbWVtICsg KGFkZHIgLSB1aW9fbWVtLmFkZHJlc3MpOwp9CgpzdGF0aWMgdm9pZCB2cV91c2VkKHZvbGF0aWxl IHN0cnVjdCBfX3ZxICp2cSwgaW50IGxlbiwgaW50IGhlYWQpCnsKCXZvbGF0aWxlIHN0cnVjdCB2 cmluZyAqdnJpbmcgPSAmdnEtPnZyaW5nOwoJdm9sYXRpbGUgc3RydWN0IHZyaW5nX3VzZWRfZWxl bSAqdXNlZDsKCgl1c2VkID0gJnZyaW5nLT51c2VkLT5yaW5nW3ZyaW5nLT51c2VkLT5pZHggJSB2 cmluZy0+bnVtXTsKCXVzZWQtPmlkID0gaGVhZDsKCXVzZWQtPmxlbiA9IGxlbjsKCgl3bWIoKTsK Cgl2cmluZy0+dXNlZC0+aWR4Kys7CgoJdnEtPmxvY2FsKys7Cn0KCmludCB2cV9kb19uZXQodm9s YXRpbGUgc3RydWN0IF9fdnEgKnZxLCBpbnQgaW5wdXQsIGludCBvdXRwdXQpCnsKCXN0cnVjdCBp b3ZlYyBpb3ZbdnEtPnZyaW5nLm51bV07CglpbnQgc3VtID0gMDsKCXVuc2lnbmVkIGxvbmcgYWRk cjsKCWludCBsZW47CglpbnQgaGVhZDsKCWludCBjdXJyOwoJaW50IGssIGk7CgoJaW50IG4gPSAw OwoJaW50IG07CgoJaWYgKHZxX2ZpcnN0KHZxLCAmYWRkciwgJmxlbiwgJmhlYWQpKSB7CgoJCWN1 cnIgPSBoZWFkOwoJCWRvIHsKCQkJaW92W25dLmlvdl9iYXNlID0gdWlvX2FkZHIoYWRkcik7CgkJ CWlvdltuXS5pb3ZfbGVuID0gbGVuOwoJCQluKys7CgkJfSB3aGlsZSAodnFfbmV4dCh2cSwgJmFk ZHIsICZsZW4sICZjdXJyKSk7CgoJCWlmIChvdXRwdXQpIHsKCQkJc3VtID0gd3JpdGV2KG91dHB1 dCwgaW92LCBuKTsKCQkJbGVuID0gMDsKCQl9CgoJCWlmIChpbnB1dCkgewoJCQlzdW0gPSByZWFk dihpbnB1dCwgaW92LCBuKTsKCQkJaWYgKHN1bSA8PSAwKQoJCQkJcmV0dXJuIC0xOwoJCQlsZW4g PSBzdW07CgkJfQojaWYgMAoJCXByaW50ZigiaW92ICVkLyVkOiAlZCB2ZWN0b3JzIG9mIHRvdGFs ICVkIGJ5dGVzOlxuIiwKCQkgICAgICAgaW5wdXQsIG91dHB1dCwgbiwgc3VtKTsKCQltID0gMDsK CQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJICBwcmludGYoIiVkOiAiLCBpKTsKCQkgIGZv ciAoayA9IDA7IGsgPCBpb3ZbaV0uaW92X2xlbjsgaysrKSAKCQkgICAgaWYgKG0gPCBzdW0pIHsK CQkgICAgICBwcmludGYoIiUwMnggIiwgKih1bnNpZ25lZCBjaGFyICopKGlvdltpXS5pb3ZfYmFz ZSArIGspKTsKCQkgICAgICBtKys7CgkJICAgIH0KCgkJICBwcmludGYoIlxuIik7CgkJfQojZW5k aWYKCQl2cV91c2VkKHZxLCBsZW4sIGhlYWQpOwoJCXJldHVybiAxOwoJfQoKCXJldHVybiAwOwp9 Cgp1bnNpZ25lZCBsb25nIHNldHVwX3ZpcnRpb19kZXZpY2Uodm9pZCAqYnVmLCBpbnQgdHlwZSwK CQkJCSAgaW50IGlycV9pbiwgdW5zaWduZWQgbG9uZyBwZm5faW4sCgkJCQkgIHZvbGF0aWxlIHN0 cnVjdCBfX3ZxICp2cV9pbiwKCQkJCSAgaW50IGlycV9vdXQsIHVuc2lnbmVkIGxvbmcgcGZuX291 dCwKCQkJCSAgdm9sYXRpbGUgc3RydWN0IF9fdnEgKnZxX291dCkKewoJc3RydWN0IGxndWVzdF9k ZXZpY2VfZGVzYyAqZGQgPSBidWY7CglzdHJ1Y3QgbGd1ZXN0X3ZxY29uZmlnIHZxMCwgdnExOwoK CWRkLT50eXBlID0gdHlwZTsgLyogVklSVElPX0lEXy4uLiAqLwoJZGQtPm51bV92cSA9IDI7CgoJ bWVtc2V0KCZ2cTAsIDAsIHNpemVvZih2cTApKTsKCXZxMC5udW0gPSBSSU5HX05SOwoJdnEwLmly cSA9IGlycV9pbjsKCXZxMC5wZm4gPSBwZm5faW47CgltZW1jcHkoYnVmICsgc2l6ZW9mKCpkZCks ICZ2cTAsIHNpemVvZih2cTApKTsKCXNldHVwX3ZxKHZxX2luLCB2cTAucGZuKTsKCgltZW1zZXQo JnZxMSwgMCwgc2l6ZW9mKHZxMSkpOwoJdnExLm51bSA9IFJJTkdfTlI7Cgl2cTEuaXJxID0gaXJx X291dDsKCXZxMS5wZm4gPSBwZm5fb3V0OwoJbWVtY3B5KGJ1ZiArIHNpemVvZigqZGQpICsgc2l6 ZW9mKHZxMCksICZ2cTEsIHNpemVvZih2cTEpKTsKCXNldHVwX3ZxKHZxX291dCwgdnExLnBmbik7 CgoJcmV0dXJuIHNpemVvZigqZGQpICsgc2l6ZW9mKHZxMCkgKyBzaXplb2YodnExKTsKfQoKc3Rh dGljIGludCBzZXR1cF90dW4oY2hhciAqbmFtZSkKewoJc3RydWN0IGlmcmVxIGlmcjsKCWludCBm ZCwgZXJyOwoJY2hhciAqY2xvbmVkZXYgPSAiL2Rldi9uZXQvdHVuIjsKCglpZiAoKGZkID0gb3Bl bihjbG9uZWRldiwgT19SRFdSKSkgPCAwKQoJCXJldHVybiAwOwoKCW1lbXNldCgmaWZyLCAwLCBz aXplb2YoaWZyKSk7CglpZnIuaWZyX2ZsYWdzID0gSUZGX1RBUCB8IElGRl9OT19QSSB8IElGRl9W TkVUX0hEUjsKCXN0cm5jcHkoaWZyLmlmcl9uYW1lLCBuYW1lLCBJRk5BTVNJWik7CgoJaWYgKChl cnIgPSBpb2N0bChmZCwgVFVOU0VUSUZGLCAodm9pZCAqKSAmaWZyKSkgPCAwKSB7CgkJY2xvc2Uo ZmQpOwoJCXJldHVybiAwOwoJfQoJcmV0dXJuIGZkOwp9CgovKiBUaGUgb3JpZ2luYWwgdHR5IHNl dHRpbmdzIHRvIHJlc3RvcmUgb24gZXhpdC4gKi8Kc3RhdGljIHN0cnVjdCB0ZXJtaW9zIG9yaWdf dGVybTsKCnN0YXRpYyB2b2lkIGNsZWFudXBfZGV2aWNlcyh2b2lkKQp7CgoJLyogSWYgd2Ugc2F2 ZWQgb2ZmIHRoZSBvcmlnaW5hbCB0ZXJtaW5hbCBzZXR0aW5ncywgcmVzdG9yZSB0aGVtIG5vdy4g Ki8KCWlmIChvcmlnX3Rlcm0uY19sZmxhZyAmIChJU0lHfElDQU5PTnxFQ0hPKSkKCQl0Y3NldGF0 dHIoU1RESU5fRklMRU5PLCBUQ1NBTk9XLCAmb3JpZ190ZXJtKTsKfQoKc3RhdGljIHZvaWQgZHVt cF9wZW5kaW5nKGNoYXIgKnN0ciwgdW5zaWduZWQgbG9uZyAqcGVuZGluZykKewojaWYgMAoJaW50 IGs7CgkKCXByaW50ZigiJXMgIiwgc3RyKTsKCWZvciAoayA9IDA7IGsgPCBJUlFfTlI7IGsrKykK CQlwcmludGYoIiVkICIsIHBlbmRpbmdba10pOwoJcHJpbnRmKCJcbiIpOwojZW5kaWYKfQoKc3Rh dGljIHN0cnVjdCB0aW1ldmFsIHNlbGVjdF90aW1lOwpzdGF0aWMgc3RydWN0IHRpbWV2YWwgKnNl bGVjdF90aW1ldmFsOyAvKiBOVUxMIC0gYWx3YXlzIGJsb2NraW5nIGJ5IGRlZmF1bHQgKi8KCnN0 YXRpYyBzdHJ1Y3QgdGltZXZhbCBsYXN0X3RpbWU7CnN0YXRpYyBzdHJ1Y3QgdGltZXZhbCBuZXh0 X3RpbWU7CgpzdGF0aWMgdm9pZCB1cGRhdGVfbmV4dF90aW1lKHZvaWQpCnsKCW5leHRfdGltZS50 dl91c2VjICs9IDEwMDAwOwoKCWlmIChuZXh0X3RpbWUudHZfdXNlYyAvIDEwMDAwMDApIHsKCQlu ZXh0X3RpbWUudHZfdXNlYyAlPSAxMDAwMDAwOwoJCW5leHRfdGltZS50dl9zZWMgKz0gMTsKCX0K fQoKc3RhdGljIHZvaWQgdXBkYXRlX2xhc3RfdGltZSh2b2lkKQp7CglsYXN0X3RpbWUgPSBuZXh0 X3RpbWU7Cgl1cGRhdGVfbmV4dF90aW1lKCk7Cn0KCnN0YXRpYyB2b2lkIGluaXRfdGltZXIodm9p ZCkKewoJZ2V0dGltZW9mZGF5KCZsYXN0X3RpbWUsIE5VTEwpOwoJbmV4dF90aW1lID0gbGFzdF90 aW1lOwoJdXBkYXRlX25leHRfdGltZSgpOwoKCXNlbGVjdF90aW1ldmFsID0gJnNlbGVjdF90aW1l Owp9CgpzdGF0aWMgaW50IHBlbmRpbmdfdGltZXIodm9pZCkKewoJc3RydWN0IHRpbWV2YWwgbm93 OwoKCWdldHRpbWVvZmRheSgmbm93LCBOVUxMKTsKCglpZiAoKG5vdy50dl9zZWMgPj0gbmV4dF90 aW1lLnR2X3NlYykgfHwKCSAgICAoKG5vdy50dl9zZWMgPT0gbmV4dF90aW1lLnR2X3NlYykgJiYK CSAgICAgKG5vdy50dl91c2VjID49IG5leHRfdGltZS50dl91c2VjKSkpIHsKCQl1cGRhdGVfbGFz dF90aW1lKCk7CgkJcmV0dXJuIDE7Cgl9CgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lkIHVwZGF0 ZV90aW1lb3V0KHZvaWQpCnsKCXN0cnVjdCB0aW1ldmFsIG5vdzsKCWludCB1c2VjOwoKCWdldHRp bWVvZmRheSgmbm93LCBOVUxMKTsKCglpZiAobmV4dF90aW1lLnR2X3NlYyA+IG5vdy50dl9zZWMp IHsKCQl1c2VjID0gKG5leHRfdGltZS50dl9zZWMgLSBub3cudHZfc2VjKSAqIDEwMDAwMDA7CgkJ dXNlYyArPSBuZXh0X3RpbWUudHZfdXNlYyAtIG5vdy50dl91c2VjOwoJfQoJZWxzZSB7CgkJaWYg KG5leHRfdGltZS50dl91c2VjID4gbm93LnR2X3VzZWMpCgkJCXVzZWMgPSBuZXh0X3RpbWUudHZf dXNlYyAtIG5vdy50dl91c2VjOwoJCWVsc2UKCQkJdXNlYyA9IDA7Cgl9CgoJc2VsZWN0X3RpbWUu dHZfc2VjID0gMDsKCXNlbGVjdF90aW1lLnR2X3VzZWMgPSB1c2VjICUgMTAwMDAwMDsKfQoKaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewoJaW50IHJldDsKCXVuc2lnbmVkIGxvbmcg b2Zmc2V0ID0gMDsKCWludCB0dW5fZmQgPSAwOwoKCWlmIChhcmdjIDwgMikgewoJCWZwcmludGYo c3RkZXJyLCAidXNhZ2U6ICVzIHNoLWJpbmFyeSBbb2Zmc2V0XVxuIiwgYXJndlswXSk7CgkJcmV0 dXJuIDE7Cgl9CgoJcmV0ID0gbG9jYXRlX3Vpb19kZXZpY2UoIk1GSVMiLCAmdWlvX2Rldik7Cglp ZiAocmV0IDwgMCkKCQlyZXR1cm4gcmV0OwogICAgICAgCglyZXQgPSBzZXR1cF91aW9fbWFwKCZ1 aW9fZGV2LCAwLCAmdWlvX21taW8pOwoJaWYgKHJldCA8IDApCgkJcmV0dXJuIHJldDsKCglyZXQg PSBzZXR1cF91aW9fbWFwKCZ1aW9fZGV2LCAxLCAmdWlvX21lbSk7CglpZiAocmV0IDwgMCkKCQly ZXR1cm4gcmV0OwoKCWlmIChhcmdjID49IDMpIHsKCQlvZmZzZXQgPSBzdHJ0b3VsKGFyZ3ZbMl0s IE5VTEwsIDApOwoKCQkvKiBmaWxsIHRoZSB1cCB0aGUgb2Zmc2V0IHdpbmRvdyB3aXRoIEFERCBv cGNvZGVzICovCgkJbWVtc2V0KHVpb19tZW0uaW9tZW0sIDB4M2MsIG9mZnNldCk7Cgl9CgoJLyog SWYgd2UgY2FuIHNhdmUgdGhlIGluaXRpYWwgc3RhbmRhcmQgaW5wdXQgc2V0dGluZ3MuLi4gKi8K CWlmICh0Y2dldGF0dHIoU1RESU5fRklMRU5PLCAmb3JpZ190ZXJtKSA9PSAwKSB7CgkJc3RydWN0 IHRlcm1pb3MgdGVybSA9IG9yaWdfdGVybTsKCgkJLyogSWYgd2UgZXhpdCB0aGlzIHJlc3RvcmVz IHRoZSB0dHkuICovCgkJYXRleGl0KGNsZWFudXBfZGV2aWNlcyk7CgkJLyoKCQkgKiBUaGVuIHdl IHR1cm4gb2ZmIGVjaG8sIGxpbmUgYnVmZmVyaW5nIGFuZCBeQyBldGM6IFdlIHdhbnQgYQoJCSAq IHJhdyBpbnB1dCBzdHJlYW0gdG8gdGhlIEd1ZXN0LgoJCSAqLwoJCXRlcm0uY19sZmxhZyAmPSB+ KElTSUd8SUNBTk9OfEVDSE8pOwoJCXRjc2V0YXR0cihTVERJTl9GSUxFTk8sIFRDU0FOT1csICZ0 ZXJtKTsKCX0KCgl7CgkJaW50IGZkID0gb3Blbihhcmd2WzFdLCBPX1JET05MWSk7CgkJaW50IG47 CgoJCWlmIChmZCA8IDApIHsKCQkJcGVycm9yKCJvcGVuIik7CgkJCXJldHVybiAtMTsKCQl9CgoJ CW4gPSByZWFkKGZkLCB1aW9fbWVtLmlvbWVtICsgb2Zmc2V0LCB1aW9fbWVtLnNpemUgLSBvZmZz ZXQpOwoJCWlmIChuIDw9IDApIHsKCQkJcGVycm9yKCJyZWFkIik7CgkJCXJldHVybiAtMTsKCQl9 Cgl9CgoJLyogQ2xlYXIgcGVuZGluZyBpbnRlcnJ1cHRzIGluIE1GSVMgKi8KCXsKCQl1bnNpZ25l ZCBsb25nICpwID0gKHVpb19tbWlvLmlvbWVtICsgMHgxNCk7IC8qIG1maXNlaWNyICovCgoJCSpw ID0gMDsKCX0KCgkvKiBFbmFibGUgaW50ZXJydXB0IGluIFVJTyBkcml2ZXIgKi8KCXsKCQl1bnNp Z25lZCBsb25nIGVuYWJsZSA9IDE7CgoJCXdyaXRlKHVpb19kZXYuZmQsICZlbmFibGUsIHNpemVv Zih1X2xvbmcpKTsKCX0KCgkvKiBTZXR1cCBsZ3Vlc3QgVklSVElPIGRldmljZSBkZXNjcmlwdG9y IGF0IHRvcCAxTSBvZiBtZW1vcnkuCgkgKiBUaGUga2VybmVsIG11c3QgaGF2ZSBhIG1hdGNoaW5n IGVuZC1vZi1tZW1vcnkgc2V0dXAsCgkgKiBlaXRoZXIgdXNpbmcgbWVtPTYzTSBrZXJuZWwgY29t bWFuZCBsaW5lIG9wdGlvbiBvcgoJICogdXNpbmcgQ09ORklHX01FTU9SWV9TSVpFPTB4MDNmMDAw MDAgKG9uIGEgNjRNIHN5c3RlbSkuCiAJICovCgoJewoJCXVuc2lnbmVkIGxvbmcgdG9wX29mZnNl dCA9IDEgPDwgMjA7IC8qIDFNIGZvciB2aXJ0aW8gKi8KCQl1bnNpZ25lZCBsb25nIG1heF9wZm47 CgkJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CgoJCW1heF9wZm4gPSAodWlvX21lbS5hZGRyZXNzICsg dWlvX21lbS5zaXplIC0gdG9wX29mZnNldCkgPj4gMTI7CgkJb2Zmc2V0ID0gKG1heF9wZm4gPDwg MTIpIC0gdWlvX21lbS5hZGRyZXNzOwoKCQkvKiBjbGVhciB0aGUgcGFnZSB0byBiZWdpbiB3aXRo ICovCgkJbWVtc2V0KHVpb19tZW0uaW9tZW0gKyBvZmZzZXQsIDB4MDAsIDQwOTYpOwoKCQkvKiBz ZXR1cCBjb25zb2xlIGRldmljZSAqLwoJCW9mZnNldCArPSBzZXR1cF92aXJ0aW9fZGV2aWNlKHVp b19tZW0uaW9tZW0gKyBvZmZzZXQsCgkJCQkJICAgICAgMywgLyogVklSVElPX0lEX0NPTlNPTEUg Ki8KCQkJCQkgICAgICBJUlFfQ09OU09MRV9SWCwKCQkJCQkgICAgICBtYXhfcGZuICsgMTYsICZj b25zb2xlX2luLAoJCQkJCSAgICAgIElSUV9DT05TT0xFX1RYLAoJCQkJCSAgICAgIG1heF9wZm4g KyAzMiwgJmNvbnNvbGVfb3V0KTsKCgkJLyogc2V0dXAgbmV0d29yayBkZXZpY2UgaWYgcG9zc2li bGUgKi8KCQl0dW5fZmQgPSBzZXR1cF90dW4oInRhcDAiKTsKCQlpZiAodHVuX2ZkKSB7CgkJCXNl dHVwX3ZpcnRpb19kZXZpY2UodWlvX21lbS5pb21lbSArIG9mZnNldCwKCQkJCQkgICAgMSwgLyog VklSVElPX0lEX05FVCAqLwoJCQkJCSAgICBJUlFfTkVUX1JYLAoJCQkJCSAgICBtYXhfcGZuICsg NDgsICZuZXRfaW4sCgkJCQkJICAgIElSUV9ORVRfVFgsCgkJCQkJICAgIG1heF9wZm4gKyA2NCwg Jm5ldF9vdXQpOwoJCX0KCX0KCgl7CgkJdW5zaWduZWQgbG9uZyAqbWZpc2VpY3IgPSB1aW9fbW1p by5pb21lbSArIDB4MTQ7CgkJdW5zaWduZWQgbG9uZyAqbWZpc2lpY3IgPSB1aW9fbW1pby5pb21l bSArIDB4MTA7CgkJdW5zaWduZWQgbG9uZyAqYTJzX2VuYWJsZWQgPSB1aW9fbW1pby5pb21lbSAr IDB4MTAxMDA7CgkJdW5zaWduZWQgbG9uZyAqYTJzX3BlbmRpbmcgPSB1aW9fbW1pby5pb21lbSAr IDB4MTAyMDA7CgkJdW5zaWduZWQgbG9uZyAqczJhX3BlbmRpbmcgPSB1aW9fbW1pby5pb21lbSAr IDB4MTAzMDA7CgkJaW50IGEyc19pcnEsIHMyYV9pcnE7CgkJaW50IHRpbWVyX2VuYWJsZWQgPSAw OwoJCWZkX3NldCByZmRzOwoJCWludCByZXQ7CgkJaW50IGhpX2ZkOwoJCWludCB0bXA7CgoJCS8q IGNsZWFyIHNvZnQgaW50ZXJydXB0IGRhdGEgc3RydWN0dXJlcyAqLwoJCW1lbXNldChhMnNfZW5h YmxlZCwgMCwgMHgxMDApOwoJCW1lbXNldChhMnNfcGVuZGluZywgMCwgMHgxMDApOwoJCW1lbXNl dChzMmFfcGVuZGluZywgMCwgMHgxMDApOwoKCQkvKiBCb290IFJULUNQVSBieSBnZW5lcmF0aW5n IE1GSSBJUlEgdG8gUlQtQ1BVICovCgkJKm1maXNpaWNyID0gMTsKCgkJd2hpbGUgKDEpIHsKCQkJ RkRfWkVSTygmcmZkcyk7CgkJCUZEX1NFVCh1aW9fZGV2LmZkLCAmcmZkcyk7CgkJCUZEX1NFVCgx LCAmcmZkcyk7CgkJCWhpX2ZkID0gdWlvX2Rldi5mZDsKCQkJaWYgKHR1bl9mZCkKCQkJCUZEX1NF VCh0dW5fZmQsICZyZmRzKTsKCgkJCWlmICh0dW5fZmQgPiBoaV9mZCkKCQkJCWhpX2ZkID0gdHVu X2ZkOwoKCQkJcmV0ID0gc2VsZWN0KGhpX2ZkICsgMSwgJnJmZHMsIE5VTEwsIE5VTEwsCgkJCQkg ICAgIHNlbGVjdF90aW1ldmFsKTsKCgkJCWEyc19pcnEgPSBzMmFfaXJxID0gMDsKCgkJCS8qIGlu Y29taW5nIGRhdGEgZnJvbSBVSU8gKi8KCQkJaWYgKHJldCAmJiBGRF9JU1NFVCh1aW9fZGV2LmZk LCAmcmZkcykpIHsKCQkJCXVuc2lnbmVkIGxvbmcgZW5hYmxlID0gMTsKCQkJCXVuc2lnbmVkIGxv bmcgbl9wZW5kaW5nOwoJCQkJcmVhZCh1aW9fZGV2LmZkLCAmbl9wZW5kaW5nLCBzaXplb2YodV9s b25nKSk7CgkJCQlkdW1wX3BlbmRpbmcoInMyYSIsIHMyYV9wZW5kaW5nKTsKCQkJCSptZmlzZWlj ciA9IDA7CgkJCQl3cml0ZSh1aW9fZGV2LmZkLCAmZW5hYmxlLCBzaXplb2YodV9sb25nKSk7CgkJ CQlzMmFfaXJxID0gMTsKCQkJfQoKCQkJLyogaW5jb21pbmcgZGF0YSBmcm9tIHN0ZGluICovCgkJ CWlmIChyZXQgJiYgRkRfSVNTRVQoMSwgJnJmZHMpKSB7CgkJCQl2cV9kbygmY29uc29sZV9pbiwg MSwgMCk7CgkJCQlhMnNfcGVuZGluZ1tJUlFfQ09OU09MRV9SWF0gPSAxOwoJCQkJYTJzX2lycSB8 PSBhMnNfZW5hYmxlZFtJUlFfQ09OU09MRV9SWF07CgkJCX0KCgkJCS8qIGluY29taW5nIGRhdGEg ZnJvbSB0aGUgbmV0d29yayAqLwoJCQlpZiAocmV0ICYmIHR1bl9mZCAmJiBGRF9JU1NFVCh0dW5f ZmQsICZyZmRzKSkgewoJCQkJaWYgKHZxX2RvX25ldCgmbmV0X2luLCB0dW5fZmQsIDApKSB7CgkJ CQkJYTJzX3BlbmRpbmdbSVJRX05FVF9SWF0gPSAxOwoJCQkJCWEyc19pcnEgfD0gYTJzX2VuYWJs ZWRbSVJRX05FVF9SWF07CgkJCQl9CgkJCX0KCgkJCS8qIG9ubHkgZ2VuZXJhdGUgdGltZXIgdGlj a3MgYWZ0ZXIgcmVxdWVzdGVkIGJ5IHNsYXZlICovCgkJCWlmIChzMmFfaXJxICYmIHMyYV9wZW5k aW5nW0lSUV9USU1FUl0pIHsKCQkJCXMyYV9wZW5kaW5nW0lSUV9USU1FUl0gPSAwOwoJCQkJaWYg KCF0aW1lcl9lbmFibGVkKSB7CgkJCQkJaW5pdF90aW1lcigpOwoJCQkJCXRpbWVyX2VuYWJsZWQg PSAxOwoJCQkJfQoJCQl9CgoJCQlpZiAodGltZXJfZW5hYmxlZCAmJiBwZW5kaW5nX3RpbWVyKCkp IHsKCQkJCWEyc19wZW5kaW5nW0lSUV9USU1FUl0gPSAxOwoJCQkJYTJzX2lycSB8PSBhMnNfZW5h YmxlZFtJUlFfVElNRVJdOwoJCQl9CgoJCQlpZiAoczJhX2lycSAmJiBzMmFfcGVuZGluZ1tJUlFf RUFSTFlfQ09OU09MRV0pIHsKCQkJCXByaW50ZigiJWMiLCBzMmFfcGVuZGluZ1tJUlFfRUFSTFlf Q09OU09MRV0pOwoJCQkJczJhX3BlbmRpbmdbSVJRX0VBUkxZX0NPTlNPTEVdID0gMDsKCQkJfQoK CQkJaWYgKHMyYV9pcnEgJiYgczJhX3BlbmRpbmdbSVJRX0NPTlNPTEVfVFhdKSB7CgkJCQlzMmFf cGVuZGluZ1tJUlFfQ09OU09MRV9UWF0gPSAwOwoJCQkJd2hpbGUgKHZxX2RvKCZjb25zb2xlX291 dCwgMCwgMSkpCgkJCQkgIDsKCgkJCQlhMnNfcGVuZGluZ1tJUlFfQ09OU09MRV9UWF0gPSAxOwoJ CQkJYTJzX2lycSB8PSBhMnNfZW5hYmxlZFtJUlFfQ09OU09MRV9UWF07CgkJCX0KCgkJCWlmIChz MmFfaXJxICYmIHMyYV9wZW5kaW5nW0lSUV9ORVRfVFhdICYmIHR1bl9mZCkgewoJCQkJczJhX3Bl bmRpbmdbSVJRX05FVF9UWF0gPSAwOwoKCQkJCXdoaWxlICh2cV9kb19uZXQoJm5ldF9vdXQsIDAs IHR1bl9mZCkpCgkJCQkJOwoKCQkJCWEyc19wZW5kaW5nW0lSUV9ORVRfVFhdID0gMTsKCQkJCWEy c19pcnEgfD0gYTJzX2VuYWJsZWRbSVJRX05FVF9UWF07CgkJCX0KCgkJCWlmIChzMmFfaXJxICYm IHMyYV9wZW5kaW5nW0lSUV9QT1dFUl9PRkZdKSB7CgkJCQlzMmFfcGVuZGluZ1tJUlFfUE9XRVJf T0ZGXSA9IDA7CgkJCQlleGl0KDApOwoJCQl9CgoJCQkvKiB0cmlnZ2VyIFJULUNQVSBJUlEgKi8K CQkJaWYgKGEyc19pcnEpIHsKCQkJCWR1bXBfcGVuZGluZygiYTJzIiwgYTJzX3BlbmRpbmcpOwoJ CQkJKm1maXNpaWNyID0gMTsKCQkJfQoKCQkJdXBkYXRlX3RpbWVvdXQoKTsKCQl9CgkJCgl9CgoJ cmV0dXJuIDA7Cn0K --0016e6ddab194fe10f049ea7ee30--