[issue1770] Patch for i386 to use bsrl for libc fls().

看板DFBSD_submit作者時間15年前 (2010/05/26 13:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/9 (看更多)
--===============0476711215== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Venkatesh Srinivas <me@acm.jhu.edu> added the comment: Hi, This is an improved version of the patch that corrects my silly jz mistake = and=20 adds ffsl and flsl. It also implements both for x86_64. The x86-64 version = is=20 branchless, using cmov. This alternate snippet may be better and would allow for a branchless f?f(l= ) on=20 i386, except bsr and bsf are defined differently on Intel and AMD x86 machi= nes.=20 It may be better on x86_64 than the cmov-based version: xorl %eax, %eax xorl %ecx, %ecx bsrl 4(%esp), %eax setnz %cl addl %ecx, %eax ret Thanks, -- vs _____________________________________________________ DragonFly issue tracker <bugs@lists.dragonflybsd.org> <http://bugs.dragonflybsd.org/issue1770> _____________________________________________________ --===============0476711215== Content-Type: application/octet-stream MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-libc-Add-assembler-ffs-fls-ffsl-flsl-to-i386-and.patch" RnJvbSBjYWFlZTc0NWE5YTk4YmI3OTRhNWViYTkyOGRlMTJhYjk1MzA3M2FjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWZW5rYXRlc2ggU3Jpbml2YXMgPG1lQGVuZGVhdm91ci56YXB0 by5vcmc+CkRhdGU6IFdlZCwgMjYgTWF5IDIwMTAgMDE6MDg6NTQgLTA0MDAKU3ViamVjdDogW1BB VENIXSBsaWJjOiBBZGQgYXNzZW1ibGVyIGZmcywgZmZzbCwgZmxzLCBmbHNsIHRvIGkzODYgYW5k IHg4Nl82NC4KCi0tLQogbGliL2xpYmMvaTM4Ni9zdHJpbmcvTWFrZWZpbGUuaW5jICAgfCAgICA2 ICsrLS0KIGxpYi9saWJjL2kzODYvc3RyaW5nL2Zmcy5TICAgICAgICAgIHwgICAgNCArKysKIGxp Yi9saWJjL2kzODYvc3RyaW5nL2Zmc2wuUyAgICAgICAgIHwgICAgMiArCiBsaWIvbGliYy9pMzg2 L3N0cmluZy9mbHMuUyAgICAgICAgICB8ICAgNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIGxpYi9saWJjL2kzODYvc3RyaW5nL2Zsc2wuUyAgICAgICAgIHwgICAgMiArCiBs aWIvbGliYy94ODZfNjQvc3RyaW5nL01ha2VmaWxlLmluYyB8ICAgIDQgKy0KIGxpYi9saWJjL3g4 Nl82NC9zdHJpbmcvZmZzLlMgICAgICAgIHwgICAzOCArKysrKysrKysrKysrKysrKysrKysrKysr KysrCiBsaWIvbGliYy94ODZfNjQvc3RyaW5nL2Zmc2wuUyAgICAgICB8ICAgMzggKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogbGliL2xpYmMveDg2XzY0L3N0cmluZy9mbHMuUyAgICAgICAg fCAgIDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi9saWJjL3g4Nl82NC9zdHJp bmcvZmxzbC5TICAgICAgIHwgICAzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxMCBm aWxlcyBjaGFuZ2VkLCAyMTEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBsaWIvbGliYy9pMzg2L3N0cmluZy9mZnNsLlMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsaWIvbGliYy9pMzg2L3N0cmluZy9mbHMuUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJj L2kzODYvc3RyaW5nL2Zsc2wuUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJjL3g4Nl82NC9z dHJpbmcvZmZzLlMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGliYy94ODZfNjQvc3RyaW5nL2Zm c2wuUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJjL3g4Nl82NC9zdHJpbmcvZmxzLlMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGliYy94ODZfNjQvc3RyaW5nL2Zsc2wuUwoKZGlmZiAtLWdp dCBhL2xpYi9saWJjL2kzODYvc3RyaW5nL01ha2VmaWxlLmluYyBiL2xpYi9saWJjL2kzODYvc3Ry aW5nL01ha2VmaWxlLmluYwppbmRleCA3YTE0OThhLi5mMzQ5NGNhIDEwMDY0NAotLS0gYS9saWIv bGliYy9pMzg2L3N0cmluZy9NYWtlZmlsZS5pbmMKKysrIGIvbGliL2xpYmMvaTM4Ni9zdHJpbmcv TWFrZWZpbGUuaW5jCkBAIC0yLDYgKzIsNiBAQAogIyAkRnJlZUJTRDogc3JjL2xpYi9saWJjL2kz ODYvc3RyaW5nL01ha2VmaWxlLmluYyx2IDEuOSAxOTk5LzA4LzI3IDIzOjU5OjI5IHBldGVyIEV4 cCAkCiAjICREcmFnb25GbHk6IHNyYy9saWIvbGliYy9pMzg2L3N0cmluZy9NYWtlZmlsZS5pbmMs diAxLjIgMjAwMy8wNi8xNyAwNDoyNjo0MyBkaWxsb24gRXhwICQKIAotTURTUkNTKz1iY21wLlMg YmNvcHkuUyBiemVyby5TIGZmcy5TIGluZGV4LlMgbWVtY2hyLlMgbWVtY21wLlMgbWVtY3B5LlMg XAotCW1lbW1vdmUuUyBtZW1zZXQuUyByaW5kZXguUyBzdHJjYXQuUyBzdHJjaHIuUyBzdHJjbXAu UyBzdHJjcHkuUyBcCi0Jc3RybGVuLlMgc3RybmNtcC5TIHN0cnJjaHIuUyBzd2FiLlMKK01EU1JD Uys9YmNtcC5TIGJjb3B5LlMgYnplcm8uUyBmZnMuUyBmZnNsLlMgZmxzLlMgZmxzbC5TIGluZGV4 LlMgbWVtY2hyLlMgXAorCW1lbWNtcC5TIG1lbWNweS5TIG1lbW1vdmUuUyBtZW1zZXQuUyByaW5k ZXguUyBzdHJjYXQuUyBzdHJjaHIuUyBcIAorCXN0cmNtcC5TIHN0cmNweS5TIHN0cmxlbi5TIHN0 cm5jbXAuUyBzdHJyY2hyLlMgc3dhYi5TCmRpZmYgLS1naXQgYS9saWIvbGliYy9pMzg2L3N0cmlu Zy9mZnMuUyBiL2xpYi9saWJjL2kzODYvc3RyaW5nL2Zmcy5TCmluZGV4IDUyODdhMTYuLmRiZWQ4 ZGMgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjL2kzODYvc3RyaW5nL2Zmcy5TCisrKyBiL2xpYi9saWJj L2kzODYvc3RyaW5nL2Zmcy5TCkBAIC00NCw3ICs0NCwxMSBAQAogICoJSi5ULiBDb25rbGluIChq dGNAd2ltc2V5LmNvbSksIFdpbm5pbmcgU3RyYXRlZ2llcywgSW5jLgogICovCiAKKyNpZmRlZiBG RlNMCitFTlRSWShmZnNsKQorI2Vsc2UKIEVOVFJZKGZmcykKKyNlbmRpZgogCWJzZmwJNCglZXNw KSwlZWF4CiAJanoJTDEJIAkJLyogWkYgaXMgc2V0IGlmIGFsbCBiaXRzIGFyZSAwICovCiAJaW5j bAklZWF4CQkJLyogYml0cyBudW1iZXJlZCBmcm9tIDEsIG5vdCAwICovCmRpZmYgLS1naXQgYS9s aWIvbGliYy9pMzg2L3N0cmluZy9mZnNsLlMgYi9saWIvbGliYy9pMzg2L3N0cmluZy9mZnNsLlMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZhMzc1YgotLS0gL2Rldi9udWxs CisrKyBiL2xpYi9saWJjL2kzODYvc3RyaW5nL2Zmc2wuUwpAQCAtMCwwICsxLDIgQEAKKyNkZWZp bmUgRkZTTAorI2luY2x1ZGUgImZmcy5TIgpkaWZmIC0tZ2l0IGEvbGliL2xpYmMvaTM4Ni9zdHJp bmcvZmxzLlMgYi9saWIvbGliYy9pMzg2L3N0cmluZy9mbHMuUwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41NjQ3YmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2xpYmMvaTM4 Ni9zdHJpbmcvZmxzLlMKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx MCBUaGUgRHJhZ29uRmx5IFByb2plY3QKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u CisgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNl IG9yIHByb21vdGUgcHJvZHVjdHMKKyAqICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdp dGhvdWdoIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbgorICoKKyAqIFRISVMgU09G VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNT IE9SCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgorICogSU4gTk8gRVZF TlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAor ICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH RVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj aW5jbHVkZSAiREVGUy5oIgorCisvKgorICogZmxzKHZhbHVlKQorICogCUZpbmRzIHRoZSBoaWdo ZXN0IHNldCBiaXQgaW4gYSB3b3JkLiBCaXRzIGFyZSBudW1iZXJlZCBmcm9tIDE7CisgKglhIHJl dHVybiBvZiAwIGluZGljYXRlcyB0aGF0IHRoZSB3b3JkIHdhcyAwLgorICovCisjaWZkZWYgRkxT TAorRU5UUlkoZmxzbCkKKyNlbHNlCitFTlRSWShmbHMpCisjZW5kaWYKKwlic3JsCTQoJWVzcCks JWVheAorCWp6CUwxCisJYWRkbAkkMSwlZWF4CisJcmV0CisKK0wxOgl4b3JsCSVlYXgsICVlYXgK KwlyZXQKZGlmZiAtLWdpdCBhL2xpYi9saWJjL2kzODYvc3RyaW5nL2Zsc2wuUyBiL2xpYi9saWJj L2kzODYvc3RyaW5nL2Zsc2wuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j MDZjNDg1Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2xpYmMvaTM4Ni9zdHJpbmcvZmxzbC5TCkBA IC0wLDAgKzEsMiBAQAorI2RlZmluZSBGTFNMCisjaW5jbHVkZSAiZmxzLlMiCmRpZmYgLS1naXQg YS9saWIvbGliYy94ODZfNjQvc3RyaW5nL01ha2VmaWxlLmluYyBiL2xpYi9saWJjL3g4Nl82NC9z dHJpbmcvTWFrZWZpbGUuaW5jCmluZGV4IGFjNTg1YTQuLmQwMGI0NjEgMTAwNjQ0Ci0tLSBhL2xp Yi9saWJjL3g4Nl82NC9zdHJpbmcvTWFrZWZpbGUuaW5jCisrKyBiL2xpYi9saWJjL3g4Nl82NC9z dHJpbmcvTWFrZWZpbGUuaW5jCkBAIC0xLDQgKzEsNCBAQAogIyAkRnJlZUJTRDogc3JjL2xpYi9s aWJjL2FtZDY0L3N0cmluZy9NYWtlZmlsZS5pbmMsdiAxLjUgMjAwNS8wNC8xMCAxODo1ODo0OSBh bGMgRXhwICQKIAotTURTUkNTKz0gYmNtcC5TIGJjb3B5LlMgYnplcm8uUyBtZW1jbXAuUyBtZW1j cHkuUyBtZW1tb3ZlLlMgbWVtc2V0LlMgXAotCXN0cmNhdC5TIHN0cmNtcC5TIHN0cmNweS5TCitN RFNSQ1MrPSBiY21wLlMgYmNvcHkuUyBiemVyby5TIGZmcy5TIGZmc2wuUyBmbHMuUyBmbHNsLlMg bWVtY21wLlMgbWVtY3B5LlMgXCAKKwltZW1tb3ZlLlMgbWVtc2V0LlMgc3RyY2F0LlMgc3RyY21w LlMgc3RyY3B5LlMgCmRpZmYgLS1naXQgYS9saWIvbGliYy94ODZfNjQvc3RyaW5nL2Zmcy5TIGIv bGliL2xpYmMveDg2XzY0L3N0cmluZy9mZnMuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi42ZTZlYjgyCi0tLSAvZGV2L251bGwKKysrIGIvbGliL2xpYmMveDg2XzY0L3N0cmlu Zy9mZnMuUwpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIFRoZSBE cmFnb25GbHkgUHJvamVjdAorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu IFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv bW90ZSBwcm9kdWN0cworICogICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91Z2gg c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ UyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKKyAq IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ TVBMSUVEIFdBUlJBTlRJRVMKKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuCisgKiBJTiBOTyBFVkVOVCBTSEFM TCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisgKiBJTkNJ REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D TFVESU5HLCBCVVQKKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qCisgKiBm ZnModmFsdWUpCisgKiAJRmluZHMgdGhlIGxvd2VzdCBzZXQgYml0IGluIGEgd29yZC4gQml0cyBh cmUgbnVtYmVyZWQgZnJvbSAxOworICoJYSByZXR1cm4gb2YgMCBpbmRpY2F0ZXMgdGhhdCB0aGUg d29yZCB3YXMgMC4KKyAqLworRU5UUlkoZmZzKQorCW1vdmwJJC0xLCAlZWN4CisJYnNmbAklZWRp LCVlYXgKKwljbW92emwJJWVjeCwgJWVheAorCWFkZGwJJDEsICVlYXgKKwlyZXQKZGlmZiAtLWdp dCBhL2xpYi9saWJjL3g4Nl82NC9zdHJpbmcvZmZzbC5TIGIvbGliL2xpYmMveDg2XzY0L3N0cmlu Zy9mZnNsLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg3OTZjYgotLS0g L2Rldi9udWxsCisrKyBiL2xpYi9saWJjL3g4Nl82NC9zdHJpbmcvZmZzbC5TCkBAIC0wLDAgKzEs MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgVGhlIERyYWdvbkZseSBQcm9qZWN0Cisg KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0 YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gVGhlIG5hbWUgb2YgdGhlIGF1 dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisgKiAg ICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3VnaCBzcGVjaWZpYyBwcmlvciB3cml0 dGVuIHBlcm1pc3Npb24KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB VVRIT1IgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUgorICogSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwor ICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBUkUgRElTQ0xBSU1FRC4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElB QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorICogTk9U IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7 IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoKKyAqIGZmc2wodmFsdWUpCisgKiAJRmlu ZHMgdGhlIGhpZ2hlc3Qgc2V0IGJpdCBpbiBhIHdvcmQuIEJpdHMgYXJlIG51bWJlcmVkIGZyb20g MTsKKyAqCWEgcmV0dXJuIG9mIDAgaW5kaWNhdGVzIHRoYXQgdGhlIHdvcmQgd2FzIDAuCisgKi8K K0VOVFJZKGZmc2wpCisJbW92cQkkLTEsICVyY3gKKwlic2ZxCSVyZGksJXJheAorCWNtb3Z6cQkl cmN4LCAlcmF4CisJYWRkcQkkMSwgJXJheAorCXJldApkaWZmIC0tZ2l0IGEvbGliL2xpYmMveDg2 XzY0L3N0cmluZy9mbHMuUyBiL2xpYi9saWJjL3g4Nl82NC9zdHJpbmcvZmxzLlMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTcxNmJiNgotLS0gL2Rldi9udWxsCisrKyBiL2xp Yi9saWJjL3g4Nl82NC9zdHJpbmcvZmxzLlMKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHly aWdodCAoYykgMjAxMCBUaGUgRHJhZ29uRmx5IFByb2plY3QKKyAqIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11 c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk aXN0cmlidXRpb24uCisgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNl ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKyAqICAgIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlIHdpdGhvdWdoIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbgorICoK KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5E IEFOWSBFWFBSRVNTIE9SCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisgKiBPRiBNRVJDSEFOVEFCSUxJ VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgor ICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs IElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VS RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH RS4KKyAqLworCisvKgorICogZmxzKHZhbHVlKQorICogCUZpbmRzIHRoZSBoaWdoZXN0IHNldCBi aXQgaW4gYSB3b3JkLiBCaXRzIGFyZSBudW1iZXJlZCBmcm9tIDE7CisgKglhIHJldHVybiBvZiAw IGluZGljYXRlcyB0aGF0IHRoZSB3b3JkIHdhcyAwLgorICovCitFTlRSWShmbHMpCisJbW92bAkk LTEsICVlY3gKKwlic3JsCSVlZGksJWVheAorCWNtb3Z6bAklZWN4LCAlZWF4CisJYWRkbAkkMSwg JWVheAorCXJldApkaWZmIC0tZ2l0IGEvbGliL2xpYmMveDg2XzY0L3N0cmluZy9mbHNsLlMgYi9s aWIvbGliYy94ODZfNjQvc3RyaW5nL2Zsc2wuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi41MjY0MDRhCi0tLSAvZGV2L251bGwKKysrIGIvbGliL2xpYmMveDg2XzY0L3N0cmlu Zy9mbHNsLlMKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBUaGUg RHJhZ29uRmx5IFByb2plY3QKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0 cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz LiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy b21vdGUgcHJvZHVjdHMKKyAqICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdWdo IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbgorICoKKyAqIFRISVMgU09GVFdBUkUg SVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCisg KiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg SU1QTElFRCBXQVJSQU5USUVTCisgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgorICogSU4gTk8gRVZFTlQgU0hB TEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorICogSU5D SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO Q0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKgorICog ZmxzbCh2YWx1ZSkKKyAqIAlGaW5kcyB0aGUgaGlnaGVzdCBzZXQgYml0IGluIGEgd29yZC4gQml0 cyBhcmUgbnVtYmVyZWQgZnJvbSAxOworICoJYSByZXR1cm4gb2YgMCBpbmRpY2F0ZXMgdGhhdCB0 aGUgd29yZCB3YXMgMC4KKyAqLworRU5UUlkoZmxzbCkKKwltb3ZxCSQtMSwgJXJjeAorCWJzcnEJ JXJkaSwlcmF4CisJY21vdnpxCSVyY3gsICVyYXgKKwlhZGRxCSQxLCAlcmF4CisJcmV0Ci0tIAox LjYuMC40Cgo= --===============0476711215==--
文章代碼(AID): #1B_B9Mxx (DFBSD_submit)
討論串 (同標題文章)
文章代碼(AID): #1B_B9Mxx (DFBSD_submit)