From mboxrd@z Thu Jan  1 00:00:00 1970
Return-path: <barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org>
Received: from 11.mo4.mail-out.ovh.net ([46.105.34.195]
 helo=mo4.mail-out.ovh.net)
 by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux))
 id 1UP6cL-000184-9Y
 for barebox@lists.infradead.org; Mon, 08 Apr 2013 07:35:55 +0000
Received: from mail628.ha.ovh.net (b7.ovh.net [213.186.33.57])
 by mo4.mail-out.ovh.net (Postfix) with SMTP id 2DF52104E9FD
 for <barebox@lists.infradead.org>; Mon,  8 Apr 2013 09:47:57 +0200 (CEST)
Date: Mon, 8 Apr 2013 09:31:50 +0200
From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Message-ID: <20130408073150.GW1568@game.jcrosoft.org>
References: <m3r4ixgmok.fsf@intrepid.localdomain>
 <m3ehexgmbs.fsf@intrepid.localdomain>
 <20130402065241.GB1906@pengutronix.de>
 <m3bo9q36ua.fsf@intrepid.localdomain>
 <m3k3oe15g9.fsf_-_@intrepid.localdomain>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To: <m3k3oe15g9.fsf_-_@intrepid.localdomain>
List-Id: <barebox.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/barebox>,
 <mailto:barebox-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/barebox/>
List-Post: <mailto:barebox@lists.infradead.org>
List-Help: <mailto:barebox-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/barebox>,
 <mailto:barebox-request@lists.infradead.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: "barebox" <barebox-bounces@lists.infradead.org>
Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org
Subject: Re: [PATCH] ARM: Support for IXP4xx hardware Queue Manager.
To: Krzysztof Halasa <khc@pm.waw.pl>
Cc: barebox@lists.infradead.org

