From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v2 1/9] x86/boot/32: Convert the 32-bit pgtable setup code from assembly to C Date: Thu, 26 Jan 2017 14:41:24 -0500 Message-ID: <1485459692-23961-2-git-send-email-boris.ostrovsky@oracle.com> References: <1485459692-23961-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cWpy6-000870-0X for xen-devel@lists.xenproject.org; Thu, 26 Jan 2017 19:44:26 +0000 In-Reply-To: <1485459692-23961-1-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: JGross@suse.com Cc: xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com, linux-kernel@vger.kernel.org, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhlIG5ldyBYZW4gUFZIIGVudHJ5IHBvaW50IHJlcXVpcmVzIHBhZ2UgdGFibGVzIHRvIGJlIHNl dHVwIGJ5IHRoZQprZXJuZWwgc2luY2UgaXQgaXMgZW50ZXJlZCB3aXRoIHBhZ2luZyBkaXNhYmxl ZC4KClB1bGwgdGhlIGNvbW1vbiBjb2RlIG91dCBvZiBoZWFkXzMyLlMgc28gdGhhdCBta19lYXJs eV9wZ3RibF8zMigpIGNhbiBiZQppbnZva2VkIGZyb20gYm90aCB0aGUgbmV3IFhlbiBlbnRyeSBw b2ludCBhbmQgdGhlIGV4aXN0aW5nIHN0YXJ0dXBfMzIoKQpjb2RlLgoKQ29udmVydCByZXN1bHRp bmcgY29tbW9uIGNvZGUgdG8gQy4KClNpZ25lZC1vZmYtYnk6IEJvcmlzIE9zdHJvdnNreSA8Ym9y aXMub3N0cm92c2t5QG9yYWNsZS5jb20+CkNjOiBBbmR5IEx1dG9taXJza2kgPGx1dG9Aa2VybmVs Lm9yZz4KQ2M6IEJvcmlzbGF2IFBldGtvdiA8YnBAYWxpZW44LmRlPgpDYzogQnJpYW4gR2Vyc3Qg PGJyZ2Vyc3RAZ21haWwuY29tPgpDYzogRGVueXMgVmxhc2Vua28gPGR2bGFzZW5rQHJlZGhhdC5j b20+CkNjOiBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KQ2M6IEpvc2ggUG9pbWJvZXVm IDxqcG9pbWJvZUByZWRoYXQuY29tPgpDYzogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4 LWZvdW5kYXRpb24ub3JnPgpDYzogUGV0ZXIgWmlqbHN0cmEgPHBldGVyekBpbmZyYWRlYWQub3Jn PgpDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+CkNjOiBtYXR0QGNvZGVi bHVlcHJpbnQuY28udWsKQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpMaW5rOiBo dHRwOi8vbGttbC5rZXJuZWwub3JnL3IvMTQ4MTIxNTQ3MS05NjM5LTEtZ2l0LXNlbmQtZW1haWwt Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20KU2lnbmVkLW9mZi1ieTogSW5nbyBNb2xuYXIgPG1p bmdvQGtlcm5lbC5vcmc+CihjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDFlNjIwZjliMjNlNTk4 YWI5MzZlY2UxMjIzM2U5OGU5NzkzMGI2OTIpCi0tLQpUaGlzIHBhdGNoIHNob3VsZCBnbyBpbnRv IG1haW5saW5lIGZyb20geDg2IHRyZWUgaW4gNC4xMCB0aW1lZnJhbWUuCgogYXJjaC94ODYvaW5j bHVkZS9hc20vcGd0YWJsZV8zMi5oIHwgIDMyICsrKysrKysrKysKIGFyY2gveDg2L2tlcm5lbC9o ZWFkMzIuYyAgICAgICAgICB8ICA2MiArKysrKysrKysrKysrKysrKysrCiBhcmNoL3g4Ni9rZXJu ZWwvaGVhZF8zMi5TICAgICAgICAgfCAxMjEgKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTAxIGluc2VydGlvbnMoKyksIDExNCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmggYi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgKaW5kZXggYjZjMGI0MC4uZmJjNzMzNiAx MDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oCisrKyBiL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaApAQCAtMjcsNiArMjcsNyBAQAogCiBleHRlcm4g cGdkX3Qgc3dhcHBlcl9wZ19kaXJbMTAyNF07CiBleHRlcm4gcGdkX3QgaW5pdGlhbF9wYWdlX3Rh YmxlWzEwMjRdOworZXh0ZXJuIHBtZF90IGluaXRpYWxfcGdfcG1kW107CiAKIHN0YXRpYyBpbmxp bmUgdm9pZCBwZ3RhYmxlX2NhY2hlX2luaXQodm9pZCkgeyB9CiBzdGF0aWMgaW5saW5lIHZvaWQg Y2hlY2tfcGd0X2NhY2hlKHZvaWQpIHsgfQpAQCAtNzUsNCArNzYsMzUgQEAgc3RhdGljIGlubGlu ZSB2b2lkIGNoZWNrX3BndF9jYWNoZSh2b2lkKSB7IH0KICNkZWZpbmUga2Vybl9hZGRyX3ZhbGlk KGthZGRyKQkoMCkKICNlbmRpZgogCisvKgorICogVGhpcyBpcyBob3cgbXVjaCBtZW1vcnkgaW4g YWRkaXRpb24gdG8gdGhlIG1lbW9yeSBjb3ZlcmVkIHVwIHRvCisgKiBhbmQgaW5jbHVkaW5nIF9l bmQgd2UgbmVlZCBtYXBwZWQgaW5pdGlhbGx5LgorICogV2UgbmVlZDoKKyAqICAgICAoS0VSTkVM X0lNQUdFX1NJWkUvNDA5NikgLyAxMDI0IHBhZ2VzICh3b3JzdCBjYXNlLCBub24gUEFFKQorICog ICAgIChLRVJORUxfSU1BR0VfU0laRS80MDk2KSAvIDUxMiArIDQgcGFnZXMgKHdvcnN0IGNhc2Ug Zm9yIFBBRSkKKyAqCisgKiBNb2R1bG8gcm91bmRpbmcsIGVhY2ggbWVnYWJ5dGUgYXNzaWduZWQg aGVyZSByZXF1aXJlcyBhIGtpbG9ieXRlIG9mCisgKiBtZW1vcnksIHdoaWNoIGlzIGN1cnJlbnRs eSB1bnJlY2xhaW1lZC4KKyAqCisgKiBUaGlzIHNob3VsZCBiZSBhIG11bHRpcGxlIG9mIGEgcGFn ZS4KKyAqCisgKiBLRVJORUxfSU1BR0VfU0laRSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHBhKF9l bmQpCisgKiBhbmQgc21hbGwgdGhhbiBtYXhfbG93X3Bmbiwgb3RoZXJ3aXNlIHdpbGwgd2FzdGUg c29tZSBwYWdlIHRhYmxlIGVudHJpZXMKKyAqLworI2lmIFBUUlNfUEVSX1BNRCA+IDEKKyNkZWZp bmUgUEFHRV9UQUJMRV9TSVpFKHBhZ2VzKSAoKChwYWdlcykgLyBQVFJTX1BFUl9QTUQpICsgUFRS U19QRVJfUEdEKQorI2Vsc2UKKyNkZWZpbmUgUEFHRV9UQUJMRV9TSVpFKHBhZ2VzKSAoKHBhZ2Vz KSAvIFBUUlNfUEVSX1BHRCkKKyNlbmRpZgorCisvKgorICogTnVtYmVyIG9mIHBvc3NpYmxlIHBh Z2VzIGluIHRoZSBsb3dtZW0gcmVnaW9uLgorICoKKyAqIFdlIHNoaWZ0IDIgYnkgMzEgaW5zdGVh ZCBvZiAxIGJ5IDMyIHRvIHRoZSBsZWZ0IGluIG9yZGVyIHRvIGF2b2lkIGEKKyAqIGdhcyB3YXJu aW5nIGFib3V0IG92ZXJmbG93aW5nIHNoaWZ0IGNvdW50IHdoZW4gZ2FzIGhhcyBiZWVuIGNvbXBp bGVkCisgKiB3aXRoIG9ubHkgYSBob3N0IHRhcmdldCBzdXBwb3J0IHVzaW5nIGEgMzItYml0IHR5 cGUgZm9yIGludGVybmFsCisgKiByZXByZXNlbnRhdGlvbi4KKyAqLworI2RlZmluZSBMT1dNRU1f UEFHRVMgKCgoKDI8PDMxKSAtIF9fUEFHRV9PRkZTRVQpID4+IFBBR0VfU0hJRlQpKQorCiAjZW5k aWYgLyogX0FTTV9YODZfUEdUQUJMRV8zMl9IICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJu ZWwvaGVhZDMyLmMgYi9hcmNoL3g4Ni9rZXJuZWwvaGVhZDMyLmMKaW5kZXggZjE2YzU1Yi4uZTVm YjQzNiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2hlYWQzMi5jCisrKyBiL2FyY2gveDg2 L2tlcm5lbC9oZWFkMzIuYwpAQCAtNDksMyArNDksNjUgQEAgYXNtbGlua2FnZSBfX3Zpc2libGUg dm9pZCBfX2luaXQgaTM4Nl9zdGFydF9rZXJuZWwodm9pZCkKIAogCXN0YXJ0X2tlcm5lbCgpOwog fQorCisvKgorICogSW5pdGlhbGl6ZSBwYWdlIHRhYmxlcy4gIFRoaXMgY3JlYXRlcyBhIFBERSBh bmQgYSBzZXQgb2YgcGFnZQorICogdGFibGVzLCB3aGljaCBhcmUgbG9jYXRlZCBpbW1lZGlhdGVs eSBiZXlvbmQgX19icmtfYmFzZS4gIFRoZSB2YXJpYWJsZQorICogX2Jya19lbmQgaXMgc2V0IHVw IHRvIHBvaW50IHRvIHRoZSBmaXJzdCAic2FmZSIgbG9jYXRpb24uCisgKiBNYXBwaW5ncyBhcmUg Y3JlYXRlZCBib3RoIGF0IHZpcnR1YWwgYWRkcmVzcyAwIChpZGVudGl0eSBtYXBwaW5nKQorICog YW5kIFBBR0VfT0ZGU0VUIGZvciB1cCB0byBfZW5kLgorICoKKyAqIEluIFBBRSBtb2RlIGluaXRp YWxfcGFnZV90YWJsZSBpcyBzdGF0aWNhbGx5IGRlZmluZWQgdG8gY29udGFpbgorICogZW5vdWdo IGVudHJpZXMgdG8gY292ZXIgdGhlIFZNU1BMSVQgb3B0aW9uICh0aGF0IGlzIHRoZSB0b3AgMSwg MiBvciAzCisgKiBlbnRyaWVzKS4gVGhlIGlkZW50aXR5IG1hcHBpbmcgaXMgaGFuZGxlZCBieSBw b2ludGluZyB0d28gUEdEIGVudHJpZXMKKyAqIHRvIHRoZSBmaXJzdCBrZXJuZWwgUE1ELiBOb3Rl IHRoZSB1cHBlciBoYWxmIG9mIGVhY2ggUE1EIG9yIFBURSBhcmUKKyAqIGFsd2F5cyB6ZXJvIGF0 IHRoaXMgc3RhZ2UuCisgKi8KK3ZvaWQgX19pbml0IG1rX2Vhcmx5X3BndGJsXzMyKHZvaWQpCit7 CisjaWZkZWYgX19wYQorI3VuZGVmIF9fcGEKKyNlbmRpZgorI2RlZmluZSBfX3BhKHgpICAoKHVu c2lnbmVkIGxvbmcpKHgpIC0gUEFHRV9PRkZTRVQpCisJcHRlX3QgcHRlLCAqcHRlcDsKKwlpbnQg aTsKKwl1bnNpZ25lZCBsb25nICpwdHI7CisJLyogRW5vdWdoIHNwYWNlIHRvIGZpdCBwYWdldGFi bGVzIGZvciB0aGUgbG93IG1lbW9yeSBsaW5lYXIgbWFwICovCisJY29uc3QgdW5zaWduZWQgbG9u ZyBsaW1pdCA9IF9fcGEoX2VuZCkgKworCQkoUEFHRV9UQUJMRV9TSVpFKExPV01FTV9QQUdFUykg PDwgUEFHRV9TSElGVCk7CisjaWZkZWYgQ09ORklHX1g4Nl9QQUUKKwlwbWRfdCBwbDIsICpwbDJw ID0gKHBtZF90ICopX19wYShpbml0aWFsX3BnX3BtZCk7CisjZGVmaW5lIFNFVF9QTDIocGwyLCB2 YWwpICAgIHsgKHBsMikucG1kID0gKHZhbCk7IH0KKyNlbHNlCisJcGdkX3QgcGwyLCAqcGwycCA9 IChwZ2RfdCAqKV9fcGEoaW5pdGlhbF9wYWdlX3RhYmxlKTsKKyNkZWZpbmUgU0VUX1BMMihwbDIs IHZhbCkgICB7IChwbDIpLnBnZCA9ICh2YWwpOyB9CisjZW5kaWYKKworCXB0ZXAgPSAocHRlX3Qg KilfX3BhKF9fYnJrX2Jhc2UpOworCXB0ZS5wdGUgPSBQVEVfSURFTlRfQVRUUjsKKworCXdoaWxl ICgocHRlLnB0ZSAmIFBURV9QRk5fTUFTSykgPCBsaW1pdCkgeworCisJCVNFVF9QTDIocGwyLCAo dW5zaWduZWQgbG9uZylwdGVwIHwgUERFX0lERU5UX0FUVFIpOworCQkqcGwycCA9IHBsMjsKKyNp Zm5kZWYgQ09ORklHX1g4Nl9QQUUKKwkJLyogS2VybmVsIFBERSBlbnRyeSAqLworCQkqKHBsMnAg KyAgKChQQUdFX09GRlNFVCA+PiBQR0RJUl9TSElGVCkpKSA9IHBsMjsKKyNlbmRpZgorCQlmb3Ig KGkgPSAwOyBpIDwgUFRSU19QRVJfUFRFOyBpKyspIHsKKwkJCSpwdGVwID0gcHRlOworCQkJcHRl LnB0ZSArPSBQQUdFX1NJWkU7CisJCQlwdGVwKys7CisJCX0KKworCQlwbDJwKys7CisJfQorCisJ cHRyID0gKHVuc2lnbmVkIGxvbmcgKilfX3BhKCZtYXhfcGZuX21hcHBlZCk7CisJLyogQ2FuJ3Qg dXNlIHB0ZV9wZm4oKSBzaW5jZSBpdCdzIGEgY2FsbCB3aXRoIENPTkZJR19QQVJBVklSVCAqLwor CSpwdHIgPSAocHRlLnB0ZSAmIFBURV9QRk5fTUFTSykgPj4gUEFHRV9TSElGVDsKKworCXB0ciA9 ICh1bnNpZ25lZCBsb25nICopX19wYSgmX2Jya19lbmQpOworCSpwdHIgPSAodW5zaWduZWQgbG9u ZylwdGVwICsgUEFHRV9PRkZTRVQ7Cit9CisKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9o ZWFkXzMyLlMgYi9hcmNoL3g4Ni9rZXJuZWwvaGVhZF8zMi5TCmluZGV4IDRlODU3N2QuLjFmODVl ZTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9oZWFkXzMyLlMKKysrIGIvYXJjaC94ODYv a2VybmVsL2hlYWRfMzIuUwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPGFzbS9ub3BzLmg+ CiAjaW5jbHVkZSA8YXNtL2Jvb3RwYXJhbS5oPgogI2luY2x1ZGUgPGFzbS9leHBvcnQuaD4KKyNp bmNsdWRlIDxhc20vcGd0YWJsZV8zMi5oPgogCiAvKiBQaHlzaWNhbCBhZGRyZXNzICovCiAjZGVm aW5lIHBhKFgpICgoWCkgLSBfX1BBR0VfT0ZGU0VUKQpAQCAtNDEsNDQgKzQyLDEwIEBACiAjZGVm aW5lIFg4Nl9DQVBBQklMSVRZCW5ld19jcHVfZGF0YStDUFVJTkZPX3g4Nl9jYXBhYmlsaXR5CiAj ZGVmaW5lIFg4Nl9WRU5ET1JfSUQJbmV3X2NwdV9kYXRhK0NQVUlORk9feDg2X3ZlbmRvcl9pZAog Ci0vKgotICogVGhpcyBpcyBob3cgbXVjaCBtZW1vcnkgaW4gYWRkaXRpb24gdG8gdGhlIG1lbW9y eSBjb3ZlcmVkIHVwIHRvCi0gKiBhbmQgaW5jbHVkaW5nIF9lbmQgd2UgbmVlZCBtYXBwZWQgaW5p dGlhbGx5LgotICogV2UgbmVlZDoKLSAqICAgICAoS0VSTkVMX0lNQUdFX1NJWkUvNDA5NikgLyAx MDI0IHBhZ2VzICh3b3JzdCBjYXNlLCBub24gUEFFKQotICogICAgIChLRVJORUxfSU1BR0VfU0la RS80MDk2KSAvIDUxMiArIDQgcGFnZXMgKHdvcnN0IGNhc2UgZm9yIFBBRSkKLSAqCi0gKiBNb2R1 bG8gcm91bmRpbmcsIGVhY2ggbWVnYWJ5dGUgYXNzaWduZWQgaGVyZSByZXF1aXJlcyBhIGtpbG9i eXRlIG9mCi0gKiBtZW1vcnksIHdoaWNoIGlzIGN1cnJlbnRseSB1bnJlY2xhaW1lZC4KLSAqCi0g KiBUaGlzIHNob3VsZCBiZSBhIG11bHRpcGxlIG9mIGEgcGFnZS4KLSAqCi0gKiBLRVJORUxfSU1B R0VfU0laRSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHBhKF9lbmQpCi0gKiBhbmQgc21hbGwgdGhh biBtYXhfbG93X3Bmbiwgb3RoZXJ3aXNlIHdpbGwgd2FzdGUgc29tZSBwYWdlIHRhYmxlIGVudHJp ZXMKLSAqLwotCi0jaWYgUFRSU19QRVJfUE1EID4gMQotI2RlZmluZSBQQUdFX1RBQkxFX1NJWkUo cGFnZXMpICgoKHBhZ2VzKSAvIFBUUlNfUEVSX1BNRCkgKyBQVFJTX1BFUl9QR0QpCi0jZWxzZQot I2RlZmluZSBQQUdFX1RBQkxFX1NJWkUocGFnZXMpICgocGFnZXMpIC8gUFRSU19QRVJfUEdEKQot I2VuZGlmCiAKICNkZWZpbmUgU0laRU9GX1BUUkVHUyAxNyo0CiAKIC8qCi0gKiBOdW1iZXIgb2Yg cG9zc2libGUgcGFnZXMgaW4gdGhlIGxvd21lbSByZWdpb24uCi0gKgotICogV2Ugc2hpZnQgMiBi eSAzMSBpbnN0ZWFkIG9mIDEgYnkgMzIgdG8gdGhlIGxlZnQgaW4gb3JkZXIgdG8gYXZvaWQgYQot ICogZ2FzIHdhcm5pbmcgYWJvdXQgb3ZlcmZsb3dpbmcgc2hpZnQgY291bnQgd2hlbiBnYXMgaGFz IGJlZW4gY29tcGlsZWQKLSAqIHdpdGggb25seSBhIGhvc3QgdGFyZ2V0IHN1cHBvcnQgdXNpbmcg YSAzMi1iaXQgdHlwZSBmb3IgaW50ZXJuYWwKLSAqIHJlcHJlc2VudGF0aW9uLgotICovCi1MT1dN RU1fUEFHRVMgPSAoKCgyPDwzMSkgLSBfX1BBR0VfT0ZGU0VUKSA+PiBQQUdFX1NISUZUKQotCi0v KiBFbm91Z2ggc3BhY2UgdG8gZml0IHBhZ2V0YWJsZXMgZm9yIHRoZSBsb3cgbWVtb3J5IGxpbmVh ciBtYXAgKi8KLU1BUFBJTkdfQkVZT05EX0VORCA9IFBBR0VfVEFCTEVfU0laRShMT1dNRU1fUEFH RVMpIDw8IFBBR0VfU0hJRlQKLQotLyoKICAqIFdvcnN0LWNhc2Ugc2l6ZSBvZiB0aGUga2VybmVs IG1hcHBpbmcgd2UgbmVlZCB0byBtYWtlOgogICogYSByZWxvY2F0YWJsZSBrZXJuZWwgY2FuIGxp dmUgYW55d2hlcmUgaW4gbG93bWVtLCBzbyB3ZSBuZWVkIHRvIGJlIGFibGUKICAqIHRvIG1hcCBh bGwgb2YgbG93bWVtLgpAQCAtMTYwLDkwICsxMjcsMTUgQEAgRU5UUlkoc3RhcnR1cF8zMikKIAlj YWxsIGxvYWRfdWNvZGVfYnNwCiAjZW5kaWYKIAotLyoKLSAqIEluaXRpYWxpemUgcGFnZSB0YWJs ZXMuICBUaGlzIGNyZWF0ZXMgYSBQREUgYW5kIGEgc2V0IG9mIHBhZ2UKLSAqIHRhYmxlcywgd2hp Y2ggYXJlIGxvY2F0ZWQgaW1tZWRpYXRlbHkgYmV5b25kIF9fYnJrX2Jhc2UuICBUaGUgdmFyaWFi bGUKLSAqIF9icmtfZW5kIGlzIHNldCB1cCB0byBwb2ludCB0byB0aGUgZmlyc3QgInNhZmUiIGxv Y2F0aW9uLgotICogTWFwcGluZ3MgYXJlIGNyZWF0ZWQgYm90aCBhdCB2aXJ0dWFsIGFkZHJlc3Mg MCAoaWRlbnRpdHkgbWFwcGluZykKLSAqIGFuZCBQQUdFX09GRlNFVCBmb3IgdXAgdG8gX2VuZC4K LSAqLwotI2lmZGVmIENPTkZJR19YODZfUEFFCi0KLQkvKgotCSAqIEluIFBBRSBtb2RlIGluaXRp YWxfcGFnZV90YWJsZSBpcyBzdGF0aWNhbGx5IGRlZmluZWQgdG8gY29udGFpbgotCSAqIGVub3Vn aCBlbnRyaWVzIHRvIGNvdmVyIHRoZSBWTVNQTElUIG9wdGlvbiAodGhhdCBpcyB0aGUgdG9wIDEs IDIgb3IgMwotCSAqIGVudHJpZXMpLiBUaGUgaWRlbnRpdHkgbWFwcGluZyBpcyBoYW5kbGVkIGJ5 IHBvaW50aW5nIHR3byBQR0QgZW50cmllcwotCSAqIHRvIHRoZSBmaXJzdCBrZXJuZWwgUE1ELgot CSAqCi0JICogTm90ZSB0aGUgdXBwZXIgaGFsZiBvZiBlYWNoIFBNRCBvciBQVEUgYXJlIGFsd2F5 cyB6ZXJvIGF0IHRoaXMgc3RhZ2UuCi0JICovCi0KLSNkZWZpbmUgS1BNRFMgKCgoLV9fUEFHRV9P RkZTRVQpID4+IDMwKSAmIDMpIC8qIE51bWJlciBvZiBrZXJuZWwgUE1EcyAqLwotCi0JeG9ybCAl ZWJ4LCVlYngJCQkJLyogJWVieCBpcyBrZXB0IGF0IHplcm8gKi8KLQotCW1vdmwgJHBhKF9fYnJr X2Jhc2UpLCAlZWRpCi0JbW92bCAkcGEoaW5pdGlhbF9wZ19wbWQpLCAlZWR4Ci0JbW92bCAkUFRF X0lERU5UX0FUVFIsICVlYXgKLTEwOgotCWxlYWwgUERFX0lERU5UX0FUVFIoJWVkaSksJWVjeAkJ LyogQ3JlYXRlIFBNRCBlbnRyeSAqLwotCW1vdmwgJWVjeCwoJWVkeCkJCQkvKiBTdG9yZSBQTUQg ZW50cnkgKi8KLQkJCQkJCS8qIFVwcGVyIGhhbGYgYWxyZWFkeSB6ZXJvICovCi0JYWRkbCAkOCwl ZWR4Ci0JbW92bCAkNTEyLCVlY3gKLTExOgotCXN0b3NsCi0JeGNoZ2wgJWVheCwlZWJ4Ci0Jc3Rv c2wKLQl4Y2hnbCAlZWF4LCVlYngKLQlhZGRsICQweDEwMDAsJWVheAotCWxvb3AgMTFiCi0KLQkv KgotCSAqIEVuZCBjb25kaXRpb246IHdlIG11c3QgbWFwIHVwIHRvIHRoZSBlbmQgKyBNQVBQSU5H X0JFWU9ORF9FTkQuCi0JICovCi0JbW92bCAkcGEoX2VuZCkgKyBNQVBQSU5HX0JFWU9ORF9FTkQg KyBQVEVfSURFTlRfQVRUUiwgJWVicAotCWNtcGwgJWVicCwlZWF4Ci0JamIgMTBiCi0xOgotCWFk ZGwgJF9fUEFHRV9PRkZTRVQsICVlZGkKLQltb3ZsICVlZGksIHBhKF9icmtfZW5kKQotCXNocmwg JDEyLCAlZWF4Ci0JbW92bCAlZWF4LCBwYShtYXhfcGZuX21hcHBlZCkKKwkvKiBDcmVhdGUgZWFy bHkgcGFnZXRhYmxlcy4gKi8KKwljYWxsICBta19lYXJseV9wZ3RibF8zMgogCiAJLyogRG8gZWFy bHkgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGZpeG1hcCBhcmVhICovCiAJbW92bCAkcGEoaW5pdGlh bF9wZ19maXhtYXApK1BERV9JREVOVF9BVFRSLCVlYXgKKyNpZmRlZiAgQ09ORklHX1g4Nl9QQUUK KyNkZWZpbmUgS1BNRFMgKCgoLV9fUEFHRV9PRkZTRVQpID4+IDMwKSAmIDMpIC8qIE51bWJlciBv ZiBrZXJuZWwgUE1EcyAqLwogCW1vdmwgJWVheCxwYShpbml0aWFsX3BnX3BtZCsweDEwMDAqS1BN RFMtOCkKLSNlbHNlCS8qIE5vdCBQQUUgKi8KLQotcGFnZV9wZGVfb2Zmc2V0ID0gKF9fUEFHRV9P RkZTRVQgPj4gMjApOwotCi0JbW92bCAkcGEoX19icmtfYmFzZSksICVlZGkKLQltb3ZsICRwYShp bml0aWFsX3BhZ2VfdGFibGUpLCAlZWR4Ci0JbW92bCAkUFRFX0lERU5UX0FUVFIsICVlYXgKLTEw OgotCWxlYWwgUERFX0lERU5UX0FUVFIoJWVkaSksJWVjeAkJLyogQ3JlYXRlIFBERSBlbnRyeSAq LwotCW1vdmwgJWVjeCwoJWVkeCkJCQkvKiBTdG9yZSBpZGVudGl0eSBQREUgZW50cnkgKi8KLQlt b3ZsICVlY3gscGFnZV9wZGVfb2Zmc2V0KCVlZHgpCQkvKiBTdG9yZSBrZXJuZWwgUERFIGVudHJ5 ICovCi0JYWRkbCAkNCwlZWR4Ci0JbW92bCAkMTAyNCwgJWVjeAotMTE6Ci0Jc3Rvc2wKLQlhZGRs ICQweDEwMDAsJWVheAotCWxvb3AgMTFiCi0JLyoKLQkgKiBFbmQgY29uZGl0aW9uOiB3ZSBtdXN0 IG1hcCB1cCB0byB0aGUgZW5kICsgTUFQUElOR19CRVlPTkRfRU5ELgotCSAqLwotCW1vdmwgJHBh KF9lbmQpICsgTUFQUElOR19CRVlPTkRfRU5EICsgUFRFX0lERU5UX0FUVFIsICVlYnAKLQljbXBs ICVlYnAsJWVheAotCWpiIDEwYgotCWFkZGwgJF9fUEFHRV9PRkZTRVQsICVlZGkKLQltb3ZsICVl ZGksIHBhKF9icmtfZW5kKQotCXNocmwgJDEyLCAlZWF4Ci0JbW92bCAlZWF4LCBwYShtYXhfcGZu X21hcHBlZCkKLQotCS8qIERvIGVhcmx5IGluaXRpYWxpemF0aW9uIG9mIHRoZSBmaXhtYXAgYXJl YSAqLwotCW1vdmwgJHBhKGluaXRpYWxfcGdfZml4bWFwKStQREVfSURFTlRfQVRUUiwlZWF4Cisj ZWxzZQogCW1vdmwgJWVheCxwYShpbml0aWFsX3BhZ2VfdGFibGUrMHhmZmMpCiAjZW5kaWYKIApA QCAtNjY2LDYgKzU1OCw3IEBAIEVOVFJZKHNldHVwX29uY2VfcmVmKQogX19QQUdFX0FMSUdORURf QlNTCiAJLmFsaWduIFBBR0VfU0laRQogI2lmZGVmIENPTkZJR19YODZfUEFFCisuZ2xvYmwgaW5p dGlhbF9wZ19wbWQKIGluaXRpYWxfcGdfcG1kOgogCS5maWxsIDEwMjQqS1BNRFMsNCwwCiAjZWxz ZQotLSAKMS44LjMuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=