From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [RFC 12/22] xen/arm: p2m: Introduce p2m_get_entry and use it to implement __p2m_lookup Date: Thu, 28 Jul 2016 15:51:35 +0100 Message-ID: <1469717505-8026-13-git-send-email-julien.grall@arm.com> References: <1469717505-8026-1-git-send-email-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1469717505-8026-1-git-send-email-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: proskurin@sec.in.tum.de, Julien Grall , sstabellini@kernel.org, steve.capper@arm.com, wei.chen@linaro.org List-Id: xen-devel@lists.xenproject.org Q3VycmVudGx5LCBmb3IgYSBnaXZlbiBHRk4sIHRoZSBmdW5jdGlvbiBfX3AybV9sb29rdXAgd2ls bCBvbmx5IHJldHVybgp0aGUgYXNzb2NpYXRlZCBNRk4gYW5kIHRoZSBwMm0gdHlwZSBvZiB0aGUg bWFwcGluZy4KCkluIHNvbWUgY2FzZSB3ZSBuZWVkIHRoZSBvcmRlciBvZiB0aGUgbWFwcGluZyBh bmQgdGhlIG1lbWFjY2VzcwpwZXJtaXNzaW9uLiBSYXRoZXIgdGhhbiBwcm92aWRpbmcgc2VwYXJh dGUgZnVuY3Rpb24gZm9yIHRoaXMgcHVycG9zZSwKaXQgaXMgYmV0dGVyIHRvIGltcGxlbWVudCBh IGdlbmVyaWMgZnVuY3Rpb24gdG8gcmV0dXJuIGFsbCB0aGUKaW5mb3JtYXRpb24uCgpUbyBhdm9p ZCBwYXNzaW5nIGR1bW15IHBhcmFtZXRlciwgYSBjYWxsZXIgdGhhdCBkb2VzIG5lZWQgYSBzcGVj aWZpYwppbmZvcm1hdGlvbiBjYW4gdXNlIE5VTEwgaW5zdGVhZC4KClRoZSBsaXN0IG9mIHRoZSBp bmZvcm1hdGlvbnMgcmV0cmlldmVkIGlzIGJhc2VkIG9uIHRoZSB4ODYgdmVyc2lvbi4gQWxsCm9m IHRoZW0gd2lsbCBiZSB1c2VkIGluIGZvbGxvdy11cCBwYXRjaGVzLgoKSXQgbWlnaHQgaGF2ZSBi ZWVuIHBvc3NpYmxlIHRvIGV4dGVuZCBfX3AybV9sb29rdXAsIGhvd2V2ZXIgSSBjaG9vc2UgdG8K cmVpbXBsZW1lbnQgaXQgZnJvbSBzY3JhdGNoIHRvIGFsbG93IHNoYXJpbmcgc29tZSBoZWxwZXJz IHdpdGggdGhlCmZ1bmN0aW9uIHRoYXQgd2lsbCB1cGRhdGUgdGhlIFAyTSAod2lsbCBiZSBhZGRl ZCBpbiBhIGZvbGxvdy11cCBwYXRjaCkuCgpTaWduZWQtb2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGp1 bGllbi5ncmFsbEBhcm0uY29tPgotLS0KIHhlbi9hcmNoL2FybS9wMm0uYyAgICAgICAgIHwgMTg4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogeGVuL2luY2x1 ZGUvYXNtLWFybS9wYWdlLmggfCAgIDQgKwogMiBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9u cygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3AybS5jIGIv eGVuL2FyY2gvYXJtL3AybS5jCmluZGV4IGQ0YTRiNjIuLjg2NzZiOWQgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL2FybS9wMm0uYworKysgYi94ZW4vYXJjaC9hcm0vcDJtLmMKQEAgLTM2LDYgKzM2LDgg QEAgc3RhdGljIGNvbnN0IHBhZGRyX3QgbGV2ZWxfbWFza3NbXSA9CiAgICAgeyBaRVJPRVRIX01B U0ssIEZJUlNUX01BU0ssIFNFQ09ORF9NQVNLLCBUSElSRF9NQVNLIH07CiBzdGF0aWMgY29uc3Qg dW5zaWduZWQgaW50IGxldmVsX3NoaWZ0c1tdID0KICAgICB7IFpFUk9FVEhfU0hJRlQsIEZJUlNU X1NISUZULCBTRUNPTkRfU0hJRlQsIFRISVJEX1NISUZUIH07CitzdGF0aWMgY29uc3QgdW5zaWdu ZWQgaW50IGxldmVsX29yZGVyc1tdID0KKyAgICB7IFpFUk9FVEhfT1JERVIsIEZJUlNUX09SREVS LCBTRUNPTkRfT1JERVIsIFRISVJEX09SREVSIH07CiAKIHN0YXRpYyBib29sX3QgcDJtX3ZhbGlk KGxwYWVfdCBwdGUpCiB7CkBAIC0yMzYsMjggKzIzOCw5OSBAQCBzdGF0aWMgbHBhZV90ICpwMm1f Z2V0X3Jvb3RfcG9pbnRlcihzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogCiAvKgogICogTG9va3Vw IHRoZSBNRk4gY29ycmVzcG9uZGluZyB0byBhIGRvbWFpbidzIEdGTi4KKyAqIExvb2t1cCBtZW0g YWNjZXNzIGluIHRoZSByYXRyaXggdHJlZS4KKyAqIFRoZSBlbnRyaWVzIGFzc29jaWF0ZWQgdG8g dGhlIEdGTiBpcyBjb25zaWRlcmVkIHZhbGlkLgorICovCitzdGF0aWMgcDJtX2FjY2Vzc190IHAy bV9tZW1fYWNjZXNzX3JhZGl4X2dldChzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBnZm5fdCBnZm4p Cit7CisgICAgdm9pZCAqcHRyOworCisgICAgaWYgKCAhcDJtLT5tZW1fYWNjZXNzX2VuYWJsZWQg KQorICAgICAgICByZXR1cm4gcDJtX2FjY2Vzc19yd3g7CisKKyAgICBwdHIgPSByYWRpeF90cmVl X2xvb2t1cCgmcDJtLT5tZW1fYWNjZXNzX3NldHRpbmdzLCBnZm5feChnZm4pKTsKKyAgICBpZiAo ICFwdHIgKQorICAgICAgICByZXR1cm4gcDJtX2FjY2Vzc19yd3g7CisgICAgZWxzZQorICAgICAg ICByZXR1cm4gcmFkaXhfdHJlZV9wdHJfdG9faW50KHB0cik7Cit9CisKKyNkZWZpbmUgR1VFU1Rf VEFCTEVfTUFQX0ZBSUxFRCAwCisjZGVmaW5lIEdVRVNUX1RBQkxFX1NVUEVSX1BBR0UgMQorI2Rl ZmluZSBHVUVTVF9UQUJMRV9OT1JNQUxfUEFHRSAyCisKK3N0YXRpYyBpbnQgcDJtX2NyZWF0ZV90 YWJsZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBscGFlX3QgKmVudHJ5LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBsZXZlbF9zaGlmdCk7CisKKy8qCisgKiBUYWtlIHRoZSBjdXJy ZW50bHkgbWFwcGVkIHRhYmxlLCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIEdGTiBlbnRyeSwKKyAq IGFuZCBtYXAgdGhlIG5leHQgdGFibGUsIGlmIGF2YWlsYWJsZS4KICAqCi0gKiBUaGVyZSBhcmUg bm8gcHJvY2Vzc29yIGZ1bmN0aW9ucyB0byBkbyBhIHN0YWdlIDIgb25seSBsb29rdXAgdGhlcmVm b3JlIHdlCi0gKiBkbyBhIGEgc29mdHdhcmUgd2Fsay4KKyAqIFJldHVybiB2YWx1ZXM6CisgKiAg R1VFU1RfVEFCTEVfTUFQX0ZBSUxFRDogRWl0aGVyIHJlYWRfb25seSB3YXMgc2V0IGFuZCB0aGUg ZW50cnkKKyAqICB3YXMgZW1wdHksIG9yIGFsbG9jYXRpbmcgYSBuZXcgcGFnZSBmYWlsZWQuCisg KiAgR1VFU1RfVEFCTEVfTk9STUFMX1BBR0U6IG5leHQgbGV2ZWwgbWFwcGVkIG5vcm1hbGx5Cisg KiAgR1VFU1RfVEFCTEVfU1VQRVJfUEFHRTogVGhlIG5leHQgZW50cnkgcG9pbnRzIHRvIGEgc3Vw ZXJwYWdlLgogICovCi1zdGF0aWMgbWZuX3QgX19wMm1fbG9va3VwKHN0cnVjdCBkb21haW4gKmQs IGdmbl90IGdmbiwgcDJtX3R5cGVfdCAqdCkKK3N0YXRpYyBpbnQgcDJtX25leHRfbGV2ZWwoc3Ry dWN0IHAybV9kb21haW4gKnAybSwgYm9vbCByZWFkX29ubHksCisgICAgICAgICAgICAgICAgICAg ICAgICAgIGxwYWVfdCAqKnRhYmxlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQogewotICAgIHN0cnVj dCBwMm1fZG9tYWluICpwMm0gPSAmZC0+YXJjaC5wMm07Ci0gICAgY29uc3QgcGFkZHJfdCBwYWRk ciA9IHBmbl90b19wYWRkcihnZm5feChnZm4pKTsKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgb2Zm c2V0c1s0XSA9IHsKLSAgICAgICAgemVyb2V0aF90YWJsZV9vZmZzZXQocGFkZHIpLAotICAgICAg ICBmaXJzdF90YWJsZV9vZmZzZXQocGFkZHIpLAotICAgICAgICBzZWNvbmRfdGFibGVfb2Zmc2V0 KHBhZGRyKSwKLSAgICAgICAgdGhpcmRfdGFibGVfb2Zmc2V0KHBhZGRyKQotICAgIH07Ci0gICAg Y29uc3QgcGFkZHJfdCBtYXNrc1s0XSA9IHsKLSAgICAgICAgWkVST0VUSF9NQVNLLCBGSVJTVF9N QVNLLCBTRUNPTkRfTUFTSywgVEhJUkRfTUFTSwotICAgIH07Ci0gICAgbHBhZV90IHB0ZSwgKm1h cDsKKyAgICBscGFlX3QgKmVudHJ5OworICAgIGludCByZXQ7CisgICAgbWZuX3QgbWZuOworCisg ICAgZW50cnkgPSAqdGFibGUgKyBvZmZzZXQ7CisKKyAgICBpZiAoICFwMm1fdmFsaWQoKmVudHJ5 KSApCisgICAgeworICAgICAgICBpZiAoIHJlYWRfb25seSApCisgICAgICAgICAgICByZXR1cm4g R1VFU1RfVEFCTEVfTUFQX0ZBSUxFRDsKKworICAgICAgICByZXQgPSBwMm1fY3JlYXRlX3RhYmxl KHAybSwgZW50cnksIC8qIG5vdCB1c2VkICovIH4wKTsKKyAgICAgICAgaWYgKCByZXQgKQorICAg ICAgICAgICAgcmV0dXJuIEdVRVNUX1RBQkxFX01BUF9GQUlMRUQ7CisgICAgfQorCisgICAgLyog VGhlIGZ1bmN0aW9uIHAybV9uZXh0X2xldmVsIGlzIG5ldmVyIGNhbGxlZCBhdCB0aGUgM3JkIGxl dmVsICovCisgICAgaWYgKCBwMm1fbWFwcGluZygqZW50cnkpICkKKyAgICAgICAgcmV0dXJuIEdV RVNUX1RBQkxFX1NVUEVSX1BBR0U7CisKKyAgICBtZm4gPSBfbWZuKGVudHJ5LT5wMm0uYmFzZSk7 CisKKyAgICB1bm1hcF9kb21haW5fcGFnZSgqdGFibGUpOworICAgICp0YWJsZSA9IG1hcF9kb21h aW5fcGFnZShtZm4pOworCisgICAgcmV0dXJuIEdVRVNUX1RBQkxFX05PUk1BTF9QQUdFOworfQor CisvKgorICogR2V0IHRoZSBkZXRhaWxzIG9mIGEgZ2l2ZW4gZ2ZuLgorICoKKyAqIElmIHRoZSBl bnRyeSBpcyBwcmVzZW50LCB0aGUgYXNzb2NpYXRlZCBNRk4gd2lsbCBiZSByZXR1cm5lZCBhbmQg dGhlCisgKiBhY2Nlc3MgYW5kIHR5cGUgZmlsbGVkIHVwLiBUaGUgcGFnZV9vcmRlciB3aWxsIGNv cnJlc3BvbmQgdG8gdGhlCisgKiBvcmRlciBvZiB0aGUgbWFwcGluZyBpbiB0aGUgcGFnZSB0YWJs ZSAoaS5lIGl0IGNvdWxkIGJlIGEgc3VwZXJwYWdlKS4KKyAqCisgKiBJZiB0aGUgZW50cnkgaXMg bm90IHByZXNlbnQsIElOVkFMSURfTUZOIHdpbGwgYmUgcmV0dXJuZWQgYW5kIHRoZQorICogcGFn ZV9vcmRlciB3aWxsIGJlIHNldCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIG9mIHRoZSBpbnZhbGlk IHJhbmdlLgorICovCitzdGF0aWMgbWZuX3QgcDJtX2dldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFp biAqcDJtLCBnZm5fdCBnZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90 ICp0LCBwMm1fYWNjZXNzX3QgKmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgKnBhZ2Vfb3JkZXIpCit7CisgICAgcGFkZHJfdCBhZGRyID0gcGZuX3RvX3BhZGRyKGdm bl94KGdmbikpOworICAgIHVuc2lnbmVkIGludCBsZXZlbCA9IDA7CisgICAgbHBhZV90IGVudHJ5 LCAqdGFibGU7CisgICAgaW50IHJjOwogICAgIG1mbl90IG1mbiA9IElOVkFMSURfTUZOOwotICAg IHBhZGRyX3QgbWFzayA9IDA7CiAgICAgcDJtX3R5cGVfdCBfdDsKLSAgICB1bnNpZ25lZCBpbnQg bGV2ZWw7CisKKyAgICAvKiBDb252ZW5pZW5jZSBhbGlhc2VzICovCisgICAgY29uc3QgdW5zaWdu ZWQgaW50IG9mZnNldHNbNF0gPSB7CisgICAgICAgIHplcm9ldGhfdGFibGVfb2Zmc2V0KGFkZHIp LAorICAgICAgICBmaXJzdF90YWJsZV9vZmZzZXQoYWRkciksCisgICAgICAgIHNlY29uZF90YWJs ZV9vZmZzZXQoYWRkciksCisgICAgICAgIHRoaXJkX3RhYmxlX29mZnNldChhZGRyKQorICAgIH07 CiAKICAgICBBU1NFUlQocDJtX2lzX2xvY2tlZChwMm0pKTsKICAgICBCVUlMRF9CVUdfT04oVEhJ UkRfTUFTSyAhPSBQQUdFX01BU0spOwpAQCAtMjY3LDQ2ICszNDAsNzUgQEAgc3RhdGljIG1mbl90 IF9fcDJtX2xvb2t1cChzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIHAybV90eXBlX3QgKnQp CiAKICAgICAqdCA9IHAybV9pbnZhbGlkOwogCi0gICAgbWFwID0gcDJtX2dldF9yb290X3BvaW50 ZXIocDJtLCBnZm4pOwotICAgIGlmICggIW1hcCApCi0gICAgICAgIHJldHVybiBJTlZBTElEX01G TjsKKyAgICAvKiBYWFg6IENoZWNrIGlmIHRoZSBtYXBwaW5nIGlzIGxvd2VyIHRoYW4gdGhlIG1h cHBlZCBnZm4gKi8KIAotICAgIEFTU0VSVChQMk1fUk9PVF9MRVZFTCA8IDQpOwotCi0gICAgZm9y ICggbGV2ZWwgPSBQMk1fUk9PVF9MRVZFTCA7IGxldmVsIDwgNCA7IGxldmVsKysgKQorICAgIC8q IFRoaXMgZ2ZuIGlzIGhpZ2hlciB0aGFuIHRoZSBoaWdoZXN0IHRoZSBwMm0gbWFwIGN1cnJlbnRs eSBob2xkcyAqLworICAgIGlmICggZ2ZuX3goZ2ZuKSA+IGdmbl94KHAybS0+bWF4X21hcHBlZF9n Zm4pICkKICAgICB7Ci0gICAgICAgIG1hc2sgPSBtYXNrc1tsZXZlbF07Ci0KLSAgICAgICAgcHRl ID0gbWFwW29mZnNldHNbbGV2ZWxdXTsKKyAgICAgICAgZm9yICggbGV2ZWwgPSBQMk1fUk9PVF9M RVZFTDsgbGV2ZWwgPCAzOyBsZXZlbCsrICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAo Z2ZuX3goZ2ZuKSAmIChsZXZlbF9tYXNrc1tsZXZlbF0gPj4gUEFHRV9TSElGVCkpID4KKyAgICAg ICAgICAgICAgICAgZ2ZuX3gocDJtLT5tYXhfbWFwcGVkX2dmbikgKQorICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAg ICAgaWYgKCBsZXZlbCA9PSAzICYmICFwMm1fdGFibGUocHRlKSApCi0gICAgICAgICAgICAvKiBJ bnZhbGlkLCBjbG9iYmVyIHRoZSBwdGUgKi8KLSAgICAgICAgICAgIHB0ZS5iaXRzID0gMDsKLSAg ICAgICAgaWYgKCBsZXZlbCA9PSAzIHx8ICFwMm1fdGFibGUocHRlKSApCi0gICAgICAgICAgICAv KiBEb25lICovCi0gICAgICAgICAgICBicmVhazsKKyAgICB0YWJsZSA9IHAybV9nZXRfcm9vdF9w b2ludGVyKHAybSwgZ2ZuKTsKIAotICAgICAgICBBU1NFUlQobGV2ZWwgPCAzKTsKKyAgICAvKgor ICAgICAqIHRoZSB0YWJsZSBzaG91bGQgYWx3YXlzIGJlIG5vbi1OVUxMIGJlY2F1c2UgdGhlIGdm biBpcyBiZWxvdworICAgICAqIHAybS0+bWF4X21hcHBlZF9nZm4gYW5kIHRoZSByb290IHRhYmxl IHBhZ2VzIGFyZSBhbHdheXMgcHJlc2VudC4KKyAgICAgKi8KKyAgICBCVUdfT04odGFibGUgPT0g TlVMTCk7CiAKLSAgICAgICAgLyogTWFwIGZvciBuZXh0IGxldmVsICovCi0gICAgICAgIHVubWFw X2RvbWFpbl9wYWdlKG1hcCk7Ci0gICAgICAgIG1hcCA9IG1hcF9kb21haW5fcGFnZShfbWZuKHB0 ZS5wMm0uYmFzZSkpOworICAgIGZvciAoIGxldmVsID0gUDJNX1JPT1RfTEVWRUw7IGxldmVsIDwg MzsgbGV2ZWwrKyApCisgICAgeworICAgICAgICByYyA9IHAybV9uZXh0X2xldmVsKHAybSwgdHJ1 ZSwgJnRhYmxlLCBvZmZzZXRzW2xldmVsXSk7CisgICAgICAgIGlmICggcmMgPT0gR1VFU1RfVEFC TEVfTUFQX0ZBSUxFRCApCisgICAgICAgICAgICBnb3RvIG91dF91bm1hcDsKKyAgICAgICAgZWxz ZSBpZiAoIHJjICE9IEdVRVNUX1RBQkxFX05PUk1BTF9QQUdFICkKKyAgICAgICAgICAgIGJyZWFr OwogICAgIH0KIAotICAgIHVubWFwX2RvbWFpbl9wYWdlKG1hcCk7CisgICAgZW50cnkgPSB0YWJs ZVtvZmZzZXRzW2xldmVsXV07CiAKLSAgICBpZiAoIHAybV92YWxpZChwdGUpICkKKyAgICBpZiAo IHAybV92YWxpZChlbnRyeSkgKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1hc2spOwotICAgICAg ICBBU1NFUlQocHRlLnAybS50eXBlICE9IHAybV9pbnZhbGlkKTsKLSAgICAgICAgbWZuID0gX21m bihwYWRkcl90b19wZm4oKHB0ZS5iaXRzICYgUEFERFJfTUFTSyAmIG1hc2spIHwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyICYgfm1hc2spKSk7Ci0gICAgICAgICp0ID0g cHRlLnAybS50eXBlOworICAgICAgICAqdCA9IGVudHJ5LnAybS50eXBlOworCisgICAgICAgIGlm ICggYSApCisgICAgICAgICAgICAqYSA9IHAybV9tZW1fYWNjZXNzX3JhZGl4X2dldChwMm0sIGdm bik7CisKKyAgICAgICAgbWZuID0gX21mbihlbnRyeS5wMm0uYmFzZSk7CisgICAgICAgIC8qCisg ICAgICAgICAqIFRoZSBlbnRyeSBtYXkgcG9pbnQgdG8gYSBzdXBlcnBhZ2UuIEZpbmQgdGhlIE1G TiBhc3NvY2lhdGVkCisgICAgICAgICAqIHRvIHRoZSBHRk4uCisgICAgICAgICAqLworICAgICAg ICBtZm4gPSBtZm5fYWRkKG1mbiwgZ2ZuX3goZ2ZuKSAmICgoMVVMIDw8IGxldmVsX29yZGVyc1ts ZXZlbF0pIC0gMSkpOwogICAgIH0KIAorb3V0X3VubWFwOgorICAgIHVubWFwX2RvbWFpbl9wYWdl KHRhYmxlKTsKKworb3V0OgorICAgIGlmICggcGFnZV9vcmRlciApCisgICAgICAgICpwYWdlX29y ZGVyID0gbGV2ZWxfc2hpZnRzW2xldmVsXSAtIFBBR0VfU0hJRlQ7CisKICAgICByZXR1cm4gbWZu OwogfQogCisvKgorICogTG9va3VwIHRoZSBNRk4gY29ycmVzcG9uZGluZyB0byBhIGRvbWFpbidz IEdGTi4KKyAqCisgKiBUaGVyZSBhcmUgbm8gcHJvY2Vzc29yIGZ1bmN0aW9ucyB0byBkbyBhIHN0 YWdlIDIgb25seSBsb29rdXAgdGhlcmVmb3JlIHdlCisgKiBkbyBhIGEgc29mdHdhcmUgd2Fsay4K KyAqLworc3RhdGljIG1mbl90IF9fcDJtX2xvb2t1cChzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBn Zm4sIHAybV90eXBlX3QgKnQpCit7CisgICAgcmV0dXJuIHAybV9nZXRfZW50cnkoJmQtPmFyY2gu cDJtLCBnZm4sIHQsIE5VTEwsIE5VTEwpOworfQorCiBtZm5fdCBwMm1fbG9va3VwKHN0cnVjdCBk b21haW4gKmQsIGdmbl90IGdmbiwgcDJtX3R5cGVfdCAqdCkKIHsKICAgICBtZm5fdCByZXQ7CmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3BhZ2UuaCBiL3hlbi9pbmNsdWRlL2FzbS1h cm0vcGFnZS5oCmluZGV4IDA1ZDlmODIuLjFjNWJkOGIgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRl L2FzbS1hcm0vcGFnZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGFnZS5oCkBAIC00NTcs MTUgKzQ1NywxOSBAQCBzdGF0aWMgaW5saW5lIGludCBndmFfdG9faXBhKHZhZGRyX3QgdmEsIHBh ZGRyX3QgKnBhZGRyLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAjZGVmaW5lIExQQUVfRU5UUllfTUFT SyAoTFBBRV9FTlRSSUVTIC0gMSkKIAogI2RlZmluZSBUSElSRF9TSElGVCAgICAoUEFHRV9TSElG VCkKKyNkZWZpbmUgVEhJUkRfT1JERVIgICAgMAogI2RlZmluZSBUSElSRF9TSVpFICAgICAoKHBh ZGRyX3QpMSA8PCBUSElSRF9TSElGVCkKICNkZWZpbmUgVEhJUkRfTUFTSyAgICAgKH4oVEhJUkRf U0laRSAtIDEpKQogI2RlZmluZSBTRUNPTkRfU0hJRlQgICAoVEhJUkRfU0hJRlQgKyBMUEFFX1NI SUZUKQorI2RlZmluZSBTRUNPTkRfT1JERVIgICAoVEhJUkRfT1JERVIgKyBMUEFFX1NISUZUKQog I2RlZmluZSBTRUNPTkRfU0laRSAgICAoKHBhZGRyX3QpMSA8PCBTRUNPTkRfU0hJRlQpCiAjZGVm aW5lIFNFQ09ORF9NQVNLICAgICh+KFNFQ09ORF9TSVpFIC0gMSkpCiAjZGVmaW5lIEZJUlNUX1NI SUZUICAgIChTRUNPTkRfU0hJRlQgKyBMUEFFX1NISUZUKQorI2RlZmluZSBGSVJTVF9PUkRFUiAg ICAoU0VDT05EX09SREVSICsgTFBBRV9TSElGVCkKICNkZWZpbmUgRklSU1RfU0laRSAgICAgKChw YWRkcl90KTEgPDwgRklSU1RfU0hJRlQpCiAjZGVmaW5lIEZJUlNUX01BU0sgICAgICh+KEZJUlNU X1NJWkUgLSAxKSkKICNkZWZpbmUgWkVST0VUSF9TSElGVCAgKEZJUlNUX1NISUZUICsgTFBBRV9T SElGVCkKKyNkZWZpbmUgWkVST0VUSF9PUkRFUiAgKEZJUlNUX09SREVSICsgTFBBRV9TSElGVCkK ICNkZWZpbmUgWkVST0VUSF9TSVpFICAgKChwYWRkcl90KTEgPDwgWkVST0VUSF9TSElGVCkKICNk ZWZpbmUgWkVST0VUSF9NQVNLICAgKH4oWkVST0VUSF9TSVpFIC0gMSkpCiAKLS0gCjEuOS4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==