From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark Yao Subject: [PATCH v2 3/5] drm/rockchip: vop: support plane scale Date: Fri, 26 Jun 2015 18:07:27 +0800 Message-ID: <1435313249-4549-4-git-send-email-mark.yao@rock-chips.com> References: <1435313249-4549-1-git-send-email-mark.yao@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from regular1.263xmail.com (regular1.263xmail.com [211.150.99.139]) by gabe.freedesktop.org (Postfix) with ESMTP id 963AE6E538 for ; Fri, 26 Jun 2015 03:07:59 -0700 (PDT) In-Reply-To: <1435313249-4549-1-git-send-email-mark.yao@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: zwl@rock-chips.com, linux-kernel@vger.kernel.org, tfiga@chromium.org, linux-rockchip@lists.infradead.org, xw@rock-chips.com, dkm@rock-chips.com, sandy.huang@rock-chips.com, linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org V2luX2Z1bGwgc3VwcG9ydCAxLzggdG8gOCBzY2FsZSBkb3duL3VwIGVuZ2luZSwgc3VwcG9ydAph bGwgZm9ybWF0IHNjYWxlLgoKU2lnbmVkLW9mZi1ieTogTWFyayBZYW8gPG1hcmsueWFvQHJvY2st Y2hpcHMuY29tPgotLS0KQ2hhbmdlcyBpbiB2MjoKLSBGaXggc2NhbGUgZGVzdCBpbmZvLiAKCiBk cml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jIHwgIDM4OSArKysrKysr KysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9k cm1fdm9wLmggfCAgIDk2ICsrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNDgzIGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX2RybV92b3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9k cm1fdm9wLmMKaW5kZXggNmNhMDhmOC4uZjZlZjYzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCkBAIC00OSw2ICs0OSw4IEBACiAKICNkZWZpbmUgVk9Q X1dJTl9TRVQoeCwgd2luLCBuYW1lLCB2KSBcCiAJCVJFR19TRVQoeCwgd2luLT5iYXNlLCB3aW4t PnBoeS0+bmFtZSwgdiwgUkVMQVhFRCkKKyNkZWZpbmUgVk9QX1NDTF9TRVQoeCwgd2luLCBuYW1l LCB2KSBcCisJCVJFR19TRVQoeCwgd2luLT5iYXNlLCB3aW4tPnBoeS0+c2NsLT5uYW1lLCB2LCBS RUxBWEVEKQogI2RlZmluZSBWT1BfQ1RSTF9TRVQoeCwgbmFtZSwgdikgXAogCQlSRUdfU0VUKHgs IDAsICh4KS0+ZGF0YS0+Y3RybC0+bmFtZSwgdiwgTk9STUFMKQogCkBAIC0xNjMsNyArMTY1LDM3 IEBAIHN0cnVjdCB2b3BfY3RybCB7CiAJc3RydWN0IHZvcF9yZWcgdnBvc3Rfc3RfZW5kOwogfTsK IAorc3RydWN0IHZvcF9zY2xfcmVncyB7CisJc3RydWN0IHZvcF9yZWcgY2JyX3ZzZF9tb2RlOwor CXN0cnVjdCB2b3BfcmVnIGNicl92c3VfbW9kZTsKKwlzdHJ1Y3Qgdm9wX3JlZyBjYnJfaHNkX21v ZGU7CisJc3RydWN0IHZvcF9yZWcgY2JyX3Zlcl9zY2xfbW9kZTsKKwlzdHJ1Y3Qgdm9wX3JlZyBj YnJfaG9yX3NjbF9tb2RlOworCXN0cnVjdCB2b3BfcmVnIHlyZ2JfdnNkX21vZGU7CisJc3RydWN0 IHZvcF9yZWcgeXJnYl92c3VfbW9kZTsKKwlzdHJ1Y3Qgdm9wX3JlZyB5cmdiX2hzZF9tb2RlOwor CXN0cnVjdCB2b3BfcmVnIHlyZ2JfdmVyX3NjbF9tb2RlOworCXN0cnVjdCB2b3BfcmVnIHlyZ2Jf aG9yX3NjbF9tb2RlOworCXN0cnVjdCB2b3BfcmVnIGxpbmVfbG9hZF9tb2RlOworCXN0cnVjdCB2 b3BfcmVnIGNicl9heGlfZ2F0aGVyX251bTsKKwlzdHJ1Y3Qgdm9wX3JlZyB5cmdiX2F4aV9nYXRo ZXJfbnVtOworCXN0cnVjdCB2b3BfcmVnIHZzZF9jYnJfZ3QyOworCXN0cnVjdCB2b3BfcmVnIHZz ZF9jYnJfZ3Q0OworCXN0cnVjdCB2b3BfcmVnIHZzZF95cmdiX2d0MjsKKwlzdHJ1Y3Qgdm9wX3Jl ZyB2c2RfeXJnYl9ndDQ7CisJc3RydWN0IHZvcF9yZWcgYmljX2NvZV9zZWw7CisJc3RydWN0IHZv cF9yZWcgY2JyX2F4aV9nYXRoZXJfZW47CisJc3RydWN0IHZvcF9yZWcgeXJnYl9heGlfZ2F0aGVy X2VuOworCisJc3RydWN0IHZvcF9yZWcgbGJfbW9kZTsKKwlzdHJ1Y3Qgdm9wX3JlZyBzY2FsZV95 cmdiX3g7CisJc3RydWN0IHZvcF9yZWcgc2NhbGVfeXJnYl95OworCXN0cnVjdCB2b3BfcmVnIHNj YWxlX2NiY3JfeDsKKwlzdHJ1Y3Qgdm9wX3JlZyBzY2FsZV9jYmNyX3k7Cit9OworCiBzdHJ1Y3Qg dm9wX3dpbl9waHkgeworCWNvbnN0IHN0cnVjdCB2b3Bfc2NsX3JlZ3MgKnNjbDsKIAljb25zdCB1 aW50MzJfdCAqZGF0YV9mb3JtYXRzOwogCXVpbnQzMl90IG5mb3JtYXRzOwogCkBAIC0yMTIsNyAr MjQ0LDM2IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBmb3JtYXRzXzIzNFtdID0gewogCURSTV9G T1JNQVRfUkdCNTY1LAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfc2NsX3JlZ3Mgd2lu X2Z1bGxfc2NsID0geworCS5jYnJfdnNkX21vZGUgPSBWT1BfUkVHKFdJTjBfQ1RSTDEsIDB4MSwg MzEpLAorCS5jYnJfdnN1X21vZGUgPSBWT1BfUkVHKFdJTjBfQ1RSTDEsIDB4MSwgMzApLAorCS5j YnJfaHNkX21vZGUgPSBWT1BfUkVHKFdJTjBfQ1RSTDEsIDB4MywgMjgpLAorCS5jYnJfdmVyX3Nj bF9tb2RlID0gVk9QX1JFRyhXSU4wX0NUUkwxLCAweDMsIDI2KSwKKwkuY2JyX2hvcl9zY2xfbW9k ZSA9IFZPUF9SRUcoV0lOMF9DVFJMMSwgMHgzLCAyNCksCisJLnlyZ2JfdnNkX21vZGUgPSBWT1Bf UkVHKFdJTjBfQ1RSTDEsIDB4MSwgMjMpLAorCS55cmdiX3ZzdV9tb2RlID0gVk9QX1JFRyhXSU4w X0NUUkwxLCAweDEsIDIyKSwKKwkueXJnYl9oc2RfbW9kZSA9IFZPUF9SRUcoV0lOMF9DVFJMMSwg MHgzLCAyMCksCisJLnlyZ2JfdmVyX3NjbF9tb2RlID0gVk9QX1JFRyhXSU4wX0NUUkwxLCAweDMs IDE4KSwKKwkueXJnYl9ob3Jfc2NsX21vZGUgPSBWT1BfUkVHKFdJTjBfQ1RSTDEsIDB4MywgMTYp LAorCS5saW5lX2xvYWRfbW9kZSA9IFZPUF9SRUcoV0lOMF9DVFJMMSwgMHgxLCAxNSksCisJLmNi cl9heGlfZ2F0aGVyX251bSA9IFZPUF9SRUcoV0lOMF9DVFJMMSwgMHg3LCAxMiksCisJLnlyZ2Jf YXhpX2dhdGhlcl9udW0gPSBWT1BfUkVHKFdJTjBfQ1RSTDEsIDB4ZiwgOCksCisJLnZzZF9jYnJf Z3QyID0gVk9QX1JFRyhXSU4wX0NUUkwxLCAweDEsIDcpLAorCS52c2RfY2JyX2d0NCA9IFZPUF9S RUcoV0lOMF9DVFJMMSwgMHgxLCA2KSwKKwkudnNkX3lyZ2JfZ3QyID0gVk9QX1JFRyhXSU4wX0NU UkwxLCAweDEsIDUpLAorCS52c2RfeXJnYl9ndDQgPSBWT1BfUkVHKFdJTjBfQ1RSTDEsIDB4MSwg NCksCisJLmJpY19jb2Vfc2VsID0gVk9QX1JFRyhXSU4wX0NUUkwxLCAweDMsIDIpLAorCS5jYnJf YXhpX2dhdGhlcl9lbiA9IFZPUF9SRUcoV0lOMF9DVFJMMSwgMHgxLCAxKSwKKwkueXJnYl9heGlf Z2F0aGVyX2VuID0gVk9QX1JFRyhXSU4wX0NUUkwxLCAweDEsIDApLAorCS5sYl9tb2RlID0gVk9Q X1JFRyhXSU4wX0NUUkwwLCAweDcsIDUpLAorCS5zY2FsZV95cmdiX3ggPSBWT1BfUkVHKFdJTjBf U0NMX0ZBQ1RPUl9ZUkdCLCAweGZmZmYsIDB4MCksCisJLnNjYWxlX3lyZ2JfeSA9IFZPUF9SRUco V0lOMF9TQ0xfRkFDVE9SX1lSR0IsIDB4ZmZmZiwgMTYpLAorCS5zY2FsZV9jYmNyX3ggPSBWT1Bf UkVHKFdJTjBfU0NMX0ZBQ1RPUl9DQlIsIDB4ZmZmZiwgMHgwKSwKKwkuc2NhbGVfY2Jjcl95ID0g Vk9QX1JFRyhXSU4wX1NDTF9GQUNUT1JfQ0JSLCAweGZmZmYsIDE2KSwKK307CisKIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgdm9wX3dpbl9waHkgd2luMDFfZGF0YSA9IHsKKwkuc2NsID0gJndpbl9mdWxs X3NjbCwKIAkuZGF0YV9mb3JtYXRzID0gZm9ybWF0c18wMSwKIAkubmZvcm1hdHMgPSBBUlJBWV9T SVpFKGZvcm1hdHNfMDEpLAogCS5lbmFibGUgPSBWT1BfUkVHKFdJTjBfQ1RSTDAsIDB4MSwgMCks CkBAIC0zNTEsNiArNDEyLDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2b3BfbWFza193cml0ZV9y ZWxheGVkKHN0cnVjdCB2b3AgKnZvcCwgdWludDMyX3Qgb2Zmc2V0LAogCX0KIH0KIAorc3RhdGlj IGlubGluZSBpbnQgX2dldF92c2tpcGxpbmVzKHVpbnQzMl90IHNyY2gsIHVpbnQzMl90IGRzdGgp Cit7CisJaWYgKHNyY2ggPj0gKHVpbnQzMl90KSg0ICogZHN0aCAqIE1JTl9TQ0xfRlRfQUZURVJf VlNLSVApKQorCQlyZXR1cm4gNDsKKwllbHNlIGlmIChzcmNoID49ICh1aW50MzJfdCkoMiAqIGRz dGggKiBNSU5fU0NMX0ZUX0FGVEVSX1ZTS0lQKSkKKwkJcmV0dXJuIDI7CisJcmV0dXJuIDE7Cit9 CisKIHN0YXRpYyBlbnVtIHZvcF9kYXRhX2Zvcm1hdCB2b3BfY29udmVydF9mb3JtYXQodWludDMy X3QgZm9ybWF0KQogewogCXN3aXRjaCAoZm9ybWF0KSB7CkBAIC01MzgsNiArNjA4LDMxMCBAQCBz dGF0aWMgdm9pZCB2b3BfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJcG1fcnVudGlt ZV9wdXQodm9wLT5kZXYpOwogfQogCitzdGF0aWMgaW50IF92b3BfY2FsX3lyZ2JfbGJfbW9kZShp bnQgd2lkdGgpCit7CisJaW50IGxiX21vZGUgPSBMQl9SR0JfMTkyMFg1OworCisJaWYgKHdpZHRo ID4gMjU2MCkKKwkJbGJfbW9kZSA9IExCX1JHQl8zODQwWDI7CisJZWxzZSBpZiAod2lkdGggPiAx OTIwKQorCQlsYl9tb2RlID0gTEJfUkdCXzI1NjBYNDsKKworCXJldHVybiBsYl9tb2RlOworfQor CitzdGF0aWMgaW50IF92b3BfY2FsX2NiY3JfbGJfbW9kZShpbnQgd2lkdGgpCit7CisJaW50IGxi X21vZGUgPSBMQl9ZVVZfMjU2MFg4OworCisJaWYgKHdpZHRoID4gMjU2MCkKKwkJbGJfbW9kZSA9 IExCX1JHQl8zODQwWDI7CisJZWxzZSBpZiAod2lkdGggPiAxOTIwKQorCQlsYl9tb2RlID0gTEJf UkdCXzI1NjBYNDsKKwllbHNlIGlmICh3aWR0aCA+IDEyODApCisJCWxiX21vZGUgPSBMQl9ZVVZf Mzg0MFg1OworCisJcmV0dXJuIGxiX21vZGU7Cit9CisKK3N0YXRpYyB2b2lkIF92b3BfY2FsX3Nj bF9mYWMoc3RydWN0IHZvcCAqdm9wLCBjb25zdCBzdHJ1Y3Qgdm9wX3dpbl9kYXRhICp3aW4sCisJ CQkgICAgIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCwgdWludDMyX3QgZHN0X3csCisJ CQkgICAgIHVpbnQzMl90IGRzdF9oLCB1aW50MzJfdCBwaXhlbF9mb3JtYXQpCit7CisJdWludDE2 X3QgeXJnYl9ob3Jfc2NsX21vZGUgPSBTQ0FMRV9OT05FOworCXVpbnQxNl90IHlyZ2JfdmVyX3Nj bF9tb2RlID0gU0NBTEVfTk9ORTsKKwl1aW50MTZfdCBjYnJfaG9yX3NjbF9tb2RlID0gU0NBTEVf Tk9ORTsKKwl1aW50MTZfdCBjYnJfdmVyX3NjbF9tb2RlID0gU0NBTEVfTk9ORTsKKwl1aW50MTZf dCB5cmdiX2hzZF9tb2RlID0gU0NBTEVfRE9XTl9CSUw7CisJdWludDE2X3QgY2JyX2hzZF9tb2Rl ID0gU0NBTEVfRE9XTl9CSUw7CisJdWludDE2X3QgeXJnYl92c2RfbW9kZSA9IFNDQUxFX0RPV05f QklMOworCXVpbnQxNl90IGNicl92c2RfbW9kZSA9IFNDQUxFX0RPV05fQklMOworCXVpbnQxNl90 IHlyZ2JfdnN1X21vZGUgPSBTQ0FMRV9VUF9CSUw7CisJdWludDE2X3QgY2JyX3ZzdV9tb2RlID0g U0NBTEVfVVBfQklMOworCXVpbnQxNl90IHNjYWxlX3lyZ2JfeCA9IDEgPDwgU0NMX0ZUX0RFRkFV TFRfRklYUE9JTlRfU0hJRlQ7CisJdWludDE2X3Qgc2NhbGVfeXJnYl95ID0gMSA8PCBTQ0xfRlRf REVGQVVMVF9GSVhQT0lOVF9TSElGVDsKKwl1aW50MTZfdCBzY2FsZV9jYmNyX3ggPSAxIDw8IFND TF9GVF9ERUZBVUxUX0ZJWFBPSU5UX1NISUZUOworCXVpbnQxNl90IHNjYWxlX2NiY3JfeSA9IDEg PDwgU0NMX0ZUX0RFRkFVTFRfRklYUE9JTlRfU0hJRlQ7CisJaW50IGhzdWIgPSBkcm1fZm9ybWF0 X2hvcnpfY2hyb21hX3N1YnNhbXBsaW5nKHBpeGVsX2Zvcm1hdCk7CisJaW50IHZzdWIgPSBkcm1f Zm9ybWF0X3ZlcnRfY2hyb21hX3N1YnNhbXBsaW5nKHBpeGVsX2Zvcm1hdCk7CisJYm9vbCBpc195 dXYgPSBpc195dXZfc3VwcG9ydChwaXhlbF9mb3JtYXQpOworCXVpbnQxNl90IHZzZF95cmdiX2d0 NCA9IDA7CisJdWludDE2X3QgdnNkX3lyZ2JfZ3QyID0gMDsKKwl1aW50MTZfdCB2c2RfY2JyX2d0 NCA9IDA7CisJdWludDE2X3QgdnNkX2Nicl9ndDIgPSAwOworCXVpbnQxNl90IHlyZ2Jfc3JjX3cg PSBzcmNfdzsKKwl1aW50MTZfdCB5cmdiX3NyY19oID0gc3JjX2g7CisJdWludDE2X3QgeXJnYl9k c3RfdyA9IGRzdF93OworCXVpbnQxNl90IHlyZ2JfZHN0X2ggPSBkc3RfaDsKKwl1aW50MTZfdCBj YmNyX3NyY193OworCXVpbnQxNl90IGNiY3Jfc3JjX2g7CisJdWludDE2X3QgY2Jjcl9kc3RfdzsK Kwl1aW50MTZfdCBjYmNyX2RzdF9oOworCXVpbnQzMl90IHZkbXVsdDsKKwl1aW50MTZfdCBsYl9t b2RlOworCisJaWYgKCgoeXJnYl9kc3RfdyA8PCAzKSA8PSB5cmdiX3NyY193KSB8fAorCSAgICAo KHlyZ2JfZHN0X2ggPDwgMykgPD0geXJnYl9zcmNfaCkgfHwKKwkgICAgeXJnYl9kc3RfdyA+IDM4 NDApIHsKKwkJRFJNX0VSUk9SKCJ5cmdiIHNjYWxlIGV4Y2VlZCA4LHNyY1slZHglZF0gZHN0WyVk eCVkXVxuIiwKKwkJCSAgeXJnYl9zcmNfdywgeXJnYl9zcmNfaCwgeXJnYl9kc3RfdywgeXJnYl9k c3RfaCk7CisJCXJldHVybjsKKwl9CisKKwlpZiAoeXJnYl9zcmNfdyA8IHlyZ2JfZHN0X3cpCisJ CXlyZ2JfaG9yX3NjbF9tb2RlID0gU0NBTEVfVVA7CisJZWxzZSBpZiAoeXJnYl9zcmNfdyA+IHly Z2JfZHN0X3cpCisJCXlyZ2JfaG9yX3NjbF9tb2RlID0gU0NBTEVfRE9XTjsKKwllbHNlCisJCXly Z2JfaG9yX3NjbF9tb2RlID0gU0NBTEVfTk9ORTsKKworCWlmICh5cmdiX3NyY19oIDwgeXJnYl9k c3RfaCkKKwkJeXJnYl92ZXJfc2NsX21vZGUgPSBTQ0FMRV9VUDsKKwllbHNlIGlmICh5cmdiX3Ny Y19oICA+IHlyZ2JfZHN0X2gpCisJCXlyZ2JfdmVyX3NjbF9tb2RlID0gU0NBTEVfRE9XTjsKKwll bHNlCisJCXlyZ2JfdmVyX3NjbF9tb2RlID0gU0NBTEVfTk9ORTsKKworCWlmIChpc195dXYpIHsK KwkJY2Jjcl9zcmNfdyA9IHNyY193IC8gaHN1YjsKKwkJY2Jjcl9zcmNfaCA9IHNyY19oIC8gdnN1 YjsKKwkJY2Jjcl9kc3RfdyA9IGRzdF93OworCQljYmNyX2RzdF9oID0gZHN0X2g7CisJCWlmICgo Y2Jjcl9kc3RfdyA8PCAzKSA8PSBjYmNyX3NyY193IHx8CisJCSAgICAoY2Jjcl9kc3RfaCA8PCAz KSA8PSBjYmNyX3NyY19oIHx8CisJCSAgICBjYmNyX3NyY193ID4gMzg0MCB8fAorCQkgICAgY2Jj cl9zcmNfdyA9PSAwKQorCQkJRFJNX0VSUk9SKCJjYmNyIHNjYWxlIGZhaWxlZCxzcmNbJWR4JWRd IGRzdFslZHglZF1cbiIsCisJCQkJICBjYmNyX3NyY193LCBjYmNyX3NyY19oLAorCQkJCSAgY2Jj cl9kc3RfdywgY2Jjcl9kc3RfaCk7CisJCWlmIChjYmNyX3NyY193IDwgY2Jjcl9kc3RfdykKKwkJ CWNicl9ob3Jfc2NsX21vZGUgPSBTQ0FMRV9VUDsKKwkJZWxzZSBpZiAoY2Jjcl9zcmNfdyA+IGNi Y3JfZHN0X3cpCisJCQljYnJfaG9yX3NjbF9tb2RlID0gU0NBTEVfRE9XTjsKKworCQlpZiAoY2Jj cl9zcmNfaCA8IGNiY3JfZHN0X2gpCisJCQljYnJfdmVyX3NjbF9tb2RlID0gU0NBTEVfVVA7CisJ CWVsc2UgaWYgKGNiY3Jfc3JjX2ggPiBjYmNyX2RzdF9oKQorCQkJY2JyX3Zlcl9zY2xfbW9kZSA9 IFNDQUxFX0RPV047CisJfQorCS8qCisJICogbGluZSBidWZmZXIgbW9kZQorCSAqLworCWlmIChp c195dXYpIHsKKwkJaWYgKHlyZ2JfaG9yX3NjbF9tb2RlID09IFNDQUxFX0RPV04gJiYgeXJnYl9k c3RfdyA+IDI1NjApCisJCQlsYl9tb2RlID0gTEJfUkdCXzM4NDBYMjsKKwkJZWxzZSBpZiAoY2Jy X2hvcl9zY2xfbW9kZSA9PSBTQ0FMRV9ET1dOKQorCQkJbGJfbW9kZSA9IF92b3BfY2FsX2NiY3Jf bGJfbW9kZShjYmNyX2RzdF93KTsKKwkJZWxzZQorCQkJbGJfbW9kZSA9IF92b3BfY2FsX2NiY3Jf bGJfbW9kZShjYmNyX3NyY193KTsKKwl9IGVsc2UgeworCQlpZiAoeXJnYl9ob3Jfc2NsX21vZGUg PT0gU0NBTEVfRE9XTikKKwkJCWxiX21vZGUgPSBfdm9wX2NhbF95cmdiX2xiX21vZGUoeXJnYl9k c3Rfdyk7CisJCWVsc2UKKwkJCWxiX21vZGUgPSBfdm9wX2NhbF95cmdiX2xiX21vZGUoeXJnYl9z cmNfdyk7CisJfQorCisJc3dpdGNoIChsYl9tb2RlKSB7CisJY2FzZSBMQl9ZVVZfMzg0MFg1Ogor CWNhc2UgTEJfWVVWXzI1NjBYODoKKwljYXNlIExCX1JHQl8xOTIwWDU6CisJY2FzZSBMQl9SR0Jf MTI4MFg4OgorCQl5cmdiX3ZzdV9tb2RlID0gU0NBTEVfVVBfQklDOworCQljYnJfdnN1X21vZGUg ID0gU0NBTEVfVVBfQklDOworCQlicmVhazsKKwljYXNlIExCX1JHQl8zODQwWDI6CisJCWlmICh5 cmdiX3Zlcl9zY2xfbW9kZSAhPSBTQ0FMRV9OT05FKQorCQkJRFJNX0VSUk9SKCJFUlJPUiA6IG5v dCBhbGxvdyB5cmdiIHZlciBzY2FsZVxuIik7CisJCWlmIChjYnJfdmVyX3NjbF9tb2RlICE9IFND QUxFX05PTkUpCisJCQlEUk1fRVJST1IoIkVSUk9SIDogbm90IGFsbG93IGNiY3IgdmVyIHNjYWxl XG4iKTsKKwkJYnJlYWs7CisJY2FzZSBMQl9SR0JfMjU2MFg0OgorCQl5cmdiX3ZzdV9tb2RlID0g U0NBTEVfVVBfQklMOworCQljYnJfdnN1X21vZGUgID0gU0NBTEVfVVBfQklMOworCQlicmVhazsK KwlkZWZhdWx0OgorCQlEUk1fRVJST1IoInVuc3VwcG9ydCBsYl9tb2RlOiVkXG4iLCBsYl9tb2Rl KTsKKwkJYnJlYWs7CisJfQorCS8qCisJICogKDEuMSlZUkdCIEhPUiBTQ0FMRSBGQUNUT1IKKwkg Ki8KKwlzd2l0Y2ggKHlyZ2JfaG9yX3NjbF9tb2RlKSB7CisJY2FzZSBTQ0FMRV9VUDoKKwkJc2Nh bGVfeXJnYl94ID0gR0VUX1NDTF9GVF9CSUMoeXJnYl9zcmNfdywgeXJnYl9kc3Rfdyk7CisJCWJy ZWFrOworCWNhc2UgU0NBTEVfRE9XTjoKKwkJc3dpdGNoICh5cmdiX2hzZF9tb2RlKSB7CisJCWNh c2UgU0NBTEVfRE9XTl9CSUw6CisJCQlzY2FsZV95cmdiX3ggPSBHRVRfU0NMX0ZUX0JJTElfRE4o eXJnYl9zcmNfdywKKwkJCQkJCQkgIHlyZ2JfZHN0X3cpOworCQkJYnJlYWs7CisJCWNhc2UgU0NB TEVfRE9XTl9BVkc6CisJCQlzY2FsZV95cmdiX3ggPSBHRVRfU0NMX0ZUX0FWUkcoeXJnYl9zcmNf dywgeXJnYl9kc3Rfdyk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCURSTV9FUlJPUigidW5z dXBwb3J0IHlyZ2JfaHNkX21vZGU6JWRcbiIsCisJCQkJICB5cmdiX2hzZF9tb2RlKTsKKwkJCWJy ZWFrOworCQl9CisJCWJyZWFrOworCX0KKworCS8qCisJICogKDEuMilZUkdCIFZFUiBTQ0FMRSBG QUNUT1IKKwkgKi8KKwlzd2l0Y2ggKHlyZ2JfdmVyX3NjbF9tb2RlKSB7CisJY2FzZSBTQ0FMRV9V UDoKKwkJc3dpdGNoICh5cmdiX3ZzdV9tb2RlKSB7CisJCWNhc2UgU0NBTEVfVVBfQklMOgorCQkJ c2NhbGVfeXJnYl95ID0gR0VUX1NDTF9GVF9CSUxJX1VQKHlyZ2Jfc3JjX2gsCisJCQkJCQkJICB5 cmdiX2RzdF9oKTsKKwkJCWJyZWFrOworCQljYXNlIFNDQUxFX1VQX0JJQzoKKwkJCWlmICh5cmdi X3NyY19oIDwgMykKKwkJCQlEUk1fRVJST1IoInlyZ2Jfc3JjX2ggc2hvdWxkIGdyZWF0ZXIgdGhh biAzXG4iKTsKKwkJCXNjYWxlX3lyZ2JfeSA9IEdFVF9TQ0xfRlRfQklDKHlyZ2Jfc3JjX2gsIHly Z2JfZHN0X2gpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlEUk1fRVJST1IoInVuc3VwcG9y dCB5cmdiX3ZzdV9tb2RlOiVkXG4iLAorCQkJCSAgeXJnYl92c3VfbW9kZSk7CisJCQlicmVhazsK KwkJfQorCQlicmVhazsKKwljYXNlIFNDQUxFX0RPV046CisJCXN3aXRjaCAoeXJnYl92c2RfbW9k ZSkgeworCQljYXNlIFNDQUxFX0RPV05fQklMOgorCQkJdmRtdWx0ID0gX2dldF92c2tpcGxpbmVz KHlyZ2Jfc3JjX2gsIHlyZ2JfZHN0X2gpOworCQkJc2NhbGVfeXJnYl95ID0gR0VUX1NDTF9GVF9C SUxJX0ROX1ZTS0lQKHlyZ2Jfc3JjX2gsCisJCQkJCQkJCXlyZ2JfZHN0X2gsCisJCQkJCQkJCXZk bXVsdCk7CisJCQlpZiAodmRtdWx0ID09IDQpIHsKKwkJCQl2c2RfeXJnYl9ndDQgPSAxOworCQkJ CXZzZF95cmdiX2d0MiA9IDA7CisJCQl9IGVsc2UgaWYgKHZkbXVsdCA9PSAyKSB7CisJCQkJdnNk X3lyZ2JfZ3Q0ID0gMDsKKwkJCQl2c2RfeXJnYl9ndDIgPSAxOworCQkJfQorCQkJYnJlYWs7CisJ CWNhc2UgU0NBTEVfRE9XTl9BVkc6CisJCQlzY2FsZV95cmdiX3kgPSBHRVRfU0NMX0ZUX0FWUkco eXJnYl9zcmNfaCwgeXJnYl9kc3RfaCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCURSTV9F UlJPUigidW5zdXBwb3J0IHlyZ2JfdnNkX21vZGU6JWRcbiIsCisJCQkJICB5cmdiX3ZzZF9tb2Rl KTsKKwkJCWJyZWFrOworCQl9CisJCWJyZWFrOworCX0KKwkvKgorCSAqICgyLjEpQ0JDUiBIT1Ig U0NBTEUgRkFDVE9SCisJICovCisJc3dpdGNoIChjYnJfaG9yX3NjbF9tb2RlKSB7CisJY2FzZSBT Q0FMRV9VUDoKKwkJc2NhbGVfY2Jjcl94ID0gR0VUX1NDTF9GVF9CSUMoY2Jjcl9zcmNfdywgY2Jj cl9kc3Rfdyk7CisJCWJyZWFrOworCWNhc2UgU0NBTEVfRE9XTjoKKwkJc3dpdGNoIChjYnJfaHNk X21vZGUpIHsKKwkJY2FzZSBTQ0FMRV9ET1dOX0JJTDoKKwkJCXNjYWxlX2NiY3JfeCA9IEdFVF9T Q0xfRlRfQklMSV9ETihjYmNyX3NyY193LAorCQkJCQkJCSAgY2Jjcl9kc3Rfdyk7CisJCQlicmVh azsKKwkJY2FzZSBTQ0FMRV9ET1dOX0FWRzoKKwkJCXNjYWxlX2NiY3JfeCA9IEdFVF9TQ0xfRlRf QVZSRyhjYmNyX3NyY193LCBjYmNyX2RzdF93KTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJ RFJNX0VSUk9SKCJ1bnN1cHBvcnQgY2JyX2hzZF9tb2RlOiVkXG4iLCBjYnJfaHNkX21vZGUpOwor CQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJfQorCisJLyoKKwkgKiAoMi4yKUNCQ1IgVkVSIFND QUxFIEZBQ1RPUgorCSAqLworCXN3aXRjaCAoY2JyX3Zlcl9zY2xfbW9kZSkgeworCWNhc2UgU0NB TEVfVVA6CisJCXN3aXRjaCAoY2JyX3ZzdV9tb2RlKSB7CisJCWNhc2UgU0NBTEVfVVBfQklMOgor CQkJc2NhbGVfY2Jjcl95ID0gR0VUX1NDTF9GVF9CSUxJX1VQKGNiY3Jfc3JjX2gsCisJCQkJCQkJ ICBjYmNyX2RzdF9oKTsKKwkJCWJyZWFrOworCQljYXNlIFNDQUxFX1VQX0JJQzoKKwkJCWlmIChj YmNyX3NyY19oIDwgMykKKwkJCQlEUk1fRVJST1IoImNiY3Jfc3JjX2ggbmVlZCBncmVhdGVyIHRo YW4gMyAhXG4iKTsKKwkJCXNjYWxlX2NiY3JfeSA9IEdFVF9TQ0xfRlRfQklDKGNiY3Jfc3JjX2gs IGNiY3JfZHN0X2gpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlEUk1fRVJST1IoInVuc3Vw cG9ydCBjYnJfdnN1X21vZGU6JWRcbiIsIGNicl92c3VfbW9kZSk7CisJCQlicmVhazsKKwkJfQor CQlicmVhazsKKwljYXNlIFNDQUxFX0RPV046CisJCXN3aXRjaCAoY2JyX3ZzZF9tb2RlKSB7CisJ CWNhc2UgU0NBTEVfRE9XTl9CSUw6CisJCQl2ZG11bHQgPSBfZ2V0X3Zza2lwbGluZXMoY2Jjcl9z cmNfaCwgY2Jjcl9kc3RfaCk7CisJCQlzY2FsZV9jYmNyX3kgPSBHRVRfU0NMX0ZUX0JJTElfRE5f VlNLSVAoY2Jjcl9zcmNfaCwKKwkJCQkJCQkJY2Jjcl9kc3RfaCwKKwkJCQkJCQkJdmRtdWx0KTsK KwkJCWlmICh2ZG11bHQgPT0gNCkgeworCQkJCXZzZF9jYnJfZ3Q0ID0gMTsKKwkJCQl2c2RfY2Jy X2d0MiA9IDA7CisJCQl9IGVsc2UgaWYgKHZkbXVsdCA9PSAyKSB7CisJCQkJdnNkX2Nicl9ndDQg PSAwOworCQkJCXZzZF9jYnJfZ3QyID0gMTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFNDQUxF X0RPV05fQVZHOgorCQkJc2NhbGVfY2Jjcl95ID0gR0VUX1NDTF9GVF9BVlJHKGNiY3Jfc3JjX2gs IGNiY3JfZHN0X2gpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlEUk1fRVJST1IoInVuc3Vw cG9ydCBjYnJfdnNkX21vZGU6JWRcbiIsIGNicl92c2RfbW9kZSk7CisJCQlicmVhazsKKwkJfQor CQlicmVhazsKKwl9CisKKwlWT1BfU0NMX1NFVCh2b3AsIHdpbiwgeXJnYl9ob3Jfc2NsX21vZGUs IHlyZ2JfaG9yX3NjbF9tb2RlKTsKKwlWT1BfU0NMX1NFVCh2b3AsIHdpbiwgeXJnYl92ZXJfc2Ns X21vZGUsIHlyZ2JfdmVyX3NjbF9tb2RlKTsKKwlWT1BfU0NMX1NFVCh2b3AsIHdpbiwgY2JyX2hv cl9zY2xfbW9kZSwgY2JyX2hvcl9zY2xfbW9kZSk7CisJVk9QX1NDTF9TRVQodm9wLCB3aW4sIGNi cl92ZXJfc2NsX21vZGUsIGNicl92ZXJfc2NsX21vZGUpOworCVZPUF9TQ0xfU0VUKHZvcCwgd2lu LCBsYl9tb2RlLCBsYl9tb2RlKTsKKwlWT1BfU0NMX1NFVCh2b3AsIHdpbiwgeXJnYl9oc2RfbW9k ZSwgeXJnYl9oc2RfbW9kZSk7CisJVk9QX1NDTF9TRVQodm9wLCB3aW4sIGNicl9oc2RfbW9kZSwg Y2JyX2hzZF9tb2RlKTsKKwlWT1BfU0NMX1NFVCh2b3AsIHdpbiwgeXJnYl92c2RfbW9kZSwgeXJn Yl92c2RfbW9kZSk7CisJVk9QX1NDTF9TRVQodm9wLCB3aW4sIGNicl92c2RfbW9kZSwgY2JyX3Zz ZF9tb2RlKTsKKwlWT1BfU0NMX1NFVCh2b3AsIHdpbiwgeXJnYl92c3VfbW9kZSwgeXJnYl92c3Vf bW9kZSk7CisJVk9QX1NDTF9TRVQodm9wLCB3aW4sIGNicl92c3VfbW9kZSwgY2JyX3ZzdV9tb2Rl KTsKKwlWT1BfU0NMX1NFVCh2b3AsIHdpbiwgc2NhbGVfeXJnYl94LCBzY2FsZV95cmdiX3gpOwor CVZPUF9TQ0xfU0VUKHZvcCwgd2luLCBzY2FsZV95cmdiX3ksIHNjYWxlX3lyZ2JfeSk7CisJVk9Q X1NDTF9TRVQodm9wLCB3aW4sIHZzZF95cmdiX2d0NCwgdnNkX3lyZ2JfZ3Q0KTsKKwlWT1BfU0NM X1NFVCh2b3AsIHdpbiwgdnNkX3lyZ2JfZ3QyLCB2c2RfeXJnYl9ndDIpOworCVZPUF9TQ0xfU0VU KHZvcCwgd2luLCBzY2FsZV9jYmNyX3gsIHNjYWxlX2NiY3JfeCk7CisJVk9QX1NDTF9TRVQodm9w LCB3aW4sIHNjYWxlX2NiY3JfeSwgc2NhbGVfY2Jjcl95KTsKKwlWT1BfU0NMX1NFVCh2b3AsIHdp biwgdnNkX2Nicl9ndDQsIHZzZF9jYnJfZ3Q0KTsKKwlWT1BfU0NMX1NFVCh2b3AsIHdpbiwgdnNk X2Nicl9ndDIsIHZzZF9jYnJfZ3QyKTsKK30KKwogLyoKICAqIENhbGxlciBtdXN0IGhvbGQgdnN5 bmNfbXV0ZXguCiAgKi8KQEAgLTYyNCw2ICs5OTgsOCBAQCBzdGF0aWMgaW50IHZvcF91cGRhdGVf cGxhbmVfZXZlbnQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCS55MiA9IGNydGMtPm1vZGUu dmRpc3BsYXksCiAJfTsKIAlib29sIGNhbl9wb3NpdGlvbiA9IHBsYW5lLT50eXBlICE9IERSTV9Q TEFORV9UWVBFX1BSSU1BUlk7CisJaW50IG1pbl9zY2FsZSA9IHdpbi0+cGh5LT5zY2wgPyAweDAy MDAwIDogRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOworCWludCBtYXhfc2NhbGUgPSB3aW4t PnBoeS0+c2NsID8gMHg4MDAwMCA6IERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKIAogCWlm IChkcm1fZm9ybWF0X251bV9wbGFuZXMoZmItPnBpeGVsX2Zvcm1hdCkgPiAyKSB7CiAJCURSTV9F UlJPUigidW5zdXBwb3J0IG1vcmUgdGhhbiAyIHBsYW5lIGZvcm1hdFslMDh4XVxuIiwKQEAgLTYz Myw4ICsxMDA5LDggQEAgc3RhdGljIGludCB2b3BfdXBkYXRlX3BsYW5lX2V2ZW50KHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAogCiAJcmV0ID0gZHJtX3BsYW5lX2hlbHBlcl9jaGVja191cGRhdGUo cGxhbmUsIGNydGMsIGZiLAogCQkJCQkgICAgJnNyYywgJmRlc3QsICZjbGlwLAotCQkJCQkgICAg RFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAotCQkJCQkgICAgRFJNX1BMQU5FX0hFTFBFUl9O T19TQ0FMSU5HLAorCQkJCQkgICAgbWluX3NjYWxlLAorCQkJCQkgICAgbWF4X3NjYWxlLAogCQkJ CQkgICAgY2FuX3Bvc2l0aW9uLCBmYWxzZSwgJnZpc2libGUpOwogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CkBAIC03MzIsOSArMTEwOCwxOCBAQCBzdGF0aWMgaW50IHZvcF91cGRhdGVfcGxhbmVf ZXZlbnQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCVZPUF9XSU5fU0VUKHZvcCwgd2luLCB1 dl92aXIsIHV2X3Zpcl9zdHJpZGUpOwogCQlWT1BfV0lOX1NFVCh2b3AsIHdpbiwgdXZfbXN0LCB1 dl9tc3QpOwogCX0KKworCWlmICh3aW4tPnBoeS0+c2NsKQorCQlfdm9wX2NhbF9zY2xfZmFjKHZv cCwgd2luLCBhY3R1YWxfdywgYWN0dWFsX2gsCisJCQkJIGRlc3QueDIgLSBkZXN0LngxLCBkZXN0 LnkyIC0gZGVzdC55MSwKKwkJCQkgZmItPnBpeGVsX2Zvcm1hdCk7CisKIAl2YWwgPSAoYWN0dWFs X2ggLSAxKSA8PCAxNjsKIAl2YWwgfD0gKGFjdHVhbF93IC0gMSkgJiAweGZmZmY7CiAJVk9QX1dJ Tl9TRVQodm9wLCB3aW4sIGFjdF9pbmZvLCB2YWwpOworCisJdmFsID0gKGRlc3QueTIgLSBkZXN0 LnkxIC0gMSkgPDwgMTY7CisJdmFsIHw9IChkZXN0LngyIC0gZGVzdC54MSAtIDEpICYgMHhmZmZm OwogCVZPUF9XSU5fU0VUKHZvcCwgd2luLCBkc3BfaW5mbywgdmFsKTsKIAl2YWwgPSAoZHNwX3N0 eSAtIDEpIDw8IDE2OwogCXZhbCB8PSAoZHNwX3N0eCAtIDEpICYgMHhmZmZmOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuaCBiL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmgKaW5kZXggNjNlOWIzYS4uZWRhY2Rl ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3Au aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5oCkBAIC0x OTgsNCArMTk4LDEwMCBAQCBlbnVtIGZhY3Rvcl9tb2RlIHsKIAlBTFBIQV9TUkNfR0xPQkFMLAog fTsKIAorZW51bSBzY2FsZV9tb2RlIHsKKwlTQ0FMRV9OT05FID0gMHgwLAorCVNDQUxFX1VQICAg PSAweDEsCisJU0NBTEVfRE9XTiA9IDB4MgorfTsKKworZW51bSBsYl9tb2RlIHsKKwlMQl9ZVVZf Mzg0MFg1ID0gMHgwLAorCUxCX1lVVl8yNTYwWDggPSAweDEsCisJTEJfUkdCXzM4NDBYMiA9IDB4 MiwKKwlMQl9SR0JfMjU2MFg0ID0gMHgzLAorCUxCX1JHQl8xOTIwWDUgPSAweDQsCisJTEJfUkdC XzEyODBYOCA9IDB4NQorfTsKKworZW51bSBzYWNsZV91cF9tb2RlIHsKKwlTQ0FMRV9VUF9CSUwg PSAweDAsCisJU0NBTEVfVVBfQklDID0gMHgxCit9OworCitlbnVtIHNjYWxlX2Rvd25fbW9kZSB7 CisJU0NBTEVfRE9XTl9CSUwgPSAweDAsCisJU0NBTEVfRE9XTl9BVkcgPSAweDEKK307CisKKyNk ZWZpbmUgQ1VCSUNfUFJFQ0lTRSAgMAorI2RlZmluZSBDVUJJQ19TUExJTkUgICAxCisjZGVmaW5l IENVQklDX0NBVFJPTSAgIDIKKyNkZWZpbmUgQ1VCSUNfTUlUQ0hFTEwgMworCisjZGVmaW5lIENV QklDX01PREVfU0VMRVRJT04gICAgICBDVUJJQ19QUkVDSVNFCisKKyNkZWZpbmUgU0NMX0ZUX0JJ TElfRE5fRklYUE9JTlRfU0hJRlQJMTIKKyNkZWZpbmUgU0NMX0ZUX0JJTElfRE5fRklYUE9JTlQo eCkgXAorCQkoKElOVDMyKSgoeCkqKDEgPDwgU0NMX0ZUX0JJTElfRE5fRklYUE9JTlRfU0hJRlQp KSkKKworI2RlZmluZSBTQ0xfRlRfQklMSV9VUF9GSVhQT0lOVF9TSElGVAkxNgorCisjZGVmaW5l IFNDTF9GVF9BVlJHX0ZJWFBPSU5UX1NISUZUCTE2CisjZGVmaW5lIFNDTF9GVF9BVlJHX0ZJWFBP SU5UKHgpIFwKKwkJKChJTlQzMikoKHgpICogKDEgPDwgU0NMX0ZUX0FWUkdfRklYUE9JTlRfU0hJ RlQpKSkKKworI2RlZmluZSBTQ0xfRlRfQklDX0ZJWFBPSU5UX1NISUZUCTE2CisjZGVmaW5lIFND TF9GVF9CSUNfRklYUE9JTlQoeCkgXAorCQkoKElOVDMyKSgoeCkqKDEgPDwgU0NMX0ZUX0JJQ19G SVhQT0lOVF9TSElGVCkpKQorCisjZGVmaW5lIFNDTF9GVF9ERUZBVUxUX0ZJWFBPSU5UX1NISUZU ICAgIDEyCisjZGVmaW5lIFNDTF9GVF9WU0RCSUxfRklYUE9JTlRfU0hJRlQgICAgIDEyCisKKyNk ZWZpbmUgU0NMX0NBTChzcmMsIGRzdCwgc2hpZnQpIFwKKwkJKCgoKHNyYykgKiAyIC0gMykgPDwg KChzaGlmdCkgLSAxKSkgLyAoKGRzdCkgLSAxKSkKKyNkZWZpbmUgR0VUX1NDTF9GVF9CSUxJX0RO KHNyYywgZHN0KSBcCisJCVNDTF9DQUwoc3JjLCBkc3QsIFNDTF9GVF9CSUxJX0ROX0ZJWFBPSU5U X1NISUZUKQorI2RlZmluZSBHRVRfU0NMX0ZUX0JJTElfVVAoc3JjLCBkc3QpIFwKKwkJU0NMX0NB TChzcmMsIGRzdCwgU0NMX0ZUX0JJTElfVVBfRklYUE9JTlRfU0hJRlQpCisjZGVmaW5lIEdFVF9T Q0xfRlRfQklDKHNyYywgZHN0KSBcCisJCVNDTF9DQUwoc3JjLCBkc3QsIFNDTF9GVF9CSUNfRklY UE9JTlRfU0hJRlQpCisKKyNkZWZpbmUgR0VUX1NDTF9ETl9BQ1RfSEVJR0hUKHNyY19oLCB2ZG11 bHQpIFwKKwkJKCgoc3JjX2gpICsgKHZkbXVsdCkgLSAxKSAvICh2ZG11bHQpKQorCisjZGVmaW5l IE1JTl9TQ0xfRlRfQUZURVJfVlNLSVAJMQorI2RlZmluZSBHRVRfU0NMX0ZUX0JJTElfRE5fVlNL SVAoc3JjX2gsIGRzdF9oLCB2ZG11bHQpIFwKKwkJKChHRVRfU0NMX0ROX0FDVF9IRUlHSFQoKHNy Y19oKSwgKHZkbXVsdCkpID09IChkc3RfaCkpIFwKKwkJCT8gKEdFVF9TQ0xfRlRfQklMSV9ETigo c3JjX2gpLCAoZHN0X2gpKS8odmRtdWx0KSkgXAorCQkJOiBHRVRfU0NMX0ZUX0JJTElfRE4oR0VU X1NDTF9ETl9BQ1RfSEVJR0hUKChzcmNfaCksIFwKKwkJCQkJICAgICAodmRtdWx0KSksIChkc3Rf aCkpKQorCisjZGVmaW5lIEdFVF9TQ0xfRlRfQVZSRyhzcmMsIGRzdCkgXAorCQkoKChkc3QpIDw8 ICgoU0NMX0ZUX0FWUkdfRklYUE9JTlRfU0hJRlQpICsgMSkpIFwKKwkJIC8gKDIgKiAoc3JjKSAt IDEpKQorCisjZGVmaW5lIFNDTF9DT09SX0FDQ19GSVhQT0lOVF9TSElGVAkxNgorI2RlZmluZSBT Q0xfQ09PUl9BQ0NfRklYUE9JTlRfT05FCSgxIDw8IFNDTF9DT09SX0FDQ19GSVhQT0lOVF9TSElG VCkKKyNkZWZpbmUgU0NMX0NPT1JfQUNDX0ZJWFBPSU5UKHgpIFwKKwkJKChJTlQzMikoKHgpKigx IDw8IFNDTF9DT09SX0FDQ19GSVhQT0lOVF9TSElGVCkpKQorI2RlZmluZSBTQ0xfQ09PUl9BQ0Nf RklYUE9JTlRfUkVWRVJUKHgpCVwKKwkJKCgoKHgpID4+IChTQ0xfQ09PUl9BQ0NfRklYUE9JTlRf U0hJRlQtMSkpICsgMSkgPj4gMSkKKworI2RlZmluZSBTQ0xfR0VUX0NPT1JfQUNDX0ZJWFBPSU5U KHNjYWxlLCBzaGlmdCkgIFwKKwkJKChzY2FsZSkgPDwgKFNDTF9DT09SX0FDQ19GSVhQT0lOVF9T SElGVCAtIChzaGlmdCkpKQorI2RlZmluZSBTQ0xfRklMVEVSX0ZUX0ZJWFBPSU5UX1NISUZUCTgK KyNkZWZpbmUgU0NMX0ZJTFRFUl9GVF9GSVhQT0lOVF9PTkUJKDEgPDwgU0NMX0ZJTFRFUl9GVF9G SVhQT0lOVF9TSElGVCkKKyNkZWZpbmUgU0NMX0ZJTFRFUl9GVF9GSVhQT0lOVCh4KSBcCisJCSgo SU5UMzIpKCh4KSAqICgxIDw8IFNDTF9GSUxURVJfRlRfRklYUE9JTlRfU0hJRlQpKSkKKyNkZWZp bmUgU0NMX0ZJTFRFUl9GVF9GSVhQT0lOVF9SRVZFUlQoeCkgXAorCQkoKCgoeCkgPj4gKFNDTF9G SUxURVJfRlRfRklYUE9JTlRfU0hJRlQgLSAxKSkgKyAxKSA+PiAxKQorCisjZGVmaW5lIFNDTF9H RVRfRklMVEVSX0ZUX0ZJWFBPSU5UKGNhLCBzaGlmdCkgXAorCQkoKChjYSkgPj4gKChzaGlmdCkt U0NMX0ZJTFRFUl9GVF9GSVhQT0lOVF9TSElGVCkpICYgXAorCQkgKFNDTF9GSUxURVJfRlRfRklY UE9JTlRfT05FIC0gMSkpCisKKyNkZWZpbmUgU0NMX09GRlNFVF9GSVhQT0lOVF9TSElGVAk4Cisj ZGVmaW5lIFNDTF9PRkZTRVRfRklYUE9JTlQoeCkgXAorCQkoKElOVDMyKSgoeCkgKiAoMSA8PCBT Q0xfT0ZGU0VUX0ZJWFBPSU5UX1NISUZUKSkpCisKICNlbmRpZiAvKiBfUk9DS0NISVBfRFJNX1ZP UF9IICovCi0tIAoxLjcuOS41CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK