From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20791 invoked by alias); 16 Jun 2011 06:49:53 -0000 Received: (qmail 20780 invoked by uid 22791); 16 Jun 2011 06:49:51 -0000 X-SWARE-Spam-Status: No, hits=2.3 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,RCVD_IN_JMF_BL,SARE_BAYES_5x8,TW_CL,TW_EG,TW_LZ,TW_RJ,TW_TQ,TW_YQ X-Spam-Check-By: sourceware.org Received: from mo-p00-fb.rzone.de (HELO mo-p00-fb.rzone.de) (81.169.146.163) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 16 Jun 2011 06:49:36 +0000 Received: from mo-p00-ob.rzone.de (cohen-mo-p00-ob.mail [192.168.63.70]) by scum-fb-04.store (RZmta 25.18) with ESMTPA id R06fd6n5D7wHnb for ; Wed, 15 Jun 2011 12:49:13 +0200 (MEST) X-RZG-AUTH: :LXoWVUeid/7A29J/hMvvT2k715jHQaJercGObUOFkj18odoYNahU4Q== X-RZG-CLASS-ID: mo00 Received: from [192.168.0.22] (business-188-111-022-002.static.arcor-ip.net [188.111.22.2]) by post.strato.de (cohen mo6) (RZmta 25.18) with ESMTPA id z01c9dn5F9cbUk ; Wed, 15 Jun 2011 11:47:25 +0200 (MEST) Message-ID: <4DF87FAD.4090104@gjlay.de> Date: Thu, 16 Jun 2011 06:53:00 -0000 From: Georg-Johann Lay User-Agent: Thunderbird 2.0.0.24 (X11/20100302) MIME-Version: 1.0 To: gcc-patches@gcc.gnu.org CC: Denis Chertykov , "Eric B. Weddington" , Anatoly Sokolov Subject: [Patch, AVR]: PR49313, fix PR29524 Content-Type: multipart/mixed; boundary="------------020203070901040000010205" X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-06/txt/msg01204.txt.bz2 This is a multi-part message in MIME format. --------------020203070901040000010205 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-length: 1903 This is a patch that implements some libgcc functions in assembler. The functions are used only very seldom but if, they lead to an unpleasant waste of resource. For example, some SF functions eventually lead to __clz_tab being dragged in (PR29524). This patch avoids that by straight forward assembler implementation of functions that are easy to implement. Tested without regression. Moreover, I tested functions in some self-written code against the old C-implementation. HI/QI functions tested for all possible inputs. Johann -- gcc/ PR target/49313 PR target/29524 * longlong.h: Add AVR support: (count_leading_zeros): New macro. (count_trailing_zeros): New macro. (COUNT_LEADING_ZEROS_0): New macro. * config/avr/t-avr (LIB1ASMFUNCS): Add _ffssi2, _ffshi2, _loop_ffsqi2, _ctzsi2, _ctzhi2, _clzdi2, _clzsi2, _clzhi2, _paritydi2, _paritysi2, _parityhi2, _popcounthi2,_popcountsi2, _popcountdi2, _popcountqi2, _bswapsi2, _bswapdi2, _ashldi3, _ashrdi3, _lshrdi3 (LIB2FUNCS_EXCLUDE): Add _clz. * config/avr/libgcc.S (XCALL): Move up in file. (XJMP): New C Macro. (DEFUN): New asm macro. (ENDF): New asm macro. (__ffssi2): New function. (__ffshi2): New function. (__loop_ffsqi2): New function. (__ctzsi2): New function. (__ctzhi2): New function. (__clzdi2): New function. (__clzsi2): New function. (__clzhi2): New function. (__paritydi2): New function. (__paritysi2): New function. (__parityhi2): New function. (__popcounthi2): New function. (__popcountsi2): New function. (__popcountdi2): New function. (__popcountqi2): New function. (__bswapsi2): New function. (__bswapdi2): New function. (__ashldi3): New function. (__ashrdi3): New function. (__lshrdi3): New function. Fix suspicous lines. libgcc/ PR target/49313 PR target/29524 * config/avr/t-avr: Fix line endings. (intfuncs16): Remove _ffsXX2, _clzXX2, _ctzXX2, _popcountXX2, _parityXX2. --------------020203070901040000010205 Content-Type: text/x-patch; name="libgcc-opt.diff" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="libgcc-opt.diff" Content-length: 16674 SW5kZXg6IGxpYmdjYy9jb25maWcvYXZyL3QtYXZyCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGxpYmdjYy9jb25maWcvYXZyL3QtYXZyCShSZXZpc2lv biAxNzUwMzYpCisrKyBsaWJnY2MvY29uZmlnL2F2ci90LWF2cgkoQXJiZWl0 c2tvcGllKQpAQCAtMSwxOSArMSwxNyBAQAotIyBFeHRyYSAxNi1iaXQgaW50 ZWdlciBmdW5jdGlvbnMuDQotaW50ZnVuY3MxNiA9IF9hYnN2WFgyIF9hZGR2 WFgzIF9zdWJ2WFgzIF9tdWx2WFgzIF9uZWd2WFgyIF9mZnNYWDIgX2NselhY MiBcDQotICAgICAgICAgICAgIF9jdHpYWDIgX3BvcGNvdW50WFgyIF9wYXJp dHlYWDINCi1oaWludGZ1bmNzMTYgPSAkKHN1YnN0IFhYLGhpLCQoaW50ZnVu Y3MxNikpDQotc2lpbnRmdW5jczE2ID0gJChzdWJzdCBYWCxzaSwkKGludGZ1 bmNzMTYpKQ0KLQ0KLWl0ZXItaXRlbXMgOj0gJChoaWludGZ1bmNzMTYpDQot aXRlci1sYWJlbHMgOj0gJChzaWludGZ1bmNzMTYpDQotaXRlci1zaXplcyA6 PSAkKHBhdHN1YnN0ICUsMiwkKHNpaW50ZnVuY3MxNikpICQocGF0c3Vic3Qg JSwyLCQoaGlpbnRmdW5jczE2KSkNCi0NCi0NCi1pbmNsdWRlICQoc3JjZGly KS9lbXB0eS5tayAkKHBhdHN1YnN0ICUsJChzcmNkaXIpL3NpZGl0aS1vYmpl Y3QubWssJChpdGVyLWl0ZW1zKSkNCi1saWJnY2Mtb2JqZWN0cyArPSAkKHBh dHN1YnN0ICUsJSQob2JqZXh0KSwkKGhpaW50ZnVuY3MxNikpDQotDQotaWZl cSAoJChlbmFibGVfc2hhcmVkKSx5ZXMpDQotbGliZ2NjLXMtb2JqZWN0cyAr PSAkKHBhdHN1YnN0ICUsJV9zJChvYmpleHQpLCQoaGlpbnRmdW5jczE2KSkN Ci1lbmRpZg0KLQ0KLQ0KKyMgRXh0cmEgMTYtYml0IGludGVnZXIgZnVuY3Rp b25zLgoraW50ZnVuY3MxNiA9IF9hYnN2WFgyIF9hZGR2WFgzIF9zdWJ2WFgz IF9tdWx2WFgzIF9uZWd2WFgyIAorCitoaWludGZ1bmNzMTYgPSAkKHN1YnN0 IFhYLGhpLCQoaW50ZnVuY3MxNikpCitzaWludGZ1bmNzMTYgPSAkKHN1YnN0 IFhYLHNpLCQoaW50ZnVuY3MxNikpCisKK2l0ZXItaXRlbXMgOj0gJChoaWlu dGZ1bmNzMTYpCitpdGVyLWxhYmVscyA6PSAkKHNpaW50ZnVuY3MxNikKK2l0 ZXItc2l6ZXMgOj0gJChwYXRzdWJzdCAlLDIsJChzaWludGZ1bmNzMTYpKSAk KHBhdHN1YnN0ICUsMiwkKGhpaW50ZnVuY3MxNikpCisKKworaW5jbHVkZSAk KHNyY2RpcikvZW1wdHkubWsgJChwYXRzdWJzdCAlLCQoc3JjZGlyKS9zaWRp dGktb2JqZWN0Lm1rLCQoaXRlci1pdGVtcykpCitsaWJnY2Mtb2JqZWN0cyAr PSAkKHBhdHN1YnN0ICUsJSQob2JqZXh0KSwkKGhpaW50ZnVuY3MxNikpCisK K2lmZXEgKCQoZW5hYmxlX3NoYXJlZCkseWVzKQorbGliZ2NjLXMtb2JqZWN0 cyArPSAkKHBhdHN1YnN0ICUsJV9zJChvYmpleHQpLCQoaGlpbnRmdW5jczE2 KSkKK2VuZGlmCkluZGV4OiBnY2MvbG9uZ2xvbmcuaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvbG9uZ2xvbmcuaAkoUmV2aXNpb24gMTc1MDM2 KQorKysgZ2NjL2xvbmdsb25nLmgJKEFyYmVpdHNrb3BpZSkKQEAgLTI1MCw2 ICsyNTAsMTIgQEAgVURJdHlwZSBfX3VtdWxzaWRpMyAoVVNJdHlwZSwgVVNJ dHlwZSk7CiAjZGVmaW5lIENPVU5UX0xFQURJTkdfWkVST1NfMCAzMgogI2Vu ZGlmCiAKKyNpZiBkZWZpbmVkIChfX0FWUl9fKSAmJiBXX1RZUEVfU0laRSA9 PSAzMgorI2RlZmluZSBjb3VudF9sZWFkaW5nX3plcm9zKENPVU5ULFgpICAo KENPVU5UKSA9IF9fYnVpbHRpbl9jbHpsIChYKSkKKyNkZWZpbmUgY291bnRf dHJhaWxpbmdfemVyb3MoQ09VTlQsWCkgKChDT1VOVCkgPSBfX2J1aWx0aW5f Y3R6bCAoWCkpCisjZGVmaW5lIENPVU5UX0xFQURJTkdfWkVST1NfMCAzMgor I2VuZGlmIC8qIGRlZmluZWQgKF9fQVZSX18pICYmIFdfVFlQRV9TSVpFID09 IDMyICovCisKICNpZiBkZWZpbmVkIChfX0NSSVNfXykgJiYgX19DUklTX2Fy Y2hfdmVyc2lvbiA+PSAzCiAjZGVmaW5lIGNvdW50X2xlYWRpbmdfemVyb3Mo Q09VTlQsIFgpICgoQ09VTlQpID0gX19idWlsdGluX2NseiAoWCkpCiAjaWYg X19DUklTX2FyY2hfdmVyc2lvbiA+PSA4CkluZGV4OiBnY2MvY29uZmlnL2F2 ci9saWJnY2MuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvY29u ZmlnL2F2ci9saWJnY2MuUwkoUmV2aXNpb24gMTc1MDM2KQorKysgZ2NjL2Nv bmZpZy9hdnIvbGliZ2NjLlMJKEFyYmVpdHNrb3BpZSkKQEAgLTUyLDYgKzUy LDI2IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVO VEkKICNlbmRpZgogCS5lbmRtCiAKKyNpZiBkZWZpbmVkIChfX0FWUl9IQVZF X0pNUF9DQUxMX18pCisjZGVmaW5lIFhDQUxMIGNhbGwKKyNkZWZpbmUgWEpN UCAgam1wCisjZWxzZQorI2RlZmluZSBYQ0FMTCByY2FsbAorI2RlZmluZSBY Sk1QICByam1wCisjZW5kaWYKKworLm1hY3JvIERFRlVOIG5hbWUKKy5nbG9i YWwgXG5hbWUKKy5mdW5jIFxuYW1lCitcbmFtZToKKy5lbmRtCisKKy5tYWNy byBFTkRGIG5hbWUKKy5zaXplIFxuYW1lLCAuLVxuYW1lCisuZW5kZnVuYwor LmVuZG0KKworDAogLyogTm90ZTogbXVscWkzLCBtdWxoaTMgYXJlIG9wZW4t Y29kZWQgb24gdGhlIGVuaGFuY2VkIGNvcmUuICAqLwogI2lmICFkZWZpbmVk IChfX0FWUl9IQVZFX01VTF9fKQogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTc3OSwxMiAr Nzk5LDYgQEAgX19kb19jbGVhcl9ic3M6CiAvKiBfX2RvX2dsb2JhbF9jdG9y cyBhbmQgX19kb19nbG9iYWxfZHRvcnMgYXJlIG9ubHkgbmVjZXNzYXJ5CiAg ICBpZiB0aGVyZSBhcmUgYW55IGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycy4g ICovCiAKLSNpZiBkZWZpbmVkIChfX0FWUl9IQVZFX0pNUF9DQUxMX18pCi0j ZGVmaW5lIFhDQUxMIGNhbGwKLSNlbHNlCi0jZGVmaW5lIFhDQUxMIHJjYWxs Ci0jZW5kaWYKLQogI2lmZGVmIExfY3RvcnMKIAkuc2VjdGlvbiAuaW5pdDYs ImF4IixAcHJvZ2JpdHMKIAkuZ2xvYmFsCV9fZG9fZ2xvYmFsX2N0b3JzCkBA IC04OTcsMyArOTExLDM5MyBAQCBfX3RhYmxlanVtcF9lbHBtX186CiAJLmVu ZGZ1bmMKICNlbmRpZiAvKiBkZWZpbmVkIChMX3RhYmxlanVtcF9lbHBtKSAq LwogCisMCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICogRmluZCBmaXJzdCBzZXQgQml0IChmZnMpCisgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKworI2lmIGRlZmluZWQgKExfZmZzc2ky KQorOzsgZmluZCBmaXJzdCBzZXQgYml0Cis7OyByMjU6cjI0ID0gZmZzMzIg KHIyNTpyMjIpCis7OyBjbG9iYmVyczogcjIyLCByMjYKK0RFRlVOIF9fZmZz c2kyCisgICAgY2xyICByMjYKKyAgICB0c3QgIHIyMgorICAgIGJybmUgMWYK KyAgICBzdWJpIHIyNiwgLTgKKyAgICBvciAgIHIyMiwgcjIzCisgICAgYnJu ZSAxZgorICAgIHN1YmkgcjI2LCAtOAorICAgIG9yICAgcjIyLCByMjQKKyAg ICBicm5lIDFmCisgICAgc3ViaSByMjYsIC04CisgICAgb3IgICByMjIsIHIy NQorICAgIGJybmUgMWYKKyAgICByZXQKKzE6ICBtb3YgIHIyNCwgcjIyCisg ICAgWEpNUCBfX2xvb3BfZmZzcWkyCitFTkRGIF9fZmZzc2kyCisjZW5kaWYg LyogZGVmaW5lZCAoTF9mZnNzaTIpICovCisKKyNpZiBkZWZpbmVkIChMX2Zm c2hpMikKKzs7IGZpbmQgZmlyc3Qgc2V0IGJpdAorOzsgcjI1OnIyNCA9IGZm czE2IChyMjU6cjI0KQorOzsgY2xvYmJlcnM6IHIyNgorREVGVU4gX19mZnNo aTIKKyAgICBjbHIgIHIyNgorICAgIGNwc2UgcjI0LCBfX3plcm9fcmVnX18K KzE6ICBYSk1QIF9fbG9vcF9mZnNxaTIKKyAgICBsZGkgIHIyNiwgOAorICAg IG9yICAgcjI0LCByMjUKKyAgICBicm5lIDFiCisgICAgcmV0CitFTkRGIF9f ZmZzaGkyCisjZW5kaWYgLyogZGVmaW5lZCAoTF9mZnNoaTIpICovCisKKyNp ZiBkZWZpbmVkIChMX2xvb3BfZmZzcWkyKQorOzsgSGVscGVyIGZvciBmZnNo aTIsIGZmc3NpMgorOzsgcjI1OnIyNCA9IHIyNiArIHplcm9fZXh0ZW5kMTYg KGZmczgocjI0KSkKKzs7IHIyNCBtdXN0IGJlICE9IDAKKzs7IGNsb2JiZXJz OiByMjYKK0RFRlVOIF9fbG9vcF9mZnNxaTIKKyAgICBpbmMgIHIyNgorICAg IGxzciAgcjI0CisgICAgYnJjYyBfX2xvb3BfZmZzcWkyCisgICAgbW92ICBy MjQsIHIyNgorICAgIGNsciAgcjI1CisgICAgcmV0ICAgIAorRU5ERiBfX2xv b3BfZmZzcWkyCisjZW5kaWYgLyogZGVmaW5lZCAoTF9sb29wX2Zmc3FpMikg Ki8KKworDAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqIENvdW50IHRyYWlsaW5nIFplcm9zIChjdHopCisgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmIGRlZmluZWQgKExfY3R6 c2kyKQorOzsgY291bnQgdHJhaWxpbmcgemVyb3MKKzs7IHIyNTpyMjQgPSBj dHozMiAocjI1OnIyMikKKzs7IGN0eigwKSA9IDMyCitERUZVTiBfX2N0enNp MgorICAgIFhDQUxMIF9fZmZzc2kyCisgICAgZGVjICByMjQKKyAgICBzYnJj IHIyNCwgNworICAgIGxkaSAgcjI0LCAzMgorICAgIHJldAorRU5ERiBfX2N0 enNpMgorI2VuZGlmIC8qIGRlZmluZWQgKExfY3R6c2kyKSAqLworCisjaWYg ZGVmaW5lZCAoTF9jdHpoaTIpCis7OyBjb3VudCB0cmFpbGluZyB6ZXJvcwor OzsgcjI1OnIyNCA9IGN0ejE2IChyMjU6cjI0KQorOzsgY3R6KDApID0gMTYK K0RFRlVOIF9fY3R6aGkyCisgICAgWENBTEwgX19mZnNoaTIKKyAgICBkZWMg IHIyNAorICAgIHNicmMgcjI0LCA3CisgICAgbGRpICByMjQsIDE2CisgICAg cmV0CitFTkRGIF9fY3R6aGkyCisjZW5kaWYgLyogZGVmaW5lZCAoTF9jdHpo aTIpICovCisKKwwKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKiBDb3VudCBsZWFkaW5nIFplcm9zIChjbHopCisgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmIGRlZmluZWQgKExf Y2x6ZGkyKQorOzsgY291bnQgbGVhZGluZyB6ZXJvcworOzsgcjI1OnIyNCA9 IGNsejY0IChyMjU6cjE4KQorOzsgY2xvYmJlcnM6IHIyMiwgcjIzLCByMjYK K0RFRlVOIF9fY2x6ZGkyCisgICAgWENBTEwgX19jbHpzaTIKKyAgICBzYnJz IHIyNCwgNQorICAgIHJldAorICAgIG1vdl9sIHIyMiwgcjE4CisgICAgbW92 X2ggcjIzLCByMTkKKyAgICBtb3ZfbCByMjQsIHIyMAorICAgIG1vdl9oIHIy NSwgcjIxCisgICAgWENBTEwgX19jbHpzaTIKKyAgICBzdWJpIHIyNCwgLTMy CisgICAgcmV0CitFTkRGIF9fY2x6ZGkyCisjZW5kaWYgLyogZGVmaW5lZCAo TF9jbHpkaTIpICovCisKKyNpZiBkZWZpbmVkIChMX2NsenNpMikKKzs7IGNv dW50IGxlYWRpbmcgemVyb3MKKzs7IHIyNTpyMjQgPSBjbHozMiAocjI1OnIy MikKKzs7IGNsb2JiZXJzOiByMjYKK0RFRlVOIF9fY2x6c2kyCisgICAgWENB TEwgX19jbHpoaTIKKyAgICBzYnJzIHIyNCwgNAorICAgIHJldAorICAgIG1v dl9sIHIyNCwgcjIyCisgICAgbW92X2ggcjI1LCByMjMKKyAgICBYQ0FMTCBf X2NsemhpMgorICAgIHN1YmkgcjI0LCAtMTYKKyAgICByZXQKK0VOREYgX19j bHpzaTIKKyNlbmRpZiAvKiBkZWZpbmVkIChMX2NsenNpMikgKi8KKworI2lm IGRlZmluZWQgKExfY2x6aGkyKQorOzsgY291bnQgbGVhZGluZyB6ZXJvcwor OzsgcjI1OnIyNCA9IGNsejE2IChyMjU6cjI0KQorOzsgY2xvYmJlcnM6IHIy NgorREVGVU4gX19jbHpoaTIKKyAgICBjbHIgIHIyNgorICAgIHRzdCAgcjI1 CisgICAgYnJuZSAxZgorICAgIHN1YmkgcjI2LCAtOAorICAgIG9yICAgcjI1 LCByMjQKKyAgICBicm5lIDFmCisgICAgbGRpICByMjQsIDE2CisgICAgcmV0 CisxOiAgY3BpICByMjUsIDE2CisgICAgYnJzaCAzZgorICAgIHN1YmkgcjI2 LCAtMworICAgIHN3YXAgcjI1CisyOiAgaW5jICByMjYKKzM6ICBsc2wgIHIy NQorICAgIGJyY2MgMmIKKyAgICBtb3YgIHIyNCwgcjI2CisgICAgY2xyICBy MjUKKyAgICByZXQKK0VOREYgX19jbHpoaTIKKyNlbmRpZiAvKiBkZWZpbmVk IChMX2NsemhpMikgKi8KKworDAorLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqIFBhcml0eSAKKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworCisjaWYgZGVmaW5lZCAoTF9wYXJpdHlkaTIp Cis7OyByMjU6cjI0ID0gcGFyaXR5NjQgKHIyNTpyMTgpCis7OyBjbG9iYmVy czogX190bXBfcmVnX18KK0RFRlVOIF9fcGFyaXR5ZGkyCisgICAgZW9yICBy MjQsIHIxOAorICAgIGVvciAgcjI0LCByMTkKKyAgICBlb3IgIHIyNCwgcjIw CisgICAgZW9yICByMjQsIHIyMQorICAgIFhKTVAgX19wYXJpdHlzaTIKK0VO REYgX19wYXJpdHlkaTIKKyNlbmRpZiAvKiBkZWZpbmVkIChMX3Bhcml0eWRp MikgKi8KKworI2lmIGRlZmluZWQgKExfcGFyaXR5c2kyKQorOzsgcjI1OnIy NCA9IHBhcml0eTMyIChyMjU6cjIyKQorOzsgY2xvYmJlcnM6IF9fdG1wX3Jl Z19fCitERUZVTiBfX3Bhcml0eXNpMgorICAgIGVvciAgcjI0LCByMjIKKyAg ICBlb3IgIHIyNCwgcjIzCisgICAgWEpNUCBfX3Bhcml0eWhpMgorRU5ERiBf X3Bhcml0eXNpMgorI2VuZGlmIC8qIGRlZmluZWQgKExfcGFyaXR5c2kyKSAq LworCisjaWYgZGVmaW5lZCAoTF9wYXJpdHloaTIpCis7OyByMjU6cjI0ID0g cGFyaXR5MTYgKHIyNTpyMjQpCis7OyBjbG9iYmVyczogX190bXBfcmVnX18K K0RFRlVOIF9fcGFyaXR5aGkyCisgICAgZW9yICByMjQsIHIyNQorOzsgRkFM TFRIUlUKK0VOREYgX19wYXJpdHloaTIKKworOzsgcjI1OnIyNCA9IHBhcml0 eTggKHIyNCkKKzs7IGNsb2JiZXJzOiBfX3RtcF9yZWdfXworREVGVU4gX19w YXJpdHlxaTIKKyAgICA7OyBwYXJpdHkgaXMgaW4gcjI0WzAuLjddCisgICAg bW92ICBfX3RtcF9yZWdfXywgcjI0CisgICAgc3dhcCBfX3RtcF9yZWdfXwor ICAgIGVvciAgcjI0LCBfX3RtcF9yZWdfXworICAgIDs7IHBhcml0eSBpcyBp biByMjRbMC4uM10KKyAgICBzdWJpIHIyNCwgLTQKKyAgICBhbmRpIHIyNCwg LTUKKyAgICBzdWJpIHIyNCwgLTYKKyAgICA7OyBwYXJpdHkgaXMgaW4gcjI0 WzAsM10KKyAgICBzYnJjIHIyNCwgMworICAgIGluYyAgcjI0CisgICAgOzsg cGFyaXR5IGlzIGluIHIyNFswXQorICAgIGFuZGkgcjI0LCAxCisgICAgY2xy ICByMjUKKyAgICByZXQKK0VOREYgX19wYXJpdHlxaTIKKyNlbmRpZiAvKiBk ZWZpbmVkIChMX3Bhcml0eWhpMikgKi8KKworDAorLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqIFBvcHVsYXRpb24gQ291bnQKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWYgZGVm aW5lZCAoTF9wb3Bjb3VudGhpMikKKzs7IHBvcHVsYXRpb24gY291bnQKKzs7 IHIyNTpyMjQgPSBwb3Bjb3VudDE2IChyMjU6cjI0KQorOzsgY2xvYmJlcnM6 IHIzMCwgX190bXBfcmVnX18KK0RFRlVOIF9fcG9wY291bnRoaTIKKyAgICBY Q0FMTCBfX3BvcGNvdW50cWkyCisgICAgbW92ICByMzAsIHIyNAorICAgIG1v diAgcjI0LCByMjUKKyAgICBYQ0FMTCBfX3BvcGNvdW50cWkyCisgICAgYWRk ICByMjQsIHIzMAorICAgIGNsciAgcjI1CisgICAgcmV0CitFTkRGIF9fcG9w Y291bnRoaTIKKyNlbmRpZiAvKiBkZWZpbmVkIChMX3BvcGNvdW50aGkyKSAq LworCisjaWYgZGVmaW5lZCAoTF9wb3Bjb3VudHNpMikKKzs7IHBvcHVsYXRp b24gY291bnQKKzs7IHIyNTpyMjQgPSBwb3Bjb3VudDMyIChyMjU6cjIyKQor OzsgY2xvYmJlcnM6IHIyNiwgcjMwLCBfX3RtcF9yZWdfXworREVGVU4gX19w b3Bjb3VudHNpMgorICAgIFhDQUxMIF9fcG9wY291bnRoaTIKKyAgICBtb3Yg ICByMjYsIHIyNAorICAgIG1vdl9sIHIyNCwgcjIyCisgICAgbW92X2ggcjI1 LCByMjMKKyAgICBYQ0FMTCBfX3BvcGNvdW50aGkyCisgICAgYWRkICAgcjI0 LCByMjYKKyAgICByZXQKK0VOREYgX19wb3Bjb3VudHNpMgorI2VuZGlmIC8q IGRlZmluZWQgKExfcG9wY291bnRzaTIpICovCisKKyNpZiBkZWZpbmVkIChM X3BvcGNvdW50ZGkyKQorOzsgcG9wdWxhdGlvbiBjb3VudAorOzsgcjI1OnIy NCA9IHBvcGNvdW50NjQgKHIyNTpyMTgpCis7OyBjbG9iYmVyczogcjIyLCBy MjMsIHIyNiwgcjI3LCByMzAsIF9fdG1wX3JlZ19fCitERUZVTiBfX3BvcGNv dW50ZGkyCisgICAgWENBTEwgX19wb3Bjb3VudHNpMgorICAgIG1vdiAgIHIy NywgcjI0CisgICAgbW92X2wgcjIyLCByMTgKKyAgICBtb3ZfaCByMjMsIHIx OQorICAgIG1vdl9sIHIyNCwgcjIwCisgICAgbW92X2ggcjI1LCByMjEKKyAg ICBYQ0FMTCBfX3BvcGNvdW50c2kyCisgICAgYWRkICAgcjI0LCByMjcKKyAg ICByZXQKK0VOREYgX19wb3Bjb3VudGRpMgorI2VuZGlmIC8qIGRlZmluZWQg KExfcG9wY291bnRkaTIpICovCisKKyNpZiBkZWZpbmVkIChMX3BvcGNvdW50 cWkyKQorOzsgcG9wdWxhdGlvbiBjb3VudAorOzsgcjI0ID0gcG9wY291bnQ4 IChyMjQpCis7OyBjbG9iYmVyczogX190bXBfcmVnX18KK0RFRlVOIF9fcG9w Y291bnRxaTIKKyAgICBtb3YgIF9fdG1wX3JlZ19fLCByMjQKKyAgICBhbmRp IHIyNCwgMQorICAgIGxzciAgX190bXBfcmVnX18gICAgCisgICAgbHNyICBf X3RtcF9yZWdfXyAgICAKKyAgICBhZGMgIHIyNCwgX196ZXJvX3JlZ19fCisg ICAgbHNyICBfX3RtcF9yZWdfXyAgICAKKyAgICBhZGMgIHIyNCwgX196ZXJv X3JlZ19fCisgICAgbHNyICBfX3RtcF9yZWdfXyAgICAKKyAgICBhZGMgIHIy NCwgX196ZXJvX3JlZ19fCisgICAgbHNyICBfX3RtcF9yZWdfXyAgICAKKyAg ICBhZGMgIHIyNCwgX196ZXJvX3JlZ19fCisgICAgbHNyICBfX3RtcF9yZWdf XyAgICAKKyAgICBhZGMgIHIyNCwgX196ZXJvX3JlZ19fCisgICAgbHNyICBf X3RtcF9yZWdfXyAgICAKKyAgICBhZGMgIHIyNCwgX190bXBfcmVnX18gICAg CisgICAgcmV0ICAgIAorRU5ERiBfX3BvcGNvdW50cWkyCisjZW5kaWYgLyog ZGVmaW5lZCAoTF9wb3Bjb3VudHFpMikgKi8KKworDAorLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyAqIFN3YXAgYnl0ZXMKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCis7OyBzd2FwIHR3 byByZWdpc3RlcnMgd2l0aCBkaWZmZXJlbnQgcmVnaXN0ZXIgbnVtYmVyCisu bWFjcm8gYnN3YXAgYSwgYgorICAgIGVvciBcYSwgXGIKKyAgICBlb3IgXGIs IFxhCisgICAgZW9yIFxhLCBcYgorLmVuZG0KKworI2lmIGRlZmluZWQgKExf YnN3YXBzaTIpCis7OyBzd2FwIGJ5dGVzCis7OyByMjU6cjIyID0gYnN3YXAz MiAocjI1OnIyMikKK0RFRlVOIF9fYnN3YXBzaTIKKyAgICBic3dhcCByMjIs IHIyNQorICAgIGJzd2FwIHIyMywgcjI0CisgICAgcmV0CitFTkRGIF9fYnN3 YXBzaTIKKyNlbmRpZiAvKiBkZWZpbmVkIChMX2Jzd2Fwc2kyKSAqLworCisj aWYgZGVmaW5lZCAoTF9ic3dhcGRpMikKKzs7IHN3YXAgYnl0ZXMKKzs7IHIy NTpyMTggPSBic3dhcDY0IChyMjU6cjE4KQorREVGVU4gX19ic3dhcGRpMgor ICAgIGJzd2FwIHIxOCwgcjI1CisgICAgYnN3YXAgcjE5LCByMjQKKyAgICBi c3dhcCByMjAsIHIyMworICAgIGJzd2FwIHIyMSwgcjIyCisgICAgcmV0CitF TkRGIF9fYnN3YXBkaTIKKyNlbmRpZiAvKiBkZWZpbmVkIChMX2Jzd2FwZGky KSAqLworCisMCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICogNjQtYml0IHNoaWZ0cworICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisKKyNpZiBkZWZpbmVkIChMX2FzaHJkaTMpCis7OyBB cml0aG1ldGljIHNoaWZ0IHJpZ2h0Cis7OyByMjU6cjE4ID0gYXNocjY0IChy MjU6cjE4LCByMTc6cjE2KQorREVGVU4gX19hc2hyZGkzCisgICAgcHVzaCBy MTYKKyAgICBhbmRpIHIxNiwgMzEKKyAgICBicmVxIDJmCisxOiAgYXNyICBy MjUKKyAgICByb3IgIHIyNAorICAgIHJvciAgcjIzCisgICAgcm9yICByMjIK KyAgICByb3IgIHIyMQorICAgIHJvciAgcjIwCisgICAgcm9yICByMTkKKyAg ICByb3IgIHIxOAorICAgIGRlYyAgcjE2CisgICAgYnJuZSAxYgorMjogIHBv cCAgcjE2CisgICAgcmV0CitFTkRGIF9fYXNocmRpMworI2VuZGlmIC8qIGRl ZmluZWQgKExfYXNocmRpMykgKi8KKworI2lmIGRlZmluZWQgKExfbHNocmRp MykKKzs7IExvZ2ljIHNoaWZ0IHJpZ2h0Cis7OyByMjU6cjE4ID0gbHNocjY0 IChyMjU6cjE4LCByMTc6cjE2KQorREVGVU4gX19sc2hyZGkzCisgICAgcHVz aCByMTYKKyAgICBhbmRpIHIxNiwgMzEKKyAgICBicmVxIDJmCisxOiAgbHNy ICByMjUKKyAgICByb3IgIHIyNAorICAgIHJvciAgcjIzCisgICAgcm9yICBy MjIKKyAgICByb3IgIHIyMQorICAgIHJvciAgcjIwCisgICAgcm9yICByMTkK KyAgICByb3IgIHIxOAorICAgIGRlYyAgcjE2CisgICAgYnJuZSAxYgorMjog IHBvcCAgcjE2CisgICAgcmV0CitFTkRGIF9fbHNocmRpMworI2VuZGlmIC8q IGRlZmluZWQgKExfbHNocmRpMykgKi8KKworI2lmIGRlZmluZWQgKExfYXNo bGRpMykKKzs7IFNoaWZ0IGxlZnQKKzs7IHIyNTpyMTggPSBhc2hsNjQgKHIy NTpyMTgsIHIxNzpyMTYpCitERUZVTiBfX2FzaGxkaTMKKyAgICBwdXNoIHIx NgorICAgIGFuZGkgcjE2LCAzMQorICAgIGJyZXEgMmYKKzE6ICBsc2wgIHIx OAorICAgIHJvbCAgcjE5CisgICAgcm9sICByMjAKKyAgICByb2wgIHIyMQor ICAgIHJvbCAgcjIyCisgICAgcm9sICByMjMKKyAgICByb2wgIHIyNAorICAg IHJvbCAgcjI1CisgICAgZGVjICByMTYKKyAgICBicm5lIDFiCisyOiAgcG9w ICByMTYKKyAgICByZXQKK0VOREYgX19hc2hsZGkzCisjZW5kaWYgLyogZGVm aW5lZCAoTF9hc2hsZGkzKSAqLwpJbmRleDogZ2NjL2NvbmZpZy9hdnIvdC1h dnIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2NvbmZpZy9hdnIv dC1hdnIJKFJldmlzaW9uIDE3NTAzNikKKysrIGdjYy9jb25maWcvYXZyL3Qt YXZyCShBcmJlaXRza29waWUpCkBAIC0yNCwxMiArMjQsMTAgQEAgZHJpdmVy LWF2ci5vOiAkKHNyY2RpcikvY29uZmlnL2F2ci9kcml2ZQogYXZyLWRldmlj ZXMubzogJChzcmNkaXIpL2NvbmZpZy9hdnIvYXZyLWRldmljZXMuYyBcCiAg ICQoQ09ORklHX0gpICQoU1lTVEVNX0gpIGNvcmV0eXBlcy5oICQoVE1fSCkK IAkkKENDKSAtYyAkKEFMTF9DRkxBR1MpICQoQUxMX0NQUEZMQUdTKSAkKElO Q0xVREVTKSAkPAotCQogCiBhdnItYy5vOiAkKHNyY2RpcikvY29uZmlnL2F2 ci9hdnItYy5jIFwKICAgJChDT05GSUdfSCkgJChTWVNURU1fSCkgY29yZXR5 cGVzLmggJChUTV9IKSAkKFRSRUVfSCkgJChDX0NPTU1PTl9IKQogCSQoQ0Mp IC1jICQoQUxMX0NGTEFHUykgJChBTExfQ1BQRkxBR1MpICQoSU5DTFVERVMp ICQ8Ci0JCiAKIAogTElCMUFTTVNSQyA9IGF2ci9saWJnY2MuUwpAQCAtNTIs NyArNTAsMzAgQEAgTElCMUFTTUZVTkNTID0gXAogCV9jb3B5X2RhdGEgXAog CV9jbGVhcl9ic3MgXAogCV9jdG9ycyBcCi0JX2R0b3JzCisJX2R0b3JzIFwK KwlfZmZzc2kyIFwKKwlfZmZzaGkyIFwKKwlfbG9vcF9mZnNxaTIgXAorCV9j dHpzaTIgXAorCV9jdHpoaTIgXAorCV9jbHpkaTIgXAorCV9jbHpzaTIgXAor CV9jbHpoaTIgXAorCV9wYXJpdHlkaTIgXAorCV9wYXJpdHlzaTIgXAorCV9w YXJpdHloaTIgXAorCV9wb3Bjb3VudGhpMiBcCisJX3BvcGNvdW50c2kyIFwK KwlfcG9wY291bnRkaTIgXAorCV9wb3Bjb3VudHFpMiBcCisJX2Jzd2Fwc2ky IFwKKwlfYnN3YXBkaTIgXAorCV9hc2hsZGkzIFwKKwlfYXNocmRpMyBcCisJ X2xzaHJkaTMKKworTElCMkZVTkNTX0VYQ0xVREUgPSBcCisJX2NsegogCiAj IFdlIGRvIG5vdCBoYXZlIHRoZSBERiB0eXBlLgogIyBNb3N0IG9mIHRoZSBD IGZ1bmN0aW9ucyBpbiBsaWJnY2MyIHVzZSBhbG1vc3QgYWxsIHJlZ2lzdGVy cywKQEAgLTIxNiw4ICsyMzcsOCBAQCBNVUxUSUxJQl9NQVRDSEVTID0gXAog CW1tY3U/YXZyNTE9bW1jdT9hdDkwY2FuMTI4IFwKIAltbWN1P2F2cjUxPW1t Y3U/YXQ5MHVzYjEyODYgXAogCW1tY3U/YXZyNTE9bW1jdT9hdDkwdXNiMTI4 NyBcCi0gCW1tY3U/YXZyNj1tbWN1P2F0bWVnYTI1NjAgXAotIAltbWN1P2F2 cjY9bW1jdT9hdG1lZ2EyNTYxCisJbW1jdT9hdnI2PW1tY3U/YXRtZWdhMjU2 MCBcCisJbW1jdT9hdnI2PW1tY3U/YXRtZWdhMjU2MQogCiBNVUxUSUxJQl9F WENFUFRJT05TID0KIAo= --------------020203070901040000010205--