From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: [PATCH] x86-32: use __builtin_{memcpy,memset} Date: Tue, 11 May 2010 13:04:47 +0100 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="B_3356427890_31236962" Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Jan Beulich , "xen-devel@lists.xensource.com" Cc: Charles Arnold List-Id: xen-devel@lists.xenproject.org --B_3356427890_31236962 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit On 11/05/2010 11:39, "Keir Fraser" wrote: > Hm, well, I hate having to change this stuff as we always seem to end up > broken on some gcc or other. But otoh this will eliminate a bunch of code if > we do this unconditionally, and I'm particularly not keen on doing this only > for x86-32 and particular versions of gcc. I suggest the attached patch: it > should work fine so long as all our supported versions of gcc have > __builtin_memcpy and __builtin_memset. Given we nowadays only support GCC > 3.4+, I imagine we are okay in this regard. > > What do you think to this alternative patch? Jan, What about this alternative version which distinguishes between GCC 4.3+ (which should auto-inline quite sensibly) and earlier versions (which need help via macro mapping explicitly to __builtin_*)? -- Keir --B_3356427890_31236962 Content-Type: application/octet-stream; name="00-string" Content-Disposition: attachment; filename="00-string" Content-Transfer-Encoding: base64 ZGlmZiAtciAyYjVlMTRlNGM1ZTUgeGVuL2FyY2gveDg2L3N0cmluZy5jCi0tLSBhL3hlbi9h cmNoL3g4Ni9zdHJpbmcuYwlUdWUgTWF5IDExIDEyOjM3OjI2IDIwMTAgKzAxMDAKKysrIGIv eGVuL2FyY2gveDg2L3N0cmluZy5jCVR1ZSBNYXkgMTEgMTM6MDI6NDAgMjAxMCArMDEwMApA QCAtMTQsMjUgKzE0LDEyIEBACiAgICAgbG9uZyBkMCwgZDEsIGQyOwogCiAgICAgYXNtIHZv bGF0aWxlICgKLSNpZmRlZiBfX2kzODZfXwotICAgICAgICAiICAgcmVwIG1vdnNsICAgICAg ICA7ICIKLSNlbHNlCi0gICAgICAgICIgICByZXAgbW92c3EgICAgICAgIDsgIgotICAgICAg ICAiICAgdGVzdGIgJDQsJWI0ICAgICA7ICIKLSAgICAgICAgIiAgIGplIDBmICAgICAgICAg ICAgOyAiCi0gICAgICAgICIgICBtb3ZzbCAgICAgICAgICAgIDsgIgotICAgICAgICAiMDog ICAgICAgICAgICAgICAgICA7ICIKLSNlbmRpZgotICAgICAgICAiICAgdGVzdGIgJDIsJWI0 ICAgICA7ICIKLSAgICAgICAgIiAgIGplIDFmICAgICAgICAgICAgOyAiCi0gICAgICAgICIg ICBtb3ZzdyAgICAgICAgICAgIDsgIgotICAgICAgICAiMTogdGVzdGIgJDEsJWI0ICAgICA7 ICIKLSAgICAgICAgIiAgIGplIDJmICAgICAgICAgICAgOyAiCi0gICAgICAgICIgICBtb3Zz YiAgICAgICAgICAgIDsgIgotICAgICAgICAiMjogICAgICAgICAgICAgICAgICAgICIKKyAg ICAgICAgIiAgIHJlcCA7IG1vdnMiX19PUyIgOyAiCisgICAgICAgICIgICBtb3YgJTQsJTMg ICAgICAgIDsgIgorICAgICAgICAiICAgcmVwIDsgbW92c2IgICAgICAgICIKICAgICAgICAg OiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZTIiAoZDIpCi0gICAgICAgIDogIjAiIChu L3NpemVvZihsb25nKSksICJxIiAobiksICIxIiAoZGVzdCksICIyIiAoc3JjKQotICAgICAg ICA6ICJtZW1vcnkiKTsKKyAgICAgICAgOiAiMCIgKG4vQllURVNfUEVSX0xPTkcpLCAiciIg KG4lQllURVNfUEVSX0xPTkcpLCAiMSIgKGRlc3QpLCAiMiIgKHNyYykKKyAgICAgICAgOiAi bWVtb3J5IiApOwogCiAgICAgcmV0dXJuIGRlc3Q7CiB9CkBAIC01NSw3ICs0Miw3IEBACiB2 b2lkICptZW1tb3ZlKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pCiB7 CiAgICAgbG9uZyBkMCwgZDEsIGQyOwotIAorCiAgICAgaWYgKCBkZXN0IDwgc3JjICkKICAg ICAgICAgcmV0dXJuIG1lbWNweShkZXN0LCBzcmMsIG4pOwogCmRpZmYgLXIgMmI1ZTE0ZTRj NWU1IHhlbi9pbmNsdWRlL2FzbS14ODYvc3RyaW5nLmgKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9zdHJpbmcuaAlUdWUgTWF5IDExIDEyOjM3OjI2IDIwMTAgKzAxMDAKKysrIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9zdHJpbmcuaAlUdWUgTWF5IDExIDEzOjAyOjQwIDIwMTAgKzAx MDAKQEAgLTMsMjQ2ICszLDI0IEBACiAKICNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+CiAKLXN0 YXRpYyBpbmxpbmUgdm9pZCAqX192YXJpYWJsZV9tZW1jcHkodm9pZCAqdG8sIGNvbnN0IHZv aWQgKmZyb20sIHNpemVfdCBuKQotewotICAgIGxvbmcgZDAsIGQxLCBkMjsKLSAgICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoCi0gICAgICAgICIgICByZXAgOyBtb3ZzIl9fT1MiXG4iCi0g ICAgICAgICIgICBtb3YgJTQsJTMgICAgICAgXG4iCi0gICAgICAgICIgICByZXAgOyBtb3Zz YiAgICAgXG4iCi0gICAgICAgIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQy KQotICAgICAgICA6ICIwIiAobi9CWVRFU19QRVJfTE9ORyksICJyIiAobiVCWVRFU19QRVJf TE9ORyksICIxIiAodG8pLCAiMiIgKGZyb20pCi0gICAgICAgIDogIm1lbW9yeSIgKTsKLSAg ICByZXR1cm4gdG87Ci19CisjZGVmaW5lIF9fSEFWRV9BUkNIX01FTUNQWQorI2RlZmluZSBf X0hBVkVfQVJDSF9NRU1TRVQKKyNkZWZpbmUgX19IQVZFX0FSQ0hfTUVNTU9WRQogCiAvKgot ICogVGhpcyBsb29rcyBob3JyaWJseSB1Z2x5LCBidXQgdGhlIGNvbXBpbGVyIGNhbiBvcHRp bWl6ZSBpdCB0b3RhbGx5LAotICogYXMgdGhlIGNvdW50IGlzIGNvbnN0YW50LgorICogQWNj b3JkaW5nIHRvIEFuZGkgS2xlZW4sIEdDQyBlYXJsaWVyIHRoYW4gNC4zIGRvZXMgbm90IHJl bGlhYmx5IHJlcGxhY2UKKyAqIGNhbGxzIHRvIHN0cmluZyBmdW5jdGlvbnMgd2l0aCBnb29k IHNwZWNpYWxpc2VkIGJ1aWx0LWluIHZlcnNpb25zLiBUaHVzIHdlCisgKiBleHBsaWNpdGx5 IG1hcCBjZXJ0YWluIGZ1bmN0aW9ucyB0byBfX2J1aWx0aW5fKigpIHVzaW5nIG1hY3Jvcy4K ICAqLwotc3RhdGljIGFsd2F5c19pbmxpbmUgdm9pZCAqIF9fY29uc3RhbnRfbWVtY3B5KAot ICAgIHZvaWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBuKQotewotICAgIHN3 aXRjaCAoIG4gKQotICAgIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVybiB0bzsKLSAg ICBjYXNlIDE6Ci0gICAgICAgICoodTggKil0byA9ICooY29uc3QgdTggKilmcm9tOwotICAg ICAgICByZXR1cm4gdG87Ci0gICAgY2FzZSAyOgotICAgICAgICAqKHUxNiAqKXRvID0gKihj b25zdCB1MTYgKilmcm9tOwotICAgICAgICByZXR1cm4gdG87Ci0gICAgY2FzZSAzOgotICAg ICAgICAqKHUxNiAqKXRvID0gKihjb25zdCB1MTYgKilmcm9tOwotICAgICAgICAqKDIrKHU4 ICopdG8pID0gKigyKyhjb25zdCB1OCAqKWZyb20pOwotICAgICAgICByZXR1cm4gdG87Ci0g ICAgY2FzZSA0OgotICAgICAgICAqKHUzMiAqKXRvID0gKihjb25zdCB1MzIgKilmcm9tOwot ICAgICAgICByZXR1cm4gdG87Ci0gICAgY2FzZSA1OgotICAgICAgICAqKHUzMiAqKXRvID0g Kihjb25zdCB1MzIgKilmcm9tOwotICAgICAgICAqKDQrKHU4ICopdG8pID0gKig0Kyhjb25z dCB1OCAqKWZyb20pOwotICAgICAgICByZXR1cm4gdG87Ci0gICAgY2FzZSA2OgotICAgICAg ICAqKHUzMiAqKXRvID0gKihjb25zdCB1MzIgKilmcm9tOwotICAgICAgICAqKDIrKHUxNiAq KXRvKSA9ICooMisoY29uc3QgdTE2ICopZnJvbSk7Ci0gICAgICAgIHJldHVybiB0bzsKLSAg ICBjYXNlIDc6Ci0gICAgICAgICoodTMyICopdG8gPSAqKGNvbnN0IHUzMiAqKWZyb207Ci0g ICAgICAgICooMisodTE2ICopdG8pID0gKigyKyhjb25zdCB1MTYgKilmcm9tKTsKLSAgICAg ICAgKig2Kyh1OCAqKXRvKSA9ICooNisoY29uc3QgdTggKilmcm9tKTsKLSAgICAgICAgcmV0 dXJuIHRvOwotICAgIGNhc2UgODoKLSAgICAgICAgKih1NjQgKil0byA9ICooY29uc3QgdTY0 ICopZnJvbTsKLSAgICAgICAgcmV0dXJuIHRvOwotICAgIGNhc2UgMTI6Ci0gICAgICAgICoo dTY0ICopdG8gPSAqKGNvbnN0IHU2NCAqKWZyb207Ci0gICAgICAgICooMisodTMyICopdG8p ID0gKigyKyhjb25zdCB1MzIgKilmcm9tKTsKLSAgICAgICAgcmV0dXJuIHRvOwotICAgIGNh c2UgMTY6Ci0gICAgICAgICoodTY0ICopdG8gPSAqKGNvbnN0IHU2NCAqKWZyb207Ci0gICAg ICAgICooMSsodTY0ICopdG8pID0gKigxKyhjb25zdCB1NjQgKilmcm9tKTsKLSAgICAgICAg cmV0dXJuIHRvOwotICAgIGNhc2UgMjA6Ci0gICAgICAgICoodTY0ICopdG8gPSAqKGNvbnN0 IHU2NCAqKWZyb207Ci0gICAgICAgICooMSsodTY0ICopdG8pID0gKigxKyhjb25zdCB1NjQg Kilmcm9tKTsKLSAgICAgICAgKig0Kyh1MzIgKil0bykgPSAqKDQrKGNvbnN0IHUzMiAqKWZy b20pOwotICAgICAgICByZXR1cm4gdG87Ci0gICAgfQotI2RlZmluZSBDT01NT04oeCkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgX19hc21fXyBfX3Zv bGF0aWxlX18gKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgInJl cCA7IG1vdnMiX19PUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg ICB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSAgICAgICAgICAg IFwKLSAgICAgICAgOiAiMCIgKG4vQllURVNfUEVSX0xPTkcpLCAiMSIgKHRvKSwgIjIiIChm cm9tKSAgXAotICAgICAgICA6ICJtZW1vcnkiICk7Ci0gICAgewotICAgICAgICBsb25nIGQw LCBkMSwgZDI7Ci0gICAgICAgIHN3aXRjaCAoIG4gJSBCWVRFU19QRVJfTE9ORyApCi0gICAg ICAgIHsKLSAgICAgICAgY2FzZSAwOiBDT01NT04oIiIpOyByZXR1cm4gdG87Ci0gICAgICAg IGNhc2UgMTogQ09NTU9OKCJcblx0bW92c2IiKTsgcmV0dXJuIHRvOwotICAgICAgICBjYXNl IDI6IENPTU1PTigiXG5cdG1vdnN3Iik7IHJldHVybiB0bzsKLSAgICAgICAgY2FzZSAzOiBD T01NT04oIlxuXHRtb3Zzd1xuXHRtb3ZzYiIpOyByZXR1cm4gdG87Ci0gICAgICAgIGNhc2Ug NDogQ09NTU9OKCJcblx0bW92c2wiKTsgcmV0dXJuIHRvOwotICAgICAgICBjYXNlIDU6IENP TU1PTigiXG5cdG1vdnNsXG5cdG1vdnNiIik7IHJldHVybiB0bzsKLSAgICAgICAgY2FzZSA2 OiBDT01NT04oIlxuXHRtb3ZzbFxuXHRtb3ZzdyIpOyByZXR1cm4gdG87Ci0gICAgICAgIGNh c2UgNzogQ09NTU9OKCJcblx0bW92c2xcblx0bW92c3dcblx0bW92c2IiKTsgcmV0dXJuIHRv OwotICAgICAgICB9Ci0gICAgfQotI3VuZGVmIENPTU1PTgotICAgIHJldHVybiB0bzsKLX0K KyNpZiAoX19HTlVDX18gPCA0KSB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1Jf XyA8IDMpCisjZGVmaW5lIG1lbWNweSh0LGYsbikgKF9fYnVpbHRpbl9tZW1jcHkoKHQpLChm KSwobikpKQorI2RlZmluZSBtZW1zZXQocyxjLG4pIChfX2J1aWx0aW5fbWVtc2V0KChzKSwo YyksKG4pKSkKKyNlbHNlCitleHRlcm4gdm9pZCAqbWVtY3B5KHZvaWQgKmRlc3QsIGNvbnN0 IHZvaWQgKnNyYywgc2l6ZV90IG4pOworZXh0ZXJuIHZvaWQgKm1lbXNldCh2b2lkICpzLCBp bnQgYywgc2l6ZV90IG4pOworI2VuZGlmCiAKLSNkZWZpbmUgX19IQVZFX0FSQ0hfTUVNQ1BZ Ci0vKiBhbGlnbiBzb3VyY2UgdG8gYSA2NC1iaXQgYm91bmRhcnkgKi8KLXN0YXRpYyBhbHdh eXNfaW5saW5lCi12b2lkICpfX3Zhcl9tZW1jcHkodm9pZCAqdCwgY29uc3Qgdm9pZCAqZiwg c2l6ZV90IG4pCi17Ci0gICAgaW50IG9mZiA9ICh1bnNpZ25lZCBsb25nKWYgJiAweDc7Ci0g ICAgLyoganVzdCBkbyBhbGlnbm1lbnQgaWYgbmVlZGVkIGFuZCBpZiBzaXplIGlzIHdvcnRo ICovCi0gICAgaWYgKCAobiA+IDMyKSAmJiBvZmYgKSB7Ci0gICAgICAgIHNpemVfdCBuMSA9 IDggLSBvZmY7Ci0gICAgICAgIF9fdmFyaWFibGVfbWVtY3B5KHQsIGYsIG4xKTsKLSAgICAg ICAgX192YXJpYWJsZV9tZW1jcHkodCArIG4xLCBmICsgbjEsIG4gLSBuMSk7Ci0gICAgICAg IHJldHVybiB0OwotICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gKF9fdmFyaWFi bGVfbWVtY3B5KHQsIGYsIG4pKTsKLSAgICB9Ci19Ci0KLSNkZWZpbmUgbWVtY3B5KHQsZixu KSAoX19tZW1jcHkoKHQpLChmKSwobikpKQotc3RhdGljIGFsd2F5c19pbmxpbmUKLXZvaWQg Kl9fbWVtY3B5KHZvaWQgKnQsIGNvbnN0IHZvaWQgKmYsIHNpemVfdCBuKQotewotICAgIHJl dHVybiAoX19idWlsdGluX2NvbnN0YW50X3AobikgPwotICAgICAgICAgICAgX19jb25zdGFu dF9tZW1jcHkoKHQpLChmKSwobikpIDoKLSAgICAgICAgICAgIF9fdmFyX21lbWNweSgodCks KGYpLChuKSkpOwotfQotCi0vKiBTb21lIHZlcnNpb24gb2YgZ2NjIGRvbid0IGhhdmUgdGhp cyBidWlsdGluLiBJdCdzIG5vbi1jcml0aWNhbCBhbnl3YXkuICovCi0jZGVmaW5lIF9fSEFW RV9BUkNIX01FTU1PVkUKKy8qIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIGRvbid0IGhhdmUgdGhp cyBidWlsdCBpbi4gSXQncyBub24tY3JpdGljYWwgYW55d2F5LiAqLwogZXh0ZXJuIHZvaWQg Km1lbW1vdmUodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbik7CiAKLXN0 YXRpYyBpbmxpbmUgdm9pZCAqX19tZW1zZXRfZ2VuZXJpYyh2b2lkICpzLCBjaGFyIGMsIHNp emVfdCBjb3VudCkKLXsKLSAgICBsb25nIGQwLCBkMTsKLSAgICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoCi0gICAgICAgICJyZXAgOyBzdG9zYiIKLSAgICAgICAgOiAiPSZjIiAoZDApLCAi PSZEIiAoZDEpIDogImEiIChjKSwgIjEiIChzKSwgIjAiIChjb3VudCkgOiAibWVtb3J5IiAp OwotICAgIHJldHVybiBzOwotfQotCi0vKiB3ZSBtaWdodCB3YW50IHRvIHdyaXRlIG9wdGlt aXplZCB2ZXJzaW9ucyBvZiB0aGVzZSBsYXRlciAqLwotI2RlZmluZSBfX2NvbnN0YW50X2Nv dW50X21lbXNldChzLGMsY291bnQpIF9fbWVtc2V0X2dlbmVyaWMoKHMpLChjKSwoY291bnQp KQotCi0vKgotICogbWVtc2V0KHgsMCx5KSBpcyBhIHJlYXNvbmFibHkgY29tbW9uIHRoaW5n IHRvIGRvLCBzbyB3ZSB3YW50IHRvIGZpbGwKLSAqIHRoaW5ncyAzMiBiaXRzIGF0IGEgdGlt ZSBldmVuIHdoZW4gd2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUKLSAqIGFyZWEgYXQg Y29tcGlsZS10aW1lLi4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkICpfX2NvbnN0YW50X2Nf bWVtc2V0KHZvaWQgKnMsIHVuc2lnbmVkIGxvbmcgYywgc2l6ZV90IGNvdW50KQotewotICAg IGxvbmcgZDAsIGQxOwotICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAotICAgICAgICAiICAg cmVwIDsgc3RvcyJfX09TIlxuIgotICAgICAgICAiICAgbW92ICAlMywlNCAgICAgIFxuIgot ICAgICAgICAiICAgcmVwIDsgc3Rvc2IgICAgIFxuIgotICAgICAgICA6ICI9JmMiIChkMCks ICI9JkQiIChkMSkKLSAgICAgICAgOiAiYSIgKGMpLCAiciIgKGNvdW50JUJZVEVTX1BFUl9M T05HKSwKLSAgICAgICAgICAiMCIgKGNvdW50L0JZVEVTX1BFUl9MT05HKSwgIjEiIChzKQot ICAgICAgICA6ICJtZW1vcnkiICk7Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLS8qCi0gKiBUaGlz IGxvb2tzIGhvcnJpYmx5IHVnbHksIGJ1dCB0aGUgY29tcGlsZXIgY2FuIG9wdGltaXplIGl0 IHRvdGFsbHksCi0gKiBhcyB3ZSBieSBub3cga25vdyB0aGF0IGJvdGggcGF0dGVybiBhbmQg Y291bnQgaXMgY29uc3RhbnQuLgotICovCi1zdGF0aWMgYWx3YXlzX2lubGluZSB2b2lkICpf X2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgKLSAgICB2b2lkICpzLCB1bnNpZ25lZCBs b25nIHBhdHRlcm4sIHNpemVfdCBjb3VudCkKLXsKLSAgICBzd2l0Y2ggKCBjb3VudCApCi0g ICAgewotICAgIGNhc2UgMDoKLSAgICAgICAgcmV0dXJuIHM7Ci0gICAgY2FzZSAxOgotICAg ICAgICAqKHU4ICopcyA9IHBhdHRlcm47Ci0gICAgICAgIHJldHVybiBzOwotICAgIGNhc2Ug MjoKLSAgICAgICAgKih1MTYgKilzID0gcGF0dGVybjsKLSAgICAgICAgcmV0dXJuIHM7Ci0g ICAgY2FzZSAzOgotICAgICAgICAqKHUxNiAqKXMgPSBwYXR0ZXJuOwotICAgICAgICAqKDIr KHU4ICopcykgPSBwYXR0ZXJuOwotICAgICAgICByZXR1cm4gczsKLSAgICBjYXNlIDQ6Ci0g ICAgICAgICoodTMyICopcyA9IHBhdHRlcm47Ci0gICAgICAgIHJldHVybiBzOwotICAgIGNh c2UgNToKLSAgICAgICAgKih1MzIgKilzID0gcGF0dGVybjsKLSAgICAgICAgKig0Kyh1OCAq KXMpID0gcGF0dGVybjsKLSAgICAgICAgcmV0dXJuIHM7Ci0gICAgY2FzZSA2OgotICAgICAg ICAqKHUzMiAqKXMgPSBwYXR0ZXJuOwotICAgICAgICAqKDIrKHUxNiAqKXMpID0gcGF0dGVy bjsKLSAgICAgICAgcmV0dXJuIHM7Ci0gICAgY2FzZSA3OgotICAgICAgICAqKHUzMiAqKXMg PSBwYXR0ZXJuOwotICAgICAgICAqKDIrKHUxNiAqKXMpID0gcGF0dGVybjsKLSAgICAgICAg Kig2Kyh1OCAqKXMpID0gcGF0dGVybjsKLSAgICAgICAgcmV0dXJuIHM7Ci0gICAgY2FzZSA4 OgotICAgICAgICAqKHU2NCAqKXMgPSBwYXR0ZXJuOwotICAgICAgICByZXR1cm4gczsKLSAg ICB9Ci0jZGVmaW5lIENPTU1PTih4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgIF9fYXNtX18gIF9fdm9sYXRpbGVfXyAoICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgInJlcCA7IHN0b3MiX19P UyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHgg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgOiAiYSIgKHBhdHRlcm4pLCAiMCIgKGNvdW50L0JZ VEVTX1BFUl9MT05HKSwgIjEiIChzKSAgICBcCi0gICAgICAgIDogIm1lbW9yeSIgKQotICAg IHsKLSAgICAgICAgbG9uZyBkMCwgZDE7Ci0gICAgICAgIHN3aXRjaCAoIGNvdW50ICUgQllU RVNfUEVSX0xPTkcgKQotICAgICAgICB7Ci0gICAgICAgIGNhc2UgMDogQ09NTU9OKCIiKTsg cmV0dXJuIHM7Ci0gICAgICAgIGNhc2UgMTogQ09NTU9OKCJcblx0c3Rvc2IiKTsgcmV0dXJu IHM7Ci0gICAgICAgIGNhc2UgMjogQ09NTU9OKCJcblx0c3Rvc3ciKTsgcmV0dXJuIHM7Ci0g ICAgICAgIGNhc2UgMzogQ09NTU9OKCJcblx0c3Rvc3dcblx0c3Rvc2IiKTsgcmV0dXJuIHM7 Ci0gICAgICAgIGNhc2UgNDogQ09NTU9OKCJcblx0c3Rvc2wiKTsgcmV0dXJuIHM7Ci0gICAg ICAgIGNhc2UgNTogQ09NTU9OKCJcblx0c3Rvc2xcblx0c3Rvc2IiKTsgcmV0dXJuIHM7Ci0g ICAgICAgIGNhc2UgNjogQ09NTU9OKCJcblx0c3Rvc2xcblx0c3Rvc3ciKTsgcmV0dXJuIHM7 Ci0gICAgICAgIGNhc2UgNzogQ09NTU9OKCJcblx0c3Rvc2xcblx0c3Rvc3dcblx0c3Rvc2Ii KTsgcmV0dXJuIHM7Ci0gICAgICAgIH0KLSAgICB9Ci0jdW5kZWYgQ09NTU9OCi0gICAgcmV0 dXJuIHM7Ci19Ci0KLSNkZWZpbmUgX19jb25zdGFudF9jX3hfbWVtc2V0KHMsIGMsIGNvdW50 KSBcCi0oX19idWlsdGluX2NvbnN0YW50X3AoY291bnQpID8gXAotIF9fY29uc3RhbnRfY19h bmRfY291bnRfbWVtc2V0KChzKSwoYyksKGNvdW50KSkgOiBcCi0gX19jb25zdGFudF9jX21l bXNldCgocyksKGMpLChjb3VudCkpKQotCi0jZGVmaW5lIF9fdmFyX3hfbWVtc2V0KHMsIGMs IGNvdW50KSBcCi0oX19idWlsdGluX2NvbnN0YW50X3AoY291bnQpID8gXAotIF9fY29uc3Rh bnRfY291bnRfbWVtc2V0KChzKSwoYyksKGNvdW50KSkgOiBcCi0gX19tZW1zZXRfZ2VuZXJp YygocyksKGMpLChjb3VudCkpKQotCi0jaWZkZWYgQ09ORklHX1g4Nl82NAotI2RlZmluZSBN RU1TRVRfUEFUVEVSTl9NVUwgMHgwMTAxMDEwMTAxMDEwMTAxVUwKLSNlbHNlCi0jZGVmaW5l IE1FTVNFVF9QQVRURVJOX01VTCAweDAxMDEwMTAxVUwKLSNlbmRpZgotCi0jZGVmaW5lIF9f SEFWRV9BUkNIX01FTVNFVAotI2RlZmluZSBtZW1zZXQocywgYywgY291bnQpIChfX21lbXNl dCgocyksKGMpLChjb3VudCkpKQotI2RlZmluZSBfX21lbXNldChzLCBjLCBjb3VudCkgXAot KF9fYnVpbHRpbl9jb25zdGFudF9wKGMpID8gXAotIF9fY29uc3RhbnRfY194X21lbXNldCgo cyksKE1FTVNFVF9QQVRURVJOX01VTCoodW5zaWduZWQgY2hhcikoYykpLChjb3VudCkpIDog XAotIF9fdmFyX3hfbWVtc2V0KChzKSwoYyksKGNvdW50KSkpCi0KICNlbmRpZiAvKiBfX1g4 Nl9TVFJJTkdfSF9fICovCg== --B_3356427890_31236962 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --B_3356427890_31236962--