Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Sep 2010 13:08:19 +0200
From:      =?UTF-8?B?VmxhZGltaXIgJ8+GLWNvZGVyL3BoY29kZXInIFNlcmJpbmVua28=?= <phcoder@gmail.com>
To:        freebsd-mips@freebsd.org
Subject:   Re: [RFC] [yeeloong] cache algorithms
Message-ID:  <4CA07B23.3060003@gmail.com>
In-Reply-To: <4CA045DF.2060803@gmail.com>
References:  <4CA045DF.2060803@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------040300030108000809070504
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09/27/2010 09:21 AM, Vladimir 'φ-coder/phcoder' Serbinenko wrote:
> On Loongson the cache maintenance routines are subtly different (took me
> a very long time to figure out). Here I attach the patch which would
> adapt the algorithms for Loongson but it would also break other CPUs so
> I would like your comment on how to best incorporate it into current
> tree? The problems are:
> 1) Other bits are used to specify the way
> 2) i-cache has only index_invalidate and no hit_invalidate
> 3) secondary cache flush is a must on dma operations
> Is it better to copy-paste mipsNN_* to something like mipsNN_loongson_*
> or is it better to use #ifdef's ?
> Should I define mips_sdcache_* to a nop on non-Loongson?
>
>
>   


-- 
Regards
Vladimir 'φ-coder/phcoder' Serbinenko


--------------040300030108000809070504
Content-Type: text/plain;
 name="cache.diff.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="cache.diff.txt"