c2FtZSBoZXJlIG5vIHByaW50ZiB1c2UgZGV2X2RiZyBvciBwcl9kZWJ1ZwoKT24gMjE6NTUgU3Vu
IDA3IEFwciAgICAgLCBLcnp5c3p0b2YgSGFsYXNhIHdyb3RlOgo+IFNpZ25lZC1vZmYtYnk6IEty
enlzenRvZiBIYcWCYXNhIDxraGNAcG0ud2F3LnBsPgo+IAo+IGRpZmYgLS1naXQgYS9hcmNoL2Fy
bS9tYWNoLWl4cDR4eC9LY29uZmlnIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvS2NvbmZpZwo+IGlu
ZGV4IGU2OWRlMjkuLjkyNDRiZTkgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm0vbWFjaC1peHA0eHgv
S2NvbmZpZwo+ICsrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L0tjb25maWcKPiBAQCAtMCwwICsx
LDkgQEAKPiAraWYgQVJDSF9JWFA0WFgKPiArCj4gK2NvbmZpZyBJWFA0WFhfUU1HUgo+ICsJdHJp
c3RhdGUgIklYUDR4eCBRdWV1ZSBNYW5hZ2VyIHN1cHBvcnQiCj4gKwloZWxwCj4gKwkgIFRoaXMg
ZHJpdmVyIHN1cHBvcnRzIElYUDR4eCBidWlsdC1pbiBoYXJkd2FyZSBxdWV1ZSBtYW5hZ2VyCj4g
KwkgIGFuZCBpcyByZXF1aXJlZCBieSB0aGUgRXRoZXJuZXQgZHJpdmVyLgo+ICsKPiArZW5kaWYK
PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvTWFrZWZpbGUgYi9hcmNoL2FybS9t
YWNoLWl4cDR4eC9NYWtlZmlsZQo+IGluZGV4IGQ4YTNkN2YuLjA5YTBkNjMgMTAwNjQ0Cj4gLS0t
IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvTWFrZWZpbGUKPiArKysgYi9hcmNoL2FybS9tYWNoLWl4
cDR4eC9NYWtlZmlsZQo+IEBAIC0xICsxLDIgQEAKPiAgb2JqLXkgKz0gZ2VuZXJpYy5vCj4gK29i
ai0kKENPTkZJR19JWFA0WFhfUU1HUikgKz0gcW1nci5vCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJt
L21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9xbWdyLmggYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9p
bmNsdWRlL21hY2gvcW1nci5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw
Li40ZTliOGQ0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2lu
Y2x1ZGUvbWFjaC9xbWdyLmgKPiBAQCAtMCwwICsxLDE2NCBAQAo+ICsvKgo+ICsgKiBDb3B5cmln
aHQgKEMpIDIwMDcgS3J6eXN6dG9mIEhhbGFzYSA8a2hjQHBtLndhdy5wbD4KPiArICoKPiArICog
VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vciBtb2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKPiArICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBJWFA0WFhfUU1HUl9I
Cj4gKyNkZWZpbmUgSVhQNFhYX1FNR1JfSAo+ICsKPiArI2luY2x1ZGUgPGNvbW1vbi5oPgo+ICsj
aW5jbHVkZSA8bWFjaC9peHA0eHgtcmVncy5oPgo+ICsjaW5jbHVkZSA8YXNtL2lvLmg+Cj4gKwo+
ICsjZGVmaW5lIERFQlVHX1FNR1IgICAgICAgMAo+ICsKPiArI2RlZmluZSBIQUxGX1FVRVVFUyAg
ICAgMzIKPiArI2RlZmluZSBRVUVVRVMgICAgICAgICAgNjQKPiArI2RlZmluZSBNQVhfUVVFVUVf
TEVOR1RIIDQgLyogaW4gZHdvcmRzICovCj4gKwo+ICsjZGVmaW5lIFFVRVVFX1NUQVQxX0VNUFRZ
ICAgICAgICAgICAgICAgMSAvKiBxdWV1ZSBzdGF0dXMgYml0cyAqLwo+ICsjZGVmaW5lIFFVRVVF
X1NUQVQxX05FQVJMWV9FTVBUWSAgICAgICAgMgo+ICsjZGVmaW5lIFFVRVVFX1NUQVQxX05FQVJM
WV9GVUxMICAgICAgICAgNAo+ICsjZGVmaW5lIFFVRVVFX1NUQVQxX0ZVTEwgICAgICAgICAgICAg
ICAgOAo+ICsjZGVmaW5lIFFVRVVFX1NUQVQyX1VOREVSRkxPVyAgICAgICAgICAgMQo+ICsjZGVm
aW5lIFFVRVVFX1NUQVQyX09WRVJGTE9XICAgICAgICAgICAgMgo+ICsKPiArI2RlZmluZSBRVUVV
RV9XQVRFUk1BUktfMF9FTlRSSUVTICAgICAgIDAKPiArI2RlZmluZSBRVUVVRV9XQVRFUk1BUktf
MV9FTlRSWSAgICAgICAgIDEKPiArI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfMl9FTlRSSUVTICAg
ICAgIDIKPiArI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfNF9FTlRSSUVTICAgICAgIDMKPiArI2Rl
ZmluZSBRVUVVRV9XQVRFUk1BUktfOF9FTlRSSUVTICAgICAgIDQKPiArI2RlZmluZSBRVUVVRV9X
QVRFUk1BUktfMTZfRU5UUklFUyAgICAgIDUKPiArI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfMzJf
RU5UUklFUyAgICAgIDYKPiArI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfNjRfRU5UUklFUyAgICAg
IDcKPiArCj4gKy8qIHF1ZXVlIGludGVycnVwdCByZXF1ZXN0IGNvbmRpdGlvbnMgKi8KPiArI2Rl
ZmluZSBRVUVVRV9JUlFfU1JDX0VNUFRZICAgICAgICAgICAgIDAKPiArI2RlZmluZSBRVUVVRV9J
UlFfU1JDX05FQVJMWV9FTVBUWSAgICAgIDEKPiArI2RlZmluZSBRVUVVRV9JUlFfU1JDX05FQVJM
WV9GVUxMICAgICAgIDIKPiArI2RlZmluZSBRVUVVRV9JUlFfU1JDX0ZVTEwgICAgICAgICAgICAg
IDMKPiArI2RlZmluZSBRVUVVRV9JUlFfU1JDX05PVF9FTVBUWSAgICAgICAgIDQKPiArI2RlZmlu
ZSBRVUVVRV9JUlFfU1JDX05PVF9ORUFSTFlfRU1QVFkgIDUKPiArI2RlZmluZSBRVUVVRV9JUlFf
U1JDX05PVF9ORUFSTFlfRlVMTCAgIDYKPiArI2RlZmluZSBRVUVVRV9JUlFfU1JDX05PVF9GVUxM
ICAgICAgICAgIDcKPiArCj4gK3N0cnVjdCBxbWdyX3JlZ3Mgewo+ICsJdTMyIGFjY1tRVUVVRVNd
W01BWF9RVUVVRV9MRU5HVEhdOyAvKiAweDAwMCAtIDB4M0ZGICovCj4gKwl1MzIgc3RhdDFbNF07
ICAgICAgICAgLyogMHg0MDAgLSAweDQwRiAqLwo+ICsJdTMyIHN0YXQyWzJdOyAgICAgICAgIC8q
IDB4NDEwIC0gMHg0MTcgKi8KPiArCXUzMiBzdGF0bmVfaDsgICAgICAgICAvKiAweDQxOCAtIHF1
ZXVlIG5lYXJseSBlbXB0eSAqLwo+ICsJdTMyIHN0YXRmX2g7ICAgICAgICAgIC8qIDB4NDFDIC0g
cXVldWUgZnVsbCAqLwo+ICsJdTMyIGlycXNyY1s0XTsgICAgICAgIC8qIDB4NDIwIC0gMHg0MkYg
SVJDIHNvdXJjZSAqLwo+ICsJdTMyIGlycWVuWzJdOyAgICAgICAgIC8qIDB4NDMwIC0gMHg0Mzcg
SVJRIGVuYWJsZWQgKi8KPiArCXUzMiBpcnFzdGF0WzJdOyAgICAgICAvKiAweDQzOCAtIDB4NDNG
IC0gSVJRIGFjY2VzcyBvbmx5ICovCj4gKwl1MzIgcmVzZXJ2ZWRbMTc3Nl07Cj4gKwl1MzIgc3Jh
bVsyMDQ4XTsgICAgICAgLyogMHgyMDAwIC0gMHgzRkZGIC0gY29uZmlnIGFuZCBidWZmZXIgKi8K
PiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcW1ncl9yZWdzICpxbWdyX3JlZ3MgPSAo
c3RydWN0IHFtZ3JfcmVncyAqKUlYUDRYWF9RTUdSX0JBU0U7Cj4gKwo+ICt2b2lkIHFtZ3Jfc2V0
X2lycSh1bnNpZ25lZCBpbnQgcXVldWUsIGludCBzcmMsCj4gKwkJICB2b2lkICgqaGFuZGxlciko
dm9pZCAqcGRldiksIHZvaWQgKnBkZXYpOwo+ICt2b2lkIHFtZ3JfZW5hYmxlX2lycSh1bnNpZ25l
ZCBpbnQgcXVldWUpOwo+ICt2b2lkIHFtZ3JfZGlzYWJsZV9pcnEodW5zaWduZWQgaW50IHF1ZXVl
KTsKPiArCj4gKy8qIHJlcXVlc3RfIGFuZCByZWxlYXNlX3F1ZXVlKCkgbXVzdCBiZSBjYWxsZWQg
ZnJvbSBub24tSVJRIGNvbnRleHQgKi8KPiArCj4gKyNpZiBERUJVR19RTUdSCj4gK2V4dGVybiBj
aGFyIHFtZ3JfcXVldWVfZGVzY3NbSEFMRl9RVUVVRVNdWzMyXTsKPiArCj4gK3ZvaWQgcW1ncl9y
ZXF1ZXN0X3F1ZXVlKHVuc2lnbmVkIGludCBxdWV1ZSwgdW5zaWduZWQgaW50IGxlbiAvKiBkd29y
ZHMgKi8sCj4gKwkJCXVuc2lnbmVkIGludCBuZWFybHlfZW1wdHlfd2F0ZXJtYXJrLAo+ICsJCQl1
bnNpZ25lZCBpbnQgbmVhcmx5X2Z1bGxfd2F0ZXJtYXJrLAo+ICsJCQljb25zdCBjaGFyICpkZXNj
X2Zvcm1hdCwgY29uc3QgY2hhciogbmFtZSk7Cj4gKyNlbHNlCj4gK3ZvaWQgX19xbWdyX3JlcXVl
c3RfcXVldWUodW5zaWduZWQgaW50IHF1ZXVlLCB1bnNpZ25lZCBpbnQgbGVuIC8qIGR3b3JkcyAq
LywKPiArCQkJICB1bnNpZ25lZCBpbnQgbmVhcmx5X2VtcHR5X3dhdGVybWFyaywKPiArCQkJICB1
bnNpZ25lZCBpbnQgbmVhcmx5X2Z1bGxfd2F0ZXJtYXJrKTsKPiArI2RlZmluZSBxbWdyX3JlcXVl
c3RfcXVldWUocXVldWUsIGxlbiwgbmVhcmx5X2VtcHR5X3dhdGVybWFyaywgICAgICAgXAo+ICsJ
CQkgICBuZWFybHlfZnVsbF93YXRlcm1hcmssIGRlc2NfZm9ybWF0LCBuYW1lKSBcCj4gKwlfX3Ft
Z3JfcmVxdWVzdF9xdWV1ZShxdWV1ZSwgbGVuLCBuZWFybHlfZW1wdHlfd2F0ZXJtYXJrLCAgICAg
XAo+ICsJCQkgICAgIG5lYXJseV9mdWxsX3dhdGVybWFyaykKPiArI2VuZGlmCj4gKwo+ICt2b2lk
IHFtZ3JfcmVsZWFzZV9xdWV1ZSh1bnNpZ25lZCBpbnQgcXVldWUpOwo+ICsKPiArCj4gK3N0YXRp
YyBpbmxpbmUgdm9pZCBxbWdyX3B1dF9lbnRyeSh1bnNpZ25lZCBpbnQgcXVldWUsIHUzMiB2YWwp
Cj4gK3sKPiArI2lmIERFQlVHX1FNR1IKPiArCUJVR19PTighcW1ncl9xdWV1ZV9kZXNjc1txdWV1
ZV0pOyAvKiBub3QgeWV0IHJlcXVlc3RlZCAqLwo+ICsKPiArCWZwcmludGYoc3RkZXJyLCAiUXVl
dWUgJXMoJWkpIHB1dCAlWFxuIiwKPiArCQlxbWdyX3F1ZXVlX2Rlc2NzW3F1ZXVlXSwgcXVldWUs
IHZhbCk7Cj4gKyNlbmRpZgo+ICsJX19yYXdfd3JpdGVsKHZhbCwgJnFtZ3JfcmVncy0+YWNjW3F1
ZXVlXVswXSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdTMyIHFtZ3JfZ2V0X2VudHJ5KHVu
c2lnbmVkIGludCBxdWV1ZSkKPiArewo+ICsJdTMyIHZhbDsKPiArCXZhbCA9IF9fcmF3X3JlYWRs
KCZxbWdyX3JlZ3MtPmFjY1txdWV1ZV1bMF0pOwo+ICsjaWYgREVCVUdfUU1HUgo+ICsJQlVHX09O
KCFxbWdyX3F1ZXVlX2Rlc2NzW3F1ZXVlXSk7IC8qIG5vdCB5ZXQgcmVxdWVzdGVkICovCj4gKwo+
ICsJZnByaW50ZihzdGRlcnIsICJRdWV1ZSAlcyglaSkgZ2V0ICVYXG4iLAo+ICsJCXFtZ3JfcXVl
dWVfZGVzY3NbcXVldWVdLCBxdWV1ZSwgdmFsKTsKPiArI2VuZGlmCj4gKwlyZXR1cm4gdmFsOwo+
ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBfX3FtZ3JfZ2V0X3N0YXQxKHVuc2lnbmVkIGlu
dCBxdWV1ZSkKPiArewo+ICsJcmV0dXJuIChfX3Jhd19yZWFkbCgmcW1ncl9yZWdzLT5zdGF0MVtx
dWV1ZSA+PiAzXSkKPiArCQk+PiAoKHF1ZXVlICYgNykgPDwgMikpICYgMHhGOwo+ICt9Cj4gKwo+
ICsvKioKPiArICogcW1ncl9zdGF0X2VtcHR5KCkgLSBjaGVja3MgaWYgYSBoYXJkd2FyZSBxdWV1
ZSBpcyBlbXB0eQo+ICsgKiBAcXVldWU6IHF1ZXVlIG51bWJlcgo+ICsgKgo+ICsgKiBSZXR1cm5z
IG5vbi16ZXJvIHZhbHVlIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KPiArICovCj4gK3N0YXRpYyBp
bmxpbmUgaW50IHFtZ3Jfc3RhdF9lbXB0eSh1bnNpZ25lZCBpbnQgcXVldWUpCj4gK3sKPiArCXJl
dHVybiBfX3FtZ3JfZ2V0X3N0YXQxKHF1ZXVlKSAmIFFVRVVFX1NUQVQxX0VNUFRZOwo+ICt9Cj4g
Kwo+ICsvKioKPiArICogcW1ncl9zdGF0X2JlbG93X2xvd193YXRlcm1hcmsoKSAtIGNoZWNrcyBp
ZiBhIHF1ZXVlIGlzIGJlbG93IGxvdyB3YXRlcm1hcmsKPiArICogQHF1ZXVlOiBxdWV1ZSBudW1i
ZXIKPiArICoKPiArICogUmV0dXJucyBub24temVybyB2YWx1ZSBpZiB0aGUgcXVldWUgaXMgYmVs
b3cgbG93IHdhdGVybWFyay4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IHFtZ3Jfc3RhdF9i
ZWxvd19sb3dfd2F0ZXJtYXJrKHVuc2lnbmVkIGludCBxdWV1ZSkKPiArewo+ICsJcmV0dXJuIF9f
cW1ncl9nZXRfc3RhdDEocXVldWUpICYgUVVFVUVfU1RBVDFfTkVBUkxZX0VNUFRZOwo+ICt9Cj4g
Kwo+ICsvKioKPiArICogcW1ncl9zdGF0X2Fib3ZlX2hpZ2hfd2F0ZXJtYXJrKCkgLSBjaGVja3Mg
aWYgYSBxdWV1ZSBpcyBhYm92ZSBoaWdoIHdhdGVybWFyawo+ICsgKiBAcXVldWU6IHF1ZXVlIG51
bWJlcgo+ICsgKgo+ICsgKiBSZXR1cm5zIG5vbi16ZXJvIHZhbHVlIGlmIHRoZSBxdWV1ZSBpcyBh
Ym92ZSBoaWdoIHdhdGVybWFyawo+ICsgKi8KPiArc3RhdGljIGlubGluZSBpbnQgcW1ncl9zdGF0
X2Fib3ZlX2hpZ2hfd2F0ZXJtYXJrKHVuc2lnbmVkIGludCBxdWV1ZSkKPiArewo+ICsJcmV0dXJu
IF9fcW1ncl9nZXRfc3RhdDEocXVldWUpICYgUVVFVUVfU1RBVDFfTkVBUkxZX0ZVTEw7Cj4gK30K
PiArCj4gKy8qKgo+ICsgKiBxbWdyX3N0YXRfZnVsbCgpIC0gY2hlY2tzIGlmIGEgaGFyZHdhcmUg
cXVldWUgaXMgZnVsbAo+ICsgKiBAcXVldWU6IHF1ZXVlIG51bWJlcgo+ICsgKgo+ICsgKiBSZXR1
cm5zIG5vbi16ZXJvIHZhbHVlIGlmIHRoZSBxdWV1ZSBpcyBmdWxsLgo+ICsgKi8KPiArc3RhdGlj
IGlubGluZSBpbnQgcW1ncl9zdGF0X2Z1bGwodW5zaWduZWQgaW50IHF1ZXVlKQo+ICt7Cj4gKwly
ZXR1cm4gX19xbWdyX2dldF9zdGF0MShxdWV1ZSkgJiBRVUVVRV9TVEFUMV9GVUxMOwo+ICt9Cj4g
Kwo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvcW1nci5jIGIv
YXJjaC9hcm0vbWFjaC1peHA0eHgvcW1nci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCAwMDAwMDAwLi44MWI2NTIyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2FyY2gvYXJtL21hY2gt
aXhwNHh4L3FtZ3IuYwo+IEBAIC0wLDAgKzEsMjU5IEBACj4gKy8qCj4gKyAqIEludGVsIElYUDR4
eCBRdWV1ZSBNYW5hZ2VyIGRyaXZlciBmb3IgTGludXgKPiArICoKPiArICogQ29weXJpZ2h0IChD
KSAyMDA3IEtyenlzenRvZiBIYWxhc2EgPGtoY0BwbS53YXcucGw+Cj4gKyAqCj4gKyAqIFRoaXMg
cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig
bW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4gKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxpbml0Lmg+Cj4gKyNpbmNs
dWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8bWFjaC9xbWdyLmg+Cj4gKwo+ICtzdGF0aWMgdTMy
IHVzZWRfc3JhbV9iaXRtYXBbNF07IC8qIDEyOCAxNi1kd29yZCBwYWdlcyAqLwo+ICsKPiArI2lm
IERFQlVHX1FNR1IKPiArY2hhciBxbWdyX3F1ZXVlX2Rlc2NzW0hBTEZfUVVFVUVTXVszMl07Cj4g
KyNlbmRpZgo+ICsKPiArI2lmZGVmIENPTkZJR19VU0VfSVJRCj4gKwo+ICtzdGF0aWMgdm9pZCAo
KmlycV9oYW5kbGVyc1tIQUxGX1FVRVVFU10pKHZvaWQgKnBkZXYpOwo+ICtzdGF0aWMgdm9pZCAq
aXJxX3BkZXZzW0hBTEZfUVVFVUVTXTsKPiArCj4gK3ZvaWQgcW1ncl9zZXRfaXJxKHVuc2lnbmVk
IGludCBxdWV1ZSwgaW50IHNyYywKPiArCQkgIHZvaWQgKCpoYW5kbGVyKSh2b2lkICpwZGV2KSwg
dm9pZCAqcGRldikKPiArewo+ICsJY29uc3QgdTMyICpyZWc7Cj4gKwlpbnQgYml0Owo+ICsJQlVH
X09OKHNyYyA+IFFVRVVFX0lSUV9TUkNfTk9UX0ZVTEwpOwo+ICsJcmVnID0gJnFtZ3JfcmVncy0+
aXJxc3JjW3F1ZXVlID4+IDNdOyAvKiA4IHF1ZXVlcyBwZXIgdTMyICovCj4gKwliaXQgPSAocXVl
dWUgJSA4KSAqIDQ7IC8qIDMgYml0cyArIDEgcmVzZXJ2ZWQgYml0IHBlciBxdWV1ZSAqLwo+ICsJ
X19yYXdfd3JpdGVsKChfX3Jhd19yZWFkbChyZWcpICYgfig3IDw8IGJpdCkpIHwgKHNyYyA8PCBi
aXQpLCByZWcpOwo+ICsKPiArCWlycV9oYW5kbGVyc1txdWV1ZV0gPSBoYW5kbGVyOwo+ICsJaXJx
X3BkZXZzW3F1ZXVlXSA9IHBkZXY7Cj4gK30KPiArCj4gKwo+ICtzdGF0aWMgdm9pZCBxbWdyX2ly
cTFfYTAodm9pZCAqZGF0YSkKPiArewo+ICsJaW50IGk7Cj4gKwl1MzIgZW5fYml0bWFwLCBzcmMs
IHN0YXQ7Cj4gKwo+ICsJLyogQUNLIC0gaXQgbWF5IGNsZWFyIGFueSBiaXRzIHNvIGRvbid0IHJl
bHkgb24gaXQgKi8KPiArCV9fcmF3X3dyaXRlbCgweEZGRkZGRkZGLCAmcW1ncl9yZWdzLT5pcnFz
dGF0WzBdKTsKPiArCj4gKwllbl9iaXRtYXAgPSBxbWdyX3JlZ3MtPmlycWVuWzBdOwo+ICsJd2hp
bGUgKGVuX2JpdG1hcCkgewo+ICsJCWkgPSBmbHMoZW5fYml0bWFwKSAtIDE7IC8qIG51bWJlciBv
ZiB0aGUgbGFzdCAibG93IiBxdWV1ZSAqLwo+ICsJCWVuX2JpdG1hcCAmPSB+QklUKGkpOwo+ICsJ
CXNyYyA9IHFtZ3JfcmVncy0+aXJxc3JjW2kgPj4gM107Cj4gKwkJc3RhdCA9IHFtZ3JfcmVncy0+
c3RhdDFbaSA+PiAzXTsKPiArCQlpZiAoc3JjICYgNCkgLyogdGhlIElSUSBjb25kaXRpb24gaXMg
aW52ZXJ0ZWQgKi8KPiArCQkJc3RhdCA9IH5zdGF0Owo+ICsJCWlmIChzdGF0ICYgQklUKHNyYyAm
IDMpKQo+ICsJCQlpcnFfaGFuZGxlcnNbaV0oaXJxX3BkZXZzW2ldKTsKPiArCX0KPiArfQo+ICsK
PiArCj4gK3N0YXRpYyB2b2lkIHFtZ3JfaXJxMSh2b2lkICpkYXRhKQo+ICt7Cj4gKwlpbnQgaTsK
PiArCXUzMiByZXFfYml0bWFwID0gX19yYXdfcmVhZGwoJnFtZ3JfcmVncy0+aXJxc3RhdFswXSk7
Cj4gKwo+ICsJaWYgKCFyZXFfYml0bWFwKQo+ICsJCXJldHVybjsKPiArCV9fcmF3X3dyaXRlbChy
ZXFfYml0bWFwLCAmcW1ncl9yZWdzLT5pcnFzdGF0WzBdKTsgLyogQUNLICovCj4gKwo+ICsJd2hp
bGUgKHJlcV9iaXRtYXApIHsKPiArCQlpID0gZmxzKHJlcV9iaXRtYXApIC0gMTsgLyogbnVtYmVy
IG9mIHRoZSBsYXN0IHF1ZXVlICovCj4gKwkJcmVxX2JpdG1hcCAmPSB+QklUKGkpOwo+ICsJCWly
cV9oYW5kbGVyc1tpXShpcnFfcGRldnNbaV0pOwo+ICsJfQo+ICt9Cj4gKwo+ICsKPiArdm9pZCBx
bWdyX2VuYWJsZV9pcnEodW5zaWduZWQgaW50IHF1ZXVlKQo+ICt7Cj4gKwl1MzIgbWFzayA9IDEg
PDwgcXVldWU7Cj4gKwo+ICsJX19yYXdfd3JpdGVsKF9fcmF3X3JlYWRsKCZxbWdyX3JlZ3MtPmly
cWVuWzBdKSB8IG1hc2ssCj4gKwkJICAgICAmcW1ncl9yZWdzLT5pcnFlblswXSk7Cj4gK30KPiAr
Cj4gK3ZvaWQgcW1ncl9kaXNhYmxlX2lycSh1bnNpZ25lZCBpbnQgcXVldWUpCj4gK3sKPiArCXUz
MiBtYXNrID0gMSA8PCBxdWV1ZTsKPiArCj4gKwlfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwoJnFt
Z3JfcmVncy0+aXJxZW5bMF0pICYgfm1hc2ssCj4gKwkJICAgICAmcW1ncl9yZWdzLT5pcnFlblsw
XSk7Cj4gKwlfX3Jhd193cml0ZWwobWFzaywgJnFtZ3JfcmVncy0+aXJxc3RhdFswXSk7IC8qIGNs
ZWFyICovCj4gK30KPiArCj4gKyNlbmRpZiAvKiBDT05GSUdfVVNFX0lSUSAqLwo+ICsKPiArc3Rh
dGljIGlubGluZSB2b2lkIHNoaWZ0X21hc2sodTMyICptYXNrKQo+ICt7Cj4gKwltYXNrWzNdID0g
bWFza1szXSA8PCAxIHwgbWFza1syXSA+PiAzMTsKPiArCW1hc2tbMl0gPSBtYXNrWzJdIDw8IDEg
fCBtYXNrWzFdID4+IDMxOwo+ICsJbWFza1sxXSA9IG1hc2tbMV0gPDwgMSB8IG1hc2tbMF0gPj4g
MzE7Cj4gKwltYXNrWzBdIDw8PSAxOwo+ICt9Cj4gKwo+ICsjaWYgREVCVUdfUU1HUgo+ICt2b2lk
IHFtZ3JfcmVxdWVzdF9xdWV1ZSh1bnNpZ25lZCBpbnQgcXVldWUsIHVuc2lnbmVkIGludCBsZW4g
LyogZHdvcmRzICovLAo+ICsJCQl1bnNpZ25lZCBpbnQgbmVhcmx5X2VtcHR5X3dhdGVybWFyaywK
PiArCQkJdW5zaWduZWQgaW50IG5lYXJseV9mdWxsX3dhdGVybWFyaywKPiArCQkJY29uc3QgY2hh
ciAqZGVzY19mb3JtYXQsIGNvbnN0IGNoYXIqIG5hbWUpCj4gKyNlbHNlCj4gK3ZvaWQgX19xbWdy
X3JlcXVlc3RfcXVldWUodW5zaWduZWQgaW50IHF1ZXVlLCB1bnNpZ25lZCBpbnQgbGVuIC8qIGR3
b3JkcyAqLywKPiArCQkJICB1bnNpZ25lZCBpbnQgbmVhcmx5X2VtcHR5X3dhdGVybWFyaywKPiAr
CQkJICB1bnNpZ25lZCBpbnQgbmVhcmx5X2Z1bGxfd2F0ZXJtYXJrKQo+ICsjZW5kaWYKPz8KPiAr
ewo+ICsJdTMyIGNmZywgYWRkciA9IDAsIG1hc2tbNF07IC8qIGluIDE2LWR3b3JkcyAqLwo+ICsK
PiArCUJVR19PTihxdWV1ZSA+PSBIQUxGX1FVRVVFUyk7Cj4gKwlCVUdfT04oKG5lYXJseV9lbXB0
eV93YXRlcm1hcmsgfCBuZWFybHlfZnVsbF93YXRlcm1hcmspICYgfjcpOwo+ICsKPiArCXN3aXRj
aCAobGVuKSB7Cj4gKwljYXNlICAxNjoKPiArCQljZmcgPSAwIDw8IDI0Owo+ICsJCW1hc2tbMF0g
PSAweDE7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlICAzMjoKPiArCQljZmcgPSAxIDw8IDI0Owo+ICsJ
CW1hc2tbMF0gPSAweDM7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlICA2NDoKPiArCQljZmcgPSAyIDw8
IDI0Owo+ICsJCW1hc2tbMF0gPSAweEY7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDEyODoKPiArCQlj
ZmcgPSAzIDw8IDI0Owo+ICsJCW1hc2tbMF0gPSAweEZGOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVs
dDoKPiArCQlCVUcoKTsKPiArCX0KPiArCj4gKwljZmcgfD0gbmVhcmx5X2VtcHR5X3dhdGVybWFy
ayA8PCAyNjsKPiArCWNmZyB8PSBuZWFybHlfZnVsbF93YXRlcm1hcmsgPDwgMjk7Cj4gKwlsZW4g
Lz0gMTY7IC8qIGluIDE2LWR3b3JkczogMSwgMiwgNCBvciA4ICovCj4gKwltYXNrWzFdID0gbWFz
a1syXSA9IG1hc2tbM10gPSAwOwo+ICsKPiArCUJVR19PTihfX3Jhd19yZWFkbCgmcW1ncl9yZWdz
LT5zcmFtW3F1ZXVlXSkpOwo+ICsKPiArCXdoaWxlICgxKSB7Cj4gKwkJaWYgKCEodXNlZF9zcmFt
X2JpdG1hcFswXSAmIG1hc2tbMF0pICYmCj4gKwkJICAgICEodXNlZF9zcmFtX2JpdG1hcFsxXSAm
IG1hc2tbMV0pICYmCj4gKwkJICAgICEodXNlZF9zcmFtX2JpdG1hcFsyXSAmIG1hc2tbMl0pICYm
Cj4gKwkJICAgICEodXNlZF9zcmFtX2JpdG1hcFszXSAmIG1hc2tbM10pKQo+ICsJCQlicmVhazsg
LyogZm91bmQgZnJlZSBzcGFjZSAqLwo+ICsKPiArCQlhZGRyKys7Cj4gKwkJc2hpZnRfbWFzayht
YXNrKTsKPiArCQlpZiAoYWRkciArIGxlbiA+IEFSUkFZX1NJWkUocW1ncl9yZWdzLT5zcmFtKSkg
ewo+ICsJCQlmcHJpbnRmKHN0ZGVyciwgInFtZ3I6IG5vIGZyZWUgU1JBTSBzcGFjZSBmb3IiCj4g
KwkJCQkiIHF1ZXVlICVpXG4iLCBxdWV1ZSk7Cj4gKwkJCUJVRygpOwo+ICsJCX0KPiArCX0KPiAr
Cj4gKwl1c2VkX3NyYW1fYml0bWFwWzBdIHw9IG1hc2tbMF07Cj4gKwl1c2VkX3NyYW1fYml0bWFw
WzFdIHw9IG1hc2tbMV07Cj4gKwl1c2VkX3NyYW1fYml0bWFwWzJdIHw9IG1hc2tbMl07Cj4gKwl1
c2VkX3NyYW1fYml0bWFwWzNdIHw9IG1hc2tbM107Cj4gKwlfX3Jhd193cml0ZWwoY2ZnIHwgKGFk
ZHIgPDwgMTQpLCAmcW1ncl9yZWdzLT5zcmFtW3F1ZXVlXSk7Cj4gKyNpZiBERUJVR19RTUdSCj4g
KwkvKiBubyBzbnByaW50ZigpICovCj4gKwlzcHJpbnRmKHFtZ3JfcXVldWVfZGVzY3NbcXVldWVd
LCBkZXNjX2Zvcm1hdCwgbmFtZSk7Cj4gKwlmcHJpbnRmKHN0ZGVyciwgInFtZ3I6IHJlcXVlc3Rl
ZCBxdWV1ZSAlcyglaSkgYWRkciA9IDB4JTAyWFxuIiwKPiArCQlxbWdyX3F1ZXVlX2Rlc2NzW3F1
ZXVlXSwgcXVldWUsIGFkZHIpOwo+ICsjZW5kaWYKPiArfQo+ICsKPiArdm9pZCBxbWdyX3JlbGVh
c2VfcXVldWUodW5zaWduZWQgaW50IHF1ZXVlKQo+ICt7Cj4gKwl1MzIgY2ZnLCBhZGRyLCBtYXNr
WzRdOwo+ICsKPiArCUJVR19PTihxdWV1ZSA+PSBIQUxGX1FVRVVFUyk7IC8qIG5vdCBpbiB2YWxp
ZCByYW5nZSAqLwo+ICsKPiArCWNmZyA9IF9fcmF3X3JlYWRsKCZxbWdyX3JlZ3MtPnNyYW1bcXVl
dWVdKTsKPiArCWFkZHIgPSAoY2ZnID4+IDE0KSAmIDB4RkY7Cj4gKwo+ICsJQlVHX09OKCFhZGRy
KTsgLyogbm90IHJlcXVlc3RlZCAqLwo+ICsKPiArCXN3aXRjaCAoKGNmZyA+PiAyNCkgJiAzKSB7
Cj4gKwljYXNlIDA6IG1hc2tbMF0gPSAweDE7IGJyZWFrOwo+ICsJY2FzZSAxOiBtYXNrWzBdID0g
MHgzOyBicmVhazsKPiArCWNhc2UgMjogbWFza1swXSA9IDB4RjsgYnJlYWs7Cj4gKwljYXNlIDM6
IG1hc2tbMF0gPSAweEZGOyBicmVhazsKPiArCX0KPiArCj4gKwltYXNrWzFdID0gbWFza1syXSA9
IG1hc2tbM10gPSAwOwo+ICsKPiArCXdoaWxlIChhZGRyLS0pCj4gKwkJc2hpZnRfbWFzayhtYXNr
KTsKPiArCj4gKyNpZiBERUJVR19RTUdSCj4gKwlmcHJpbnRmKHN0ZGVyciwgInFtZ3I6IHJlbGVh
c2luZyBxdWV1ZSAlcyglaSlcbiIsCj4gKwkJcW1ncl9xdWV1ZV9kZXNjc1txdWV1ZV0sIHF1ZXVl
KTsKPiArCXFtZ3JfcXVldWVfZGVzY3NbcXVldWVdWzBdID0gJ1x4MCc7Cj4gKyNlbmRpZgo+ICsJ
X19yYXdfd3JpdGVsKDAsICZxbWdyX3JlZ3MtPnNyYW1bcXVldWVdKTsKPiArCj4gKwl1c2VkX3Ny
YW1fYml0bWFwWzBdICY9IH5tYXNrWzBdOwo+ICsJdXNlZF9zcmFtX2JpdG1hcFsxXSAmPSB+bWFz
a1sxXTsKPiArCXVzZWRfc3JhbV9iaXRtYXBbMl0gJj0gfm1hc2tbMl07Cj4gKwl1c2VkX3NyYW1f
Yml0bWFwWzNdICY9IH5tYXNrWzNdOwo+ICsjaWZkZWYgQ09ORklHX1VTRV9JUlEKPiArCWlycV9o
YW5kbGVyc1txdWV1ZV0gPSBOVUxMOyAvKiBjYXRjaCBJUlEgYnVncyAqLwo+ICsjZW5kaWYKPiAr
Cj4gKwl3aGlsZSAoKGFkZHIgPSBxbWdyX2dldF9lbnRyeShxdWV1ZSkpKQo+ICsJCWZwcmludGYo
c3RkZXJyLCAicW1ncjogcmVsZWFzZWQgcXVldWUgJWkgbm90IGVtcHR5OiAweCUwOFhcbiIsCj4g
KwkJCXF1ZXVlLCBhZGRyKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBfX2luaXQgcW1ncl9pbml0
KHZvaWQpCj4gK3sKPiArCWludCBpOwo+ICsjaWZkZWYgQ09ORklHX1VTRV9JUlEKPiArCWludGVy
cnVwdF9oYW5kbGVyX3QgKmhhbmRsZXI7CndlIGhhdmUgbm8gaXJxIHN1cHBvcnQgb24gYmFyZWJv
eAo+ICsjZW5kaWYKPiArCj4gKwkvKiByZXNldCBxbWdyIHJlZ2lzdGVycyAqLwo+ICsJZm9yIChp
ID0gMDsgaSA8IDQ7IGkrKykgewo+ICsJCV9fcmF3X3dyaXRlbCgweDMzMzMzMzMzLCAmcW1ncl9y
ZWdzLT5zdGF0MVtpXSk7Cj4gKwkJX19yYXdfd3JpdGVsKDAsICZxbWdyX3JlZ3MtPmlycXNyY1tp
XSk7Cj4gKwl9Cj4gKwlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7Cj4gKwkJX19yYXdfd3JpdGVs
KDAsICZxbWdyX3JlZ3MtPnN0YXQyW2ldKTsKPiArCQlfX3Jhd193cml0ZWwoMHhGRkZGRkZGRiwg
JnFtZ3JfcmVncy0+aXJxc3RhdFtpXSk7IC8qIGNsZWFyICovCj4gKwkJX19yYXdfd3JpdGVsKDAs
ICZxbWdyX3JlZ3MtPmlycWVuW2ldKTsKPiArCX0KPiArCj4gKwlfX3Jhd193cml0ZWwoMHhGRkZG
RkZGRiwgJnFtZ3JfcmVncy0+c3RhdG5lX2gpOwo+ICsJX19yYXdfd3JpdGVsKDAsICZxbWdyX3Jl
Z3MtPnN0YXRmX2gpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBRVUVVRVM7IGkrKykKPiArCQlf
X3Jhd193cml0ZWwoMCwgJnFtZ3JfcmVncy0+c3JhbVtpXSk7Cj4gKwo+ICsjaWZkZWYgQ09ORklH
X1VTRV9JUlEKPiArCWlmIChjcHVfaXNfaXhwNDJ4X3Jldl9hMCgpKQo+ICsJCWhhbmRsZXIgPSBx
bWdyX2lycTFfYTA7Cj4gKwllbHNlCj4gKwkJaGFuZGxlciA9IHFtZ3JfaXJxMTsKPiArCj4gKwlp
cnFfaW5zdGFsbF9oYW5kbGVyKElYUDQyNV9RTTFfSVJRLCBoYW5kbGVyLCBOVUxMKTsKPiArI2Vu
ZGlmCj4gKwl1c2VkX3NyYW1fYml0bWFwWzBdID0gMHhGOyAvKiA0IGZpcnN0IHBhZ2VzIHJlc2Vy
dmVkIGZvciBjb25maWcgKi8KPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtjb3JlZGV2aWNlX2lu
aXRjYWxsKHFtZ3JfaW5pdCk7Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KPiBiYXJlYm94IG1haWxpbmcgbGlzdAo+IGJhcmVib3hAbGlzdHMuaW5m
cmFkZWFkLm9yZwo+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v
YmFyZWJveAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
YmFyZWJveCBtYWlsaW5nIGxpc3QKYmFyZWJveEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s
aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vYmFyZWJveAo=