[issue1770] Patch for i386 to use bsrl for libc fls().
--===============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==--
討論串 (同標題文章)
完整討論串 (本文為第 3 之 9 篇):