PT09IG1vZGlmaWVkIGZpbGUgJ21pcHMvbWlwcy9idXNfc3BhY2VfZ2VuZXJpYy5jJwotLS0g
bWlwcy9taXBzL2J1c19zcGFjZV9nZW5lcmljLmMJMjAxMC0wOC0xMyAyMjoxNjo0OSArMDAw
MAorKysgbWlwcy9taXBzL2J1c19zcGFjZV9nZW5lcmljLmMJMjAxMC0wOC0xNSAwNDoxODoy
MSArMDAwMApAQCAtNTkzLDYgKzU5Myw5IEBACiB7CiAjaWYgMAogCWlmIChmbGFncyAmIEJV
U19TUEFDRV9CQVJSSUVSX1dSSVRFKQorCXsKIAkJbWlwc19kY2FjaGVfd2JpbnZfYWxsKCk7
CisJCW1pcHNfc2RjYWNoZV93Ymludl9hbGwoKTsKKwl9CiAjZW5kaWYKIH0KCj09PSBtb2Rp
ZmllZCBmaWxlICdtaXBzL21pcHMvYnVzZG1hX21hY2hkZXAuYycKLS0tIG1pcHMvbWlwcy9i
dXNkbWFfbWFjaGRlcC5jCTIwMTAtMDgtMTMgMjI6MTY6NDkgKzAwMDAKKysrIG1pcHMvbWlw
cy9idXNkbWFfbWFjaGRlcC5jCTIwMTAtMDgtMTcgMTQ6MDI6MTkgKzAwMDAKQEAgLTYzOCw2
ICs2MzgsOCBAQAogCQkJbmV3bWFwLT5hbGxvY2J1ZmZlciA9IHRtcGFkZHI7CiAJCQltaXBz
X2RjYWNoZV93Ymludl9yYW5nZSgodm1fb2Zmc2V0X3QpKnZhZGRyLAogCQkJICAgIGRtYXQt
Pm1heHNpemUpOworCQkJbWlwc19zZGNhY2hlX3diaW52X3JhbmdlKCh2bV9vZmZzZXRfdCkq
dmFkZHIsCisJCQkgICAgZG1hdC0+bWF4c2l6ZSk7CiAJCQkqdmFkZHIgPSB0bXBhZGRyOwog
CQl9IGVsc2UKIAkJCW5ld21hcC0+b3JpZ2J1ZmZlciA9IG5ld21hcC0+YWxsb2NidWZmZXIg
PSBOVUxMOwpAQCAtMTA3NCw2ICsxMDc5LDcgQEAKIAkJaWYgKHNpemVfY2xlbmQpCiAJCQlt
ZW1jcHkgKHRtcF9jbGVuZCwgKHZvaWQqKWJ1Zl9jbGVuZCwgc2l6ZV9jbGVuZCk7CiAJCW1p
cHNfZGNhY2hlX2ludl9yYW5nZSgodm1fb2Zmc2V0X3QpYnVmLCBsZW4pOworCQltaXBzX3Nk
Y2FjaGVfaW52X3JhbmdlKCh2bV9vZmZzZXRfdClidWYsIGxlbik7CiAJCS8qIAogCQkgKiBS
ZXN0b3JlIHRoZW0KIAkJICovCkBAIC0xMDg4LDE1ICsxMDk0LDIzIEBACiAJCSAqIG5lY2Vz
c2FyeS4KIAkJICovCiAJCWlmIChzaXplX2NsKQorCQl7CiAJCQltaXBzX2RjYWNoZV93Ymlu
dl9yYW5nZSgodm1fb2Zmc2V0X3QpYnVmX2NsLCBzaXplX2NsKTsKKwkJCW1pcHNfc2RjYWNo
ZV93Ymludl9yYW5nZSgodm1fb2Zmc2V0X3QpYnVmX2NsLCBzaXplX2NsKTsKKwkJfQogCQlp
ZiAoc2l6ZV9jbGVuZCAmJiAoc2l6ZV9jbCA9PSAwIHx8CiAgICAgICAgICAgICAgICAgICAg
IGJ1Zl9jbGVuZCAtIGJ1Zl9jbCA+IG1pcHNfcGRjYWNoZV9saW5lc2l6ZSkpCisJCXsKIAkJ
CW1pcHNfZGNhY2hlX3diaW52X3JhbmdlKCh2bV9vZmZzZXRfdClidWZfY2xlbmQsCiAJCQkg
ICBzaXplX2NsZW5kKTsKKwkJCW1pcHNfc2RjYWNoZV93Ymludl9yYW5nZSgodm1fb2Zmc2V0
X3QpYnVmX2NsZW5kLAorCQkJICAgc2l6ZV9jbGVuZCk7CisJCX0KIAkJYnJlYWs7CiAKIAlj
YXNlIEJVU19ETUFTWU5DX1BSRVJFQUR8QlVTX0RNQVNZTkNfUFJFV1JJVEU6CiAJCW1pcHNf
ZGNhY2hlX3diaW52X3JhbmdlKCh2bV9vZmZzZXRfdClidWZfY2wsIGxlbik7CisJCW1pcHNf
c2RjYWNoZV93Ymludl9yYW5nZSgodm1fb2Zmc2V0X3QpYnVmX2NsLCBsZW4pOwogCQlicmVh
azsKIAogCWNhc2UgQlVTX0RNQVNZTkNfUFJFUkVBRDoKQEAgLTExMDgsNiArMTEyMiw3IEBA
CiAJCWlmIChzaXplX2NsZW5kKQogCQkJbWVtY3B5ICh0bXBfY2xlbmQsICh2b2lkICopYnVm
X2NsZW5kLCBzaXplX2NsZW5kKTsKIAkJbWlwc19kY2FjaGVfaW52X3JhbmdlKCh2bV9vZmZz
ZXRfdClidWYsIGxlbik7CisJCW1pcHNfc2RjYWNoZV9pbnZfcmFuZ2UoKHZtX29mZnNldF90
KWJ1ZiwgbGVuKTsKIAkJLyoKIAkJICogUmVzdG9yZSB0aGVtCiAJCSAqLwpAQCAtMTEyMiwx
NSArMTEzNywyMyBAQAogCQkgKiBuZWNlc3NhcnkuCiAJCSAqLwogCQlpZiAoc2l6ZV9jbCkK
KwkJewogCQkJbWlwc19kY2FjaGVfd2JpbnZfcmFuZ2UoKHZtX29mZnNldF90KWJ1Zl9jbCwg
c2l6ZV9jbCk7CisJCQltaXBzX3NkY2FjaGVfd2JpbnZfcmFuZ2UoKHZtX29mZnNldF90KWJ1
Zl9jbCwgc2l6ZV9jbCk7CisJCX0KIAkJaWYgKHNpemVfY2xlbmQgJiYgKHNpemVfY2wgPT0g
MCB8fAogICAgICAgICAgICAgICAgICAgICBidWZfY2xlbmQgLSBidWZfY2wgPiBtaXBzX3Bk
Y2FjaGVfbGluZXNpemUpKQorCQl7CiAJCQltaXBzX2RjYWNoZV93Ymludl9yYW5nZSgodm1f
b2Zmc2V0X3QpYnVmX2NsZW5kLAogCQkJICAgc2l6ZV9jbGVuZCk7CisJCQltaXBzX3NkY2Fj
aGVfd2JpbnZfcmFuZ2UoKHZtX29mZnNldF90KWJ1Zl9jbGVuZCwKKwkJCSAgIHNpemVfY2xl
bmQpOworCQl9CiAJCWJyZWFrOwogCiAJY2FzZSBCVVNfRE1BU1lOQ19QUkVXUklURToKIAkJ
bWlwc19kY2FjaGVfd2JfcmFuZ2UoKHZtX29mZnNldF90KWJ1ZiwgbGVuKTsKKwkJbWlwc19z
ZGNhY2hlX3diX3JhbmdlKCh2bV9vZmZzZXRfdClidWYsIGxlbik7CiAJCWJyZWFrOwogCX0K
IH0KQEAgLTExNDksNiArMTE3Miw4IEBACiAJCQlpZiAoYnBhZ2UtPnZhZGRyX25vY2FjaGUg
PT0gMCkgewogCQkJCW1pcHNfZGNhY2hlX3diX3JhbmdlKGJwYWdlLT52YWRkciwKIAkJCQkg
ICAgYnBhZ2UtPmRhdGFjb3VudCk7CisJCQkJbWlwc19zZGNhY2hlX3diX3JhbmdlKGJwYWdl
LT52YWRkciwKKwkJCQkgICAgYnBhZ2UtPmRhdGFjb3VudCk7CiAJCQl9CiAJCQlkbWF0LT5i
b3VuY2Vfem9uZS0+dG90YWxfYm91bmNlZCsrOwogCQl9CkBAIC0xMTU2LDYgKzExODEsOCBA
QAogCQkJaWYgKGJwYWdlLT52YWRkcl9ub2NhY2hlID09IDApIHsKIAkJCQltaXBzX2RjYWNo
ZV9pbnZfcmFuZ2UoYnBhZ2UtPnZhZGRyLAogCQkJCSAgICBicGFnZS0+ZGF0YWNvdW50KTsK
KwkJCQltaXBzX3NkY2FjaGVfaW52X3JhbmdlKGJwYWdlLT52YWRkciwKKwkJCQkgICAgYnBh
Z2UtPmRhdGFjb3VudCk7CiAJCQl9CiAJCQliY29weSgodm9pZCAqKShicGFnZS0+dmFkZHJf
bm9jYWNoZSAhPSAwID8gCiAJICAgICAgIAkJICAgIGJwYWdlLT52YWRkcl9ub2NhY2hlIDog
YnBhZ2UtPnZhZGRyKSwKCj09PSBtb2RpZmllZCBmaWxlICdtaXBzL2luY2x1ZGUvY2FjaGUu
aCcKLS0tIG1pcHMvaW5jbHVkZS9jYWNoZS5oCTIwMTAtMDgtMTMgMjI6MTY6NDkgKzAwMDAK
KysrIG1pcHMvaW5jbHVkZS9jYWNoZS5oCTIwMTAtMDgtMTUgMDc6Mzg6MjMgKzAwMDAKQEAg
LTIxMyw2ICsyMTMsMjIgQEAKICNkZWZpbmUgbWlwc19pbnRlcm5fZGNhY2hlX3diX3Jhbmdl
KHYsIHMpCQkJCVwKIAlfX21jb18yYXJncyhpbnRlcm5fLCBkY2FjaGVfd2JfcmFuZ2UsICh2
KSwgKHMpKQogCisjZGVmaW5lCW1pcHNfc2RjYWNoZV93Ymludl9hbGwoKQkJCQkJXAorCV9f
bWNvX25vYXJncygsIGRjYWNoZV93Ymludl9hbGwpCisKKyNkZWZpbmUJbWlwc19zZGNhY2hl
X3diaW52X3JhbmdlKHYsIHMpCQkJCQlcCisJX19tY29fMmFyZ3MoLCBkY2FjaGVfd2JpbnZf
cmFuZ2UsICh2KSwgKHMpKQorCisjZGVmaW5lCW1pcHNfc2RjYWNoZV93Ymludl9yYW5nZV9p
bmRleCh2LCBzKQkJCQlcCisJX19tY29fMmFyZ3MoLCBkY2FjaGVfd2JpbnZfcmFuZ2VfaW5k
ZXgsICh2KSwgKHMpKQorCisjZGVmaW5lCW1pcHNfc2RjYWNoZV9pbnZfcmFuZ2UodiwgcykJ
CQkJCVwKKwlfX21jb18yYXJncygsIGRjYWNoZV9pbnZfcmFuZ2UsICh2KSwgKHMpKQorCisj
ZGVmaW5lCW1pcHNfc2RjYWNoZV93Yl9yYW5nZSh2LCBzKQkJCQkJXAorCV9fbWNvXzJhcmdz
KCwgZGNhY2hlX3diX3JhbmdlLCAodiksIChzKSkKKworCiAvKiBmb3J3YXJkIGRlY2xhcmF0
aW9uICovCiBzdHJ1Y3QgbWlwc19jcHVpbmZvOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnbWlw
cy9pbmNsdWRlL2NhY2hlX21pcHNOTi5oJwotLS0gbWlwcy9pbmNsdWRlL2NhY2hlX21pcHNO
Ti5oCTIwMTAtMDgtMTMgMjI6MTY6NDkgKzAwMDAKKysrIG1pcHMvaW5jbHVkZS9jYWNoZV9t
aXBzTk4uaAkyMDEwLTA4LTE1IDA3OjM5OjMxICswMDAwCkBAIC01Nyw2ICs1NywxMyBAQAog
dm9pZAltaXBzTk5fcGRjYWNoZV9pbnZfcmFuZ2VfMzIodm1fb2Zmc2V0X3QsIHZtX3NpemVf
dCk7CiB2b2lkCW1pcHNOTl9wZGNhY2hlX3diX3JhbmdlXzE2KHZtX29mZnNldF90LCB2bV9z
aXplX3QpOwogdm9pZAltaXBzTk5fcGRjYWNoZV93Yl9yYW5nZV8zMih2bV9vZmZzZXRfdCwg
dm1fc2l6ZV90KTsKKwordm9pZAltaXBzTk5fc2RjYWNoZV93Ymludl9hbGxfMzIodm9pZCk7
Cit2b2lkCW1pcHNOTl9zZGNhY2hlX3diaW52X3JhbmdlXzMyKHZtX29mZnNldF90LCB2bV9z
aXplX3QpOwordm9pZAltaXBzTk5fc2RjYWNoZV93Ymludl9yYW5nZV9pbmRleF8zMih2bV9v
ZmZzZXRfdCwgdm1fc2l6ZV90KTsKK3ZvaWQJbWlwc05OX3NkY2FjaGVfaW52X3JhbmdlXzMy
KHZtX29mZnNldF90LCB2bV9zaXplX3QpOwordm9pZAltaXBzTk5fc2RjYWNoZV93Yl9yYW5n
ZV8zMih2bV9vZmZzZXRfdCwgdm1fc2l6ZV90KTsKKwogI2lmZGVmIENQVV9DTk1JUFMKIHZv
aWQJbWlwc05OX2ljYWNoZV9zeW5jX2FsbF8xMjgodm9pZCk7CiB2b2lkCW1pcHNOTl9pY2Fj
aGVfc3luY19yYW5nZV8xMjgodm1fb2Zmc2V0X3QsIHZtX3NpemVfdCk7Cgo9PT0gbW9kaWZp
ZWQgZmlsZSAnbWlwcy9pbmNsdWRlL2NwdWluZm8uaCcKLS0tIG1pcHMvaW5jbHVkZS9jcHVp
bmZvLmgJMjAxMC0wOC0xMyAyMjoxNjo0OSArMDAwMAorKysgbWlwcy9pbmNsdWRlL2NwdWlu
Zm8uaAkyMDEwLTA4LTE1IDA3OjQzOjM5ICswMDAwCkBAIC02Nyw2ICs2NywxMiBAQAogCQl1
X2ludDhfdAlkY19ud2F5czsKIAkJdV9pbnQxNl90CWRjX25zZXRzOwogCX0gbDE7CisJc3Ry
dWN0IHsKKwkJdV9pbnQzMl90CWRjX3NpemU7CisJCXVfaW50OF90CWRjX2xpbmVzaXplOwor
CQl1X2ludDhfdAlkY19ud2F5czsKKwkJdV9pbnQxNl90CWRjX25zZXRzOworCX0gbDI7CiB9
OwogCiBleHRlcm4gc3RydWN0IG1pcHNfY3B1aW5mbyBjcHVpbmZvOwoKPT09IG1vZGlmaWVk
IGZpbGUgJ21pcHMvaW5jbHVkZS9jcHVyZWdzLmgnCi0tLSBtaXBzL2luY2x1ZGUvY3B1cmVn
cy5oCTIwMTAtMDgtMTMgMjI6MTY6NDkgKzAwMDAKKysrIG1pcHMvaW5jbHVkZS9jcHVyZWdz
LmgJMjAxMC0wOC0xNSAxMTowOTo1MSArMDAwMApAQCAtMTM2LDYgKzEzNiwxMCBAQAogI2Rl
ZmluZQlNSVBTX0NDQV9VQwkJMHgwMgkvKiBVbmNhY2hlZC4gKi8KICNkZWZpbmUJTUlQU19D
Q0FfQwkJMHgwMwkvKiBDYWNoZWFibGUsIGNvaGVyZW5jeSB1bnNwZWNpZmllZC4gKi8KIAor
I2lmIGRlZmluZWQgKENQVV9SMTAwMDApIHx8IGRlZmluZWQgKFRBUkdFVF9ZRUVMT09ORykK
KyNkZWZpbmUJTUlQU19DQ0FfVUEJMHgwNworI2VuZGlmCisKICNpZiBkZWZpbmVkKENQVV9S
NDAwMCkgfHwgZGVmaW5lZChDUFVfUjEwMDAwKQogI2RlZmluZQlNSVBTX0NDQV9DTkMJMHgw
MwogI2RlZmluZQlNSVBTX0NDQV9DQ0UJMHgwNApAQCAtMTQ1LDEwICsxNDksNiBAQAogI2Rl
ZmluZQlNSVBTX0NDQV9DQ1VPVwkweDA2CiAjZW5kaWYKIAotI2lmZGVmIENQVV9SMTAwMDAK
LSNkZWZpbmUJTUlQU19DQ0FfVUEJMHgwNwotI2VuZGlmCi0KICNkZWZpbmUJTUlQU19DQ0Ff
Q0FDSEVECU1JUFNfQ0NBX0NDRVcKICNlbmRpZiAvKiBkZWZpbmVkKENQVV9SNDAwMCkgfHwg
ZGVmaW5lZChDUFVfUjEwMDAwKSAqLwogCkBAIC0xODgsOCArMTg4LDE0IEBACiAjZGVmaW5l
CU1JUFNfWEtTRUdfU1RBUlQJCTB4YzAwMDAwMDAwMDAwMDAwMAogI2RlZmluZQlNSVBTX1hL
U0VHX0VORAkJCTB4YzAwMDAwZmY4MDAwMDAwMAogCisjaWYgX19taXBzID09IDMyIHx8IF9f
bWlwcyA9PSA2NAorI2RlZmluZSBTU05PUCBzc25vcAorI2Vsc2UKKyNkZWZpbmUgU1NOT1Ag
bm9wCisjZW5kaWYKKyAKIC8qIENQVSBkZXBlbmRlbnQgbXRjMCBoYXphcmQgaG9vayAqLwot
I2lmZGVmIENQVV9DTk1JUFMKKyNpZiBkZWZpbmVkIChDUFVfQ05NSVBTKSB8fCBkZWZpbmVk
IChUQVJHRVRfWUVFTE9PTkcpCiAjZGVmaW5lCUNPUDBfU1lOQyAgbm9wOyBub3A7IG5vcDsg
bm9wOyBub3A7CiAjZWxpZiBkZWZpbmVkKENQVV9TQjEpCiAjZGVmaW5lIENPUDBfU1lOQyAg
c3Nub3A7IHNzbm9wOyBzc25vcDsgc3Nub3A7IHNzbm9wOyBzc25vcDsgc3Nub3A7IHNzbm9w
OyBzc25vcApAQCAtNDE2LDcgKzQyMiw3IEBACiAjZGVmaW5lCU1JUFNfVkVDX0VKVEFHCQkw
eEJGQzAwNDgwCiAjZGVmaW5lCU1JUFNfVkVDX1RMQgkJMHg4MDAwMDAwMAogI2RlZmluZQlN
SVBTX1ZFQ19YVExCCQkweDgwMDAwMDgwCi0jZGVmaW5lCU1JUFNfVkVDX0NBQ0hFCQkweDgw
MDAwMTAwCisjZGVmaW5lCU1JUFNfVkVDX0NBQ0hFCQkweGEwMDAwMTAwCiAjZGVmaW5lCU1J
UFNfVkVDX0dFTkVSSUMJMHg4MDAwMDE4MAkvKiBNb3N0IGV4Y2VwdGlvbnMgKi8KICNkZWZp
bmUJTUlQU19WRUNfSU5URVJSVVBUCTB4ODAwMDAyMDAKIAoKPT09IG1vZGlmaWVkIGZpbGUg
J21pcHMvbWlwcy9jYWNoZS5jJwotLS0gbWlwcy9taXBzL2NhY2hlLmMJMjAxMC0wOC0xMyAy
MjoxNjo0OSArMDAwMAorKysgbWlwcy9taXBzL2NhY2hlLmMJMjAxMC0wOC0xNSAwNDowNzoz
NyArMDAwMApAQCAtMTk0LDYgKzE5NCwyOCBAQAogCQkgICAgY3B1aW5mby0+bDEuZGNfbGlu
ZXNpemUpOwogCX0KIAorCXN3aXRjaCAoY3B1aW5mby0+bDIuZGNfbGluZXNpemUpIHsKKwlj
YXNlIDMyOgorCQltaXBzX2NhY2hlX29wcy5tY29fc2RjYWNoZV93Ymludl9hbGwgPQorCQkg
ICAgbWlwc19jYWNoZV9vcHMubWNvX2ludGVybl9zZGNhY2hlX3diaW52X2FsbCA9CisJCSAg
ICBtaXBzTk5fc2RjYWNoZV93Ymludl9hbGxfMzI7CisJCW1pcHNfY2FjaGVfb3BzLm1jb19z
ZGNhY2hlX3diaW52X3JhbmdlID0KKwkJICAgIG1pcHNOTl9zZGNhY2hlX3diaW52X3Jhbmdl
XzMyOworCQltaXBzX2NhY2hlX29wcy5tY29fc2RjYWNoZV93Ymludl9yYW5nZV9pbmRleCA9
CisJCSAgICBtaXBzX2NhY2hlX29wcy5tY29faW50ZXJuX3NkY2FjaGVfd2JpbnZfcmFuZ2Vf
aW5kZXggPQorCQkgICAgbWlwc05OX3NkY2FjaGVfd2JpbnZfcmFuZ2VfaW5kZXhfMzI7CisJ
CW1pcHNfY2FjaGVfb3BzLm1jb19zZGNhY2hlX2ludl9yYW5nZSA9CisJCSAgICBtaXBzTk5f
c2RjYWNoZV9pbnZfcmFuZ2VfMzI7CisJCW1pcHNfY2FjaGVfb3BzLm1jb19zZGNhY2hlX3di
X3JhbmdlID0KKwkJICAgIG1pcHNfY2FjaGVfb3BzLm1jb19pbnRlcm5fc2RjYWNoZV93Yl9y
YW5nZSA9CisJCSAgICBtaXBzTk5fc2RjYWNoZV93Yl9yYW5nZV8zMjsKKwkJYnJlYWs7CisJ
ZGVmYXVsdDoKKwkJcGFuaWMoIm5vIFNEY2FjaGUgb3BzIGZvciAlZCBieXRlIGxpbmVzIiwK
KwkJICAgIGNwdWluZm8tPmwxLmRjX2xpbmVzaXplKTsKKwl9CisKKwogCW1pcHNOTl9jYWNo
ZV9pbml0KGNwdWluZm8pOwogCiAjaWYgMAoKPT09IG1vZGlmaWVkIGZpbGUgJ21pcHMvbWlw
cy9jYWNoZV9taXBzTk4uYycKLS0tIG1pcHMvbWlwcy9jYWNoZV9taXBzTk4uYwkyMDEwLTA4
LTEzIDIyOjE2OjQ5ICswMDAwCisrKyBtaXBzL21pcHMvY2FjaGVfbWlwc05OLmMJMjAxMC0w
OC0xNiAyMjowMDoxNiArMDAwMApAQCAtODIsNiArODIsMTIgQEAKIHN0YXRpYyBpbnQgcGRj
YWNoZV9sb29wY291bnQ7CiBzdGF0aWMgaW50IHBkY2FjaGVfd2F5X21hc2s7CiAKK3N0YXRp
YyBpbnQgc2RjYWNoZV9zaXplOworc3RhdGljIGludCBzZGNhY2hlX3N0cmlkZTsKK3N0YXRp
YyBpbnQgc2RjYWNoZV9sb29wY291bnQ7CitzdGF0aWMgaW50IHNkY2FjaGVfd2F5X21hc2s7
CisKKwogdm9pZAogbWlwc05OX2NhY2hlX2luaXQoc3RydWN0IG1pcHNfY3B1aW5mbyAqIGNw
dWluZm8pCiB7CkBAIC0xMTUsNiArMTIxLDE1IEBACiAJCSAgICBjcHVpbmZvLT5sMS5kY19u
d2F5czsKIAl9CiAKKwlpZiAoY3B1aW5mby0+bDIuZGNfbnNldHMgKiBjcHVpbmZvLT5sMi5k
Y19saW5lc2l6ZSA8IFBBR0VfU0laRSkgeworCQlzZGNhY2hlX3N0cmlkZSA9IGNwdWluZm8t
PmwyLmRjX25zZXRzICogY3B1aW5mby0+bDIuZGNfbGluZXNpemU7CisJCXNkY2FjaGVfbG9v
cGNvdW50ID0gY3B1aW5mby0+bDIuZGNfbndheXM7CisJfSBlbHNlIHsKKwkJc2RjYWNoZV9z
dHJpZGUgPSBQQUdFX1NJWkU7CisJCXNkY2FjaGVfbG9vcGNvdW50ID0gKGNwdWluZm8tPmwy
LmRjX25zZXRzICogY3B1aW5mby0+bDIuZGNfbGluZXNpemUgLyBQQUdFX1NJWkUpICoKKwkJ
ICAgIGNwdWluZm8tPmwyLmRjX253YXlzOworCX0KKwogCW1pcHNfcGljYWNoZV9saW5lc2l6
ZSA9IGNwdWluZm8tPmwxLmljX2xpbmVzaXplOwogCW1pcHNfcGRjYWNoZV9saW5lc2l6ZSA9
IGNwdWluZm8tPmwxLmRjX2xpbmVzaXplOwogCkBAIC0xMjMsNiArMTM4LDkgQEAKIAlwZGNh
Y2hlX3NpemUgPSBjcHVpbmZvLT5sMS5kY19zaXplOwogCXBkY2FjaGVfd2F5X21hc2sgPSBj
cHVpbmZvLT5sMS5kY19ud2F5cyAtIDE7CiAKKwlzZGNhY2hlX3NpemUgPSBjcHVpbmZvLT5s
Mi5kY19zaXplOworCXNkY2FjaGVfd2F5X21hc2sgPSBjcHVpbmZvLT5sMi5kY19ud2F5cyAt
IDE7CisKICNkZWZpbmUgQ0FDSEVfREVCVUcKICNpZmRlZiBDQUNIRV9ERUJVRwogCXByaW50
ZigiQ2FjaGUgaW5mbzpcbiIpOwpAQCAtMTgxLDYgKzE5OSwxMiBAQAogCVNZTkM7CiB9CiAK
KyNpZiBfX21pcHMgPT0gMworI2RlZmluZSBISVRfSV9JTlYgQ0FDSEVfUjRLX0l8Q0FDSEVP
UF9SNEtfSU5ERVhfSU5WCisjZWxzZQorI2RlZmluZSBISVRfSV9JTlYgQ0FDSEVfUjRLX0l8
Q0FDSEVPUF9SNEtfSElUX0lOVgorI2VuZGlmCisKIHZvaWQKIG1pcHNOTl9pY2FjaGVfc3lu
Y19yYW5nZV8xNih2bV9vZmZzZXRfdCB2YSwgdm1fc2l6ZV90IHNpemUpCiB7CkBAIC0xOTIs
MTIgKzIxNiwxMiBAQAogCW1pcHNfaW50ZXJuX2RjYWNoZV93Yl9yYW5nZSh2YSwgKGV2YSAt
IHZhKSk7CiAKIAl3aGlsZSAoKGV2YSAtIHZhKSA+PSAoMzIgKiAxNikpIHsKLQkJY2FjaGVf
cjRrX29wXzMybGluZXNfMTYodmEsIENBQ0hFX1I0S19JfENBQ0hFT1BfUjRLX0hJVF9JTlYp
OworCQljYWNoZV9yNGtfb3BfMzJsaW5lc18xNih2YSwgSElUX0lfSU5WKTsKIAkJdmEgKz0g
KDMyICogMTYpOwogCX0KIAogCXdoaWxlICh2YSA8IGV2YSkgewotCQljYWNoZV9vcF9yNGtf
bGluZSh2YSwgQ0FDSEVfUjRLX0l8Q0FDSEVPUF9SNEtfSElUX0lOVik7CisJCWNhY2hlX29w
X3I0a19saW5lKHZhLCBISVRfSV9JTlYpOwogCQl2YSArPSAxNjsKIAl9CiAKQEAgLTIxNSwx
MiArMjM5LDEyIEBACiAJbWlwc19pbnRlcm5fZGNhY2hlX3diX3JhbmdlKHZhLCAoZXZhIC0g
dmEpKTsKIAogCXdoaWxlICgoZXZhIC0gdmEpID49ICgzMiAqIDMyKSkgewotCQljYWNoZV9y
NGtfb3BfMzJsaW5lc18zMih2YSwgQ0FDSEVfUjRLX0l8Q0FDSEVPUF9SNEtfSElUX0lOVik7
CisJCWNhY2hlX3I0a19vcF8zMmxpbmVzXzMyKHZhLCBISVRfSV9JTlYpOwogCQl2YSArPSAo
MzIgKiAzMik7CiAJfQogCiAJd2hpbGUgKHZhIDwgZXZhKSB7Ci0JCWNhY2hlX29wX3I0a19s
aW5lKHZhLCBDQUNIRV9SNEtfSXxDQUNIRU9QX1I0S19ISVRfSU5WKTsKKwkJY2FjaGVfb3Bf
cjRrX2xpbmUodmEsIEhJVF9JX0lOVik7CiAJCXZhICs9IDMyOwogCX0KIApAQCAtMjMwLDcg
KzI1NCw3IEBACiB2b2lkCiBtaXBzTk5faWNhY2hlX3N5bmNfcmFuZ2VfaW5kZXhfMTYodm1f
b2Zmc2V0X3QgdmEsIHZtX3NpemVfdCBzaXplKQogewotCXVuc2lnbmVkIGludCBldmEsIHRt
cHZhOworCXZtX29mZnNldF90IGV2YSwgdG1wdmE7CiAJaW50IGksIHN0cmlkZSwgbG9vcGNv
dW50OwogCiAJLyoKQEAgLTI3Myw4ICsyOTcsOCBAQAogdm9pZAogbWlwc05OX2ljYWNoZV9z
eW5jX3JhbmdlX2luZGV4XzMyKHZtX29mZnNldF90IHZhLCB2bV9zaXplX3Qgc2l6ZSkKIHsK
LQl1bnNpZ25lZCBpbnQgZXZhLCB0bXB2YTsKLQlpbnQgaSwgc3RyaWRlLCBsb29wY291bnQ7
CisJdm1fb2Zmc2V0X3QgZXZhLCB0bXB2YTsKKwlpbnQgc3RyaWRlLCBsb29wY291bnQ7CiAK
IAkvKgogCSAqIFNpbmNlIHdlJ3JlIGRvaW5nIEluZGV4IG9wcywgd2UgZXhwZWN0IHRvIG5v
dCBiZSBhYmxlCkBAIC0yODIsNyArMzA2LDcgQEAKIAkgKiBiaXRzIHRoYXQgZGV0ZXJtaW5l
IHRoZSBjYWNoZSBpbmRleCwgYW5kIG1ha2UgYSBLU0VHMAogCSAqIGFkZHJlc3Mgb3V0IG9m
IHRoZW0uCiAJICovCi0JdmEgPSBNSVBTX1BIWVNfVE9fS1NFRzAodmEgJiBwaWNhY2hlX3dh
eV9tYXNrKTsKKwl2YSA9IE1JUFNfUEhZU19UT19LU0VHMCh2YSAmIDB4M2ZlMCk7CiAKIAll
dmEgPSByb3VuZF9saW5lMzIodmEgKyBzaXplKTsKIAl2YSA9IHRydW5jX2xpbmUzMih2YSk7
CkBAIC0yOTgsNyArMzIyLDcgQEAKIAogCXdoaWxlICgoZXZhIC0gdmEpID49ICg4ICogMzIp
KSB7CiAJCXRtcHZhID0gdmE7Ci0JCWZvciAoaSA9IDA7IGkgPCBsb29wY291bnQ7IGkrKywg
dG1wdmEgKz0gc3RyaWRlKQorLy8JCWZvciAoaSA9IDA7IGkgPCBsb29wY291bnQ7IGkrKywg
dG1wdmEgKz0gc3RyaWRlKQogCQkJY2FjaGVfcjRrX29wXzhsaW5lc18zMih0bXB2YSwKIAkJ
CSAgICBDQUNIRV9SNEtfSXxDQUNIRU9QX1I0S19JTkRFWF9JTlYpOwogCQl2YSArPSA4ICog
MzI7CkBAIC0zMDYsNyArMzMwLDcgQEAKIAogCXdoaWxlICh2YSA8IGV2YSkgewogCQl0bXB2
YSA9IHZhOwotCQlmb3IgKGkgPSAwOyBpIDwgbG9vcGNvdW50OyBpKyssIHRtcHZhICs9IHN0
cmlkZSkKKwkJLy8JZm9yIChpID0gMDsgaSA8IGxvb3Bjb3VudDsgaSsrLCB0bXB2YSArPSBz
dHJpZGUpCiAJCQljYWNoZV9vcF9yNGtfbGluZSh0bXB2YSwKIAkJCSAgICBDQUNIRV9SNEtf
SXxDQUNIRU9QX1I0S19JTkRFWF9JTlYpOwogCQl2YSArPSAzMjsKQEAgLTM1MSwxMiArMzc1
LDE5IEBACiAJd2hpbGUgKHZhIDwgZXZhKSB7CiAJCWNhY2hlX3I0a19vcF8zMmxpbmVzXzMy
KHZhLAogCQkgICAgQ0FDSEVfUjRLX0R8Q0FDSEVPUF9SNEtfSU5ERVhfV0JfSU5WKTsKKwkJ
Y2FjaGVfcjRrX29wXzMybGluZXNfMzIodmEgKyAxLAorCQkgICAgQ0FDSEVfUjRLX0R8Q0FD
SEVPUF9SNEtfSU5ERVhfV0JfSU5WKTsKKwkJY2FjaGVfcjRrX29wXzMybGluZXNfMzIodmEg
KyAyLAorCQkgICAgQ0FDSEVfUjRLX0R8Q0FDSEVPUF9SNEtfSU5ERVhfV0JfSU5WKTsKKwkJ
Y2FjaGVfcjRrX29wXzMybGluZXNfMzIodmEgKyAzLAorCQkgICAgQ0FDSEVfUjRLX0R8Q0FD
SEVPUF9SNEtfSU5ERVhfV0JfSU5WKTsKIAkJdmEgKz0gKDMyICogMzIpOwogCX0KIAogCVNZ
TkM7CiB9CiAKKwogdm9pZAogbWlwc05OX3BkY2FjaGVfd2JpbnZfcmFuZ2VfMTYodm1fb2Zm
c2V0X3QgdmEsIHZtX3NpemVfdCBzaXplKQogewpAQCAtMzkwLDExICs0MjEsMjAgQEAKIAl3
aGlsZSAoKGV2YSAtIHZhKSA+PSAoMzIgKiAzMikpIHsKIAkJY2FjaGVfcjRrX29wXzMybGlu
ZXNfMzIodmEsCiAJCSAgICBDQUNIRV9SNEtfRHxDQUNIRU9QX1I0S19ISVRfV0JfSU5WKTsK
KwkJY2FjaGVfcjRrX29wXzMybGluZXNfMzIodmEgKyAxLAorCQkgICAgQ0FDSEVfUjRLX0R8
Q0FDSEVPUF9SNEtfSElUX1dCX0lOVik7CisJCWNhY2hlX3I0a19vcF8zMmxpbmVzXzMyKHZh
ICsgMiwKKwkJICAgIENBQ0hFX1I0S19EfENBQ0hFT1BfUjRLX0hJVF9XQl9JTlYpOworCQlj
YWNoZV9yNGtfb3BfMzJsaW5lc18zMih2YSArIDMsCisJCSAgICBDQUNIRV9SNEtfRHxDQUNI
RU9QX1I0S19ISVRfV0JfSU5WKTsKIAkJdmEgKz0gKDMyICogMzIpOwogCX0KIAogCXdoaWxl
ICh2YSA8IGV2YSkgewogCQljYWNoZV9vcF9yNGtfbGluZSh2YSwgQ0FDSEVfUjRLX0R8Q0FD
SEVPUF9SNEtfSElUX1dCX0lOVik7CisJCWNhY2hlX29wX3I0a19saW5lKHZhICsgMSwgQ0FD
SEVfUjRLX0R8Q0FDSEVPUF9SNEtfSElUX1dCX0lOVik7CisJCWNhY2hlX29wX3I0a19saW5l
KHZhICsgMiwgQ0FDSEVfUjRLX0R8Q0FDSEVPUF9SNEtfSElUX1dCX0lOVik7CisJCWNhY2hl
X29wX3I0a19saW5lKHZhICsgMywgQ0FDSEVfUjRLX0R8Q0FDSEVPUF9SNEtfSElUX1dCX0lO
Vik7CiAJCXZhICs9IDMyOwogCX0KIApAQCAtNDEzLDcgKzQ1Myw3IEBACiAJICogYml0cyB0
aGF0IGRldGVybWluZSB0aGUgY2FjaGUgaW5kZXgsIGFuZCBtYWtlIGEgS1NFRzAKIAkgKiBh
ZGRyZXNzIG91dCBvZiB0aGVtLgogCSAqLwotCXZhID0gTUlQU19QSFlTX1RPX0tTRUcwKHZh
ICYgcGRjYWNoZV93YXlfbWFzayk7CisJdmEgPSBNSVBTX1BIWVNfVE9fS1NFRzAodmEgJiAw
eDNmZik7CiAKIAlldmEgPSByb3VuZF9saW5lMTYodmEgKyBzaXplKTsKIAl2YSA9IHRydW5j
X2xpbmUxNih2YSk7CkBAIC00MjcsNyArNDY3LDcgQEAKIAogCXdoaWxlICgoZXZhIC0gdmEp
ID49ICg4ICogMTYpKSB7CiAJCXRtcHZhID0gdmE7Ci0JCWZvciAoaSA9IDA7IGkgPCBsb29w
Y291bnQ7IGkrKywgdG1wdmEgKz0gc3RyaWRlKQorCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsr
LCB0bXB2YSArKykKIAkJCWNhY2hlX3I0a19vcF84bGluZXNfMTYodG1wdmEsCiAJCQkgICAg
Q0FDSEVfUjRLX0R8Q0FDSEVPUF9SNEtfSU5ERVhfV0JfSU5WKTsKIAkJdmEgKz0gOCAqIDE2
OwpAQCAtNDU0LDcgKzQ5NCw3IEBACiAJICogYml0cyB0aGF0IGRldGVybWluZSB0aGUgY2Fj
aGUgaW5kZXgsIGFuZCBtYWtlIGEgS1NFRzAKIAkgKiBhZGRyZXNzIG91dCBvZiB0aGVtLgog
CSAqLwotCXZhID0gTUlQU19QSFlTX1RPX0tTRUcwKHZhICYgcGRjYWNoZV93YXlfbWFzayk7
CisJdmEgPSBNSVBTX1BIWVNfVE9fS1NFRzAgKHZhICYgcGRjYWNoZV93YXlfbWFzayk7CiAK
IAlldmEgPSByb3VuZF9saW5lMzIodmEgKyBzaXplKTsKIAl2YSA9IHRydW5jX2xpbmUzMih2
YSk7CkBAIC00ODIsNyArNTIyLDcgQEAKIAkJdmEgKz0gMzI7CiAJfQogfQotIAorCiB2b2lk
CiBtaXBzTk5fcGRjYWNoZV9pbnZfcmFuZ2VfMTYodm1fb2Zmc2V0X3QgdmEsIHZtX3NpemVf
dCBzaXplKQogewpAQCAtNTE0LDExICs1NTQsMTggQEAKIAogCXdoaWxlICgoZXZhIC0gdmEp
ID49ICgzMiAqIDMyKSkgewogCQljYWNoZV9yNGtfb3BfMzJsaW5lc18zMih2YSwgQ0FDSEVf
UjRLX0R8Q0FDSEVPUF9SNEtfSElUX0lOVik7CisJCWNhY2hlX3I0a19vcF8zMmxpbmVzXzMy
KHZhICsgMSwgQ0FDSEVfUjRLX0R8Q0FDSEVPUF9SNEtfSElUX0lOVik7CisJCWNhY2hlX3I0
a19vcF8zMmxpbmVzXzMyKHZhICsgMiwgQ0FDSEVfUjRLX0R8Q0FDSEVPUF9SNEtfSElUX0lO
Vik7CisJCWNhY2hlX3I0a19vcF8zMmxpbmVzXzMyKHZhICsgMywgQ0FDSEVfUjRLX0R8Q0FD
SEVPUF9SNEtfSElUX0lOVik7CisKIAkJdmEgKz0gKDMyICogMzIpOwogCX0KIAogCXdoaWxl
ICh2YSA8IGV2YSkgewogCQljYWNoZV9vcF9yNGtfbGluZSh2YSwgQ0FDSEVfUjRLX0R8Q0FD
SEVPUF9SNEtfSElUX0lOVik7CisJCWNhY2hlX29wX3I0a19saW5lKHZhICsgMSwgQ0FDSEVf
UjRLX0R8Q0FDSEVPUF9SNEtfSElUX0lOVik7CisJCWNhY2hlX29wX3I0a19saW5lKHZhICsg
MiwgQ0FDSEVfUjRLX0R8Q0FDSEVPUF9SNEtfSElUX0lOVik7CisJCWNhY2hlX29wX3I0a19s
aW5lKHZhICsgMywgQ0FDSEVfUjRLX0R8Q0FDSEVPUF9SNEtfSElUX0lOVik7CiAJCXZhICs9
IDMyOwogCX0KIApAQCAtNTU2LDE4ICs2MDMsMjMgQEAKIAogCXdoaWxlICgoZXZhIC0gdmEp
ID49ICgzMiAqIDMyKSkgewogCQljYWNoZV9yNGtfb3BfMzJsaW5lc18zMih2YSwgQ0FDSEVf
UjRLX0R8Q0FDSEVPUF9SNEtfSElUX1dCKTsKKwkJY2FjaGVfcjRrX29wXzMybGluZXNfMzIo
dmEgKyAxLCBDQUNIRV9SNEtfRHxDQUNIRU9QX1I0S19ISVRfV0IpOworCQljYWNoZV9yNGtf
b3BfMzJsaW5lc18zMih2YSArIDIsIENBQ0hFX1I0S19EfENBQ0hFT1BfUjRLX0hJVF9XQik7
CisJCWNhY2hlX3I0a19vcF8zMmxpbmVzXzMyKHZhICsgMywgQ0FDSEVfUjRLX0R8Q0FDSEVP
UF9SNEtfSElUX1dCKTsKIAkJdmEgKz0gKDMyICogMzIpOwogCX0KIAogCXdoaWxlICh2YSA8
IGV2YSkgewogCQljYWNoZV9vcF9yNGtfbGluZSh2YSwgQ0FDSEVfUjRLX0R8Q0FDSEVPUF9S
NEtfSElUX1dCKTsKKwkJY2FjaGVfb3BfcjRrX2xpbmUodmEgKyAxLCBDQUNIRV9SNEtfRHxD
QUNIRU9QX1I0S19ISVRfV0IpOworCQljYWNoZV9vcF9yNGtfbGluZSh2YSArIDIsIENBQ0hF
X1I0S19EfENBQ0hFT1BfUjRLX0hJVF9XQik7CisJCWNhY2hlX29wX3I0a19saW5lKHZhICsg
MywgQ0FDSEVfUjRLX0R8Q0FDSEVPUF9SNEtfSElUX1dCKTsKIAkJdmEgKz0gMzI7CiAJfQog
CiAJU1lOQzsKIH0KIAotCiAjaWZkZWYgQ1BVX0NOTUlQUwogCiB2b2lkCkBAIC02MTcsMyAr
NjY5LDEzNiBAQAogfQogCiAjZW5kaWYKKwordm9pZAorbWlwc05OX3NkY2FjaGVfd2JpbnZf
YWxsXzMyKHZvaWQpCit7CisJdm1fb2Zmc2V0X3QgdmEsIGV2YTsKKworCXZhID0gTUlQU19Q
SFlTX1RPX0tTRUcwKDApOworCWV2YSA9IHZhICsgc2RjYWNoZV9zaXplOworCisJLyoKKwkg
KiBTaW5jZSB3ZSdyZSBoaXR0aW5nIHRoZSB3aG9sZSB0aGluZywgd2UgZG9uJ3QgaGF2ZSB0
bworCSAqIHdvcnJ5IGFib3V0IHRoZSBOIGRpZmZlcmVudCAid2F5cyIuCisJICovCisKKwl3
aGlsZSAodmEgPCBldmEpIHsKKwkJY2FjaGVfcjRrX29wXzMybGluZXNfMzIodmEsCisJCSAg
ICBDQUNIRV9SNEtfU0R8Q0FDSEVPUF9SNEtfSU5ERVhfV0JfSU5WKTsKKwkJY2FjaGVfcjRr
X29wXzMybGluZXNfMzIodmEgKyAxLAorCQkgICAgQ0FDSEVfUjRLX1NEfENBQ0hFT1BfUjRL
X0lOREVYX1dCX0lOVik7CisJCWNhY2hlX3I0a19vcF8zMmxpbmVzXzMyKHZhICsgMiwKKwkJ
ICAgIENBQ0hFX1I0S19TRHxDQUNIRU9QX1I0S19JTkRFWF9XQl9JTlYpOworCQljYWNoZV9y
NGtfb3BfMzJsaW5lc18zMih2YSArIDMsCisJCSAgICBDQUNIRV9SNEtfU0R8Q0FDSEVPUF9S
NEtfSU5ERVhfV0JfSU5WKTsKKwkJdmEgKz0gKDMyICogMzIpOworCX0KKworCVNZTkM7Cit9
CisKK3ZvaWQKK21pcHNOTl9zZGNhY2hlX3diaW52X3JhbmdlXzMyKHZtX29mZnNldF90IHZh
LCB2bV9zaXplX3Qgc2l6ZSkKK3sKKwl2bV9vZmZzZXRfdCBldmE7CisKKwlldmEgPSByb3Vu
ZF9saW5lMzIodmEgKyBzaXplKTsKKwl2YSA9IHRydW5jX2xpbmUzMih2YSk7CisKKwl3aGls
ZSAoKGV2YSAtIHZhKSA+PSAoMzIgKiAzMikpIHsKKwkJY2FjaGVfcjRrX29wXzMybGluZXNf
MzIodmEsCisJCSAgICBDQUNIRV9SNEtfU0R8Q0FDSEVPUF9SNEtfSElUX1dCX0lOVik7CisJ
CXZhICs9ICgzMiAqIDMyKTsKKwl9CisKKwl3aGlsZSAodmEgPCBldmEpIHsKKwkJY2FjaGVf
b3BfcjRrX2xpbmUodmEsIENBQ0hFX1I0S19TRHxDQUNIRU9QX1I0S19ISVRfV0JfSU5WKTsK
KwkJdmEgKz0gMzI7CisJfQorCisJU1lOQzsKK30KKwordm9pZAorbWlwc05OX3NkY2FjaGVf
d2JpbnZfcmFuZ2VfaW5kZXhfMzIodm1fb2Zmc2V0X3QgdmEsIHZtX3NpemVfdCBzaXplKQor
eworCXZtX29mZnNldF90IGV2YSwgdG1wdmE7CisJaW50IGksIHN0cmlkZSwgbG9vcGNvdW50
OworCisJLyoKKwkgKiBTaW5jZSB3ZSdyZSBkb2luZyBJbmRleCBvcHMsIHdlIGV4cGVjdCB0
byBub3QgYmUgYWJsZQorCSAqIHRvIGFjY2VzcyB0aGUgYWRkcmVzcyB3ZSd2ZSBiZWVuIGdp
dmVuLiAgU28sIGdldCB0aGUKKwkgKiBiaXRzIHRoYXQgZGV0ZXJtaW5lIHRoZSBjYWNoZSBp
bmRleCwgYW5kIG1ha2UgYSBLU0VHMAorCSAqIGFkZHJlc3Mgb3V0IG9mIHRoZW0uCisJICov
CisJdmEgPSBNSVBTX1BIWVNfVE9fS1NFRzAgKHZhICYgMHgxZmZmZik7CisKKwlldmEgPSBy
b3VuZF9saW5lMzIodmEgKyBzaXplKTsKKwl2YSA9IHRydW5jX2xpbmUzMih2YSk7CisKKwkv
KgorCSAqIEdDQyBnZW5lcmF0ZXMgYmV0dGVyIGNvZGUgaW4gdGhlIGxvb3BzIGlmIHdlIHJl
ZmVyZW5jZSBsb2NhbAorCSAqIGNvcGllcyBvZiB0aGVzZSBnbG9iYWwgdmFyaWFibGVzLgor
CSAqLworCXN0cmlkZSA9IHNkY2FjaGVfc3RyaWRlOworCWxvb3Bjb3VudCA9IHNkY2FjaGVf
bG9vcGNvdW50OworCisJd2hpbGUgKChldmEgLSB2YSkgPj0gKDggKiAzMikpIHsKKwkJdG1w
dmEgPSB2YTsKKwkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKywgdG1wdmErKykKKwkJCWNhY2hl
X3I0a19vcF84bGluZXNfMzIodG1wdmEsCisJCQkgICAgQ0FDSEVfUjRLX1NEfENBQ0hFT1Bf
UjRLX0lOREVYX1dCX0lOVik7CisJCXZhICs9IDggKiAzMjsKKwl9CisKKwl3aGlsZSAodmEg
PCBldmEpIHsKKwkJdG1wdmEgPSB2YTsKKwkJZm9yIChpID0gMDsgaSA8IGxvb3Bjb3VudDsg
aSsrLCB0bXB2YSArPSBzdHJpZGUpCisJCQljYWNoZV9vcF9yNGtfbGluZSh0bXB2YSwKKwkJ
CSAgICBDQUNIRV9SNEtfU0R8Q0FDSEVPUF9SNEtfSU5ERVhfV0JfSU5WKTsKKwkJdmEgKz0g
MzI7CisJfQorfQorCit2b2lkCittaXBzTk5fc2RjYWNoZV9pbnZfcmFuZ2VfMzIodm1fb2Zm
c2V0X3QgdmEsIHZtX3NpemVfdCBzaXplKQoreworCXZtX29mZnNldF90IGV2YTsKKworCWV2
YSA9IHJvdW5kX2xpbmUzMih2YSArIHNpemUpOworCXZhID0gdHJ1bmNfbGluZTMyKHZhKTsK
KworCXdoaWxlICgoZXZhIC0gdmEpID49ICgzMiAqIDMyKSkgeworCQljYWNoZV9yNGtfb3Bf
MzJsaW5lc18zMih2YSwgQ0FDSEVfUjRLX1NEfENBQ0hFT1BfUjRLX0hJVF9JTlYpOworCQl2
YSArPSAoMzIgKiAzMik7CisJfQorCisJd2hpbGUgKHZhIDwgZXZhKSB7CisJCWNhY2hlX29w
X3I0a19saW5lKHZhLCBDQUNIRV9SNEtfU0R8Q0FDSEVPUF9SNEtfSElUX0lOVik7CisJCXZh
ICs9IDMyOworCX0KKworCVNZTkM7Cit9CisKK3ZvaWQKK21pcHNOTl9zZGNhY2hlX3diX3Jh
bmdlXzMyKHZtX29mZnNldF90IHZhLCB2bV9zaXplX3Qgc2l6ZSkKK3sKKwl2bV9vZmZzZXRf
dCBldmE7CisKKwlldmEgPSByb3VuZF9saW5lMzIodmEgKyBzaXplKTsKKwl2YSA9IHRydW5j
X2xpbmUzMih2YSk7CisKKwl3aGlsZSAoKGV2YSAtIHZhKSA+PSAoMzIgKiAzMikpIHsKKwkJ
Y2FjaGVfcjRrX29wXzMybGluZXNfMzIodmEsIENBQ0hFX1I0S19TRHxDQUNIRU9QX1I0S19I
SVRfV0IpOworCQl2YSArPSAoMzIgKiAzMik7CisJfQorCisJd2hpbGUgKHZhIDwgZXZhKSB7
CisJCWNhY2hlX29wX3I0a19saW5lKHZhLCBDQUNIRV9SNEtfU0R8Q0FDSEVPUF9SNEtfSElU
X1dCKTsKKwkJdmEgKz0gMzI7CisJfQorCisJU1lOQzsKK30KCj09PSBtb2RpZmllZCBmaWxl
ICdtaXBzL21pcHMvbWFjaGRlcC5jJwotLS0gbWlwcy9taXBzL21hY2hkZXAuYwkyMDEwLTA4
LTEzIDIyOjE2OjQ5ICswMDAwCisrKyBtaXBzL21pcHMvbWFjaGRlcC5jCTIwMTAtMDgtMTcg
MTE6NDk6NDcgKzAwMDAKQEAgLTIzMiw3ICsyMzIsOCBAQAogdm9pZAogY3B1X2ZsdXNoX2Rj
YWNoZSh2b2lkICpwdHIsIHNpemVfdCBsZW4pCiB7Ci0JLyogVEJEICovCisJbWlwc19kY2Fj
aGVfd2JpbnZfcmFuZ2UoKHZtX29mZnNldF90KXB0ciwgbGVuKTsKKwltaXBzX3NkY2FjaGVf
d2JpbnZfcmFuZ2UoKHZtX29mZnNldF90KXB0ciwgbGVuKTsKIH0KIAogLyogR2V0IGN1cnJl
bnQgY2xvY2sgZnJlcXVlbmN5IGZvciB0aGUgZ2l2ZW4gY3B1IGlkLiAqLwpAQCAtMzUxLDYg
KzM1Myw3IEBACiAJICovCiAJbWlwc19pY2FjaGVfc3luY19hbGwoKTsKIAltaXBzX2RjYWNo
ZV93Ymludl9hbGwoKTsKKwltaXBzX3NkY2FjaGVfd2JpbnZfYWxsKCk7CiAKIAkvKiAKIAkg
KiBNYXNrIGFsbCBpbnRlcnJ1cHRzLiBFYWNoIGludGVycnVwdCB3aWxsIGJlIGVuYWJsZWQK
PT09IG1vZGlmaWVkIGZpbGUgJ21pcHMvbWlwcy9tcF9tYWNoZGVwLmMnCi0tLSBtaXBzL21p
cHMvbXBfbWFjaGRlcC5jCTIwMTAtMDgtMTMgMjI6MTY6NDkgKzAwMDAKKysrIG1pcHMvbWlw
cy9tcF9tYWNoZGVwLmMJMjAxMC0wOC0xNSAwNDoxODoyNyArMDAwMApAQCAtMjcyLDYgKzI3
Miw3IEBACiAJICogb24gdGhlIEJTUC4KIAkgKi8KIAltaXBzX2RjYWNoZV93Ymludl9hbGwo
KTsKKwltaXBzX3NkY2FjaGVfd2JpbnZfYWxsKCk7CiAJbWlwc19pY2FjaGVfc3luY19hbGwo
KTsKIAogCW1pcHNfc3luYygpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ21pcHMvbWlwcy91aW9f
bWFjaGRlcC5jJwotLS0gbWlwcy9taXBzL3Vpb19tYWNoZGVwLmMJMjAxMC0wOC0xMyAyMjox
Njo0OSArMDAwMAorKysgbWlwcy9taXBzL3Vpb19tYWNoZGVwLmMJMjAxMC0wOC0xNSAwOToy
MzoyNiArMDAwMApAQCAtMTAwLDYgKzEwMCw3IEBACiAJCQkgKiBpbiBvcmRlciB0byBnZXQg
aXQgb3ZlcndyaXR0ZW4gYnkgY29ycmVjdCBkYXRhCiAJCQkgKi8KIAkJCW1pcHNfZGNhY2hl
X3diaW52X3JhbmdlKCh2bV9vZmZzZXRfdCljcCwgY250KTsKKwkJCW1pcHNfc2RjYWNoZV93
Ymludl9yYW5nZSgodm1fb2Zmc2V0X3QpY3AsIGNudCk7CiAJCQlwbWFwX2ZsdXNoX3B2Y2Fj
aGUobSk7CiAJCX0gZWxzZSB7CiAJCQlzZiA9IHNmX2J1Zl9hbGxvYyhtLCAwKTsKQEAgLTEz
MSw3ICsxMzIsMTAgQEAKIAkJaWYgKHNmICE9IE5VTEwpCiAJCQlzZl9idWZfZnJlZShzZik7
CiAJCWVsc2UKKwkJewogCQkJbWlwc19kY2FjaGVfd2JpbnZfcmFuZ2UoKHZtX29mZnNldF90
KWNwLCBjbnQpOworCQkJbWlwc19zZGNhY2hlX3diaW52X3JhbmdlKCh2bV9vZmZzZXRfdClj
cCwgY250KTsKKwkJfQogCQlpb3YtPmlvdl9iYXNlID0gKGNoYXIgKilpb3YtPmlvdl9iYXNl
ICsgY250OwogCQlpb3YtPmlvdl9sZW4gLT0gY250OwogCQl1aW8tPnVpb19yZXNpZCAtPSBj
bnQ7Cgo=
--------------040300030108000809070504--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4CA07B23.3060003>