From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.mizi.com ([61.107.31.33]) by pentafluge.infradead.org with esmtp (Exim 4.14 #3 (Red Hat Linux)) id 19lI5b-0005nN-Dg for ; Sat, 09 Aug 2003 02:00:11 +0100 Message-ID: <3F344780.8020803@mizi.com> Date: Sat, 09 Aug 2003 09:59:44 +0900 From: SeonKon Choi MIME-Version: 1.0 To: MTD References: <3F336DA8.4040706@elsoft.ch> Content-Type: multipart/mixed; boundary="------------060802010002010508030700" Subject: Re: Tips and Tricks for S3C2410 NAND controller? Reply-To: bushi@mizi.com List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , This is a multi-part message in MIME format. --------------060802010002010508030700 Content-Type: text/plain; charset=EUC-KR Content-Transfer-Encoding: 7bit > Hello > > I have written a hardware driver for the NAND controller built in > Samsung's S3C2410 SoC. I followed the instruction on > http://linux-mtd.infradead.org/tech/nand.html to implement it but it > doesn't seem to work correctly. > > Does anybody have some tricks or ideas what needs to be specially > observed when using this controller? > > TIA > > Dave > > > > ______________________________________________________ > Linux MTD discussion mailing list > http://lists.infradead.org/mailman/listinfo/linux-mtd/ Hi, attached file is my implementation against with MTD CVS Jul.06.2003. ( ignore the BONFS dependency in source code. it's a read-only block-device layer that support the bad-block-management on NAND flash for general filesystem such as cramfs, ... ) my boss says, "do not any technical-support about these. just open the source." Bushi --------------060802010002010508030700 Content-Type: text/plain; name="nand_s3c2410.c" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="nand_s3c2410.c" LyoKICogTkFORCBjb250cm9sbGVyIG9uIFNBTVNVTkcgUzNDMjQxMAogKgogKiAgYnVzaGlA bWl6aS5jb20KICoKICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZS4gU2VlIHRo ZSBmaWxlIENPUFlJTkcgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQog KiBmb3IgbW9yZSBkZXRhaWxzLgogKi8KCiNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiNpbmNs dWRlIDxsaW51eC9zbGFiLmg+CiNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KI2luY2x1ZGUg PGxpbnV4L210ZC9tdGQuaD4KI2luY2x1ZGUgPGxpbnV4L210ZC9uYW5kLmg+CiNpbmNsdWRl IDxsaW51eC9tdGQvcGFydGl0aW9ucy5oPgojaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KI2lu Y2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+CiNpbmNsdWRlIDxhc20vc2l6ZXMuaD4KCnN0 YXRpYyBzdHJ1Y3QgbXRkX2luZm8gKnMzYzI0MTBfbmFuZF9tdGQgPSBOVUxMOwoKLyoKICog aWYgeW91IHVzZSB0aGUgQk9OLAogKiAgdGhlIHBhcnRpdGlvbiB0YWJsZSBmb3IgTVREIGJs a2RldiB3aWxsIGJlIGdlbmVyYXRlZCBieSAiYm9uX2NoZWNrX210ZCgpIi4KICovCiNpZmRl ZiBDT05GSUdfTVREX05BTkRfQk9ORlMKc3RhdGljIGludCBtdGRfbnVtID0gMDsKc3RhdGlj IHN0cnVjdCBtdGRfcGFydGl0aW9uICpwYXJ0aXRpb25faW5mbyA9IE5VTEw7CgpleHRlcm4g c3RydWN0IG5hbmRfb29iaW5mbyBib25mc19vb2I7CmV4dGVybiBpbnQgYm9uX2NoZWNrX210 ZChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG10ZF9wYXJ0aXRpb24gKiptdGRfdGFi bGUpOwojZW5kaWYgLyogQ09ORklHX01URF9OQU5EX0JPTkZTICovCgpzdGF0aWMgdm9pZCBz M2MyNDEwX25hbmRfc2VsZWN0X2NoaXAoc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBjaGlw KQp7CglpZiAoY2hpcCA9PSAwKQoJCU5GQ09ORiAmPSB+TkZDT05GX25GQ0VfSElHSDsKCWVs c2UKCQlORkNPTkYgfD0gTkZDT05GX25GQ0VfSElHSDsKfQoKc3RhdGljIGludCBzM2MyNDEw X25hbmRfZGV2aWNlX3JlYWR5KHN0cnVjdCBtdGRfaW5mbyAqbXRkKQp7CglyZXR1cm4gKE5G U1RBVCAmIE5GU1RBVF9SbkIpID8gMTowOwp9CgpzdGF0aWMgdm9pZCBzM2MyNDEwX25hbmRf Y21kZnVuYyhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgdW5zaWduZWQgY29tbWFuZCwgaW50IGNv bHVtbiwgaW50IHBhZ2VfYWRkcikKewoKCXJlZ2lzdGVyIHN0cnVjdCBuYW5kX2NoaXAgKnRo aXMgPSBtdGQtPnByaXY7CgoJLyoKCSAqIFdyaXRlIG91dCB0aGUgY29tbWFuZCB0byB0aGUg ZGV2aWNlLgoJICovCglpZiAoY29tbWFuZCA9PSBOQU5EX0NNRF9TRVFJTikgewoJCWludCBy ZWFkY21kOwoJCWlmIChjb2x1bW4gPj0gbXRkLT5vb2JibG9jaykgewoJCQkvKiBPT0IgYXJl YSAqLwoJCQljb2x1bW4gLT0gbXRkLT5vb2JibG9jazsKCQkJcmVhZGNtZCA9IE5BTkRfQ01E X1JFQURPT0I7CgkJfSBlbHNlIGlmIChjb2x1bW4gPCAyNTYpIHsKCQkJLyogRmlyc3QgMjU2 IGJ5dGVzIC0tPiBSRUFEMCAqLwoJCQlyZWFkY21kID0gTkFORF9DTURfUkVBRDA7CgkJfSBl bHNlIHsKCQkJY29sdW1uIC09IDI1NjsKCQkJcmVhZGNtZCA9IE5BTkRfQ01EX1JFQUQxOwoJ CX0KCQlORkNNRCA9IHJlYWRjbWQ7Cgl9CglORkNNRCA9IChjb21tYW5kICYgMHhGRik7CgoJ aWYgKGNvbHVtbiAhPSAtMSB8fCBwYWdlX2FkZHIgIT0gLTEpIHsKCQkvKiBTZXJpYWxseSBp bnB1dCBhZGRyZXNzICovCgkJaWYgKGNvbHVtbiAhPSAtMSkKCQkJTkZBRERSID0gKGNvbHVt biAmIDB4RkYpOwoJCWlmIChwYWdlX2FkZHIgIT0gLTEpIHsKCQkJTkZBRERSID0gKHVuc2ln bmVkIGNoYXIpKHBhZ2VfYWRkciAmIDB4ZmYpOwoJCQlORkFERFIgPSAodW5zaWduZWQgY2hh cikoKHBhZ2VfYWRkciA+PiA4KSAmIDB4ZmYpOwoJCQkvKiBPbmUgbW9yZSBhZGRyZXNzIGN5 Y2xlIGZvciBoaWdoZXIgZGVuc2l0eSBkZXZpY2VzICovCgkJCWlmIChtdGQtPnNpemUgJiAw eDBjMDAwMDAwKSAKCQkJCU5GQUREUiA9ICh1bnNpZ25lZCBjaGFyKSgocGFnZV9hZGRyID4+ IDE2KSAmIDB4MGYpOwoJCX0KCQkvKiBMYXRjaCBpbiBhZGRyZXNzICovCgl9CgkKCS8qIAoJ ICogcHJvZ3JhbSBhbmQgZXJhc2UgaGF2ZSB0aGVpciBvd24gYnVzeSBoYW5kbGVycyAKCSAq IHN0YXR1cyBhbmQgc2VxdWVudGlhbCBpbiBuZWVkcyBubyBkZWxheQoJICovCglzd2l0Y2gg KGNvbW1hbmQpIHsKCQkJCgljYXNlIE5BTkRfQ01EX1BBR0VQUk9HOgoJY2FzZSBOQU5EX0NN RF9FUkFTRTE6CgljYXNlIE5BTkRfQ01EX0VSQVNFMjoKCWNhc2UgTkFORF9DTURfU0VRSU46 CgljYXNlIE5BTkRfQ01EX1NUQVRVUzoKCQlyZXR1cm47CgoJY2FzZSBOQU5EX0NNRF9SRVNF VDoKCQlpZiAodGhpcy0+ZGV2X3JlYWR5KQkKCQkJYnJlYWs7CgkJTkZDTUQgPSBOQU5EX0NN RF9TVEFUVVM7CgkJd2hpbGUgKCAhKE5GREFUQSAmIDB4NDApKTsKCQlyZXR1cm47CgoJLyog VGhpcyBhcHBsaWVzIHRvIHJlYWQgY29tbWFuZHMgKi8JCglkZWZhdWx0OgoJCS8qIAoJCSAq IElmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSBidXN5IHBpbiwgd2UgYXBwbHkgdGhl IGdpdmVuCgkJICogY29tbWFuZCBkZWxheQoJCSovCgkJaWYgKCF0aGlzLT5kZXZfcmVhZHkp IHsKCQkJdWRlbGF5ICh0aGlzLT5jaGlwX2RlbGF5KTsKCQkJcmV0dXJuOwoJCX0JCgl9CgkK CS8qIHdhaXQgdW50aWwgY29tbWFuZCBpcyBwcm9jZXNzZWQgKi8KCXdoaWxlICghdGhpcy0+ ZGV2X3JlYWR5KG10ZCkpOwp9CgovKgogKiBNYWluIGluaXRpYWxpemF0aW9uIHJvdXRpbmUK ICovCmludCBfX2luaXQgczNjMjQxMF9uYW5kX2luaXQgKHZvaWQpCnsKCXN0cnVjdCBuYW5k X2NoaXAgKnRoaXM7CiAgICB1X2ludDE2X3QgbmZjb25mOwoJaW50IGVyciA9IDA7CgoJLyog QWxsb2NhdGUgbWVtb3J5IGZvciBNVEQgZGV2aWNlIHN0cnVjdHVyZSBhbmQgcHJpdmF0ZSBk YXRhICovCglzM2MyNDEwX25hbmRfbXRkID0ga21hbGxvYyAoc2l6ZW9mKHN0cnVjdCBtdGRf aW5mbykgKyBzaXplb2YgKHN0cnVjdCBuYW5kX2NoaXApLAoJCQkJR0ZQX0tFUk5FTCk7Cglp ZiAoIXMzYzI0MTBfbmFuZF9tdGQpIHsKCQlwcmludGsgKCJVbmFibGUgdG8gYWxsb2NhdGUg TkFORCBNVEQgZGV2aWNlIHN0cnVjdHVyZS5cbiIpOwoJCWVyciA9IC1FTk9NRU07CgkJZ290 byBvdXQ7Cgl9CgoJLyogR2V0IHBvaW50ZXIgdG8gcHJpdmF0ZSBkYXRhICovCgl0aGlzID0g KHN0cnVjdCBuYW5kX2NoaXAgKikgKCZzM2MyNDEwX25hbmRfbXRkWzFdKTsKCgkvKiBJbml0 aWFsaXplIHN0cnVjdHVyZXMgKi8KCW1lbXNldCgoY2hhciAqKSBzM2MyNDEwX25hbmRfbXRk LCAwLCBzaXplb2Yoc3RydWN0IG10ZF9pbmZvKSk7CgltZW1zZXQoKGNoYXIgKikgdGhpcywg MCwgc2l6ZW9mKHN0cnVjdCBuYW5kX2NoaXApKTsKCgkvKiBMaW5rIHRoZSBwcml2YXRlIGRh dGEgd2l0aCB0aGUgTVREIHN0cnVjdHVyZSAqLwoJczNjMjQxMF9uYW5kX210ZC0+cHJpdiA9 IHRoaXM7CgogICAgLyogc2V0IE5BTkQgRmxhc2ggY29udHJvbGxlciAqLwogICAgewogICAg ICBuZmNvbmYgPSBORkNPTkY7CiAgICAgIC8qIE5BTkQgRmxhc2ggY29udHJvbGxlciBlbmFi bGUgKi8KICAgICAgbmZjb25mIHw9IE5GQ09ORl9GQ1RSTF9FTjsKCiAgICAgIC8qIFNldCBm bGFzaCBtZW1vcnkgdGltaW5nICovCiAgICAgIG5mY29uZiAmPSB+TkZDT05GX1RXUlBIMTsg ICAvKiAweDAgKi8KICAgICAgbmZjb25mIHw9IE5GQ09ORl9UV1JQSDBfMzsgIC8qIDB4MyAq LwogICAgICBuZmNvbmYgJj0gfk5GQ09ORl9UQUNMUzsgICAgLyogMHgwICovCgogICAgICBO RkNPTkYgPSBuZmNvbmY7CiAgICB9CgoJLyogU2V0IGFkZHJlc3Mgb2YgTkFORCBJTyBsaW5l cyAqLwoJdGhpcy0+SU9fQUREUl9SID0gaW9fcDJ2KDB4NGUwMDAwMGMpOwoJdGhpcy0+SU9f QUREUl9XID0gaW9fcDJ2KDB4NGUwMDAwMGMpOwoJdGhpcy0+c2VsZWN0X2NoaXAgPSBzM2My NDEwX25hbmRfc2VsZWN0X2NoaXA7Cgl0aGlzLT5kZXZfcmVhZHkgPSBzM2MyNDEwX25hbmRf ZGV2aWNlX3JlYWR5OwoJdGhpcy0+Y21kZnVuYyA9IHMzYzI0MTBfbmFuZF9jbWRmdW5jOwoK CXRoaXMtPmVjY21vZGUgPSBOQU5EX0VDQ19TT0ZUOwoKCS8qIDIwIHVzIGNvbW1hbmQgZGVs YXkgdGltZSAqLwoJdGhpcy0+Y2hpcF9kZWxheSA9IDIwOwkJCgoJLyogU2NhbiB0byBmaW5k IGV4aXN0YW5jZSBvZiB0aGUgZGV2aWNlICovCglpZiAobmFuZF9zY2FuIChzM2MyNDEwX25h bmRfbXRkLCAxKSkgewoJCWVyciA9IC1FTlhJTzsKCQlnb3RvIG91dF9tdGQ7Cgl9CgoJLyog QWxsb2NhdGUgbWVtb3J5IGZvciBpbnRlcm5hbCBkYXRhIGJ1ZmZlciAqLwoJdGhpcy0+ZGF0 YV9idWYgPSBrbWFsbG9jIChzaXplb2YodV9jaGFyKSAqIChzM2MyNDEwX25hbmRfbXRkLT5v b2JibG9jayArIHMzYzI0MTBfbmFuZF9tdGQtPm9vYnNpemUpLCBHRlBfS0VSTkVMKTsKCWlm ICghdGhpcy0+ZGF0YV9idWYpIHsKCQlwcmludGsgKCJVbmFibGUgdG8gYWxsb2NhdGUgTkFO RCBkYXRhIGJ1ZmZlclxuIik7CgkJZXJyID0gLUVOT01FTTsKCQlnb3RvIG91dF9tdGQ7Cgl9 CgojaWZkZWYgQ09ORklHX01URF9OQU5EX0JPTkZTCglzM2MyNDEwX25hbmRfbXRkLT5vb2Jp bmZvID0gYm9uZnNfb29iOwoJbXRkX251bSA9IGJvbl9jaGVja19tdGQoczNjMjQxMF9uYW5k X210ZCwgJnBhcnRpdGlvbl9pbmZvKTsKCWlmIChtdGRfbnVtID4gMSkKCQlhZGRfbXRkX3Bh cnRpdGlvbnMoczNjMjQxMF9uYW5kX210ZCwgcGFydGl0aW9uX2luZm8sIG10ZF9udW0pOwoJ ZWxzZQoJCWFkZF9tdGRfZGV2aWNlKHMzYzI0MTBfbmFuZF9tdGQpOwojZWxzZQoJYWRkX210 ZF9kZXZpY2UoczNjMjQxMF9uYW5kX210ZCk7CiNlbmRpZgoKCWdvdG8gb3V0OwoKb3V0X2Nh YzoKCWtmcmVlICh0aGlzLT5kYXRhX2J1Zik7ICAgIApvdXRfbXRkOgoJa2ZyZWUgKHMzYzI0 MTBfbmFuZF9tdGQpOwpvdXQ6CglyZXR1cm4gZXJyOwp9Cgptb2R1bGVfaW5pdChzM2MyNDEw X25hbmRfaW5pdCk7CgovKgogKiBDbGVhbiB1cCByb3V0aW5lCiAqLwojaWZkZWYgTU9EVUxF CnN0YXRpYyB2b2lkIF9fZXhpdCBzM2MyNDEwX25hbmRfY2xlYW51cCAodm9pZCkKewoJc3Ry dWN0IG5hbmRfY2hpcCAqdGhpcyA9IChzdHJ1Y3QgbmFuZF9jaGlwICopICZzM2MyNDEwX25h bmRfbXRkWzFdOwoKCS8qIFVucmVnaXN0ZXIgcGFydGl0aW9ucyAqLwoJZGVsX210ZF9wYXJ0 aXRpb25zKHMzYzI0MTBfbmFuZF9tdGQpOwoJCgkvKiBVbnJlZ2lzdGVyIHRoZSBkZXZpY2Ug Ki8KCWRlbF9tdGRfZGV2aWNlIChzM2MyNDEwX25hbmRfbXRkKTsKCgkvKiBGcmVlIGludGVy bmFsIGRhdGEgYnVmZmVycyAqLwoJa2ZyZWUgKHRoaXMtPmRhdGFfYnVmKTsKCgkvKiBGcmVl IHRoZSBNVEQgZGV2aWNlIHN0cnVjdHVyZSAqLwoJa2ZyZWUgKHMzYzI0MTBfbmFuZF9tdGQp Owp9Cm1vZHVsZV9leGl0KHMzYzI0MTBfbmFuZF9jbGVhbnVwKTsKI2VuZGlmCgpNT0RVTEVf TElDRU5TRSgiR1BMIik7CgovKgogKiBOQU5EIEZsYXNoIENvbnRyb2xsZXIgKFBhZ2UgNi0x IH4gNi04KQogKgogKiBSZWdpc3RlcgoKICAgTkZDT05GICAgTkFORCBGbGFzaCBDb25maWd1 cmF0aW9uICAgIFt3b3JkLCBSL1csIDB4MDAwMDAwMDBdCiAgIE5GQ01EICAgIE5BTkQgRmxh c2ggQ29tbWFuZCBTZXQgICAgICBbd29yZCwgUi9XLCAweDAwMDAwMDAwXQogICBORkFERFIg ICBOQU5EIEZsYXNoIEFkZHJlc3MgU2V0ICAgICAgW3dvcmQsIFIvVywgMHgwMDAwMDAwMF0K ICAgTkZEQVRBICAgTkFORCBGbGFzaCBEYXRhICAgICAgICAgICAgIFt3b3JkLCBSL1csIDB4 MDAwMDAwMDBdCiAgIE5GU1RBVCAgIE5BTkQgRmxhc2ggU3RhdHVzICAgICAgICAgICBbd29y ZCwgUiwgMHgwMDAwMDAwMF0KICAgTkZFQ0MgICAgTkFORCBGbGFzaCBFQ0MgICAgICAgICAg ICAgIFszIGJ5dGVzLCBSLCAweDAwMDAwMDAwXQoKICoKICovCiAKI2lmIDAKCiNkZWZpbmUg Yk5BTkRfQ1RMKE5iKQlfX1JFRygweDRlMDAwMDAwICsgKE5iKSkKI2RlZmluZSBORkNPTkYJ CWJOQU5EX0NUTCgweDAwKQojZGVmaW5lIE5GQ01EICAgICAgIGJOQU5EX0NUTCgweDA0KQoj ZGVmaW5lIE5GQUREUiAgICAgIGJOQU5EX0NUTCgweDA4KQojZGVmaW5lIE5GREFUQSAgICAg IGJOQU5EX0NUTCgweDBjKQojZGVmaW5lIE5GU1RBVCAgICAgIGJOQU5EX0NUTCgweDEwKQoj ZGVmaW5lIE5GRUNDICAgICAgIGJOQU5EX0NUTCgweDE0KQoKI2RlZmluZSBmTkZDT05GX1RX UlBIMSAgIEZsZCgzLDApCiNkZWZpbmUgTkZDT05GX1RXUlBIMSAgICBGTXNrKGZORkNPTkZf VFdSUEgxKQojZGVmaW5lIE5GQ09ORl9UV1JQSDFfMCAgRkluc3J0KDB4MCwgZk5GQ09ORl9U V1JQSDEpIC8qIDAgKi8KI2RlZmluZSBmTkZDT05GX1RXUlBIMCAgIEZsZCgzLDQpCiNkZWZp bmUgTkZDT05GX1RXUlBIMCAgICBGTXNrKGZORkNPTkZfVFdSUEgwKQojZGVmaW5lIE5GQ09O Rl9UV1JQSDBfMyAgRkluc3J0KDB4MywgZk5GQ09ORl9UV1JQSDApIC8qIDMgKi8KI2RlZmlu ZSBmTkZDT05GX1RBQ0xTICAgIEZsZCgzLDgpCiNkZWZpbmUgTkZDT05GX1RBQ0xTICAgICBG TXNrKGZORkNPTkZfVEFDTFMpCiNkZWZpbmUgTkZDT05GX1RBQ0xTXzAgICBGSW5zcnQoMHgw LCBmTkZDT05GX1RBQ0xTKSAvKiAwICovCiNkZWZpbmUgZk5GQ09ORl9uRkNFICAgICBGbGQo MSwxMSkKI2RlZmluZSBORkNPTkZfbkZDRSAgICAgIEZNc2soZk5GQ09ORl9uRkNFKQojZGVm aW5lIE5GQ09ORl9uRkNFX0xPVyAgRkluc3J0KDB4MCwgZk5GQ09ORl9uRkNFKSAvKiBhY3Rp dmUgKi8KI2RlZmluZSBORkNPTkZfbkZDRV9ISUdIIEZJbnNydCgweDEsIGZORkNPTkZfbkZD RSkgLyogaW5hY3RpdmUgKi8KI2RlZmluZSBmTkZDT05GX0VDQyAgICAgIEZsZCgxLDEyKQoj ZGVmaW5lIE5GQ09ORl9FQ0MgICAgICAgRk1zayhmTkZDT05GX0VDQykKI2RlZmluZSBORkNP TkZfRUNDX05JTklUIEZJbnNydCgweDAsIGZORkNPTkZfRUNDKSAvKiBub3QgaW5pdGlhbGl6 ZSAqLwojZGVmaW5lIE5GQ09ORl9FQ0NfSU5JVCAgRkluc3J0KDB4MSwgZk5GQ09ORl9FQ0Mp ICAgIC8qIGluaXRpYWxpemUgKi8KI2RlZmluZSBmTkZDT05GX0FERFJTVEVQIEZsZCgxLDEz KSAgICAgICAgICAgICAgICAgLyogQWRkcmVzc2luZyBTdGVwICovCiNkZWZpbmUgTkZDT05G X0FERFJTVEVQICBGTXNrKGZORkNPTkZfQUREUlNURVApCiNkZWZpbmUgZk5GQ09ORl9QQUdF U0laRSBGbGQoMSwxNCkKI2RlZmluZSBORkNPTkZfUEFHRVNJWkUgIEZNc2soZk5GQ09ORl9Q QUdFU0laRSkKI2RlZmluZSBORkNPTkZfUEFHRVNJWkVfMjU2ICBGSW5zcnQoMHgwLCBmTkZD T05GX1BBR0VTSVpFKSAvKiAyNTYgYnl0ZXMgKi8KI2RlZmluZSBORkNPTkZfUEFHRVNJWkVf NTEyICBGSW5zcnQoMHgxLCBmTkZDT05GX1BBR0VTSVpFKSAvKiA1MTIgYnl0ZXMgKi8KI2Rl ZmluZSBmTkZDT05GX0ZDVFJMICAgIEZsZCgxLDE1KSAgLyogRmxhc2ggY29udHJvbGxlciBl bmFibGUvZGlzYWJsZSAqLwojZGVmaW5lIE5GQ09ORl9GQ1RSTCAgICAgRk1zayhmTkZDT05G X0ZDVFJMKQojZGVmaW5lIE5GQ09ORl9GQ1RSTF9ESVMgRkluc3J0KDB4MCwgZk5GQ09ORl9G Q1RSTCkgLyogRGlzYWJsZSAqLwojZGVmaW5lIE5GQ09ORl9GQ1RSTF9FTiAgRkluc3J0KDB4 MSwgZk5GQ09ORl9GQ1RSTCkgLyogRW5hYmxlICovCgojZGVmaW5lIE5GU1RBVF9SbkIgICAg ICAoMSA8PCAwKQojZGVmaW5lIE5GU1RBVF9uRldFICAgICAoMSA8PCA4KQojZGVmaW5lIE5G U1RBVF9uRlJFICAgICAoMSA8PCA5KQojZGVmaW5lIE5GU1RBVF9BTEUgICAgICAoMSA8PCAx MCkKI2RlZmluZSBORlNUQVRfQ0xFICAgICAgKDEgPDwgMTEpCiNkZWZpbmUgTkZTVEFUX0FV VE9CT09UICgxIDw8IDE1KQoKI2VuZGlmIC8qIDAgKi8K --------------060802010002010508030700--