From nobody Thu May  1 20:54:07 2025
Delivered-To: importer@patchew.org
Authentication-Results: mx.zohomail.com;
	dkim=pass;
	spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as
 permitted sender)
  smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org;
	dmarc=pass(p=none dis=none)  header.from=gmail.com
ARC-Seal: i=1; a=rsa-sha256; t=1714976499; cv=none;
	d=zohomail.com; s=zohoarc;
	b=EsW1wlu5SNiKivOgXcd1nr3evUYhvUbFZSCXP7jN4VgA+cXXDittbfLMwcg2sCPkEJzYur7ZeQUtGvx3aq3pkgWa5UOJxR39pbyf065C9QsZHQeFRqGaQgd3ZusEMiheFSObmWs/9n+nmiQeyMmEi83U3V+L2c4RD9szI6UBP7s=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1714976499;
 h=Content-Type:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To;
	bh=l8uARPOXLgNrD5x5VbymwJHQnEgheFii2ZdPuVb1ADE=;
	b=PxS7LBIjHsHJi0+l6hjgRKtf8yF53AsaZNGcam/IIwQU46krAaoEsl55/IJKL5nqmh33OBcffVg29/jE9y63mf5yEOqGT+u7x5khEHnxK5hQc+gIMDzZOkVkskUM+Zs3MzTBL5sg0uECyHf2rxSgLog2xMD7WpufOgAMuLYfADw=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass;
	spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as
 permitted sender)
  smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org;
	dmarc=pass header.from=<tanmaynpatil105@gmail.com> (p=none dis=none)
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1714976499046294.57202907101737;
 Sun, 5 May 2024 23:21:39 -0700 (PDT)
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces@nongnu.org>)
	id 1s3rie-0002jQ-Sf; Mon, 06 May 2024 02:21:01 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <tanmaynpatil105@gmail.com>)
 id 1s3rib-0002is-MN; Mon, 06 May 2024 02:20:58 -0400
Received: from mail-oa1-x33.google.com ([2001:4860:4864:20::33])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <tanmaynpatil105@gmail.com>)
 id 1s3riR-0006sC-2o; Mon, 06 May 2024 02:20:57 -0400
Received: by mail-oa1-x33.google.com with SMTP id
 586e51a60fabf-22e6b61d652so820305fac.0;
 Sun, 05 May 2024 23:20:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1714976445; x=1715581245; darn=nongnu.org;
 h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
 :date:message-id:reply-to;
 bh=l8uARPOXLgNrD5x5VbymwJHQnEgheFii2ZdPuVb1ADE=;
 b=C7TYFl/OUjyzRg3618PcWU17mJTcRVgNESYAk2QYRNhZ+CTEft77JPyqd6UoD3oPmu
 xV1niJuEUTQEV0/v5HXWz2Ec78lAgm/0Uv7YplbBDK/kMILeTDP1JVuanocc5YFKKJjM
 19PDz/AKo/lRwNPnBMSy4UXZaV7We8O2jLtuuxiNVoQqxf+3EnGs3YWsYZ67zKZGc1e/
 jFU7weptTbRG9O/1F/hfWBuBKaQ9IY5cWKwkgJR6+VWUG9Xc/Cwlv1lLqS0jWdaZEkoS
 lL6JyGqyOYALoGXJMcbtoKukOu0FEu3GBs/nM9sldksjG4o3o+0RdPeGOwECges48KPm
 yO+Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1714976445; x=1715581245;
 h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=l8uARPOXLgNrD5x5VbymwJHQnEgheFii2ZdPuVb1ADE=;
 b=PuhH+enQrh72HTXTzzD8y7KKsFgu/1RuY/r8DOzylzAXCZUXjjwhOTJcAHhST+A2EF
 mgIXlonwHzycJaHbjq9Rx6hvEz7b4lV8JMDrZ/JvNWS4OXKtvghqOEN7UBzyoaMvS+XG
 De7etHwxMdMuXm6DYSNXYZ+Zj4guyT5kbU+EiOvNZL40m9ke8VmQWlryjK/ho2ErYM8A
 awZyoC7xRQ23PPNs31mjGxX+RJ3RAWd26qKQehDb1UOqvw9YpX861HIAERZQ7AbJRQbV
 /4Vdxp1XIw4pFsu7CnOIkt/ey8E5s9iOqnHRerKy/pw7XEzLHiDWuuos5+LFneb2pZQX
 +Zdg==
X-Gm-Message-State: AOJu0YxkZLMvqB21lGWWSLTXQc84fNg8SP0Hsxp9nieS05DaRFkuPlrL
 K9erpya8vTRI0LRuhgig3upC6Aw/heqZECC3VeSZt6hb339PN/lsm6IHvYVL317KnH9XO5vwJlD
 36qK/ytEYvZQH6GIkpmvdAnPtQyRw9zJlRbudNg==
X-Google-Smtp-Source: 
 AGHT+IGEOTJuGbhS2Bv++AQA/gD1BZPNURqFA0PIAXIvZnIpmdlmfK+SLwRTJdiPMkXT8RyF1hbP6mVxBj3AbSYj35w=
X-Received: by 2002:a05:6870:b023:b0:233:b5dd:471c with SMTP id
 y35-20020a056870b02300b00233b5dd471cmr9815548oae.51.1714976444564; Sun, 05
 May 2024 23:20:44 -0700 (PDT)
MIME-Version: 1.0
From: Tanmay <tanmaynpatil105@gmail.com>
Date: Mon, 6 May 2024 11:50:30 +0530
Message-ID: 
 <CAHnsOnN6AkE3visU9jaycp61G87XRJFwDGx4D1=HJSJpA2tfXw@mail.gmail.com>
Subject: [PATCH] Fixes: Indentation using TABs and improve formatting
To: QEMU Developers <qemu-devel@nongnu.org>
Cc: qemu-arm@nongnu.org, Peter Maydell <peter.maydell@linaro.org>,
 "marcandre.lureau@redhat.com" <marcandre.lureau@redhat.com>,
 pbonzini@redhat.com, richard.henderson@linaro.org
Content-Type: multipart/alternative; boundary="000000000000c6e3b70617c3118c"
Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17
 as permitted sender) client-ip=209.51.188.17;
 envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org;
 helo=lists.gnu.org;
Received-SPF: pass client-ip=2001:4860:4864:20::33;
 envelope-from=tanmaynpatil105@gmail.com; helo=mail-oa1-x33.google.com
X-Spam_score_int: -17
X-Spam_score: -1.8
X-Spam_bar: -
X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001,
 RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-BeenThere: qemu-devel@nongnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org
X-ZohoMail-DKIM: pass (identity @gmail.com)
X-ZM-MESSAGEID: 1714976499714100001
Content-Transfer-Encoding: quoted-printable

--000000000000c6e3b70617c3118c
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

SGksCgpJIGhhdmUgYWRkZWQgYSBwYXRjaCBpbmxpbmUgdGhhdCBmaXhlcyBpbmRlbnRhdGlvbiBh
bmQgZm9ybWF0dGluZyBmb3Igc29tZQpmaWxlcyBhcyBsaXN0ZWQgaW4gaHR0cHM6Ly9naXRsYWIu
Y29tL3FlbXUtcHJvamVjdC9xZW11Ly0vaXNzdWVzLzM3My4KClRoYW5rcywKVGFubWF5CgpGcm9t
IDQ2MDI2NTc0ODIxYzQ2ODA0MTExZWVhNjYwN2ExYjM5MzE0YjdhYmUgTW9uIFNlcCAxNyAwMDow
MDowMCAyMDAxCkZyb206IFRhbm1heSBQYXRpbCA8dGFubWF5bnBhdGlsMTA1QGdtYWlsLmNvbT4K
RGF0ZTogU2F0LCAyNSBOb3YgMjAyMyAwMDo1Mzo1NCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIEZp
eGVzOiBJbmRlbnRhdGlvbiB1c2luZyBUQUJzIGFuZCBpbXByb3ZlIGZvcm1hdHRpbmcKIFJlc29s
dmVzOiBodHRwczovL2dpdGxhYi5jb20vcWVtdS1wcm9qZWN0L3FlbXUvLS9pc3N1ZXMvMzczCgog
ICBGaWxlcyBjaGFuZ2VkOgogICAgICAgIC0gaHcvYXJtL2Jvb3QuYwogICAgICAgIC0gaHcvY2hh
ci9vbWFwX3VhcnQuYwogICAgICAgIC0gaHcvZG1hL3B4YTJ4eF9kbWEuYwogICAgICAgIC0gaHcv
Z3Bpby9vbWFwX2dwaW8uYwogICAgICAgIC0gaHcvZ3Bpby96YXVydXMuYwogICAgICAgIC0gaHcv
aW5wdXQvdHNjMjAwNS5jCiAgICAgICAgLSBody9pbnB1dC90c2MyMTB4LmMKICAgICAgICAtIGh3
L2ludGMvb21hcF9pbnRjLmMKICAgICAgICAtIGh3L21pc2MvY2J1cy5jCiAgICAgICAgLSBody9t
aXNjL29tYXBfY2xrLmMKICAgICAgICAtIGh3L21pc2Mvb21hcF9sNC5jCiAgICAgICAgLSBody9t
aXNjL29tYXBfc2RyYy5jCiAgICAgICAgLSBody9taXNjL29tYXBfdGFwLmMKICAgICAgICAtIGh3
L3NkL29tYXBfbW1jLmMKICAgICAgICAtIGh3L3NkL3B4YTJ4eF9tbWNpLmMKICAgICAgICAtIGh3
L3RpbWVyL29tYXBfZ3B0aW1lci5jCiAgICAgICAgLSBody90aW1lci9vbWFwX3N5bmN0aW1lci5j
CiAgICAgICAgLSBody90aW1lci9weGEyeHhfdGltZXIuYwogICAgICAgIC0gaW5jbHVkZS9ody9h
cm0vcHhhLmgKICAgICAgICAtIGluY2x1ZGUvaHcvYXJtL3NoYXJwc2wuaAogICAgICAgIC0gaW5j
bHVkZS9ody9hcm0vc29jX2RtYS5oCiAgICAgICAgLSB0Y2cvYXJtL3RjZy10YXJnZXQuaAoKU2ln
bmVkLW9mZi1ieTogVGFubWF5IFBhdGlsIDx0YW5tYXlucGF0aWwxMDVAZ21haWwuY29tPgotLS0K
IGh3L2FybS9ib290LmMgICAgICAgICAgICAgfCAgIDggKy0KIGh3L2NoYXIvb21hcF91YXJ0LmMg
ICAgICAgfCAgNDkgKy0KIGh3L2RtYS9weGEyeHhfZG1hLmMgICAgICAgfCAxOTggKysrKy0tLS0K
IGh3L2dwaW8vb21hcF9ncGlvLmMgICAgICAgfCAyNDMgKysrKystLS0tLQogaHcvZ3Bpby96YXVy
dXMuYyAgICAgICAgICB8ICA2MSArLS0KIGh3L2lucHV0L3RzYzIwMDUuYyAgICAgICAgfCAxMzAg
KystLS0KIGh3L2lucHV0L3RzYzIxMHguYyAgICAgICAgfCA0NDIgKysrKysrKysrLS0tLS0tLS0K
IGh3L2ludGMvb21hcF9pbnRjLmMgICAgICAgfCAyNjEgKysrKystLS0tLQogaHcvbWlzYy9jYnVz
LmMgICAgICAgICAgICB8IDIwMiArKysrLS0tLQogaHcvbWlzYy9vbWFwX2Nsay5jICAgICAgICB8
IDk5OSArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogaHcvbWlzYy9vbWFw
X2w0LmMgICAgICAgICB8ICAyMSArLQogaHcvbWlzYy9vbWFwX3NkcmMuYyAgICAgICB8IDEzNSAr
KystLS0KIGh3L21pc2Mvb21hcF90YXAuYyAgICAgICAgfCAgMjggKy0KIGh3L3NkL29tYXBfbW1j
LmMgICAgICAgICAgfCAyMDggKysrKy0tLS0KIGh3L3NkL3B4YTJ4eF9tbWNpLmMgICAgICAgfCAx
NDkgKysrLS0tCiBody90aW1lci9vbWFwX2dwdGltZXIuYyAgIHwgMTI2ICsrLS0tCiBody90aW1l
ci9vbWFwX3N5bmN0aW1lci5jIHwgICA3ICstCiBody90aW1lci9weGEyeHhfdGltZXIuYyAgIHwg
Mjc5ICsrKysrKy0tLS0tCiBpbmNsdWRlL2h3L2FybS9weGEuaCAgICAgIHwgMTAwICsrLS0KIGlu
Y2x1ZGUvaHcvYXJtL3NoYXJwc2wuaCAgfCAgIDIgKy0KIGluY2x1ZGUvaHcvYXJtL3NvY19kbWEu
aCAgfCAgIDQgKy0KIHRjZy9hcm0vdGNnLXRhcmdldC5oICAgICAgfCAgIDQgKy0KIDIyIGZpbGVz
IGNoYW5nZWQsIDE5MDMgaW5zZXJ0aW9ucygrKSwgMTc1MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9ody9hcm0vYm9vdC5jIGIvaHcvYXJtL2Jvb3QuYwppbmRleCA4NGVhNmE4MDdhLi5kNDgw
YTdkYTAyIDEwMDY0NAotLS0gYS9ody9hcm0vYm9vdC5jCisrKyBiL2h3L2FybS9ib290LmMKQEAg
LTM0NywxMyArMzQ3LDEzIEBAIHN0YXRpYyB2b2lkIHNldF9rZXJuZWxfYXJnc19vbGQoY29uc3Qg
c3RydWN0CmFybV9ib290X2luZm8gKmluZm8sCiAgICAgV1JJVEVfV09SRChwLCBpbmZvLT5yYW1f
c2l6ZSAvIDQwOTYpOwogICAgIC8qIHJhbWRpc2tfc2l6ZSAqLwogICAgIFdSSVRFX1dPUkQocCwg
MCk7Ci0jZGVmaW5lIEZMQUdfUkVBRE9OTFkgMQotI2RlZmluZSBGTEFHX1JETE9BRCA0Ci0jZGVm
aW5lIEZMQUdfUkRQUk9NUFQgOAorI2RlZmluZSBGTEFHX1JFQURPTkxZIDEKKyNkZWZpbmUgRkxB
R19SRExPQUQgICA0CisjZGVmaW5lIEZMQUdfUkRQUk9NUFQgOAogICAgIC8qIGZsYWdzICovCiAg
ICAgV1JJVEVfV09SRChwLCBGTEFHX1JFQURPTkxZIHwgRkxBR19SRExPQUQgfCBGTEFHX1JEUFJP
TVBUKTsKICAgICAvKiByb290ZGV2ICovCi0gICAgV1JJVEVfV09SRChwLCAoMzEgPDwgOCkgfCAw
KTsgLyogL2Rldi9tdGRibG9jazAgKi8KKyAgICBXUklURV9XT1JEKHAsICgzMSA8PCA4KSB8IDAp
OyAvKiAvZGV2L210ZGJsb2NrMCAqLwogICAgIC8qIHZpZGVvX251bV9jb2xzICovCiAgICAgV1JJ
VEVfV09SRChwLCAwKTsKICAgICAvKiB2aWRlb19udW1fcm93cyAqLwpkaWZmIC0tZ2l0IGEvaHcv
Y2hhci9vbWFwX3VhcnQuYyBiL2h3L2NoYXIvb21hcF91YXJ0LmMKaW5kZXggNjg0OGJkZGI0ZS4u
YzJlZjRjMTM3ZSAxMDA2NDQKLS0tIGEvaHcvY2hhci9vbWFwX3VhcnQuYworKysgYi9ody9jaGFy
L29tYXBfdWFydC5jCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBvbWFwX3VhcnRfcyAqb21hcF91
YXJ0X2luaXQoaHdhZGRyIGJhc2UsCiAgICAgcy0+ZmNsayA9M0QgZmNsazsKICAgICBzLT5pcnEg
PTNEIGlycTsKICAgICBzLT5zZXJpYWwgPTNEIHNlcmlhbF9tbV9pbml0KGdldF9zeXN0ZW1fbWVt
b3J5KCksIGJhc2UsIDIsIGlycSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbWFw
X2Nsa19nZXRyYXRlKGZjbGspLzE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9t
YXBfY2xrX2dldHJhdGUoZmNsaykgLyAxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaHIgPzogcWVtdV9jaHJfbmV3KGxhYmVsLCAibnVsbCIsIE5VTEwpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERFVklDRV9OQVRJVkVfRU5ESUFOKTsKICAgICByZXR1cm4gczsK
QEAgLTc2LDI3ICs3NiwyNyBAQCBzdGF0aWMgdWludDY0X3Qgb21hcF91YXJ0X3JlYWQodm9pZCAq
b3BhcXVlLCBod2FkZHIKYWRkciwgdW5zaWduZWQgc2l6ZSkKICAgICB9CgogICAgIHN3aXRjaCAo
YWRkcikgewotICAgIGNhc2UgMHgyMDogLyogTURSMSAqLworICAgIGNhc2UgMHgyMDogIC8qIE1E
UjEgKi8KICAgICAgICAgcmV0dXJuIHMtPm1kclswXTsKLSAgICBjYXNlIDB4MjQ6IC8qIE1EUjIg
Ki8KKyAgICBjYXNlIDB4MjQ6ICAvKiBNRFIyICovCiAgICAgICAgIHJldHVybiBzLT5tZHJbMV07
Ci0gICAgY2FzZSAweDQwOiAvKiBTQ1IgKi8KKyAgICBjYXNlIDB4NDA6ICAvKiBTQ1IgKi8KICAg
ICAgICAgcmV0dXJuIHMtPnNjcjsKLSAgICBjYXNlIDB4NDQ6IC8qIFNTUiAqLworICAgIGNhc2Ug
MHg0NDogIC8qIFNTUiAqLwogICAgICAgICByZXR1cm4gMHgwOwotICAgIGNhc2UgMHg0ODogLyog
RUJMUiAoT01BUDIpICovCisgICAgY2FzZSAweDQ4OiAgLyogRUJMUiAoT01BUDIpICovCiAgICAg
ICAgIHJldHVybiBzLT5lYmxyOwotICAgIGNhc2UgMHg0QzogLyogT1NDXzEyTV9TRUwgKE9NQVAx
KSAqLworICAgIGNhc2UgMHg0QzogIC8qIE9TQ18xMk1fU0VMIChPTUFQMSkgKi8KICAgICAgICAg
cmV0dXJuIHMtPmNsa3NlbDsKLSAgICBjYXNlIDB4NTA6IC8qIE1WUiAqLworICAgIGNhc2UgMHg1
MDogIC8qIE1WUiAqLwogICAgICAgICByZXR1cm4gMHgzMDsKLSAgICBjYXNlIDB4NTQ6IC8qIFNZ
U0MgKE9NQVAyKSAqLworICAgIGNhc2UgMHg1NDogIC8qIFNZU0MgKE9NQVAyKSAqLwogICAgICAg
ICByZXR1cm4gcy0+c3lzY29udHJvbDsKLSAgICBjYXNlIDB4NTg6IC8qIFNZU1MgKE9NQVAyKSAq
LworICAgIGNhc2UgMHg1ODogIC8qIFNZU1MgKE9NQVAyKSAqLwogICAgICAgICByZXR1cm4gMTsK
LSAgICBjYXNlIDB4NWM6IC8qIFdFUiAoT01BUDIpICovCisgICAgY2FzZSAweDVjOiAgLyogV0VS
IChPTUFQMikgKi8KICAgICAgICAgcmV0dXJuIHMtPndrdXA7Ci0gICAgY2FzZSAweDYwOiAvKiBD
RlBTIChPTUFQMikgKi8KKyAgICBjYXNlIDB4NjA6ICAvKiBDRlBTIChPTUFQMikgKi8KICAgICAg
ICAgcmV0dXJuIHMtPmNmcHM7CiAgICAgfQoKQEAgLTExNSwzNSArMTE1LDM2IEBAIHN0YXRpYyB2
b2lkIG9tYXBfdWFydF93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgIH0KCiAg
ICAgc3dpdGNoIChhZGRyKSB7Ci0gICAgY2FzZSAweDIwOiAvKiBNRFIxICovCisgICAgY2FzZSAw
eDIwOiAgLyogTURSMSAqLwogICAgICAgICBzLT5tZHJbMF0gPTNEIHZhbHVlICYgMHg3ZjsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSAweDI0OiAvKiBNRFIyICovCisgICAgY2FzZSAweDI0OiAg
LyogTURSMiAqLwogICAgICAgICBzLT5tZHJbMV0gPTNEIHZhbHVlICYgMHhmZjsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSAweDQwOiAvKiBTQ1IgKi8KKyAgICBjYXNlIDB4NDA6ICAvKiBTQ1Ig
Ki8KICAgICAgICAgcy0+c2NyID0zRCB2YWx1ZSAmIDB4ZmY7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgMHg0ODogLyogRUJMUiAoT01BUDIpICovCisgICAgY2FzZSAweDQ4OiAgLyogRUJMUiAo
T01BUDIpICovCiAgICAgICAgIHMtPmVibHIgPTNEIHZhbHVlICYgMHhmZjsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSAweDRDOiAvKiBPU0NfMTJNX1NFTCAoT01BUDEpICovCisgICAgY2FzZSAw
eDRDOiAgLyogT1NDXzEyTV9TRUwgKE9NQVAxKSAqLwogICAgICAgICBzLT5jbGtzZWwgPTNEIHZh
bHVlICYgMTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAweDQ0OiAvKiBTU1IgKi8KLSAgICBj
YXNlIDB4NTA6IC8qIE1WUiAqLwotICAgIGNhc2UgMHg1ODogLyogU1lTUyAoT01BUDIpICovCisg
ICAgY2FzZSAweDQ0OiAgLyogU1NSICovCisgICAgY2FzZSAweDUwOiAgLyogTVZSICovCisgICAg
Y2FzZSAweDU4OiAgLyogU1lTUyAoT01BUDIpICovCiAgICAgICAgIE9NQVBfUk9fUkVHKGFkZHIp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIDB4NTQ6IC8qIFNZU0MgKE9NQVAyKSAqLworICAg
IGNhc2UgMHg1NDogIC8qIFNZU0MgKE9NQVAyKSAqLwogICAgICAgICBzLT5zeXNjb250cm9sID0z
RCB2YWx1ZSAmIDB4MWQ7Ci0gICAgICAgIGlmICh2YWx1ZSAmIDIpCisgICAgICAgIGlmICh2YWx1
ZSAmIDIpIHsKICAgICAgICAgICAgIG9tYXBfdWFydF9yZXNldChzKTsKKyAgICAgICAgfQogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIDB4NWM6IC8qIFdFUiAoT01BUDIpICovCisgICAgY2FzZSAw
eDVjOiAgLyogV0VSIChPTUFQMikgKi8KICAgICAgICAgcy0+d2t1cCA9M0QgdmFsdWUgJiAweDdm
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIDB4NjA6IC8qIENGUFMgKE9NQVAyKSAqLworICAg
IGNhc2UgMHg2MDogIC8qIENGUFMgKE9NQVAyKSAqLwogICAgICAgICBzLT5jZnBzID0zRCB2YWx1
ZSAmIDB4ZmY7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9ody9k
bWEvcHhhMnh4X2RtYS5jIGIvaHcvZG1hL3B4YTJ4eF9kbWEuYwppbmRleCA5ZjYyZjBiNjMzLi5i
ZWVkMWNkOWE1IDEwMDY0NAotLS0gYS9ody9kbWEvcHhhMnh4X2RtYS5jCisrKyBiL2h3L2RtYS9w
eGEyeHhfZG1hLmMKQEAgLTYxLDk4ICs2MSwxMDQgQEAgc3RydWN0IFBYQTJ4eERNQVN0YXRlIHsK
ICAgICBpbnQgcnVubmluZzsKIH07CgotI2RlZmluZSBEQ1NSMCAweDAwMDAgLyogRE1BIENvbnRy
b2wgLyBTdGF0dXMgcmVnaXN0ZXIgZm9yIENoYW5uZWwgMCAqLwotI2RlZmluZSBEQ1NSMzEgMHgw
MDdjIC8qIERNQSBDb250cm9sIC8gU3RhdHVzIHJlZ2lzdGVyIGZvciBDaGFubmVsIDMxICovCi0j
ZGVmaW5lIERBTEdOIDB4MDBhMCAvKiBETUEgQWxpZ25tZW50IHJlZ2lzdGVyICovCi0jZGVmaW5l
IERQQ1NSIDB4MDBhNCAvKiBETUEgUHJvZ3JhbW1lZCBJL08gQ29udHJvbCBTdGF0dXMgcmVnaXN0
ZXIgKi8KLSNkZWZpbmUgRFJRU1IwIDB4MDBlMCAvKiBETUEgRFJFUTwwPiBTdGF0dXMgcmVnaXN0
ZXIgKi8KLSNkZWZpbmUgRFJRU1IxIDB4MDBlNCAvKiBETUEgRFJFUTwxPiBTdGF0dXMgcmVnaXN0
ZXIgKi8KLSNkZWZpbmUgRFJRU1IyIDB4MDBlOCAvKiBETUEgRFJFUTwyPiBTdGF0dXMgcmVnaXN0
ZXIgKi8KLSNkZWZpbmUgRElOVCAweDAwZjAgLyogRE1BIEludGVycnVwdCByZWdpc3RlciAqLwot
I2RlZmluZSBEUkNNUjAgMHgwMTAwIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgcmVnaXN0ZXIg
MCAqLwotI2RlZmluZSBEUkNNUjYzIDB4MDFmYyAvKiBSZXF1ZXN0IHRvIENoYW5uZWwgTWFwIHJl
Z2lzdGVyIDYzICovCi0jZGVmaW5lIERfQ0gwIDB4MDIwMCAvKiBDaGFubmVsIDAgRGVzY3JpcHRv
ciBzdGFydCAqLwotI2RlZmluZSBEUkNNUjY0IDB4MTEwMCAvKiBSZXF1ZXN0IHRvIENoYW5uZWwg
TWFwIHJlZ2lzdGVyIDY0ICovCi0jZGVmaW5lIERSQ01SNzQgMHgxMTI4IC8qIFJlcXVlc3QgdG8g
Q2hhbm5lbCBNYXAgcmVnaXN0ZXIgNzQgKi8KKyNkZWZpbmUgRENTUjAgICAweDAwMDAgIC8qIERN
QSBDb250cm9sIC8gU3RhdHVzIHJlZ2lzdGVyIGZvciBDaGFubmVsIDAgKi8KKyNkZWZpbmUgRENT
UjMxICAweDAwN2MgIC8qIERNQSBDb250cm9sIC8gU3RhdHVzIHJlZ2lzdGVyIGZvciBDaGFubmVs
IDMxICovCisjZGVmaW5lIERBTEdOICAgMHgwMGEwICAvKiBETUEgQWxpZ25tZW50IHJlZ2lzdGVy
ICovCisjZGVmaW5lIERQQ1NSICAgMHgwMGE0ICAvKiBETUEgUHJvZ3JhbW1lZCBJL08gQ29udHJv
bCBTdGF0dXMgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgRFJRU1IwICAweDAwZTAgIC8qIERNQSBEUkVR
PDA+IFN0YXR1cyByZWdpc3RlciAqLworI2RlZmluZSBEUlFTUjEgIDB4MDBlNCAgLyogRE1BIERS
RVE8MT4gU3RhdHVzIHJlZ2lzdGVyICovCisjZGVmaW5lIERSUVNSMiAgMHgwMGU4ICAvKiBETUEg
RFJFUTwyPiBTdGF0dXMgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgRElOVCAgICAweDAwZjAgIC8qIERN
QSBJbnRlcnJ1cHQgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgRFJDTVIwICAweDAxMDAgIC8qIFJlcXVl
c3QgdG8gQ2hhbm5lbCBNYXAgcmVnaXN0ZXIgMCAqLworI2RlZmluZSBEUkNNUjYzIDB4MDFmYyAg
LyogUmVxdWVzdCB0byBDaGFubmVsIE1hcCByZWdpc3RlciA2MyAqLworI2RlZmluZSBEX0NIMCAg
IDB4MDIwMCAgLyogQ2hhbm5lbCAwIERlc2NyaXB0b3Igc3RhcnQgKi8KKyNkZWZpbmUgRFJDTVI2
NCAweDExMDAgIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgcmVnaXN0ZXIgNjQgKi8KKyNkZWZp
bmUgRFJDTVI3NCAweDExMjggIC8qIFJlcXVlc3QgdG8gQ2hhbm5lbCBNYXAgcmVnaXN0ZXIgNzQg
Ki8KCiAvKiBQZXItY2hhbm5lbCByZWdpc3RlciAqLwotI2RlZmluZSBEREFEUiAweDAwCi0jZGVm
aW5lIERTQURSIDB4MDEKLSNkZWZpbmUgRFRBRFIgMHgwMgotI2RlZmluZSBEQ01EIDB4MDMKKyNk
ZWZpbmUgRERBRFIgMHgwMAorI2RlZmluZSBEU0FEUiAweDAxCisjZGVmaW5lIERUQURSIDB4MDIK
KyNkZWZpbmUgRENNRCAgMHgwMwoKIC8qIEJpdC1maWVsZCBtYXNrcyAqLwotI2RlZmluZSBEUkNN
Ul9DSExOVU0gMHgxZgotI2RlZmluZSBEUkNNUl9NQVBWTEQgKDEgPDwgNykKLSNkZWZpbmUgRERB
RFJfU1RPUCAoMSA8PCAwKQotI2RlZmluZSBEREFEUl9CUkVOICgxIDw8IDEpCi0jZGVmaW5lIERD
TURfTEVOIDB4MWZmZgotI2RlZmluZSBEQ01EX1dJRFRIKHgpICgxIDw8ICgoKCh4KSA+PiAxNCkg
JiAzKSAtIDEpKQotI2RlZmluZSBEQ01EX1NJWkUoeCkgKDQgPDwgKCgoeCkgPj4gMTYpICYgMykp
Ci0jZGVmaW5lIERDTURfRkxZQllUICgxIDw8IDE5KQotI2RlZmluZSBEQ01EX0ZMWUJZUyAoMSA8
PCAyMCkKLSNkZWZpbmUgRENNRF9FTkRJUlFFTiAoMSA8PCAyMSkKLSNkZWZpbmUgRENNRF9TVEFS
VElSUUVOICgxIDw8IDIyKQotI2RlZmluZSBEQ01EX0NNUEVOICgxIDw8IDI1KQotI2RlZmluZSBE
Q01EX0ZMT1dUUkcgKDEgPDwgMjgpCi0jZGVmaW5lIERDTURfRkxPV1NSQyAoMSA8PCAyOSkKLSNk
ZWZpbmUgRENNRF9JTkNUUkdBRERSICgxIDw8IDMwKQotI2RlZmluZSBEQ01EX0lOQ1NSQ0FERFIg
KDEgPDwgMzEpCi0jZGVmaW5lIERDU1JfQlVTRVJSSU5UUiAoMSA8PCAwKQotI2RlZmluZSBEQ1NS
X1NUQVJUSU5UUiAoMSA8PCAxKQotI2RlZmluZSBEQ1NSX0VORElOVFIgKDEgPDwgMikKLSNkZWZp
bmUgRENTUl9TVE9QSU5UUiAoMSA8PCAzKQotI2RlZmluZSBEQ1NSX1JBU0lOVFIgKDEgPDwgNCkK
LSNkZWZpbmUgRENTUl9SRVFQRU5EICgxIDw8IDgpCi0jZGVmaW5lIERDU1JfRU9SSU5UICgxIDw8
IDkpCi0jZGVmaW5lIERDU1JfQ01QU1QgKDEgPDwgMTApCi0jZGVmaW5lIERDU1JfTUFTS1JVTiAo
MSA8PCAyMikKLSNkZWZpbmUgRENTUl9SQVNJUlFFTiAoMSA8PCAyMykKLSNkZWZpbmUgRENTUl9D
TFJDTVBTVCAoMSA8PCAyNCkKLSNkZWZpbmUgRENTUl9TRVRDTVBTVCAoMSA8PCAyNSkKLSNkZWZp
bmUgRENTUl9FT1JTVE9QRU4gKDEgPDwgMjYpCi0jZGVmaW5lIERDU1JfRU9SSk1QRU4gKDEgPDwg
MjcpCi0jZGVmaW5lIERDU1JfRU9SSVJRRU4gKDEgPDwgMjgpCi0jZGVmaW5lIERDU1JfU1RPUElS
UUVOICgxIDw8IDI5KQotI2RlZmluZSBEQ1NSX05PREVTQ0ZFVENIICgxIDw8IDMwKQotI2RlZmlu
ZSBEQ1NSX1JVTiAoMSA8PCAzMSkKKyNkZWZpbmUgRFJDTVJfQ0hMTlVNICAgICAweDFmCisjZGVm
aW5lIERSQ01SX01BUFZMRCAgICAgKDEgPDwgNykKKyNkZWZpbmUgRERBRFJfU1RPUCAgICAgICAo
MSA8PCAwKQorI2RlZmluZSBEREFEUl9CUkVOICAgICAgICgxIDw8IDEpCisjZGVmaW5lIERDTURf
TEVOICAgICAgICAgMHgxZmZmCisjZGVmaW5lIERDTURfV0lEVEgoeCkgICAgKDEgPDwgKCgoKHgp
ID4+IDE0KSAmIDMpIC0gMSkpCisjZGVmaW5lIERDTURfU0laRSh4KSAgICAgKDQgPDwgKCgoeCkg
Pj4gMTYpICYgMykpCisjZGVmaW5lIERDTURfRkxZQllUICAgICAgKDEgPDwgMTkpCisjZGVmaW5l
IERDTURfRkxZQllTICAgICAgKDEgPDwgMjApCisjZGVmaW5lIERDTURfRU5ESVJRRU4gICAgKDEg
PDwgMjEpCisjZGVmaW5lIERDTURfU1RBUlRJUlFFTiAgKDEgPDwgMjIpCisjZGVmaW5lIERDTURf
Q01QRU4gICAgICAgKDEgPDwgMjUpCisjZGVmaW5lIERDTURfRkxPV1RSRyAgICAgKDEgPDwgMjgp
CisjZGVmaW5lIERDTURfRkxPV1NSQyAgICAgKDEgPDwgMjkpCisjZGVmaW5lIERDTURfSU5DVFJH
QUREUiAgKDEgPDwgMzApCisjZGVmaW5lIERDTURfSU5DU1JDQUREUiAgKDEgPDwgMzEpCisjZGVm
aW5lIERDU1JfQlVTRVJSSU5UUiAgKDEgPDwgMCkKKyNkZWZpbmUgRENTUl9TVEFSVElOVFIgICAo
MSA8PCAxKQorI2RlZmluZSBEQ1NSX0VORElOVFIgICAgICgxIDw8IDIpCisjZGVmaW5lIERDU1Jf
U1RPUElOVFIgICAgKDEgPDwgMykKKyNkZWZpbmUgRENTUl9SQVNJTlRSICAgICAoMSA8PCA0KQor
I2RlZmluZSBEQ1NSX1JFUVBFTkQgICAgICgxIDw8IDgpCisjZGVmaW5lIERDU1JfRU9SSU5UICAg
ICAgKDEgPDwgOSkKKyNkZWZpbmUgRENTUl9DTVBTVCAgICAgICAoMSA8PCAxMCkKKyNkZWZpbmUg
RENTUl9NQVNLUlVOICAgICAoMSA8PCAyMikKKyNkZWZpbmUgRENTUl9SQVNJUlFFTiAgICAoMSA8
PCAyMykKKyNkZWZpbmUgRENTUl9DTFJDTVBTVCAgICAoMSA8PCAyNCkKKyNkZWZpbmUgRENTUl9T
RVRDTVBTVCAgICAoMSA8PCAyNSkKKyNkZWZpbmUgRENTUl9FT1JTVE9QRU4gICAoMSA8PCAyNikK
KyNkZWZpbmUgRENTUl9FT1JKTVBFTiAgICAoMSA8PCAyNykKKyNkZWZpbmUgRENTUl9FT1JJUlFF
TiAgICAoMSA8PCAyOCkKKyNkZWZpbmUgRENTUl9TVE9QSVJRRU4gICAoMSA8PCAyOSkKKyNkZWZp
bmUgRENTUl9OT0RFU0NGRVRDSCAoMSA8PCAzMCkKKyNkZWZpbmUgRENTUl9SVU4gICAgICAgICAo
MSA8PCAzMSkKCiBzdGF0aWMgaW5saW5lIHZvaWQgcHhhMnh4X2RtYV91cGRhdGUoUFhBMnh4RE1B
U3RhdGUgKnMsIGludCBjaCkKIHsKICAgICBpZiAoY2ggPj0zRCAwKSB7CiAgICAgICAgIGlmICgo
cy0+Y2hhbltjaF0uc3RhdGUgJiBEQ1NSX1NUT1BJUlFFTikgJiYKLSAgICAgICAgICAgICAgICAo
cy0+Y2hhbltjaF0uc3RhdGUgJiBEQ1NSX1NUT1BJTlRSKSkKKyAgICAgICAgICAgICAgICAocy0+
Y2hhbltjaF0uc3RhdGUgJiBEQ1NSX1NUT1BJTlRSKSkgewogICAgICAgICAgICAgcy0+c3RvcGlu
dHIgfD0zRCAxIDw8IGNoOwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBzLT5zdG9waW50ciAmPTNEIH4oMSA8PCBjaCk7CisgICAgICAgIH0KCiAgICAgICAgIGlm
ICgocy0+Y2hhbltjaF0uc3RhdGUgJiBEQ1NSX0VPUklSUUVOKSAmJgotICAgICAgICAgICAgICAg
IChzLT5jaGFuW2NoXS5zdGF0ZSAmIERDU1JfRU9SSU5UKSkKKyAgICAgICAgICAgICAgICAocy0+
Y2hhbltjaF0uc3RhdGUgJiBEQ1NSX0VPUklOVCkpIHsKICAgICAgICAgICAgIHMtPmVvcmludHIg
fD0zRCAxIDw8IGNoOwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBzLT5lb3JpbnRyICY9M0QgfigxIDw8IGNoKTsKKyAgICAgICAgfQoKICAgICAgICAgaWYgKChz
LT5jaGFuW2NoXS5zdGF0ZSAmIERDU1JfUkFTSVJRRU4pICYmCi0gICAgICAgICAgICAgICAgKHMt
PmNoYW5bY2hdLnN0YXRlICYgRENTUl9SQVNJTlRSKSkKKyAgICAgICAgICAgICAgICAocy0+Y2hh
bltjaF0uc3RhdGUgJiBEQ1NSX1JBU0lOVFIpKSB7CiAgICAgICAgICAgICBzLT5yYXNpbnRyIHw9
M0QgMSA8PCBjaDsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
cy0+cmFzaW50ciAmPTNEIH4oMSA8PCBjaCk7CisgICAgICAgIH0KCi0gICAgICAgIGlmIChzLT5j
aGFuW2NoXS5zdGF0ZSAmIERDU1JfU1RBUlRJTlRSKQorICAgICAgICBpZiAocy0+Y2hhbltjaF0u
c3RhdGUgJiBEQ1NSX1NUQVJUSU5UUikgewogICAgICAgICAgICAgcy0+c3RhcnRpbnRyIHw9M0Qg
MSA8PCBjaDsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcy0+
c3RhcnRpbnRyICY9M0QgfigxIDw8IGNoKTsKKyAgICAgICAgfQoKLSAgICAgICAgaWYgKHMtPmNo
YW5bY2hdLnN0YXRlICYgRENTUl9FTkRJTlRSKQorICAgICAgICBpZiAocy0+Y2hhbltjaF0uc3Rh
dGUgJiBEQ1NSX0VORElOVFIpIHsKICAgICAgICAgICAgIHMtPmVuZGludHIgfD0zRCAxIDw8IGNo
OwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzLT5lbmRpbnRy
ICY9M0QgfigxIDw8IGNoKTsKKyAgICAgICAgfQogICAgIH0KCi0gICAgaWYgKHMtPnN0b3BpbnRy
IHwgcy0+ZW9yaW50ciB8IHMtPnJhc2ludHIgfCBzLT5zdGFydGludHIgfCBzLT5lbmRpbnRyKQor
ICAgIGlmIChzLT5zdG9waW50ciB8IHMtPmVvcmludHIgfCBzLT5yYXNpbnRyIHwgcy0+c3RhcnRp
bnRyIHwgcy0+ZW5kaW50cikKewogICAgICAgICBxZW11X2lycV9yYWlzZShzLT5pcnEpOwotICAg
IGVsc2UKKyAgICB9IGVsc2UgewogICAgICAgICBxZW11X2lycV9sb3dlcihzLT5pcnEpOworICAg
IH0KIH0KCiBzdGF0aWMgaW5saW5lIHZvaWQgcHhhMnh4X2RtYV9kZXNjcmlwdG9yX2ZldGNoKApA
QCAtMTYwLDggKzE2Niw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBweGEyeHhfZG1hX2Rlc2NyaXB0
b3JfZmV0Y2goCiB7CiAgICAgdWludDMyX3QgZGVzY1s0XTsKICAgICBod2FkZHIgZGFkZHIgPTNE
IHMtPmNoYW5bY2hdLmRlc2NyICYgfjB4ZjsKLSAgICBpZiAoKHMtPmNoYW5bY2hdLmRlc2NyICYg
RERBRFJfQlJFTikgJiYgKHMtPmNoYW5bY2hdLnN0YXRlICYKRENTUl9DTVBTVCkpCisgICAgaWYg
KChzLT5jaGFuW2NoXS5kZXNjciAmIEREQURSX0JSRU4pICYmIChzLT5jaGFuW2NoXS5zdGF0ZSAm
CkRDU1JfQ01QU1QpKSB7CiAgICAgICAgIGRhZGRyICs9M0QgMzI7CisgICAgfQoKICAgICBjcHVf
cGh5c2ljYWxfbWVtb3J5X3JlYWQoZGFkZHIsIGRlc2MsIDE2KTsKICAgICBzLT5jaGFuW2NoXS5k
ZXNjciA9M0QgZGVzY1tEREFEUl07CkBAIC0xNjksMTYgKzE3NiwyMCBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgcHhhMnh4X2RtYV9kZXNjcmlwdG9yX2ZldGNoKAogICAgIHMtPmNoYW5bY2hdLmRlc3Qg
PTNEIGRlc2NbRFRBRFJdOwogICAgIHMtPmNoYW5bY2hdLmNtZCA9M0QgZGVzY1tEQ01EXTsKCi0g
ICAgaWYgKHMtPmNoYW5bY2hdLmNtZCAmIERDTURfRkxPV1NSQykKKyAgICBpZiAocy0+Y2hhbltj
aF0uY21kICYgRENNRF9GTE9XU1JDKSB7CiAgICAgICAgIHMtPmNoYW5bY2hdLnNyYyAmPTNEIH4z
OwotICAgIGlmIChzLT5jaGFuW2NoXS5jbWQgJiBEQ01EX0ZMT1dUUkcpCisgICAgfQorICAgIGlm
IChzLT5jaGFuW2NoXS5jbWQgJiBEQ01EX0ZMT1dUUkcpIHsKICAgICAgICAgcy0+Y2hhbltjaF0u
ZGVzdCAmPTNEIH4zOworICAgIH0KCi0gICAgaWYgKHMtPmNoYW5bY2hdLmNtZCAmIChEQ01EX0NN
UEVOIHwgRENNRF9GTFlCWVMgfCBEQ01EX0ZMWUJZVCkpCisgICAgaWYgKHMtPmNoYW5bY2hdLmNt
ZCAmIChEQ01EX0NNUEVOIHwgRENNRF9GTFlCWVMgfCBEQ01EX0ZMWUJZVCkpIHsKICAgICAgICAg
cHJpbnRmKCIlczogdW5zdXBwb3J0ZWQgbW9kZSBpbiBjaGFubmVsICVpXG4iLCBfX2Z1bmNfXywg
Y2gpOworICAgIH0KCi0gICAgaWYgKHMtPmNoYW5bY2hdLmNtZCAmIERDTURfU1RBUlRJUlFFTikK
KyAgICBpZiAocy0+Y2hhbltjaF0uY21kICYgRENNRF9TVEFSVElSUUVOKSB7CiAgICAgICAgIHMt
PmNoYW5bY2hdLnN0YXRlIHw9M0QgRENTUl9TVEFSVElOVFI7CisgICAgfQogfQoKIHN0YXRpYyB2
b2lkIHB4YTJ4eF9kbWFfcnVuKFBYQTJ4eERNQVN0YXRlICpzKQpAQCAtMTkwLDE4ICsyMDEsMjAg
QEAgc3RhdGljIHZvaWQgcHhhMnh4X2RtYV9ydW4oUFhBMnh4RE1BU3RhdGUgKnMpCiAgICAgdWlu
dDhfdCBidWZmZXJbMzJdOwogICAgIFBYQTJ4eERNQUNoYW5uZWwgKmNoOwoKLSAgICBpZiAocy0+
cnVubmluZyArKykKKyAgICBpZiAocy0+cnVubmluZysrKSB7CiAgICAgICAgIHJldHVybjsKKyAg
ICB9CgogICAgIHdoaWxlIChzLT5ydW5uaW5nKSB7CiAgICAgICAgIHMtPnJ1bm5pbmcgPTNEIDE7
Ci0gICAgICAgIGZvciAoYyA9M0QgMDsgYyA8IHMtPmNoYW5uZWxzOyBjICsrKSB7CisgICAgICAg
IGZvciAoYyA9M0QgMDsgYyA8IHMtPmNoYW5uZWxzOyBjKyspIHsKICAgICAgICAgICAgIGNoID0z
RCAmcy0+Y2hhbltjXTsKCiAgICAgICAgICAgICB3aGlsZSAoKGNoLT5zdGF0ZSAmIERDU1JfUlVO
KSAmJiAhKGNoLT5zdGF0ZSAmIERDU1JfU1RPUElOVFIpKQp7CiAgICAgICAgICAgICAgICAgLyog
VGVzdCBmb3IgcGVuZGluZyByZXF1ZXN0cyAqLwotICAgICAgICAgICAgICAgIGlmICgoY2gtPmNt
ZCAmIChEQ01EX0ZMT1dTUkMgfCBEQ01EX0ZMT1dUUkcpKSAmJgohY2gtPnJlcXVlc3QpCisgICAg
ICAgICAgICAgICAgaWYgKChjaC0+Y21kICYgKERDTURfRkxPV1NSQyB8IERDTURfRkxPV1RSRykp
ICYmCiFjaC0+cmVxdWVzdCkgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgIGxlbmd0aCA9M0QgY2gtPmNtZCAmIERDTURfTEVO
OwogICAgICAgICAgICAgICAgIHNpemUgPTNEIERDTURfU0laRShjaC0+Y21kKTsKQEAgLTIyOCwx
MSArMjQxLDEzIEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9kbWFfcnVuKFBYQTJ4eERNQVN0YXRlICpz
KQogICAgICAgICAgICAgICAgICAgICBpZiAoKGNoLT5jbWQgJiAoRENNRF9GTE9XU1JDIHwgRENN
RF9GTE9XVFJHKSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY2gtPnJlcXVlc3Qp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoLT5zdGF0ZSB8PTNEIERDU1JfRU9SSU5UOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoLT5zdGF0ZSAmIERDU1JfRU9SU1RPUEVOKQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoLT5zdGF0ZSAmIERDU1JfRU9SU1RPUEVOKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2gtPnN0YXRlIHw9M0QgRENTUl9TVE9QSU5U
UjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgoY2gtPnN0YXRlICYgRENTUl9FT1JKTVBFTikgJiYKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAhKGNoLT5zdGF0ZSAmIERDU1JfTk9ERVNDRkVUQ0gpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoY2gtPnN0YXRlICYgRENTUl9OT0RF
U0NGRVRDSCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweGEyeHhfZG1hX2Rlc2Ny
aXB0b3JfZmV0Y2gocywgYyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KQEAgLTI0MSw4ICsyNTYsOSBAQCBzdGF0aWMgdm9pZCBweGEyeHhfZG1hX3J1bihQWEEy
eHhETUFTdGF0ZSAqcykKCiAgICAgICAgICAgICAgICAgLyogSXMgdGhlIHRyYW5zZmVyIGNvbXBs
ZXRlIG5vdz8gKi8KICAgICAgICAgICAgICAgICBpZiAoIWxlbmd0aCkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoY2gtPmNtZCAmIERDTURfRU5ESVJRRU4pCisgICAgICAgICAgICAgICAgICAg
IGlmIChjaC0+Y21kICYgRENNRF9FTkRJUlFFTikgewogICAgICAgICAgICAgICAgICAgICAgICAg
Y2gtPnN0YXRlIHw9M0QgRENTUl9FTkRJTlRSOworICAgICAgICAgICAgICAgICAgICB9CgogICAg
ICAgICAgICAgICAgICAgICBpZiAoKGNoLT5zdGF0ZSAmIERDU1JfTk9ERVNDRkVUQ0gpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaC0+ZGVzY3IgJiBEREFEUl9TVE9QKSB8
fApAQCAtMjU5LDcgKzI3NSw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9kbWFfcnVuKFBYQTJ4eERN
QVN0YXRlICpzKQogICAgICAgICAgICAgfQogICAgICAgICB9CgotICAgICAgICBzLT5ydW5uaW5n
IC0tOworICAgICAgICBzLT5ydW5uaW5nLS07CiAgICAgfQogfQoKQEAgLTI5MCw4ICszMDYsOSBA
QCBzdGF0aWMgdWludDY0X3QgcHhhMnh4X2RtYV9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyCm9m
ZnNldCwKCiAgICAgY2FzZSBEQ1NSMCAuLi4gRENTUjMxOgogICAgICAgICBjaGFubmVsID0zRCBv
ZmZzZXQgPj4gMjsKLSAgICAgICAgaWYgKHMtPmNoYW5bY2hhbm5lbF0ucmVxdWVzdCkKKyAgICAg
ICAgaWYgKHMtPmNoYW5bY2hhbm5lbF0ucmVxdWVzdCkgewogICAgICAgICAgICAgcmV0dXJuIHMt
PmNoYW5bY2hhbm5lbF0uc3RhdGUgfCBEQ1NSX1JFUVBFTkQ7CisgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHMtPmNoYW5bY2hhbm5lbF0uc3RhdGU7CgogICAgIGNhc2UgRElOVDoKQEAgLTM2Myw4
ICszODAsOSBAQCBzdGF0aWMgdm9pZCBweGEyeHhfZG1hX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdh
ZGRyCm9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICBEQ1NSX1NUQVJUSU5UUiB8IERD
U1JfQlVTRVJSSU5UUikpOwogICAgICAgICBzLT5jaGFuW2NoYW5uZWxdLnN0YXRlIHw9M0QgdmFs
dWUgJiAweGZjODAwMDAwOwoKLSAgICAgICAgaWYgKHMtPmNoYW5bY2hhbm5lbF0uc3RhdGUgJiBE
Q1NSX1NUT1BJUlFFTikKKyAgICAgICAgaWYgKHMtPmNoYW5bY2hhbm5lbF0uc3RhdGUgJiBEQ1NS
X1NUT1BJUlFFTikgewogICAgICAgICAgICAgcy0+Y2hhbltjaGFubmVsXS5zdGF0ZSAmPTNEIH5E
Q1NSX1NUT1BJTlRSOworICAgICAgICB9CgogICAgICAgICBpZiAodmFsdWUgJiBEQ1NSX05PREVT
Q0ZFVENIKSB7CiAgICAgICAgICAgICAvKiBOby1kZXNjcmlwdG9yLWZldGNoIG1vZGUgKi8KQEAg
LTM4MiwxMyArNDAwLDE2IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9kbWFfd3JpdGUodm9pZCAqb3Bh
cXVlLCBod2FkZHIKb2Zmc2V0LAogICAgICAgICB9CgogICAgICAgICAvKiBTaG91bGRuJ3QgbWF0
dGVyIGFzIG91ciBETUEgaXMgc3luY2hyb25vdXMuICAqLwotICAgICAgICBpZiAoISh2YWx1ZSAm
IChEQ1NSX1JVTiB8IERDU1JfTUFTS1JVTikpKQorICAgICAgICBpZiAoISh2YWx1ZSAmIChEQ1NS
X1JVTiB8IERDU1JfTUFTS1JVTikpKSB7CiAgICAgICAgICAgICBzLT5jaGFuW2NoYW5uZWxdLnN0
YXRlIHw9M0QgRENTUl9TVE9QSU5UUjsKKyAgICAgICAgfQoKLSAgICAgICAgaWYgKHZhbHVlICYg
RENTUl9DTFJDTVBTVCkKKyAgICAgICAgaWYgKHZhbHVlICYgRENTUl9DTFJDTVBTVCkgewogICAg
ICAgICAgICAgcy0+Y2hhbltjaGFubmVsXS5zdGF0ZSAmPTNEIH5EQ1NSX0NNUFNUOwotICAgICAg
ICBpZiAodmFsdWUgJiBEQ1NSX1NFVENNUFNUKQorICAgICAgICB9CisgICAgICAgIGlmICh2YWx1
ZSAmIERDU1JfU0VUQ01QU1QpIHsKICAgICAgICAgICAgIHMtPmNoYW5bY2hhbm5lbF0uc3RhdGUg
fD0zRCBEQ1NSX0NNUFNUOworICAgICAgICB9CgogICAgICAgICBweGEyeHhfZG1hX3VwZGF0ZShz
LCBjaGFubmVsKTsKICAgICAgICAgYnJlYWs7CkBAIC00MzksMTkgKzQ2MCwyMyBAQCBzdGF0aWMg
dm9pZCBweGEyeHhfZG1hX3JlcXVlc3Qodm9pZCAqb3BhcXVlLCBpbnQKcmVxX251bSwgaW50IG9u
KQogewogICAgIFBYQTJ4eERNQVN0YXRlICpzID0zRCBvcGFxdWU7CiAgICAgaW50IGNoOwotICAg
IGlmIChyZXFfbnVtIDwgMCB8fCByZXFfbnVtID49M0QgUFhBMlhYX0RNQV9OVU1fUkVRVUVTVFMp
CisgICAgaWYgKHJlcV9udW0gPCAwIHx8IHJlcV9udW0gPj0zRCBQWEEyWFhfRE1BX05VTV9SRVFV
RVNUUykgewogICAgICAgICBod19lcnJvcigiJXM6IEJhZCBETUEgcmVxdWVzdCAlaVxuIiwgX19m
dW5jX18sIHJlcV9udW0pOworICAgIH0KCi0gICAgaWYgKCEocy0+cmVxW3JlcV9udW1dICYgRFJD
TVJfTUFQVkxEKSkKKyAgICBpZiAoIShzLT5yZXFbcmVxX251bV0gJiBEUkNNUl9NQVBWTEQpKSB7
CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2ggPTNEIHMtPnJlcVtyZXFfbnVtXSAmIERS
Q01SX0NITE5VTTsKCi0gICAgaWYgKCFzLT5jaGFuW2NoXS5yZXF1ZXN0ICYmIG9uKQorICAgIGlm
ICghcy0+Y2hhbltjaF0ucmVxdWVzdCAmJiBvbikgewogICAgICAgICBzLT5jaGFuW2NoXS5zdGF0
ZSB8PTNEIERDU1JfUkFTSU5UUjsKLSAgICBlbHNlCisgICAgfSBlbHNlIHsKICAgICAgICAgcy0+
Y2hhbltjaF0uc3RhdGUgJj0zRCB+RENTUl9SQVNJTlRSOwotICAgIGlmIChzLT5jaGFuW2NoXS5y
ZXF1ZXN0ICYmICFvbikKKyAgICB9CisgICAgaWYgKHMtPmNoYW5bY2hdLnJlcXVlc3QgJiYgIW9u
KSB7CiAgICAgICAgIHMtPmNoYW5bY2hdLnN0YXRlIHw9M0QgRENTUl9FT1JJTlQ7CisgICAgfQoK
ICAgICBzLT5jaGFuW2NoXS5yZXF1ZXN0ID0zRCBvbjsKICAgICBpZiAob24pIHsKQEAgLTQ4OCw4
ICs1MTMsOSBAQCBzdGF0aWMgdm9pZCBweGEyeHhfZG1hX3JlYWxpemUoRGV2aWNlU3RhdGUgKmRl
diwgRXJyb3IKKiplcnJwKQoKICAgICBzLT5jaGFuID0zRCBnX25ldzAoUFhBMnh4RE1BQ2hhbm5l
bCwgcy0+Y2hhbm5lbHMpOwoKLSAgICBmb3IgKGkgPTNEIDA7IGkgPCBzLT5jaGFubmVsczsgaSAr
KykKKyAgICBmb3IgKGkgPTNEIDA7IGkgPCBzLT5jaGFubmVsczsgaSsrKSB7CiAgICAgICAgIHMt
PmNoYW5baV0uc3RhdGUgPTNEIERDU1JfU1RPUElOVFI7CisgICAgfQogfQoKIERldmljZVN0YXRl
ICpweGEyN3hfZG1hX2luaXQoaHdhZGRyIGJhc2UsIHFlbXVfaXJxIGlycSkKZGlmZiAtLWdpdCBh
L2h3L2dwaW8vb21hcF9ncGlvLmMgYi9ody9ncGlvL29tYXBfZ3Bpby5jCmluZGV4IGEzMzQxZDcw
ZjEuLjYwZTk3YTA4MzkgMTAwNjQ0Ci0tLSBhL2h3L2dwaW8vb21hcF9ncGlvLmMKKysrIGIvaHcv
Z3Bpby9vbWFwX2dwaW8uYwpAQCAtNTcsMTAgKzU3LDExIEBAIHN0YXRpYyB2b2lkIG9tYXBfZ3Bp
b19zZXQodm9pZCAqb3BhcXVlLCBpbnQgbGluZSwgaW50CmxldmVsKQogICAgIHN0cnVjdCBvbWFw
X2dwaW9fcyAqcyA9M0QgJnAtPm9tYXAxOwogICAgIHVpbnQxNl90IHByZXYgPTNEIHMtPmlucHV0
czsKCi0gICAgaWYgKGxldmVsKQorICAgIGlmIChsZXZlbCkgewogICAgICAgICBzLT5pbnB1dHMg
fD0zRCAxIDw8IGxpbmU7Ci0gICAgZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIHMtPmlucHV0
cyAmPTNEIH4oMSA8PCBsaW5lKTsKKyAgICB9CgogICAgIGlmICgoKHMtPmVkZ2UgJiBzLT5pbnB1
dHMgJiB+cHJldikgfCAofnMtPmVkZ2UgJiB+cy0+aW5wdXRzICYgcHJldikpICYKICAgICAgICAg
ICAgICAgICAgICAgKDEgPDwgbGluZSkgJiBzLT5kaXIgJiB+cy0+bWFzaykgewpAQCAtODAsMjUg
KzgxLDI1IEBAIHN0YXRpYyB1aW50NjRfdCBvbWFwX2dwaW9fcmVhZCh2b2lkICpvcGFxdWUsIGh3
YWRkcgphZGRyLAogICAgIH0KCiAgICAgc3dpdGNoIChvZmZzZXQpIHsKLSAgICBjYXNlIDB4MDA6
IC8qIERBVEFfSU5QVVQgKi8KKyAgICBjYXNlIDB4MDA6ICAvKiBEQVRBX0lOUFVUICovCiAgICAg
ICAgIHJldHVybiBzLT5pbnB1dHMgJiBzLT5waW5zOwoKLSAgICBjYXNlIDB4MDQ6IC8qIERBVEFf
T1VUUFVUICovCisgICAgY2FzZSAweDA0OiAgLyogREFUQV9PVVRQVVQgKi8KICAgICAgICAgcmV0
dXJuIHMtPm91dHB1dHM7CgotICAgIGNhc2UgMHgwODogLyogRElSRUNUSU9OX0NPTlRST0wgKi8K
KyAgICBjYXNlIDB4MDg6ICAvKiBESVJFQ1RJT05fQ09OVFJPTCAqLwogICAgICAgICByZXR1cm4g
cy0+ZGlyOwoKLSAgICBjYXNlIDB4MGM6IC8qIElOVEVSUlVQVF9DT05UUk9MICovCisgICAgY2Fz
ZSAweDBjOiAgLyogSU5URVJSVVBUX0NPTlRST0wgKi8KICAgICAgICAgcmV0dXJuIHMtPmVkZ2U7
CgotICAgIGNhc2UgMHgxMDogLyogSU5URVJSVVBUX01BU0sgKi8KKyAgICBjYXNlIDB4MTA6ICAv
KiBJTlRFUlJVUFRfTUFTSyAqLwogICAgICAgICByZXR1cm4gcy0+bWFzazsKCi0gICAgY2FzZSAw
eDE0OiAvKiBJTlRFUlJVUFRfU1RBVFVTICovCisgICAgY2FzZSAweDE0OiAgLyogSU5URVJSVVBU
X1NUQVRVUyAqLwogICAgICAgICByZXR1cm4gcy0+aW50czsKCi0gICAgY2FzZSAweDE4OiAvKiBQ
SU5fQ09OVFJPTCAobm90IGluIE9NQVAzMTApICovCisgICAgY2FzZSAweDE4OiAgLyogUElOX0NP
TlRST0wgKG5vdCBpbiBPTUFQMzEwKSAqLwogICAgICAgICBPTUFQX0JBRF9SRUcoYWRkcik7CiAg
ICAgICAgIHJldHVybiBzLT5waW5zOwogICAgIH0KQEAgLTEyMSw0NyArMTIyLDUwIEBAIHN0YXRp
YyB2b2lkIG9tYXBfZ3Bpb193cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgIH0K
CiAgICAgc3dpdGNoIChvZmZzZXQpIHsKLSAgICBjYXNlIDB4MDA6IC8qIERBVEFfSU5QVVQgKi8K
KyAgICBjYXNlIDB4MDA6ICAvKiBEQVRBX0lOUFVUICovCiAgICAgICAgIE9NQVBfUk9fUkVHKGFk
ZHIpOwogICAgICAgICByZXR1cm47CgotICAgIGNhc2UgMHgwNDogLyogREFUQV9PVVRQVVQgKi8K
KyAgICBjYXNlIDB4MDQ6ICAvKiBEQVRBX09VVFBVVCAqLwogICAgICAgICBkaWZmID0zRCAocy0+
b3V0cHV0cyBeIHZhbHVlKSAmIH5zLT5kaXI7CiAgICAgICAgIHMtPm91dHB1dHMgPTNEIHZhbHVl
OwogICAgICAgICB3aGlsZSAoKGxuID0zRCBjdHozMihkaWZmKSkgIT0zRCAzMikgewotICAgICAg
ICAgICAgaWYgKHMtPmhhbmRsZXJbbG5dKQorICAgICAgICAgICAgaWYgKHMtPmhhbmRsZXJbbG5d
KSB7CiAgICAgICAgICAgICAgICAgcWVtdV9zZXRfaXJxKHMtPmhhbmRsZXJbbG5dLCAodmFsdWUg
Pj4gbG4pICYgMSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBkaWZmICY9M0QgfigxIDw8
IGxuKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKCi0gICAgY2FzZSAweDA4OiAvKiBESVJF
Q1RJT05fQ09OVFJPTCAqLworICAgIGNhc2UgMHgwODogIC8qIERJUkVDVElPTl9DT05UUk9MICov
CiAgICAgICAgIGRpZmYgPTNEIHMtPm91dHB1dHMgJiAocy0+ZGlyIF4gdmFsdWUpOwogICAgICAg
ICBzLT5kaXIgPTNEIHZhbHVlOwoKICAgICAgICAgdmFsdWUgPTNEIHMtPm91dHB1dHMgJiB+cy0+
ZGlyOwogICAgICAgICB3aGlsZSAoKGxuID0zRCBjdHozMihkaWZmKSkgIT0zRCAzMikgewotICAg
ICAgICAgICAgaWYgKHMtPmhhbmRsZXJbbG5dKQorICAgICAgICAgICAgaWYgKHMtPmhhbmRsZXJb
bG5dKSB7CiAgICAgICAgICAgICAgICAgcWVtdV9zZXRfaXJxKHMtPmhhbmRsZXJbbG5dLCAodmFs
dWUgPj4gbG4pICYgMSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBkaWZmICY9M0Qgfigx
IDw8IGxuKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKCi0gICAgY2FzZSAweDBjOiAvKiBJ
TlRFUlJVUFRfQ09OVFJPTCAqLworICAgIGNhc2UgMHgwYzogIC8qIElOVEVSUlVQVF9DT05UUk9M
ICovCiAgICAgICAgIHMtPmVkZ2UgPTNEIHZhbHVlOwogICAgICAgICBicmVhazsKCi0gICAgY2Fz
ZSAweDEwOiAvKiBJTlRFUlJVUFRfTUFTSyAqLworICAgIGNhc2UgMHgxMDogIC8qIElOVEVSUlVQ
VF9NQVNLICovCiAgICAgICAgIHMtPm1hc2sgPTNEIHZhbHVlOwogICAgICAgICBicmVhazsKCi0g
ICAgY2FzZSAweDE0OiAvKiBJTlRFUlJVUFRfU1RBVFVTICovCisgICAgY2FzZSAweDE0OiAgLyog
SU5URVJSVVBUX1NUQVRVUyAqLwogICAgICAgICBzLT5pbnRzICY9M0QgfnZhbHVlOwotICAgICAg
ICBpZiAoIXMtPmludHMpCisgICAgICAgIGlmICghcy0+aW50cykgewogICAgICAgICAgICAgcWVt
dV9pcnFfbG93ZXIocy0+aXJxKTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKCi0gICAgY2Fz
ZSAweDE4OiAvKiBQSU5fQ09OVFJPTCAobm90IGluIE9NQVAzMTAgVFJNKSAqLworICAgIGNhc2Ug
MHgxODogIC8qIFBJTl9DT05UUk9MIChub3QgaW4gT01BUDMxMCBUUk0pICovCiAgICAgICAgIE9N
QVBfQkFEX1JFRyhhZGRyKTsKICAgICAgICAgcy0+cGlucyA9M0QgdmFsdWU7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMjMzLDEyICsyMzcsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkCm9tYXAyX2dwaW9f
bW9kdWxlX2ludF91cGRhdGUoc3RydWN0IG9tYXAyX2dwaW9fcyAqcywKCiBzdGF0aWMgdm9pZCBv
bWFwMl9ncGlvX21vZHVsZV93YWtlKHN0cnVjdCBvbWFwMl9ncGlvX3MgKnMsIGludCBsaW5lKQog
ewotICAgIGlmICghKHMtPmNvbmZpZ1swXSAmICgxIDw8IDIpKSkgLyogRU5BV0FLRVVQICovCisg
ICAgaWYgKCEocy0+Y29uZmlnWzBdICYgKDEgPDwgMikpKSB7ICAgLyogRU5BV0FLRVVQICovCiAg
ICAgICAgIHJldHVybjsKLSAgICBpZiAoIShzLT5jb25maWdbMF0gJiAoMyA8PCAzKSkpIC8qIEZv
cmNlIElkbGUgKi8KKyAgICB9CisgICAgaWYgKCEocy0+Y29uZmlnWzBdICYgKDMgPDwgMykpKSB7
ICAgLyogRm9yY2UgSWRsZSAqLwogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCEocy0+d3VtYXNr
ICYgKDEgPDwgbGluZSkpKQorICAgIH0KKyAgICBpZiAoIShzLT53dW1hc2sgJiAoMSA8PCBsaW5l
KSkpIHsKICAgICAgICAgcmV0dXJuOworICAgIH0KCiAgICAgcWVtdV9pcnFfcmFpc2Uocy0+d2t1
cCk7CiB9CkBAIC0yNzksMTIgKzI4NiwxNCBAQCBzdGF0aWMgdm9pZCBvbWFwMl9ncGlvX3NldCh2
b2lkICpvcGFxdWUsIGludCBsaW5lLAppbnQgbGV2ZWwpCgogICAgIGxpbmUgJj0zRCAzMTsKICAg
ICBpZiAobGV2ZWwpIHsKLSAgICAgICAgaWYgKHMtPmRpciAmICgxIDw8IGxpbmUpICYgKCh+cy0+
aW5wdXRzICYgcy0+ZWRnZVswXSkgfApzLT5sZXZlbFsxXSkpCisgICAgICAgIGlmIChzLT5kaXIg
JiAoMSA8PCBsaW5lKSAmICgofnMtPmlucHV0cyAmIHMtPmVkZ2VbMF0pIHwKcy0+bGV2ZWxbMV0p
KSB7CiAgICAgICAgICAgICBvbWFwMl9ncGlvX21vZHVsZV9pbnQocywgbGluZSk7CisgICAgICAg
IH0KICAgICAgICAgcy0+aW5wdXRzIHw9M0QgMSA8PCBsaW5lOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGlmIChzLT5kaXIgJiAoMSA8PCBsaW5lKSAmICgocy0+aW5wdXRzICYgcy0+ZWRnZVsxXSkg
fApzLT5sZXZlbFswXSkpCisgICAgICAgIGlmIChzLT5kaXIgJiAoMSA8PCBsaW5lKSAmICgocy0+
aW5wdXRzICYgcy0+ZWRnZVsxXSkgfApzLT5sZXZlbFswXSkpIHsKICAgICAgICAgICAgIG9tYXAy
X2dwaW9fbW9kdWxlX2ludChzLCBsaW5lKTsKKyAgICAgICAgfQogICAgICAgICBzLT5pbnB1dHMg
Jj0zRCB+KDEgPDwgbGluZSk7CiAgICAgfQogfQpAQCAtMzEyLDY2ICszMjEsNjYgQEAgc3RhdGlj
IHVpbnQzMl90IG9tYXAyX2dwaW9fbW9kdWxlX3JlYWQodm9pZCAqb3BhcXVlLApod2FkZHIgYWRk
cikKICAgICBzdHJ1Y3Qgb21hcDJfZ3Bpb19zICpzID0zRCBvcGFxdWU7CgogICAgIHN3aXRjaCAo
YWRkcikgewotICAgIGNhc2UgMHgwMDogLyogR1BJT19SRVZJU0lPTiAqLworICAgIGNhc2UgMHgw
MDogIC8qIEdQSU9fUkVWSVNJT04gKi8KICAgICAgICAgcmV0dXJuIHMtPnJldmlzaW9uOwoKLSAg
ICBjYXNlIDB4MTA6IC8qIEdQSU9fU1lTQ09ORklHICovCisgICAgY2FzZSAweDEwOiAgLyogR1BJ
T19TWVNDT05GSUcgKi8KICAgICAgICAgcmV0dXJuIHMtPmNvbmZpZ1swXTsKCi0gICAgY2FzZSAw
eDE0OiAvKiBHUElPX1NZU1NUQVRVUyAqLworICAgIGNhc2UgMHgxNDogIC8qIEdQSU9fU1lTU1RB
VFVTICovCiAgICAgICAgIHJldHVybiAweDAxOwoKLSAgICBjYXNlIDB4MTg6IC8qIEdQSU9fSVJR
U1RBVFVTMSAqLworICAgIGNhc2UgMHgxODogIC8qIEdQSU9fSVJRU1RBVFVTMSAqLwogICAgICAg
ICByZXR1cm4gcy0+aW50c1swXTsKCi0gICAgY2FzZSAweDFjOiAvKiBHUElPX0lSUUVOQUJMRTEg
Ki8KLSAgICBjYXNlIDB4NjA6IC8qIEdQSU9fQ0xFQVJJUlFFTkFCTEUxICovCi0gICAgY2FzZSAw
eDY0OiAvKiBHUElPX1NFVElSUUVOQUJMRTEgKi8KKyAgICBjYXNlIDB4MWM6ICAvKiBHUElPX0lS
UUVOQUJMRTEgKi8KKyAgICBjYXNlIDB4NjA6ICAvKiBHUElPX0NMRUFSSVJRRU5BQkxFMSAqLwor
ICAgIGNhc2UgMHg2NDogIC8qIEdQSU9fU0VUSVJRRU5BQkxFMSAqLwogICAgICAgICByZXR1cm4g
cy0+bWFza1swXTsKCi0gICAgY2FzZSAweDIwOiAvKiBHUElPX1dBS0VVUEVOQUJMRSAqLwotICAg
IGNhc2UgMHg4MDogLyogR1BJT19DTEVBUldLVUVOQSAqLwotICAgIGNhc2UgMHg4NDogLyogR1BJ
T19TRVRXS1VFTkEgKi8KKyAgICBjYXNlIDB4MjA6ICAvKiBHUElPX1dBS0VVUEVOQUJMRSAqLwor
ICAgIGNhc2UgMHg4MDogIC8qIEdQSU9fQ0xFQVJXS1VFTkEgKi8KKyAgICBjYXNlIDB4ODQ6ICAv
KiBHUElPX1NFVFdLVUVOQSAqLwogICAgICAgICByZXR1cm4gcy0+d3VtYXNrOwoKLSAgICBjYXNl
IDB4Mjg6IC8qIEdQSU9fSVJRU1RBVFVTMiAqLworICAgIGNhc2UgMHgyODogIC8qIEdQSU9fSVJR
U1RBVFVTMiAqLwogICAgICAgICByZXR1cm4gcy0+aW50c1sxXTsKCi0gICAgY2FzZSAweDJjOiAv
KiBHUElPX0lSUUVOQUJMRTIgKi8KLSAgICBjYXNlIDB4NzA6IC8qIEdQSU9fQ0xFQVJJUlFFTkFC
TEUyICovCi0gICAgY2FzZSAweDc0OiAvKiBHUElPX1NFVElSRVFORUFCTEUyICovCisgICAgY2Fz
ZSAweDJjOiAgLyogR1BJT19JUlFFTkFCTEUyICovCisgICAgY2FzZSAweDcwOiAgLyogR1BJT19D
TEVBUklSUUVOQUJMRTIgKi8KKyAgICBjYXNlIDB4NzQ6ICAvKiBHUElPX1NFVElSRVFORUFCTEUy
ICovCiAgICAgICAgIHJldHVybiBzLT5tYXNrWzFdOwoKLSAgICBjYXNlIDB4MzA6IC8qIEdQSU9f
Q1RSTCAqLworICAgIGNhc2UgMHgzMDogIC8qIEdQSU9fQ1RSTCAqLwogICAgICAgICByZXR1cm4g
cy0+Y29uZmlnWzFdOwoKLSAgICBjYXNlIDB4MzQ6IC8qIEdQSU9fT0UgKi8KKyAgICBjYXNlIDB4
MzQ6ICAvKiBHUElPX09FICovCiAgICAgICAgIHJldHVybiBzLT5kaXI7CgotICAgIGNhc2UgMHgz
ODogLyogR1BJT19EQVRBSU4gKi8KKyAgICBjYXNlIDB4Mzg6ICAvKiBHUElPX0RBVEFJTiAqLwog
ICAgICAgICByZXR1cm4gcy0+aW5wdXRzOwoKLSAgICBjYXNlIDB4M2M6IC8qIEdQSU9fREFUQU9V
VCAqLwotICAgIGNhc2UgMHg5MDogLyogR1BJT19DTEVBUkRBVEFPVVQgKi8KLSAgICBjYXNlIDB4
OTQ6IC8qIEdQSU9fU0VUREFUQU9VVCAqLworICAgIGNhc2UgMHgzYzogIC8qIEdQSU9fREFUQU9V
VCAqLworICAgIGNhc2UgMHg5MDogIC8qIEdQSU9fQ0xFQVJEQVRBT1VUICovCisgICAgY2FzZSAw
eDk0OiAgLyogR1BJT19TRVREQVRBT1VUICovCiAgICAgICAgIHJldHVybiBzLT5vdXRwdXRzOwoK
LSAgICBjYXNlIDB4NDA6IC8qIEdQSU9fTEVWRUxERVRFQ1QwICovCisgICAgY2FzZSAweDQwOiAg
LyogR1BJT19MRVZFTERFVEVDVDAgKi8KICAgICAgICAgcmV0dXJuIHMtPmxldmVsWzBdOwoKLSAg
ICBjYXNlIDB4NDQ6IC8qIEdQSU9fTEVWRUxERVRFQ1QxICovCisgICAgY2FzZSAweDQ0OiAgLyog
R1BJT19MRVZFTERFVEVDVDEgKi8KICAgICAgICAgcmV0dXJuIHMtPmxldmVsWzFdOwoKLSAgICBj
YXNlIDB4NDg6IC8qIEdQSU9fUklTSU5HREVURUNUICovCisgICAgY2FzZSAweDQ4OiAgLyogR1BJ
T19SSVNJTkdERVRFQ1QgKi8KICAgICAgICAgcmV0dXJuIHMtPmVkZ2VbMF07CgotICAgIGNhc2Ug
MHg0YzogLyogR1BJT19GQUxMSU5HREVURUNUICovCisgICAgY2FzZSAweDRjOiAgLyogR1BJT19G
QUxMSU5HREVURUNUICovCiAgICAgICAgIHJldHVybiBzLT5lZGdlWzFdOwoKLSAgICBjYXNlIDB4
NTA6IC8qIEdQSU9fREVCT1VOQ0VOQUJMRSAqLworICAgIGNhc2UgMHg1MDogIC8qIEdQSU9fREVC
T1VOQ0VOQUJMRSAqLwogICAgICAgICByZXR1cm4gcy0+ZGVib3VuY2U7CgotICAgIGNhc2UgMHg1
NDogLyogR1BJT19ERUJPVU5DSU5HVElNRSAqLworICAgIGNhc2UgMHg1NDogIC8qIEdQSU9fREVC
T1VOQ0lOR1RJTUUgKi8KICAgICAgICAgcmV0dXJuIHMtPmRlbGF5OwogICAgIH0KCkBAIC0zODcs
NTUgKzM5Niw1NiBAQCBzdGF0aWMgdm9pZCBvbWFwMl9ncGlvX21vZHVsZV93cml0ZSh2b2lkICpv
cGFxdWUsCmh3YWRkciBhZGRyLAogICAgIGludCBsbjsKCiAgICAgc3dpdGNoIChhZGRyKSB7Ci0g
ICAgY2FzZSAweDAwOiAvKiBHUElPX1JFVklTSU9OICovCi0gICAgY2FzZSAweDE0OiAvKiBHUElP
X1NZU1NUQVRVUyAqLwotICAgIGNhc2UgMHgzODogLyogR1BJT19EQVRBSU4gKi8KKyAgICBjYXNl
IDB4MDA6ICAvKiBHUElPX1JFVklTSU9OICovCisgICAgY2FzZSAweDE0OiAgLyogR1BJT19TWVNT
VEFUVVMgKi8KKyAgICBjYXNlIDB4Mzg6ICAvKiBHUElPX0RBVEFJTiAqLwogICAgICAgICBPTUFQ
X1JPX1JFRyhhZGRyKTsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHgxMDogLyogR1BJT19T
WVNDT05GSUcgKi8KKyAgICBjYXNlIDB4MTA6ICAvKiBHUElPX1NZU0NPTkZJRyAqLwogICAgICAg
ICBpZiAoKCh2YWx1ZSA+PiAzKSAmIDMpID0zRD0zRCAzKSB7CiAgICAgICAgICAgICBxZW11X2xv
Z19tYXNrKExPR19HVUVTVF9FUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBJ
bGxlZ2FsIElETEVNT0RFIHZhbHVlOiAzXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKHZhbHVlICYgMikKKyAgICAgICAgaWYgKHZhbHVlICYgMikgewogICAgICAgICAgICAg
b21hcDJfZ3Bpb19tb2R1bGVfcmVzZXQocyk7CisgICAgICAgIH0KICAgICAgICAgcy0+Y29uZmln
WzBdID0zRCB2YWx1ZSAmIDB4MWQ7CiAgICAgICAgIGJyZWFrOwoKLSAgICBjYXNlIDB4MTg6IC8q
IEdQSU9fSVJRU1RBVFVTMSAqLworICAgIGNhc2UgMHgxODogIC8qIEdQSU9fSVJRU1RBVFVTMSAq
LwogICAgICAgICBpZiAocy0+aW50c1swXSAmIHZhbHVlKSB7CiAgICAgICAgICAgICBzLT5pbnRz
WzBdICY9M0QgfnZhbHVlOwogICAgICAgICAgICAgb21hcDJfZ3Bpb19tb2R1bGVfbGV2ZWxfdXBk
YXRlKHMsIDApOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwoKLSAgICBjYXNlIDB4MWM6IC8q
IEdQSU9fSVJRRU5BQkxFMSAqLworICAgIGNhc2UgMHgxYzogIC8qIEdQSU9fSVJRRU5BQkxFMSAq
LwogICAgICAgICBzLT5tYXNrWzBdID0zRCB2YWx1ZTsKICAgICAgICAgb21hcDJfZ3Bpb19tb2R1
bGVfaW50X3VwZGF0ZShzLCAwKTsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHgyMDogLyog
R1BJT19XQUtFVVBFTkFCTEUgKi8KKyAgICBjYXNlIDB4MjA6ICAvKiBHUElPX1dBS0VVUEVOQUJM
RSAqLwogICAgICAgICBzLT53dW1hc2sgPTNEIHZhbHVlOwogICAgICAgICBicmVhazsKCi0gICAg
Y2FzZSAweDI4OiAvKiBHUElPX0lSUVNUQVRVUzIgKi8KKyAgICBjYXNlIDB4Mjg6ICAvKiBHUElP
X0lSUVNUQVRVUzIgKi8KICAgICAgICAgaWYgKHMtPmludHNbMV0gJiB2YWx1ZSkgewogICAgICAg
ICAgICAgcy0+aW50c1sxXSAmPTNEIH52YWx1ZTsKICAgICAgICAgICAgIG9tYXAyX2dwaW9fbW9k
dWxlX2xldmVsX3VwZGF0ZShzLCAxKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKCi0gICAg
Y2FzZSAweDJjOiAvKiBHUElPX0lSUUVOQUJMRTIgKi8KKyAgICBjYXNlIDB4MmM6ICAvKiBHUElP
X0lSUUVOQUJMRTIgKi8KICAgICAgICAgcy0+bWFza1sxXSA9M0QgdmFsdWU7CiAgICAgICAgIG9t
YXAyX2dwaW9fbW9kdWxlX2ludF91cGRhdGUocywgMSk7CiAgICAgICAgIGJyZWFrOwoKLSAgICBj
YXNlIDB4MzA6IC8qIEdQSU9fQ1RSTCAqLworICAgIGNhc2UgMHgzMDogIC8qIEdQSU9fQ1RSTCAq
LwogICAgICAgICBzLT5jb25maWdbMV0gPTNEIHZhbHVlICYgNzsKICAgICAgICAgYnJlYWs7Cgot
ICAgIGNhc2UgMHgzNDogLyogR1BJT19PRSAqLworICAgIGNhc2UgMHgzNDogIC8qIEdQSU9fT0Ug
Ki8KICAgICAgICAgZGlmZiA9M0Qgcy0+b3V0cHV0cyAmIChzLT5kaXIgXiB2YWx1ZSk7CiAgICAg
ICAgIHMtPmRpciA9M0QgdmFsdWU7CgpAQCAtNDQ5LDcxICs0NTksNzEgQEAgc3RhdGljIHZvaWQg
b21hcDJfZ3Bpb19tb2R1bGVfd3JpdGUodm9pZCAqb3BhcXVlLApod2FkZHIgYWRkciwKICAgICAg
ICAgb21hcDJfZ3Bpb19tb2R1bGVfbGV2ZWxfdXBkYXRlKHMsIDEpOwogICAgICAgICBicmVhazsK
Ci0gICAgY2FzZSAweDNjOiAvKiBHUElPX0RBVEFPVVQgKi8KKyAgICBjYXNlIDB4M2M6ICAvKiBH
UElPX0RBVEFPVVQgKi8KICAgICAgICAgb21hcDJfZ3Bpb19tb2R1bGVfb3V0X3VwZGF0ZShzLCBz
LT5vdXRwdXRzIF4gdmFsdWUpOwogICAgICAgICBicmVhazsKCi0gICAgY2FzZSAweDQwOiAvKiBH
UElPX0xFVkVMREVURUNUMCAqLworICAgIGNhc2UgMHg0MDogIC8qIEdQSU9fTEVWRUxERVRFQ1Qw
ICovCiAgICAgICAgIHMtPmxldmVsWzBdID0zRCB2YWx1ZTsKICAgICAgICAgb21hcDJfZ3Bpb19t
b2R1bGVfbGV2ZWxfdXBkYXRlKHMsIDApOwogICAgICAgICBvbWFwMl9ncGlvX21vZHVsZV9sZXZl
bF91cGRhdGUocywgMSk7CiAgICAgICAgIGJyZWFrOwoKLSAgICBjYXNlIDB4NDQ6IC8qIEdQSU9f
TEVWRUxERVRFQ1QxICovCisgICAgY2FzZSAweDQ0OiAgLyogR1BJT19MRVZFTERFVEVDVDEgKi8K
ICAgICAgICAgcy0+bGV2ZWxbMV0gPTNEIHZhbHVlOwogICAgICAgICBvbWFwMl9ncGlvX21vZHVs
ZV9sZXZlbF91cGRhdGUocywgMCk7CiAgICAgICAgIG9tYXAyX2dwaW9fbW9kdWxlX2xldmVsX3Vw
ZGF0ZShzLCAxKTsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHg0ODogLyogR1BJT19SSVNJ
TkdERVRFQ1QgKi8KKyAgICBjYXNlIDB4NDg6ICAvKiBHUElPX1JJU0lOR0RFVEVDVCAqLwogICAg
ICAgICBzLT5lZGdlWzBdID0zRCB2YWx1ZTsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHg0
YzogLyogR1BJT19GQUxMSU5HREVURUNUICovCisgICAgY2FzZSAweDRjOiAgLyogR1BJT19GQUxM
SU5HREVURUNUICovCiAgICAgICAgIHMtPmVkZ2VbMV0gPTNEIHZhbHVlOwogICAgICAgICBicmVh
azsKCi0gICAgY2FzZSAweDUwOiAvKiBHUElPX0RFQk9VTkNFTkFCTEUgKi8KKyAgICBjYXNlIDB4
NTA6ICAvKiBHUElPX0RFQk9VTkNFTkFCTEUgKi8KICAgICAgICAgcy0+ZGVib3VuY2UgPTNEIHZh
bHVlOwogICAgICAgICBicmVhazsKCi0gICAgY2FzZSAweDU0OiAvKiBHUElPX0RFQk9VTkNJTkdU
SU1FICovCisgICAgY2FzZSAweDU0OiAgLyogR1BJT19ERUJPVU5DSU5HVElNRSAqLwogICAgICAg
ICBzLT5kZWxheSA9M0QgdmFsdWU7CiAgICAgICAgIGJyZWFrOwoKLSAgICBjYXNlIDB4NjA6IC8q
IEdQSU9fQ0xFQVJJUlFFTkFCTEUxICovCisgICAgY2FzZSAweDYwOiAgLyogR1BJT19DTEVBUklS
UUVOQUJMRTEgKi8KICAgICAgICAgcy0+bWFza1swXSAmPTNEIH52YWx1ZTsKICAgICAgICAgb21h
cDJfZ3Bpb19tb2R1bGVfaW50X3VwZGF0ZShzLCAwKTsKICAgICAgICAgYnJlYWs7CgotICAgIGNh
c2UgMHg2NDogLyogR1BJT19TRVRJUlFFTkFCTEUxICovCisgICAgY2FzZSAweDY0OiAgLyogR1BJ
T19TRVRJUlFFTkFCTEUxICovCiAgICAgICAgIHMtPm1hc2tbMF0gfD0zRCB2YWx1ZTsKICAgICAg
ICAgb21hcDJfZ3Bpb19tb2R1bGVfaW50X3VwZGF0ZShzLCAwKTsKICAgICAgICAgYnJlYWs7Cgot
ICAgIGNhc2UgMHg3MDogLyogR1BJT19DTEVBUklSUUVOQUJMRTIgKi8KKyAgICBjYXNlIDB4NzA6
ICAvKiBHUElPX0NMRUFSSVJRRU5BQkxFMiAqLwogICAgICAgICBzLT5tYXNrWzFdICY9M0QgfnZh
bHVlOwogICAgICAgICBvbWFwMl9ncGlvX21vZHVsZV9pbnRfdXBkYXRlKHMsIDEpOwogICAgICAg
ICBicmVhazsKCi0gICAgY2FzZSAweDc0OiAvKiBHUElPX1NFVElSRVFORUFCTEUyICovCisgICAg
Y2FzZSAweDc0OiAgLyogR1BJT19TRVRJUkVRTkVBQkxFMiAqLwogICAgICAgICBzLT5tYXNrWzFd
IHw9M0QgdmFsdWU7CiAgICAgICAgIG9tYXAyX2dwaW9fbW9kdWxlX2ludF91cGRhdGUocywgMSk7
CiAgICAgICAgIGJyZWFrOwoKLSAgICBjYXNlIDB4ODA6IC8qIEdQSU9fQ0xFQVJXS1VFTkEgKi8K
KyAgICBjYXNlIDB4ODA6ICAvKiBHUElPX0NMRUFSV0tVRU5BICovCiAgICAgICAgIHMtPnd1bWFz
ayAmPTNEIH52YWx1ZTsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHg4NDogLyogR1BJT19T
RVRXS1VFTkEgKi8KKyAgICBjYXNlIDB4ODQ6ICAvKiBHUElPX1NFVFdLVUVOQSAqLwogICAgICAg
ICBzLT53dW1hc2sgfD0zRCB2YWx1ZTsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHg5MDog
LyogR1BJT19DTEVBUkRBVEFPVVQgKi8KKyAgICBjYXNlIDB4OTA6ICAvKiBHUElPX0NMRUFSREFU
QU9VVCAqLwogICAgICAgICBvbWFwMl9ncGlvX21vZHVsZV9vdXRfdXBkYXRlKHMsIHMtPm91dHB1
dHMgJiB2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwoKLSAgICBjYXNlIDB4OTQ6IC8qIEdQSU9fU0VU
REFUQU9VVCAqLworICAgIGNhc2UgMHg5NDogIC8qIEdQSU9fU0VUREFUQU9VVCAqLwogICAgICAg
ICBvbWFwMl9ncGlvX21vZHVsZV9vdXRfdXBkYXRlKHMsIH5zLT5vdXRwdXRzICYgdmFsdWUpOwog
ICAgICAgICBicmVhazsKCkBAIC01NDEsMzkgKzU1MSwzOSBAQCBzdGF0aWMgdm9pZCBvbWFwMl9n
cGlvX21vZHVsZV93cml0ZXAodm9pZCAqb3BhcXVlLApod2FkZHIgYWRkciwKICAgICB9CgogICAg
IHN3aXRjaCAoYWRkciAmIH4zKSB7Ci0gICAgY2FzZSAweDAwOiAvKiBHUElPX1JFVklTSU9OICov
Ci0gICAgY2FzZSAweDE0OiAvKiBHUElPX1NZU1NUQVRVUyAqLwotICAgIGNhc2UgMHgzODogLyog
R1BJT19EQVRBSU4gKi8KKyAgICBjYXNlIDB4MDA6ICAvKiBHUElPX1JFVklTSU9OICovCisgICAg
Y2FzZSAweDE0OiAgLyogR1BJT19TWVNTVEFUVVMgKi8KKyAgICBjYXNlIDB4Mzg6ICAvKiBHUElP
X0RBVEFJTiAqLwogICAgICAgICBPTUFQX1JPX1JFRyhhZGRyKTsKICAgICAgICAgYnJlYWs7Cgot
ICAgIGNhc2UgMHgxMDogLyogR1BJT19TWVNDT05GSUcgKi8KLSAgICBjYXNlIDB4MWM6IC8qIEdQ
SU9fSVJRRU5BQkxFMSAqLwotICAgIGNhc2UgMHgyMDogLyogR1BJT19XQUtFVVBFTkFCTEUgKi8K
LSAgICBjYXNlIDB4MmM6IC8qIEdQSU9fSVJRRU5BQkxFMiAqLwotICAgIGNhc2UgMHgzMDogLyog
R1BJT19DVFJMICovCi0gICAgY2FzZSAweDM0OiAvKiBHUElPX09FICovCi0gICAgY2FzZSAweDNj
OiAvKiBHUElPX0RBVEFPVVQgKi8KLSAgICBjYXNlIDB4NDA6IC8qIEdQSU9fTEVWRUxERVRFQ1Qw
ICovCi0gICAgY2FzZSAweDQ0OiAvKiBHUElPX0xFVkVMREVURUNUMSAqLwotICAgIGNhc2UgMHg0
ODogLyogR1BJT19SSVNJTkdERVRFQ1QgKi8KLSAgICBjYXNlIDB4NGM6IC8qIEdQSU9fRkFMTElO
R0RFVEVDVCAqLwotICAgIGNhc2UgMHg1MDogLyogR1BJT19ERUJPVU5DRU5BQkxFICovCi0gICAg
Y2FzZSAweDU0OiAvKiBHUElPX0RFQk9VTkNJTkdUSU1FICovCisgICAgY2FzZSAweDEwOiAgLyog
R1BJT19TWVNDT05GSUcgKi8KKyAgICBjYXNlIDB4MWM6ICAvKiBHUElPX0lSUUVOQUJMRTEgKi8K
KyAgICBjYXNlIDB4MjA6ICAvKiBHUElPX1dBS0VVUEVOQUJMRSAqLworICAgIGNhc2UgMHgyYzog
IC8qIEdQSU9fSVJRRU5BQkxFMiAqLworICAgIGNhc2UgMHgzMDogIC8qIEdQSU9fQ1RSTCAqLwor
ICAgIGNhc2UgMHgzNDogIC8qIEdQSU9fT0UgKi8KKyAgICBjYXNlIDB4M2M6ICAvKiBHUElPX0RB
VEFPVVQgKi8KKyAgICBjYXNlIDB4NDA6ICAvKiBHUElPX0xFVkVMREVURUNUMCAqLworICAgIGNh
c2UgMHg0NDogIC8qIEdQSU9fTEVWRUxERVRFQ1QxICovCisgICAgY2FzZSAweDQ4OiAgLyogR1BJ
T19SSVNJTkdERVRFQ1QgKi8KKyAgICBjYXNlIDB4NGM6ICAvKiBHUElPX0ZBTExJTkdERVRFQ1Qg
Ki8KKyAgICBjYXNlIDB4NTA6ICAvKiBHUElPX0RFQk9VTkNFTkFCTEUgKi8KKyAgICBjYXNlIDB4
NTQ6ICAvKiBHUElPX0RFQk9VTkNJTkdUSU1FICovCiAgICAgICAgIGN1ciA9M0Qgb21hcDJfZ3Bp
b19tb2R1bGVfcmVhZChvcGFxdWUsIGFkZHIgJiB+MykgJgogICAgICAgICAgICAgICAgIH4obWFz
ayA8PCAoKGFkZHIgJiAzKSA8PCAzKSk7CgogICAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwot
ICAgIGNhc2UgMHgxODogLyogR1BJT19JUlFTVEFUVVMxICovCi0gICAgY2FzZSAweDI4OiAvKiBH
UElPX0lSUVNUQVRVUzIgKi8KLSAgICBjYXNlIDB4NjA6IC8qIEdQSU9fQ0xFQVJJUlFFTkFCTEUx
ICovCi0gICAgY2FzZSAweDY0OiAvKiBHUElPX1NFVElSUUVOQUJMRTEgKi8KLSAgICBjYXNlIDB4
NzA6IC8qIEdQSU9fQ0xFQVJJUlFFTkFCTEUyICovCi0gICAgY2FzZSAweDc0OiAvKiBHUElPX1NF
VElSRVFORUFCTEUyICovCi0gICAgY2FzZSAweDgwOiAvKiBHUElPX0NMRUFSV0tVRU5BICovCi0g
ICAgY2FzZSAweDg0OiAvKiBHUElPX1NFVFdLVUVOQSAqLwotICAgIGNhc2UgMHg5MDogLyogR1BJ
T19DTEVBUkRBVEFPVVQgKi8KLSAgICBjYXNlIDB4OTQ6IC8qIEdQSU9fU0VUREFUQU9VVCAqLwor
ICAgIGNhc2UgMHgxODogIC8qIEdQSU9fSVJRU1RBVFVTMSAqLworICAgIGNhc2UgMHgyODogIC8q
IEdQSU9fSVJRU1RBVFVTMiAqLworICAgIGNhc2UgMHg2MDogIC8qIEdQSU9fQ0xFQVJJUlFFTkFC
TEUxICovCisgICAgY2FzZSAweDY0OiAgLyogR1BJT19TRVRJUlFFTkFCTEUxICovCisgICAgY2Fz
ZSAweDcwOiAgLyogR1BJT19DTEVBUklSUUVOQUJMRTIgKi8KKyAgICBjYXNlIDB4NzQ6ICAvKiBH
UElPX1NFVElSRVFORUFCTEUyICovCisgICAgY2FzZSAweDgwOiAgLyogR1BJT19DTEVBUldLVUVO
QSAqLworICAgIGNhc2UgMHg4NDogIC8qIEdQSU9fU0VUV0tVRU5BICovCisgICAgY2FzZSAweDkw
OiAgLyogR1BJT19DTEVBUkRBVEFPVVQgKi8KKyAgICBjYXNlIDB4OTQ6ICAvKiBHUElPX1NFVERB
VEFPVVQgKi8KICAgICAgICAgdmFsdWUgPDw9M0QgKGFkZHIgJiAzKSA8PCAzOwogICAgICAgICBv
bWFwMl9ncGlvX21vZHVsZV93cml0ZShvcGFxdWUsIGFkZHIsIGN1ciB8IHZhbHVlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC02MTYsMjIgKzYyNiwyMiBAQCBzdGF0aWMgdWludDY0X3Qgb21hcDJfZ3Bp
Zl90b3BfcmVhZCh2b2lkICpvcGFxdWUsCmh3YWRkciBhZGRyLCB1bnNpZ25lZCBzaXplKQogICAg
IE9tYXAyR3Bpb1N0YXRlICpzID0zRCBvcGFxdWU7CgogICAgIHN3aXRjaCAoYWRkcikgewotICAg
IGNhc2UgMHgwMDogLyogSVBHRU5FUklDT0NQU1BMX1JFVklTSU9OICovCisgICAgY2FzZSAweDAw
OiAgLyogSVBHRU5FUklDT0NQU1BMX1JFVklTSU9OICovCiAgICAgICAgIHJldHVybiAweDE4OwoK
LSAgICBjYXNlIDB4MTA6IC8qIElQR0VORVJJQ09DUFNQTF9TWVNDT05GSUcgKi8KKyAgICBjYXNl
IDB4MTA6ICAvKiBJUEdFTkVSSUNPQ1BTUExfU1lTQ09ORklHICovCiAgICAgICAgIHJldHVybiBz
LT5hdXRvaWRsZTsKCi0gICAgY2FzZSAweDE0OiAvKiBJUEdFTkVSSUNPQ1BTUExfU1lTU1RBVFVT
ICovCisgICAgY2FzZSAweDE0OiAgLyogSVBHRU5FUklDT0NQU1BMX1NZU1NUQVRVUyAqLwogICAg
ICAgICByZXR1cm4gMHgwMTsKCi0gICAgY2FzZSAweDE4OiAvKiBJUEdFTkVSSUNPQ1BTUExfSVJR
U1RBVFVTICovCisgICAgY2FzZSAweDE4OiAgLyogSVBHRU5FUklDT0NQU1BMX0lSUVNUQVRVUyAq
LwogICAgICAgICByZXR1cm4gMHgwMDsKCi0gICAgY2FzZSAweDQwOiAvKiBJUEdFTkVSSUNPQ1BT
UExfR1BPICovCisgICAgY2FzZSAweDQwOiAgLyogSVBHRU5FUklDT0NQU1BMX0dQTyAqLwogICAg
ICAgICByZXR1cm4gcy0+Z3BvOwoKLSAgICBjYXNlIDB4NTA6IC8qIElQR0VORVJJQ09DUFNQTF9H
UEkgKi8KKyAgICBjYXNlIDB4NTA6ICAvKiBJUEdFTkVSSUNPQ1BTUExfR1BJICovCiAgICAgICAg
IHJldHVybiAweDAwOwogICAgIH0KCkBAIC02NDUsMjAgKzY1NSwyMSBAQCBzdGF0aWMgdm9pZCBv
bWFwMl9ncGlmX3RvcF93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkcgphZGRyLAogICAgIE9tYXAy
R3Bpb1N0YXRlICpzID0zRCBvcGFxdWU7CgogICAgIHN3aXRjaCAoYWRkcikgewotICAgIGNhc2Ug
MHgwMDogLyogSVBHRU5FUklDT0NQU1BMX1JFVklTSU9OICovCi0gICAgY2FzZSAweDE0OiAvKiBJ
UEdFTkVSSUNPQ1BTUExfU1lTU1RBVFVTICovCi0gICAgY2FzZSAweDE4OiAvKiBJUEdFTkVSSUNP
Q1BTUExfSVJRU1RBVFVTICovCi0gICAgY2FzZSAweDUwOiAvKiBJUEdFTkVSSUNPQ1BTUExfR1BJ
ICovCisgICAgY2FzZSAweDAwOiAgLyogSVBHRU5FUklDT0NQU1BMX1JFVklTSU9OICovCisgICAg
Y2FzZSAweDE0OiAgLyogSVBHRU5FUklDT0NQU1BMX1NZU1NUQVRVUyAqLworICAgIGNhc2UgMHgx
ODogIC8qIElQR0VORVJJQ09DUFNQTF9JUlFTVEFUVVMgKi8KKyAgICBjYXNlIDB4NTA6ICAvKiBJ
UEdFTkVSSUNPQ1BTUExfR1BJICovCiAgICAgICAgIE9NQVBfUk9fUkVHKGFkZHIpOwogICAgICAg
ICBicmVhazsKCi0gICAgY2FzZSAweDEwOiAvKiBJUEdFTkVSSUNPQ1BTUExfU1lTQ09ORklHICov
Ci0gICAgICAgIGlmICh2YWx1ZSAmICgxIDw8IDEpKSAvKiBTT0ZUUkVTRVQgKi8KKyAgICBjYXNl
IDB4MTA6ICAvKiBJUEdFTkVSSUNPQ1BTUExfU1lTQ09ORklHICovCisgICAgICAgIGlmICh2YWx1
ZSAmICgxIDw8IDEpKSB7ICAgICAgIC8qIFNPRlRSRVNFVCAqLwogICAgICAgICAgICAgb21hcDJf
Z3BpZl9yZXNldChERVZJQ0UocykpOworICAgICAgICB9CiAgICAgICAgIHMtPmF1dG9pZGxlID0z
RCB2YWx1ZSAmIDE7CiAgICAgICAgIGJyZWFrOwoKLSAgICBjYXNlIDB4NDA6IC8qIElQR0VORVJJ
Q09DUFNQTF9HUE8gKi8KKyAgICBjYXNlIDB4NDA6ICAvKiBJUEdFTkVSSUNPQ1BTUExfR1BPICov
CiAgICAgICAgIHMtPmdwbyA9M0QgdmFsdWUgJiAxOwogICAgICAgICBicmVhazsKCmRpZmYgLS1n
aXQgYS9ody9ncGlvL3phdXJ1cy5jIGIvaHcvZ3Bpby96YXVydXMuYwppbmRleCA1ODg0ODA0YzU4
Li43MzQyNDQwYjk1IDEwMDY0NAotLS0gYS9ody9ncGlvL3phdXJ1cy5jCisrKyBiL2h3L2dwaW8v
emF1cnVzLmMKQEAgLTQ5LDE5ICs0OSwyMCBAQCBzdHJ1Y3QgU2Nvb3BJbmZvIHsKICAgICB1aW50
MTZfdCBpc3I7CiB9OwoKLSNkZWZpbmUgU0NPT1BfTUNSIDB4MDAKLSNkZWZpbmUgU0NPT1BfQ0RS
IDB4MDQKLSNkZWZpbmUgU0NPT1BfQ1NSIDB4MDgKLSNkZWZpbmUgU0NPT1BfQ1BSIDB4MGMKLSNk
ZWZpbmUgU0NPT1BfQ0NSIDB4MTAKLSNkZWZpbmUgU0NPT1BfSVJSX0lSTSAweDE0Ci0jZGVmaW5l
IFNDT09QX0lNUiAweDE4Ci0jZGVmaW5lIFNDT09QX0lTUiAweDFjCi0jZGVmaW5lIFNDT09QX0dQ
Q1IgMHgyMAotI2RlZmluZSBTQ09PUF9HUFdSIDB4MjQKLSNkZWZpbmUgU0NPT1BfR1BSUiAweDI4
Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzY29vcF9ncGlvX2hhbmRsZXJfdXBkYXRlKFNjb29wSW5m
byAqcykgeworI2RlZmluZSBTQ09PUF9NQ1IgICAgICAgMHgwMAorI2RlZmluZSBTQ09PUF9DRFIg
ICAgICAgMHgwNAorI2RlZmluZSBTQ09PUF9DU1IgICAgICAgMHgwOAorI2RlZmluZSBTQ09PUF9D
UFIgICAgICAgMHgwYworI2RlZmluZSBTQ09PUF9DQ1IgICAgICAgMHgxMAorI2RlZmluZSBTQ09P
UF9JUlJfSVJNICAgMHgxNAorI2RlZmluZSBTQ09PUF9JTVIgICAgICAgMHgxOAorI2RlZmluZSBT
Q09PUF9JU1IgICAgICAgMHgxYworI2RlZmluZSBTQ09PUF9HUENSICAgICAgMHgyMAorI2RlZmlu
ZSBTQ09PUF9HUFdSICAgICAgMHgyNAorI2RlZmluZSBTQ09PUF9HUFJSICAgICAgMHgyOAorCitz
dGF0aWMgaW5saW5lIHZvaWQgc2Nvb3BfZ3Bpb19oYW5kbGVyX3VwZGF0ZShTY29vcEluZm8gKnMp
Cit7CiAgICAgdWludDMyX3QgbGV2ZWwsIGRpZmY7CiAgICAgaW50IGJpdDsKICAgICBsZXZlbCA9
M0Qgcy0+Z3Bpb19sZXZlbCAmIHMtPmdwaW9fZGlyOwpAQCAtMTI1LDggKzEyNiw5IEBAIHN0YXRp
YyB2b2lkIHNjb29wX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU0NPT1BfQ1BSOgogICAgICAgICBzLT5wb3dlciA9M0QgdmFsdWU7Ci0g
ICAgICAgIGlmICh2YWx1ZSAmIDB4ODApCisgICAgICAgIGlmICh2YWx1ZSAmIDB4ODApIHsKICAg
ICAgICAgICAgIHMtPnBvd2VyIHw9M0QgMHg4MDQwOworICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU0NPT1BfQ0NSOgogICAgICAgICBzLT5jY3IgPTNEIHZhbHVlOwpAQCAtMTQ1
LDcgKzE0Nyw3IEBAIHN0YXRpYyB2b2lkIHNjb29wX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRy
IGFkZHIsCiAgICAgICAgIHNjb29wX2dwaW9faGFuZGxlcl91cGRhdGUocyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU0NPT1BfR1BXUjoKLSAgICBjYXNlIFNDT09QX0dQUlI6IC8qIEdQUlIg
aXMgcHJvYmFibHkgUi9PIGluIHJlYWwgSFcgKi8KKyAgICBjYXNlIFNDT09QX0dQUlI6ICAgIC8q
IEdQUlIgaXMgcHJvYmFibHkgUi9PIGluIHJlYWwgSFcgKi8KICAgICAgICAgcy0+Z3Bpb19sZXZl
bCA9M0QgdmFsdWUgJiBzLT5ncGlvX2RpcjsKICAgICAgICAgc2Nvb3BfZ3Bpb19oYW5kbGVyX3Vw
ZGF0ZShzKTsKICAgICAgICAgYnJlYWs7CkBAIC0xNjYsMTAgKzE2OCwxMSBAQCBzdGF0aWMgdm9p
ZCBzY29vcF9ncGlvX3NldCh2b2lkICpvcGFxdWUsIGludCBsaW5lLAppbnQgbGV2ZWwpCiB7CiAg
ICAgU2Nvb3BJbmZvICpzID0zRCAoU2Nvb3BJbmZvICopIG9wYXF1ZTsKCi0gICAgaWYgKGxldmVs
KQorICAgIGlmIChsZXZlbCkgewogICAgICAgICBzLT5ncGlvX2xldmVsIHw9M0QgKDEgPDwgbGlu
ZSk7Ci0gICAgZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIHMtPmdwaW9fbGV2ZWwgJj0zRCB+
KDEgPDwgbGluZSk7CisgICAgfQogfQoKIHN0YXRpYyB2b2lkIHNjb29wX2luaXQoT2JqZWN0ICpv
YmopCkBAIC0yMDMsNyArMjA2LDcgQEAgc3RhdGljIGludCBzY29vcF9wb3N0X2xvYWQodm9pZCAq
b3BhcXVlLCBpbnQgdmVyc2lvbl9pZCkKICAgICByZXR1cm4gMDsKIH0KCi1zdGF0aWMgYm9vbCBp
c192ZXJzaW9uXzAgKHZvaWQgKm9wYXF1ZSwgaW50IHZlcnNpb25faWQpCitzdGF0aWMgYm9vbCBp
c192ZXJzaW9uXzAodm9pZCAqb3BhcXVlLCBpbnQgdmVyc2lvbl9pZCkKIHsKICAgICByZXR1cm4g
dmVyc2lvbl9pZCA9M0Q9M0QgMDsKIH0KQEAgLTI2NSw3ICsyNjgsNyBAQCB0eXBlX2luaXQoc2Nv
b3BfcmVnaXN0ZXJfdHlwZXMpCgogLyogV3JpdGUgdGhlIGJvb3Rsb2FkZXIgcGFyYW1ldGVycyBt
ZW1vcnkgYXJlYS4gICovCgotI2RlZmluZSBNQUdJQ19DSEcoYSwgYiwgYywgZCkgKChkIDw8IDI0
KSB8IChjIDw8IDE2KSB8IChiIDw8IDgpIHwgYSkKKyNkZWZpbmUgTUFHSUNfQ0hHKGEsIGIsIGMs
IGQpICAgKChkIDw8IDI0KSB8IChjIDw8IDE2KSB8IChiIDw8IDgpIHwgYSkKCiBzdGF0aWMgc3Ry
dWN0IFFFTVVfUEFDS0VEIHNsX3BhcmFtX2luZm8gewogICAgIHVpbnQzMl90IGNvbWFkal9rZXl3
b3JkOwpAQCAtMjg2LDE2ICsyODksMTYgQEAgc3RhdGljIHN0cnVjdCBRRU1VX1BBQ0tFRCBzbF9w
YXJhbV9pbmZvIHsKICAgICB1aW50MzJfdCBwaGFkX2tleXdvcmQ7CiAgICAgaW50MzJfdCBwaGFk
YWRqOwogfSB6YXVydXNfYm9vdHBhcmFtID0zRCB7Ci0gICAgLmNvbWFkal9rZXl3b3JkID0zRCBN
QUdJQ19DSEcoJ0MnLCAnTScsICdBJywgJ0QnKSwKLSAgICAuY29tYWRqID0zRCAxMjUsCi0gICAg
LnV1aWRfa2V5d29yZCA9M0QgTUFHSUNfQ0hHKCdVJywgJ1UnLCAnSScsICdEJyksCi0gICAgLnV1
aWQgPTNEIHsgLTEgfSwKLSAgICAudG91Y2hfa2V5d29yZCA9M0QgTUFHSUNfQ0hHKCdUJywgJ1Un
LCAnQycsICdIJyksCi0gICAgLnRvdWNoX3hwID0zRCAtMSwKLSAgICAuYWRhZGpfa2V5d29yZCA9
M0QgTUFHSUNfQ0hHKCdCJywgJ1YnLCAnQScsICdEJyksCi0gICAgLmFkYWRqID0zRCAtMSwKLSAg
ICAucGhhZF9rZXl3b3JkID0zRCBNQUdJQ19DSEcoJ1AnLCAnSCcsICdBJywgJ0QnKSwKLSAgICAu
cGhhZGFkaiA9M0QgMHgwMSwKKyAgICAuY29tYWRqX2tleXdvcmQgICAgID0zRCBNQUdJQ19DSEco
J0MnLCAnTScsICdBJywgJ0QnKSwKKyAgICAuY29tYWRqICAgICAgICAgICAgID0zRCAxMjUsCisg
ICAgLnV1aWRfa2V5d29yZCAgICAgICA9M0QgTUFHSUNfQ0hHKCdVJywgJ1UnLCAnSScsICdEJyks
CisgICAgLnV1aWQgICAgICAgICAgICAgICA9M0QgeyAtMSB9LAorICAgIC50b3VjaF9rZXl3b3Jk
ICAgICAgPTNEIE1BR0lDX0NIRygnVCcsICdVJywgJ0MnLCAnSCcpLAorICAgIC50b3VjaF94cCAg
ICAgICAgICAgPTNEIC0xLAorICAgIC5hZGFkal9rZXl3b3JkICAgICAgPTNEIE1BR0lDX0NIRygn
QicsICdWJywgJ0EnLCAnRCcpLAorICAgIC5hZGFkaiAgICAgICAgICAgICAgPTNEIC0xLAorICAg
IC5waGFkX2tleXdvcmQgICAgICAgPTNEIE1BR0lDX0NIRygnUCcsICdIJywgJ0EnLCAnRCcpLAor
ICAgIC5waGFkYWRqICAgICAgICAgICAgPTNEIDB4MDEsCiB9OwoKIHZvaWQgc2xfYm9vdHBhcmFt
X3dyaXRlKGh3YWRkciBwdHIpCmRpZmYgLS1naXQgYS9ody9pbnB1dC90c2MyMDA1LmMgYi9ody9p
bnB1dC90c2MyMDA1LmMKaW5kZXggOTQxZjE2M2QzNi4uMDUwOTRhYjJiMSAxMDA2NDQKLS0tIGEv
aHcvaW5wdXQvdHNjMjAwNS5jCisrKyBiL2h3L2lucHV0L3RzYzIwMDUuYwpAQCAtMjgsMTAgKzI4
LDEwIEBACiAjaW5jbHVkZSAibWlncmF0aW9uL3Ztc3RhdGUuaCIKICNpbmNsdWRlICJ0cmFjZS5o
IgoKLSNkZWZpbmUgVFNDX0NVVF9SRVNPTFVUSU9OKHZhbHVlLCBwKSAoKHZhbHVlKSA+PiAoMTYg
LSAocCA/IDEyIDogMTApKSkKKyNkZWZpbmUgVFNDX0NVVF9SRVNPTFVUSU9OKHZhbHVlLCBwKSAg
KCh2YWx1ZSkgPj4gKDE2IC0gKHAgPyAxMiA6IDEwKSkpCgogdHlwZWRlZiBzdHJ1Y3QgewotICAg
IHFlbXVfaXJxIHBpbnQ7IC8qIENvbWJpbmF0aW9uIG9mIHRoZSBuUEVOSVJRIGFuZCBEQVYgc2ln
bmFscyAqLworICAgIHFlbXVfaXJxIHBpbnQ7ICAvKiBDb21iaW5hdGlvbiBvZiB0aGUgblBFTklS
USBhbmQgREFWIHNpZ25hbHMgKi8KICAgICBRRU1VVGltZXIgKnRpbWVyOwogICAgIHVpbnQxNl90
IG1vZGVsOwoKQEAgLTYzLDcgKzYzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogfSBUU0MyMDA1U3Rh
dGU7CgogZW51bSB7Ci0gICAgVFNDX01PREVfWFlaX1NDQU4gPTNEIDB4MCwKKyAgICBUU0NfTU9E
RV9YWVpfU0NBTiA9M0QgMHgwLAogICAgIFRTQ19NT0RFX1hZX1NDQU4sCiAgICAgVFNDX01PREVf
WCwKICAgICBUU0NfTU9ERV9ZLApAQCAtODIsMTAwICs4MiwxMDAgQEAgZW51bSB7CiB9OwoKIHN0
YXRpYyBjb25zdCB1aW50MTZfdCBtb2RlX3JlZ3NbMTZdID0zRCB7Ci0gICAgMHhmMDAwLCAvKiBY
LCBZLCBaIHNjYW4gKi8KLSAgICAweGMwMDAsIC8qIFgsIFkgc2NhbiAqLwotICAgIDB4ODAwMCwg
LyogWCAqLwotICAgIDB4NDAwMCwgLyogWSAqLwotICAgIDB4MzAwMCwgLyogWiAqLwotICAgIDB4
MDgwMCwgLyogQVVYICovCi0gICAgMHgwNDAwLCAvKiBURU1QMSAqLwotICAgIDB4MDIwMCwgLyog
VEVNUDIgKi8KLSAgICAweDA4MDAsIC8qIEFVWCBzY2FuICovCi0gICAgMHgwMDQwLCAvKiBYIHRl
c3QgKi8KLSAgICAweDAwMjAsIC8qIFkgdGVzdCAqLwotICAgIDB4MDA4MCwgLyogU2hvcnQtY2ly
Y3VpdCB0ZXN0ICovCi0gICAgMHgwMDAwLCAvKiBSZXNlcnZlZCAqLwotICAgIDB4MDAwMCwgLyog
WCssIFgtIGRyaXZlcnMgKi8KLSAgICAweDAwMDAsIC8qIFkrLCBZLSBkcml2ZXJzICovCi0gICAg
MHgwMDAwLCAvKiBZKywgWC0gZHJpdmVycyAqLworICAgIDB4ZjAwMCwgLyogWCwgWSwgWiBzY2Fu
ICovCisgICAgMHhjMDAwLCAvKiBYLCBZIHNjYW4gKi8KKyAgICAweDgwMDAsIC8qIFggKi8KKyAg
ICAweDQwMDAsIC8qIFkgKi8KKyAgICAweDMwMDAsIC8qIFogKi8KKyAgICAweDA4MDAsIC8qIEFV
WCAqLworICAgIDB4MDQwMCwgLyogVEVNUDEgKi8KKyAgICAweDAyMDAsIC8qIFRFTVAyICovCisg
ICAgMHgwODAwLCAvKiBBVVggc2NhbiAqLworICAgIDB4MDA0MCwgLyogWCB0ZXN0ICovCisgICAg
MHgwMDIwLCAvKiBZIHRlc3QgKi8KKyAgICAweDAwODAsIC8qIFNob3J0LWNpcmN1aXQgdGVzdCAq
LworICAgIDB4MDAwMCwgLyogUmVzZXJ2ZWQgKi8KKyAgICAweDAwMDAsIC8qIFgrLCBYLSBkcml2
ZXJzICovCisgICAgMHgwMDAwLCAvKiBZKywgWS0gZHJpdmVycyAqLworICAgIDB4MDAwMCwgLyog
WSssIFgtIGRyaXZlcnMgKi8KIH07CgotI2RlZmluZSBYX1RSQU5TRk9STShzKSBcCisjZGVmaW5l
IFhfVFJBTlNGT1JNKHMpICAgICAgXAogICAgICgocy0+eSAqIHMtPnRyWzBdIC0gcy0+eCAqIHMt
PnRyWzFdKSAvIHMtPnRyWzJdICsgcy0+dHJbM10pCi0jZGVmaW5lIFlfVFJBTlNGT1JNKHMpIFwK
KyNkZWZpbmUgWV9UUkFOU0ZPUk0ocykgICAgICBcCiAgICAgKChzLT55ICogcy0+dHJbNF0gLSBz
LT54ICogcy0+dHJbNV0pIC8gcy0+dHJbNl0gKyBzLT50cls3XSkKLSNkZWZpbmUgWjFfVFJBTlNG
T1JNKHMpIFwKKyNkZWZpbmUgWjFfVFJBTlNGT1JNKHMpICAgICBcCiAgICAgKCg0MDAgLSAoKHMp
LT54ID4+IDcpICsgKChzKS0+cHJlc3N1cmUgPDwgMTApKSA8PCA0KQotI2RlZmluZSBaMl9UUkFO
U0ZPUk0ocykgXAorI2RlZmluZSBaMl9UUkFOU0ZPUk0ocykgICAgIFwKICAgICAoKDQwMDAgKyAo
KHMpLT55ID4+IDcpIC0gKChzKS0+cHJlc3N1cmUgPDwgMTApKSA8PCA0KQoKLSNkZWZpbmUgQVVY
X1ZBTCAoNzAwIDw8IDQpIC8qICsvLSAzIGF0IDEyLWJpdCAqLwotI2RlZmluZSBURU1QMV9WQUwg
KDEyNjQgPDwgNCkgLyogKy8tIDUgYXQgMTItYml0ICovCi0jZGVmaW5lIFRFTVAyX1ZBTCAoMTUz
MSA8PCA0KSAvKiArLy0gNSBhdCAxMi1iaXQgKi8KKyNkZWZpbmUgQVVYX1ZBTCAgICAgICAoNzAw
IDw8IDQpICAvKiArLy0gMyBhdCAxMi1iaXQgKi8KKyNkZWZpbmUgVEVNUDFfVkFMICAgICAoMTI2
NCA8PCA0KSAvKiArLy0gNSBhdCAxMi1iaXQgKi8KKyNkZWZpbmUgVEVNUDJfVkFMICAgICAoMTUz
MSA8PCA0KSAvKiArLy0gNSBhdCAxMi1iaXQgKi8KCiBzdGF0aWMgdWludDE2X3QgdHNjMjAwNV9y
ZWFkKFRTQzIwMDVTdGF0ZSAqcywgaW50IHJlZykKIHsKICAgICB1aW50MTZfdCByZXQ7CgogICAg
IHN3aXRjaCAocmVnKSB7Ci0gICAgY2FzZSAweDA6IC8qIFggKi8KKyAgICBjYXNlIDB4MDogLyog
WCAqLwogICAgICAgICBzLT5kYXYgJj0zRCB+bW9kZV9yZWdzW1RTQ19NT0RFX1hdOwogICAgICAg
ICByZXR1cm4gVFNDX0NVVF9SRVNPTFVUSU9OKFhfVFJBTlNGT1JNKHMpLCBzLT5wcmVjaXNpb24p
ICsKICAgICAgICAgICAgICAgICAocy0+bm9pc2UgJiAzKTsKLSAgICBjYXNlIDB4MTogLyogWSAq
LworICAgIGNhc2UgMHgxOiAvKiBZICovCiAgICAgICAgIHMtPmRhdiAmPTNEIH5tb2RlX3JlZ3Nb
VFNDX01PREVfWV07Ci0gICAgICAgIHMtPm5vaXNlICsrOworICAgICAgICBzLT5ub2lzZSsrOwog
ICAgICAgICByZXR1cm4gVFNDX0NVVF9SRVNPTFVUSU9OKFlfVFJBTlNGT1JNKHMpLCBzLT5wcmVj
aXNpb24pIF4KICAgICAgICAgICAgICAgICAocy0+bm9pc2UgJiAzKTsKLSAgICBjYXNlIDB4Mjog
LyogWjEgKi8KKyAgICBjYXNlIDB4MjogLyogWjEgKi8KICAgICAgICAgcy0+ZGF2ICY9M0QgMHhk
ZmZmOwogICAgICAgICByZXR1cm4gVFNDX0NVVF9SRVNPTFVUSU9OKFoxX1RSQU5TRk9STShzKSwg
cy0+cHJlY2lzaW9uKSAtCiAgICAgICAgICAgICAgICAgKHMtPm5vaXNlICYgMyk7Ci0gICAgY2Fz
ZSAweDM6IC8qIFoyICovCisgICAgY2FzZSAweDM6IC8qIFoyICovCiAgICAgICAgIHMtPmRhdiAm
PTNEIDB4ZWZmZjsKICAgICAgICAgcmV0dXJuIFRTQ19DVVRfUkVTT0xVVElPTihaMl9UUkFOU0ZP
Uk0ocyksIHMtPnByZWNpc2lvbikgfAogICAgICAgICAgICAgICAgIChzLT5ub2lzZSAmIDMpOwoK
LSAgICBjYXNlIDB4NDogLyogQVVYICovCisgICAgY2FzZSAweDQ6IC8qIEFVWCAqLwogICAgICAg
ICBzLT5kYXYgJj0zRCB+bW9kZV9yZWdzW1RTQ19NT0RFX0FVWF07CiAgICAgICAgIHJldHVybiBU
U0NfQ1VUX1JFU09MVVRJT04oQVVYX1ZBTCwgcy0+cHJlY2lzaW9uKTsKCi0gICAgY2FzZSAweDU6
IC8qIFRFTVAxICovCisgICAgY2FzZSAweDU6IC8qIFRFTVAxICovCiAgICAgICAgIHMtPmRhdiAm
PTNEIH5tb2RlX3JlZ3NbVFNDX01PREVfVEVNUDFdOwogICAgICAgICByZXR1cm4gVFNDX0NVVF9S
RVNPTFVUSU9OKFRFTVAxX1ZBTCwgcy0+cHJlY2lzaW9uKSAtCiAgICAgICAgICAgICAgICAgKHMt
Pm5vaXNlICYgNSk7Ci0gICAgY2FzZSAweDY6IC8qIFRFTVAyICovCisgICAgY2FzZSAweDY6IC8q
IFRFTVAyICovCiAgICAgICAgIHMtPmRhdiAmPTNEIDB4ZGZmZjsKICAgICAgICAgcy0+ZGF2ICY9
M0Qgfm1vZGVfcmVnc1tUU0NfTU9ERV9URU1QMl07CiAgICAgICAgIHJldHVybiBUU0NfQ1VUX1JF
U09MVVRJT04oVEVNUDJfVkFMLCBzLT5wcmVjaXNpb24pIF4KICAgICAgICAgICAgICAgICAocy0+
bm9pc2UgJiAzKTsKCi0gICAgY2FzZSAweDc6IC8qIFN0YXR1cyAqLworICAgIGNhc2UgMHg3OiAv
KiBTdGF0dXMgKi8KICAgICAgICAgcmV0ID0zRCBzLT5kYXYgfCAocy0+cmVzZXQgPDwgNykgfCAo
cy0+cGRzdCA8PCAyKSB8IDB4MDsKICAgICAgICAgcy0+ZGF2ICY9M0Qgfihtb2RlX3JlZ3NbVFND
X01PREVfWF9URVNUXSB8Cm1vZGVfcmVnc1tUU0NfTU9ERV9ZX1RFU1RdIHwKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGVfcmVnc1tUU0NfTU9ERV9UU19URVNUXSk7CiAgICAgICAgIHMtPnJl
c2V0ID0zRCB0cnVlOwogICAgICAgICByZXR1cm4gcmV0OwoKLSAgICBjYXNlIDB4ODogICAvKiBB
VVggaGlnaCB0aHJlc2hvbGQgKi8KKyAgICBjYXNlIDB4ODogLyogQVVYIGhpZ2ggdGhyZXNob2xk
ICovCiAgICAgICAgIHJldHVybiBzLT5hdXhfdGhyWzFdOwotICAgIGNhc2UgMHg5OiAgIC8qIEFV
WCBsb3cgdGhyZXNob2xkICovCisgICAgY2FzZSAweDk6IC8qIEFVWCBsb3cgdGhyZXNob2xkICov
CiAgICAgICAgIHJldHVybiBzLT5hdXhfdGhyWzBdOwoKLSAgICBjYXNlIDB4YTogICAvKiBURU1Q
IGhpZ2ggdGhyZXNob2xkICovCisgICAgY2FzZSAweGE6IC8qIFRFTVAgaGlnaCB0aHJlc2hvbGQg
Ki8KICAgICAgICAgcmV0dXJuIHMtPnRlbXBfdGhyWzFdOwotICAgIGNhc2UgMHhiOiAgIC8qIFRF
TVAgbG93IHRocmVzaG9sZCAqLworICAgIGNhc2UgMHhiOiAvKiBURU1QIGxvdyB0aHJlc2hvbGQg
Ki8KICAgICAgICAgcmV0dXJuIHMtPnRlbXBfdGhyWzBdOwoKLSAgICBjYXNlIDB4YzogLyogQ0ZS
MCAqLworICAgIGNhc2UgMHhjOiAvKiBDRlIwICovCiAgICAgICAgIHJldHVybiAocy0+cHJlc3N1
cmUgPDwgMTUpIHwgKCghcy0+YnVzeSkgPDwgMTQpIHwKLSAgICAgICAgICAgICAgICAocy0+bmV4
dHByZWNpc2lvbiA8PCAxMykgfCBzLT50aW1pbmdbMF07Ci0gICAgY2FzZSAweGQ6IC8qIENGUjEg
Ki8KKyAgICAgICAgICAgICAgICAocy0+bmV4dHByZWNpc2lvbiA8PCAxMykgfCBzLT50aW1pbmdb
MF07CisgICAgY2FzZSAweGQ6IC8qIENGUjEgKi8KICAgICAgICAgcmV0dXJuIHMtPnRpbWluZ1sx
XTsKLSAgICBjYXNlIDB4ZTogLyogQ0ZSMiAqLworICAgIGNhc2UgMHhlOiAvKiBDRlIyICovCiAg
ICAgICAgIHJldHVybiAocy0+cGluX2Z1bmMgPDwgMTQpIHwgcy0+ZmlsdGVyOwoKLSAgICBjYXNl
IDB4ZjogLyogRnVuY3Rpb24gc2VsZWN0IHN0YXR1cyAqLworICAgIGNhc2UgMHhmOiAvKiBGdW5j
dGlvbiBzZWxlY3Qgc3RhdHVzICovCiAgICAgICAgIHJldHVybiBzLT5mdW5jdGlvbiA+PTNEIDAg
PyAxIDw8IHMtPmZ1bmN0aW9uIDogMDsKICAgICB9CgpAQCAtMjAwLDEzICsyMDAsMTQgQEAgc3Rh
dGljIHZvaWQgdHNjMjAwNV93cml0ZShUU0MyMDA1U3RhdGUgKnMsIGludCByZWcsCnVpbnQxNl90
IGRhdGEpCiAgICAgICAgIHMtPnRlbXBfdGhyWzBdID0zRCBkYXRhOwogICAgICAgICBicmVhazsK
Ci0gICAgY2FzZSAweGM6IC8qIENGUjAgKi8KKyAgICBjYXNlIDB4YzogLyogQ0ZSMCAqLwogICAg
ICAgICBzLT5ob3N0X21vZGUgPTNEIChkYXRhID4+IDE1KSAhPTNEIDA7CiAgICAgICAgIGlmIChz
LT5lbmFibGVkICE9M0QgIShkYXRhICYgMHg0MDAwKSkgewogICAgICAgICAgICAgcy0+ZW5hYmxl
ZCA9M0QgIShkYXRhICYgMHg0MDAwKTsKICAgICAgICAgICAgIHRyYWNlX3RzYzIwMDVfc2Vuc2Uo
cy0+ZW5hYmxlZCA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwotICAgICAgICAgICAgaWYgKHMt
PmJ1c3kgJiYgIXMtPmVuYWJsZWQpCisgICAgICAgICAgICBpZiAocy0+YnVzeSAmJiAhcy0+ZW5h
YmxlZCkgewogICAgICAgICAgICAgICAgIHRpbWVyX2RlbChzLT50aW1lcik7CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBzLT5idXN5ID0zRCBzLT5idXN5ICYmIHMtPmVuYWJsZWQ7CiAgICAg
ICAgIH0KICAgICAgICAgcy0+bmV4dHByZWNpc2lvbiA9M0QgKGRhdGEgPj4gMTMpICYgMTsKQEAg
LTIxNiwxMCArMjE3LDEwIEBAIHN0YXRpYyB2b2lkIHRzYzIwMDVfd3JpdGUoVFNDMjAwNVN0YXRl
ICpzLCBpbnQgcmVnLAp1aW50MTZfdCBkYXRhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAi
dHNjMjAwNV93cml0ZTogaWxsZWdhbCBjb252ZXJzaW9uIGNsb2NrCnNldHRpbmdcbiIpOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgMHhkOiAvKiBDRlIxICovCisgICAgY2Fz
ZSAweGQ6IC8qIENGUjEgKi8KICAgICAgICAgcy0+dGltaW5nWzFdID0zRCBkYXRhICYgMHhmMDc7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgMHhlOiAvKiBDRlIyICovCisgICAgY2FzZSAweGU6
IC8qIENGUjIgKi8KICAgICAgICAgcy0+cGluX2Z1bmMgPTNEIChkYXRhID4+IDE0KSAmIDM7CiAg
ICAgICAgIHMtPmZpbHRlciA9M0QgZGF0YSAmIDB4M2ZmZjsKICAgICAgICAgYnJlYWs7CkBAIC0y
NTgsMTAgKzI1OSwxMiBAQCBzdGF0aWMgdm9pZCB0c2MyMDA1X3Bpbl91cGRhdGUoVFNDMjAwNVN0
YXRlICpzKQogICAgIHN3aXRjaCAocy0+bmV4dGZ1bmN0aW9uKSB7CiAgICAgY2FzZSBUU0NfTU9E
RV9YWVpfU0NBTjoKICAgICBjYXNlIFRTQ19NT0RFX1hZX1NDQU46Ci0gICAgICAgIGlmICghcy0+
aG9zdF9tb2RlICYmIHMtPmRhdikKKyAgICAgICAgaWYgKCFzLT5ob3N0X21vZGUgJiYgcy0+ZGF2
KSB7CiAgICAgICAgICAgICBzLT5lbmFibGVkID0zRCBmYWxzZTsKLSAgICAgICAgaWYgKCFzLT5w
cmVzc3VyZSkKKyAgICAgICAgfQorICAgICAgICBpZiAoIXMtPnByZXNzdXJlKSB7CiAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovCiAgICAg
Y2FzZSBUU0NfTU9ERV9BVVhfU0NBTjoKICAgICAgICAgYnJlYWs7CkBAIC0yNjksOCArMjcyLDkg
QEAgc3RhdGljIHZvaWQgdHNjMjAwNV9waW5fdXBkYXRlKFRTQzIwMDVTdGF0ZSAqcykKICAgICBj
YXNlIFRTQ19NT0RFX1g6CiAgICAgY2FzZSBUU0NfTU9ERV9ZOgogICAgIGNhc2UgVFNDX01PREVf
WjoKLSAgICAgICAgaWYgKCFzLT5wcmVzc3VyZSkKKyAgICAgICAgaWYgKCFzLT5wcmVzc3VyZSkg
ewogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIC8qIEZhbGwgdGhyb3Vn
aCAqLwogICAgIGNhc2UgVFNDX01PREVfQVVYOgogICAgIGNhc2UgVFNDX01PREVfVEVNUDE6CkBA
IC0yNzgsOCArMjgyLDkgQEAgc3RhdGljIHZvaWQgdHNjMjAwNV9waW5fdXBkYXRlKFRTQzIwMDVT
dGF0ZSAqcykKICAgICBjYXNlIFRTQ19NT0RFX1hfVEVTVDoKICAgICBjYXNlIFRTQ19NT0RFX1lf
VEVTVDoKICAgICBjYXNlIFRTQ19NT0RFX1RTX1RFU1Q6Ci0gICAgICAgIGlmIChzLT5kYXYpCisg
ICAgICAgIGlmIChzLT5kYXYpIHsKICAgICAgICAgICAgIHMtPmVuYWJsZWQgPTNEIGZhbHNlOwor
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwoKICAgICBjYXNlIFRTQ19NT0RFX1JFU0VSVkVEOgpA
QCAtMjkwLDEzICsyOTUsMTQgQEAgc3RhdGljIHZvaWQgdHNjMjAwNV9waW5fdXBkYXRlKFRTQzIw
MDVTdGF0ZSAqcykKICAgICAgICAgcmV0dXJuOwogICAgIH0KCi0gICAgaWYgKCFzLT5lbmFibGVk
IHx8IHMtPmJ1c3kpCisgICAgaWYgKCFzLT5lbmFibGVkIHx8IHMtPmJ1c3kpIHsKICAgICAgICAg
cmV0dXJuOworICAgIH0KCiAgICAgcy0+YnVzeSA9M0QgdHJ1ZTsKICAgICBzLT5wcmVjaXNpb24g
PTNEIHMtPm5leHRwcmVjaXNpb247CiAgICAgcy0+ZnVuY3Rpb24gPTNEIHMtPm5leHRmdW5jdGlv
bjsKLSAgICBzLT5wZHN0ID0zRCAhcy0+cG5kMDsgLyogU3luY2hyb25pc2VkIG9uIGludGVybmFs
IGNsb2NrICovCisgICAgcy0+cGRzdCA9M0QgIXMtPnBuZDA7IC8qIFN5bmNocm9uaXNlZCBvbiBp
bnRlcm5hbCBjbG9jayAqLwogICAgIGV4cGlyZXMgPTNEIHFlbXVfY2xvY2tfZ2V0X25zKFFFTVVf
Q0xPQ0tfVklSVFVBTCkgKwogICAgICAgICAoTkFOT1NFQ09ORFNfUEVSX1NFQ09ORCA+PiA3KTsK
ICAgICB0aW1lcl9tb2Qocy0+dGltZXIsIGV4cGlyZXMpOwpAQCAtMzMxLDcgKzMzNyw3IEBAIHN0
YXRpYyB1aW50OF90IHRzYzIwMDVfdHhyeF93b3JkKHZvaWQgKm9wYXF1ZSwgdWludDhfdAp2YWx1
ZSkKICAgICBUU0MyMDA1U3RhdGUgKnMgPTNEIG9wYXF1ZTsKICAgICB1aW50MzJfdCByZXQgPTNE
IDA7CgotICAgIHN3aXRjaCAocy0+c3RhdGUgKyspIHsKKyAgICBzd2l0Y2ggKHMtPnN0YXRlKysp
IHsKICAgICBjYXNlIDA6CiAgICAgICAgIGlmICh2YWx1ZSAmIDB4ODApIHsKICAgICAgICAgICAg
IC8qIENvbW1hbmQgKi8KQEAgLTM0Myw4ICszNDksOSBAQCBzdGF0aWMgdWludDhfdCB0c2MyMDA1
X3R4cnhfd29yZCh2b2lkICpvcGFxdWUsIHVpbnQ4X3QKdmFsdWUpCiAgICAgICAgICAgICAgICAg
aWYgKHMtPmVuYWJsZWQgIT0zRCAhKHZhbHVlICYgMSkpIHsKICAgICAgICAgICAgICAgICAgICAg
cy0+ZW5hYmxlZCA9M0QgISh2YWx1ZSAmIDEpOwogICAgICAgICAgICAgICAgICAgICB0cmFjZV90
c2MyMDA1X3NlbnNlKHMtPmVuYWJsZWQgPyAiZW5hYmxlZCIgOgoiZGlzYWJsZWQiKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHMtPmJ1c3kgJiYgIXMtPmVuYWJsZWQpCisgICAgICAgICAgICAg
ICAgICAgIGlmIChzLT5idXN5ICYmICFzLT5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB0aW1lcl9kZWwocy0+dGltZXIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIHMtPmJ1c3kgPTNEIHMtPmJ1c3kgJiYgcy0+ZW5hYmxlZDsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgdHNjMjAwNV9waW5fdXBkYXRlKHMpOwpAQCAtMzY4
LDEwICszNzUsMTEgQEAgc3RhdGljIHVpbnQ4X3QgdHNjMjAwNV90eHJ4X3dvcmQodm9pZCAqb3Bh
cXVlLAp1aW50OF90IHZhbHVlKQogICAgICAgICBicmVhazsKCiAgICAgY2FzZSAxOgotICAgICAg
ICBpZiAocy0+Y29tbWFuZCkKKyAgICAgICAgaWYgKHMtPmNvbW1hbmQpIHsKICAgICAgICAgICAg
IHJldCA9M0QgKHMtPmRhdGEgPj4gOCkgJiAweGZmOwotICAgICAgICBlbHNlCisgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBzLT5kYXRhIHw9M0QgdmFsdWUgPDwgODsKKyAgICAgICAgfQog
ICAgICAgICBicmVhazsKCiAgICAgY2FzZSAyOgpAQCAtNDA5LDggKzQxNyw5IEBAIHN0YXRpYyB2
b2lkIHRzYzIwMDVfdGltZXJfdGljayh2b2lkICpvcGFxdWUpCgogICAgIC8qIFRpbWVyIHRpY2tl
ZCAtLSBhIHNldCBvZiBjb252ZXJzaW9ucyBoYXMgYmVlbiBmaW5pc2hlZC4gICovCgotICAgIGlm
ICghcy0+YnVzeSkKKyAgICBpZiAoIXMtPmJ1c3kpIHsKICAgICAgICAgcmV0dXJuOworICAgIH0K
CiAgICAgcy0+YnVzeSA9M0QgZmFsc2U7CiAgICAgcy0+ZGF2IHw9M0QgbW9kZV9yZWdzW3MtPmZ1
bmN0aW9uXTsKQEAgLTQzNSw4ICs0NDQsOSBAQCBzdGF0aWMgdm9pZCB0c2MyMDA1X3RvdWNoc2Ny
ZWVuX2V2ZW50KHZvaWQgKm9wYXF1ZSwKICAgICAgKiBzaWduYWxpbmcgVFMgZXZlbnRzIGltbWVk
aWF0ZWx5LCBidXQgZm9yIG5vdyB3ZSBzaW11bGF0ZQogICAgICAqIHRoZSBmaXJzdCBjb252ZXJz
aW9uIGRlbGF5IGZvciBzYWtlIG9mIGNvcnJlY3RuZXNzLgogICAgICAqLwotICAgIGlmIChwICE9
M0Qgcy0+cHJlc3N1cmUpCisgICAgaWYgKHAgIT0zRCBzLT5wcmVzc3VyZSkgewogICAgICAgICB0
c2MyMDA1X3Bpbl91cGRhdGUocyk7CisgICAgfQogfQoKIHN0YXRpYyBpbnQgdHNjMjAwNV9wb3N0
X2xvYWQodm9pZCAqb3BhcXVlLCBpbnQgdmVyc2lvbl9pZCkKZGlmZiAtLWdpdCBhL2h3L2lucHV0
L3RzYzIxMHguYyBiL2h3L2lucHV0L3RzYzIxMHguYwppbmRleCBjNGUzMmM3YTQyLi5iOTRlMzQ2
YWYxIDEwMDY0NAotLS0gYS9ody9pbnB1dC90c2MyMTB4LmMKKysrIGIvaHcvaW5wdXQvdHNjMjEw
eC5jCkBAIC0zMywxMyArMzMsMTMgQEAKICNpbmNsdWRlICJtaWdyYXRpb24vdm1zdGF0ZS5oIgog
I2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKCi0jZGVmaW5lIFRTQ19EQVRBX1JFR0lTVEVSU19QQUdF
IDB4MAotI2RlZmluZSBUU0NfQ09OVFJPTF9SRUdJU1RFUlNfUEFHRSAweDEKLSNkZWZpbmUgVFND
X0FVRElPX1JFR0lTVEVSU19QQUdFIDB4MgorI2RlZmluZSBUU0NfREFUQV9SRUdJU1RFUlNfUEFH
RSAgICAgMHgwCisjZGVmaW5lIFRTQ19DT05UUk9MX1JFR0lTVEVSU19QQUdFICAweDEKKyNkZWZp
bmUgVFNDX0FVRElPX1JFR0lTVEVSU19QQUdFICAgIDB4MgoKICNkZWZpbmUgVFNDX1ZFUkJPU0UK
Ci0jZGVmaW5lIFRTQ19DVVRfUkVTT0xVVElPTih2YWx1ZSwgcCkgKCh2YWx1ZSkgPj4gKDE2IC0g
cmVzb2x1dGlvbltwXSkpCisjZGVmaW5lIFRTQ19DVVRfUkVTT0xVVElPTih2YWx1ZSwgcCkgICgo
dmFsdWUpID4+ICgxNiAtIHJlc29sdXRpb25bcF0pKQoKIHR5cGVkZWYgc3RydWN0IHsKICAgICBx
ZW11X2lycSBwaW50OwpAQCAtMTA1LDYwICsxMDUsNjAgQEAgdHlwZWRlZiBzdHJ1Y3QgewoKIHN0
YXRpYyBjb25zdCBpbnQgcmVzb2x1dGlvbls0XSA9M0QgeyAxMiwgOCwgMTAsIDEyIH07CgotI2Rl
ZmluZSBUU0NfTU9ERV9OT19TQ0FOIDB4MAotI2RlZmluZSBUU0NfTU9ERV9YWV9TQ0FOIDB4MQot
I2RlZmluZSBUU0NfTU9ERV9YWVpfU0NBTiAweDIKLSNkZWZpbmUgVFNDX01PREVfWCAweDMKLSNk
ZWZpbmUgVFNDX01PREVfWSAweDQKLSNkZWZpbmUgVFNDX01PREVfWiAweDUKLSNkZWZpbmUgVFND
X01PREVfQkFUMSAweDYKLSNkZWZpbmUgVFNDX01PREVfQkFUMiAweDcKLSNkZWZpbmUgVFNDX01P
REVfQVVYIDB4OAotI2RlZmluZSBUU0NfTU9ERV9BVVhfU0NBTiAweDkKLSNkZWZpbmUgVFNDX01P
REVfVEVNUDEgMHhhCi0jZGVmaW5lIFRTQ19NT0RFX1BPUlRfU0NBTiAweGIKLSNkZWZpbmUgVFND
X01PREVfVEVNUDIgMHhjCi0jZGVmaW5lIFRTQ19NT0RFX1hYX0RSViAweGQKLSNkZWZpbmUgVFND
X01PREVfWVlfRFJWIDB4ZQotI2RlZmluZSBUU0NfTU9ERV9ZWF9EUlYgMHhmCisjZGVmaW5lIFRT
Q19NT0RFX05PX1NDQU4gICAgMHgwCisjZGVmaW5lIFRTQ19NT0RFX1hZX1NDQU4gICAgMHgxCisj
ZGVmaW5lIFRTQ19NT0RFX1hZWl9TQ0FOICAgMHgyCisjZGVmaW5lIFRTQ19NT0RFX1ggICAgICAg
ICAgMHgzCisjZGVmaW5lIFRTQ19NT0RFX1kgICAgICAgICAgMHg0CisjZGVmaW5lIFRTQ19NT0RF
X1ogICAgICAgICAgMHg1CisjZGVmaW5lIFRTQ19NT0RFX0JBVDEgICAgICAgMHg2CisjZGVmaW5l
IFRTQ19NT0RFX0JBVDIgICAgICAgMHg3CisjZGVmaW5lIFRTQ19NT0RFX0FVWCAgICAgICAgMHg4
CisjZGVmaW5lIFRTQ19NT0RFX0FVWF9TQ0FOICAgMHg5CisjZGVmaW5lIFRTQ19NT0RFX1RFTVAx
ICAgICAgMHhhCisjZGVmaW5lIFRTQ19NT0RFX1BPUlRfU0NBTiAgMHhiCisjZGVmaW5lIFRTQ19N
T0RFX1RFTVAyICAgICAgMHhjCisjZGVmaW5lIFRTQ19NT0RFX1hYX0RSViAgICAgMHhkCisjZGVm
aW5lIFRTQ19NT0RFX1lZX0RSViAgICAgMHhlCisjZGVmaW5lIFRTQ19NT0RFX1lYX0RSViAgICAg
MHhmCgogc3RhdGljIGNvbnN0IHVpbnQxNl90IG1vZGVfcmVnc1sxNl0gPTNEIHsKLSAgICAweDAw
MDAsIC8qIE5vIHNjYW4gKi8KLSAgICAweDA2MDAsIC8qIFgsIFkgc2NhbiAqLwotICAgIDB4MDc4
MCwgLyogWCwgWSwgWiBzY2FuICovCi0gICAgMHgwNDAwLCAvKiBYICovCi0gICAgMHgwMjAwLCAv
KiBZICovCi0gICAgMHgwMTgwLCAvKiBaICovCi0gICAgMHgwMDQwLCAvKiBCQVQxICovCi0gICAg
MHgwMDMwLCAvKiBCQVQyICovCi0gICAgMHgwMDEwLCAvKiBBVVggKi8KLSAgICAweDAwMTAsIC8q
IEFVWCBzY2FuICovCi0gICAgMHgwMDA0LCAvKiBURU1QMSAqLwotICAgIDB4MDA3MCwgLyogUG9y
dCBzY2FuICovCi0gICAgMHgwMDAyLCAvKiBURU1QMiAqLwotICAgIDB4MDAwMCwgLyogWCssIFgt
IGRyaXZlcnMgKi8KLSAgICAweDAwMDAsIC8qIFkrLCBZLSBkcml2ZXJzICovCi0gICAgMHgwMDAw
LCAvKiBZKywgWC0gZHJpdmVycyAqLworICAgIDB4MDAwMCwgLyogTm8gc2NhbiAqLworICAgIDB4
MDYwMCwgLyogWCwgWSBzY2FuICovCisgICAgMHgwNzgwLCAvKiBYLCBZLCBaIHNjYW4gKi8KKyAg
ICAweDA0MDAsIC8qIFggKi8KKyAgICAweDAyMDAsIC8qIFkgKi8KKyAgICAweDAxODAsIC8qIFog
Ki8KKyAgICAweDAwNDAsIC8qIEJBVDEgKi8KKyAgICAweDAwMzAsIC8qIEJBVDIgKi8KKyAgICAw
eDAwMTAsIC8qIEFVWCAqLworICAgIDB4MDAxMCwgLyogQVVYIHNjYW4gKi8KKyAgICAweDAwMDQs
IC8qIFRFTVAxICovCisgICAgMHgwMDcwLCAvKiBQb3J0IHNjYW4gKi8KKyAgICAweDAwMDIsIC8q
IFRFTVAyICovCisgICAgMHgwMDAwLCAvKiBYKywgWC0gZHJpdmVycyAqLworICAgIDB4MDAwMCwg
LyogWSssIFktIGRyaXZlcnMgKi8KKyAgICAweDAwMDAsIC8qIFkrLCBYLSBkcml2ZXJzICovCiB9
OwoKLSNkZWZpbmUgWF9UUkFOU0ZPUk0ocykgXAorI2RlZmluZSBYX1RSQU5TRk9STShzKSAgICAg
IFwKICAgICAoKHMtPnkgKiBzLT50clswXSAtIHMtPnggKiBzLT50clsxXSkgLyBzLT50clsyXSAr
IHMtPnRyWzNdKQotI2RlZmluZSBZX1RSQU5TRk9STShzKSBcCisjZGVmaW5lIFlfVFJBTlNGT1JN
KHMpICAgICAgXAogICAgICgocy0+eSAqIHMtPnRyWzRdIC0gcy0+eCAqIHMtPnRyWzVdKSAvIHMt
PnRyWzZdICsgcy0+dHJbN10pCi0jZGVmaW5lIFoxX1RSQU5TRk9STShzKSBcCisjZGVmaW5lIFox
X1RSQU5TRk9STShzKSAgICAgXAogICAgICgoNDAwIC0gKChzKS0+eCA+PiA3KSArICgocyktPnBy
ZXNzdXJlIDw8IDEwKSkgPDwgNCkKLSNkZWZpbmUgWjJfVFJBTlNGT1JNKHMpIFwKKyNkZWZpbmUg
WjJfVFJBTlNGT1JNKHMpICAgICBcCiAgICAgKCg0MDAwICsgKChzKS0+eSA+PiA3KSAtICgocykt
PnByZXNzdXJlIDw8IDEwKSkgPDwgNCkKCi0jZGVmaW5lIEJBVDFfVkFMIDB4ODY2MAotI2RlZmlu
ZSBCQVQyX1ZBTCAweDAwMDAKLSNkZWZpbmUgQVVYMV9WQUwgMHgzNWMwCi0jZGVmaW5lIEFVWDJf
VkFMIDB4ZmZmZgotI2RlZmluZSBURU1QMV9WQUwgMHg4YzcwCi0jZGVmaW5lIFRFTVAyX1ZBTCAw
eGE1YjAKKyNkZWZpbmUgQkFUMV9WQUwgICAgICAweDg2NjAKKyNkZWZpbmUgQkFUMl9WQUwgICAg
ICAweDAwMDAKKyNkZWZpbmUgQVVYMV9WQUwgICAgICAweDM1YzAKKyNkZWZpbmUgQVVYMl9WQUwg
ICAgICAweGZmZmYKKyNkZWZpbmUgVEVNUDFfVkFMICAgICAweDhjNzAKKyNkZWZpbmUgVEVNUDJf
VkFMICAgICAweGE1YjAKCi0jZGVmaW5lIFRTQ19QT1dFUk9GRl9ERUxBWSA1MAotI2RlZmluZSBU
U0NfU09GVFNURVBfREVMQVkgNTAKKyNkZWZpbmUgVFNDX1BPV0VST0ZGX0RFTEFZICAgIDUwCisj
ZGVmaW5lIFRTQ19TT0ZUU1RFUF9ERUxBWSAgICA1MAoKIHN0YXRpYyB2b2lkIHRzYzIxMHhfcmVz
ZXQoVFNDMjEweFN0YXRlICpzKQogewpAQCAtMjI0LDM0ICsyMjQsMzQgQEAgdHlwZWRlZiBzdHJ1
Y3QgewogICAgIGludCBmc3JlZjsKIH0gVFNDMjEweFJhdGVJbmZvOwoKLS8qICB7IHJhdGUsICAg
ZHNvciwgZnNyZWYgfSAqLworLyogIHsgcmF0ZSwgICBkc29yLCBmc3JlZiB9ICovCiBzdGF0aWMg
Y29uc3QgVFNDMjEweFJhdGVJbmZvIHRzYzIxMDJfcmF0ZXNbXSA9M0QgewogICAgIC8qIEZzcmVm
IC8gNi4wICovCi0gICAgeyA3MzUwLCA2MywgMSB9LAotICAgIHsgODAwMCwgNjMsIDAgfSwKKyAg
ICB7IDczNTAsIDYzLCAxIH0sCisgICAgeyA4MDAwLCA2MywgMCB9LAogICAgIC8qIEZzcmVmIC8g
Ni4wICovCi0gICAgeyA3MzUwLCA1NCwgMSB9LAotICAgIHsgODAwMCwgNTQsIDAgfSwKKyAgICB7
IDczNTAsIDU0LCAxIH0sCisgICAgeyA4MDAwLCA1NCwgMCB9LAogICAgIC8qIEZzcmVmIC8gNS4w
ICovCi0gICAgeyA4ODIwLCA0NSwgMSB9LAotICAgIHsgOTYwMCwgNDUsIDAgfSwKKyAgICB7IDg4
MjAsIDQ1LCAxIH0sCisgICAgeyA5NjAwLCA0NSwgMCB9LAogICAgIC8qIEZzcmVmIC8gNC4wICov
Ci0gICAgeyAxMTAyNSwgMzYsIDEgfSwKLSAgICB7IDEyMDAwLCAzNiwgMCB9LAorICAgIHsgMTEw
MjUsIDM2LCAxIH0sCisgICAgeyAxMjAwMCwgMzYsIDAgfSwKICAgICAvKiBGc3JlZiAvIDMuMCAq
LwotICAgIHsgMTQ3MDAsIDI3LCAxIH0sCi0gICAgeyAxNjAwMCwgMjcsIDAgfSwKKyAgICB7IDE0
NzAwLCAyNywgMSB9LAorICAgIHsgMTYwMDAsIDI3LCAwIH0sCiAgICAgLyogRnNyZWYgLyAyLjAg
Ki8KLSAgICB7IDIyMDUwLCAxOCwgMSB9LAotICAgIHsgMjQwMDAsIDE4LCAwIH0sCisgICAgeyAy
MjA1MCwgMTgsIDEgfSwKKyAgICB7IDI0MDAwLCAxOCwgMCB9LAogICAgIC8qIEZzcmVmIC8gMS41
ICovCi0gICAgeyAyOTQwMCwgOSwgMSB9LAotICAgIHsgMzIwMDAsIDksIDAgfSwKKyAgICB7IDI5
NDAwLCA5LCAxIH0sCisgICAgeyAzMjAwMCwgOSwgMCB9LAogICAgIC8qIEZzcmVmICovCi0gICAg
eyA0NDEwMCwgMCwgMSB9LAotICAgIHsgNDgwMDAsIDAsIDAgfSwKKyAgICB7IDQ0MTAwLCAwLCAx
IH0sCisgICAgeyA0ODAwMCwgMCwgMCB9LAoKLSAgICB7IDAsIDAsIDAgfSwKKyAgICB7IDAsIDAs
IDAgfSwKIH07Cgogc3RhdGljIGlubGluZSB2b2lkIHRzYzIxMHhfb3V0X2ZsdXNoKFRTQzIxMHhT
dGF0ZSAqcywgaW50IGxlbikKQEAgLTI1OSwxMiArMjU5LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCB0c2MyMTB4X291dF9mbHVzaChUU0MyMTB4U3RhdGUgKnMsCmludCBsZW4pCiAgICAgdWludDhf
dCAqZGF0YSA9M0Qgcy0+Y29kZWMub3V0LmZpZm8gKyBzLT5jb2RlYy5vdXQuc3RhcnQ7CiAgICAg
dWludDhfdCAqZW5kID0zRCBkYXRhICsgbGVuOwoKLSAgICB3aGlsZSAoZGF0YSA8IGVuZCkKKyAg
ICB3aGlsZSAoZGF0YSA8IGVuZCkgewogICAgICAgICBkYXRhICs9M0QgQVVEX3dyaXRlKHMtPmRh
Y192b2ljZVswXSwgZGF0YSwgZW5kIC0gZGF0YSkgPzogKGVuZCAtCmRhdGEpOworICAgIH0KCiAg
ICAgcy0+Y29kZWMub3V0LmxlbiAtPTNEIGxlbjsKLSAgICBpZiAocy0+Y29kZWMub3V0LmxlbikK
KyAgICBpZiAocy0+Y29kZWMub3V0LmxlbikgewogICAgICAgICBtZW1tb3ZlKHMtPmNvZGVjLm91
dC5maWZvLCBlbmQsIHMtPmNvZGVjLm91dC5sZW4pOworICAgIH0KICAgICBzLT5jb2RlYy5vdXQu
c3RhcnQgPTNEIDA7CiB9CgpAQCAtMjg1LDExICsyODcsMTIgQEAgc3RhdGljIHZvaWQgdHNjMjEw
Ml9hdWRpb19yYXRlX3VwZGF0ZShUU0MyMTB4U3RhdGUgKnMpCgogICAgIHMtPmNvZGVjLnR4X3Jh
dGUgPTNEIDA7CiAgICAgcy0+Y29kZWMucnhfcmF0ZSA9M0QgMDsKLSAgICBpZiAocy0+ZGFjX3Bv
d2VyICYgKDEgPDwgMTUpKSAvKiBQV0ROQyAqLworICAgIGlmIChzLT5kYWNfcG93ZXIgJiAoMSA8
PCAxNSkpIHsgICAgIC8qIFBXRE5DICovCiAgICAgICAgIHJldHVybjsKKyAgIH0KCi0gICAgZm9y
IChyYXRlID0zRCB0c2MyMTAyX3JhdGVzOyByYXRlLT5yYXRlOyByYXRlICsrKQotICAgICAgICBp
ZiAocmF0ZS0+ZHNvciA9M0Q9M0QgKHMtPmF1ZGlvX2N0cmwxICYgMHgzZikgJiYgLyogREFDRlMg
Ki8KKyAgICBmb3IgKHJhdGUgPTNEIHRzYzIxMDJfcmF0ZXM7IHJhdGUtPnJhdGU7IHJhdGUrKykK
KyAgICAgICAgaWYgKHJhdGUtPmRzb3IgPTNEPTNEIChzLT5hdWRpb19jdHJsMSAmIDB4M2YpICYm
ICAgIC8qIERBQ0ZTICovCiAgICAgICAgICAgICAgICAgICAgICAgICByYXRlLT5mc3JlZiA9M0Q9
M0QgKChzLT5hdWRpb19jdHJsMyA+PiAxMykgJiAxKSkvKgpSRUZGUyAqLwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgaWYgKCFyYXRlLT5yYXRlKSB7CkBAIC0zMTUsMTAgKzMxOCwxMSBAQCBzdGF0
aWMgdm9pZCB0c2MyMTAyX2F1ZGlvX291dHB1dF91cGRhdGUoVFNDMjEweFN0YXRlCipzKQogICAg
IHMtPmNvZGVjLmN0cyA9M0QgMDsKCiAgICAgZW5hYmxlID0zRAotICAgICAgICAgICAgKH5zLT5k
YWNfcG93ZXIgJiAoMSA8PCAxNSkpICYmIC8qIFBXRE5DICovCi0gICAgICAgICAgICAofnMtPmRh
Y19wb3dlciAmICgxIDw8IDEwKSk7IC8qIERBUFdETiAqLwotICAgIGlmICghZW5hYmxlIHx8ICFz
LT5jb2RlYy50eF9yYXRlKQorICAgICAgICAgICAgKH5zLT5kYWNfcG93ZXIgJiAoMSA8PCAxNSkp
ICYmICAgICAvKiBQV0ROQyAqLworICAgICAgICAgICAgKH5zLT5kYWNfcG93ZXIgJiAoMSA8PCAx
MCkpOyAgICAgICAvKiBEQVBXRE4gKi8KKyAgICBpZiAoIWVuYWJsZSB8fCAhcy0+Y29kZWMudHhf
cmF0ZSkgewogICAgICAgICByZXR1cm47CisgICAgfQoKICAgICAvKiBGb3JjZSBvdXIgb3duIHNh
bXBsaW5nIHJhdGUgZXZlbiBpbiBzbGF2ZSBEQUMgbW9kZSAqLwogICAgIGZtdC5lbmRpYW5uZXNz
ID0zRCAwOwpAQCAtMzM3LDI4ICszNDEsMjggQEAgc3RhdGljIHZvaWQgdHNjMjEwMl9hdWRpb19v
dXRwdXRfdXBkYXRlKFRTQzIxMHhTdGF0ZQoqcykKIHN0YXRpYyB1aW50MTZfdCB0c2MyMTAyX2Rh
dGFfcmVnaXN0ZXJfcmVhZChUU0MyMTB4U3RhdGUgKnMsIGludCByZWcpCiB7CiAgICAgc3dpdGNo
IChyZWcpIHsKLSAgICBjYXNlIDB4MDA6IC8qIFggKi8KKyAgICBjYXNlIDB4MDA6ICAvKiBYICov
CiAgICAgICAgIHMtPmRhdiAmPTNEIDB4ZmJmZjsKICAgICAgICAgcmV0dXJuIFRTQ19DVVRfUkVT
T0xVVElPTihYX1RSQU5TRk9STShzKSwgcy0+cHJlY2lzaW9uKSArCiAgICAgICAgICAgICAgICAg
KHMtPm5vaXNlICYgMyk7CgotICAgIGNhc2UgMHgwMTogLyogWSAqLwotICAgICAgICBzLT5ub2lz
ZSArKzsKKyAgICBjYXNlIDB4MDE6ICAvKiBZICovCisgICAgICAgIHMtPm5vaXNlKys7CiAgICAg
ICAgIHMtPmRhdiAmPTNEIDB4ZmRmZjsKICAgICAgICAgcmV0dXJuIFRTQ19DVVRfUkVTT0xVVElP
TihZX1RSQU5TRk9STShzKSwgcy0+cHJlY2lzaW9uKSBeCiAgICAgICAgICAgICAgICAgKHMtPm5v
aXNlICYgMyk7CgotICAgIGNhc2UgMHgwMjogLyogWjEgKi8KKyAgICBjYXNlIDB4MDI6ICAvKiBa
MSAqLwogICAgICAgICBzLT5kYXYgJj0zRCAweGZlZmY7CiAgICAgICAgIHJldHVybiBUU0NfQ1VU
X1JFU09MVVRJT04oWjFfVFJBTlNGT1JNKHMpLCBzLT5wcmVjaXNpb24pIC0KICAgICAgICAgICAg
ICAgICAocy0+bm9pc2UgJiAzKTsKCi0gICAgY2FzZSAweDAzOiAvKiBaMiAqLworICAgIGNhc2Ug
MHgwMzogIC8qIFoyICovCiAgICAgICAgIHMtPmRhdiAmPTNEIDB4ZmY3ZjsKICAgICAgICAgcmV0
dXJuIFRTQ19DVVRfUkVTT0xVVElPTihaMl9UUkFOU0ZPUk0ocyksIHMtPnByZWNpc2lvbikgfAog
ICAgICAgICAgICAgICAgIChzLT5ub2lzZSAmIDMpOwoKLSAgICBjYXNlIDB4MDQ6IC8qIEtQRGF0
YSAqLworICAgIGNhc2UgMHgwNDogIC8qIEtQRGF0YSAqLwogICAgICAgICBpZiAoKHMtPm1vZGVs
ICYgMHhmZjAwKSA9M0Q9M0QgMHgyMzAwKSB7CiAgICAgICAgICAgICBpZiAocy0+a2IuaW50ciAm
JiAocy0+a2IubW9kZSAmIDIpKSB7CiAgICAgICAgICAgICAgICAgcy0+a2IuaW50ciA9M0QgMDsK
QEAgLTM2OSwzNCArMzczLDM0IEBAIHN0YXRpYyB1aW50MTZfdAp0c2MyMTAyX2RhdGFfcmVnaXN0
ZXJfcmVhZChUU0MyMTB4U3RhdGUgKnMsIGludCByZWcpCgogICAgICAgICByZXR1cm4gMHhmZmZm
OwoKLSAgICBjYXNlIDB4MDU6IC8qIEJBVDEgKi8KKyAgICBjYXNlIDB4MDU6ICAvKiBCQVQxICov
CiAgICAgICAgIHMtPmRhdiAmPTNEIDB4ZmZiZjsKICAgICAgICAgcmV0dXJuIFRTQ19DVVRfUkVT
T0xVVElPTihCQVQxX1ZBTCwgcy0+cHJlY2lzaW9uKSArCiAgICAgICAgICAgICAgICAgKHMtPm5v
aXNlICYgNik7CgotICAgIGNhc2UgMHgwNjogLyogQkFUMiAqLworICAgIGNhc2UgMHgwNjogIC8q
IEJBVDIgKi8KICAgICAgICAgcy0+ZGF2ICY9M0QgMHhmZmRmOwogICAgICAgICByZXR1cm4gVFND
X0NVVF9SRVNPTFVUSU9OKEJBVDJfVkFMLCBzLT5wcmVjaXNpb24pOwoKLSAgICBjYXNlIDB4MDc6
IC8qIEFVWDEgKi8KKyAgICBjYXNlIDB4MDc6ICAvKiBBVVgxICovCiAgICAgICAgIHMtPmRhdiAm
PTNEIDB4ZmZlZjsKICAgICAgICAgcmV0dXJuIFRTQ19DVVRfUkVTT0xVVElPTihBVVgxX1ZBTCwg
cy0+cHJlY2lzaW9uKTsKCi0gICAgY2FzZSAweDA4OiAvKiBBVVgyICovCisgICAgY2FzZSAweDA4
OiAgLyogQVVYMiAqLwogICAgICAgICBzLT5kYXYgJj0zRCAweGZmZjc7CiAgICAgICAgIHJldHVy
biAweGZmZmY7CgotICAgIGNhc2UgMHgwOTogLyogVEVNUDEgKi8KKyAgICBjYXNlIDB4MDk6ICAv
KiBURU1QMSAqLwogICAgICAgICBzLT5kYXYgJj0zRCAweGZmZmI7CiAgICAgICAgIHJldHVybiBU
U0NfQ1VUX1JFU09MVVRJT04oVEVNUDFfVkFMLCBzLT5wcmVjaXNpb24pIC0KICAgICAgICAgICAg
ICAgICAocy0+bm9pc2UgJiA1KTsKCi0gICAgY2FzZSAweDBhOiAvKiBURU1QMiAqLworICAgIGNh
c2UgMHgwYTogIC8qIFRFTVAyICovCiAgICAgICAgIHMtPmRhdiAmPTNEIDB4ZmZmZDsKICAgICAg
ICAgcmV0dXJuIFRTQ19DVVRfUkVTT0xVVElPTihURU1QMl9WQUwsIHMtPnByZWNpc2lvbikgXgog
ICAgICAgICAgICAgICAgIChzLT5ub2lzZSAmIDMpOwoKLSAgICBjYXNlIDB4MGI6IC8qIERBQyAq
LworICAgIGNhc2UgMHgwYjogIC8qIERBQyAqLwogICAgICAgICBzLT5kYXYgJj0zRCAweGZmZmU7
CiAgICAgICAgIHJldHVybiAweGZmZmY7CgpAQCAtNDEzLDExICs0MTcsMTEgQEAgc3RhdGljIHVp
bnQxNl90IHRzYzIxMDJfY29udHJvbF9yZWdpc3Rlcl9yZWFkKAogICAgICAgICAgICAgICAgIFRT
QzIxMHhTdGF0ZSAqcywgaW50IHJlZykKIHsKICAgICBzd2l0Y2ggKHJlZykgewotICAgIGNhc2Ug
MHgwMDogLyogVFNDIEFEQyAqLworICAgIGNhc2UgMHgwMDogIC8qIFRTQyBBREMgKi8KICAgICAg
ICAgcmV0dXJuIChzLT5wcmVzc3VyZSA8PCAxNSkgfCAoKCFzLT5idXN5KSA8PCAxNCkgfAotICAg
ICAgICAgICAgICAgIChzLT5uZXh0ZnVuY3Rpb24gPDwgMTApIHwgKHMtPm5leHRwcmVjaXNpb24g
PDwgOCkgfApzLT5maWx0ZXI7CisgICAgICAgICAgICAgICAgKHMtPm5leHRmdW5jdGlvbiA8PCAx
MCkgfCAocy0+bmV4dHByZWNpc2lvbiA8PCA4KSB8CnMtPmZpbHRlcjsKCi0gICAgY2FzZSAweDAx
OiAvKiBTdGF0dXMgLyBLZXlwYWQgQ29udHJvbCAqLworICAgIGNhc2UgMHgwMTogIC8qIFN0YXR1
cyAvIEtleXBhZCBDb250cm9sICovCiAgICAgICAgIGlmICgocy0+bW9kZWwgJiAweGZmMDApID0z
RD0zRCAweDIxMDApCiAgICAgICAgICAgICByZXR1cm4gKHMtPnBpbl9mdW5jIDw8IDE0KSB8ICgo
IXMtPmVuYWJsZWQpIDw8IDEzKSB8CiAgICAgICAgICAgICAgICAgICAgIChzLT5ob3N0X21vZGUg
PDwgMTIpIHwgKCghIXMtPmRhdikgPDwgMTEpIHwgcy0+ZGF2OwpAQCAtNDI1LDI5ICs0MjksMzIg
QEAgc3RhdGljIHVpbnQxNl90IHRzYzIxMDJfY29udHJvbF9yZWdpc3Rlcl9yZWFkKAogICAgICAg
ICAgICAgcmV0dXJuIChzLT5rYi5pbnRyIDw8IDE1KSB8ICgocy0+a2Iuc2NhbiB8fCAhcy0+a2Iu
ZG93bikgPDwKMTQpIHwKICAgICAgICAgICAgICAgICAgICAgKHMtPmtiLmRlYm91bmNlIDw8IDEx
KTsKCi0gICAgY2FzZSAweDAyOiAvKiBEQUMgQ29udHJvbCAqLwotICAgICAgICBpZiAoKHMtPm1v
ZGVsICYgMHhmZjAwKSA9M0Q9M0QgMHgyMzAwKQorICAgIGNhc2UgMHgwMjogIC8qIERBQyBDb250
cm9sICovCisgICAgICAgIGlmICgocy0+bW9kZWwgJiAweGZmMDApID0zRD0zRCAweDIzMDApIHsK
ICAgICAgICAgICAgIHJldHVybiBzLT5kYWNfcG93ZXIgJiAweDgwMDA7Ci0gICAgICAgIGVsc2UK
KyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGdvdG8gYmFkX3JlZzsKKyAgICAgICAgfQoK
LSAgICBjYXNlIDB4MDM6IC8qIFJlZmVyZW5jZSAqLworICAgIGNhc2UgMHgwMzogIC8qIFJlZmVy
ZW5jZSAqLwogICAgICAgICByZXR1cm4gcy0+cmVmOwoKLSAgICBjYXNlIDB4MDQ6IC8qIFJlc2V0
ICovCisgICAgY2FzZSAweDA0OiAgLyogUmVzZXQgKi8KICAgICAgICAgcmV0dXJuIDB4ZmZmZjsK
Ci0gICAgY2FzZSAweDA1OiAvKiBDb25maWd1cmF0aW9uICovCisgICAgY2FzZSAweDA1OiAgLyog
Q29uZmlndXJhdGlvbiAqLwogICAgICAgICByZXR1cm4gcy0+dGltaW5nOwoKLSAgICBjYXNlIDB4
MDY6IC8qIFNlY29uZGFyeSBjb25maWd1cmF0aW9uICovCi0gICAgICAgIGlmICgocy0+bW9kZWwg
JiAweGZmMDApID0zRD0zRCAweDIxMDApCisgICAgY2FzZSAweDA2OiAgLyogU2Vjb25kYXJ5IGNv
bmZpZ3VyYXRpb24gKi8KKyAgICAgICAgaWYgKChzLT5tb2RlbCAmIDB4ZmYwMCkgPTNEPTNEIDB4
MjEwMCkgewogICAgICAgICAgICAgZ290byBiYWRfcmVnOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybiAoKCFzLT5kYXYpIDw8IDE1KSB8ICgocy0+a2IubW9kZSAmIDEpIDw8IDE0KSB8IHMtPnBs
bFsyXTsKCi0gICAgY2FzZSAweDEwOiAvKiBLZXlwYWQgTWFzayAqLwotICAgICAgICBpZiAoKHMt
Pm1vZGVsICYgMHhmZjAwKSA9M0Q9M0QgMHgyMTAwKQorICAgIGNhc2UgMHgxMDogIC8qIEtleXBh
ZCBNYXNrICovCisgICAgICAgIGlmICgocy0+bW9kZWwgJiAweGZmMDApID0zRD0zRCAweDIxMDAp
IHsKICAgICAgICAgICAgIGdvdG8gYmFkX3JlZzsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4g
cy0+a2IubWFzazsKCiAgICAgZGVmYXVsdDoKQEAgLTQ2NiwxOSArNDczLDE5IEBAIHN0YXRpYyB1
aW50MTZfdAp0c2MyMTAyX2F1ZGlvX3JlZ2lzdGVyX3JlYWQoVFNDMjEweFN0YXRlICpzLCBpbnQg
cmVnKQogICAgIHVpbnQxNl90IHZhbDsKCiAgICAgc3dpdGNoIChyZWcpIHsKLSAgICBjYXNlIDB4
MDA6IC8qIEF1ZGlvIENvbnRyb2wgMSAqLworICAgIGNhc2UgMHgwMDogIC8qIEF1ZGlvIENvbnRy
b2wgMSAqLwogICAgICAgICByZXR1cm4gcy0+YXVkaW9fY3RybDE7CgogICAgIGNhc2UgMHgwMToK
ICAgICAgICAgcmV0dXJuIDB4ZmYwMDsKCi0gICAgY2FzZSAweDAyOiAvKiBEQUMgVm9sdW1lIENv
bnRyb2wgKi8KKyAgICBjYXNlIDB4MDI6ICAvKiBEQUMgVm9sdW1lIENvbnRyb2wgKi8KICAgICAg
ICAgcmV0dXJuIHMtPnZvbHVtZTsKCiAgICAgY2FzZSAweDAzOgogICAgICAgICByZXR1cm4gMHg4
YjAwOwoKLSAgICBjYXNlIDB4MDQ6IC8qIEF1ZGlvIENvbnRyb2wgMiAqLworICAgIGNhc2UgMHgw
NDogIC8qIEF1ZGlvIENvbnRyb2wgMiAqLwogICAgICAgICBsX2NoID0zRCAxOwogICAgICAgICBy
X2NoID0zRCAxOwogICAgICAgICBpZiAocy0+c29mdHN0ZXAgJiYgIShzLT5kYWNfcG93ZXIgJiAo
MSA8PCAxMCkpKSB7CkBAIC00OTAsNDYgKzQ5Nyw0NiBAQCBzdGF0aWMgdWludDE2X3QKdHNjMjEw
Ml9hdWRpb19yZWdpc3Rlcl9yZWFkKFRTQzIxMHhTdGF0ZSAqcywgaW50IHJlZykKCiAgICAgICAg
IHJldHVybiBzLT5hdWRpb19jdHJsMiB8IChsX2NoIDw8IDMpIHwgKHJfY2ggPDwgMik7CgotICAg
IGNhc2UgMHgwNTogLyogU3RlcmVvIERBQyBQb3dlciBDb250cm9sICovCisgICAgY2FzZSAweDA1
OiAgLyogU3RlcmVvIERBQyBQb3dlciBDb250cm9sICovCiAgICAgICAgIHJldHVybiAweDJhYTAg
fCBzLT5kYWNfcG93ZXIgfAogICAgICAgICAgICAgICAgICgoKHMtPmRhY19wb3dlciAmICgxIDw8
IDEwKSkgJiYKICAgICAgICAgICAgICAgICAgIChxZW11X2Nsb2NrX2dldF9ucyhRRU1VX0NMT0NL
X1ZJUlRVQUwpID4KICAgICAgICAgICAgICAgICAgICBzLT5wb3dlcmRvd24gKyBUU0NfUE9XRVJP
RkZfREVMQVkpKSA8PCA2KTsKCi0gICAgY2FzZSAweDA2OiAvKiBBdWRpbyBDb250cm9sIDMgKi8K
KyAgICBjYXNlIDB4MDY6ICAvKiBBdWRpbyBDb250cm9sIDMgKi8KICAgICAgICAgdmFsID0zRCBz
LT5hdWRpb19jdHJsMyB8IDB4MDAwMTsKICAgICAgICAgcy0+YXVkaW9fY3RybDMgJj0zRCAweGZm
M2Y7CiAgICAgICAgIHJldHVybiB2YWw7CgotICAgIGNhc2UgMHgwNzogLyogTENIX0JBU1NfQk9P
U1RfTjAgKi8KLSAgICBjYXNlIDB4MDg6IC8qIExDSF9CQVNTX0JPT1NUX04xICovCi0gICAgY2Fz
ZSAweDA5OiAvKiBMQ0hfQkFTU19CT09TVF9OMiAqLwotICAgIGNhc2UgMHgwYTogLyogTENIX0JB
U1NfQk9PU1RfTjMgKi8KLSAgICBjYXNlIDB4MGI6IC8qIExDSF9CQVNTX0JPT1NUX040ICovCi0g
ICAgY2FzZSAweDBjOiAvKiBMQ0hfQkFTU19CT09TVF9ONSAqLwotICAgIGNhc2UgMHgwZDogLyog
TENIX0JBU1NfQk9PU1RfRDEgKi8KLSAgICBjYXNlIDB4MGU6IC8qIExDSF9CQVNTX0JPT1NUX0Qy
ICovCi0gICAgY2FzZSAweDBmOiAvKiBMQ0hfQkFTU19CT09TVF9ENCAqLwotICAgIGNhc2UgMHgx
MDogLyogTENIX0JBU1NfQk9PU1RfRDUgKi8KLSAgICBjYXNlIDB4MTE6IC8qIFJDSF9CQVNTX0JP
T1NUX04wICovCi0gICAgY2FzZSAweDEyOiAvKiBSQ0hfQkFTU19CT09TVF9OMSAqLwotICAgIGNh
c2UgMHgxMzogLyogUkNIX0JBU1NfQk9PU1RfTjIgKi8KLSAgICBjYXNlIDB4MTQ6IC8qIFJDSF9C
QVNTX0JPT1NUX04zICovCi0gICAgY2FzZSAweDE1OiAvKiBSQ0hfQkFTU19CT09TVF9ONCAqLwot
ICAgIGNhc2UgMHgxNjogLyogUkNIX0JBU1NfQk9PU1RfTjUgKi8KLSAgICBjYXNlIDB4MTc6IC8q
IFJDSF9CQVNTX0JPT1NUX0QxICovCi0gICAgY2FzZSAweDE4OiAvKiBSQ0hfQkFTU19CT09TVF9E
MiAqLwotICAgIGNhc2UgMHgxOTogLyogUkNIX0JBU1NfQk9PU1RfRDQgKi8KLSAgICBjYXNlIDB4
MWE6IC8qIFJDSF9CQVNTX0JPT1NUX0Q1ICovCisgICAgY2FzZSAweDA3OiAgLyogTENIX0JBU1Nf
Qk9PU1RfTjAgKi8KKyAgICBjYXNlIDB4MDg6ICAvKiBMQ0hfQkFTU19CT09TVF9OMSAqLworICAg
IGNhc2UgMHgwOTogIC8qIExDSF9CQVNTX0JPT1NUX04yICovCisgICAgY2FzZSAweDBhOiAgLyog
TENIX0JBU1NfQk9PU1RfTjMgKi8KKyAgICBjYXNlIDB4MGI6ICAvKiBMQ0hfQkFTU19CT09TVF9O
NCAqLworICAgIGNhc2UgMHgwYzogIC8qIExDSF9CQVNTX0JPT1NUX041ICovCisgICAgY2FzZSAw
eDBkOiAgLyogTENIX0JBU1NfQk9PU1RfRDEgKi8KKyAgICBjYXNlIDB4MGU6ICAvKiBMQ0hfQkFT
U19CT09TVF9EMiAqLworICAgIGNhc2UgMHgwZjogIC8qIExDSF9CQVNTX0JPT1NUX0Q0ICovCisg
ICAgY2FzZSAweDEwOiAgLyogTENIX0JBU1NfQk9PU1RfRDUgKi8KKyAgICBjYXNlIDB4MTE6ICAv
KiBSQ0hfQkFTU19CT09TVF9OMCAqLworICAgIGNhc2UgMHgxMjogIC8qIFJDSF9CQVNTX0JPT1NU
X04xICovCisgICAgY2FzZSAweDEzOiAgLyogUkNIX0JBU1NfQk9PU1RfTjIgKi8KKyAgICBjYXNl
IDB4MTQ6ICAvKiBSQ0hfQkFTU19CT09TVF9OMyAqLworICAgIGNhc2UgMHgxNTogIC8qIFJDSF9C
QVNTX0JPT1NUX040ICovCisgICAgY2FzZSAweDE2OiAgLyogUkNIX0JBU1NfQk9PU1RfTjUgKi8K
KyAgICBjYXNlIDB4MTc6ICAvKiBSQ0hfQkFTU19CT09TVF9EMSAqLworICAgIGNhc2UgMHgxODog
IC8qIFJDSF9CQVNTX0JPT1NUX0QyICovCisgICAgY2FzZSAweDE5OiAgLyogUkNIX0JBU1NfQk9P
U1RfRDQgKi8KKyAgICBjYXNlIDB4MWE6ICAvKiBSQ0hfQkFTU19CT09TVF9ENSAqLwogICAgICAg
ICByZXR1cm4gcy0+ZmlsdGVyX2RhdGFbcmVnIC0gMHgwN107CgotICAgIGNhc2UgMHgxYjogLyog
UExMIFByb2dyYW1tYWJpbGl0eSAxICovCisgICAgY2FzZSAweDFiOiAgLyogUExMIFByb2dyYW1t
YWJpbGl0eSAxICovCiAgICAgICAgIHJldHVybiBzLT5wbGxbMF07CgotICAgIGNhc2UgMHgxYzog
LyogUExMIFByb2dyYW1tYWJpbGl0eSAyICovCisgICAgY2FzZSAweDFjOiAgLyogUExMIFByb2dy
YW1tYWJpbGl0eSAyICovCiAgICAgICAgIHJldHVybiBzLT5wbGxbMV07CgotICAgIGNhc2UgMHgx
ZDogLyogQXVkaW8gQ29udHJvbCA0ICovCisgICAgY2FzZSAweDFkOiAgLyogQXVkaW8gQ29udHJv
bCA0ICovCiAgICAgICAgIHJldHVybiAoIXMtPnNvZnRzdGVwKSA8PCAxNDsKCiAgICAgZGVmYXVs
dDoKQEAgLTU0NSwxNiArNTUyLDE2IEBAIHN0YXRpYyB2b2lkIHRzYzIxMDJfZGF0YV9yZWdpc3Rl
cl93cml0ZSgKICAgICAgICAgICAgICAgICBUU0MyMTB4U3RhdGUgKnMsIGludCByZWcsIHVpbnQx
Nl90IHZhbHVlKQogewogICAgIHN3aXRjaCAocmVnKSB7Ci0gICAgY2FzZSAweDAwOiAvKiBYICov
Ci0gICAgY2FzZSAweDAxOiAvKiBZICovCi0gICAgY2FzZSAweDAyOiAvKiBaMSAqLwotICAgIGNh
c2UgMHgwMzogLyogWjIgKi8KLSAgICBjYXNlIDB4MDU6IC8qIEJBVDEgKi8KLSAgICBjYXNlIDB4
MDY6IC8qIEJBVDIgKi8KLSAgICBjYXNlIDB4MDc6IC8qIEFVWDEgKi8KLSAgICBjYXNlIDB4MDg6
IC8qIEFVWDIgKi8KLSAgICBjYXNlIDB4MDk6IC8qIFRFTVAxICovCi0gICAgY2FzZSAweDBhOiAv
KiBURU1QMiAqLworICAgIGNhc2UgMHgwMDogIC8qIFggKi8KKyAgICBjYXNlIDB4MDE6ICAvKiBZ
ICovCisgICAgY2FzZSAweDAyOiAgLyogWjEgKi8KKyAgICBjYXNlIDB4MDM6ICAvKiBaMiAqLwor
ICAgIGNhc2UgMHgwNTogIC8qIEJBVDEgKi8KKyAgICBjYXNlIDB4MDY6ICAvKiBCQVQyICovCisg
ICAgY2FzZSAweDA3OiAgLyogQVVYMSAqLworICAgIGNhc2UgMHgwODogIC8qIEFVWDIgKi8KKyAg
ICBjYXNlIDB4MDk6ICAvKiBURU1QMSAqLworICAgIGNhc2UgMHgwYTogIC8qIFRFTVAyICovCiAg
ICAgICAgIHJldHVybjsKCiAgICAgZGVmYXVsdDoKQEAgLTU2NywxOCArNTc0LDE5IEBAIHN0YXRp
YyB2b2lkIHRzYzIxMDJfY29udHJvbF9yZWdpc3Rlcl93cml0ZSgKICAgICAgICAgICAgICAgICBU
U0MyMTB4U3RhdGUgKnMsIGludCByZWcsIHVpbnQxNl90IHZhbHVlKQogewogICAgIHN3aXRjaCAo
cmVnKSB7Ci0gICAgY2FzZSAweDAwOiAvKiBUU0MgQURDICovCisgICAgY2FzZSAweDAwOiAgLyog
VFNDIEFEQyAqLwogICAgICAgICBzLT5ob3N0X21vZGUgPTNEIHZhbHVlID4+IDE1OwogICAgICAg
ICBzLT5lbmFibGVkID0zRCAhKHZhbHVlICYgMHg0MDAwKTsKLSAgICAgICAgaWYgKHMtPmJ1c3kg
JiYgIXMtPmVuYWJsZWQpCisgICAgICAgIGlmIChzLT5idXN5ICYmICFzLT5lbmFibGVkKSB7CiAg
ICAgICAgICAgICB0aW1lcl9kZWwocy0+dGltZXIpOworICAgICAgICB9CiAgICAgICAgIHMtPmJ1
c3kgPTNEIHMtPmJ1c3kgJiYgcy0+ZW5hYmxlZDsKICAgICAgICAgcy0+bmV4dGZ1bmN0aW9uID0z
RCAodmFsdWUgPj4gMTApICYgMHhmOwogICAgICAgICBzLT5uZXh0cHJlY2lzaW9uID0zRCAodmFs
dWUgPj4gOCkgJiAzOwogICAgICAgICBzLT5maWx0ZXIgPTNEIHZhbHVlICYgMHhmZjsKICAgICAg
ICAgcmV0dXJuOwoKLSAgICBjYXNlIDB4MDE6IC8qIFN0YXR1cyAvIEtleXBhZCBDb250cm9sICov
CisgICAgY2FzZSAweDAxOiAgLyogU3RhdHVzIC8gS2V5cGFkIENvbnRyb2wgKi8KICAgICAgICAg
aWYgKChzLT5tb2RlbCAmIDB4ZmYwMCkgPTNEPTNEIDB4MjEwMCkKICAgICAgICAgICAgIHMtPnBp
bl9mdW5jID0zRCB2YWx1ZSA+PiAxNDsKICAgICAgICAgZWxzZSB7CkBAIC01OTEsNyArNTk5LDcg
QEAgc3RhdGljIHZvaWQgdHNjMjEwMl9jb250cm9sX3JlZ2lzdGVyX3dyaXRlKAogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKCi0gICAgY2FzZSAweDAyOiAvKiBEQUMgQ29udHJvbCAqLworICAg
IGNhc2UgMHgwMjogIC8qIERBQyBDb250cm9sICovCiAgICAgICAgIGlmICgocy0+bW9kZWwgJiAw
eGZmMDApID0zRD0zRCAweDIzMDApIHsKICAgICAgICAgICAgIHMtPmRhY19wb3dlciAmPTNEIDB4
N2ZmZjsKICAgICAgICAgICAgIHMtPmRhY19wb3dlciB8PTNEIDB4ODAwMCAmIHZhbHVlOwpAQCAt
NTk5LDE0ICs2MDcsMTUgQEAgc3RhdGljIHZvaWQgdHNjMjEwMl9jb250cm9sX3JlZ2lzdGVyX3dy
aXRlKAogICAgICAgICAgICAgZ290byBiYWRfcmVnOwogICAgICAgICBicmVhazsKCi0gICAgY2Fz
ZSAweDAzOiAvKiBSZWZlcmVuY2UgKi8KKyAgICBjYXNlIDB4MDM6ICAvKiBSZWZlcmVuY2UgKi8K
ICAgICAgICAgcy0+cmVmID0zRCB2YWx1ZSAmIDB4MWY7CiAgICAgICAgIHJldHVybjsKCi0gICAg
Y2FzZSAweDA0OiAvKiBSZXNldCAqLworICAgIGNhc2UgMHgwNDogIC8qIFJlc2V0ICovCiAgICAg
ICAgIGlmICh2YWx1ZSA9M0Q9M0QgMHhiYjAwKSB7Ci0gICAgICAgICAgICBpZiAocy0+YnVzeSkK
KyAgICAgICAgICAgIGlmIChzLT5idXN5KSB7CiAgICAgICAgICAgICAgICAgdGltZXJfZGVsKHMt
PnRpbWVyKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRzYzIxMHhfcmVzZXQocyk7CiAj
aWZkZWYgVFNDX1ZFUkJPU0UKICAgICAgICAgfSBlbHNlIHsKQEAgLTYxNiw3ICs2MjUsNyBAQCBz
dGF0aWMgdm9pZCB0c2MyMTAyX2NvbnRyb2xfcmVnaXN0ZXJfd3JpdGUoCiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuOwoKLSAgICBjYXNlIDB4MDU6IC8qIENvbmZpZ3VyYXRpb24gKi8KKyAgICBj
YXNlIDB4MDU6ICAvKiBDb25maWd1cmF0aW9uICovCiAgICAgICAgIHMtPnRpbWluZyA9M0QgdmFs
dWUgJiAweDNmOwogI2lmZGVmIFRTQ19WRVJCT1NFCiAgICAgICAgIGlmICh2YWx1ZSAmIH4weDNm
KQpAQCAtNjI1LDE2ICs2MzQsMTggQEAgc3RhdGljIHZvaWQgdHNjMjEwMl9jb250cm9sX3JlZ2lz
dGVyX3dyaXRlKAogI2VuZGlmCiAgICAgICAgIHJldHVybjsKCi0gICAgY2FzZSAweDA2OiAvKiBT
ZWNvbmRhcnkgY29uZmlndXJhdGlvbiAqLwotICAgICAgICBpZiAoKHMtPm1vZGVsICYgMHhmZjAw
KSA9M0Q9M0QgMHgyMTAwKQorICAgIGNhc2UgMHgwNjogIC8qIFNlY29uZGFyeSBjb25maWd1cmF0
aW9uICovCisgICAgICAgIGlmICgocy0+bW9kZWwgJiAweGZmMDApID0zRD0zRCAweDIxMDApIHsK
ICAgICAgICAgICAgIGdvdG8gYmFkX3JlZzsKKyAgICAgICAgfQogICAgICAgICBzLT5rYi5tb2Rl
ID0zRCB2YWx1ZSA+PiAxNDsKICAgICAgICAgcy0+cGxsWzJdID0zRCB2YWx1ZSAmIDB4M2ZmZmY7
CiAgICAgICAgIHJldHVybjsKCi0gICAgY2FzZSAweDEwOiAvKiBLZXlwYWQgTWFzayAqLwotICAg
ICAgICBpZiAoKHMtPm1vZGVsICYgMHhmZjAwKSA9M0Q9M0QgMHgyMTAwKQorICAgIGNhc2UgMHgx
MDogIC8qIEtleXBhZCBNYXNrICovCisgICAgICAgIGlmICgocy0+bW9kZWwgJiAweGZmMDApID0z
RD0zRCAweDIxMDApIHsKICAgICAgICAgICAgIGdvdG8gYmFkX3JlZzsKKyAgICAgICAgfQogICAg
ICAgICBzLT5rYi5tYXNrID0zRCB2YWx1ZTsKICAgICAgICAgcmV0dXJuOwoKQEAgLTY0OSw3ICs2
NjAsNyBAQCBzdGF0aWMgdm9pZCB0c2MyMTAyX2F1ZGlvX3JlZ2lzdGVyX3dyaXRlKAogICAgICAg
ICAgICAgICAgIFRTQzIxMHhTdGF0ZSAqcywgaW50IHJlZywgdWludDE2X3QgdmFsdWUpCiB7CiAg
ICAgc3dpdGNoIChyZWcpIHsKLSAgICBjYXNlIDB4MDA6IC8qIEF1ZGlvIENvbnRyb2wgMSAqLwor
ICAgIGNhc2UgMHgwMDogIC8qIEF1ZGlvIENvbnRyb2wgMSAqLwogICAgICAgICBzLT5hdWRpb19j
dHJsMSA9M0QgdmFsdWUgJiAweDBmM2Y7CiAjaWZkZWYgVFNDX1ZFUkJPU0UKICAgICAgICAgaWYg
KCh2YWx1ZSAmIH4weDBmM2YpIHx8ICgodmFsdWUgJiA3KSAhPTNEICgodmFsdWUgPj4gMykgJiA3
KSkpCkBAIC02NjgsNyArNjc5LDcgQEAgc3RhdGljIHZvaWQgdHNjMjEwMl9hdWRpb19yZWdpc3Rl
cl93cml0ZSgKICNlbmRpZgogICAgICAgICByZXR1cm47CgotICAgIGNhc2UgMHgwMjogLyogREFD
IFZvbHVtZSBDb250cm9sICovCisgICAgY2FzZSAweDAyOiAgLyogREFDIFZvbHVtZSBDb250cm9s
ICovCiAgICAgICAgIHMtPnZvbHVtZSA9M0QgdmFsdWU7CiAgICAgICAgIHMtPnZvbHVtZV9jaGFu
Z2UgPTNEIHFlbXVfY2xvY2tfZ2V0X25zKFFFTVVfQ0xPQ0tfVklSVFVBTCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTY4MSw3ICs2OTIsNyBAQCBzdGF0aWMgdm9pZCB0c2MyMTAyX2F1ZGlvX3JlZ2lz
dGVyX3dyaXRlKAogI2VuZGlmCiAgICAgICAgIHJldHVybjsKCi0gICAgY2FzZSAweDA0OiAvKiBB
dWRpbyBDb250cm9sIDIgKi8KKyAgICBjYXNlIDB4MDQ6ICAvKiBBdWRpbyBDb250cm9sIDIgKi8K
ICAgICAgICAgcy0+YXVkaW9fY3RybDIgPTNEIHZhbHVlICYgMHhmN2YyOwogI2lmZGVmIFRTQ19W
RVJCT1NFCiAgICAgICAgIGlmICh2YWx1ZSAmIH4weGY3ZmQpCkBAIC02OTAsOSArNzAxLDEwIEBA
IHN0YXRpYyB2b2lkIHRzYzIxMDJfYXVkaW9fcmVnaXN0ZXJfd3JpdGUoCiAjZW5kaWYKICAgICAg
ICAgcmV0dXJuOwoKLSAgICBjYXNlIDB4MDU6IC8qIFN0ZXJlbyBEQUMgUG93ZXIgQ29udHJvbCAq
LwotICAgICAgICBpZiAoKHZhbHVlICYgfnMtPmRhY19wb3dlcikgJiAoMSA8PCAxMCkpCisgICAg
Y2FzZSAweDA1OiAgLyogU3RlcmVvIERBQyBQb3dlciBDb250cm9sICovCisgICAgICAgIGlmICgo
dmFsdWUgJiB+cy0+ZGFjX3Bvd2VyKSAmICgxIDw8IDEwKSkgewogICAgICAgICAgICAgcy0+cG93
ZXJkb3duID0zRCBxZW11X2Nsb2NrX2dldF9ucyhRRU1VX0NMT0NLX1ZJUlRVQUwpOworICAgICAg
ICB9CgogICAgICAgICBzLT5kYWNfcG93ZXIgPTNEIHZhbHVlICYgMHg5NTQzOwogI2lmZGVmIFRT
Q19WRVJCT1NFCkBAIC03MDQsNyArNzE2LDcgQEAgc3RhdGljIHZvaWQgdHNjMjEwMl9hdWRpb19y
ZWdpc3Rlcl93cml0ZSgKICAgICAgICAgdHNjMjEwMl9hdWRpb19vdXRwdXRfdXBkYXRlKHMpOwog
ICAgICAgICByZXR1cm47CgotICAgIGNhc2UgMHgwNjogLyogQXVkaW8gQ29udHJvbCAzICovCisg
ICAgY2FzZSAweDA2OiAgLyogQXVkaW8gQ29udHJvbCAzICovCiAgICAgICAgIHMtPmF1ZGlvX2N0
cmwzICY9M0QgMHgwMGMwOwogICAgICAgICBzLT5hdWRpb19jdHJsMyB8PTNEIHZhbHVlICYgMHhm
ODAwOwogI2lmZGVmIFRTQ19WRVJCT1NFCkBAIC03MTUsMzAgKzcyNywzMCBAQCBzdGF0aWMgdm9p
ZCB0c2MyMTAyX2F1ZGlvX3JlZ2lzdGVyX3dyaXRlKAogICAgICAgICB0c2MyMTAyX2F1ZGlvX291
dHB1dF91cGRhdGUocyk7CiAgICAgICAgIHJldHVybjsKCi0gICAgY2FzZSAweDA3OiAvKiBMQ0hf
QkFTU19CT09TVF9OMCAqLwotICAgIGNhc2UgMHgwODogLyogTENIX0JBU1NfQk9PU1RfTjEgKi8K
LSAgICBjYXNlIDB4MDk6IC8qIExDSF9CQVNTX0JPT1NUX04yICovCi0gICAgY2FzZSAweDBhOiAv
KiBMQ0hfQkFTU19CT09TVF9OMyAqLwotICAgIGNhc2UgMHgwYjogLyogTENIX0JBU1NfQk9PU1Rf
TjQgKi8KLSAgICBjYXNlIDB4MGM6IC8qIExDSF9CQVNTX0JPT1NUX041ICovCi0gICAgY2FzZSAw
eDBkOiAvKiBMQ0hfQkFTU19CT09TVF9EMSAqLwotICAgIGNhc2UgMHgwZTogLyogTENIX0JBU1Nf
Qk9PU1RfRDIgKi8KLSAgICBjYXNlIDB4MGY6IC8qIExDSF9CQVNTX0JPT1NUX0Q0ICovCi0gICAg
Y2FzZSAweDEwOiAvKiBMQ0hfQkFTU19CT09TVF9ENSAqLwotICAgIGNhc2UgMHgxMTogLyogUkNI
X0JBU1NfQk9PU1RfTjAgKi8KLSAgICBjYXNlIDB4MTI6IC8qIFJDSF9CQVNTX0JPT1NUX04xICov
Ci0gICAgY2FzZSAweDEzOiAvKiBSQ0hfQkFTU19CT09TVF9OMiAqLwotICAgIGNhc2UgMHgxNDog
LyogUkNIX0JBU1NfQk9PU1RfTjMgKi8KLSAgICBjYXNlIDB4MTU6IC8qIFJDSF9CQVNTX0JPT1NU
X040ICovCi0gICAgY2FzZSAweDE2OiAvKiBSQ0hfQkFTU19CT09TVF9ONSAqLwotICAgIGNhc2Ug
MHgxNzogLyogUkNIX0JBU1NfQk9PU1RfRDEgKi8KLSAgICBjYXNlIDB4MTg6IC8qIFJDSF9CQVNT
X0JPT1NUX0QyICovCi0gICAgY2FzZSAweDE5OiAvKiBSQ0hfQkFTU19CT09TVF9ENCAqLwotICAg
IGNhc2UgMHgxYTogLyogUkNIX0JBU1NfQk9PU1RfRDUgKi8KKyAgICBjYXNlIDB4MDc6ICAvKiBM
Q0hfQkFTU19CT09TVF9OMCAqLworICAgIGNhc2UgMHgwODogIC8qIExDSF9CQVNTX0JPT1NUX04x
ICovCisgICAgY2FzZSAweDA5OiAgLyogTENIX0JBU1NfQk9PU1RfTjIgKi8KKyAgICBjYXNlIDB4
MGE6ICAvKiBMQ0hfQkFTU19CT09TVF9OMyAqLworICAgIGNhc2UgMHgwYjogIC8qIExDSF9CQVNT
X0JPT1NUX040ICovCisgICAgY2FzZSAweDBjOiAgLyogTENIX0JBU1NfQk9PU1RfTjUgKi8KKyAg
ICBjYXNlIDB4MGQ6ICAvKiBMQ0hfQkFTU19CT09TVF9EMSAqLworICAgIGNhc2UgMHgwZTogIC8q
IExDSF9CQVNTX0JPT1NUX0QyICovCisgICAgY2FzZSAweDBmOiAgLyogTENIX0JBU1NfQk9PU1Rf
RDQgKi8KKyAgICBjYXNlIDB4MTA6ICAvKiBMQ0hfQkFTU19CT09TVF9ENSAqLworICAgIGNhc2Ug
MHgxMTogIC8qIFJDSF9CQVNTX0JPT1NUX04wICovCisgICAgY2FzZSAweDEyOiAgLyogUkNIX0JB
U1NfQk9PU1RfTjEgKi8KKyAgICBjYXNlIDB4MTM6ICAvKiBSQ0hfQkFTU19CT09TVF9OMiAqLwor
ICAgIGNhc2UgMHgxNDogIC8qIFJDSF9CQVNTX0JPT1NUX04zICovCisgICAgY2FzZSAweDE1OiAg
LyogUkNIX0JBU1NfQk9PU1RfTjQgKi8KKyAgICBjYXNlIDB4MTY6ICAvKiBSQ0hfQkFTU19CT09T
VF9ONSAqLworICAgIGNhc2UgMHgxNzogIC8qIFJDSF9CQVNTX0JPT1NUX0QxICovCisgICAgY2Fz
ZSAweDE4OiAgLyogUkNIX0JBU1NfQk9PU1RfRDIgKi8KKyAgICBjYXNlIDB4MTk6ICAvKiBSQ0hf
QkFTU19CT09TVF9ENCAqLworICAgIGNhc2UgMHgxYTogIC8qIFJDSF9CQVNTX0JPT1NUX0Q1ICov
CiAgICAgICAgIHMtPmZpbHRlcl9kYXRhW3JlZyAtIDB4MDddID0zRCB2YWx1ZTsKICAgICAgICAg
cmV0dXJuOwoKLSAgICBjYXNlIDB4MWI6IC8qIFBMTCBQcm9ncmFtbWFiaWxpdHkgMSAqLworICAg
IGNhc2UgMHgxYjogIC8qIFBMTCBQcm9ncmFtbWFiaWxpdHkgMSAqLwogICAgICAgICBzLT5wbGxb
MF0gPTNEIHZhbHVlICYgMHhmZmZjOwogI2lmZGVmIFRTQ19WRVJCT1NFCiAgICAgICAgIGlmICh2
YWx1ZSAmIH4weGZmZmMpCkBAIC03NDcsNyArNzU5LDcgQEAgc3RhdGljIHZvaWQgdHNjMjEwMl9h
dWRpb19yZWdpc3Rlcl93cml0ZSgKICNlbmRpZgogICAgICAgICByZXR1cm47CgotICAgIGNhc2Ug
MHgxYzogLyogUExMIFByb2dyYW1tYWJpbGl0eSAyICovCisgICAgY2FzZSAweDFjOiAgLyogUExM
IFByb2dyYW1tYWJpbGl0eSAyICovCiAgICAgICAgIHMtPnBsbFsxXSA9M0QgdmFsdWUgJiAweGZm
ZmM7CiAjaWZkZWYgVFNDX1ZFUkJPU0UKICAgICAgICAgaWYgKHZhbHVlICYgfjB4ZmZmYykKQEAg
LTc1Niw3ICs3NjgsNyBAQCBzdGF0aWMgdm9pZCB0c2MyMTAyX2F1ZGlvX3JlZ2lzdGVyX3dyaXRl
KAogI2VuZGlmCiAgICAgICAgIHJldHVybjsKCi0gICAgY2FzZSAweDFkOiAvKiBBdWRpbyBDb250
cm9sIDQgKi8KKyAgICBjYXNlIDB4MWQ6ICAvKiBBdWRpbyBDb250cm9sIDQgKi8KICAgICAgICAg
cy0+c29mdHN0ZXAgPTNEICEodmFsdWUgJiAweDQwMDApOwogI2lmZGVmIFRTQ19WRVJCT1NFCiAg
ICAgICAgIGlmICh2YWx1ZSAmIH4weDQwMDApCkBAIC03ODksOCArODAxLDkgQEAgc3RhdGljIHZv
aWQgdHNjMjEweF9waW5fdXBkYXRlKFRTQzIxMHhTdGF0ZSAqcykKICAgICAgICAgcGluX3N0YXRl
ID0zRCBzLT5wcmVzc3VyZSAmJiAhcy0+ZGF2OwogICAgIH0KCi0gICAgaWYgKCFzLT5lbmFibGVk
KQorICAgIGlmICghcy0+ZW5hYmxlZCkgewogICAgICAgICBwaW5fc3RhdGUgPTNEIGZhbHNlOwor
ICAgIH0KCiAgICAgaWYgKHBpbl9zdGF0ZSAhPTNEIHMtPmlycSkgewogICAgICAgICBzLT5pcnEg
PTNEIHBpbl9zdGF0ZTsKQEAgLTgwMCwyMyArODEzLDI2IEBAIHN0YXRpYyB2b2lkIHRzYzIxMHhf
cGluX3VwZGF0ZShUU0MyMTB4U3RhdGUgKnMpCiAgICAgc3dpdGNoIChzLT5uZXh0ZnVuY3Rpb24p
IHsKICAgICBjYXNlIFRTQ19NT0RFX1hZX1NDQU46CiAgICAgY2FzZSBUU0NfTU9ERV9YWVpfU0NB
TjoKLSAgICAgICAgaWYgKCFzLT5wcmVzc3VyZSkKKyAgICAgICAgaWYgKCFzLT5wcmVzc3VyZSkg
ewogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwoKICAgICBj
YXNlIFRTQ19NT0RFX1g6CiAgICAgY2FzZSBUU0NfTU9ERV9ZOgogICAgIGNhc2UgVFNDX01PREVf
WjoKLSAgICAgICAgaWYgKCFzLT5wcmVzc3VyZSkKKyAgICAgICAgaWYgKCFzLT5wcmVzc3VyZSkg
ewogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIC8qIEZhbGwgdGhyb3Vn
aCAqLwogICAgIGNhc2UgVFNDX01PREVfQkFUMToKICAgICBjYXNlIFRTQ19NT0RFX0JBVDI6CiAg
ICAgY2FzZSBUU0NfTU9ERV9BVVg6CiAgICAgY2FzZSBUU0NfTU9ERV9URU1QMToKICAgICBjYXNl
IFRTQ19NT0RFX1RFTVAyOgotICAgICAgICBpZiAocy0+ZGF2KQorICAgICAgICBpZiAocy0+ZGF2
KSB7CiAgICAgICAgICAgICBzLT5lbmFibGVkID0zRCBmYWxzZTsKKyAgICAgICAgfQogICAgICAg
ICBicmVhazsKCiAgICAgY2FzZSBUU0NfTU9ERV9BVVhfU0NBTjoKQEAgLTgzMSw4ICs4NDcsOSBA
QCBzdGF0aWMgdm9pZCB0c2MyMTB4X3Bpbl91cGRhdGUoVFNDMjEweFN0YXRlICpzKQogICAgICAg
ICByZXR1cm47CiAgICAgfQoKLSAgICBpZiAoIXMtPmVuYWJsZWQgfHwgcy0+YnVzeSB8fCBzLT5k
YXYpCisgICAgaWYgKCFzLT5lbmFibGVkIHx8IHMtPmJ1c3kgfHwgcy0+ZGF2KSB7CiAgICAgICAg
IHJldHVybjsKKyAgICB9CgogICAgIHMtPmJ1c3kgPTNEIHRydWU7CiAgICAgcy0+cHJlY2lzaW9u
ID0zRCBzLT5uZXh0cHJlY2lzaW9uOwpAQCAtODQ2LDE0ICs4NjMsMTYgQEAgc3RhdGljIHVpbnQx
Nl90IHRzYzIxMHhfcmVhZChUU0MyMTB4U3RhdGUgKnMpCiB7CiAgICAgdWludDE2X3QgcmV0ID0z
RCAweDAwMDA7CgotICAgIGlmICghcy0+Y29tbWFuZCkKKyAgICBpZiAoIXMtPmNvbW1hbmQpIHsK
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ0c2MyMTB4X3JlYWQ6IFNQSSB1bmRlcnJ1biFcbiIp
OworICAgIH0KCiAgICAgc3dpdGNoIChzLT5wYWdlKSB7CiAgICAgY2FzZSBUU0NfREFUQV9SRUdJ
U1RFUlNfUEFHRToKICAgICAgICAgcmV0ID0zRCB0c2MyMTAyX2RhdGFfcmVnaXN0ZXJfcmVhZChz
LCBzLT5vZmZzZXQpOwotICAgICAgICBpZiAoIXMtPmRhdikKKyAgICAgICAgaWYgKCFzLT5kYXYp
IHsKICAgICAgICAgICAgIHFlbXVfaXJxX3JhaXNlKHMtPmRhdmludCk7CisgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBUU0NfQ09OVFJPTF9SRUdJU1RFUlNfUEFHRToKICAgICAg
ICAgcmV0ID0zRCB0c2MyMTAyX2NvbnRyb2xfcmVnaXN0ZXJfcmVhZChzLCBzLT5vZmZzZXQpOwpA
QCAtODY4LDcgKzg4Nyw3IEBAIHN0YXRpYyB1aW50MTZfdCB0c2MyMTB4X3JlYWQoVFNDMjEweFN0
YXRlICpzKQogICAgIHRzYzIxMHhfcGluX3VwZGF0ZShzKTsKCiAgICAgLyogQWxsb3cgc2VxdWVu
dGlhbCByZWFkcy4gICovCi0gICAgcy0+b2Zmc2V0ICsrOworICAgIHMtPm9mZnNldCsrOwogICAg
IHMtPnN0YXRlID0zRCBmYWxzZTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtOTIxLDEwICs5NDAs
MTIgQEAgdWludDMyX3QgdHNjMjEweF90eHJ4KHZvaWQgKm9wYXF1ZSwgdWludDMyX3QgdmFsdWUs
CmludCBsZW4pCiAgICAgLyogVE9ETzogc2VxdWVudGlhbCByZWFkcyBldGMgLSBob3cgZG8gd2Ug
bWFrZSBzdXJlIHRoZSBob3N0IGRvZXNuJ3QKICAgICAgKiB1bmludGVudGlvbmFsbHkgcmVhZCBv
dXQgYSBjb252ZXJzaW9uIHJlc3VsdCBmcm9tIGEgcmVnaXN0ZXIgd2hpbGUKICAgICAgKiB0cmFu
c21pdHRpbmcgdGhlIGNvbW1hbmQgd29yZCBvZiB0aGUgbmV4dCBjb21tYW5kPyAgKi8KLSAgICBp
ZiAoIXZhbHVlIHx8IChzLT5zdGF0ZSAmJiBzLT5jb21tYW5kKSkKKyAgICBpZiAoIXZhbHVlIHx8
IChzLT5zdGF0ZSAmJiBzLT5jb21tYW5kKSkgewogICAgICAgICByZXQgPTNEIHRzYzIxMHhfcmVh
ZChzKTsKLSAgICBpZiAodmFsdWUgfHwgKHMtPnN0YXRlICYmICFzLT5jb21tYW5kKSkKKyAgICB9
CisgICAgaWYgKHZhbHVlIHx8IChzLT5zdGF0ZSAmJiAhcy0+Y29tbWFuZCkpIHsKICAgICAgICAg
dHNjMjEweF93cml0ZShzLCB2YWx1ZSk7CisgICAgfQoKICAgICByZXR1cm4gcmV0OwogfQpAQCAt
OTM1LDggKzk1Niw5IEBAIHN0YXRpYyB2b2lkIHRzYzIxMHhfdGltZXJfdGljayh2b2lkICpvcGFx
dWUpCgogICAgIC8qIFRpbWVyIHRpY2tlZCAtLSBhIHNldCBvZiBjb252ZXJzaW9ucyBoYXMgYmVl
biBmaW5pc2hlZC4gICovCgotICAgIGlmICghcy0+YnVzeSkKKyAgICBpZiAoIXMtPmJ1c3kpIHsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KCiAgICAgcy0+YnVzeSA9M0QgZmFsc2U7CiAgICAgcy0+
ZGF2IHw9M0QgbW9kZV9yZWdzW3MtPmZ1bmN0aW9uXTsKQEAgLTk2MSwxNiArOTgzLDE4IEBAIHN0
YXRpYyB2b2lkIHRzYzIxMHhfdG91Y2hzY3JlZW5fZXZlbnQodm9pZCAqb3BhcXVlLAogICAgICAq
IHNpZ25hbGluZyBUUyBldmVudHMgaW1tZWRpYXRlbHksIGJ1dCBmb3Igbm93IHdlIHNpbXVsYXRl
CiAgICAgICogdGhlIGZpcnN0IGNvbnZlcnNpb24gZGVsYXkgZm9yIHNha2Ugb2YgY29ycmVjdG5l
c3MuCiAgICAgICovCi0gICAgaWYgKHAgIT0zRCBzLT5wcmVzc3VyZSkKKyAgICBpZiAocCAhPTNE
IHMtPnByZXNzdXJlKSB7CiAgICAgICAgIHRzYzIxMHhfcGluX3VwZGF0ZShzKTsKKyAgICB9CiB9
Cgogc3RhdGljIHZvaWQgdHNjMjEweF9pMnNfc3dhbGxvdyhUU0MyMTB4U3RhdGUgKnMpCiB7Ci0g
ICAgaWYgKHMtPmRhY192b2ljZVswXSkKKyAgICBpZiAocy0+ZGFjX3ZvaWNlWzBdKSB7CiAgICAg
ICAgIHRzYzIxMHhfb3V0X2ZsdXNoKHMsIHMtPmNvZGVjLm91dC5sZW4pOwotICAgIGVsc2UKKyAg
ICB9IGVsc2UgewogICAgICAgICBzLT5jb2RlYy5vdXQubGVuID0zRCAwOworICAgIH0KIH0KCiBz
dGF0aWMgdm9pZCB0c2MyMTB4X2kyc19zZXRfcmF0ZShUU0MyMTB4U3RhdGUgKnMsIGludCBpbiwg
aW50IG91dCkKQEAgLTExNjMsMzIgKzExODcsNiBAQCBJMlNDb2RlYyAqdHNjMjEweF9jb2RlYyh1
V2lyZVNsYXZlICpjaGlwKQogdm9pZCB0c2MyMTB4X3NldF90cmFuc2Zvcm0odVdpcmVTbGF2ZSAq
Y2hpcCwgY29uc3QgTW91c2VUcmFuc2Zvcm1JbmZvCippbmZvKQogewogICAgIFRTQzIxMHhTdGF0
ZSAqcyA9M0QgKFRTQzIxMHhTdGF0ZSAqKSBjaGlwLT5vcGFxdWU7Ci0jaWYgMAotICAgIGludDY0
X3QgbHRyWzhdOwotCi0gICAgbHRyWzBdID0zRCAoaW50NjRfdCkgaW5mby0+YVsxXSAqIGluZm8t
Pnk7Ci0gICAgbHRyWzFdID0zRCAoaW50NjRfdCkgaW5mby0+YVs0XSAqIGluZm8tPng7Ci0gICAg
bHRyWzJdID0zRCAoaW50NjRfdCkgaW5mby0+YVsxXSAqIGluZm8tPmFbM10gLQotICAgICAgICAg
ICAgKGludDY0X3QpIGluZm8tPmFbNF0gKiBpbmZvLT5hWzBdOwotICAgIGx0clszXSA9M0QgKGlu
dDY0X3QpIGluZm8tPmFbMl0gKiBpbmZvLT5hWzRdIC0KLSAgICAgICAgICAgIChpbnQ2NF90KSBp
bmZvLT5hWzVdICogaW5mby0+YVsxXTsKLSAgICBsdHJbNF0gPTNEIChpbnQ2NF90KSBpbmZvLT5h
WzBdICogaW5mby0+eTsKLSAgICBsdHJbNV0gPTNEIChpbnQ2NF90KSBpbmZvLT5hWzNdICogaW5m
by0+eDsKLSAgICBsdHJbNl0gPTNEIChpbnQ2NF90KSBpbmZvLT5hWzRdICogaW5mby0+YVswXSAt
Ci0gICAgICAgICAgICAoaW50NjRfdCkgaW5mby0+YVsxXSAqIGluZm8tPmFbM107Ci0gICAgbHRy
WzddID0zRCAoaW50NjRfdCkgaW5mby0+YVsyXSAqIGluZm8tPmFbM10gLQotICAgICAgICAgICAg
KGludDY0X3QpIGluZm8tPmFbNV0gKiBpbmZvLT5hWzBdOwotCi0gICAgLyogQXZvaWQgaW50ZWdl
ciBvdmVyZmxvdyAqLwotICAgIHMtPnRyWzBdID0zRCBsdHJbMF0gPj4gMTE7Ci0gICAgcy0+dHJb
MV0gPTNEIGx0clsxXSA+PiAxMTsKLSAgICBzLT50clsyXSA9M0QgbXVsZGl2NjQobHRyWzJdLCAx
LCBpbmZvLT5hWzZdKTsKLSAgICBzLT50clszXSA9M0QgbXVsZGl2NjQobHRyWzNdLCAxIDw8IDQs
IGx0clsyXSk7Ci0gICAgcy0+dHJbNF0gPTNEIGx0cls0XSA+PiAxMTsKLSAgICBzLT50cls1XSA9
M0QgbHRyWzVdID4+IDExOwotICAgIHMtPnRyWzZdID0zRCBtdWxkaXY2NChsdHJbNl0sIDEsIGlu
Zm8tPmFbNl0pOwotICAgIHMtPnRyWzddID0zRCBtdWxkaXY2NChsdHJbN10sIDEgPDwgNCwgbHRy
WzZdKTsKLSNlbHNlCgogICAgIC8qIFRoaXMgdmVyc2lvbiBhc3N1bWVzIHRvdWNoc2NyZWVuIFgg
JiBZIGF4aXMgYXJlIHBhcmFsbGVsIG9yCiAgICAgICogcGVycGVuZGljdWxhciB0byBMQ0QncyAg
WCAmIFkgYXhpcyBpbiBzb21lIHdheS4gICovCkBAIC0xMjE4LDE3ICsxMjE2LDE3IEBAIHZvaWQg
dHNjMjEweF9zZXRfdHJhbnNmb3JtKHVXaXJlU2xhdmUgKmNoaXAsIGNvbnN0Ck1vdXNlVHJhbnNm
b3JtSW5mbyAqaW5mbykKICAgICBzLT50cls0XSA+Pj0zRCAxMTsKICAgICBzLT50cls1XSA+Pj0z
RCAxMTsKICAgICBzLT50cls3XSA8PD0zRCA0OwotI2VuZGlmCiB9Cgogdm9pZCB0c2MyMTB4X2tl
eV9ldmVudCh1V2lyZVNsYXZlICpjaGlwLCBpbnQga2V5LCBpbnQgZG93bikKIHsKICAgICBUU0My
MTB4U3RhdGUgKnMgPTNEIChUU0MyMTB4U3RhdGUgKikgY2hpcC0+b3BhcXVlOwoKLSAgICBpZiAo
ZG93bikKKyAgICBpZiAoZG93bikgewogICAgICAgICBzLT5rYi5kb3duIHw9M0QgMSA8PCBrZXk7
Ci0gICAgZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIHMtPmtiLmRvd24gJj0zRCB+KDEgPDwg
a2V5KTsKKyAgICB9CgogICAgIGlmIChkb3duICYmIChzLT5rYi5kb3duICYgfnMtPmtiLm1hc2sp
ICYmICFzLT5rYi5pbnRyKSB7CiAgICAgICAgIHMtPmtiLmludHIgPTNEIDE7CmRpZmYgLS1naXQg
YS9ody9pbnRjL29tYXBfaW50Yy5jIGIvaHcvaW50Yy9vbWFwX2ludGMuYwppbmRleCA0MzVjNDc2
MDBmLi40YTViNDEzZDBhIDEwMDY0NAotLS0gYS9ody9pbnRjL29tYXBfaW50Yy5jCisrKyBiL2h3
L2ludGMvb21hcF9pbnRjLmMKQEAgLTEwNCw4ICsxMDQsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
b21hcF9pbnRoX3VwZGF0ZShPTUFQSW50Y1N0YXRlICpzLAppbnQgaXNfZmlxKQogICAgIH0KIH0K
Ci0jZGVmaW5lIElOVF9GQUxMSU5HX0VER0UgMAotI2RlZmluZSBJTlRfTE9XX0xFVkVMIDEKKyNk
ZWZpbmUgSU5UX0ZBTExJTkdfRURHRSAgICAgICAgMAorI2RlZmluZSBJTlRfTE9XX0xFVkVMICAg
ICAgICAgICAxCgogc3RhdGljIHZvaWQgb21hcF9zZXRfaW50cih2b2lkICpvcGFxdWUsIGludCBp
cnEsIGludCByZXEpCiB7CkBAIC0xMTcsOSArMTE3LDkgQEAgc3RhdGljIHZvaWQgb21hcF9zZXRf
aW50cih2b2lkICpvcGFxdWUsIGludCBpcnEsIGludApyZXEpCgogICAgIGlmIChyZXEpIHsKICAg
ICAgICAgcmlzZSA9M0QgfmJhbmstPmlycXMgJiAoMSA8PCBuKTsKLSAgICAgICAgaWYgKH5iYW5r
LT5zZW5zX2VkZ2UgJiAoMSA8PCBuKSkKKyAgICAgICAgaWYgKH5iYW5rLT5zZW5zX2VkZ2UgJiAo
MSA8PCBuKSkgewogICAgICAgICAgICAgcmlzZSAmPTNEIH5iYW5rLT5pbnB1dHM7Ci0KKyAgICAg
ICAgfQogICAgICAgICBiYW5rLT5pbnB1dHMgfD0zRCAoMSA8PCBuKTsKICAgICAgICAgaWYgKHJp
c2UpIHsKICAgICAgICAgICAgIGJhbmstPmlycXMgfD0zRCByaXNlOwpAQCAtMTY0LDY2ICsxNjQs
NjkgQEAgc3RhdGljIHVpbnQ2NF90IG9tYXBfaW50aF9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRy
CmFkZHIsCiAgICAgb2Zmc2V0ICY9M0QgMHhmZjsKCiAgICAgc3dpdGNoIChvZmZzZXQpIHsKLSAg
ICBjYXNlIDB4MDA6IC8qIElUUiAqLworICAgIGNhc2UgMHgwMDogIC8qIElUUiAqLwogICAgICAg
ICByZXR1cm4gYmFuay0+aXJxczsKCi0gICAgY2FzZSAweDA0OiAvKiBNSVIgKi8KKyAgICBjYXNl
IDB4MDQ6ICAvKiBNSVIgKi8KICAgICAgICAgcmV0dXJuIGJhbmstPm1hc2s7CgotICAgIGNhc2Ug
MHgxMDogLyogU0lSX0lSUV9DT0RFICovCisgICAgY2FzZSAweDEwOiAgLyogU0lSX0lSUV9DT0RF
ICovCiAgICAgY2FzZSAweDE0OiAgLyogU0lSX0ZJUV9DT0RFICovCi0gICAgICAgIGlmIChiYW5r
X25vICE9M0QgMCkKKyAgICAgICAgaWYgKGJhbmtfbm8gIT0zRCAwKSB7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBsaW5lX25vID0zRCBzLT5zaXJfaW50clsob2Zmc2V0
IC0gMHgxMCkgPj4gMl07CiAgICAgICAgIGJhbmsgPTNEICZzLT5iYW5rW2xpbmVfbm8gPj4gNV07
CiAgICAgICAgIGkgPTNEIGxpbmVfbm8gJiAzMTsKLSAgICAgICAgaWYgKCgoYmFuay0+c2Vuc19l
ZGdlID4+IGkpICYgMSkgPTNEPTNEIElOVF9GQUxMSU5HX0VER0UpCisgICAgICAgIGlmICgoKGJh
bmstPnNlbnNfZWRnZSA+PiBpKSAmIDEpID0zRD0zRCBJTlRfRkFMTElOR19FREdFKSB7CiAgICAg
ICAgICAgICBiYW5rLT5pcnFzICY9M0QgfigxIDw8IGkpOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBsaW5lX25vOwoKLSAgICBjYXNlIDB4MTg6IC8qIENPTlRST0xfUkVHICovCi0gICAgICAg
IGlmIChiYW5rX25vICE9M0QgMCkKKyAgICBjYXNlIDB4MTg6ICAvKiBDT05UUk9MX1JFRyAqLwor
ICAgICAgICBpZiAoYmFua19ubyAhPTNEIDApIHsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAgICAgICAgIHJldHVybiAwOwoKLSAgICBjYXNlIDB4MWM6IC8qIElMUjAgKi8KLSAgICBj
YXNlIDB4MjA6IC8qIElMUjEgKi8KLSAgICBjYXNlIDB4MjQ6IC8qIElMUjIgKi8KLSAgICBjYXNl
IDB4Mjg6IC8qIElMUjMgKi8KLSAgICBjYXNlIDB4MmM6IC8qIElMUjQgKi8KLSAgICBjYXNlIDB4
MzA6IC8qIElMUjUgKi8KLSAgICBjYXNlIDB4MzQ6IC8qIElMUjYgKi8KLSAgICBjYXNlIDB4Mzg6
IC8qIElMUjcgKi8KLSAgICBjYXNlIDB4M2M6IC8qIElMUjggKi8KLSAgICBjYXNlIDB4NDA6IC8q
IElMUjkgKi8KLSAgICBjYXNlIDB4NDQ6IC8qIElMUjEwICovCi0gICAgY2FzZSAweDQ4OiAvKiBJ
TFIxMSAqLwotICAgIGNhc2UgMHg0YzogLyogSUxSMTIgKi8KLSAgICBjYXNlIDB4NTA6IC8qIElM
UjEzICovCi0gICAgY2FzZSAweDU0OiAvKiBJTFIxNCAqLwotICAgIGNhc2UgMHg1ODogLyogSUxS
MTUgKi8KLSAgICBjYXNlIDB4NWM6IC8qIElMUjE2ICovCi0gICAgY2FzZSAweDYwOiAvKiBJTFIx
NyAqLwotICAgIGNhc2UgMHg2NDogLyogSUxSMTggKi8KLSAgICBjYXNlIDB4Njg6IC8qIElMUjE5
ICovCi0gICAgY2FzZSAweDZjOiAvKiBJTFIyMCAqLwotICAgIGNhc2UgMHg3MDogLyogSUxSMjEg
Ki8KLSAgICBjYXNlIDB4NzQ6IC8qIElMUjIyICovCi0gICAgY2FzZSAweDc4OiAvKiBJTFIyMyAq
LwotICAgIGNhc2UgMHg3YzogLyogSUxSMjQgKi8KLSAgICBjYXNlIDB4ODA6IC8qIElMUjI1ICov
Ci0gICAgY2FzZSAweDg0OiAvKiBJTFIyNiAqLwotICAgIGNhc2UgMHg4ODogLyogSUxSMjcgKi8K
LSAgICBjYXNlIDB4OGM6IC8qIElMUjI4ICovCi0gICAgY2FzZSAweDkwOiAvKiBJTFIyOSAqLwot
ICAgIGNhc2UgMHg5NDogLyogSUxSMzAgKi8KLSAgICBjYXNlIDB4OTg6IC8qIElMUjMxICovCisg
ICAgY2FzZSAweDFjOiAgLyogSUxSMCAqLworICAgIGNhc2UgMHgyMDogIC8qIElMUjEgKi8KKyAg
ICBjYXNlIDB4MjQ6ICAvKiBJTFIyICovCisgICAgY2FzZSAweDI4OiAgLyogSUxSMyAqLworICAg
IGNhc2UgMHgyYzogIC8qIElMUjQgKi8KKyAgICBjYXNlIDB4MzA6ICAvKiBJTFI1ICovCisgICAg
Y2FzZSAweDM0OiAgLyogSUxSNiAqLworICAgIGNhc2UgMHgzODogIC8qIElMUjcgKi8KKyAgICBj
YXNlIDB4M2M6ICAvKiBJTFI4ICovCisgICAgY2FzZSAweDQwOiAgLyogSUxSOSAqLworICAgIGNh
c2UgMHg0NDogIC8qIElMUjEwICovCisgICAgY2FzZSAweDQ4OiAgLyogSUxSMTEgKi8KKyAgICBj
YXNlIDB4NGM6ICAvKiBJTFIxMiAqLworICAgIGNhc2UgMHg1MDogIC8qIElMUjEzICovCisgICAg
Y2FzZSAweDU0OiAgLyogSUxSMTQgKi8KKyAgICBjYXNlIDB4NTg6ICAvKiBJTFIxNSAqLworICAg
IGNhc2UgMHg1YzogIC8qIElMUjE2ICovCisgICAgY2FzZSAweDYwOiAgLyogSUxSMTcgKi8KKyAg
ICBjYXNlIDB4NjQ6ICAvKiBJTFIxOCAqLworICAgIGNhc2UgMHg2ODogIC8qIElMUjE5ICovCisg
ICAgY2FzZSAweDZjOiAgLyogSUxSMjAgKi8KKyAgICBjYXNlIDB4NzA6ICAvKiBJTFIyMSAqLwor
ICAgIGNhc2UgMHg3NDogIC8qIElMUjIyICovCisgICAgY2FzZSAweDc4OiAgLyogSUxSMjMgKi8K
KyAgICBjYXNlIDB4N2M6ICAvKiBJTFIyNCAqLworICAgIGNhc2UgMHg4MDogIC8qIElMUjI1ICov
CisgICAgY2FzZSAweDg0OiAgLyogSUxSMjYgKi8KKyAgICBjYXNlIDB4ODg6ICAvKiBJTFIyNyAq
LworICAgIGNhc2UgMHg4YzogIC8qIElMUjI4ICovCisgICAgY2FzZSAweDkwOiAgLyogSUxSMjkg
Ki8KKyAgICBjYXNlIDB4OTQ6ICAvKiBJTFIzMCAqLworICAgIGNhc2UgMHg5ODogIC8qIElMUjMx
ICovCiAgICAgICAgIGkgPTNEIChvZmZzZXQgLSAweDFjKSA+PiAyOwogICAgICAgICByZXR1cm4g
KGJhbmstPnByaW9yaXR5W2ldIDw8IDIpIHwKICAgICAgICAgICAgICAgICAoKChiYW5rLT5zZW5z
X2VkZ2UgPj4gaSkgJiAxKSA8PCAxKSB8CiAgICAgICAgICAgICAgICAgKChiYW5rLT5maXEgPj4g
aSkgJiAxKTsKCi0gICAgY2FzZSAweDljOiAvKiBJU1IgKi8KKyAgICBjYXNlIDB4OWM6ICAvKiBJ
U1IgKi8KICAgICAgICAgcmV0dXJuIDB4MDAwMDAwMDA7CgogICAgIH0KQEAgLTI0MSwyNiArMjQ0
LDI3IEBAIHN0YXRpYyB2b2lkIG9tYXBfaW50aF93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBh
ZGRyLAogICAgIG9mZnNldCAmPTNEIDB4ZmY7CgogICAgIHN3aXRjaCAob2Zmc2V0KSB7Ci0gICAg
Y2FzZSAweDAwOiAvKiBJVFIgKi8KKyAgICBjYXNlIDB4MDA6ICAvKiBJVFIgKi8KICAgICAgICAg
LyogSW1wb3J0YW50OiBpZ25vcmUgdGhlIGNsZWFyaW5nIGlmIHRoZSBJUlEgaXMgbGV2ZWwtdHJp
Z2dlcmVkIGFuZAogICAgICAgICAgICB0aGUgaW5wdXQgYml0IGlzIDEgKi8KICAgICAgICAgYmFu
ay0+aXJxcyAmPTNEIHZhbHVlIHwgKGJhbmstPmlucHV0cyAmIGJhbmstPnNlbnNfZWRnZSk7CiAg
ICAgICAgIHJldHVybjsKCi0gICAgY2FzZSAweDA0OiAvKiBNSVIgKi8KKyAgICBjYXNlIDB4MDQ6
ICAvKiBNSVIgKi8KICAgICAgICAgYmFuay0+bWFzayA9M0QgdmFsdWU7CiAgICAgICAgIG9tYXBf
aW50aF91cGRhdGUocywgMCk7CiAgICAgICAgIG9tYXBfaW50aF91cGRhdGUocywgMSk7CiAgICAg
ICAgIHJldHVybjsKCi0gICAgY2FzZSAweDEwOiAvKiBTSVJfSVJRX0NPREUgKi8KLSAgICBjYXNl
IDB4MTQ6IC8qIFNJUl9GSVFfQ09ERSAqLworICAgIGNhc2UgMHgxMDogIC8qIFNJUl9JUlFfQ09E
RSAqLworICAgIGNhc2UgMHgxNDogIC8qIFNJUl9GSVFfQ09ERSAqLwogICAgICAgICBPTUFQX1JP
X1JFRyhhZGRyKTsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHgxODogLyogQ09OVFJPTF9S
RUcgKi8KLSAgICAgICAgaWYgKGJhbmtfbm8gIT0zRCAwKQorICAgIGNhc2UgMHgxODogIC8qIENP
TlRST0xfUkVHICovCisgICAgICAgIGlmIChiYW5rX25vICE9M0QgMCkgewogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgaWYgKHZhbHVlICYgMikgewogICAgICAgICAgICAg
cWVtdV9zZXRfaXJxKHMtPnBhcmVudF9pbnRyWzFdLCAwKTsKICAgICAgICAgICAgIHMtPm5ld19h
Z3JbMV0gPTNEIH4wOwpAQCAtMjczLDM4ICsyNzcsMzggQEAgc3RhdGljIHZvaWQgb21hcF9pbnRo
X3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuOwoKLSAgICBjYXNlIDB4MWM6IC8qIElMUjAgKi8KLSAgICBjYXNlIDB4MjA6IC8qIElMUjEg
Ki8KLSAgICBjYXNlIDB4MjQ6IC8qIElMUjIgKi8KLSAgICBjYXNlIDB4Mjg6IC8qIElMUjMgKi8K
LSAgICBjYXNlIDB4MmM6IC8qIElMUjQgKi8KLSAgICBjYXNlIDB4MzA6IC8qIElMUjUgKi8KLSAg
ICBjYXNlIDB4MzQ6IC8qIElMUjYgKi8KLSAgICBjYXNlIDB4Mzg6IC8qIElMUjcgKi8KLSAgICBj
YXNlIDB4M2M6IC8qIElMUjggKi8KLSAgICBjYXNlIDB4NDA6IC8qIElMUjkgKi8KLSAgICBjYXNl
IDB4NDQ6IC8qIElMUjEwICovCi0gICAgY2FzZSAweDQ4OiAvKiBJTFIxMSAqLwotICAgIGNhc2Ug
MHg0YzogLyogSUxSMTIgKi8KLSAgICBjYXNlIDB4NTA6IC8qIElMUjEzICovCi0gICAgY2FzZSAw
eDU0OiAvKiBJTFIxNCAqLwotICAgIGNhc2UgMHg1ODogLyogSUxSMTUgKi8KLSAgICBjYXNlIDB4
NWM6IC8qIElMUjE2ICovCi0gICAgY2FzZSAweDYwOiAvKiBJTFIxNyAqLwotICAgIGNhc2UgMHg2
NDogLyogSUxSMTggKi8KLSAgICBjYXNlIDB4Njg6IC8qIElMUjE5ICovCi0gICAgY2FzZSAweDZj
OiAvKiBJTFIyMCAqLwotICAgIGNhc2UgMHg3MDogLyogSUxSMjEgKi8KLSAgICBjYXNlIDB4NzQ6
IC8qIElMUjIyICovCi0gICAgY2FzZSAweDc4OiAvKiBJTFIyMyAqLwotICAgIGNhc2UgMHg3Yzog
LyogSUxSMjQgKi8KLSAgICBjYXNlIDB4ODA6IC8qIElMUjI1ICovCi0gICAgY2FzZSAweDg0OiAv
KiBJTFIyNiAqLwotICAgIGNhc2UgMHg4ODogLyogSUxSMjcgKi8KLSAgICBjYXNlIDB4OGM6IC8q
IElMUjI4ICovCi0gICAgY2FzZSAweDkwOiAvKiBJTFIyOSAqLwotICAgIGNhc2UgMHg5NDogLyog
SUxSMzAgKi8KLSAgICBjYXNlIDB4OTg6IC8qIElMUjMxICovCisgICAgY2FzZSAweDFjOiAgLyog
SUxSMCAqLworICAgIGNhc2UgMHgyMDogIC8qIElMUjEgKi8KKyAgICBjYXNlIDB4MjQ6ICAvKiBJ
TFIyICovCisgICAgY2FzZSAweDI4OiAgLyogSUxSMyAqLworICAgIGNhc2UgMHgyYzogIC8qIElM
UjQgKi8KKyAgICBjYXNlIDB4MzA6ICAvKiBJTFI1ICovCisgICAgY2FzZSAweDM0OiAgLyogSUxS
NiAqLworICAgIGNhc2UgMHgzODogIC8qIElMUjcgKi8KKyAgICBjYXNlIDB4M2M6ICAvKiBJTFI4
ICovCisgICAgY2FzZSAweDQwOiAgLyogSUxSOSAqLworICAgIGNhc2UgMHg0NDogIC8qIElMUjEw
ICovCisgICAgY2FzZSAweDQ4OiAgLyogSUxSMTEgKi8KKyAgICBjYXNlIDB4NGM6ICAvKiBJTFIx
MiAqLworICAgIGNhc2UgMHg1MDogIC8qIElMUjEzICovCisgICAgY2FzZSAweDU0OiAgLyogSUxS
MTQgKi8KKyAgICBjYXNlIDB4NTg6ICAvKiBJTFIxNSAqLworICAgIGNhc2UgMHg1YzogIC8qIElM
UjE2ICovCisgICAgY2FzZSAweDYwOiAgLyogSUxSMTcgKi8KKyAgICBjYXNlIDB4NjQ6ICAvKiBJ
TFIxOCAqLworICAgIGNhc2UgMHg2ODogIC8qIElMUjE5ICovCisgICAgY2FzZSAweDZjOiAgLyog
SUxSMjAgKi8KKyAgICBjYXNlIDB4NzA6ICAvKiBJTFIyMSAqLworICAgIGNhc2UgMHg3NDogIC8q
IElMUjIyICovCisgICAgY2FzZSAweDc4OiAgLyogSUxSMjMgKi8KKyAgICBjYXNlIDB4N2M6ICAv
KiBJTFIyNCAqLworICAgIGNhc2UgMHg4MDogIC8qIElMUjI1ICovCisgICAgY2FzZSAweDg0OiAg
LyogSUxSMjYgKi8KKyAgICBjYXNlIDB4ODg6ICAvKiBJTFIyNyAqLworICAgIGNhc2UgMHg4Yzog
IC8qIElMUjI4ICovCisgICAgY2FzZSAweDkwOiAgLyogSUxSMjkgKi8KKyAgICBjYXNlIDB4OTQ6
ICAvKiBJTFIzMCAqLworICAgIGNhc2UgMHg5ODogIC8qIElMUjMxICovCiAgICAgICAgIGkgPTNE
IChvZmZzZXQgLSAweDFjKSA+PiAyOwogICAgICAgICBiYW5rLT5wcmlvcml0eVtpXSA9M0QgKHZh
bHVlID4+IDIpICYgMHgxZjsKICAgICAgICAgYmFuay0+c2Vuc19lZGdlICY9M0QgfigxIDw8IGkp
OwpAQCAtMzEzLDggKzMxNyw4IEBAIHN0YXRpYyB2b2lkIG9tYXBfaW50aF93cml0ZSh2b2lkICpv
cGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICBiYW5rLT5maXEgfD0zRCAodmFsdWUgJiAxKSA8
PCBpOwogICAgICAgICByZXR1cm47CgotICAgIGNhc2UgMHg5YzogLyogSVNSICovCi0gICAgICAg
IGZvciAoaSA9M0QgMDsgaSA8IDMyOyBpICsrKQorICAgIGNhc2UgMHg5YzogIC8qIElTUiAqLwor
ICAgICAgICBmb3IgKGkgPTNEIDA7IGkgPCAzMjsgaSsrKQogICAgICAgICAgICAgaWYgKHZhbHVl
ICYgKDEgPDwgaSkpIHsKICAgICAgICAgICAgICAgICBvbWFwX3NldF9pbnRyKHMsIDMyICogYmFu
a19ubyArIGksIDEpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMzOSw3ICszNDMsNyBA
QCBzdGF0aWMgdm9pZCBvbWFwX2ludGhfcmVzZXQoRGV2aWNlU3RhdGUgKmRldikKICAgICBPTUFQ
SW50Y1N0YXRlICpzID0zRCBPTUFQX0lOVEMoZGV2KTsKICAgICBpbnQgaTsKCi0gICAgZm9yIChp
ID0zRCAwOyBpIDwgcy0+bmJhbmtzOyArK2kpeworICAgIGZvciAoaSA9M0QgMDsgaSA8IHMtPm5i
YW5rczsgKytpKSB7CiAgICAgICAgIHMtPmJhbmtbaV0uaXJxcyA9M0QgMHgwMDAwMDAwMDsKICAg
ICAgICAgcy0+YmFua1tpXS5tYXNrID0zRCAweGZmZmZmZmZmOwogICAgICAgICBzLT5iYW5rW2ld
LnNlbnNfZWRnZSA9M0QgMHgwMDAwMDAwMDsKQEAgLTM0OCw4ICszNTIsOSBAQCBzdGF0aWMgdm9p
ZCBvbWFwX2ludGhfcmVzZXQoRGV2aWNlU3RhdGUgKmRldikKICAgICAgICAgcy0+YmFua1tpXS5z
d2kgPTNEIDB4MDAwMDAwMDA7CiAgICAgICAgIG1lbXNldChzLT5iYW5rW2ldLnByaW9yaXR5LCAw
LCBzaXplb2Yocy0+YmFua1tpXS5wcmlvcml0eSkpOwoKLSAgICAgICAgaWYgKHMtPmxldmVsX29u
bHkpCisgICAgICAgIGlmIChzLT5sZXZlbF9vbmx5KSB7CiAgICAgICAgICAgICBzLT5iYW5rW2ld
LnNlbnNfZWRnZSA9M0QgMHhmZmZmZmZmZjsKKyAgICAgICAgfQogICAgIH0KCiAgICAgcy0+bmV3
X2FnclswXSA9M0QgfjA7CkBAIC00NDAsNTggKzQ0NSw1OSBAQCBzdGF0aWMgdWludDY0X3Qgb21h
cDJfaW50aF9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyCmFkZHIsCiAgICAgfQoKICAgICBzd2l0
Y2ggKG9mZnNldCkgewotICAgIGNhc2UgMHgwMDogLyogSU5UQ19SRVZJU0lPTiAqLworICAgIGNh
c2UgMHgwMDogIC8qIElOVENfUkVWSVNJT04gKi8KICAgICAgICAgcmV0dXJuIHMtPnJldmlzaW9u
OwoKLSAgICBjYXNlIDB4MTA6IC8qIElOVENfU1lTQ09ORklHICovCisgICAgY2FzZSAweDEwOiAg
LyogSU5UQ19TWVNDT05GSUcgKi8KICAgICAgICAgcmV0dXJuIChzLT5hdXRvaWRsZSA+PiAyKSAm
IDE7CgotICAgIGNhc2UgMHgxNDogLyogSU5UQ19TWVNTVEFUVVMgKi8KLSAgICAgICAgcmV0dXJu
IDE7IC8qIFJFU0VURE9ORSAqLworICAgIGNhc2UgMHgxNDogIC8qIElOVENfU1lTU1RBVFVTICov
CisgICAgICAgIHJldHVybiAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyoKUkVTRVRET05FICovCgotICAgIGNhc2UgMHg0MDogLyogSU5UQ19TSVJfSVJR
ICovCisgICAgY2FzZSAweDQwOiAgLyogSU5UQ19TSVJfSVJRICovCiAgICAgICAgIHJldHVybiBz
LT5zaXJfaW50clswXTsKCi0gICAgY2FzZSAweDQ0OiAvKiBJTlRDX1NJUl9GSVEgKi8KKyAgICBj
YXNlIDB4NDQ6ICAvKiBJTlRDX1NJUl9GSVEgKi8KICAgICAgICAgcmV0dXJuIHMtPnNpcl9pbnRy
WzFdOwoKLSAgICBjYXNlIDB4NDg6IC8qIElOVENfQ09OVFJPTCAqLwotICAgICAgICByZXR1cm4g
KCFzLT5tYXNrKSA8PCAyOyAvKiBHTE9CQUxNQVNLICovCisgICAgY2FzZSAweDQ4OiAgLyogSU5U
Q19DT05UUk9MICovCisgICAgICAgIHJldHVybiAoIXMtPm1hc2spIDw8IDI7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKgpHTE9CQUxNQVNLICovCgotICAgIGNhc2UgMHg0YzogLyog
SU5UQ19QUk9URUNUSU9OICovCisgICAgY2FzZSAweDRjOiAgLyogSU5UQ19QUk9URUNUSU9OICov
CiAgICAgICAgIHJldHVybiAwOwoKLSAgICBjYXNlIDB4NTA6IC8qIElOVENfSURMRSAqLworICAg
IGNhc2UgMHg1MDogIC8qIElOVENfSURMRSAqLwogICAgICAgICByZXR1cm4gcy0+YXV0b2lkbGUg
JiAzOwoKICAgICAvKiBQZXItYmFuayByZWdpc3RlcnMgKi8KLSAgICBjYXNlIDB4ODA6IC8qIElO
VENfSVRSICovCisgICAgY2FzZSAweDgwOiAgLyogSU5UQ19JVFIgKi8KICAgICAgICAgcmV0dXJu
IGJhbmstPmlucHV0czsKCi0gICAgY2FzZSAweDg0OiAvKiBJTlRDX01JUiAqLworICAgIGNhc2Ug
MHg4NDogIC8qIElOVENfTUlSICovCiAgICAgICAgIHJldHVybiBiYW5rLT5tYXNrOwoKLSAgICBj
YXNlIDB4ODg6IC8qIElOVENfTUlSX0NMRUFSICovCi0gICAgY2FzZSAweDhjOiAvKiBJTlRDX01J
Ul9TRVQgKi8KKyAgICBjYXNlIDB4ODg6ICAvKiBJTlRDX01JUl9DTEVBUiAqLworICAgIGNhc2Ug
MHg4YzogIC8qIElOVENfTUlSX1NFVCAqLwogICAgICAgICByZXR1cm4gMDsKCi0gICAgY2FzZSAw
eDkwOiAvKiBJTlRDX0lTUl9TRVQgKi8KKyAgICBjYXNlIDB4OTA6ICAvKiBJTlRDX0lTUl9TRVQg
Ki8KICAgICAgICAgcmV0dXJuIGJhbmstPnN3aTsKCi0gICAgY2FzZSAweDk0OiAvKiBJTlRDX0lT
Ul9DTEVBUiAqLworICAgIGNhc2UgMHg5NDogIC8qIElOVENfSVNSX0NMRUFSICovCiAgICAgICAg
IHJldHVybiAwOwoKLSAgICBjYXNlIDB4OTg6IC8qIElOVENfUEVORElOR19JUlEgKi8KKyAgICBj
YXNlIDB4OTg6ICAvKiBJTlRDX1BFTkRJTkdfSVJRICovCiAgICAgICAgIHJldHVybiBiYW5rLT5p
cnFzICYgfmJhbmstPm1hc2sgJiB+YmFuay0+ZmlxOwoKLSAgICBjYXNlIDB4OWM6IC8qIElOVENf
UEVORElOR19GSVEgKi8KKyAgICBjYXNlIDB4OWM6ICAvKiBJTlRDX1BFTkRJTkdfRklRICovCiAg
ICAgICAgIHJldHVybiBiYW5rLT5pcnFzICYgfmJhbmstPm1hc2sgJiBiYW5rLT5maXE7CgogICAg
IC8qIFBlci1saW5lIHJlZ2lzdGVycyAqLwotICAgIGNhc2UgMHgxMDAgLi4uIDB4MzAwOiAvKiBJ
TlRDX0lMUiAqLworICAgIGNhc2UgMHgxMDAgLi4uIDB4MzAwOiAgICAgICAvKiBJTlRDX0lMUiAq
LwogICAgICAgICBiYW5rX25vID0zRCAob2Zmc2V0IC0gMHgxMDApID4+IDc7Ci0gICAgICAgIGlm
IChiYW5rX25vID4gcy0+bmJhbmtzKQorICAgICAgICBpZiAoYmFua19ubyA+IHMtPm5iYW5rcykg
ewogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgYmFuayA9M0QgJnMtPmJh
bmtbYmFua19ub107CiAgICAgICAgIGxpbmVfbm8gPTNEIChvZmZzZXQgJiAweDdmKSA+PiAyOwog
ICAgICAgICByZXR1cm4gKGJhbmstPnByaW9yaXR5W2xpbmVfbm9dIDw8IDIpIHwKQEAgLTUyMSw3
ICs1MjcsNyBAQCBzdGF0aWMgdm9pZCBvbWFwMl9pbnRoX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdh
ZGRyIGFkZHIsCiAgICAgfQoKICAgICBzd2l0Y2ggKG9mZnNldCkgewotICAgIGNhc2UgMHgxMDog
LyogSU5UQ19TWVNDT05GSUcgKi8KKyAgICBjYXNlIDB4MTA6ICAvKiBJTlRDX1NZU0NPTkZJRyAq
LwogICAgICAgICBzLT5hdXRvaWRsZSAmPTNEIDQ7CiAgICAgICAgIHMtPmF1dG9pZGxlIHw9M0Qg
KHZhbHVlICYgMSkgPDwgMjsKICAgICAgICAgaWYgKHZhbHVlICYgMikgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKgpTT0ZUUkVTRVQgKi8KQEAgLTUyOSwyMSArNTM1
LDIxIEBAIHN0YXRpYyB2b2lkIG9tYXAyX2ludGhfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIK
YWRkciwKICAgICAgICAgfQogICAgICAgICByZXR1cm47CgotICAgIGNhc2UgMHg0ODogLyogSU5U
Q19DT05UUk9MICovCi0gICAgICAgIHMtPm1hc2sgPTNEICh2YWx1ZSAmIDQpID8gMCA6IH4wOyAv
KiBHTE9CQUxNQVNLICovCi0gICAgICAgIGlmICh2YWx1ZSAmIDIpIHsgLyogTkVXRklRQUdSICov
CisgICAgY2FzZSAweDQ4OiAgLyogSU5UQ19DT05UUk9MICovCisgICAgICAgIHMtPm1hc2sgPTNE
ICh2YWx1ZSAmIDQpID8gMCA6IH4wOyAgICAgICAgICAgICAgICAgICAgICAgICAvKgpHTE9CQUxN
QVNLICovCisgICAgICAgIGlmICh2YWx1ZSAmIDIpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyoKTkVXRklRQUdSICovCiAgICAgICAgICAgICBxZW11X3NldF9pcnEo
cy0+cGFyZW50X2ludHJbMV0sIDApOwogICAgICAgICAgICAgcy0+bmV3X2FnclsxXSA9M0QgfjA7
CiAgICAgICAgICAgICBvbWFwX2ludGhfdXBkYXRlKHMsIDEpOwogICAgICAgICB9Ci0gICAgICAg
IGlmICh2YWx1ZSAmIDEpIHsgLyogTkVXSVJRQUdSICovCisgICAgICAgIGlmICh2YWx1ZSAmIDEp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKTkVXSVJRQUdSICov
CiAgICAgICAgICAgICBxZW11X3NldF9pcnEocy0+cGFyZW50X2ludHJbMF0sIDApOwogICAgICAg
ICAgICAgcy0+bmV3X2FnclswXSA9M0QgfjA7CiAgICAgICAgICAgICBvbWFwX2ludGhfdXBkYXRl
KHMsIDApOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKCi0gICAgY2FzZSAweDRjOiAvKiBJ
TlRDX1BST1RFQ1RJT04gKi8KKyAgICBjYXNlIDB4NGM6ICAvKiBJTlRDX1BST1RFQ1RJT04gKi8K
ICAgICAgICAgLyogVE9ETzogTWFrZSBhIGJpdG1hcCAob3Igc2l6ZW9mKGNoYXIpbWFwKSBvZiBh
Y2Nlc3MgcHJpdmlsZWdlcwogICAgICAgICAgKiBmb3IgZXZlcnkgcmVnaXN0ZXIsIHNlZSBDaGFw
dGVyIDMgYW5kIDQgZm9yIHByaXZpbGVnZWQgbW9kZS4gICovCiAgICAgICAgIGlmICh2YWx1ZSAm
IDEpCkBAIC01NTEsNDQgKzU1Nyw0NSBAQCBzdGF0aWMgdm9pZCBvbWFwMl9pbnRoX3dyaXRlKHZv
aWQgKm9wYXF1ZSwgaHdhZGRyCmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19m
dW5jX18pOwogICAgICAgICByZXR1cm47CgotICAgIGNhc2UgMHg1MDogLyogSU5UQ19JRExFICov
CisgICAgY2FzZSAweDUwOiAgLyogSU5UQ19JRExFICovCiAgICAgICAgIHMtPmF1dG9pZGxlICY9
M0QgfjM7CiAgICAgICAgIHMtPmF1dG9pZGxlIHw9M0QgdmFsdWUgJiAzOwogICAgICAgICByZXR1
cm47CgogICAgIC8qIFBlci1iYW5rIHJlZ2lzdGVycyAqLwotICAgIGNhc2UgMHg4NDogLyogSU5U
Q19NSVIgKi8KKyAgICBjYXNlIDB4ODQ6ICAvKiBJTlRDX01JUiAqLwogICAgICAgICBiYW5rLT5t
YXNrID0zRCB2YWx1ZTsKICAgICAgICAgb21hcF9pbnRoX3VwZGF0ZShzLCAwKTsKICAgICAgICAg
b21hcF9pbnRoX3VwZGF0ZShzLCAxKTsKICAgICAgICAgcmV0dXJuOwoKLSAgICBjYXNlIDB4ODg6
IC8qIElOVENfTUlSX0NMRUFSICovCisgICAgY2FzZSAweDg4OiAgLyogSU5UQ19NSVJfQ0xFQVIg
Ki8KICAgICAgICAgYmFuay0+bWFzayAmPTNEIH52YWx1ZTsKICAgICAgICAgb21hcF9pbnRoX3Vw
ZGF0ZShzLCAwKTsKICAgICAgICAgb21hcF9pbnRoX3VwZGF0ZShzLCAxKTsKICAgICAgICAgcmV0
dXJuOwoKLSAgICBjYXNlIDB4OGM6IC8qIElOVENfTUlSX1NFVCAqLworICAgIGNhc2UgMHg4Yzog
IC8qIElOVENfTUlSX1NFVCAqLwogICAgICAgICBiYW5rLT5tYXNrIHw9M0QgdmFsdWU7CiAgICAg
ICAgIHJldHVybjsKCi0gICAgY2FzZSAweDkwOiAvKiBJTlRDX0lTUl9TRVQgKi8KKyAgICBjYXNl
IDB4OTA6ICAvKiBJTlRDX0lTUl9TRVQgKi8KICAgICAgICAgYmFuay0+aXJxcyB8PTNEIGJhbmst
PnN3aSB8PTNEIHZhbHVlOwogICAgICAgICBvbWFwX2ludGhfdXBkYXRlKHMsIDApOwogICAgICAg
ICBvbWFwX2ludGhfdXBkYXRlKHMsIDEpOwogICAgICAgICByZXR1cm47CgotICAgIGNhc2UgMHg5
NDogLyogSU5UQ19JU1JfQ0xFQVIgKi8KKyAgICBjYXNlIDB4OTQ6ICAvKiBJTlRDX0lTUl9DTEVB
UiAqLwogICAgICAgICBiYW5rLT5zd2kgJj0zRCB+dmFsdWU7CiAgICAgICAgIGJhbmstPmlycXMg
PTNEIGJhbmstPnN3aSAmIGJhbmstPmlucHV0czsKICAgICAgICAgcmV0dXJuOwoKICAgICAvKiBQ
ZXItbGluZSByZWdpc3RlcnMgKi8KLSAgICBjYXNlIDB4MTAwIC4uLiAweDMwMDogLyogSU5UQ19J
TFIgKi8KKyAgICBjYXNlIDB4MTAwIC4uLiAweDMwMDogICAgICAgLyogSU5UQ19JTFIgKi8KICAg
ICAgICAgYmFua19ubyA9M0QgKG9mZnNldCAtIDB4MTAwKSA+PiA3OwotICAgICAgICBpZiAoYmFu
a19ubyA+IHMtPm5iYW5rcykKKyAgICAgICAgaWYgKGJhbmtfbm8gPiBzLT5uYmFua3MpIHsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGJhbmsgPTNEICZzLT5iYW5rW2Jh
bmtfbm9dOwogICAgICAgICBsaW5lX25vID0zRCAob2Zmc2V0ICYgMHg3ZikgPj4gMjsKICAgICAg
ICAgYmFuay0+cHJpb3JpdHlbbGluZV9ub10gPTNEICh2YWx1ZSA+PiAyKSAmIDB4M2Y7CkBAIC01
OTYsMTMgKzYwMywxMyBAQCBzdGF0aWMgdm9pZCBvbWFwMl9pbnRoX3dyaXRlKHZvaWQgKm9wYXF1
ZSwgaHdhZGRyCmFkZHIsCiAgICAgICAgIGJhbmstPmZpcSB8PTNEICh2YWx1ZSAmIDEpIDw8IGxp
bmVfbm87CiAgICAgICAgIHJldHVybjsKCi0gICAgY2FzZSAweDAwOiAvKiBJTlRDX1JFVklTSU9O
ICovCi0gICAgY2FzZSAweDE0OiAvKiBJTlRDX1NZU1NUQVRVUyAqLwotICAgIGNhc2UgMHg0MDog
LyogSU5UQ19TSVJfSVJRICovCi0gICAgY2FzZSAweDQ0OiAvKiBJTlRDX1NJUl9GSVEgKi8KLSAg
ICBjYXNlIDB4ODA6IC8qIElOVENfSVRSICovCi0gICAgY2FzZSAweDk4OiAvKiBJTlRDX1BFTkRJ
TkdfSVJRICovCi0gICAgY2FzZSAweDljOiAvKiBJTlRDX1BFTkRJTkdfRklRICovCisgICAgY2Fz
ZSAweDAwOiAgLyogSU5UQ19SRVZJU0lPTiAqLworICAgIGNhc2UgMHgxNDogIC8qIElOVENfU1lT
U1RBVFVTICovCisgICAgY2FzZSAweDQwOiAgLyogSU5UQ19TSVJfSVJRICovCisgICAgY2FzZSAw
eDQ0OiAgLyogSU5UQ19TSVJfRklRICovCisgICAgY2FzZSAweDgwOiAgLyogSU5UQ19JVFIgKi8K
KyAgICBjYXNlIDB4OTg6ICAvKiBJTlRDX1BFTkRJTkdfSVJRICovCisgICAgY2FzZSAweDljOiAg
LyogSU5UQ19QRU5ESU5HX0ZJUSAqLwogICAgICAgICBPTUFQX1JPX1JFRyhhZGRyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL2h3L21pc2MvY2J1cy5jIGIvaHcvbWlzYy9j
YnVzLmMKaW5kZXggNjUzZThkZGNkNS4uYTA5MjMyZTc1NSAxMDA2NDQKLS0tIGEvaHcvbWlzYy9j
YnVzLmMKKysrIGIvaHcvbWlzYy9jYnVzLmMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJo
dy9taXNjL2NidXMuaCIKICNpbmNsdWRlICJzeXNlbXUvcnVuc3RhdGUuaCIKCi0vLyNkZWZpbmUg
REVCVUcKKy8qI2RlZmluZSBERUJVRyovCgogdHlwZWRlZiBzdHJ1Y3QgewogICAgIHZvaWQgKm9w
YXF1ZTsKQEAgLTc4LDEzICs3OCwxNSBAQCBzdGF0aWMgdm9pZCBjYnVzX2N5Y2xlKENCdXNQcml2
ICpzKQogICAgICAgICBzLT5kaXIgPTNEICFzLT5ydzsKICAgICAgICAgcy0+dmFsID0zRCAwOwoK
LSAgICAgICAgaWYgKHMtPnJ3KQorICAgICAgICBpZiAocy0+cncpIHsKICAgICAgICAgICAgIGNi
dXNfaW8ocyk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CgogICAgIGNhc2UgY2J1c192YWx1
ZToKLSAgICAgICAgaWYgKCFzLT5ydykKKyAgICAgICAgaWYgKCFzLT5ydykgewogICAgICAgICAg
ICAgY2J1c19pbyhzKTsKKyAgICAgICAgfQoKICAgICAgICAgcy0+Y3ljbGUgPTNEIGNidXNfYWRk
cmVzczsKICAgICAgICAgcy0+Yml0ID0zRCA4OwpAQCAtOTksMTMgKzEwMSwxNSBAQCBzdGF0aWMg
dm9pZCBjYnVzX2Nsayh2b2lkICpvcGFxdWUsIGludCBsaW5lLCBpbnQgbGV2ZWwpCiAgICAgQ0J1
c1ByaXYgKnMgPTNEIChDQnVzUHJpdiAqKSBvcGFxdWU7CgogICAgIGlmICghcy0+c2VsICYmIGxl
dmVsICYmICFzLT5jbGspIHsKLSAgICAgICAgaWYgKHMtPmRpcikKLSAgICAgICAgICAgIHMtPnZh
bCB8PTNEIHMtPmRhdCA8PCAocy0+Yml0IC0tKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
cWVtdV9zZXRfaXJxKHMtPmRhdF9vdXQsIChzLT52YWwgPj4gKHMtPmJpdCAtLSkpICYgMSk7Cisg
ICAgICAgIGlmIChzLT5kaXIpIHsKKyAgICAgICAgICAgIHMtPnZhbCB8PTNEIHMtPmRhdCA8PCAo
cy0+Yml0LS0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcWVtdV9zZXRfaXJxKHMt
PmRhdF9vdXQsIChzLT52YWwgPj4gKHMtPmJpdC0tKSkgJiAxKTsKKyAgICAgICAgfQoKLSAgICAg
ICAgaWYgKHMtPmJpdCA8IDApCisgICAgICAgIGlmIChzLT5iaXQgPCAwKSB7CiAgICAgICAgICAg
ICBjYnVzX2N5Y2xlKHMpOworICAgICAgICB9CiAgICAgfQoKICAgICBzLT5jbGsgPTNEIGxldmVs
OwpAQCAtMTc5LDYxICsxODMsNjEgQEAgc3RhdGljIHZvaWQgcmV0dV9pbnRlcnJ1cHRfdXBkYXRl
KENCdXNSZXR1ICpzKQogICAgIHFlbXVfc2V0X2lycShzLT5pcnEsIHMtPmlycXN0ICYgfnMtPmly
cWVuKTsKIH0KCi0jZGVmaW5lIFJFVFVfUkVHX0FTSUNSIDB4MDAgLyogKFJPKSBBU0lDIElEICYg
cmV2aXNpb24gKi8KLSNkZWZpbmUgUkVUVV9SRUdfSURSIDB4MDEgLyogKFQpICBJbnRlcnJ1cHQg
SUQgKi8KLSNkZWZpbmUgUkVUVV9SRUdfSU1SIDB4MDIgLyogKFJXKSBJbnRlcnJ1cHQgbWFzayAq
LwotI2RlZmluZSBSRVRVX1JFR19SVENEU1IgMHgwMyAvKiAoUlcpIFJUQyBzZWNvbmRzIHJlZ2lz
dGVyICovCi0jZGVmaW5lIFJFVFVfUkVHX1JUQ0hNUiAweDA0IC8qIChSTykgUlRDIGhvdXJzIGFu
ZCBtaW51dGVzIHJlZyAqLwotI2RlZmluZSBSRVRVX1JFR19SVENITUFSIDB4MDUgLyogKFJXKSBS
VEMgaG91cnMgYW5kIG1pbnV0ZXMgc2V0IHJlZyAqLwotI2RlZmluZSBSRVRVX1JFR19SVENDQUxS
IDB4MDYgLyogKFJXKSBSVEMgY2FsaWJyYXRpb24gcmVnaXN0ZXIgKi8KLSNkZWZpbmUgUkVUVV9S
RUdfQURDUiAweDA4IC8qIChSVykgQURDIHJlc3VsdCByZWdpc3RlciAqLwotI2RlZmluZSBSRVRV
X1JFR19BRENTQ1IgMHgwOSAvKiAoUlcpIEFEQyBzYW1wbGUgY29udHJvbCByZWdpc3RlciAqLwot
I2RlZmluZSBSRVRVX1JFR19BRkNSIDB4MGEgLyogKFJXKSBBRkMgcmVnaXN0ZXIgKi8KLSNkZWZp
bmUgUkVUVV9SRUdfQU5USUZSIDB4MGIgLyogKFJXKSBBbnRpRiByZWdpc3RlciAqLwotI2RlZmlu
ZSBSRVRVX1JFR19DQUxJQlIgMHgwYyAvKiAoUlcpIENhbGliUiByZWdpc3RlciovCi0jZGVmaW5l
IFJFVFVfUkVHX0NDUjEgMHgwZCAvKiAoUlcpIENvbW1vbiBjb250cm9sIHJlZ2lzdGVyIDEgKi8K
LSNkZWZpbmUgUkVUVV9SRUdfQ0NSMiAweDBlIC8qIChSVykgQ29tbW9uIGNvbnRyb2wgcmVnaXN0
ZXIgMiAqLwotI2RlZmluZSBSRVRVX1JFR19SQ1RSTF9DTFIgMHgwZiAvKiAoVCkgIFJlZ3VsYXRv
ciBjbGVhciByZWdpc3RlciAqLwotI2RlZmluZSBSRVRVX1JFR19SQ1RSTF9TRVQgMHgxMCAvKiAo
VCkgIFJlZ3VsYXRvciBzZXQgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgUkVUVV9SRUdfVFhDUiAweDEx
IC8qIChSVykgVHhDIHJlZ2lzdGVyICovCi0jZGVmaW5lIFJFVFVfUkVHX1NUQVRVUyAweDE2IC8q
IChSTykgU3RhdHVzIHJlZ2lzdGVyICovCi0jZGVmaW5lIFJFVFVfUkVHX1dBVENIRE9HIDB4MTcg
LyogKFJXKSBXYXRjaGRvZyByZWdpc3RlciAqLwotI2RlZmluZSBSRVRVX1JFR19BVURUWFIgMHgx
OCAvKiAoUlcpIEF1ZGlvIENvZGVjIFR4IHJlZ2lzdGVyICovCi0jZGVmaW5lIFJFVFVfUkVHX0FV
RFBBUiAweDE5IC8qIChSVykgQXVkaW9QQSByZWdpc3RlciAqLwotI2RlZmluZSBSRVRVX1JFR19B
VURSWFIxIDB4MWEgLyogKFJXKSBBdWRpbyByZWNlaXZlIHJlZ2lzdGVyIDEgKi8KLSNkZWZpbmUg
UkVUVV9SRUdfQVVEUlhSMiAweDFiIC8qIChSVykgQXVkaW8gcmVjZWl2ZSByZWdpc3RlciAyICov
Ci0jZGVmaW5lIFJFVFVfUkVHX1NHUjEgMHgxYyAvKiAoUlcpICovCi0jZGVmaW5lIFJFVFVfUkVH
X1NDUjEgMHgxZCAvKiAoUlcpICovCi0jZGVmaW5lIFJFVFVfUkVHX1NHUjIgMHgxZSAvKiAoUlcp
ICovCi0jZGVmaW5lIFJFVFVfUkVHX1NDUjIgMHgxZiAvKiAoUlcpICovCisjZGVmaW5lIFJFVFVf
UkVHX0FTSUNSICAgICAgMHgwMCAgLyogKFJPKSBBU0lDIElEICYgcmV2aXNpb24gKi8KKyNkZWZp
bmUgUkVUVV9SRUdfSURSICAgICAgICAweDAxICAvKiAoVCkgIEludGVycnVwdCBJRCAqLworI2Rl
ZmluZSBSRVRVX1JFR19JTVIgICAgICAgIDB4MDIgIC8qIChSVykgSW50ZXJydXB0IG1hc2sgKi8K
KyNkZWZpbmUgUkVUVV9SRUdfUlRDRFNSICAgICAweDAzICAvKiAoUlcpIFJUQyBzZWNvbmRzIHJl
Z2lzdGVyICovCisjZGVmaW5lIFJFVFVfUkVHX1JUQ0hNUiAgICAgMHgwNCAgLyogKFJPKSBSVEMg
aG91cnMgYW5kIG1pbnV0ZXMgcmVnICovCisjZGVmaW5lIFJFVFVfUkVHX1JUQ0hNQVIgICAgMHgw
NSAgLyogKFJXKSBSVEMgaG91cnMgYW5kIG1pbnV0ZXMgc2V0IHJlZyAqLworI2RlZmluZSBSRVRV
X1JFR19SVENDQUxSICAgIDB4MDYgIC8qIChSVykgUlRDIGNhbGlicmF0aW9uIHJlZ2lzdGVyICov
CisjZGVmaW5lIFJFVFVfUkVHX0FEQ1IgICAgICAgMHgwOCAgLyogKFJXKSBBREMgcmVzdWx0IHJl
Z2lzdGVyICovCisjZGVmaW5lIFJFVFVfUkVHX0FEQ1NDUiAgICAgMHgwOSAgLyogKFJXKSBBREMg
c2FtcGxlIGNvbnRyb2wgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgUkVUVV9SRUdfQUZDUiAgICAgICAw
eDBhICAvKiAoUlcpIEFGQyByZWdpc3RlciAqLworI2RlZmluZSBSRVRVX1JFR19BTlRJRlIgICAg
IDB4MGIgIC8qIChSVykgQW50aUYgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgUkVUVV9SRUdfQ0FMSUJS
ICAgICAweDBjICAvKiAoUlcpIENhbGliUiByZWdpc3RlciovCisjZGVmaW5lIFJFVFVfUkVHX0ND
UjEgICAgICAgMHgwZCAgLyogKFJXKSBDb21tb24gY29udHJvbCByZWdpc3RlciAxICovCisjZGVm
aW5lIFJFVFVfUkVHX0NDUjIgICAgICAgMHgwZSAgLyogKFJXKSBDb21tb24gY29udHJvbCByZWdp
c3RlciAyICovCisjZGVmaW5lIFJFVFVfUkVHX1JDVFJMX0NMUiAgMHgwZiAgLyogKFQpICBSZWd1
bGF0b3IgY2xlYXIgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgUkVUVV9SRUdfUkNUUkxfU0VUICAweDEw
ICAvKiAoVCkgIFJlZ3VsYXRvciBzZXQgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgUkVUVV9SRUdfVFhD
UiAgICAgICAweDExICAvKiAoUlcpIFR4QyByZWdpc3RlciAqLworI2RlZmluZSBSRVRVX1JFR19T
VEFUVVMgICAgIDB4MTYgIC8qIChSTykgU3RhdHVzIHJlZ2lzdGVyICovCisjZGVmaW5lIFJFVFVf
UkVHX1dBVENIRE9HICAgMHgxNyAgLyogKFJXKSBXYXRjaGRvZyByZWdpc3RlciAqLworI2RlZmlu
ZSBSRVRVX1JFR19BVURUWFIgICAgIDB4MTggIC8qIChSVykgQXVkaW8gQ29kZWMgVHggcmVnaXN0
ZXIgKi8KKyNkZWZpbmUgUkVUVV9SRUdfQVVEUEFSICAgICAweDE5ICAvKiAoUlcpIEF1ZGlvUEEg
cmVnaXN0ZXIgKi8KKyNkZWZpbmUgUkVUVV9SRUdfQVVEUlhSMSAgICAweDFhICAvKiAoUlcpIEF1
ZGlvIHJlY2VpdmUgcmVnaXN0ZXIgMSAqLworI2RlZmluZSBSRVRVX1JFR19BVURSWFIyICAgIDB4
MWIgIC8qIChSVykgQXVkaW8gcmVjZWl2ZSByZWdpc3RlciAyICovCisjZGVmaW5lIFJFVFVfUkVH
X1NHUjEgICAgICAgMHgxYyAgLyogKFJXKSAqLworI2RlZmluZSBSRVRVX1JFR19TQ1IxICAgICAg
IDB4MWQgIC8qIChSVykgKi8KKyNkZWZpbmUgUkVUVV9SRUdfU0dSMiAgICAgICAweDFlICAvKiAo
UlcpICovCisjZGVmaW5lIFJFVFVfUkVHX1NDUjIgICAgICAgMHgxZiAgLyogKFJXKSAqLwoKIC8q
IFJldHUgSW50ZXJydXB0IHNvdXJjZXMgKi8KIGVudW0gewotICAgIHJldHVfaW50X3B3ciA9M0Qg
MCwgLyogUG93ZXIgYnV0dG9uICovCi0gICAgcmV0dV9pbnRfY2hhciA9M0QgMSwgLyogQ2hhcmdl
ciAqLwotICAgIHJldHVfaW50X3J0Y3MgPTNEIDIsIC8qIFNlY29uZHMgKi8KLSAgICByZXR1X2lu
dF9ydGNtID0zRCAzLCAvKiBNaW51dGVzICovCi0gICAgcmV0dV9pbnRfcnRjZCA9M0QgNCwgLyog
RGF5cyAqLwotICAgIHJldHVfaW50X3J0Y2EgPTNEIDUsIC8qIEFsYXJtICovCi0gICAgcmV0dV9p
bnRfaG9vayA9M0QgNiwgLyogSG9vayAqLwotICAgIHJldHVfaW50X2hlYWQgPTNEIDcsIC8qIEhl
YWRzZXQgKi8KLSAgICByZXR1X2ludF9hZGNzID0zRCA4LCAvKiBBREMgc2FtcGxlICovCisgICAg
cmV0dV9pbnRfcHdyICA9M0QgMCwgIC8qIFBvd2VyIGJ1dHRvbiAqLworICAgIHJldHVfaW50X2No
YXIgPTNEIDEsICAvKiBDaGFyZ2VyICovCisgICAgcmV0dV9pbnRfcnRjcyA9M0QgMiwgIC8qIFNl
Y29uZHMgKi8KKyAgICByZXR1X2ludF9ydGNtID0zRCAzLCAgLyogTWludXRlcyAqLworICAgIHJl
dHVfaW50X3J0Y2QgPTNEIDQsICAvKiBEYXlzICovCisgICAgcmV0dV9pbnRfcnRjYSA9M0QgNSwg
IC8qIEFsYXJtICovCisgICAgcmV0dV9pbnRfaG9vayA9M0QgNiwgIC8qIEhvb2sgKi8KKyAgICBy
ZXR1X2ludF9oZWFkID0zRCA3LCAgLyogSGVhZHNldCAqLworICAgIHJldHVfaW50X2FkY3MgPTNE
IDgsICAvKiBBREMgc2FtcGxlICovCiB9OwoKIC8qIFJldHUgQURDIGNoYW5uZWwgd2lyaW5nICov
CiBlbnVtIHsKLSAgICByZXR1X2FkY19ic2kgPTNEIDEsIC8qIEJTSSAqLwotICAgIHJldHVfYWRj
X2JhdHRfdGVtcCA9M0QgMiwgLyogQmF0dGVyeSB0ZW1wZXJhdHVyZSAqLwotICAgIHJldHVfYWRj
X2NoZ192b2x0ID0zRCAzLCAvKiBDaGFyZ2VyIHZvbHRhZ2UgKi8KLSAgICByZXR1X2FkY19oZWFk
X2RldCA9M0QgNCwgLyogSGVhZHNldCBkZXRlY3Rpb24gKi8KLSAgICByZXR1X2FkY19ob29rX2Rl
dCA9M0QgNSwgLyogSG9vayBkZXRlY3Rpb24gKi8KLSAgICByZXR1X2FkY19yZl9ncCA9M0QgNiwg
LyogUkYgR1AgKi8KLSAgICByZXR1X2FkY190eF9kZXQgPTNEIDcsIC8qIFdpZGViYW5kIFR4IGRl
dGVjdGlvbiAqLwotICAgIHJldHVfYWRjX2JhdHRfdm9sdCA9M0QgOCwgLyogQmF0dGVyeSB2b2x0
YWdlICovCi0gICAgcmV0dV9hZGNfc2VucyA9M0QgMTAsIC8qIExpZ2h0IHNlbnNvciAqLwotICAg
IHJldHVfYWRjX3NlbnNfdGVtcCA9M0QgMTEsIC8qIExpZ2h0IHNlbnNvciB0ZW1wZXJhdHVyZSAq
LwotICAgIHJldHVfYWRjX2JiYXR0X3ZvbHQgPTNEIDEyLCAvKiBCYWNrdXAgYmF0dGVyeSB2b2x0
YWdlICovCi0gICAgcmV0dV9hZGNfc2VsZl90ZW1wID0zRCAxMywgLyogUkVUVSB0ZW1wZXJhdHVy
ZSAqLworICAgIHJldHVfYWRjX2JzaSA9M0QgMSwgICAgICAgICAvKiBCU0kgKi8KKyAgICByZXR1
X2FkY19iYXR0X3RlbXAgPTNEIDIsICAgLyogQmF0dGVyeSB0ZW1wZXJhdHVyZSAqLworICAgIHJl
dHVfYWRjX2NoZ192b2x0ID0zRCAzLCAgICAvKiBDaGFyZ2VyIHZvbHRhZ2UgKi8KKyAgICByZXR1
X2FkY19oZWFkX2RldCA9M0QgNCwgICAgLyogSGVhZHNldCBkZXRlY3Rpb24gKi8KKyAgICByZXR1
X2FkY19ob29rX2RldCA9M0QgNSwgICAgLyogSG9vayBkZXRlY3Rpb24gKi8KKyAgICByZXR1X2Fk
Y19yZl9ncCA9M0QgNiwgICAgICAgLyogUkYgR1AgKi8KKyAgICByZXR1X2FkY190eF9kZXQgPTNE
IDcsICAgICAgLyogV2lkZWJhbmQgVHggZGV0ZWN0aW9uICovCisgICAgcmV0dV9hZGNfYmF0dF92
b2x0ID0zRCA4LCAgIC8qIEJhdHRlcnkgdm9sdGFnZSAqLworICAgIHJldHVfYWRjX3NlbnMgPTNE
IDEwLCAgICAgICAvKiBMaWdodCBzZW5zb3IgKi8KKyAgICByZXR1X2FkY19zZW5zX3RlbXAgPTNE
IDExLCAgLyogTGlnaHQgc2Vuc29yIHRlbXBlcmF0dXJlICovCisgICAgcmV0dV9hZGNfYmJhdHRf
dm9sdCA9M0QgMTIsIC8qIEJhY2t1cCBiYXR0ZXJ5IHZvbHRhZ2UgKi8KKyAgICByZXR1X2FkY19z
ZWxmX3RlbXAgPTNEIDEzLCAgLyogUkVUVSB0ZW1wZXJhdHVyZSAqLwogfTsKCiBzdGF0aWMgaW5s
aW5lIHVpbnQxNl90IHJldHVfcmVhZChDQnVzUmV0dSAqcywgaW50IHJlZykKQEAgLTI0Niw3ICsy
NTAsNyBAQCBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJldHVfcmVhZChDQnVzUmV0dSAqcywgaW50
IHJlZykKICAgICBjYXNlIFJFVFVfUkVHX0FTSUNSOgogICAgICAgICByZXR1cm4gMHgwMjE1IHwg
KHMtPmlzX3ZpbG1hIDw8IDcpOwoKLSAgICBjYXNlIFJFVFVfUkVHX0lEUjogLyogVE9ETzogT3Ig
aXMgdGhpcyBmZnMocy0+aXJxc3QpPyAgKi8KKyAgICBjYXNlIFJFVFVfUkVHX0lEUjogIC8qIFRP
RE86IE9yIGlzIHRoaXMgZmZzKHMtPmlycXN0KT8gICovCiAgICAgICAgIHJldHVybiBzLT5pcnFz
dDsKCiAgICAgY2FzZSBSRVRVX1JFR19JTVI6CkBAIC0zNTUsOCArMzU5LDkgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHJldHVfd3JpdGUoQ0J1c1JldHUgKnMsIGludCByZWcsCnVpbnQxNl90IHZhbCkK
ICAgICAgICAgYnJlYWs7CgogICAgIGNhc2UgUkVUVV9SRUdfV0FUQ0hET0c6Ci0gICAgICAgIGlm
ICh2YWwgPTNEPTNEIDAgJiYgKHMtPmNjWzBdICYgMikpCisgICAgICAgIGlmICh2YWwgPTNEPTNE
IDAgJiYgKHMtPmNjWzBdICYgMikpIHsKICAgICAgICAgICAgIHFlbXVfc3lzdGVtX3NodXRkb3du
X3JlcXVlc3QoU0hVVERPV05fQ0FVU0VfR1VFU1RfU0hVVERPV04pOworICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwoKICAgICBjYXNlIFJFVFVfUkVHX1RYQ1I6CkBAIC0zODAsMTAgKzM4NSwxMSBA
QCBzdGF0aWMgdm9pZCByZXR1X2lvKHZvaWQgKm9wYXF1ZSwgaW50IHJ3LCBpbnQgcmVnLAp1aW50
MTZfdCAqdmFsKQogewogICAgIENCdXNSZXR1ICpzID0zRCAoQ0J1c1JldHUgKikgb3BhcXVlOwoK
LSAgICBpZiAocncpCisgICAgaWYgKHJ3KSB7CiAgICAgICAgICp2YWwgPTNEIHJldHVfcmVhZChz
LCByZWcpOwotICAgIGVsc2UKKyAgICB9IGVsc2UgewogICAgICAgICByZXR1X3dyaXRlKHMsIHJl
ZywgKnZhbCk7CisgICAgfQogfQoKIHZvaWQgKnJldHVfaW5pdChxZW11X2lycSBpcnEsIGludCB2
aWxtYSkKQEAgLTQyNCw0NyArNDMwLDEyIEBAIHZvaWQgcmV0dV9rZXlfZXZlbnQodm9pZCAqcmV0
dSwgaW50IHN0YXRlKQogICAgIHMtPmlycXN0IHw9M0QgMSA8PCByZXR1X2ludF9wd3I7CiAgICAg
cmV0dV9pbnRlcnJ1cHRfdXBkYXRlKHMpOwoKLSAgICBpZiAoc3RhdGUpCisgICAgaWYgKHN0YXRl
KSB7CiAgICAgICAgIHMtPnN0YXR1cyAmPTNEIH4oMSA8PCA1KTsKLSAgICBlbHNlCisgICAgfSBl
bHNlIHsKICAgICAgICAgcy0+c3RhdHVzIHw9M0QgMSA8PCA1OwotfQotCi0jaWYgMAotc3RhdGlj
IHZvaWQgcmV0dV9oZWFkX2V2ZW50KHZvaWQgKnJldHUsIGludCBzdGF0ZSkKLXsKLSAgICBDQnVz
U2xhdmUgKnNsYXZlID0zRCAoQ0J1c1NsYXZlICopIHJldHU7Ci0gICAgQ0J1c1JldHUgKnMgPTNE
IChDQnVzUmV0dSAqKSBzbGF2ZS0+b3BhcXVlOwotCi0gICAgaWYgKChzLT5jY1swXSAmIDB4NTAw
KSA9M0Q9M0QgMHg1MDApIHsgLyogVE9ETzogV2hpY2ggYml0cz8gKi8KLSAgICAgICAgLyogVE9E
TzogcmVpc3N1ZSB0aGUgaW50ZXJydXB0IGV2ZXJ5IDEwMG1zIG9yIHNvLiAgKi8KLSAgICAgICAg
cy0+aXJxc3QgfD0zRCAxIDw8IHJldHVfaW50X2hlYWQ7Ci0gICAgICAgIHJldHVfaW50ZXJydXB0
X3VwZGF0ZShzKTsKICAgICB9Ci0KLSAgICBpZiAoc3RhdGUpCi0gICAgICAgIHMtPnJlc3VsdFty
ZXR1X2FkY19oZWFkX2RldF0gPTNEIDUwOwotICAgIGVsc2UKLSAgICAgICAgcy0+cmVzdWx0W3Jl
dHVfYWRjX2hlYWRfZGV0XSA9M0QgMTIzOwotfQotCi1zdGF0aWMgdm9pZCByZXR1X2hvb2tfZXZl
bnQodm9pZCAqcmV0dSwgaW50IHN0YXRlKQotewotICAgIENCdXNTbGF2ZSAqc2xhdmUgPTNEIChD
QnVzU2xhdmUgKikgcmV0dTsKLSAgICBDQnVzUmV0dSAqcyA9M0QgKENCdXNSZXR1ICopIHNsYXZl
LT5vcGFxdWU7Ci0KLSAgICBpZiAoKHMtPmNjWzBdICYgMHg1MDApID0zRD0zRCAweDUwMCkgewot
ICAgICAgICAvKiBUT0RPOiByZWlzc3VlIHRoZSBpbnRlcnJ1cHQgZXZlcnkgMTAwbXMgb3Igc28u
ICAqLwotICAgICAgICBzLT5pcnFzdCB8PTNEIDEgPDwgcmV0dV9pbnRfaG9vazsKLSAgICAgICAg
cmV0dV9pbnRlcnJ1cHRfdXBkYXRlKHMpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZSkKLSAgICAg
ICAgcy0+cmVzdWx0W3JldHVfYWRjX2hvb2tfZGV0XSA9M0QgNTA7Ci0gICAgZWxzZQotICAgICAg
ICBzLT5yZXN1bHRbcmV0dV9hZGNfaG9va19kZXRdID0zRCAxMjM7CiB9Ci0jZW5kaWYKCiAvKiBU
YWh2by9CZXR0eSAqLwogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtNDg1LDIwICs0NTYsMjAgQEAgc3Rh
dGljIHZvaWQgdGFodm9faW50ZXJydXB0X3VwZGF0ZShDQnVzVGFodm8gKnMpCiAgICAgcWVtdV9z
ZXRfaXJxKHMtPmlycSwgcy0+aXJxc3QgJiB+cy0+aXJxZW4pOwogfQoKLSNkZWZpbmUgVEFIVk9f
UkVHX0FTSUNSIDB4MDAgLyogKFJPKSBBU0lDIElEICYgcmV2aXNpb24gKi8KLSNkZWZpbmUgVEFI
Vk9fUkVHX0lEUiAweDAxIC8qIChUKSAgSW50ZXJydXB0IElEICovCi0jZGVmaW5lIFRBSFZPX1JF
R19JRFNSIDB4MDIgLyogKFJPKSBJbnRlcnJ1cHQgc3RhdHVzICovCi0jZGVmaW5lIFRBSFZPX1JF
R19JTVIgMHgwMyAvKiAoUlcpIEludGVycnVwdCBtYXNrICovCi0jZGVmaW5lIFRBSFZPX1JFR19D
SEFQV01SIDB4MDQgLyogKFJXKSBDaGFyZ2VyIFBXTSAqLwotI2RlZmluZSBUQUhWT19SRUdfTEVE
UFdNUiAweDA1IC8qIChSVykgTEVEIFBXTSAqLwotI2RlZmluZSBUQUhWT19SRUdfVVNCUiAweDA2
IC8qIChSVykgVVNCIGNvbnRyb2wgKi8KLSNkZWZpbmUgVEFIVk9fUkVHX1JDUiAweDA3IC8qIChS
VykgU29tZSBraW5kIG9mIHBvd2VyIG1hbmFnZW1lbnQgKi8KLSNkZWZpbmUgVEFIVk9fUkVHX0ND
UjEgMHgwOCAvKiAoUlcpIENvbW1vbiBjb250cm9sIHJlZ2lzdGVyIDEgKi8KLSNkZWZpbmUgVEFI
Vk9fUkVHX0NDUjIgMHgwOSAvKiAoUlcpIENvbW1vbiBjb250cm9sIHJlZ2lzdGVyIDIgKi8KLSNk
ZWZpbmUgVEFIVk9fUkVHX1RFU1RSMSAweDBhIC8qIChSVykgVGVzdCByZWdpc3RlciAxICovCi0j
ZGVmaW5lIFRBSFZPX1JFR19URVNUUjIgMHgwYiAvKiAoUlcpIFRlc3QgcmVnaXN0ZXIgMiAqLwot
I2RlZmluZSBUQUhWT19SRUdfTk9QUiAweDBjIC8qIChSVykgTnVtYmVyIG9mIHBlcmlvZHMgKi8K
LSNkZWZpbmUgVEFIVk9fUkVHX0ZSUiAweDBkIC8qIChSTykgRlIgKi8KKyNkZWZpbmUgVEFIVk9f
UkVHX0FTSUNSICAgMHgwMCAgLyogKFJPKSBBU0lDIElEICYgcmV2aXNpb24gKi8KKyNkZWZpbmUg
VEFIVk9fUkVHX0lEUiAgICAgMHgwMSAgLyogKFQpICBJbnRlcnJ1cHQgSUQgKi8KKyNkZWZpbmUg
VEFIVk9fUkVHX0lEU1IgICAgMHgwMiAgLyogKFJPKSBJbnRlcnJ1cHQgc3RhdHVzICovCisjZGVm
aW5lIFRBSFZPX1JFR19JTVIgICAgIDB4MDMgIC8qIChSVykgSW50ZXJydXB0IG1hc2sgKi8KKyNk
ZWZpbmUgVEFIVk9fUkVHX0NIQVBXTVIgMHgwNCAgLyogKFJXKSBDaGFyZ2VyIFBXTSAqLworI2Rl
ZmluZSBUQUhWT19SRUdfTEVEUFdNUiAweDA1ICAvKiAoUlcpIExFRCBQV00gKi8KKyNkZWZpbmUg
VEFIVk9fUkVHX1VTQlIgICAgMHgwNiAgLyogKFJXKSBVU0IgY29udHJvbCAqLworI2RlZmluZSBU
QUhWT19SRUdfUkNSICAgICAweDA3ICAvKiAoUlcpIFNvbWUga2luZCBvZiBwb3dlciBtYW5hZ2Vt
ZW50ICovCisjZGVmaW5lIFRBSFZPX1JFR19DQ1IxICAgIDB4MDggIC8qIChSVykgQ29tbW9uIGNv
bnRyb2wgcmVnaXN0ZXIgMSAqLworI2RlZmluZSBUQUhWT19SRUdfQ0NSMiAgICAweDA5ICAvKiAo
UlcpIENvbW1vbiBjb250cm9sIHJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgVEFIVk9fUkVHX1RFU1RS
MSAgMHgwYSAgLyogKFJXKSBUZXN0IHJlZ2lzdGVyIDEgKi8KKyNkZWZpbmUgVEFIVk9fUkVHX1RF
U1RSMiAgMHgwYiAgLyogKFJXKSBUZXN0IHJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgVEFIVk9fUkVH
X05PUFIgICAgMHgwYyAgLyogKFJXKSBOdW1iZXIgb2YgcGVyaW9kcyAqLworI2RlZmluZSBUQUhW
T19SRUdfRlJSICAgICAweDBkICAvKiAoUk8pIEZSICovCgogc3RhdGljIGlubGluZSB1aW50MTZf
dCB0YWh2b19yZWFkKENCdXNUYWh2byAqcywgaW50IHJlZykKIHsKQEAgLTUwOCwxMCArNDc5LDEw
IEBAIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgdGFodm9fcmVhZChDQnVzVGFodm8gKnMsIGludApy
ZWcpCgogICAgIHN3aXRjaCAocmVnKSB7CiAgICAgY2FzZSBUQUhWT19SRUdfQVNJQ1I6Ci0gICAg
ICAgIHJldHVybiAweDAwMjEgfCAocy0+aXNfYmV0dHkgPyAweDBiMDAgOiAweDAzMDApOyAvKiAy
MiBpbiBOODEwICovCisgICAgICAgIHJldHVybiAweDAwMjEgfCAocy0+aXNfYmV0dHkgPyAweDBi
MDAgOiAweDAzMDApOyAgLyogMjIgaW4gTjgxMCAqLwoKICAgICBjYXNlIFRBSFZPX1JFR19JRFI6
Ci0gICAgY2FzZSBUQUhWT19SRUdfSURTUjogLyogWFhYOiB3aGF0IGRvZXMgdGhpcyBkbz8gICov
CisgICAgY2FzZSBUQUhWT19SRUdfSURTUjogIC8qIFhYWDogd2hhdCBkb2VzIHRoaXMgZG8/ICAq
LwogICAgICAgICByZXR1cm4gcy0+aXJxc3Q7CgogICAgIGNhc2UgVEFIVk9fUkVHX0lNUjoKQEAg
LTU5NiwxMCArNTY3LDExIEBAIHN0YXRpYyB2b2lkIHRhaHZvX2lvKHZvaWQgKm9wYXF1ZSwgaW50
IHJ3LCBpbnQgcmVnLAp1aW50MTZfdCAqdmFsKQogewogICAgIENCdXNUYWh2byAqcyA9M0QgKENC
dXNUYWh2byAqKSBvcGFxdWU7CgotICAgIGlmIChydykKKyAgICBpZiAocncpIHsKICAgICAgICAg
KnZhbCA9M0QgdGFodm9fcmVhZChzLCByZWcpOwotICAgIGVsc2UKKyAgICB9IGVsc2UgewogICAg
ICAgICB0YWh2b193cml0ZShzLCByZWcsICp2YWwpOworICAgfQogfQoKIHZvaWQgKnRhaHZvX2lu
aXQocWVtdV9pcnEgaXJxLCBpbnQgYmV0dHkpCmRpZmYgLS1naXQgYS9ody9taXNjL29tYXBfY2xr
LmMgYi9ody9taXNjL29tYXBfY2xrLmMKaW5kZXggYzc3Y2EyZmM3NC4uZWMyMzQ1ZTlhYiAxMDA2
NDQKLS0tIGEvaHcvbWlzYy9vbWFwX2Nsay5jCisrKyBiL2h3L21pc2Mvb21hcF9jbGsuYwpAQCAt
MzAsMTc0ICszMCwxNzQgQEAgc3RydWN0IGNsayB7CiAgICAgc3RydWN0IGNsayAqcGFyZW50Owog
ICAgIHN0cnVjdCBjbGsgKmNoaWxkMTsKICAgICBzdHJ1Y3QgY2xrICpzaWJsaW5nOwotI2RlZmlu
ZSBBTFdBWVNfRU5BQkxFRCAoMSA8PCAwKQotI2RlZmluZSBDTE9DS19JTl9PTUFQMzEwICgxIDw8
IDEwKQotI2RlZmluZSBDTE9DS19JTl9PTUFQNzMwICgxIDw8IDExKQotI2RlZmluZSBDTE9DS19J
Tl9PTUFQMTUxMCAoMSA8PCAxMikKLSNkZWZpbmUgQ0xPQ0tfSU5fT01BUDE2WFggKDEgPDwgMTMp
Ci0jZGVmaW5lIENMT0NLX0lOX09NQVAyNDJYICgxIDw8IDE0KQotI2RlZmluZSBDTE9DS19JTl9P
TUFQMjQzWCAoMSA8PCAxNSkKLSNkZWZpbmUgQ0xPQ0tfSU5fT01BUDM0M1ggKDEgPDwgMTYpCisj
ZGVmaW5lIEFMV0FZU19FTkFCTEVEICAgICgxIDw8IDApCisjZGVmaW5lIENMT0NLX0lOX09NQVAz
MTAgICgxIDw8IDEwKQorI2RlZmluZSBDTE9DS19JTl9PTUFQNzMwICAoMSA8PCAxMSkKKyNkZWZp
bmUgQ0xPQ0tfSU5fT01BUDE1MTAgKDEgPDwgMTIpCisjZGVmaW5lIENMT0NLX0lOX09NQVAxNlhY
ICgxIDw8IDEzKQorI2RlZmluZSBDTE9DS19JTl9PTUFQMjQyWCAoMSA8PCAxNCkKKyNkZWZpbmUg
Q0xPQ0tfSU5fT01BUDI0M1ggKDEgPDwgMTUpCisjZGVmaW5lIENMT0NLX0lOX09NQVAzNDNYICgx
IDw8IDE2KQogICAgIHVpbnQzMl90IGZsYWdzOwogICAgIGludCBpZDsKCi0gICAgaW50IHJ1bm5p
bmc7IC8qIElzIGN1cnJlbnRseSB0aWNraW5nICovCi0gICAgaW50IGVuYWJsZWQ7IC8qIElzIGVu
YWJsZWQsIHJlZ2FyZGxlc3Mgb2YgaXRzIGlucHV0IGNsayAqLwotICAgIHVuc2lnbmVkIGxvbmcg
cmF0ZTsgLyogQ3VycmVudCByYXRlIChpZiAucnVubmluZykgKi8KLSAgICB1bnNpZ25lZCBpbnQg
ZGl2aXNvcjsgLyogUmF0ZSByZWxhdGl2ZSB0byBpbnB1dCAoaWYgLmVuYWJsZWQpICovCi0gICAg
dW5zaWduZWQgaW50IG11bHRpcGxpZXI7IC8qIFJhdGUgcmVsYXRpdmUgdG8gaW5wdXQgKGlmIC5l
bmFibGVkKSAqLwotICAgIHFlbXVfaXJxIHVzZXJzWzE2XTsgLyogV2hvIHRvIG5vdGlmeSBvbiBj
aGFuZ2UgKi8KLSAgICBpbnQgdXNlY291bnQ7IC8qIEF1dG9tYXRpY2FsbHkgaWRsZSB3aGVuIHVu
dXNlZCAqLworICAgIGludCBydW5uaW5nOyAgICAvKiBJcyBjdXJyZW50bHkgdGlja2luZyAqLwor
ICAgIGludCBlbmFibGVkOyAgICAvKiBJcyBlbmFibGVkLCByZWdhcmRsZXNzIG9mIGl0cyBpbnB1
dCBjbGsgKi8KKyAgICB1bnNpZ25lZCBsb25nIHJhdGU7ICAgIC8qIEN1cnJlbnQgcmF0ZSAoaWYg
LnJ1bm5pbmcpICovCisgICAgdW5zaWduZWQgaW50IGRpdmlzb3I7IC8qZyBSYXRlIHJlbGF0aXZl
IHRvIGlucHV0IChpZiAuZW5hYmxlZCkgKi8KKyAgICB1bnNpZ25lZCBpbnQgbXVsdGlwbGllcjsg
LypnIFJhdGUgcmVsYXRpdmUgdG8gaW5wdXQgKGlmIC5lbmFibGVkKSAqLworICAgIHFlbXVfaXJx
IHVzZXJzWzE2XTsgICAgLyogV2hvIHRvIG5vdGlmeSBvbiBjaGFuZ2UgKi8KKyAgICBpbnQgdXNl
Y291bnQ7ICAgIC8qIEF1dG9tYXRpY2FsbHkgaWRsZSB3aGVuIHVudXNlZCAqLwogfTsKCiBzdGF0
aWMgc3RydWN0IGNsayB4dGFsX29zYzEybSA9M0QgewotICAgIC5uYW1lID0zRCAieHRhbF9vc2Nf
MTJtIiwKLSAgICAucmF0ZSA9M0QgMTIwMDAwMDAsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9P
TUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYIHwgQ0xPQ0tfSU5fT01BUDMxMCwKKyAgICAubmFt
ZSA9M0QgInh0YWxfb3NjXzEybSIsCisgICAgLnJhdGUgPTNEIDEyMDAwMDAwLAorICAgIC5mbGFn
cyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCB8IENMT0NLX0lOX09N
QVAzMTAsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIHh0YWxfb3NjMzJrID0zRCB7Ci0gICAgLm5h
bWUgPTNEICJ4dGFsX29zY18zMmsiLAotICAgIC5yYXRlID0zRCAzMjc2OCwKLSAgICAuZmxhZ3Mg
PTNEIENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfCBDTE9DS19JTl9PTUFQ
MzEwIHwKKyAgICAubmFtZSA9M0QgInh0YWxfb3NjXzMyayIsCisgICAgLnJhdGUgPTNEIDMyNzY4
LAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCB8
IENMT0NLX0lOX09NQVAzMTAgfAogICAgICAgICAgICAgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9D
S19JTl9PTUFQMjQzWCwKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgY2tfcmVmID0zRCB7Ci0gICAg
Lm5hbWUgPTNEICJja19yZWYiLAotICAgIC5hbGlhcyA9M0QgImNsa2luIiwKLSAgICAucGFyZW50
ID0zRCAmeHRhbF9vc2MxMm0sCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENM
T0NLX0lOX09NQVAxNlhYIHwgQ0xPQ0tfSU5fT01BUDMxMCB8CisgICAgLm5hbWUgPTNEICJja19y
ZWYiLAorICAgIC5hbGlhcyA9M0QgImNsa2luIiwKKyAgICAucGFyZW50ID0zRCAmeHRhbF9vc2Mx
Mm0sCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhY
IHwgQ0xPQ0tfSU5fT01BUDMxMCB8CiAgICAgICAgICAgICBBTFdBWVNfRU5BQkxFRCwKIH07Cgog
LyogSWYgYSBkcGxsIGlzIGRpc2FibGVkIGl0IGJlY29tZXMgYSBieXBhc3MsIGNoaWxkIGNsb2Nr
cyBkb24ndCBzdG9wICovCiBzdGF0aWMgc3RydWN0IGNsayBkcGxsMSA9M0QgewotICAgIC5uYW1l
ID0zRCAiZHBsbDEiLAotICAgIC5wYXJlbnQgPTNEICZja19yZWYsCi0gICAgLmZsYWdzID0zRCBD
TE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYIHwgQ0xPQ0tfSU5fT01BUDMxMCB8
CisgICAgLm5hbWUgPTNEICJkcGxsMSIsCisgICAgLnBhcmVudCA9M0QgJmNrX3JlZiwKKyAgICAu
ZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfCBDTE9DS19J
Tl9PTUFQMzEwIHwKICAgICAgICAgICAgIEFMV0FZU19FTkFCTEVELAogfTsKCiBzdGF0aWMgc3Ry
dWN0IGNsayBkcGxsMiA9M0QgewotICAgIC5uYW1lID0zRCAiZHBsbDIiLAotICAgIC5wYXJlbnQg
PTNEICZja19yZWYsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMzEwIHwgQUxXQVlTX0VO
QUJMRUQsCisgICAgLm5hbWUgPTNEICJkcGxsMiIsCisgICAgLnBhcmVudCA9M0QgJmNrX3JlZiwK
KyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAzMTAgfCBBTFdBWVNfRU5BQkxFRCwKIH07Cgog
c3RhdGljIHN0cnVjdCBjbGsgZHBsbDMgPTNEIHsKLSAgICAubmFtZSA9M0QgImRwbGwzIiwKLSAg
ICAucGFyZW50ID0zRCAmY2tfcmVmLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDMxMCB8
IEFMV0FZU19FTkFCTEVELAorICAgIC5uYW1lID0zRCAiZHBsbDMiLAorICAgIC5wYXJlbnQgPTNE
ICZja19yZWYsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMzEwIHwgQUxXQVlTX0VOQUJM
RUQsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGRwbGw0ID0zRCB7Ci0gICAgLm5hbWUgPTNEICJk
cGxsNCIsCi0gICAgLnBhcmVudCA9M0QgJmNrX3JlZiwKLSAgICAubXVsdGlwbGllciA9M0QgNCwK
LSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfCBD
TE9DS19JTl9PTUFQMzEwLAorICAgIC5uYW1lID0zRCAiZHBsbDQiLAorICAgIC5wYXJlbnQgPTNE
ICZja19yZWYsCisgICAgLm11bHRpcGxpZXIgPTNEIDQsCisgICAgLmZsYWdzID0zRCBDTE9DS19J
Tl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYIHwgQ0xPQ0tfSU5fT01BUDMxMCwKIH07Cgog
c3RhdGljIHN0cnVjdCBjbGsgYXBsbCA9M0QgewotICAgIC5uYW1lID0zRCAiYXBsbCIsCi0gICAg
LnBhcmVudCA9M0QgJmNrX3JlZiwKLSAgICAubXVsdGlwbGllciA9M0QgNDgsCi0gICAgLmRpdmlz
b3IgPTNEIDEyLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9P
TUFQMTZYWCB8IENMT0NLX0lOX09NQVAzMTAsCisgICAgLm5hbWUgPTNEICJhcGxsIiwKKyAgICAu
cGFyZW50ID0zRCAmY2tfcmVmLAorICAgIC5tdWx0aXBsaWVyID0zRCA0OCwKKyAgICAuZGl2aXNv
ciA9M0QgMTIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09N
QVAxNlhYIHwgQ0xPQ0tfSU5fT01BUDMxMCwKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgY2tfNDht
ID0zRCB7Ci0gICAgLm5hbWUgPTNEICJja180OG0iLAotICAgIC5wYXJlbnQgPTNEICZkcGxsNCwg
LyogZWl0aGVyIGRwbGw0IG9yIGFwbGwgKi8KLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAx
NTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfCBDTE9DS19JTl9PTUFQMzEwLAorICAgIC5uYW1lID0z
RCAiY2tfNDhtIiwKKyAgICAucGFyZW50ID0zRCAmZHBsbDQsIC8qZyBlaXRoZXIgZHBsbDQgb3Ig
YXBsbCAqLworICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQ
MTZYWCB8IENMT0NLX0lOX09NQVAzMTAsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGNrX2RwbGwx
b3V0ID0zRCB7Ci0gICAgLm5hbWUgPTNEICJja19kcGxsMW91dCIsCi0gICAgLnBhcmVudCA9M0Qg
JmRwbGwxLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE2WFgsCisgICAgLm5hbWUgPTNE
ICJja19kcGxsMW91dCIsCisgICAgLnBhcmVudCA9M0QgJmRwbGwxLAorICAgIC5mbGFncyA9M0Qg
Q0xPQ0tfSU5fT01BUDE2WFgsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIHNvc3NpX2NrID0zRCB7
Ci0gICAgLm5hbWUgPTNEICJja19zb3NzaSIsCi0gICAgLnBhcmVudCA9M0QgJmNrX2RwbGwxb3V0
LAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE2WFgsCisgICAgLm5hbWUgPTNEICJja19z
b3NzaSIsCisgICAgLnBhcmVudCA9M0QgJmNrX2RwbGwxb3V0LAorICAgIC5mbGFncyA9M0QgQ0xP
Q0tfSU5fT01BUDE2WFgsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGNsa20xID0zRCB7Ci0gICAg
Lm5hbWUgPTNEICJjbGttMSIsCi0gICAgLmFsaWFzID0zRCAiY2tfZ2VuMSIsCi0gICAgLnBhcmVu
dCA9M0QgJmRwbGwxLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19J
Tl9PTUFQMTZYWCB8IENMT0NLX0lOX09NQVAzMTAgfAorICAgIC5uYW1lID0zRCAiY2xrbTEiLAor
ICAgIC5hbGlhcyA9M0QgImNrX2dlbjEiLAorICAgIC5wYXJlbnQgPTNEICZkcGxsMSwKKyAgICAu
ZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfCBDTE9DS19J
Tl9PTUFQMzEwIHwKICAgICAgICAgICAgIEFMV0FZU19FTkFCTEVELAogfTsKCiBzdGF0aWMgc3Ry
dWN0IGNsayBjbGttMiA9M0QgewotICAgIC5uYW1lID0zRCAiY2xrbTIiLAotICAgIC5hbGlhcyA9
M0QgImNrX2dlbjIiLAotICAgIC5wYXJlbnQgPTNEICZkcGxsMSwKLSAgICAuZmxhZ3MgPTNEIENM
T0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfCBDTE9DS19JTl9PTUFQMzEwIHwK
KyAgICAubmFtZSA9M0QgImNsa20yIiwKKyAgICAuYWxpYXMgPTNEICJja19nZW4yIiwKKyAgICAu
cGFyZW50ID0zRCAmZHBsbDEsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENM
T0NLX0lOX09NQVAxNlhYIHwgQ0xPQ0tfSU5fT01BUDMxMCB8CiAgICAgICAgICAgICBBTFdBWVNf
RU5BQkxFRCwKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgY2xrbTMgPTNEIHsKLSAgICAubmFtZSA9
M0QgImNsa20zIiwKLSAgICAuYWxpYXMgPTNEICJja19nZW4zIiwKLSAgICAucGFyZW50ID0zRCAm
ZHBsbDEsIC8qIGVpdGhlciBkcGxsMSBvciBja19yZWYgKi8KLSAgICAuZmxhZ3MgPTNEIENMT0NL
X0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfCBDTE9DS19JTl9PTUFQMzEwIHwKKyAg
ICAubmFtZSA9M0QgImNsa20zIiwKKyAgICAuYWxpYXMgPTNEICJja19nZW4zIiwKKyAgICAucGFy
ZW50ID0zRCAmZHBsbDEsIC8qZyBlaXRoZXIgZHBsbDEgb3IgY2tfcmVmICovCisgICAgLmZsYWdz
ID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYIHwgQ0xPQ0tfSU5fT01B
UDMxMCB8CiAgICAgICAgICAgICBBTFdBWVNfRU5BQkxFRCwKIH07Cgogc3RhdGljIHN0cnVjdCBj
bGsgYXJtX2NrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJhcm1fY2siLAotICAgIC5hbGlhcyA9M0Qg
Im1wdV9jayIsCi0gICAgLnBhcmVudCA9M0QgJmNsa20xLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tf
SU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCB8IENMT0NLX0lOX09NQVAzMTAgfAorICAg
IC5uYW1lID0zRCAiYXJtX2NrIiwKKyAgICAuYWxpYXMgPTNEICJtcHVfY2siLAorICAgIC5wYXJl
bnQgPTNEICZjbGttMSwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tf
SU5fT01BUDE2WFggfCBDTE9DS19JTl9PTUFQMzEwIHwKICAgICAgICAgICAgIEFMV0FZU19FTkFC
TEVELAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBhcm1wZXJfY2sgPTNEIHsKLSAgICAubmFtZSA9
M0QgImFybXBlcl9jayIsCi0gICAgLmFsaWFzID0zRCAibXB1cGVyX2NrIiwKLSAgICAucGFyZW50
ID0zRCAmY2xrbTEsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lO
X09NQVAxNlhYIHwgQ0xPQ0tfSU5fT01BUDMxMCwKKyAgICAubmFtZSA9M0QgImFybXBlcl9jayIs
CisgICAgLmFsaWFzID0zRCAibXB1cGVyX2NrIiwKKyAgICAucGFyZW50ID0zRCAmY2xrbTEsCisg
ICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYIHwgQ0xP
Q0tfSU5fT01BUDMxMCwKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgYXJtX2dwaW9fY2sgPTNEIHsK
LSAgICAubmFtZSA9M0QgImFybV9ncGlvX2NrIiwKLSAgICAuYWxpYXMgPTNEICJtcHVfZ3Bpb19j
ayIsCi0gICAgLnBhcmVudCA9M0QgJmNsa20xLAotICAgIC5kaXZpc29yID0zRCAxLAotICAgIC5m
bGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMzEwLAorICAgIC5uYW1l
ID0zRCAiYXJtX2dwaW9fY2siLAorICAgIC5hbGlhcyA9M0QgIm1wdV9ncGlvX2NrIiwKKyAgICAu
cGFyZW50ID0zRCAmY2xrbTEsCisgICAgLmRpdmlzb3IgPTNEIDEsCisgICAgLmZsYWdzID0zRCBD
TE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAzMTAsCiB9OwoKIHN0YXRpYyBzdHJ1Y3Qg
Y2xrIGFybXhvcl9jayA9M0QgewotICAgIC5uYW1lID0zRCAiYXJteG9yX2NrIiwKLSAgICAuYWxp
YXMgPTNEICJtcHV4b3JfY2siLAotICAgIC5wYXJlbnQgPTNEICZja19yZWYsCi0gICAgLmZsYWdz
ID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYIHwgQ0xPQ0tfSU5fT01B
UDMxMCwKKyAgICAubmFtZSA9M0QgImFybXhvcl9jayIsCisgICAgLmFsaWFzID0zRCAibXB1eG9y
X2NrIiwKKyAgICAucGFyZW50ID0zRCAmY2tfcmVmLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5f
T01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCB8IENMT0NLX0lOX09NQVAzMTAsCiB9OwoKIHN0
YXRpYyBzdHJ1Y3QgY2xrIGFybXRpbV9jayA9M0QgewotICAgIC5uYW1lID0zRCAiYXJtdGltX2Nr
IiwKLSAgICAuYWxpYXMgPTNEICJtcHV0aW1fY2siLAotICAgIC5wYXJlbnQgPTNEICZja19yZWYs
IC8qIGVpdGhlciBDTEtJTiBvciBEUExMMSAqLwotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01B
UDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCB8IENMT0NLX0lOX09NQVAzMTAsCisgICAgLm5hbWUg
PTNEICJhcm10aW1fY2siLAorICAgIC5hbGlhcyA9M0QgIm1wdXRpbV9jayIsCisgICAgLnBhcmVu
dCA9M0QgJmNrX3JlZiwgLypnIGVpdGhlciBDTEtJTiBvciBEUExMMSAqLworICAgIC5mbGFncyA9
M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCB8IENMT0NLX0lOX09NQVAz
MTAsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGFybXdkdF9jayA9M0QgewotICAgIC5uYW1lID0z
RCAiYXJtd2R0X2NrIiwKLSAgICAuYWxpYXMgPTNEICJtcHV3ZF9jayIsCi0gICAgLnBhcmVudCA9
M0QgJmNsa20xLAotICAgIC5kaXZpc29yID0zRCAxNCwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lO
X09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfCBDTE9DS19JTl9PTUFQMzEwIHwKKyAgICAu
bmFtZSA9M0QgImFybXdkdF9jayIsCisgICAgLmFsaWFzID0zRCAibXB1d2RfY2siLAorICAgIC5w
YXJlbnQgPTNEICZjbGttMSwKKyAgICAuZGl2aXNvciA9M0QgMTQsCisgICAgLmZsYWdzID0zRCBD
TE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYIHwgQ0xPQ0tfSU5fT01BUDMxMCB8
CiAgICAgICAgICAgICBBTFdBWVNfRU5BQkxFRCwKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgYXJt
aW50aF9jazE2eHggPTNEIHsKLSAgICAubmFtZSA9M0QgImFybWludGhfY2siLAotICAgIC5wYXJl
bnQgPTNEICZhcm1fY2ssCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTZYWCB8IEFMV0FZ
U19FTkFCTEVELAorICAgIC5uYW1lID0zRCAiYXJtaW50aF9jayIsCisgICAgLnBhcmVudCA9M0Qg
JmFybV9jaywKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNlhYIHwgQUxXQVlTX0VOQUJM
RUQsCiAgICAgLyogTm90ZTogT24gMTZ4eCB0aGUgZnJlcXVlbmN5IGNhbiBiZSBkaXZpZGVkIGJ5
IDIgYnkgcHJvZ3JhbW1pbmcKICAgICAgKiBBUk1fQ0tDVEw6QVJNX0lOVEhDS19TRUwoMTQpIHRv
IDEKICAgICAgKgpAQCAtMjA2LDQ4ICsyMDYsNDggQEAgc3RhdGljIHN0cnVjdCBjbGsgYXJtaW50
aF9jazE2eHggPTNEIHsKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgZHNwX2NrID0zRCB7Ci0gICAg
Lm5hbWUgPTNEICJkc3BfY2siLAotICAgIC5wYXJlbnQgPTNEICZjbGttMiwKLSAgICAuZmxhZ3Mg
PTNEIENMT0NLX0lOX09NQVAzMTAgfCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAx
NlhYLAorICAgIC5uYW1lID0zRCAiZHNwX2NrIiwKKyAgICAucGFyZW50ID0zRCAmY2xrbTIsCisg
ICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMzEwIHwgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9D
S19JTl9PTUFQMTZYWCwKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgZHNwbW11X2NrID0zRCB7Ci0g
ICAgLm5hbWUgPTNEICJkc3BtbXVfY2siLAotICAgIC5wYXJlbnQgPTNEICZjbGttMiwKLSAgICAu
ZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAzMTAgfCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lO
X09NQVAxNlhYIHwKKyAgICAubmFtZSA9M0QgImRzcG1tdV9jayIsCisgICAgLnBhcmVudCA9M0Qg
JmNsa20yLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDMxMCB8IENMT0NLX0lOX09NQVAx
NTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfAogICAgICAgICAgICAgQUxXQVlTX0VOQUJMRUQsCiB9
OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGRzcHBlcl9jayA9M0QgewotICAgIC5uYW1lID0zRCAiZHNw
cGVyX2NrIiwKLSAgICAucGFyZW50ID0zRCAmY2xrbTIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19J
Tl9PTUFQMzEwIHwgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCwKKyAgICAu
bmFtZSA9M0QgImRzcHBlcl9jayIsCisgICAgLnBhcmVudCA9M0QgJmNsa20yLAorICAgIC5mbGFn
cyA9M0QgQ0xPQ0tfSU5fT01BUDMxMCB8IENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01B
UDE2WFgsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGRzcHhvcl9jayA9M0QgewotICAgIC5uYW1l
ID0zRCAiZHNweG9yX2NrIiwKLSAgICAucGFyZW50ID0zRCAmY2tfcmVmLAotICAgIC5mbGFncyA9
M0QgQ0xPQ0tfSU5fT01BUDMxMCB8IENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2
WFgsCisgICAgLm5hbWUgPTNEICJkc3B4b3JfY2siLAorICAgIC5wYXJlbnQgPTNEICZja19yZWYs
CisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMzEwIHwgQ0xPQ0tfSU5fT01BUDE1MTAgfCBD
TE9DS19JTl9PTUFQMTZYWCwKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgZHNwdGltX2NrID0zRCB7
Ci0gICAgLm5hbWUgPTNEICJkc3B0aW1fY2siLAotICAgIC5wYXJlbnQgPTNEICZja19yZWYsCi0g
ICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMzEwIHwgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9D
S19JTl9PTUFQMTZYWCwKKyAgICAubmFtZSA9M0QgImRzcHRpbV9jayIsCisgICAgLnBhcmVudCA9
M0QgJmNrX3JlZiwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAzMTAgfCBDTE9DS19JTl9P
TUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayB0Y19j
ayA9M0QgewotICAgIC5uYW1lID0zRCAidGNfY2siLAotICAgIC5wYXJlbnQgPTNEICZjbGttMywK
LSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfAor
ICAgIC5uYW1lID0zRCAidGNfY2siLAorICAgIC5wYXJlbnQgPTNEICZjbGttMywKKyAgICAuZmxh
Z3MgPTNEIENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfAogICAgICAgICAg
ICAgQ0xPQ0tfSU5fT01BUDczMCB8IENMT0NLX0lOX09NQVAzMTAgfAogICAgICAgICAgICAgQUxX
QVlTX0VOQUJMRUQsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGFybWludGhfY2sxNXh4ID0zRCB7
Ci0gICAgLm5hbWUgPTNEICJhcm1pbnRoX2NrIiwKLSAgICAucGFyZW50ID0zRCAmdGNfY2ssCi0g
ICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAzMTAgfCBBTFdB
WVNfRU5BQkxFRCwKKyAgICAubmFtZSA9M0QgImFybWludGhfY2siLAorICAgIC5wYXJlbnQgPTNE
ICZ0Y19jaywKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01B
UDMxMCB8IEFMV0FZU19FTkFCTEVELAogICAgIC8qIE5vdGU6IE9uIDE1MTAgdGhlIGZyZXF1ZW5j
eSBmb2xsb3dzIFRDX0NLCiAgICAgICoKICAgICAgKiAxNnh4IHZlcnNpb24gaXMgaW4gTVBVIGNs
b2Nrcy4KQEAgLTI1Niw2MDYgKzI1Niw2MDYgQEAgc3RhdGljIHN0cnVjdCBjbGsgYXJtaW50aF9j
azE1eHggPTNEIHsKCiBzdGF0aWMgc3RydWN0IGNsayB0aXBiX2NrID0zRCB7CiAgICAgLyogTm8t
aWRsZSBjb250cm9sbGVkIGJ5ICJ0Y19jayIgKi8KLSAgICAubmFtZSA9M0QgInRpcGJfY2siLAot
ICAgIC5wYXJlbnQgPTNEICZ0Y19jaywKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEw
IHwgQ0xPQ0tfSU5fT01BUDMxMCB8IEFMV0FZU19FTkFCTEVELAorICAgIC5uYW1lID0zRCAidGlw
Yl9jayIsCisgICAgLnBhcmVudCA9M0QgJnRjX2NrLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5f
T01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMzEwIHwgQUxXQVlTX0VOQUJMRUQsCiB9OwoKIHN0YXRp
YyBzdHJ1Y3QgY2xrIGwzX29jcGlfY2sgPTNEIHsKICAgICAvKiBOby1pZGxlIGNvbnRyb2xsZWQg
YnkgInRjX2NrIiAqLwotICAgIC5uYW1lID0zRCAibDNfb2NwaV9jayIsCi0gICAgLnBhcmVudCA9
M0QgJnRjX2NrLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE2WFgsCisgICAgLm5hbWUg
PTNEICJsM19vY3BpX2NrIiwKKyAgICAucGFyZW50ID0zRCAmdGNfY2ssCisgICAgLmZsYWdzID0z
RCBDTE9DS19JTl9PTUFQMTZYWCwKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgdGMxX2NrID0zRCB7
Ci0gICAgLm5hbWUgPTNEICJ0YzFfY2siLAotICAgIC5wYXJlbnQgPTNEICZ0Y19jaywKLSAgICAu
ZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNlhYLAorICAgIC5uYW1lID0zRCAidGMxX2NrIiwKKyAg
ICAucGFyZW50ID0zRCAmdGNfY2ssCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTZYWCwK
IH07Cgogc3RhdGljIHN0cnVjdCBjbGsgdGMyX2NrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJ0YzJf
Y2siLAotICAgIC5wYXJlbnQgPTNEICZ0Y19jaywKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09N
QVAxNlhYLAorICAgIC5uYW1lID0zRCAidGMyX2NrIiwKKyAgICAucGFyZW50ID0zRCAmdGNfY2ss
CisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTZYWCwKIH07Cgogc3RhdGljIHN0cnVjdCBj
bGsgZG1hX2NrID0zRCB7CiAgICAgLyogTm8taWRsZSBjb250cm9sbGVkIGJ5ICJ0Y19jayIgKi8K
LSAgICAubmFtZSA9M0QgImRtYV9jayIsCi0gICAgLnBhcmVudCA9M0QgJnRjX2NrLAotICAgIC5m
bGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCB8IENMT0NLX0lO
X09NQVAzMTAgfAorICAgIC5uYW1lID0zRCAiZG1hX2NrIiwKKyAgICAucGFyZW50ID0zRCAmdGNf
Y2ssCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhY
IHwgQ0xPQ0tfSU5fT01BUDMxMCB8CiAgICAgICAgICAgICBBTFdBWVNfRU5BQkxFRCwKIH07Cgog
c3RhdGljIHN0cnVjdCBjbGsgZG1hX2xjZGZyZWVfY2sgPTNEIHsKLSAgICAubmFtZSA9M0QgImRt
YV9sY2RmcmVlX2NrIiwKLSAgICAucGFyZW50ID0zRCAmdGNfY2ssCi0gICAgLmZsYWdzID0zRCBD
TE9DS19JTl9PTUFQMTZYWCB8IEFMV0FZU19FTkFCTEVELAorICAgIC5uYW1lID0zRCAiZG1hX2xj
ZGZyZWVfY2siLAorICAgIC5wYXJlbnQgPTNEICZ0Y19jaywKKyAgICAuZmxhZ3MgPTNEIENMT0NL
X0lOX09NQVAxNlhYIHwgQUxXQVlTX0VOQUJMRUQsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGFw
aV9jayA9M0QgewotICAgIC5uYW1lID0zRCAiYXBpX2NrIiwKLSAgICAuYWxpYXMgPTNEICJtcHVp
X2NrIiwKLSAgICAucGFyZW50ID0zRCAmdGNfY2ssCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9P
TUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYIHwgQ0xPQ0tfSU5fT01BUDMxMCwKKyAgICAubmFt
ZSA9M0QgImFwaV9jayIsCisgICAgLmFsaWFzID0zRCAibXB1aV9jayIsCisgICAgLnBhcmVudCA9
M0QgJnRjX2NrLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9P
TUFQMTZYWCB8IENMT0NLX0lOX09NQVAzMTAsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGxiX2Nr
ID0zRCB7Ci0gICAgLm5hbWUgPTNEICJsYl9jayIsCi0gICAgLnBhcmVudCA9M0QgJnRjX2NrLAot
ICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMzEwLAorICAg
IC5uYW1lID0zRCAibGJfY2siLAorICAgIC5wYXJlbnQgPTNEICZ0Y19jaywKKyAgICAuZmxhZ3Mg
PTNEIENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDMxMCwKIH07Cgogc3RhdGljIHN0
cnVjdCBjbGsgbGJmcmVlX2NrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJsYmZyZWVfY2siLAotICAg
IC5wYXJlbnQgPTNEICZ0Y19jaywKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEwIHwg
Q0xPQ0tfSU5fT01BUDMxMCwKKyAgICAubmFtZSA9M0QgImxiZnJlZV9jayIsCisgICAgLnBhcmVu
dCA9M0QgJnRjX2NrLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19J
Tl9PTUFQMzEwLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBoc2FiX2NrID0zRCB7Ci0gICAgLm5h
bWUgPTNEICJoc2FiX2NrIiwKLSAgICAucGFyZW50ID0zRCAmdGNfY2ssCi0gICAgLmZsYWdzID0z
RCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAzMTAsCisgICAgLm5hbWUgPTNEICJo
c2FiX2NrIiwKKyAgICAucGFyZW50ID0zRCAmdGNfY2ssCisgICAgLmZsYWdzID0zRCBDTE9DS19J
Tl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAzMTAsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIHJo
ZWExX2NrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJyaGVhMV9jayIsCi0gICAgLnBhcmVudCA9M0Qg
JnRjX2NrLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE2WFggfCBBTFdBWVNfRU5BQkxF
RCwKKyAgICAubmFtZSA9M0QgInJoZWExX2NrIiwKKyAgICAucGFyZW50ID0zRCAmdGNfY2ssCisg
ICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTZYWCB8IEFMV0FZU19FTkFCTEVELAogfTsKCiBz
dGF0aWMgc3RydWN0IGNsayByaGVhMl9jayA9M0QgewotICAgIC5uYW1lID0zRCAicmhlYTJfY2si
LAotICAgIC5wYXJlbnQgPTNEICZ0Y19jaywKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAx
NlhYIHwgQUxXQVlTX0VOQUJMRUQsCisgICAgLm5hbWUgPTNEICJyaGVhMl9jayIsCisgICAgLnBh
cmVudCA9M0QgJnRjX2NrLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE2WFggfCBBTFdB
WVNfRU5BQkxFRCwKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgbGNkX2NrXzE2eHggPTNEIHsKLSAg
ICAubmFtZSA9M0QgImxjZF9jayIsCi0gICAgLnBhcmVudCA9M0QgJmNsa20zLAotICAgIC5mbGFn
cyA9M0QgQ0xPQ0tfSU5fT01BUDE2WFggfCBDTE9DS19JTl9PTUFQNzMwLAorICAgIC5uYW1lID0z
RCAibGNkX2NrIiwKKyAgICAucGFyZW50ID0zRCAmY2xrbTMsCisgICAgLmZsYWdzID0zRCBDTE9D
S19JTl9PTUFQMTZYWCB8IENMT0NLX0lOX09NQVA3MzAsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xr
IGxjZF9ja18xNTEwID0zRCB7Ci0gICAgLm5hbWUgPTNEICJsY2RfY2siLAotICAgIC5wYXJlbnQg
PTNEICZjbGttMywKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5f
T01BUDMxMCwKKyAgICAubmFtZSA9M0QgImxjZF9jayIsCisgICAgLnBhcmVudCA9M0QgJmNsa20z
LAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMzEwLAog
fTsKCiBzdGF0aWMgc3RydWN0IGNsayB1YXJ0MV8xNTEwID0zRCB7Ci0gICAgLm5hbWUgPTNEICJ1
YXJ0MV9jayIsCisgICAgLm5hbWUgPTNEICJ1YXJ0MV9jayIsCiAgICAgLyogRGlyZWN0IGZyb20g
VUxQRCwgbm8gcmVhbCBwYXJlbnQgKi8KLSAgICAucGFyZW50ID0zRCAmYXJtcGVyX2NrLCAvKiBl
aXRoZXIgYXJtcGVyX2NrIG9yIGRwbGw0ICovCi0gICAgLnJhdGUgPTNEIDEyMDAwMDAwLAotICAg
IC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMzEwIHwgQUxXQVlT
X0VOQUJMRUQsCisgICAgLnBhcmVudCA9M0QgJmFybXBlcl9jaywgLypnIGVpdGhlciBhcm1wZXJf
Y2sgb3IgZHBsbDQgKi8KKyAgICAucmF0ZSA9M0QgMTIwMDAwMDAsCisgICAgLmZsYWdzID0zRCBD
TE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAzMTAgfCBBTFdBWVNfRU5BQkxFRCwKIH07
Cgogc3RhdGljIHN0cnVjdCBjbGsgdWFydDFfMTZ4eCA9M0QgewotICAgIC5uYW1lID0zRCAidWFy
dDFfY2siLAorICAgIC5uYW1lID0zRCAidWFydDFfY2siLAogICAgIC8qIERpcmVjdCBmcm9tIFVM
UEQsIG5vIHJlYWwgcGFyZW50ICovCi0gICAgLnBhcmVudCA9M0QgJmFybXBlcl9jaywKLSAgICAu
cmF0ZSA9M0QgNDgwMDAwMDAsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTZYWCwKKyAg
ICAucGFyZW50ID0zRCAmYXJtcGVyX2NrLAorICAgIC5yYXRlID0zRCA0ODAwMDAwMCwKKyAgICAu
ZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNlhYLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayB1YXJ0
Ml9jayA9M0QgewotICAgIC5uYW1lID0zRCAidWFydDJfY2siLAorICAgIC5uYW1lID0zRCAidWFy
dDJfY2siLAogICAgIC8qIERpcmVjdCBmcm9tIFVMUEQsIG5vIHJlYWwgcGFyZW50ICovCi0gICAg
LnBhcmVudCA9M0QgJmFybXBlcl9jaywgLyogZWl0aGVyIGFybXBlcl9jayBvciBkcGxsNCAqLwot
ICAgIC5yYXRlID0zRCAxMjAwMDAwMCwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEw
IHwgQ0xPQ0tfSU5fT01BUDE2WFggfCBDTE9DS19JTl9PTUFQMzEwIHwKKyAgICAucGFyZW50ID0z
RCAmYXJtcGVyX2NrLCAvKmcgZWl0aGVyIGFybXBlcl9jayBvciBkcGxsNCAqLworICAgIC5yYXRl
ID0zRCAxMjAwMDAwMCwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tf
SU5fT01BUDE2WFggfCBDTE9DS19JTl9PTUFQMzEwIHwKICAgICAgICAgICAgIEFMV0FZU19FTkFC
TEVELAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayB1YXJ0M18xNTEwID0zRCB7Ci0gICAgLm5hbWUg
PTNEICJ1YXJ0M19jayIsCisgICAgLm5hbWUgPTNEICJ1YXJ0M19jayIsCiAgICAgLyogRGlyZWN0
IGZyb20gVUxQRCwgbm8gcmVhbCBwYXJlbnQgKi8KLSAgICAucGFyZW50ID0zRCAmYXJtcGVyX2Nr
LCAvKiBlaXRoZXIgYXJtcGVyX2NrIG9yIGRwbGw0ICovCi0gICAgLnJhdGUgPTNEIDEyMDAwMDAw
LAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMzEwIHwg
QUxXQVlTX0VOQUJMRUQsCisgICAgLnBhcmVudCA9M0QgJmFybXBlcl9jaywgLypnIGVpdGhlciBh
cm1wZXJfY2sgb3IgZHBsbDQgKi8KKyAgICAucmF0ZSA9M0QgMTIwMDAwMDAsCisgICAgLmZsYWdz
ID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAzMTAgfCBBTFdBWVNfRU5BQkxF
RCwKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgdWFydDNfMTZ4eCA9M0QgewotICAgIC5uYW1lID0z
RCAidWFydDNfY2siLAorICAgIC5uYW1lID0zRCAidWFydDNfY2siLAogICAgIC8qIERpcmVjdCBm
cm9tIFVMUEQsIG5vIHJlYWwgcGFyZW50ICovCi0gICAgLnBhcmVudCA9M0QgJmFybXBlcl9jaywK
LSAgICAucmF0ZSA9M0QgNDgwMDAwMDAsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTZY
WCwKKyAgICAucGFyZW50ID0zRCAmYXJtcGVyX2NrLAorICAgIC5yYXRlID0zRCA0ODAwMDAwMCwK
KyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNlhYLAogfTsKCi1zdGF0aWMgc3RydWN0IGNs
ayB1c2JfY2xrMCA9M0QgeyAvKiA2IE1IeiBvdXRwdXQgb24gVzRfVVNCX0NMSzAgKi8KLSAgICAu
bmFtZSA9M0QgInVzYl9jbGswIiwKLSAgICAuYWxpYXMgPTNEICJ1c2IuY2xrbyIsCitzdGF0aWMg
c3RydWN0IGNsayB1c2JfY2xrMCA9M0QgeyAvKmcgNiBNSHogb3V0cHV0IG9uIFc0X1VTQl9DTEsw
ICovCisgICAgLm5hbWUgPTNEICJ1c2JfY2xrMCIsCisgICAgLmFsaWFzID0zRCAidXNiLmNsa28i
LAogICAgIC8qIERpcmVjdCBmcm9tIFVMUEQsIG5vIHBhcmVudCAqLwotICAgIC5yYXRlID0zRCA2
MDAwMDAwLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQ
MTZYWCB8IENMT0NLX0lOX09NQVAzMTAsCisgICAgLnJhdGUgPTNEIDYwMDAwMDAsCisgICAgLmZs
YWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYIHwgQ0xPQ0tfSU5f
T01BUDMxMCwKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgdXNiX2hoY19jazE1MTAgPTNEIHsKLSAg
ICAubmFtZSA9M0QgInVzYl9oaGNfY2siLAorICAgIC5uYW1lID0zRCAidXNiX2hoY19jayIsCiAg
ICAgLyogRGlyZWN0IGZyb20gVUxQRCwgbm8gcGFyZW50ICovCi0gICAgLnJhdGUgPTNEIDQ4MDAw
MDAwLCAvKiBBY3R1YWxseSAyIGNsb2NrcywgMTJNSHogYW5kIDQ4TUh6ICovCi0gICAgLmZsYWdz
ID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAzMTAsCisgICAgLnJhdGUgPTNE
IDQ4MDAwMDAwLCAvKiBBY3R1YWxseSAyIGNsb2NrcywgMTJNSHogYW5kIDQ4TUh6ICovCisgICAg
LmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAzMTAsCiB9OwoKIHN0
YXRpYyBzdHJ1Y3QgY2xrIHVzYl9oaGNfY2sxNnh4ID0zRCB7Ci0gICAgLm5hbWUgPTNEICJ1c2Jf
aGhjX2NrIiwKKyAgICAubmFtZSA9M0QgInVzYl9oaGNfY2siLAogICAgIC8qIERpcmVjdCBmcm9t
IFVMUEQsIG5vIHBhcmVudCAqLwotICAgIC5yYXRlID0zRCA0ODAwMDAwMCwKKyAgICAucmF0ZSA9
M0QgNDgwMDAwMDAsCiAgICAgLyogT1RHX1NZU0NPTl8yLk9UR19QQURFTiA9M0Q9M0QgMCAobm90
IDE1MTAtY29tcGF0aWJsZSkgKi8KLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNlhYLAor
ICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDE2WFgsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xr
IHVzYl93MmZjX21jbGsgPTNEIHsKLSAgICAubmFtZSA9M0QgInVzYl93MmZjX21jbGsiLAotICAg
IC5hbGlhcyA9M0QgInVzYl93MmZjX2NrIiwKLSAgICAucGFyZW50ID0zRCAmY2tfNDhtLAotICAg
IC5yYXRlID0zRCA0ODAwMDAwMCwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAzMTAgfCBD
TE9DS19JTl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYLAorICAgIC5uYW1lID0zRCAidXNi
X3cyZmNfbWNsayIsCisgICAgLmFsaWFzID0zRCAidXNiX3cyZmNfY2siLAorICAgIC5wYXJlbnQg
PTNEICZja180OG0sCisgICAgLnJhdGUgPTNEIDQ4MDAwMDAwLAorICAgIC5mbGFncyA9M0QgQ0xP
Q0tfSU5fT01BUDMxMCB8IENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFgsCiB9
OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIG1jbGtfMTUxMCA9M0QgewotICAgIC5uYW1lID0zRCAibWNs
ayIsCisgICAgLm5hbWUgPTNEICJtY2xrIiwKICAgICAvKiBEaXJlY3QgZnJvbSBVTFBELCBubyBw
YXJlbnQuIE1heSBiZSBlbmFibGVkIGJ5IGV4dCBoYXJkd2FyZS4gKi8KLSAgICAucmF0ZSA9M0Qg
MTIwMDAwMDAsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCwKKyAgICAucmF0ZSA9
M0QgMTIwMDAwMDAsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCwKIH07Cgogc3Rh
dGljIHN0cnVjdCBjbGsgYmNsa18zMTAgPTNEIHsKLSAgICAubmFtZSA9M0QgImJ0X21jbGtfb3V0
IiwgLyogQWxpYXMgbWlkaV9tY2xrX291dD8gKi8KLSAgICAucGFyZW50ID0zRCAmYXJtcGVyX2Nr
LAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDMxMCwKKyAgICAubmFtZSA9M0QgImJ0X21j
bGtfb3V0IiwgLypnIEFsaWFzIG1pZGlfbWNsa19vdXQ/ICovCisgICAgLnBhcmVudCA9M0QgJmFy
bXBlcl9jaywKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAzMTAsCiB9OwoKIHN0YXRpYyBz
dHJ1Y3QgY2xrIG1jbGtfMzEwID0zRCB7Ci0gICAgLm5hbWUgPTNEICJjb21fbWNsa19vdXQiLAot
ICAgIC5wYXJlbnQgPTNEICZhcm1wZXJfY2ssCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQ
MzEwLAorICAgIC5uYW1lID0zRCAiY29tX21jbGtfb3V0IiwKKyAgICAucGFyZW50ID0zRCAmYXJt
cGVyX2NrLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDMxMCwKIH07Cgogc3RhdGljIHN0
cnVjdCBjbGsgbWNsa18xNnh4ID0zRCB7Ci0gICAgLm5hbWUgPTNEICJtY2xrIiwKKyAgICAubmFt
ZSA9M0QgIm1jbGsiLAogICAgIC8qIERpcmVjdCBmcm9tIFVMUEQsIG5vIHBhcmVudC4gTWF5IGJl
IGVuYWJsZWQgYnkgZXh0IGhhcmR3YXJlLiAqLwotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01B
UDE2WFgsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTZYWCwKIH07Cgogc3RhdGljIHN0
cnVjdCBjbGsgYmNsa18xNTEwID0zRCB7Ci0gICAgLm5hbWUgPTNEICJiY2xrIiwKKyAgICAubmFt
ZSA9M0QgImJjbGsiLAogICAgIC8qIERpcmVjdCBmcm9tIFVMUEQsIG5vIHBhcmVudC4gTWF5IGJl
IGVuYWJsZWQgYnkgZXh0IGhhcmR3YXJlLiAqLwotICAgIC5yYXRlID0zRCAxMjAwMDAwMCwKLSAg
ICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEwLAorICAgIC5yYXRlID0zRCAxMjAwMDAwMCwK
KyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNTEwLAogfTsKCiBzdGF0aWMgc3RydWN0IGNs
ayBiY2xrXzE2eHggPTNEIHsKLSAgICAubmFtZSA9M0QgImJjbGsiLAorICAgIC5uYW1lID0zRCAi
YmNsayIsCiAgICAgLyogRGlyZWN0IGZyb20gVUxQRCwgbm8gcGFyZW50LiBNYXkgYmUgZW5hYmxl
ZCBieSBleHQgaGFyZHdhcmUuICovCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTZYWCwK
KyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAxNlhYLAogfTsKCiBzdGF0aWMgc3RydWN0IGNs
ayBtbWMxX2NrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJtbWNfY2siLAotICAgIC5pZCA9M0QgMSwK
KyAgICAubmFtZSA9M0QgIm1tY19jayIsCisgICAgLmlkICA9M0QgMSwKICAgICAvKiBGdW5jdGlv
bmFsIGNsb2NrIGlzIGRpcmVjdCBmcm9tIFVMUEQsIGludGVyZmFjZSBjbG9jayBpcyBBUk1QRVIg
Ki8KLSAgICAucGFyZW50ID0zRCAmYXJtcGVyX2NrLCAvKiBlaXRoZXIgYXJtcGVyX2NrIG9yIGRw
bGw0ICovCi0gICAgLnJhdGUgPTNEIDQ4MDAwMDAwLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5f
T01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCB8IENMT0NLX0lOX09NQVAzMTAsCisgICAgLnBh
cmVudCA9M0QgJmFybXBlcl9jaywgLypnIGVpdGhlciBhcm1wZXJfY2sgb3IgZHBsbDQgKi8KKyAg
ICAucmF0ZSA9M0QgNDgwMDAwMDAsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTUxMCB8
IENMT0NLX0lOX09NQVAxNlhYIHwgQ0xPQ0tfSU5fT01BUDMxMCwKIH07Cgogc3RhdGljIHN0cnVj
dCBjbGsgbW1jMl9jayA9M0QgewotICAgIC5uYW1lID0zRCAibW1jX2NrIiwKLSAgICAuaWQgPTNE
IDIsCisgICAgLm5hbWUgPTNEICJtbWNfY2siLAorICAgIC5pZCAgPTNEIDIsCiAgICAgLyogRnVu
Y3Rpb25hbCBjbG9jayBpcyBkaXJlY3QgZnJvbSBVTFBELCBpbnRlcmZhY2UgY2xvY2sgaXMgQVJN
UEVSICovCi0gICAgLnBhcmVudCA9M0QgJmFybXBlcl9jaywKLSAgICAucmF0ZSA9M0QgNDgwMDAw
MDAsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMTZYWCwKKyAgICAucGFyZW50ID0zRCAm
YXJtcGVyX2NrLAorICAgIC5yYXRlID0zRCA0ODAwMDAwMCwKKyAgICAuZmxhZ3MgPTNEIENMT0NL
X0lOX09NQVAxNlhYLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBjYW1fbWNsayA9M0QgewotICAg
IC5uYW1lID0zRCAiY2FtLm1jbGsiLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDMxMCB8
IENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFgsCi0gICAgLnJhdGUgPTNEIDEy
MDAwMDAwLAorICAgIC5uYW1lID0zRCAiY2FtLm1jbGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tf
SU5fT01BUDMxMCB8IENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFgsCisgICAg
LnJhdGUgPTNEIDEyMDAwMDAwLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBjYW1fZXhjbGsgPTNE
IHsKLSAgICAubmFtZSA9M0QgImNhbS5leGNsayIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9P
TUFQMzEwIHwgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCwKKyAgICAubmFt
ZSA9M0QgImNhbS5leGNsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMzEwIHwgQ0xP
Q0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCwKICAgICAvKiBFaXRoZXIgMTJNIGZy
b20gY2FtLm1jbGsgb3IgNDhNIGZyb20gZHBsbDQgKi8KLSAgICAucGFyZW50ID0zRCAmY2FtX21j
bGssCisgICAgLnBhcmVudCA9M0QgJmNhbV9tY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBj
YW1fbGNsayA9M0QgewotICAgIC5uYW1lID0zRCAiY2FtLmxjbGsiLAotICAgIC5mbGFncyA9M0Qg
Q0xPQ0tfSU5fT01BUDMxMCB8IENMT0NLX0lOX09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFgs
CisgICAgLm5hbWUgPTNEICJjYW0ubGNsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQ
MzEwIHwgQ0xPQ0tfSU5fT01BUDE1MTAgfCBDTE9DS19JTl9PTUFQMTZYWCwKIH07Cgogc3RhdGlj
IHN0cnVjdCBjbGsgaTJjX2ZjayA9M0QgewotICAgIC5uYW1lID0zRCAiaTJjX2ZjayIsCi0gICAg
LmlkID0zRCAxLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDMxMCB8IENMT0NLX0lOX09N
QVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfAorICAgIC5uYW1lID0zRCAiaTJjX2ZjayIsCisg
ICAgLmlkICA9M0QgMSwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAzMTAgfCBDTE9DS19J
Tl9PTUFQMTUxMCB8IENMT0NLX0lOX09NQVAxNlhYIHwKICAgICAgICAgICAgIEFMV0FZU19FTkFC
TEVELAotICAgIC5wYXJlbnQgPTNEICZhcm14b3JfY2ssCisgICAgLnBhcmVudCA9M0QgJmFybXhv
cl9jaywKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgaTJjX2ljayA9M0QgewotICAgIC5uYW1lID0z
RCAiaTJjX2ljayIsCi0gICAgLmlkID0zRCAxLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01B
UDE2WFggfCBBTFdBWVNfRU5BQkxFRCwKLSAgICAucGFyZW50ID0zRCAmYXJtcGVyX2NrLAorICAg
IC5uYW1lID0zRCAiaTJjX2ljayIsCisgICAgLmlkICA9M0QgMSwKKyAgICAuZmxhZ3MgPTNEIENM
T0NLX0lOX09NQVAxNlhYIHwgQUxXQVlTX0VOQUJMRUQsCisgICAgLnBhcmVudCA9M0QgJmFybXBl
cl9jaywKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgY2xrMzJrID0zRCB7Ci0gICAgLm5hbWUgPTNE
ICJjbGszMi1rSHoiLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDMxMCB8IENMT0NLX0lO
X09NQVAxNTEwIHwgQ0xPQ0tfSU5fT01BUDE2WFggfAorICAgIC5uYW1lID0zRCAiY2xrMzIta0h6
IiwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAzMTAgfCBDTE9DS19JTl9PTUFQMTUxMCB8
IENMT0NLX0lOX09NQVAxNlhYIHwKICAgICAgICAgICAgIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xP
Q0tfSU5fT01BUDI0M1ggfCBBTFdBWVNfRU5BQkxFRCwKLSAgICAucGFyZW50ID0zRCAmeHRhbF9v
c2MzMmssCisgICAgLnBhcmVudCA9M0QgJnh0YWxfb3NjMzJrLAogfTsKCiBzdGF0aWMgc3RydWN0
IGNsayByZWZfY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJyZWZfY2xrIiwKLSAgICAuZmxhZ3Mg
PTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1ggfCBBTFdBWVNfRU5BQkxF
RCwKLSAgICAucmF0ZSA9M0QgMTIwMDAwMDAsIC8qIDEyIE1IeiBvciAxMyBNSHogb3IgMTkuMiBN
SHogKi8KLSAgICAvKi5wYXJlbnQgPTNEIHN5cy54dGFsaW4gKi8KKyAgICAubmFtZSA9M0QgInJl
Zl9jbGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQ
MjQzWCB8IEFMV0FZU19FTkFCTEVELAorICAgIC5yYXRlID0zRCAxMjAwMDAwMCwgLypnIDEyIE1I
eiBvciAxMyBNSHogb3IgMTkuMiBNSHogKi8KKyAgICAvKi5wYXJlbnQgPTNEIHN5cy54dGFsaW4g
Ki8KIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgYXBsbF85Nm0gPTNEIHsKLSAgICAubmFtZSA9M0Qg
ImFwbGxfOTZtIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5f
T01BUDI0M1ggfCBBTFdBWVNfRU5BQkxFRCwKLSAgICAucmF0ZSA9M0QgOTYwMDAwMDAsCi0gICAg
LyoucGFyZW50ID0zRCByZWZfY2xrICovCisgICAgLm5hbWUgPTNEICJhcGxsXzk2bSIsCisgICAg
LmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYIHwgQUxXQVlT
X0VOQUJMRUQsCisgICAgLnJhdGUgPTNEIDk2MDAwMDAwLAorICAgIC8qLnBhcmVudCA9M0QgcmVm
X2NsayAqLwogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBhcGxsXzU0bSA9M0QgewotICAgIC5uYW1l
ID0zRCAiYXBsbF81NG0iLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9D
S19JTl9PTUFQMjQzWCB8IEFMV0FZU19FTkFCTEVELAotICAgIC5yYXRlID0zRCA1NDAwMDAwMCwK
LSAgICAvKi5wYXJlbnQgPTNEIHJlZl9jbGsgKi8KKyAgICAubmFtZSA9M0QgImFwbGxfNTRtIiwK
KyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1ggfCBB
TFdBWVNfRU5BQkxFRCwKKyAgICAucmF0ZSA9M0QgNTQwMDAwMDAsCisgICAgLyoucGFyZW50ID0z
RCByZWZfY2xrICovCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIHN5c19jbGsgPTNEIHsKLSAgICAu
bmFtZSA9M0QgInN5c19jbGsiLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBD
TE9DS19JTl9PTUFQMjQzWCB8IEFMV0FZU19FTkFCTEVELAotICAgIC5yYXRlID0zRCAzMjc2OCwK
LSAgICAvKi5wYXJlbnQgPTNEIHN5cy54dGFsaW4gKi8KKyAgICAubmFtZSA9M0QgInN5c19jbGsi
LAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCB8
IEFMV0FZU19FTkFCTEVELAorICAgIC5yYXRlID0zRCAzMjc2OCwKKyAgICAvKi5wYXJlbnQgPTNE
IHN5cy54dGFsaW4gKi8KIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgc2xlZXBfY2xrID0zRCB7Ci0g
ICAgLm5hbWUgPTNEICJzbGVlcF9jbGsiLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0
MlggfCBDTE9DS19JTl9PTUFQMjQzWCB8IEFMV0FZU19FTkFCTEVELAotICAgIC5yYXRlID0zRCAz
Mjc2OCwKLSAgICAvKi5wYXJlbnQgPTNEIHN5cy54dGFsaW4gKi8KKyAgICAubmFtZSA9M0QgInNs
ZWVwX2NsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09N
QVAyNDNYIHwgQUxXQVlTX0VOQUJMRUQsCisgICAgLnJhdGUgPTNEIDMyNzY4LAorICAgIC8qLnBh
cmVudCA9M0Qgc3lzLnh0YWxpbiAqLwogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBkcGxsX2NrID0z
RCB7Ci0gICAgLm5hbWUgPTNEICJkcGxsIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAy
NDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1ggfCBBTFdBWVNfRU5BQkxFRCwKLSAgICAucGFyZW50ID0z
RCAmcmVmX2NsaywKKyAgICAubmFtZSA9M0QgImRwbGwiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tf
SU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCB8IEFMV0FZU19FTkFCTEVELAorICAgIC5w
YXJlbnQgPTNEICZyZWZfY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBkcGxsX3gyX2NrID0z
RCB7Ci0gICAgLm5hbWUgPTNEICJkcGxsX3gyIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09N
QVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1ggfCBBTFdBWVNfRU5BQkxFRCwKLSAgICAucGFyZW50
ID0zRCAmcmVmX2NsaywKKyAgICAubmFtZSA9M0QgImRwbGxfeDIiLAorICAgIC5mbGFncyA9M0Qg
Q0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCB8IEFMV0FZU19FTkFCTEVELAor
ICAgIC5wYXJlbnQgPTNEICZyZWZfY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayB3ZHQxX3N5
c19jbGsgPTNEIHsKLSAgICAubmFtZSA9M0QgIndkdDFfc3lzX2NsayIsCi0gICAgLmZsYWdzID0z
RCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYIHwgQUxXQVlTX0VOQUJMRUQs
Ci0gICAgLnJhdGUgPTNEIDMyNzY4LAotICAgIC8qLnBhcmVudCA9M0Qgc3lzLnh0YWxpbiAqLwor
ICAgIC5uYW1lID0zRCAid2R0MV9zeXNfY2xrIiwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09N
QVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1ggfCBBTFdBWVNfRU5BQkxFRCwKKyAgICAucmF0ZSA9
M0QgMzI3NjgsCisgICAgLyoucGFyZW50ID0zRCBzeXMueHRhbGluICovCiB9OwoKIHN0YXRpYyBz
dHJ1Y3QgY2xrIGZ1bmNfOTZtX2NsayA9M0QgewotICAgIC5uYW1lID0zRCAiZnVuY185Nm1fY2xr
IiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gs
Ci0gICAgLmRpdmlzb3IgPTNEIDEsCi0gICAgLnBhcmVudCA9M0QgJmFwbGxfOTZtLAorICAgIC5u
YW1lID0zRCAiZnVuY185Nm1fY2xrIiwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJY
IHwgQ0xPQ0tfSU5fT01BUDI0M1gsCisgICAgLmRpdmlzb3IgPTNEIDEsCisgICAgLnBhcmVudCA9
M0QgJmFwbGxfOTZtLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBmdW5jXzQ4bV9jbGsgPTNEIHsK
LSAgICAubmFtZSA9M0QgImZ1bmNfNDhtX2NsayIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9P
TUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAotICAgIC5kaXZpc29yID0zRCAyLAotICAgIC5w
YXJlbnQgPTNEICZhcGxsXzk2bSwKKyAgICAubmFtZSA9M0QgImZ1bmNfNDhtX2NsayIsCisgICAg
LmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAgIC5k
aXZpc29yID0zRCAyLAorICAgIC5wYXJlbnQgPTNEICZhcGxsXzk2bSwKIH07Cgogc3RhdGljIHN0
cnVjdCBjbGsgZnVuY18xMm1fY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJmdW5jXzEybV9jbGsi
LAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwK
LSAgICAuZGl2aXNvciA9M0QgOCwKLSAgICAucGFyZW50ID0zRCAmYXBsbF85Nm0sCisgICAgLm5h
bWUgPTNEICJmdW5jXzEybV9jbGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0Mlgg
fCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAuZGl2aXNvciA9M0QgOCwKKyAgICAucGFyZW50ID0z
RCAmYXBsbF85Nm0sCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGZ1bmNfNTRtX2NsayA9M0Qgewot
ICAgIC5uYW1lID0zRCAiZnVuY181NG1fY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09N
QVAyNDJYLAotICAgIC5kaXZpc29yID0zRCAxLAotICAgIC5wYXJlbnQgPTNEICZhcGxsXzU0bSwK
KyAgICAubmFtZSA9M0QgImZ1bmNfNTRtX2NsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9P
TUFQMjQyWCwKKyAgICAuZGl2aXNvciA9M0QgMSwKKyAgICAucGFyZW50ID0zRCAmYXBsbF81NG0s
CiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIHN5c19jbGtvdXQgPTNEIHsKLSAgICAubmFtZSA9M0Qg
ImNsa291dCIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09N
QVAyNDNYLAotICAgIC5wYXJlbnQgPTNEICZzeXNfY2xrLAorICAgIC5uYW1lID0zRCAiY2xrb3V0
IiwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gs
CisgICAgLnBhcmVudCA9M0QgJnN5c19jbGssCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIHN5c19j
bGtvdXQyID0zRCB7Ci0gICAgLm5hbWUgPTNEICJjbGtvdXQyIiwKLSAgICAuZmxhZ3MgPTNEIENM
T0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJnN5
c19jbGssCisgICAgLm5hbWUgPTNEICJjbGtvdXQyIiwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lO
X09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCisgICAgLnBhcmVudCA9M0QgJnN5c19jbGss
CiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGNvcmVfY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJj
b3JlX2NsayIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09N
QVAyNDNYLAotICAgIC5wYXJlbnQgPTNEICZkcGxsX3gyX2NrLCAvKiBTd2l0Y2hhYmxlIGJldHdl
ZW4gZHBsbF9jayBhbmQgY2xrMzJrICovCisgICAgLm5hbWUgPTNEICJjb3JlX2NsayIsCisgICAg
LmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAgIC5w
YXJlbnQgPTNEICZkcGxsX3gyX2NrLCAvKmcgU3dpdGNoYWJsZSBiZXR3ZWVuIGRwbGxfY2sgYW5k
IGNsazMyayAqLwogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBsM19jbGsgPTNEIHsKLSAgICAubmFt
ZSA9M0QgImwzX2NsayIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NL
X0lOX09NQVAyNDNYLAotICAgIC5wYXJlbnQgPTNEICZjb3JlX2NsaywKKyAgICAubmFtZSA9M0Qg
ImwzX2NsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09N
QVAyNDNYLAorICAgIC5wYXJlbnQgPTNEICZjb3JlX2NsaywKIH07Cgogc3RhdGljIHN0cnVjdCBj
bGsgY29yZV9sNF9pY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJjb3JlX2w0X2ljbGsiLAotICAg
IC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKLSAgICAu
cGFyZW50ID0zRCAmbDNfY2xrLAorICAgIC5uYW1lID0zRCAiY29yZV9sNF9pY2xrIiwKKyAgICAu
ZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCisgICAgLnBh
cmVudCA9M0QgJmwzX2NsaywKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgd3VfbDRfaWNsayA9M0Qg
ewotICAgIC5uYW1lID0zRCAid3VfbDRfaWNsayIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9P
TUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAotICAgIC5wYXJlbnQgPTNEICZsM19jbGssCisg
ICAgLm5hbWUgPTNEICJ3dV9sNF9pY2xrIiwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAy
NDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCisgICAgLnBhcmVudCA9M0QgJmwzX2NsaywKIH07Cgog
c3RhdGljIHN0cnVjdCBjbGsgY29yZV9sM19pY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJjb3Jl
X2wzX2ljbGsiLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9P
TUFQMjQzWCwKLSAgICAucGFyZW50ID0zRCAmY29yZV9jbGssCisgICAgLm5hbWUgPTNEICJjb3Jl
X2wzX2ljbGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9P
TUFQMjQzWCwKKyAgICAucGFyZW50ID0zRCAmY29yZV9jbGssCiB9OwoKIHN0YXRpYyBzdHJ1Y3Qg
Y2xrIGNvcmVfbDRfdXNiX2NsayA9M0QgewotICAgIC5uYW1lID0zRCAiY29yZV9sNF91c2JfY2xr
IiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gs
Ci0gICAgLnBhcmVudCA9M0QgJmwzX2NsaywKKyAgICAubmFtZSA9M0QgImNvcmVfbDRfdXNiX2Ns
ayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNY
LAorICAgIC5wYXJlbnQgPTNEICZsM19jbGssCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIHd1X2dw
dDFfY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJ3dV9ncHQxX2NsayIsCi0gICAgLmZsYWdzID0z
RCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAotICAgIC5wYXJlbnQgPTNE
ICZzeXNfY2xrLAorICAgIC5uYW1lID0zRCAid3VfZ3B0MV9jbGsiLAorICAgIC5mbGFncyA9M0Qg
Q0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAucGFyZW50ID0zRCAm
c3lzX2NsaywKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgd3VfMzJrX2NsayA9M0QgewotICAgIC5u
YW1lID0zRCAid3VfMzJrX2NsayIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8
IENMT0NLX0lOX09NQVAyNDNYLAotICAgIC5wYXJlbnQgPTNEICZzeXNfY2xrLAorICAgIC5uYW1l
ID0zRCAid3VfMzJrX2NsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENM
T0NLX0lOX09NQVAyNDNYLAorICAgIC5wYXJlbnQgPTNEICZzeXNfY2xrLAogfTsKCiBzdGF0aWMg
c3RydWN0IGNsayB1YXJ0MV9mY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJ1YXJ0MV9mY2xrIiwK
LSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0g
ICAgLnBhcmVudCA9M0QgJmZ1bmNfNDhtX2NsaywKKyAgICAubmFtZSA9M0QgInVhcnQxX2ZjbGsi
LAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwK
KyAgICAucGFyZW50ID0zRCAmZnVuY180OG1fY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayB1
YXJ0MV9pY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJ1YXJ0MV9pY2xrIiwKLSAgICAuZmxhZ3Mg
PTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgLnBhcmVudCA9
M0QgJmNvcmVfbDRfaWNsaywKKyAgICAubmFtZSA9M0QgInVhcnQxX2ljbGsiLAorICAgIC5mbGFn
cyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAucGFyZW50
ID0zRCAmY29yZV9sNF9pY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayB1YXJ0Ml9mY2xrID0z
RCB7Ci0gICAgLm5hbWUgPTNEICJ1YXJ0Ml9mY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lO
X09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJmZ1bmNfNDht
X2NsaywKKyAgICAubmFtZSA9M0QgInVhcnQyX2ZjbGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tf
SU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAucGFyZW50ID0zRCAmZnVuY180
OG1fY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayB1YXJ0Ml9pY2xrID0zRCB7Ci0gICAgLm5h
bWUgPTNEICJ1YXJ0Ml9pY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwg
Q0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJmNvcmVfbDRfaWNsaywKKyAgICAu
bmFtZSA9M0QgInVhcnQyX2ljbGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0Mlgg
fCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAucGFyZW50ID0zRCAmY29yZV9sNF9pY2xrLAogfTsK
CiBzdGF0aWMgc3RydWN0IGNsayB1YXJ0M19mY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJ1YXJ0
M19mY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01B
UDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJmZ1bmNfNDhtX2NsaywKKyAgICAubmFtZSA9M0QgInVh
cnQzX2ZjbGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9P
TUFQMjQzWCwKKyAgICAucGFyZW50ID0zRCAmZnVuY180OG1fY2xrLAogfTsKCiBzdGF0aWMgc3Ry
dWN0IGNsayB1YXJ0M19pY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJ1YXJ0M19pY2xrIiwKLSAg
ICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAg
LnBhcmVudCA9M0QgJmNvcmVfbDRfaWNsaywKKyAgICAubmFtZSA9M0QgInVhcnQzX2ljbGsiLAor
ICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKKyAg
ICAucGFyZW50ID0zRCAmY29yZV9sNF9pY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBtcHVf
ZmNsayA9M0QgewotICAgIC5uYW1lID0zRCAibXB1X2ZjbGsiLAotICAgIC5mbGFncyA9M0QgQ0xP
Q0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKLSAgICAucGFyZW50ID0zRCAmY29y
ZV9jbGssCisgICAgLm5hbWUgPTNEICJtcHVfZmNsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19J
Tl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAgIC5wYXJlbnQgPTNEICZjb3JlX2Ns
aywKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgbXB1X2ljbGsgPTNEIHsKLSAgICAubmFtZSA9M0Qg
Im1wdV9pY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5f
T01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJmNvcmVfY2xrLAorICAgIC5uYW1lID0zRCAibXB1
X2ljbGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQ
MjQzWCwKKyAgICAucGFyZW50ID0zRCAmY29yZV9jbGssCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xr
IGludF9tX2ZjbGsgPTNEIHsKLSAgICAubmFtZSA9M0QgImludF9tX2ZjbGsiLAotICAgIC5hbGlh
cyA9M0QgIm1wdV9pbnRjX2ZjbGsiLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0Mlgg
fCBDTE9DS19JTl9PTUFQMjQzWCwKLSAgICAucGFyZW50ID0zRCAmY29yZV9jbGssCisgICAgLm5h
bWUgPTNEICJpbnRfbV9mY2xrIiwKKyAgICAuYWxpYXMgPTNEICJtcHVfaW50Y19mY2xrIiwKKyAg
ICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCisgICAg
LnBhcmVudCA9M0QgJmNvcmVfY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBpbnRfbV9pY2xr
ID0zRCB7Ci0gICAgLm5hbWUgPTNEICJpbnRfbV9pY2xrIiwKLSAgICAuYWxpYXMgPTNEICJtcHVf
aW50Y19pY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5f
T01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJmNvcmVfY2xrLAorICAgIC5uYW1lID0zRCAiaW50
X21faWNsayIsCisgICAgLmFsaWFzID0zRCAibXB1X2ludGNfaWNsayIsCisgICAgLmZsYWdzID0z
RCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAgIC5wYXJlbnQgPTNE
ICZjb3JlX2NsaywKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgY29yZV9ncHQyX2NsayA9M0Qgewot
ICAgIC5uYW1lID0zRCAiY29yZV9ncHQyX2NsayIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9P
TUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAotICAgIC5wYXJlbnQgPTNEICZzeXNfY2xrLAor
ICAgIC5uYW1lID0zRCAiY29yZV9ncHQyX2NsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9P
TUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAgIC5wYXJlbnQgPTNEICZzeXNfY2xrLAog
fTsKCiBzdGF0aWMgc3RydWN0IGNsayBjb3JlX2dwdDNfY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNE
ICJjb3JlX2dwdDNfY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xP
Q0tfSU5fT01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJnN5c19jbGssCisgICAgLm5hbWUgPTNE
ICJjb3JlX2dwdDNfY2xrIiwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xP
Q0tfSU5fT01BUDI0M1gsCisgICAgLnBhcmVudCA9M0QgJnN5c19jbGssCiB9OwoKIHN0YXRpYyBz
dHJ1Y3QgY2xrIGNvcmVfZ3B0NF9jbGsgPTNEIHsKLSAgICAubmFtZSA9M0QgImNvcmVfZ3B0NF9j
bGsiLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQz
WCwKLSAgICAucGFyZW50ID0zRCAmc3lzX2NsaywKKyAgICAubmFtZSA9M0QgImNvcmVfZ3B0NF9j
bGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQz
WCwKKyAgICAucGFyZW50ID0zRCAmc3lzX2NsaywKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgY29y
ZV9ncHQ1X2NsayA9M0QgewotICAgIC5uYW1lID0zRCAiY29yZV9ncHQ1X2NsayIsCi0gICAgLmZs
YWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAotICAgIC5wYXJl
bnQgPTNEICZzeXNfY2xrLAorICAgIC5uYW1lID0zRCAiY29yZV9ncHQ1X2NsayIsCisgICAgLmZs
YWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAgIC5wYXJl
bnQgPTNEICZzeXNfY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBjb3JlX2dwdDZfY2xrID0z
RCB7Ci0gICAgLm5hbWUgPTNEICJjb3JlX2dwdDZfY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NL
X0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJnN5c19j
bGssCisgICAgLm5hbWUgPTNEICJjb3JlX2dwdDZfY2xrIiwKKyAgICAuZmxhZ3MgPTNEIENMT0NL
X0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCisgICAgLnBhcmVudCA9M0QgJnN5c19j
bGssCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGNvcmVfZ3B0N19jbGsgPTNEIHsKLSAgICAubmFt
ZSA9M0QgImNvcmVfZ3B0N19jbGsiLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0Mlgg
fCBDTE9DS19JTl9PTUFQMjQzWCwKLSAgICAucGFyZW50ID0zRCAmc3lzX2NsaywKKyAgICAubmFt
ZSA9M0QgImNvcmVfZ3B0N19jbGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0Mlgg
fCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAucGFyZW50ID0zRCAmc3lzX2NsaywKIH07Cgogc3Rh
dGljIHN0cnVjdCBjbGsgY29yZV9ncHQ4X2NsayA9M0QgewotICAgIC5uYW1lID0zRCAiY29yZV9n
cHQ4X2NsayIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09N
QVAyNDNYLAotICAgIC5wYXJlbnQgPTNEICZzeXNfY2xrLAorICAgIC5uYW1lID0zRCAiY29yZV9n
cHQ4X2NsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09N
QVAyNDNYLAorICAgIC5wYXJlbnQgPTNEICZzeXNfY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNs
ayBjb3JlX2dwdDlfY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJjb3JlX2dwdDlfY2xrIiwKLSAg
ICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAg
LnBhcmVudCA9M0QgJnN5c19jbGssCisgICAgLm5hbWUgPTNEICJjb3JlX2dwdDlfY2xrIiwKKyAg
ICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCisgICAg
LnBhcmVudCA9M0QgJnN5c19jbGssCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGNvcmVfZ3B0MTBf
Y2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJjb3JlX2dwdDEwX2NsayIsCi0gICAgLmZsYWdzID0z
RCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAotICAgIC5wYXJlbnQgPTNE
ICZzeXNfY2xrLAorICAgIC5uYW1lID0zRCAiY29yZV9ncHQxMF9jbGsiLAorICAgIC5mbGFncyA9
M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAucGFyZW50ID0z
RCAmc3lzX2NsaywKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgY29yZV9ncHQxMV9jbGsgPTNEIHsK
LSAgICAubmFtZSA9M0QgImNvcmVfZ3B0MTFfY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lO
X09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJnN5c19jbGss
CisgICAgLm5hbWUgPTNEICJjb3JlX2dwdDExX2NsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19J
Tl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAgIC5wYXJlbnQgPTNEICZzeXNfY2xr
LAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBjb3JlX2dwdDEyX2NsayA9M0QgewotICAgIC5uYW1l
ID0zRCAiY29yZV9ncHQxMl9jbGsiLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0Mlgg
fCBDTE9DS19JTl9PTUFQMjQzWCwKLSAgICAucGFyZW50ID0zRCAmc3lzX2NsaywKKyAgICAubmFt
ZSA9M0QgImNvcmVfZ3B0MTJfY2xrIiwKKyAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJY
IHwgQ0xPQ0tfSU5fT01BUDI0M1gsCisgICAgLnBhcmVudCA9M0QgJnN5c19jbGssCiB9OwoKIHN0
YXRpYyBzdHJ1Y3QgY2xrIG1jYnNwMV9jbGsgPTNEIHsKLSAgICAubmFtZSA9M0QgIm1jYnNwMV9j
ZyIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNY
LAotICAgIC5kaXZpc29yID0zRCAyLAotICAgIC5wYXJlbnQgPTNEICZmdW5jXzk2bV9jbGssCisg
ICAgLm5hbWUgPTNEICJtY2JzcDFfY2ciLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0
MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAuZGl2aXNvciA9M0QgMiwKKyAgICAucGFyZW50
ID0zRCAmZnVuY185Nm1fY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBtY2JzcDJfY2xrID0z
RCB7Ci0gICAgLm5hbWUgPTNEICJtY2JzcDJfY2ciLAotICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5f
T01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKLSAgICAuZGl2aXNvciA9M0QgMiwKLSAgICAu
cGFyZW50ID0zRCAmZnVuY185Nm1fY2xrLAorICAgIC5uYW1lID0zRCAibWNic3AyX2NnIiwKKyAg
ICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCisgICAg
LmRpdmlzb3IgPTNEIDIsCisgICAgLnBhcmVudCA9M0QgJmZ1bmNfOTZtX2NsaywKIH07Cgogc3Rh
dGljIHN0cnVjdCBjbGsgZW11bF9jbGsgPTNEIHsKLSAgICAubmFtZSA9M0QgImVtdWxfY2siLAot
ICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKLSAg
ICAucGFyZW50ID0zRCAmZnVuY181NG1fY2xrLAorICAgIC5uYW1lID0zRCAiZW11bF9jayIsCisg
ICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAg
IC5wYXJlbnQgPTNEICZmdW5jXzU0bV9jbGssCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIHNkbWFf
ZmNsayA9M0QgewotICAgIC5uYW1lID0zRCAic2RtYV9mY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENM
T0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJmwz
X2NsaywKKyAgICAubmFtZSA9M0QgInNkbWFfZmNsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19J
Tl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAgIC5wYXJlbnQgPTNEICZsM19jbGss
CiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIHNkbWFfaWNsayA9M0QgewotICAgIC5uYW1lID0zRCAi
c2RtYV9pY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5f
T01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJmNvcmVfbDNfaWNsaywgLyogY29yZV9sNF9pY2xr
IGZvciB0aGUgY29uZmlndXJhdGlvbiBwb3J0ID0KKi8KKyAgICAubmFtZSA9M0QgInNkbWFfaWNs
ayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNY
LAorICAgIC5wYXJlbnQgPTNEICZjb3JlX2wzX2ljbGssIC8qIGNvcmVfbDRfaWNsayBmb3IgdGhl
IGNvbmZpZ3VyYXRpb24gcG9ydCA9CiovCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGkyYzFfZmNs
ayA9M0QgewotICAgIC5uYW1lID0zRCAiaTJjMS5mY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NL
X0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJmZ1bmNf
MTJtX2NsaywKLSAgICAuZGl2aXNvciA9M0QgMSwKKyAgICAubmFtZSA9M0QgImkyYzEuZmNsayIs
CisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAor
ICAgIC5wYXJlbnQgPTNEICZmdW5jXzEybV9jbGssCisgICAgLmRpdmlzb3IgPTNEIDEsCiB9OwoK
IHN0YXRpYyBzdHJ1Y3QgY2xrIGkyYzFfaWNsayA9M0QgewotICAgIC5uYW1lID0zRCAiaTJjMS5p
Y2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0
M1gsCi0gICAgLnBhcmVudCA9M0QgJmNvcmVfbDRfaWNsaywKKyAgICAubmFtZSA9M0QgImkyYzEu
aWNsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAy
NDNYLAorICAgIC5wYXJlbnQgPTNEICZjb3JlX2w0X2ljbGssCiB9OwoKIHN0YXRpYyBzdHJ1Y3Qg
Y2xrIGkyYzJfZmNsayA9M0QgewotICAgIC5uYW1lID0zRCAiaTJjMi5mY2xrIiwKLSAgICAuZmxh
Z3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgLnBhcmVu
dCA9M0QgJmZ1bmNfMTJtX2NsaywKLSAgICAuZGl2aXNvciA9M0QgMSwKKyAgICAubmFtZSA9M0Qg
ImkyYzIuZmNsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lO
X09NQVAyNDNYLAorICAgIC5wYXJlbnQgPTNEICZmdW5jXzEybV9jbGssCisgICAgLmRpdmlzb3Ig
PTNEIDEsCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGkyYzJfaWNsayA9M0QgewotICAgIC5uYW1l
ID0zRCAiaTJjMi5pY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xP
Q0tfSU5fT01BUDI0M1gsCi0gICAgLnBhcmVudCA9M0QgJmNvcmVfbDRfaWNsaywKKyAgICAubmFt
ZSA9M0QgImkyYzIuaWNsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENM
T0NLX0lOX09NQVAyNDNYLAorICAgIC5wYXJlbnQgPTNEICZjb3JlX2w0X2ljbGssCiB9OwoKIHN0
YXRpYyBzdHJ1Y3QgY2xrIGdwaW9fZGJjbGtbNV0gPTNEIHsKICAgICB7Ci0gICAgICAgIC5uYW1l
ID0zRCAiZ3BpbzFfZGJjbGsiLAotICAgICAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJY
IHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgICAgIC5wYXJlbnQgPTNEICZ3dV8zMmtfY2xrLAor
ICAgICAgICAubmFtZSA9M0QgImdwaW8xX2RiY2xrIiwKKyAgICAgICAgLmZsYWdzID0zRCBDTE9D
S19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAgICAgICAucGFyZW50ID0zRCAm
d3VfMzJrX2NsaywKICAgICB9LCB7Ci0gICAgICAgIC5uYW1lID0zRCAiZ3BpbzJfZGJjbGsiLAot
ICAgICAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gs
Ci0gICAgICAgIC5wYXJlbnQgPTNEICZ3dV8zMmtfY2xrLAorICAgICAgICAubmFtZSA9M0QgImdw
aW8yX2RiY2xrIiwKKyAgICAgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NL
X0lOX09NQVAyNDNYLAorICAgICAgICAucGFyZW50ID0zRCAmd3VfMzJrX2NsaywKICAgICB9LCB7
Ci0gICAgICAgIC5uYW1lID0zRCAiZ3BpbzNfZGJjbGsiLAotICAgICAgICAuZmxhZ3MgPTNEIENM
T0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgICAgIC5wYXJlbnQgPTNE
ICZ3dV8zMmtfY2xrLAorICAgICAgICAubmFtZSA9M0QgImdwaW8zX2RiY2xrIiwKKyAgICAgICAg
LmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAgICAg
ICAucGFyZW50ID0zRCAmd3VfMzJrX2NsaywKICAgICB9LCB7Ci0gICAgICAgIC5uYW1lID0zRCAi
Z3BpbzRfZGJjbGsiLAotICAgICAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xP
Q0tfSU5fT01BUDI0M1gsCi0gICAgICAgIC5wYXJlbnQgPTNEICZ3dV8zMmtfY2xrLAorICAgICAg
ICAubmFtZSA9M0QgImdwaW80X2RiY2xrIiwKKyAgICAgICAgLmZsYWdzID0zRCBDTE9DS19JTl9P
TUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAgICAgICAucGFyZW50ID0zRCAmd3VfMzJr
X2NsaywKICAgICB9LCB7CiAgICAgICAgIC5uYW1lICAgPTNEICJncGlvNV9kYmNsayIsCiAgICAg
ICAgIC5mbGFncyAgPTNEIENMT0NLX0lOX09NQVAyNDNYLApAQCAtODY0LDkwICs4NjQsOTAgQEAg
c3RhdGljIHN0cnVjdCBjbGsgZ3Bpb19kYmNsa1s1XSA9M0QgewogfTsKCiBzdGF0aWMgc3RydWN0
IGNsayBncGlvX2ljbGsgPTNEIHsKLSAgICAubmFtZSA9M0QgImdwaW9faWNsayIsCi0gICAgLmZs
YWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAotICAgIC5wYXJl
bnQgPTNEICZ3dV9sNF9pY2xrLAorICAgIC5uYW1lID0zRCAiZ3Bpb19pY2xrIiwKKyAgICAuZmxh
Z3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCisgICAgLnBhcmVu
dCA9M0QgJnd1X2w0X2ljbGssCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIG1tY19mY2sgPTNEIHsK
LSAgICAubmFtZSA9M0QgIm1tY19mY2xrIiwKLSAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAy
NDJYLAotICAgIC5wYXJlbnQgPTNEICZmdW5jXzk2bV9jbGssCisgICAgLm5hbWUgPTNEICJtbWNf
ZmNsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCwKKyAgICAucGFyZW50ID0z
RCAmZnVuY185Nm1fY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBtbWNfaWNrID0zRCB7Ci0g
ICAgLm5hbWUgPTNEICJtbWNfaWNsayIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQy
WCwKLSAgICAucGFyZW50ID0zRCAmY29yZV9sNF9pY2xrLAorICAgIC5uYW1lID0zRCAibW1jX2lj
bGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlgsCisgICAgLnBhcmVudCA9M0Qg
JmNvcmVfbDRfaWNsaywKIH07Cgogc3RhdGljIHN0cnVjdCBjbGsgc3BpX2ZjbGtbM10gPTNEIHsK
ICAgICB7Ci0gICAgICAgIC5uYW1lID0zRCAic3BpMV9mY2xrIiwKLSAgICAgICAgLmZsYWdzID0z
RCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAotICAgICAgICAucGFyZW50
ID0zRCAmZnVuY180OG1fY2xrLAorICAgICAgICAubmFtZSA9M0QgInNwaTFfZmNsayIsCisgICAg
ICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKKyAg
ICAgICAgLnBhcmVudCA9M0QgJmZ1bmNfNDhtX2NsaywKICAgICB9LCB7Ci0gICAgICAgIC5uYW1l
ID0zRCAic3BpMl9mY2xrIiwKLSAgICAgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8
IENMT0NLX0lOX09NQVAyNDNYLAotICAgICAgICAucGFyZW50ID0zRCAmZnVuY180OG1fY2xrLAor
ICAgICAgICAubmFtZSA9M0QgInNwaTJfZmNsayIsCisgICAgICAgIC5mbGFncyA9M0QgQ0xPQ0tf
SU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAgICAgLnBhcmVudCA9M0QgJmZ1
bmNfNDhtX2NsaywKICAgICB9LCB7Ci0gICAgICAgIC5uYW1lID0zRCAic3BpM19mY2xrIiwKLSAg
ICAgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQzWCwKLSAgICAgICAgLnBhcmVudCA9M0Qg
JmZ1bmNfNDhtX2NsaywKKyAgICAgICAgLm5hbWUgPTNEICJzcGkzX2ZjbGsiLAorICAgICAgICAu
ZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDNYLAorICAgICAgICAucGFyZW50ID0zRCAmZnVuY180
OG1fY2xrLAogICAgIH0sCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGRzc19jbGtbMl0gPTNEIHsK
ICAgICB7Ci0gICAgICAgIC5uYW1lID0zRCAiZHNzX2NsazEiLAotICAgICAgICAuZmxhZ3MgPTNE
IENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgICAgIC5wYXJlbnQg
PTNEICZjb3JlX2NsaywKKyAgICAgICAgLm5hbWUgPTNEICJkc3NfY2xrMSIsCisgICAgICAgIC5m
bGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAgICAg
LnBhcmVudCA9M0QgJmNvcmVfY2xrLAogICAgIH0sIHsKLSAgICAgICAgLm5hbWUgPTNEICJkc3Nf
Y2xrMiIsCi0gICAgICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9P
TUFQMjQzWCwKLSAgICAgICAgLnBhcmVudCA9M0QgJnN5c19jbGssCisgICAgICAgIC5uYW1lID0z
RCAiZHNzX2NsazIiLAorICAgICAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xP
Q0tfSU5fT01BUDI0M1gsCisgICAgICAgIC5wYXJlbnQgPTNEICZzeXNfY2xrLAogICAgIH0sCiB9
OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIGRzc181NG1fY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJk
c3NfNTRtX2NsayIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lO
X09NQVAyNDNYLAotICAgIC5wYXJlbnQgPTNEICZmdW5jXzU0bV9jbGssCisgICAgLm5hbWUgPTNE
ICJkc3NfNTRtX2NsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NL
X0lOX09NQVAyNDNYLAorICAgIC5wYXJlbnQgPTNEICZmdW5jXzU0bV9jbGssCiB9OwoKIHN0YXRp
YyBzdHJ1Y3QgY2xrIGRzc19sM19pY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJkc3NfbDNfaWNs
ayIsCi0gICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNY
LAotICAgIC5wYXJlbnQgPTNEICZjb3JlX2wzX2ljbGssCisgICAgLm5hbWUgPTNEICJkc3NfbDNf
aWNsayIsCisgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAy
NDNYLAorICAgIC5wYXJlbnQgPTNEICZjb3JlX2wzX2ljbGssCiB9OwoKIHN0YXRpYyBzdHJ1Y3Qg
Y2xrIGRzc19sNF9pY2xrID0zRCB7Ci0gICAgLm5hbWUgPTNEICJkc3NfbDRfaWNsayIsCi0gICAg
LmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAotICAgIC5w
YXJlbnQgPTNEICZjb3JlX2w0X2ljbGssCisgICAgLm5hbWUgPTNEICJkc3NfbDRfaWNsayIsCisg
ICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAorICAg
IC5wYXJlbnQgPTNEICZjb3JlX2w0X2ljbGssCiB9OwoKIHN0YXRpYyBzdHJ1Y3QgY2xrIHNwaV9p
Y2xrWzNdID0zRCB7CiAgICAgewotICAgICAgICAubmFtZSA9M0QgInNwaTFfaWNsayIsCi0gICAg
ICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKLSAg
ICAgICAgLnBhcmVudCA9M0QgJmNvcmVfbDRfaWNsaywKKyAgICAgICAgLm5hbWUgPTNEICJzcGkx
X2ljbGsiLAorICAgICAgICAuZmxhZ3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5f
T01BUDI0M1gsCisgICAgICAgIC5wYXJlbnQgPTNEICZjb3JlX2w0X2ljbGssCiAgICAgfSwgewot
ICAgICAgICAubmFtZSA9M0QgInNwaTJfaWNsayIsCi0gICAgICAgIC5mbGFncyA9M0QgQ0xPQ0tf
SU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKLSAgICAgICAgLnBhcmVudCA9M0QgJmNv
cmVfbDRfaWNsaywKKyAgICAgICAgLm5hbWUgPTNEICJzcGkyX2ljbGsiLAorICAgICAgICAuZmxh
Z3MgPTNEIENMT0NLX0lOX09NQVAyNDJYIHwgQ0xPQ0tfSU5fT01BUDI0M1gsCisgICAgICAgIC5w
YXJlbnQgPTNEICZjb3JlX2w0X2ljbGssCiAgICAgfSwgewotICAgICAgICAubmFtZSA9M0QgInNw
aTNfaWNsayIsCi0gICAgICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0M1gsCi0gICAgICAg
IC5wYXJlbnQgPTNEICZjb3JlX2w0X2ljbGssCisgICAgICAgIC5uYW1lID0zRCAic3BpM19pY2xr
IiwKKyAgICAgICAgLmZsYWdzID0zRCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAgICAgLnBhcmVu
dCA9M0QgJmNvcmVfbDRfaWNsaywKICAgICB9LAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayBvbWFw
Y3RybF9jbGsgPTNEIHsKLSAgICAubmFtZSA9M0QgIm9tYXBjdHJsX2ljbGsiLAotICAgIC5mbGFn
cyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBDTE9DS19JTl9PTUFQMjQzWCwKKyAgICAubmFtZSA9
M0QgIm9tYXBjdHJsX2ljbGsiLAorICAgIC5mbGFncyA9M0QgQ0xPQ0tfSU5fT01BUDI0MlggfCBD
TE9DS19JTl9PTUFQMjQzWCwKICAgICAvKiBYWFggU2hvdWxkIGJlIGluIFdLVVAgZG9tYWluICov
Ci0gICAgLnBhcmVudCA9M0QgJmNvcmVfbDRfaWNsaywKKyAgICAucGFyZW50ID0zRCAmY29yZV9s
NF9pY2xrLAogfTsKCiBzdGF0aWMgc3RydWN0IGNsayAqb25jaGlwX2Nsa3NbXSA9M0QgewpAQCAt
MTEwMCw3ICsxMTAwLDkgQEAgdm9pZCBvbWFwX2Nsa19hZGR1c2VyKHN0cnVjdCBjbGsgKmNsaywg
cWVtdV9pcnEgdXNlcikKIHsKICAgICBxZW11X2lycSAqaTsKCi0gICAgZm9yIChpID0zRCBjbGst
PnVzZXJzOyAqaTsgaSArKyk7CisgICAgZm9yIChpID0zRCBjbGstPnVzZXJzOyAqaTsgaSsrKSB7
CisgICAgICAgIDsKKyAgICB9CiAgICAgKmkgPTNEIHVzZXI7CiB9CgpAQCAtMTEwOCwyMSArMTEx
MCwyMyBAQCBzdHJ1Y3QgY2xrICpvbWFwX2ZpbmRjbGsoc3RydWN0IG9tYXBfbXB1X3N0YXRlX3MK
Km1wdSwgY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICBzdHJ1Y3QgY2xrICppOwoKLSAgICBmb3Ig
KGkgPTNEIG1wdS0+Y2xrczsgaS0+bmFtZTsgaSArKykKLSAgICAgICAgaWYgKCFzdHJjbXAoaS0+
bmFtZSwgbmFtZSkgfHwgKGktPmFsaWFzICYmICFzdHJjbXAoaS0+YWxpYXMsCm5hbWUpKSkKKyAg
ICBmb3IgKGkgPTNEIG1wdS0+Y2xrczsgaS0+bmFtZTsgaSsrKQorICAgICAgICBpZiAoIXN0cmNt
cChpLT5uYW1lLCBuYW1lKSB8fCAoaS0+YWxpYXMgJiYgIXN0cmNtcChpLT5hbGlhcywKbmFtZSkp
KSB7CiAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQogICAgIGh3X2Vycm9yKCIlczog
JXMgbm90IGZvdW5kXG4iLCBfX2Z1bmNfXywgbmFtZSk7CiB9Cgogdm9pZCBvbWFwX2Nsa19nZXQo
c3RydWN0IGNsayAqY2xrKQogewotICAgIGNsay0+dXNlY291bnQgKys7CisgICAgY2xrLT51c2Vj
b3VudCsrOwogfQoKIHZvaWQgb21hcF9jbGtfcHV0KHN0cnVjdCBjbGsgKmNsaykKIHsKLSAgICBp
ZiAoIShjbGstPnVzZWNvdW50IC0tKSkKKyAgICBpZiAoIShjbGstPnVzZWNvdW50LS0pKSB7CiAg
ICAgICAgIGh3X2Vycm9yKCIlczogJXMgaXMgbm90IGluIHVzZVxuIiwgX19mdW5jX18sIGNsay0+
bmFtZSk7CisgICAgfQogfQoKIHN0YXRpYyB2b2lkIG9tYXBfY2xrX3VwZGF0ZShzdHJ1Y3QgY2xr
ICpjbGspCkBAIC0xMTMxLDE5ICsxMTM1LDIyIEBAIHN0YXRpYyB2b2lkIG9tYXBfY2xrX3VwZGF0
ZShzdHJ1Y3QgY2xrICpjbGspCiAgICAgcWVtdV9pcnEgKnVzZXI7CiAgICAgc3RydWN0IGNsayAq
aTsKCi0gICAgaWYgKGNsay0+cGFyZW50KQorICAgIGlmIChjbGstPnBhcmVudCkgewogICAgICAg
ICBwYXJlbnQgPTNEIGNsay0+cGFyZW50LT5ydW5uaW5nOwotICAgIGVsc2UKKyAgICB9IGVsc2Ug
ewogICAgICAgICBwYXJlbnQgPTNEIDE7CisgICAgfQoKICAgICBydW5uaW5nID0zRCBwYXJlbnQg
JiYgKGNsay0+ZW5hYmxlZCB8fAogICAgICAgICAgICAgICAgICAgICAoKGNsay0+ZmxhZ3MgJiBB
TFdBWVNfRU5BQkxFRCkgJiYgY2xrLT51c2Vjb3VudCkpOwogICAgIGlmIChjbGstPnJ1bm5pbmcg
IT0zRCBydW5uaW5nKSB7CiAgICAgICAgIGNsay0+cnVubmluZyA9M0QgcnVubmluZzsKLSAgICAg
ICAgZm9yICh1c2VyID0zRCBjbGstPnVzZXJzOyAqdXNlcjsgdXNlciArKykKKyAgICAgICAgZm9y
ICh1c2VyID0zRCBjbGstPnVzZXJzOyAqdXNlcjsgdXNlcisrKSB7CiAgICAgICAgICAgICBxZW11
X3NldF9pcnEoKnVzZXIsIHJ1bm5pbmcpOwotICAgICAgICBmb3IgKGkgPTNEIGNsay0+Y2hpbGQx
OyBpOyBpID0zRCBpLT5zaWJsaW5nKQorICAgICAgICB9CisgICAgICAgIGZvciAoaSA9M0QgY2xr
LT5jaGlsZDE7IGk7IGkgPTNEIGktPnNpYmxpbmcpIHsKICAgICAgICAgICAgIG9tYXBfY2xrX3Vw
ZGF0ZShpKTsKKyAgICAgICAgfQogICAgIH0KIH0KCkBAIC0xMTU1LDggKzExNjIsOSBAQCBzdGF0
aWMgdm9pZCBvbWFwX2Nsa19yYXRlX3VwZGF0ZV9mdWxsKHN0cnVjdCBjbGsKKmNsaywgdW5zaWdu
ZWQgbG9uZyBpbnQgcmF0ZSwKCiAgICAgY2xrLT5yYXRlID0zRCBtdWxkaXY2NChyYXRlLCBtdWx0
LCBkaXYpOwogICAgIGlmIChjbGstPnJ1bm5pbmcpCi0gICAgICAgIGZvciAodXNlciA9M0QgY2xr
LT51c2VyczsgKnVzZXI7IHVzZXIgKyspCisgICAgICAgIGZvciAodXNlciA9M0QgY2xrLT51c2Vy
czsgKnVzZXI7IHVzZXIrKykgewogICAgICAgICAgICAgcWVtdV9pcnFfcmFpc2UoKnVzZXIpOwor
ICAgICAgICB9CiAgICAgZm9yIChpID0zRCBjbGstPmNoaWxkMTsgaTsgaSA9M0QgaS0+c2libGlu
ZykKICAgICAgICAgb21hcF9jbGtfcmF0ZV91cGRhdGVfZnVsbChpLCByYXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgZGl2ICogaS0+ZGl2aXNvciwgbXVsdCAqIGktPm11bHRpcGxpZXIpOwpA
QCAtMTE4MCw3ICsxMTg4LDkgQEAgdm9pZCBvbWFwX2Nsa19yZXBhcmVudChzdHJ1Y3QgY2xrICpj
bGssIHN0cnVjdCBjbGsKKnBhcmVudCkKICAgICBzdHJ1Y3QgY2xrICoqcDsKCiAgICAgaWYgKGNs
ay0+cGFyZW50KSB7Ci0gICAgICAgIGZvciAocCA9M0QgJmNsay0+cGFyZW50LT5jaGlsZDE7ICpw
ICE9M0QgY2xrOyBwID0zRCAmKCpwKS0+c2libGluZz0KKTsKKyAgICAgICAgZm9yIChwID0zRCAm
Y2xrLT5wYXJlbnQtPmNoaWxkMTsgKnAgIT0zRCBjbGs7IHAgPTNEICYoKnApLT5zaWJsaW5nPQop
IHsKKyAgICAgICAgICAgIDsKKyAgICAgICAgfQogICAgICAgICAqcCA9M0QgY2xrLT5zaWJsaW5n
OwogICAgIH0KCkBAIC0xMjAyLDEwICsxMjEyLDExIEBAIHZvaWQgb21hcF9jbGtfb25vZmYoc3Ry
dWN0IGNsayAqY2xrLCBpbnQgb24pCgogdm9pZCBvbWFwX2Nsa19jYW5pZGxlKHN0cnVjdCBjbGsg
KmNsaywgaW50IGNhbikKIHsKLSAgICBpZiAoY2FuKQorICAgIGlmIChjYW4pIHsKICAgICAgICAg
b21hcF9jbGtfcHV0KGNsayk7Ci0gICAgZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIG9tYXBf
Y2xrX2dldChjbGspOworICAgIH0KIH0KCiB2b2lkIG9tYXBfY2xrX3NldHJhdGUoc3RydWN0IGNs
ayAqY2xrLCBpbnQgZGl2aWRlLCBpbnQgbXVsdGlwbHkpCkBAIC0xMjI2LDI3ICsxMjM3LDI5IEBA
IHZvaWQgb21hcF9jbGtfaW5pdChzdHJ1Y3Qgb21hcF9tcHVfc3RhdGVfcyAqbXB1KQogICAgIGlu
dCBjb3VudDsKICAgICBpbnQgZmxhZzsKCi0gICAgaWYgKGNwdV9pc19vbWFwMzEwKG1wdSkpCisg
ICAgaWYgKGNwdV9pc19vbWFwMzEwKG1wdSkpIHsKICAgICAgICAgZmxhZyA9M0QgQ0xPQ0tfSU5f
T01BUDMxMDsKLSAgICBlbHNlIGlmIChjcHVfaXNfb21hcDE1MTAobXB1KSkKKyAgICB9IGVsc2Ug
aWYgKGNwdV9pc19vbWFwMTUxMChtcHUpKSB7CiAgICAgICAgIGZsYWcgPTNEIENMT0NLX0lOX09N
QVAxNTEwOwotICAgIGVsc2UgaWYgKGNwdV9pc19vbWFwMjQxMChtcHUpIHx8IGNwdV9pc19vbWFw
MjQyMChtcHUpKQorICAgIH0gZWxzZSBpZiAoY3B1X2lzX29tYXAyNDEwKG1wdSkgfHwgY3B1X2lz
X29tYXAyNDIwKG1wdSkpIHsKICAgICAgICAgZmxhZyA9M0QgQ0xPQ0tfSU5fT01BUDI0Mlg7Ci0g
ICAgZWxzZSBpZiAoY3B1X2lzX29tYXAyNDMwKG1wdSkpCisgICAgfSBlbHNlIGlmIChjcHVfaXNf
b21hcDI0MzAobXB1KSkgewogICAgICAgICBmbGFnID0zRCBDTE9DS19JTl9PTUFQMjQzWDsKLSAg
ICBlbHNlIGlmIChjcHVfaXNfb21hcDM0MzAobXB1KSkKKyAgICB9IGVsc2UgaWYgKGNwdV9pc19v
bWFwMzQzMChtcHUpKSB7CiAgICAgICAgIGZsYWcgPTNEIENMT0NLX0lOX09NQVAyNDNYOwotICAg
IGVsc2UKKyAgICB9IGVsc2UgewogICAgICAgICByZXR1cm47CisgICAgfQoKLSAgICBmb3IgKGkg
PTNEIG9uY2hpcF9jbGtzLCBjb3VudCA9M0QgMDsgKmk7IGkgKyspCi0gICAgICAgIGlmICgoKmkp
LT5mbGFncyAmIGZsYWcpCi0gICAgICAgICAgICBjb3VudCArKzsKKyAgICBmb3IgKGkgPTNEIG9u
Y2hpcF9jbGtzLCBjb3VudCA9M0QgMDsgKmk7IGkrKykKKyAgICAgICAgaWYgKCgqaSktPmZsYWdz
ICYgZmxhZykgeworICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgfQogICAgIG1wdS0+Y2xr
cyA9M0QgZ19uZXcwKHN0cnVjdCBjbGssIGNvdW50ICsgMSk7Ci0gICAgZm9yIChpID0zRCBvbmNo
aXBfY2xrcywgaiA9M0QgbXB1LT5jbGtzOyAqaTsgaSArKykKKyAgICBmb3IgKGkgPTNEIG9uY2hp
cF9jbGtzLCBqID0zRCBtcHUtPmNsa3M7ICppOyBpKyspCiAgICAgICAgIGlmICgoKmkpLT5mbGFn
cyAmIGZsYWcpIHsKICAgICAgICAgICAgIG1lbWNweShqLCAqaSwgc2l6ZW9mKHN0cnVjdCBjbGsp
KTsKLSAgICAgICAgICAgIGZvciAoayA9M0QgbXB1LT5jbGtzOyBrIDwgajsgayArKykKKyAgICAg
ICAgICAgIGZvciAoayA9M0QgbXB1LT5jbGtzOyBrIDwgajsgaysrKQogICAgICAgICAgICAgICAg
IGlmIChqLT5wYXJlbnQgJiYgIXN0cmNtcChqLT5wYXJlbnQtPm5hbWUsIGstPm5hbWUpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGotPnBhcmVudCA9M0QgazsKICAgICAgICAgICAgICAgICAgICAg
ai0+c2libGluZyA9M0Qgay0+Y2hpbGQxOwpAQCAtMTI1OCw5ICsxMjcxLDkgQEAgdm9pZCBvbWFw
X2Nsa19pbml0KHN0cnVjdCBvbWFwX21wdV9zdGF0ZV9zICptcHUpCiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgai0+ZGl2aXNvciA9M0Qgai0+ZGl2aXNvciA/OiAxOwogICAgICAgICAg
ICAgai0+bXVsdGlwbGllciA9M0Qgai0+bXVsdGlwbGllciA/OiAxOwotICAgICAgICAgICAgaiAr
KzsKKyAgICAgICAgICAgIGorKzsKICAgICAgICAgfQotICAgIGZvciAoaiA9M0QgbXB1LT5jbGtz
OyBjb3VudCAtLTsgaiArKykgeworICAgIGZvciAoaiA9M0QgbXB1LT5jbGtzOyBjb3VudC0tOyBq
KyspIHsKICAgICAgICAgb21hcF9jbGtfdXBkYXRlKGopOwogICAgICAgICBvbWFwX2Nsa19yYXRl
X3VwZGF0ZShqKTsKICAgICB9CmRpZmYgLS1naXQgYS9ody9taXNjL29tYXBfbDQuYyBiL2h3L21p
c2Mvb21hcF9sNC5jCmluZGV4IGI3ODc1NDg5ZGEuLmUwZjVjZWE5MjEgMTAwNjQ0Ci0tLSBhL2h3
L21pc2Mvb21hcF9sNC5jCisrKyBiL2h3L21pc2Mvb21hcF9sNC5jCkBAIC02MSwxMyArNjEsMTMg
QEAgc3RhdGljIHVpbnQ2NF90IG9tYXBfbDR0YV9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyCmFk
ZHIsIHVuc2lnbmVkIHNpemUpCiAgICAgfQoKICAgICBzd2l0Y2ggKGFkZHIpIHsKLSAgICBjYXNl
IDB4MDA6IC8qIENPTVBPTkVOVCAqLworICAgIGNhc2UgMHgwMDogIC8qIENPTVBPTkVOVCAqLwog
ICAgICAgICByZXR1cm4gcy0+Y29tcG9uZW50OwoKLSAgICBjYXNlIDB4MjA6IC8qIEFHRU5UX0NP
TlRST0wgKi8KKyAgICBjYXNlIDB4MjA6ICAvKiBBR0VOVF9DT05UUk9MICovCiAgICAgICAgIHJl
dHVybiBzLT5jb250cm9sOwoKLSAgICBjYXNlIDB4Mjg6IC8qIEFHRU5UX1NUQVRVUyAqLworICAg
IGNhc2UgMHgyODogIC8qIEFHRU5UX1NUQVRVUyAqLwogICAgICAgICByZXR1cm4gcy0+c3RhdHVz
OwogICAgIH0KCkBAIC04NiwxNSArODYsMTYgQEAgc3RhdGljIHZvaWQgb21hcF9sNHRhX3dyaXRl
KHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgfQoKICAgICBzd2l0Y2ggKGFkZHIpIHsK
LSAgICBjYXNlIDB4MDA6IC8qIENPTVBPTkVOVCAqLwotICAgIGNhc2UgMHgyODogLyogQUdFTlRf
U1RBVFVTICovCisgICAgY2FzZSAweDAwOiAgLyogQ09NUE9ORU5UICovCisgICAgY2FzZSAweDI4
OiAgLyogQUdFTlRfU1RBVFVTICovCiAgICAgICAgIE9NQVBfUk9fUkVHKGFkZHIpOwogICAgICAg
ICBicmVhazsKCi0gICAgY2FzZSAweDIwOiAvKiBBR0VOVF9DT05UUk9MICovCisgICAgY2FzZSAw
eDIwOiAgLyogQUdFTlRfQ09OVFJPTCAqLwogICAgICAgICBzLT5jb250cm9sID0zRCB2YWx1ZSAm
IDB4MDEwMDA3MDA7Ci0gICAgICAgIGlmICh2YWx1ZSAmIDEpIC8qIE9DUF9SRVNFVCAqLwotICAg
ICAgICAgICAgcy0+c3RhdHVzICY9M0QgfjE7IC8qIFJFUV9USU1FT1VUICovCisgICAgICAgIGlm
ICh2YWx1ZSAmIDEpIHsgICAgICAgIC8qIE9DUF9SRVNFVCAqLworICAgICAgICAgICAgcy0+c3Rh
dHVzICY9M0QgfjE7ICAgICAgICAvKiBSRVFfVElNRU9VVCAqLworICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwoKICAgICBkZWZhdWx0OgpAQCAtMTE3LDcgKzExOCw3IEBAIHN0cnVjdCBvbWFwX3Rh
cmdldF9hZ2VudF9zICpvbWFwX2w0dGFfZ2V0KHN0cnVjdApvbWFwX2w0X3MgKmJ1cywKICAgICBz
dHJ1Y3Qgb21hcF90YXJnZXRfYWdlbnRfcyAqdGEgPTNEIE5VTEw7CiAgICAgY29uc3Qgc3RydWN0
IG9tYXBfbDRfYWdlbnRfaW5mb19zICppbmZvID0zRCBOVUxMOwoKLSAgICBmb3IgKGkgPTNEIDA7
IGkgPCBidXMtPnRhX251bTsgaSArKykKKyAgICBmb3IgKGkgPTNEIDA7IGkgPCBidXMtPnRhX251
bTsgaSsrKQogICAgICAgICBpZiAoYWdlbnRzW2ldLnRhID0zRD0zRCBjcykgewogICAgICAgICAg
ICAgdGEgPTNEICZidXMtPnRhW2ldOwogICAgICAgICAgICAgaW5mbyA9M0QgJmFnZW50c1tpXTsK
QEAgLTEzNCw3ICsxMzUsNyBAQCBzdHJ1Y3Qgb21hcF90YXJnZXRfYWdlbnRfcyAqb21hcF9sNHRh
X2dldChzdHJ1Y3QKb21hcF9sNF9zICpidXMsCgogICAgIHRhLT5jb21wb25lbnQgPTNEICgnUScg
PDwgMjQpIHwgKCdFJyA8PCAxNikgfCAoJ00nIDw8IDgpIHwgKCdVJyA8PCAwKTsKICAgICB0YS0+
c3RhdHVzID0zRCAweDAwMDAwMDAwOwotICAgIHRhLT5jb250cm9sID0zRCAweDAwMDAwMjAwOyAv
KiBYWFggMDEwMDAyMDAgZm9yIEw0VEFPICovCisgICAgdGEtPmNvbnRyb2wgPTNEIDB4MDAwMDAy
MDA7IC8qIFhYWCAwMTAwMDIwMCBmb3IgTDRUQU8gKi8KCiAgICAgbWVtb3J5X3JlZ2lvbl9pbml0
X2lvKCZ0YS0+aW9tZW0sIE5VTEwsICZvbWFwX2w0dGFfb3BzLCB0YSwKIm9tYXAubDR0YSIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9tYXBfbDRfcmVnaW9uX3NpemUodGEsIGluZm8tPnRh
X3JlZ2lvbikpOwpkaWZmIC0tZ2l0IGEvaHcvbWlzYy9vbWFwX3NkcmMuYyBiL2h3L21pc2Mvb21h
cF9zZHJjLmMKaW5kZXggNmFhMWIzZWY3Zi4uMjFkM2NhODY4MyAxMDA2NDQKLS0tIGEvaHcvbWlz
Yy9vbWFwX3NkcmMuYworKysgYi9ody9taXNjL29tYXBfc2RyYy5jCkBAIC00MCw0NCArNDAsNDQg
QEAgc3RhdGljIHVpbnQ2NF90IG9tYXBfc2RyY19yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyCmFk
ZHIsIHVuc2lnbmVkIHNpemUpCiAgICAgfQoKICAgICBzd2l0Y2ggKGFkZHIpIHsKLSAgICBjYXNl
IDB4MDA6IC8qIFNEUkNfUkVWSVNJT04gKi8KKyAgICBjYXNlIDB4MDA6ICAvKiBTRFJDX1JFVklT
SU9OICovCiAgICAgICAgIHJldHVybiAweDIwOwoKLSAgICBjYXNlIDB4MTA6IC8qIFNEUkNfU1lT
Q09ORklHICovCisgICAgY2FzZSAweDEwOiAgLyogU0RSQ19TWVNDT05GSUcgKi8KICAgICAgICAg
cmV0dXJuIHMtPmNvbmZpZzsKCi0gICAgY2FzZSAweDE0OiAvKiBTRFJDX1NZU1NUQVRVUyAqLwot
ICAgICAgICByZXR1cm4gMTsgLyogUkVTRVRET05FICovCi0KLSAgICBjYXNlIDB4NDA6IC8qIFNE
UkNfQ1NfQ0ZHICovCi0gICAgY2FzZSAweDQ0OiAvKiBTRFJDX1NIQVJJTkcgKi8KLSAgICBjYXNl
IDB4NDg6IC8qIFNEUkNfRVJSX0FERFIgKi8KLSAgICBjYXNlIDB4NGM6IC8qIFNEUkNfRVJSX1RZ
UEUgKi8KLSAgICBjYXNlIDB4NjA6IC8qIFNEUkNfRExMQV9TQ1RSTCAqLwotICAgIGNhc2UgMHg2
NDogLyogU0RSQ19ETExBX1NUQVRVUyAqLwotICAgIGNhc2UgMHg2ODogLyogU0RSQ19ETExCX0NU
UkwgKi8KLSAgICBjYXNlIDB4NmM6IC8qIFNEUkNfRExMQl9TVEFUVVMgKi8KLSAgICBjYXNlIDB4
NzA6IC8qIFNEUkNfUE9XRVIgKi8KLSAgICBjYXNlIDB4ODA6IC8qIFNEUkNfTUNGR18wICovCi0g
ICAgY2FzZSAweDg0OiAvKiBTRFJDX01SXzAgKi8KLSAgICBjYXNlIDB4ODg6IC8qIFNEUkNfRU1S
MV8wICovCi0gICAgY2FzZSAweDhjOiAvKiBTRFJDX0VNUjJfMCAqLwotICAgIGNhc2UgMHg5MDog
LyogU0RSQ19FTVIzXzAgKi8KLSAgICBjYXNlIDB4OTQ6IC8qIFNEUkNfRENETDFfQ1RSTCAqLwot
ICAgIGNhc2UgMHg5ODogLyogU0RSQ19EQ0RMMl9DVFJMICovCi0gICAgY2FzZSAweDljOiAvKiBT
RFJDX0FDVElNX0NUUkxBXzAgKi8KLSAgICBjYXNlIDB4YTA6IC8qIFNEUkNfQUNUSU1fQ1RSTEJf
MCAqLwotICAgIGNhc2UgMHhhNDogLyogU0RSQ19SRlJfQ1RSTF8wICovCi0gICAgY2FzZSAweGE4
OiAvKiBTRFJDX01BTlVBTF8wICovCi0gICAgY2FzZSAweGIwOiAvKiBTRFJDX01DRkdfMSAqLwot
ICAgIGNhc2UgMHhiNDogLyogU0RSQ19NUl8xICovCi0gICAgY2FzZSAweGI4OiAvKiBTRFJDX0VN
UjFfMSAqLwotICAgIGNhc2UgMHhiYzogLyogU0RSQ19FTVIyXzEgKi8KLSAgICBjYXNlIDB4YzA6
IC8qIFNEUkNfRU1SM18xICovCi0gICAgY2FzZSAweGM0OiAvKiBTRFJDX0FDVElNX0NUUkxBXzEg
Ki8KLSAgICBjYXNlIDB4Yzg6IC8qIFNEUkNfQUNUSU1fQ1RSTEJfMSAqLwotICAgIGNhc2UgMHhk
NDogLyogU0RSQ19SRlJfQ1RSTF8xICovCi0gICAgY2FzZSAweGQ4OiAvKiBTRFJDX01BTlVBTF8x
ICovCisgICAgY2FzZSAweDE0OiAgLyogU0RSQ19TWVNTVEFUVVMgKi8KKyAgICAgICAgcmV0dXJu
IDE7ICAgICAgICAgICAvKiBSRVNFVERPTkUgKi8KKworICAgIGNhc2UgMHg0MDogIC8qIFNEUkNf
Q1NfQ0ZHICovCisgICAgY2FzZSAweDQ0OiAgLyogU0RSQ19TSEFSSU5HICovCisgICAgY2FzZSAw
eDQ4OiAgLyogU0RSQ19FUlJfQUREUiAqLworICAgIGNhc2UgMHg0YzogIC8qIFNEUkNfRVJSX1RZ
UEUgKi8KKyAgICBjYXNlIDB4NjA6ICAvKiBTRFJDX0RMTEFfU0NUUkwgKi8KKyAgICBjYXNlIDB4
NjQ6ICAvKiBTRFJDX0RMTEFfU1RBVFVTICovCisgICAgY2FzZSAweDY4OiAgLyogU0RSQ19ETExC
X0NUUkwgKi8KKyAgICBjYXNlIDB4NmM6ICAvKiBTRFJDX0RMTEJfU1RBVFVTICovCisgICAgY2Fz
ZSAweDcwOiAgLyogU0RSQ19QT1dFUiAqLworICAgIGNhc2UgMHg4MDogIC8qIFNEUkNfTUNGR18w
ICovCisgICAgY2FzZSAweDg0OiAgLyogU0RSQ19NUl8wICovCisgICAgY2FzZSAweDg4OiAgLyog
U0RSQ19FTVIxXzAgKi8KKyAgICBjYXNlIDB4OGM6ICAvKiBTRFJDX0VNUjJfMCAqLworICAgIGNh
c2UgMHg5MDogIC8qIFNEUkNfRU1SM18wICovCisgICAgY2FzZSAweDk0OiAgLyogU0RSQ19EQ0RM
MV9DVFJMICovCisgICAgY2FzZSAweDk4OiAgLyogU0RSQ19EQ0RMMl9DVFJMICovCisgICAgY2Fz
ZSAweDljOiAgLyogU0RSQ19BQ1RJTV9DVFJMQV8wICovCisgICAgY2FzZSAweGEwOiAgLyogU0RS
Q19BQ1RJTV9DVFJMQl8wICovCisgICAgY2FzZSAweGE0OiAgLyogU0RSQ19SRlJfQ1RSTF8wICov
CisgICAgY2FzZSAweGE4OiAgLyogU0RSQ19NQU5VQUxfMCAqLworICAgIGNhc2UgMHhiMDogIC8q
IFNEUkNfTUNGR18xICovCisgICAgY2FzZSAweGI0OiAgLyogU0RSQ19NUl8xICovCisgICAgY2Fz
ZSAweGI4OiAgLyogU0RSQ19FTVIxXzEgKi8KKyAgICBjYXNlIDB4YmM6ICAvKiBTRFJDX0VNUjJf
MSAqLworICAgIGNhc2UgMHhjMDogIC8qIFNEUkNfRU1SM18xICovCisgICAgY2FzZSAweGM0OiAg
LyogU0RSQ19BQ1RJTV9DVFJMQV8xICovCisgICAgY2FzZSAweGM4OiAgLyogU0RSQ19BQ1RJTV9D
VFJMQl8xICovCisgICAgY2FzZSAweGQ0OiAgLyogU0RSQ19SRlJfQ1RSTF8xICovCisgICAgY2Fz
ZSAweGQ4OiAgLyogU0RSQ19NQU5VQUxfMSAqLwogICAgICAgICByZXR1cm4gMHgwMDsKICAgICB9
CgpAQCAtOTYsNDkgKzk2LDUwIEBAIHN0YXRpYyB2b2lkIG9tYXBfc2RyY193cml0ZSh2b2lkICpv
cGFxdWUsIGh3YWRkciBhZGRyLAogICAgIH0KCiAgICAgc3dpdGNoIChhZGRyKSB7Ci0gICAgY2Fz
ZSAweDAwOiAvKiBTRFJDX1JFVklTSU9OICovCi0gICAgY2FzZSAweDE0OiAvKiBTRFJDX1NZU1NU
QVRVUyAqLwotICAgIGNhc2UgMHg0ODogLyogU0RSQ19FUlJfQUREUiAqLwotICAgIGNhc2UgMHg2
NDogLyogU0RSQ19ETExBX1NUQVRVUyAqLwotICAgIGNhc2UgMHg2YzogLyogU0RSQ19ETExCX1NU
QVRVUyAqLworICAgIGNhc2UgMHgwMDogIC8qIFNEUkNfUkVWSVNJT04gKi8KKyAgICBjYXNlIDB4
MTQ6ICAvKiBTRFJDX1NZU1NUQVRVUyAqLworICAgIGNhc2UgMHg0ODogIC8qIFNEUkNfRVJSX0FE
RFIgKi8KKyAgICBjYXNlIDB4NjQ6ICAvKiBTRFJDX0RMTEFfU1RBVFVTICovCisgICAgY2FzZSAw
eDZjOiAgLyogU0RSQ19ETExCX1NUQVRVUyAqLwogICAgICAgICBPTUFQX1JPX1JFRyhhZGRyKTsK
ICAgICAgICAgcmV0dXJuOwoKLSAgICBjYXNlIDB4MTA6IC8qIFNEUkNfU1lTQ09ORklHICovCisg
ICAgY2FzZSAweDEwOiAgLyogU0RSQ19TWVNDT05GSUcgKi8KICAgICAgICAgaWYgKCh2YWx1ZSA+
PiAzKSAhPTNEIDB4MikKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGJhZCBTRFJB
TSBpZGxlIG1vZGUgJWlcbiIsCiAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCAodW5zaWdu
ZWQpdmFsdWUgPj4gMyk7Ci0gICAgICAgIGlmICh2YWx1ZSAmIDIpCisgICAgICAgIGlmICh2YWx1
ZSAmIDIpIHsKICAgICAgICAgICAgIG9tYXBfc2RyY19yZXNldChzKTsKKyAgICAgICAgfQogICAg
ICAgICBzLT5jb25maWcgPTNEIHZhbHVlICYgMHgxODsKICAgICAgICAgYnJlYWs7CgotICAgIGNh
c2UgMHg0MDogLyogU0RSQ19DU19DRkcgKi8KLSAgICBjYXNlIDB4NDQ6IC8qIFNEUkNfU0hBUklO
RyAqLwotICAgIGNhc2UgMHg0YzogLyogU0RSQ19FUlJfVFlQRSAqLwotICAgIGNhc2UgMHg2MDog
LyogU0RSQ19ETExBX1NDVFJMICovCi0gICAgY2FzZSAweDY4OiAvKiBTRFJDX0RMTEJfQ1RSTCAq
LwotICAgIGNhc2UgMHg3MDogLyogU0RSQ19QT1dFUiAqLwotICAgIGNhc2UgMHg4MDogLyogU0RS
Q19NQ0ZHXzAgKi8KLSAgICBjYXNlIDB4ODQ6IC8qIFNEUkNfTVJfMCAqLwotICAgIGNhc2UgMHg4
ODogLyogU0RSQ19FTVIxXzAgKi8KLSAgICBjYXNlIDB4OGM6IC8qIFNEUkNfRU1SMl8wICovCi0g
ICAgY2FzZSAweDkwOiAvKiBTRFJDX0VNUjNfMCAqLwotICAgIGNhc2UgMHg5NDogLyogU0RSQ19E
Q0RMMV9DVFJMICovCi0gICAgY2FzZSAweDk4OiAvKiBTRFJDX0RDREwyX0NUUkwgKi8KLSAgICBj
YXNlIDB4OWM6IC8qIFNEUkNfQUNUSU1fQ1RSTEFfMCAqLwotICAgIGNhc2UgMHhhMDogLyogU0RS
Q19BQ1RJTV9DVFJMQl8wICovCi0gICAgY2FzZSAweGE0OiAvKiBTRFJDX1JGUl9DVFJMXzAgKi8K
LSAgICBjYXNlIDB4YTg6IC8qIFNEUkNfTUFOVUFMXzAgKi8KLSAgICBjYXNlIDB4YjA6IC8qIFNE
UkNfTUNGR18xICovCi0gICAgY2FzZSAweGI0OiAvKiBTRFJDX01SXzEgKi8KLSAgICBjYXNlIDB4
Yjg6IC8qIFNEUkNfRU1SMV8xICovCi0gICAgY2FzZSAweGJjOiAvKiBTRFJDX0VNUjJfMSAqLwot
ICAgIGNhc2UgMHhjMDogLyogU0RSQ19FTVIzXzEgKi8KLSAgICBjYXNlIDB4YzQ6IC8qIFNEUkNf
QUNUSU1fQ1RSTEFfMSAqLwotICAgIGNhc2UgMHhjODogLyogU0RSQ19BQ1RJTV9DVFJMQl8xICov
Ci0gICAgY2FzZSAweGQ0OiAvKiBTRFJDX1JGUl9DVFJMXzEgKi8KLSAgICBjYXNlIDB4ZDg6IC8q
IFNEUkNfTUFOVUFMXzEgKi8KKyAgICBjYXNlIDB4NDA6ICAvKiBTRFJDX0NTX0NGRyAqLworICAg
IGNhc2UgMHg0NDogIC8qIFNEUkNfU0hBUklORyAqLworICAgIGNhc2UgMHg0YzogIC8qIFNEUkNf
RVJSX1RZUEUgKi8KKyAgICBjYXNlIDB4NjA6ICAvKiBTRFJDX0RMTEFfU0NUUkwgKi8KKyAgICBj
YXNlIDB4Njg6ICAvKiBTRFJDX0RMTEJfQ1RSTCAqLworICAgIGNhc2UgMHg3MDogIC8qIFNEUkNf
UE9XRVIgKi8KKyAgICBjYXNlIDB4ODA6ICAvKiBTRFJDX01DRkdfMCAqLworICAgIGNhc2UgMHg4
NDogIC8qIFNEUkNfTVJfMCAqLworICAgIGNhc2UgMHg4ODogIC8qIFNEUkNfRU1SMV8wICovCisg
ICAgY2FzZSAweDhjOiAgLyogU0RSQ19FTVIyXzAgKi8KKyAgICBjYXNlIDB4OTA6ICAvKiBTRFJD
X0VNUjNfMCAqLworICAgIGNhc2UgMHg5NDogIC8qIFNEUkNfRENETDFfQ1RSTCAqLworICAgIGNh
c2UgMHg5ODogIC8qIFNEUkNfRENETDJfQ1RSTCAqLworICAgIGNhc2UgMHg5YzogIC8qIFNEUkNf
QUNUSU1fQ1RSTEFfMCAqLworICAgIGNhc2UgMHhhMDogIC8qIFNEUkNfQUNUSU1fQ1RSTEJfMCAq
LworICAgIGNhc2UgMHhhNDogIC8qIFNEUkNfUkZSX0NUUkxfMCAqLworICAgIGNhc2UgMHhhODog
IC8qIFNEUkNfTUFOVUFMXzAgKi8KKyAgICBjYXNlIDB4YjA6ICAvKiBTRFJDX01DRkdfMSAqLwor
ICAgIGNhc2UgMHhiNDogIC8qIFNEUkNfTVJfMSAqLworICAgIGNhc2UgMHhiODogIC8qIFNEUkNf
RU1SMV8xICovCisgICAgY2FzZSAweGJjOiAgLyogU0RSQ19FTVIyXzEgKi8KKyAgICBjYXNlIDB4
YzA6ICAvKiBTRFJDX0VNUjNfMSAqLworICAgIGNhc2UgMHhjNDogIC8qIFNEUkNfQUNUSU1fQ1RS
TEFfMSAqLworICAgIGNhc2UgMHhjODogIC8qIFNEUkNfQUNUSU1fQ1RSTEJfMSAqLworICAgIGNh
c2UgMHhkNDogIC8qIFNEUkNfUkZSX0NUUkxfMSAqLworICAgIGNhc2UgMHhkODogIC8qIFNEUkNf
TUFOVUFMXzEgKi8KICAgICAgICAgYnJlYWs7CgogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9o
dy9taXNjL29tYXBfdGFwLmMgYi9ody9taXNjL29tYXBfdGFwLmMKaW5kZXggNGQ3ZmI3ZDg1Zi4u
ZGFhMTU2OTZlZSAxMDA2NDQKLS0tIGEvaHcvbWlzYy9vbWFwX3RhcC5jCisrKyBiL2h3L21pc2Mv
b21hcF90YXAuYwpAQCAtMzIsMjUgKzMyLDI1IEBAIHN0YXRpYyB1aW50NjRfdCBvbWFwX3RhcF9y
ZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyCmFkZHIsIHVuc2lnbmVkIHNpemUpCiAgICAgfQoKICAg
ICBzd2l0Y2ggKGFkZHIpIHsKLSAgICBjYXNlIDB4MjA0OiAvKiBJRENPREVfcmVnICovCisgICAg
Y2FzZSAweDIwNDogLyogSURDT0RFX3JlZyAqLwogICAgICAgICBzd2l0Y2ggKHMtPm1wdV9tb2Rl
bCkgewogICAgICAgICBjYXNlIG9tYXAyNDIwOgogICAgICAgICBjYXNlIG9tYXAyNDIyOgogICAg
ICAgICBjYXNlIG9tYXAyNDIzOgotICAgICAgICAgICAgcmV0dXJuIDB4NWI1ZDkwMmY7IC8qIEVT
IDIuMiAqLworICAgICAgICAgICAgcmV0dXJuIDB4NWI1ZDkwMmY7ICAvKiBFUyAyLjIgKi8KICAg
ICAgICAgY2FzZSBvbWFwMjQzMDoKLSAgICAgICAgICAgIHJldHVybiAweDViNjhhMDJmOyAvKiBF
UyAyLjIgKi8KKyAgICAgICAgICAgIHJldHVybiAweDViNjhhMDJmOyAgLyogRVMgMi4yICovCiAg
ICAgICAgIGNhc2Ugb21hcDM0MzA6Ci0gICAgICAgICAgICByZXR1cm4gMHgxYjdhZTAyZjsgLyog
RVMgMiAqLworICAgICAgICAgICAgcmV0dXJuIDB4MWI3YWUwMmY7ICAvKiBFUyAyICovCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBod19lcnJvcigiJXM6IEJhZCBtcHUgbW9kZWxcbiIs
IF9fZnVuY19fKTsKICAgICAgICAgfQoKLSAgICBjYXNlIDB4MjA4OiAvKiBQUk9EVUNUSU9OX0lE
X3JlZyBmb3IgT01BUDIgKi8KLSAgICBjYXNlIDB4MjEwOiAvKiBQUk9EVUNUSU9OX0lEX3JlZyBm
b3IgT01BUDMgKi8KKyAgICBjYXNlIDB4MjA4OiAvKiBQUk9EVUNUSU9OX0lEX3JlZyBmb3IgT01B
UDIgKi8KKyAgICBjYXNlIDB4MjEwOiAvKiBQUk9EVUNUSU9OX0lEX3JlZyBmb3IgT01BUDMgKi8K
ICAgICAgICAgc3dpdGNoIChzLT5tcHVfbW9kZWwpIHsKICAgICAgICAgY2FzZSBvbWFwMjQyMDoK
LSAgICAgICAgICAgIHJldHVybiAweDAwMDI1NGYwOyAvKiBQT1AgRVNIUzIuMS4xIGluIE45MS85
My85NSwgRVMyIGluIE44MDAKKi8KKyAgICAgICAgICAgIHJldHVybiAweDAwMDI1NGYwOyAgLyog
UE9QIEVTSFMyLjEuMSBpbiBOOTEvOTMvOTUsIEVTMiBpbiBOODAwCiovCiAgICAgICAgIGNhc2Ug
b21hcDI0MjI6CiAgICAgICAgICAgICByZXR1cm4gMHgwMDA0MDBmMDsKICAgICAgICAgY2FzZSBv
bWFwMjQyMzoKQEAgLTY4LDIyICs2OCwyMiBAQCBzdGF0aWMgdWludDY0X3Qgb21hcF90YXBfcmVh
ZCh2b2lkICpvcGFxdWUsIGh3YWRkcgphZGRyLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBjYXNl
IG9tYXAyNDIwOgogICAgICAgICBjYXNlIG9tYXAyNDIyOgogICAgICAgICBjYXNlIG9tYXAyNDIz
OgotICAgICAgICAgICAgcmV0dXJuIDB4Y2FmZWI1ZDk7IC8qIEVTIDIuMiAqLworICAgICAgICAg
ICAgcmV0dXJuIDB4Y2FmZWI1ZDk7ICAvKiBFUyAyLjIgKi8KICAgICAgICAgY2FzZSBvbWFwMjQz
MDoKLSAgICAgICAgICAgIHJldHVybiAweGNhZmViNjhhOyAvKiBFUyAyLjIgKi8KKyAgICAgICAg
ICAgIHJldHVybiAweGNhZmViNjhhOyAgLyogRVMgMi4yICovCiAgICAgICAgIGNhc2Ugb21hcDM0
MzA6Ci0gICAgICAgICAgICByZXR1cm4gMHhjYWZlYjdhZTsgLyogRVMgMiAqLworICAgICAgICAg
ICAgcmV0dXJuIDB4Y2FmZWI3YWU7ICAvKiBFUyAyICovCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBod19lcnJvcigiJXM6IEJhZCBtcHUgbW9kZWxcbiIsIF9fZnVuY19fKTsKICAgICAg
ICAgfQoKLSAgICBjYXNlIDB4MjE4OiAvKiBESUVfSURfcmVnICovCisgICAgY2FzZSAweDIxODog
LyogRElFX0lEX3JlZyAqLwogICAgICAgICByZXR1cm4gKCdRJyA8PCAyNCkgfCAoJ0UnIDw8IDE2
KSB8ICgnTScgPDwgOCkgfCAoJ1UnIDw8IDApOwotICAgIGNhc2UgMHgyMWM6IC8qIERJRV9JRF9y
ZWcgKi8KKyAgICBjYXNlIDB4MjFjOiAvKiBESUVfSURfcmVnICovCiAgICAgICAgIHJldHVybiAw
eDU0IDw8IDI0OwotICAgIGNhc2UgMHgyMjA6IC8qIERJRV9JRF9yZWcgKi8KKyAgICBjYXNlIDB4
MjIwOiAvKiBESUVfSURfcmVnICovCiAgICAgICAgIHJldHVybiAoJ1EnIDw8IDI0KSB8ICgnRScg
PDwgMTYpIHwgKCdNJyA8PCA4KSB8ICgnVScgPDwgMCk7Ci0gICAgY2FzZSAweDIyNDogLyogRElF
X0lEX3JlZyAqLworICAgIGNhc2UgMHgyMjQ6IC8qIERJRV9JRF9yZWcgKi8KICAgICAgICAgcmV0
dXJuICgnUScgPDwgMjQpIHwgKCdFJyA8PCAxNikgfCAoJ00nIDw8IDgpIHwgKCdVJyA8PCAwKTsK
ICAgICB9CgpkaWZmIC0tZ2l0IGEvaHcvc2Qvb21hcF9tbWMuYyBiL2h3L3NkL29tYXBfbW1jLmMK
aW5kZXggZWRkM2NmMmExZS4uODQ4ZTQyZjA3NiAxMDA2NDQKLS0tIGEvaHcvc2Qvb21hcF9tbWMu
YworKysgYi9ody9zZC9vbWFwX21tYy5jCkBAIC0xMDQsMTEgKzEwNCwxMSBAQCBzdGF0aWMgdm9p
ZCBvbWFwX21tY19maWZvbGV2ZWxfdXBkYXRlKHN0cnVjdApvbWFwX21tY19zICpob3N0KQogfQoK
IHR5cGVkZWYgZW51bSB7Ci0gICAgc2Rfbm9yZSA9M0QgMCwgLyogbm8gcmVzcG9uc2UgKi8KLSAg
ICBzZF9yMSwgLyogbm9ybWFsIHJlc3BvbnNlIGNvbW1hbmQgKi8KLSAgICBzZF9yMiwgLyogQ0lE
LCBDU0QgcmVnaXN0ZXJzICovCi0gICAgc2RfcjMsIC8qIE9DUiByZWdpc3RlciAqLwotICAgIHNk
X3I2ID0zRCA2LCAvKiBQdWJsaXNoZWQgUkNBIHJlc3BvbnNlICovCisgICAgc2Rfbm9yZSA9M0Qg
MCwgIC8qIG5vIHJlc3BvbnNlICovCisgICAgc2RfcjEsICAgICAgICAvKiBub3JtYWwgcmVzcG9u
c2UgY29tbWFuZCAqLworICAgIHNkX3IyLCAgICAgICAgLyogQ0lELCBDU0QgcmVnaXN0ZXJzICov
CisgICAgc2RfcjMsICAgICAgICAvKiBPQ1IgcmVnaXN0ZXIgKi8KKyAgICBzZF9yNiA9M0QgNiwg
ICAgLyogUHVibGlzaGVkIFJDQSByZXNwb25zZSAqLwogICAgIHNkX3IxYiA9M0QgLTEsCiB9IHNk
X3JzcF90eXBlX3Q7CgpAQCAtMTI1LDggKzEyNSw5IEBAIHN0YXRpYyB2b2lkIG9tYXBfbW1jX2Nv
bW1hbmQoc3RydWN0IG9tYXBfbW1jX3MgKmhvc3QsCmludCBjbWQsIGludCBkaXIsCiAgICAgICAg
IHJldHVybjsKICAgICB9CgotICAgIGlmIChyZXNwdHlwZSA9M0Q9M0Qgc2RfcjEgJiYgYnVzeSkK
KyAgICBpZiAocmVzcHR5cGUgPTNEPTNEIHNkX3IxICYmIGJ1c3kpIHsKICAgICAgICAgcmVzcHR5
cGUgPTNEIHNkX3IxYjsKKyAgICB9CgogICAgIGlmICh0eXBlID0zRD0zRCBzZF9hZHRjKSB7CiAg
ICAgICAgIGhvc3QtPmZpZm9fc3RhcnQgPTNEIDA7CkBAIC0xNjQsOCArMTY1LDkgQEAgc3RhdGlj
IHZvaWQgb21hcF9tbWNfY29tbWFuZChzdHJ1Y3Qgb21hcF9tbWNfcyAqaG9zdCwKaW50IGNtZCwg
aW50IGRpciwKICAgICAgICAgICAgICAgICBMT0NLX1VOTE9DS19GQUlMRUQgfCBDT01fQ1JDX0VS
Uk9SIHwgSUxMRUdBTF9DT01NQU5EIHwKICAgICAgICAgICAgICAgICBDQVJEX0VDQ19GQUlMRUQg
fCBDQ19FUlJPUiB8IFNEX0VSUk9SIHwKICAgICAgICAgICAgICAgICBDSURfQ1NEX09WRVJXUklU
RTsKLSAgICAgICAgaWYgKGhvc3QtPnNkaW8gJiAoMSA8PCAxMykpCisgICAgICAgIGlmIChob3N0
LT5zZGlvICYgKDEgPDwgMTMpKSB7CiAgICAgICAgICAgICBtYXNrIHw9M0QgQUtFX1NFUV9FUlJP
UjsKKyAgICAgICAgfQogICAgICAgICByc3BzdGF0dXMgPTNEIGxkbF9iZV9wKHJlc3BvbnNlKTsK
ICAgICAgICAgYnJlYWs7CgpAQCAtMTg1LDEwICsxODcsMTEgQEAgc3RhdGljIHZvaWQgb21hcF9t
bWNfY29tbWFuZChzdHJ1Y3Qgb21hcF9tbWNfcyAqaG9zdCwKaW50IGNtZCwgaW50IGRpciwKICAg
ICAgICAgcnNwbGVuID0zRCA0OwoKICAgICAgICAgcnNwc3RhdHVzID0zRCBsZGxfYmVfcChyZXNw
b25zZSk7Ci0gICAgICAgIGlmIChyc3BzdGF0dXMgJiAweDgwMDAwMDAwKQorICAgICAgICBpZiAo
cnNwc3RhdHVzICYgMHg4MDAwMDAwMCkgewogICAgICAgICAgICAgaG9zdC0+c3RhdHVzICY9M0Qg
MHhlMDAwOwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBob3N0
LT5zdGF0dXMgfD0zRCAweDEwMDA7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CgogICAgIGNh
c2Ugc2RfcjY6CkBAIC0yMDIsMzUgKzIwNSwzOSBAQCBzdGF0aWMgdm9pZCBvbWFwX21tY19jb21t
YW5kKHN0cnVjdCBvbWFwX21tY19zICpob3N0LAppbnQgY21kLCBpbnQgZGlyLAogICAgICAgICBy
c3BzdGF0dXMgPTNEIChyZXNwb25zZVsyXSA8PCA4KSB8IChyZXNwb25zZVszXSA8PCAwKTsKICAg
ICB9CgotICAgIGlmIChyc3BzdGF0dXMgJiBtYXNrKQorICAgIGlmIChyc3BzdGF0dXMgJiBtYXNr
KSB7CiAgICAgICAgIGhvc3QtPnN0YXR1cyB8PTNEIDB4NDAwMDsKLSAgICBlbHNlCisgICAgfSBl
bHNlIHsKICAgICAgICAgaG9zdC0+c3RhdHVzICY9M0QgMHhiMDAwOworICAgIH0KCiAgICAgaWYg
KHJzcGxlbikKLSAgICAgICAgZm9yIChyc3BsZW4gPTNEIDA7IHJzcGxlbiA8IDg7IHJzcGxlbiAr
KykKKyAgICAgICAgZm9yIChyc3BsZW4gPTNEIDA7IHJzcGxlbiA8IDg7IHJzcGxlbisrKQogICAg
ICAgICAgICAgaG9zdC0+cnNwW35yc3BsZW4gJiA3XSA9M0QgcmVzcG9uc2VbKHJzcGxlbiA8PCAx
KSB8IDFdIHwKICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlWyhyc3BsZW4gPDwgMSkgfCAw
XSA8PCA4KTsKCi0gICAgaWYgKHRpbWVvdXQpCisgICAgaWYgKHRpbWVvdXQpIHsKICAgICAgICAg
aG9zdC0+c3RhdHVzIHw9M0QgMHgwMDgwOwotICAgIGVsc2UgaWYgKGNtZCA9M0Q9M0QgMTIpCi0g
ICAgICAgIGhvc3QtPnN0YXR1cyB8PTNEIDB4MDAwNTsgLyogTWFrZXMgaXQgbW9yZSByZWFsICov
Ci0gICAgZWxzZQorICAgIH0gZWxzZSBpZiAoY21kID0zRD0zRCAxMikgeworICAgICAgICBob3N0
LT5zdGF0dXMgfD0zRCAweDAwMDU7IC8qIE1ha2VzIGl0IG1vcmUgcmVhbCAqLworICAgIH0gZWxz
ZSB7CiAgICAgICAgIGhvc3QtPnN0YXR1cyB8PTNEIDB4MDAwMTsKKyAgICB9CiB9Cgogc3RhdGlj
IHZvaWQgb21hcF9tbWNfdHJhbnNmZXIoc3RydWN0IG9tYXBfbW1jX3MgKmhvc3QpCiB7CiAgICAg
dWludDhfdCB2YWx1ZTsKCi0gICAgaWYgKCFob3N0LT50cmFuc2ZlcikKKyAgICBpZiAoIWhvc3Qt
PnRyYW5zZmVyKSB7CiAgICAgICAgIHJldHVybjsKKyAgICB9CgogICAgIHdoaWxlICgxKSB7CiAg
ICAgICAgIGlmIChob3N0LT5kZGlyKSB7Ci0gICAgICAgICAgICBpZiAoaG9zdC0+Zmlmb19sZW4g
PiBob3N0LT5hZl9sZXZlbCkKKyAgICAgICAgICAgIGlmIChob3N0LT5maWZvX2xlbiA+IGhvc3Qt
PmFmX2xldmVsKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CgogICAg
ICAgICAgICAgdmFsdWUgPTNEIHNkX3JlYWRfYnl0ZShob3N0LT5jYXJkKTsKICAgICAgICAgICAg
IGhvc3QtPmZpZm9bKGhvc3QtPmZpZm9fc3RhcnQgKyBob3N0LT5maWZvX2xlbikgJiAzMV0gPTNE
IHZhbHVlOwpAQCAtMjM4LDI5ICsyNDUsMzAgQEAgc3RhdGljIHZvaWQgb21hcF9tbWNfdHJhbnNm
ZXIoc3RydWN0IG9tYXBfbW1jX3MgKmhvc3QpCiAgICAgICAgICAgICAgICAgdmFsdWUgPTNEIHNk
X3JlYWRfYnl0ZShob3N0LT5jYXJkKTsKICAgICAgICAgICAgICAgICBob3N0LT5maWZvWyhob3N0
LT5maWZvX3N0YXJ0ICsgaG9zdC0+Zmlmb19sZW4pICYgMzFdIHw9M0QKICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlIDw8IDg7Ci0gICAgICAgICAgICAgICAgaG9zdC0+Ymxlbl9jb3VudGVy
IC0tOworICAgICAgICAgICAgICAgIGhvc3QtPmJsZW5fY291bnRlci0tOwogICAgICAgICAgICAg
fQoKLSAgICAgICAgICAgIGhvc3QtPmZpZm9fbGVuICsrOworICAgICAgICAgICAgaG9zdC0+Zmlm
b19sZW4rKzsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghaG9zdC0+Zmlmb19s
ZW4pCisgICAgICAgICAgICBpZiAoIWhvc3QtPmZpZm9fbGVuKSB7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CgogICAgICAgICAgICAgdmFsdWUgPTNEIGhvc3QtPmZpZm9b
aG9zdC0+Zmlmb19zdGFydF0gJiAweGZmOwogICAgICAgICAgICAgc2Rfd3JpdGVfYnl0ZShob3N0
LT5jYXJkLCB2YWx1ZSk7CiAgICAgICAgICAgICBpZiAoLS0gaG9zdC0+Ymxlbl9jb3VudGVyKSB7
CiAgICAgICAgICAgICAgICAgdmFsdWUgPTNEIGhvc3QtPmZpZm9baG9zdC0+Zmlmb19zdGFydF0g
Pj4gODsKICAgICAgICAgICAgICAgICBzZF93cml0ZV9ieXRlKGhvc3QtPmNhcmQsIHZhbHVlKTsK
LSAgICAgICAgICAgICAgICBob3N0LT5ibGVuX2NvdW50ZXIgLS07CisgICAgICAgICAgICAgICAg
aG9zdC0+Ymxlbl9jb3VudGVyLS07CiAgICAgICAgICAgICB9CgotICAgICAgICAgICAgaG9zdC0+
Zmlmb19zdGFydCArKzsKLSAgICAgICAgICAgIGhvc3QtPmZpZm9fbGVuIC0tOworICAgICAgICAg
ICAgaG9zdC0+Zmlmb19zdGFydCsrOworICAgICAgICAgICAgaG9zdC0+Zmlmb19sZW4tLTsKICAg
ICAgICAgICAgIGhvc3QtPmZpZm9fc3RhcnQgJj0zRCAzMTsKICAgICAgICAgfQoKICAgICAgICAg
aWYgKGhvc3QtPmJsZW5fY291bnRlciA9M0Q9M0QgMCkgewotICAgICAgICAgICAgaG9zdC0+bmJs
a19jb3VudGVyIC0tOworICAgICAgICAgICAgaG9zdC0+bmJsa19jb3VudGVyLS07CiAgICAgICAg
ICAgICBob3N0LT5ibGVuX2NvdW50ZXIgPTNEIGhvc3QtPmJsZW47CgogICAgICAgICAgICAgaWYg
KGhvc3QtPm5ibGtfY291bnRlciA9M0Q9M0QgMCkgewpAQCAtMzMxLDgyICszMzksODIgQEAgc3Rh
dGljIHVpbnQ2NF90IG9tYXBfbW1jX3JlYWQodm9pZCAqb3BhcXVlLCBod2FkZHIKb2Zmc2V0LCB1
bnNpZ25lZCBzaXplKQogICAgIH0KCiAgICAgc3dpdGNoIChvZmZzZXQpIHsKLSAgICBjYXNlIDB4
MDA6IC8qIE1NQ19DTUQgKi8KKyAgICBjYXNlIDB4MDA6ICAvKiBNTUNfQ01EICovCiAgICAgICAg
IHJldHVybiBzLT5sYXN0X2NtZDsKCi0gICAgY2FzZSAweDA0OiAvKiBNTUNfQVJHTCAqLworICAg
IGNhc2UgMHgwNDogIC8qIE1NQ19BUkdMICovCiAgICAgICAgIHJldHVybiBzLT5hcmcgJiAweDAw
MDBmZmZmOwoKLSAgICBjYXNlIDB4MDg6IC8qIE1NQ19BUkdIICovCisgICAgY2FzZSAweDA4OiAg
LyogTU1DX0FSR0ggKi8KICAgICAgICAgcmV0dXJuIHMtPmFyZyA+PiAxNjsKCi0gICAgY2FzZSAw
eDBjOiAvKiBNTUNfQ09OICovCi0gICAgICAgIHJldHVybiAocy0+ZHcgPDwgMTUpIHwgKHMtPm1v
ZGUgPDwgMTIpIHwgKHMtPmVuYWJsZSA8PCAxMSkgfAorICAgIGNhc2UgMHgwYzogIC8qIE1NQ19D
T04gKi8KKyAgICAgICAgcmV0dXJuIChzLT5kdyA8PCAxNSkgfCAocy0+bW9kZSA8PCAxMikgfCAo
cy0+ZW5hYmxlIDw8IDExKSB8CiAgICAgICAgICAgICAgICAgKHMtPmJlIDw8IDEwKSB8IHMtPmNs
a2RpdjsKCi0gICAgY2FzZSAweDEwOiAvKiBNTUNfU1RBVCAqLworICAgIGNhc2UgMHgxMDogIC8q
IE1NQ19TVEFUICovCiAgICAgICAgIHJldHVybiBzLT5zdGF0dXM7CgotICAgIGNhc2UgMHgxNDog
LyogTU1DX0lFICovCisgICAgY2FzZSAweDE0OiAgLyogTU1DX0lFICovCiAgICAgICAgIHJldHVy
biBzLT5tYXNrOwoKLSAgICBjYXNlIDB4MTg6IC8qIE1NQ19DVE8gKi8KKyAgICBjYXNlIDB4MTg6
ICAvKiBNTUNfQ1RPICovCiAgICAgICAgIHJldHVybiBzLT5jdG87CgotICAgIGNhc2UgMHgxYzog
LyogTU1DX0RUTyAqLworICAgIGNhc2UgMHgxYzogIC8qIE1NQ19EVE8gKi8KICAgICAgICAgcmV0
dXJuIHMtPmR0bzsKCi0gICAgY2FzZSAweDIwOiAvKiBNTUNfREFUQSAqLworICAgIGNhc2UgMHgy
MDogIC8qIE1NQ19EQVRBICovCiAgICAgICAgIC8qIFRPRE86IHN1cHBvcnQgOC1iaXQgYWNjZXNz
ICovCiAgICAgICAgIGkgPTNEIHMtPmZpZm9bcy0+Zmlmb19zdGFydF07CiAgICAgICAgIGlmIChz
LT5maWZvX2xlbiA9M0Q9M0QgMCkgewogICAgICAgICAgICAgcHJpbnRmKCJNTUM6IEZJRk8gdW5k
ZXJydW5cbiIpOwogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KLSAgICAgICAgcy0+
Zmlmb19zdGFydCArKzsKLSAgICAgICAgcy0+Zmlmb19sZW4gLS07CisgICAgICAgIHMtPmZpZm9f
c3RhcnQrKzsKKyAgICAgICAgcy0+Zmlmb19sZW4tLTsKICAgICAgICAgcy0+Zmlmb19zdGFydCAm
PTNEIDMxOwogICAgICAgICBvbWFwX21tY190cmFuc2ZlcihzKTsKICAgICAgICAgb21hcF9tbWNf
Zmlmb2xldmVsX3VwZGF0ZShzKTsKICAgICAgICAgb21hcF9tbWNfaW50ZXJydXB0c191cGRhdGUo
cyk7CiAgICAgICAgIHJldHVybiBpOwoKLSAgICBjYXNlIDB4MjQ6IC8qIE1NQ19CTEVOICovCisg
ICAgY2FzZSAweDI0OiAgLyogTU1DX0JMRU4gKi8KICAgICAgICAgcmV0dXJuIHMtPmJsZW5fY291
bnRlcjsKCi0gICAgY2FzZSAweDI4OiAvKiBNTUNfTkJMSyAqLworICAgIGNhc2UgMHgyODogIC8q
IE1NQ19OQkxLICovCiAgICAgICAgIHJldHVybiBzLT5uYmxrX2NvdW50ZXI7CgotICAgIGNhc2Ug
MHgyYzogLyogTU1DX0JVRiAqLworICAgIGNhc2UgMHgyYzogIC8qIE1NQ19CVUYgKi8KICAgICAg
ICAgcmV0dXJuIChzLT5yeF9kbWEgPDwgMTUpIHwgKHMtPmFmX2xldmVsIDw8IDgpIHwKICAgICAg
ICAgICAgIChzLT50eF9kbWEgPDwgNykgfCBzLT5hZV9sZXZlbDsKCi0gICAgY2FzZSAweDMwOiAv
KiBNTUNfU1BJICovCisgICAgY2FzZSAweDMwOiAgLyogTU1DX1NQSSAqLwogICAgICAgICByZXR1
cm4gMHgwMDAwOwotICAgIGNhc2UgMHgzNDogLyogTU1DX1NESU8gKi8KKyAgICBjYXNlIDB4MzQ6
ICAvKiBNTUNfU0RJTyAqLwogICAgICAgICByZXR1cm4gKHMtPmNkZXRfd2FrZXVwIDw8IDIpIHwg
KHMtPmNkZXRfZW5hYmxlKSB8IHMtPnNkaW87Ci0gICAgY2FzZSAweDM4OiAvKiBNTUNfU1lTVCAq
LworICAgIGNhc2UgMHgzODogIC8qIE1NQ19TWVNUICovCiAgICAgICAgIHJldHVybiAweDAwMDA7
CgotICAgIGNhc2UgMHgzYzogLyogTU1DX1JFViAqLworICAgIGNhc2UgMHgzYzogIC8qIE1NQ19S
RVYgKi8KICAgICAgICAgcmV0dXJuIHMtPnJldjsKCi0gICAgY2FzZSAweDQwOiAvKiBNTUNfUlNQ
MCAqLwotICAgIGNhc2UgMHg0NDogLyogTU1DX1JTUDEgKi8KLSAgICBjYXNlIDB4NDg6IC8qIE1N
Q19SU1AyICovCi0gICAgY2FzZSAweDRjOiAvKiBNTUNfUlNQMyAqLwotICAgIGNhc2UgMHg1MDog
LyogTU1DX1JTUDQgKi8KLSAgICBjYXNlIDB4NTQ6IC8qIE1NQ19SU1A1ICovCi0gICAgY2FzZSAw
eDU4OiAvKiBNTUNfUlNQNiAqLwotICAgIGNhc2UgMHg1YzogLyogTU1DX1JTUDcgKi8KKyAgICBj
YXNlIDB4NDA6ICAvKiBNTUNfUlNQMCAqLworICAgIGNhc2UgMHg0NDogIC8qIE1NQ19SU1AxICov
CisgICAgY2FzZSAweDQ4OiAgLyogTU1DX1JTUDIgKi8KKyAgICBjYXNlIDB4NGM6ICAvKiBNTUNf
UlNQMyAqLworICAgIGNhc2UgMHg1MDogIC8qIE1NQ19SU1A0ICovCisgICAgY2FzZSAweDU0OiAg
LyogTU1DX1JTUDUgKi8KKyAgICBjYXNlIDB4NTg6ICAvKiBNTUNfUlNQNiAqLworICAgIGNhc2Ug
MHg1YzogIC8qIE1NQ19SU1A3ICovCiAgICAgICAgIHJldHVybiBzLT5yc3BbKG9mZnNldCAtIDB4
NDApID4+IDJdOwoKICAgICAvKiBPTUFQMi1zcGVjaWZpYyAqLwotICAgIGNhc2UgMHg2MDogLyog
TU1DX0lPU1IgKi8KLSAgICBjYXNlIDB4NjQ6IC8qIE1NQ19TWVNDICovCisgICAgY2FzZSAweDYw
OiAgLyogTU1DX0lPU1IgKi8KKyAgICBjYXNlIDB4NjQ6ICAvKiBNTUNfU1lTQyAqLwogICAgICAg
ICByZXR1cm4gMDsKLSAgICBjYXNlIDB4Njg6IC8qIE1NQ19TWVNTICovCi0gICAgICAgIHJldHVy
biAxOyAvKiBSU1REICovCisgICAgY2FzZSAweDY4OiAgLyogTU1DX1NZU1MgKi8KKyAgICAgICAg
cmV0dXJuIDE7ICAgICAgICAgICAvKiBSU1REICovCiAgICAgfQoKICAgICBPTUFQX0JBRF9SRUco
b2Zmc2V0KTsKQEAgLTQyNSwxMyArNDMzLDE1IEBAIHN0YXRpYyB2b2lkIG9tYXBfbW1jX3dyaXRl
KHZvaWQgKm9wYXF1ZSwgaHdhZGRyCm9mZnNldCwKICAgICB9CgogICAgIHN3aXRjaCAob2Zmc2V0
KSB7Ci0gICAgY2FzZSAweDAwOiAvKiBNTUNfQ01EICovCi0gICAgICAgIGlmICghcy0+ZW5hYmxl
KQorICAgIGNhc2UgMHgwMDogIC8qIE1NQ19DTUQgKi8KKyAgICAgICAgaWYgKCFzLT5lbmFibGUp
IHsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CgogICAgICAgICBzLT5sYXN0X2NtZCA9
M0QgdmFsdWU7Ci0gICAgICAgIGZvciAoaSA9M0QgMDsgaSA8IDg7IGkgKyspCisgICAgICAgIGZv
ciAoaSA9M0QgMDsgaSA8IDg7IGkrKykgewogICAgICAgICAgICAgcy0+cnNwW2ldID0zRCAweDAw
MDA7CisgICAgICAgIH0KICAgICAgICAgb21hcF9tbWNfY29tbWFuZChzLCB2YWx1ZSAmIDYzLCAo
dmFsdWUgPj4gMTUpICYgMSwKICAgICAgICAgICAgICAgICAoc2RfY21kX3R5cGVfdCkgKCh2YWx1
ZSA+PiAxMikgJiAzKSwKICAgICAgICAgICAgICAgICAodmFsdWUgPj4gMTEpICYgMSwKQEAgLTQ0
MCwxNyArNDUwLDE3IEBAIHN0YXRpYyB2b2lkIG9tYXBfbW1jX3dyaXRlKHZvaWQgKm9wYXF1ZSwg
aHdhZGRyCm9mZnNldCwKICAgICAgICAgb21hcF9tbWNfdXBkYXRlKHMpOwogICAgICAgICBicmVh
azsKCi0gICAgY2FzZSAweDA0OiAvKiBNTUNfQVJHTCAqLworICAgIGNhc2UgMHgwNDogIC8qIE1N
Q19BUkdMICovCiAgICAgICAgIHMtPmFyZyAmPTNEIDB4ZmZmZjAwMDA7CiAgICAgICAgIHMtPmFy
ZyB8PTNEIDB4MDAwMGZmZmYgJiB2YWx1ZTsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHgw
ODogLyogTU1DX0FSR0ggKi8KKyAgICBjYXNlIDB4MDg6ICAvKiBNTUNfQVJHSCAqLwogICAgICAg
ICBzLT5hcmcgJj0zRCAweDAwMDBmZmZmOwogICAgICAgICBzLT5hcmcgfD0zRCB2YWx1ZSA8PCAx
NjsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHgwYzogLyogTU1DX0NPTiAqLworICAgIGNh
c2UgMHgwYzogIC8qIE1NQ19DT04gKi8KICAgICAgICAgcy0+ZHcgPTNEICh2YWx1ZSA+PiAxNSkg
JiAxOwogICAgICAgICBzLT5tb2RlID0zRCAodmFsdWUgPj4gMTIpICYgMzsKICAgICAgICAgcy0+
ZW5hYmxlID0zRCAodmFsdWUgPj4gMTEpICYgMTsKQEAgLTQ2NCwxMDEgKzQ3NCwxMDkgQEAgc3Rh
dGljIHZvaWQgb21hcF9tbWNfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIKb2Zmc2V0LAogICAg
ICAgICAgICAgcWVtdV9sb2dfbWFzayhMT0dfVU5JTVAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJvbWFwX21tY193cjogQmlnIEVuZGlhbiBub3QgaW1wbGVtZW50ZWRcbiIpOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChzLT5kdyAhPTNEIDAgJiYgcy0+bGluZXMgPCA0KQorICAgICAgICBp
ZiAocy0+ZHcgIT0zRCAwICYmIHMtPmxpbmVzIDwgNCkgewogICAgICAgICAgICAgcHJpbnRmKCI0
LWJpdCBTRCBidXMgZW5hYmxlZFxuIik7Ci0gICAgICAgIGlmICghcy0+ZW5hYmxlKQorICAgICAg
ICB9CisgICAgICAgIGlmICghcy0+ZW5hYmxlKSB7CiAgICAgICAgICAgICBvbWFwX21tY19wc2V1
ZG9fcmVzZXQocyk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHgxMDog
LyogTU1DX1NUQVQgKi8KKyAgICBjYXNlIDB4MTA6ICAvKiBNTUNfU1RBVCAqLwogICAgICAgICBz
LT5zdGF0dXMgJj0zRCB+dmFsdWU7CiAgICAgICAgIG9tYXBfbW1jX2ludGVycnVwdHNfdXBkYXRl
KHMpOwogICAgICAgICBicmVhazsKCi0gICAgY2FzZSAweDE0OiAvKiBNTUNfSUUgKi8KKyAgICBj
YXNlIDB4MTQ6ICAvKiBNTUNfSUUgKi8KICAgICAgICAgcy0+bWFzayA9M0QgdmFsdWUgJiAweDdm
ZmY7CiAgICAgICAgIG9tYXBfbW1jX2ludGVycnVwdHNfdXBkYXRlKHMpOwogICAgICAgICBicmVh
azsKCi0gICAgY2FzZSAweDE4OiAvKiBNTUNfQ1RPICovCisgICAgY2FzZSAweDE4OiAgLyogTU1D
X0NUTyAqLwogICAgICAgICBzLT5jdG8gPTNEIHZhbHVlICYgMHhmZjsKLSAgICAgICAgaWYgKHMt
PmN0byA+IDB4ZmQgJiYgcy0+cmV2IDw9M0QgMSkKKyAgICAgICAgaWYgKHMtPmN0byA+IDB4ZmQg
JiYgcy0+cmV2IDw9M0QgMSkgewogICAgICAgICAgICAgcHJpbnRmKCJNTUM6IENUTyBvZiAweGZm
IGFuZCAweGZlIGNhbm5vdCBiZSB1c2VkIVxuIik7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CgotICAgIGNhc2UgMHgxYzogLyogTU1DX0RUTyAqLworICAgIGNhc2UgMHgxYzogIC8qIE1NQ19E
VE8gKi8KICAgICAgICAgcy0+ZHRvID0zRCB2YWx1ZSAmIDB4ZmZmZjsKICAgICAgICAgYnJlYWs7
CgotICAgIGNhc2UgMHgyMDogLyogTU1DX0RBVEEgKi8KKyAgICBjYXNlIDB4MjA6ICAvKiBNTUNf
REFUQSAqLwogICAgICAgICAvKiBUT0RPOiBzdXBwb3J0IDgtYml0IGFjY2VzcyAqLwotICAgICAg
ICBpZiAocy0+Zmlmb19sZW4gPTNEPTNEIDMyKQorICAgICAgICBpZiAocy0+Zmlmb19sZW4gPTNE
PTNEIDMyKSB7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBzLT5maWZv
WyhzLT5maWZvX3N0YXJ0ICsgcy0+Zmlmb19sZW4pICYgMzFdID0zRCB2YWx1ZTsKLSAgICAgICAg
cy0+Zmlmb19sZW4gKys7CisgICAgICAgIHMtPmZpZm9fbGVuKys7CiAgICAgICAgIG9tYXBfbW1j
X3RyYW5zZmVyKHMpOwogICAgICAgICBvbWFwX21tY19maWZvbGV2ZWxfdXBkYXRlKHMpOwogICAg
ICAgICBvbWFwX21tY19pbnRlcnJ1cHRzX3VwZGF0ZShzKTsKICAgICAgICAgYnJlYWs7CgotICAg
IGNhc2UgMHgyNDogLyogTU1DX0JMRU4gKi8KKyAgICBjYXNlIDB4MjQ6ICAvKiBNTUNfQkxFTiAq
LwogICAgICAgICBzLT5ibGVuID0zRCAodmFsdWUgJiAweDA3ZmYpICsgMTsKICAgICAgICAgcy0+
Ymxlbl9jb3VudGVyID0zRCBzLT5ibGVuOwogICAgICAgICBicmVhazsKCi0gICAgY2FzZSAweDI4
OiAvKiBNTUNfTkJMSyAqLworICAgIGNhc2UgMHgyODogIC8qIE1NQ19OQkxLICovCiAgICAgICAg
IHMtPm5ibGsgPTNEICh2YWx1ZSAmIDB4MDdmZikgKyAxOwogICAgICAgICBzLT5uYmxrX2NvdW50
ZXIgPTNEIHMtPm5ibGs7CiAgICAgICAgIHMtPmJsZW5fY291bnRlciA9M0Qgcy0+YmxlbjsKICAg
ICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHgyYzogLyogTU1DX0JVRiAqLworICAgIGNhc2UgMHgy
YzogIC8qIE1NQ19CVUYgKi8KICAgICAgICAgcy0+cnhfZG1hID0zRCAodmFsdWUgPj4gMTUpICYg
MTsKICAgICAgICAgcy0+YWZfbGV2ZWwgPTNEICh2YWx1ZSA+PiA4KSAmIDB4MWY7CiAgICAgICAg
IHMtPnR4X2RtYSA9M0QgKHZhbHVlID4+IDcpICYgMTsKICAgICAgICAgcy0+YWVfbGV2ZWwgPTNE
IHZhbHVlICYgMHgxZjsKCi0gICAgICAgIGlmIChzLT5yeF9kbWEpCisgICAgICAgIGlmIChzLT5y
eF9kbWEpIHsKICAgICAgICAgICAgIHMtPnN0YXR1cyAmPTNEIDB4ZmJmZjsKLSAgICAgICAgaWYg
KHMtPnR4X2RtYSkKKyAgICAgICAgfQorICAgICAgICBpZiAocy0+dHhfZG1hKSB7CiAgICAgICAg
ICAgICBzLT5zdGF0dXMgJj0zRCAweGY3ZmY7CisgICAgICAgIH0KICAgICAgICAgb21hcF9tbWNf
Zmlmb2xldmVsX3VwZGF0ZShzKTsKICAgICAgICAgb21hcF9tbWNfaW50ZXJydXB0c191cGRhdGUo
cyk7CiAgICAgICAgIGJyZWFrOwoKICAgICAvKiBTUEksIFNESU8gYW5kIFRFU1QgbW9kZXMgdW5p
bXBsZW1lbnRlZCAqLwotICAgIGNhc2UgMHgzMDogLyogTU1DX1NQSSAoT01BUDEgb25seSkgKi8K
KyAgICBjYXNlIDB4MzA6ICAvKiBNTUNfU1BJIChPTUFQMSBvbmx5KSAqLwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIDB4MzQ6IC8qIE1NQ19TRElPICovCisgICAgY2FzZSAweDM0OiAgLyogTU1D
X1NESU8gKi8KICAgICAgICAgcy0+c2RpbyA9M0QgdmFsdWUgJiAocy0+cmV2ID49M0QgMiA/IDB4
ZmJmMyA6IDB4MjAyMCk7CiAgICAgICAgIHMtPmNkZXRfd2FrZXVwID0zRCAodmFsdWUgPj4gOSkg
JiAxOwogICAgICAgICBzLT5jZGV0X2VuYWJsZSA9M0QgKHZhbHVlID4+IDIpICYgMTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSAweDM4OiAvKiBNTUNfU1lTVCAqLworICAgIGNhc2UgMHgzODog
IC8qIE1NQ19TWVNUICovCiAgICAgICAgIGJyZWFrOwoKLSAgICBjYXNlIDB4M2M6IC8qIE1NQ19S
RVYgKi8KLSAgICBjYXNlIDB4NDA6IC8qIE1NQ19SU1AwICovCi0gICAgY2FzZSAweDQ0OiAvKiBN
TUNfUlNQMSAqLwotICAgIGNhc2UgMHg0ODogLyogTU1DX1JTUDIgKi8KLSAgICBjYXNlIDB4NGM6
IC8qIE1NQ19SU1AzICovCi0gICAgY2FzZSAweDUwOiAvKiBNTUNfUlNQNCAqLwotICAgIGNhc2Ug
MHg1NDogLyogTU1DX1JTUDUgKi8KLSAgICBjYXNlIDB4NTg6IC8qIE1NQ19SU1A2ICovCi0gICAg
Y2FzZSAweDVjOiAvKiBNTUNfUlNQNyAqLworICAgIGNhc2UgMHgzYzogIC8qIE1NQ19SRVYgKi8K
KyAgICBjYXNlIDB4NDA6ICAvKiBNTUNfUlNQMCAqLworICAgIGNhc2UgMHg0NDogIC8qIE1NQ19S
U1AxICovCisgICAgY2FzZSAweDQ4OiAgLyogTU1DX1JTUDIgKi8KKyAgICBjYXNlIDB4NGM6ICAv
KiBNTUNfUlNQMyAqLworICAgIGNhc2UgMHg1MDogIC8qIE1NQ19SU1A0ICovCisgICAgY2FzZSAw
eDU0OiAgLyogTU1DX1JTUDUgKi8KKyAgICBjYXNlIDB4NTg6ICAvKiBNTUNfUlNQNiAqLworICAg
IGNhc2UgMHg1YzogIC8qIE1NQ19SU1A3ICovCiAgICAgICAgIE9NQVBfUk9fUkVHKG9mZnNldCk7
CiAgICAgICAgIGJyZWFrOwoKICAgICAvKiBPTUFQMi1zcGVjaWZpYyAqLwotICAgIGNhc2UgMHg2
MDogLyogTU1DX0lPU1IgKi8KLSAgICAgICAgaWYgKHZhbHVlICYgMHhmKQorICAgIGNhc2UgMHg2
MDogIC8qIE1NQ19JT1NSICovCisgICAgICAgIGlmICh2YWx1ZSAmIDB4ZikgewogICAgICAgICAg
ICAgcHJpbnRmKCJNTUM6IFNESU8gYml0cyB1c2VkIVxuIik7CisgICAgICAgIH0KICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSAweDY0OiAvKiBNTUNfU1lTQyAqLwotICAgICAgICBpZiAodmFsdWUg
JiAoMSA8PCAyKSkgLyogU1JUUyAqLworICAgIGNhc2UgMHg2NDogIC8qIE1NQ19TWVNDICovCisg
ICAgICAgIGlmICh2YWx1ZSAmICgxIDw8IDIpKSB7ICAgICAgIC8qIFNSVFMgKi8KICAgICAgICAg
ICAgIG9tYXBfbW1jX3Jlc2V0KHMpOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgMHg2ODogLyogTU1DX1NZU1MgKi8KKyAgICBjYXNlIDB4Njg6ICAvKiBNTUNfU1lTUyAqLwog
ICAgICAgICBPTUFQX1JPX1JFRyhvZmZzZXQpOwogICAgICAgICBicmVhazsKCkBAIC02MDEsNyAr
NjE5LDcgQEAgc3RydWN0IG9tYXBfbW1jX3MgKm9tYXBfbW1jX2luaXQoaHdhZGRyIGJhc2UsCiAg
ICAgcy0+aXJxID0zRCBpcnE7CiAgICAgcy0+ZG1hID0zRCBkbWE7CiAgICAgcy0+Y2xrID0zRCBj
bGs7Ci0gICAgcy0+bGluZXMgPTNEIDE7IC8qIFRPRE86IG5lZWRzIHRvIGJlIHNldHRhYmxlIHBl
ci1ib2FyZCAqLworICAgIHMtPmxpbmVzID0zRCAxOyAvKiBUT0RPOiBuZWVkcyB0byBiZSBzZXR0
YWJsZSBwZXItYm9hcmQgKi8KICAgICBzLT5yZXYgPTNEIDE7CgogICAgIG1lbW9yeV9yZWdpb25f
aW5pdF9pbygmcy0+aW9tZW0sIE5VTEwsICZvbWFwX21tY19vcHMsIHMsICJvbWFwLm1tYyIsCjB4
ODAwKTsKZGlmZiAtLWdpdCBhL2h3L3NkL3B4YTJ4eF9tbWNpLmMgYi9ody9zZC9weGEyeHhfbW1j
aS5jCmluZGV4IDgyNTI5NzA4YzguLjRmZDE3ZGE5NWIgMTAwNjQ0Ci0tLSBhL2h3L3NkL3B4YTJ4
eF9tbWNpLmMKKysrIGIvaHcvc2QvcHhhMnh4X21tY2kuYwpAQCAtMTEzLDU1ICsxMTMsNTUgQEAg
c3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX3B4YTJ4eF9tbWNpID0KPTNE
CnsKICAgICB9CiB9OwoKLSNkZWZpbmUgTU1DX1NUUlBDTCAweDAwIC8qIE1NQyBDbG9jayBTdGFy
dC9TdG9wIHJlZ2lzdGVyICovCi0jZGVmaW5lIE1NQ19TVEFUIDB4MDQgLyogTU1DIFN0YXR1cyBy
ZWdpc3RlciAqLwotI2RlZmluZSBNTUNfQ0xLUlQgMHgwOCAvKiBNTUMgQ2xvY2sgUmF0ZSByZWdp
c3RlciAqLwotI2RlZmluZSBNTUNfU1BJIDB4MGMgLyogTU1DIFNQSSBNb2RlIHJlZ2lzdGVyICov
Ci0jZGVmaW5lIE1NQ19DTURBVCAweDEwIC8qIE1NQyBDb21tYW5kL0RhdGEgcmVnaXN0ZXIgKi8K
LSNkZWZpbmUgTU1DX1JFU1RPIDB4MTQgLyogTU1DIFJlc3BvbnNlIFRpbWUtT3V0IHJlZ2lzdGVy
ICovCi0jZGVmaW5lIE1NQ19SRFRPIDB4MTggLyogTU1DIFJlYWQgVGltZS1PdXQgcmVnaXN0ZXIg
Ki8KLSNkZWZpbmUgTU1DX0JMS0xFTiAweDFjIC8qIE1NQyBCbG9jayBMZW5ndGggcmVnaXN0ZXIg
Ki8KLSNkZWZpbmUgTU1DX05VTUJMSyAweDIwIC8qIE1NQyBOdW1iZXIgb2YgQmxvY2tzIHJlZ2lz
dGVyICovCi0jZGVmaW5lIE1NQ19QUlRCVUYgMHgyNCAvKiBNTUMgQnVmZmVyIFBhcnRseSBGdWxs
IHJlZ2lzdGVyICovCi0jZGVmaW5lIE1NQ19JX01BU0sgMHgyOCAvKiBNTUMgSW50ZXJydXB0IE1h
c2sgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgTU1DX0lfUkVHIDB4MmMgLyogTU1DIEludGVycnVwdCBS
ZXF1ZXN0IHJlZ2lzdGVyICovCi0jZGVmaW5lIE1NQ19DTUQgMHgzMCAvKiBNTUMgQ29tbWFuZCBy
ZWdpc3RlciAqLwotI2RlZmluZSBNTUNfQVJHSCAweDM0IC8qIE1NQyBBcmd1bWVudCBIaWdoIHJl
Z2lzdGVyICovCi0jZGVmaW5lIE1NQ19BUkdMIDB4MzggLyogTU1DIEFyZ3VtZW50IExvdyByZWdp
c3RlciAqLwotI2RlZmluZSBNTUNfUkVTIDB4M2MgLyogTU1DIFJlc3BvbnNlIEZJRk8gKi8KLSNk
ZWZpbmUgTU1DX1JYRklGTyAweDQwIC8qIE1NQyBSZWNlaXZlIEZJRk8gKi8KLSNkZWZpbmUgTU1D
X1RYRklGTyAweDQ0IC8qIE1NQyBUcmFuc21pdCBGSUZPICovCi0jZGVmaW5lIE1NQ19SRFdBSVQg
MHg0OCAvKiBNTUMgUkRfV0FJVCByZWdpc3RlciAqLwotI2RlZmluZSBNTUNfQkxLU19SRU0gMHg0
YyAvKiBNTUMgQmxvY2tzIFJlbWFpbmluZyByZWdpc3RlciAqLworI2RlZmluZSBNTUNfU1RSUENM
ICAgIDB4MDAgIC8qIE1NQyBDbG9jayBTdGFydC9TdG9wIHJlZ2lzdGVyICovCisjZGVmaW5lIE1N
Q19TVEFUICAgICAgMHgwNCAgLyogTU1DIFN0YXR1cyByZWdpc3RlciAqLworI2RlZmluZSBNTUNf
Q0xLUlQgICAgIDB4MDggIC8qIE1NQyBDbG9jayBSYXRlIHJlZ2lzdGVyICovCisjZGVmaW5lIE1N
Q19TUEkgICAgICAgMHgwYyAgLyogTU1DIFNQSSBNb2RlIHJlZ2lzdGVyICovCisjZGVmaW5lIE1N
Q19DTURBVCAgICAgMHgxMCAgLyogTU1DIENvbW1hbmQvRGF0YSByZWdpc3RlciAqLworI2RlZmlu
ZSBNTUNfUkVTVE8gICAgIDB4MTQgIC8qIE1NQyBSZXNwb25zZSBUaW1lLU91dCByZWdpc3RlciAq
LworI2RlZmluZSBNTUNfUkRUTyAgICAgIDB4MTggIC8qIE1NQyBSZWFkIFRpbWUtT3V0IHJlZ2lz
dGVyICovCisjZGVmaW5lIE1NQ19CTEtMRU4gICAgMHgxYyAgLyogTU1DIEJsb2NrIExlbmd0aCBy
ZWdpc3RlciAqLworI2RlZmluZSBNTUNfTlVNQkxLICAgIDB4MjAgIC8qIE1NQyBOdW1iZXIgb2Yg
QmxvY2tzIHJlZ2lzdGVyICovCisjZGVmaW5lIE1NQ19QUlRCVUYgICAgMHgyNCAgLyogTU1DIEJ1
ZmZlciBQYXJ0bHkgRnVsbCByZWdpc3RlciAqLworI2RlZmluZSBNTUNfSV9NQVNLICAgIDB4Mjgg
IC8qIE1NQyBJbnRlcnJ1cHQgTWFzayByZWdpc3RlciAqLworI2RlZmluZSBNTUNfSV9SRUcgICAg
IDB4MmMgIC8qIE1NQyBJbnRlcnJ1cHQgUmVxdWVzdCByZWdpc3RlciAqLworI2RlZmluZSBNTUNf
Q01EICAgICAgIDB4MzAgIC8qIE1NQyBDb21tYW5kIHJlZ2lzdGVyICovCisjZGVmaW5lIE1NQ19B
UkdIICAgICAgMHgzNCAgLyogTU1DIEFyZ3VtZW50IEhpZ2ggcmVnaXN0ZXIgKi8KKyNkZWZpbmUg
TU1DX0FSR0wgICAgICAweDM4ICAvKiBNTUMgQXJndW1lbnQgTG93IHJlZ2lzdGVyICovCisjZGVm
aW5lIE1NQ19SRVMgICAgICAgMHgzYyAgLyogTU1DIFJlc3BvbnNlIEZJRk8gKi8KKyNkZWZpbmUg
TU1DX1JYRklGTyAgICAweDQwICAvKiBNTUMgUmVjZWl2ZSBGSUZPICovCisjZGVmaW5lIE1NQ19U
WEZJRk8gICAgMHg0NCAgLyogTU1DIFRyYW5zbWl0IEZJRk8gKi8KKyNkZWZpbmUgTU1DX1JEV0FJ
VCAgICAweDQ4ICAvKiBNTUMgUkRfV0FJVCByZWdpc3RlciAqLworI2RlZmluZSBNTUNfQkxLU19S
RU0gIDB4NGMgIC8qIE1NQyBCbG9ja3MgUmVtYWluaW5nIHJlZ2lzdGVyICovCgogLyogQml0Zmll
bGQgbWFza3MgKi8KLSNkZWZpbmUgU1RSUENMX1NUT1BfQ0xLICgxIDw8IDApCi0jZGVmaW5lIFNU
UlBDTF9TVFJUX0NMSyAoMSA8PCAxKQotI2RlZmluZSBTVEFUX1RPVVRfUkVTICgxIDw8IDEpCi0j
ZGVmaW5lIFNUQVRfQ0xLX0VOICgxIDw8IDgpCi0jZGVmaW5lIFNUQVRfREFUQV9ET05FICgxIDw8
IDExKQotI2RlZmluZSBTVEFUX1BSR19ET05FICgxIDw8IDEyKQotI2RlZmluZSBTVEFUX0VORF9D
TURSRVMgKDEgPDwgMTMpCi0jZGVmaW5lIFNQSV9TUElfTU9ERSAoMSA8PCAwKQotI2RlZmluZSBD
TURBVF9SRVNfVFlQRSAoMyA8PCAwKQotI2RlZmluZSBDTURBVF9EQVRBX0VOICgxIDw8IDIpCi0j
ZGVmaW5lIENNREFUX1dSX1JEICgxIDw8IDMpCi0jZGVmaW5lIENNREFUX0RNQV9FTiAoMSA8PCA3
KQotI2RlZmluZSBDTURBVF9TVE9QX1RSQU4gKDEgPDwgMTApCi0jZGVmaW5lIElOVF9EQVRBX0RP
TkUgKDEgPDwgMCkKLSNkZWZpbmUgSU5UX1BSR19ET05FICgxIDw8IDEpCi0jZGVmaW5lIElOVF9F
TkRfQ01EICgxIDw8IDIpCi0jZGVmaW5lIElOVF9TVE9QX0NNRCAoMSA8PCAzKQotI2RlZmluZSBJ
TlRfQ0xLX09GRiAoMSA8PCA0KQotI2RlZmluZSBJTlRfUlhGSUZPX1JFUSAoMSA8PCA1KQotI2Rl
ZmluZSBJTlRfVFhGSUZPX1JFUSAoMSA8PCA2KQotI2RlZmluZSBJTlRfVElOVCAoMSA8PCA3KQot
I2RlZmluZSBJTlRfREFUX0VSUiAoMSA8PCA4KQotI2RlZmluZSBJTlRfUkVTX0VSUiAoMSA8PCA5
KQotI2RlZmluZSBJTlRfUkRfU1RBTExFRCAoMSA8PCAxMCkKLSNkZWZpbmUgSU5UX1NESU9fSU5U
ICgxIDw8IDExKQotI2RlZmluZSBJTlRfU0RJT19TQUNLICgxIDw8IDEyKQotI2RlZmluZSBQUlRC
VUZfUFJUX0JVRiAoMSA8PCAwKQorI2RlZmluZSBTVFJQQ0xfU1RPUF9DTEsgKDEgPDwgMCkKKyNk
ZWZpbmUgU1RSUENMX1NUUlRfQ0xLICgxIDw8IDEpCisjZGVmaW5lIFNUQVRfVE9VVF9SRVMgICAo
MSA8PCAxKQorI2RlZmluZSBTVEFUX0NMS19FTiAgICAgKDEgPDwgOCkKKyNkZWZpbmUgU1RBVF9E
QVRBX0RPTkUgICgxIDw8IDExKQorI2RlZmluZSBTVEFUX1BSR19ET05FICAgKDEgPDwgMTIpCisj
ZGVmaW5lIFNUQVRfRU5EX0NNRFJFUyAoMSA8PCAxMykKKyNkZWZpbmUgU1BJX1NQSV9NT0RFICAg
ICgxIDw8IDApCisjZGVmaW5lIENNREFUX1JFU19UWVBFICAoMyA8PCAwKQorI2RlZmluZSBDTURB
VF9EQVRBX0VOICAgKDEgPDwgMikKKyNkZWZpbmUgQ01EQVRfV1JfUkQgICAgICgxIDw8IDMpCisj
ZGVmaW5lIENNREFUX0RNQV9FTiAgICAoMSA8PCA3KQorI2RlZmluZSBDTURBVF9TVE9QX1RSQU4g
KDEgPDwgMTApCisjZGVmaW5lIElOVF9EQVRBX0RPTkUgICAoMSA8PCAwKQorI2RlZmluZSBJTlRf
UFJHX0RPTkUgICAgKDEgPDwgMSkKKyNkZWZpbmUgSU5UX0VORF9DTUQgICAgICgxIDw8IDIpCisj
ZGVmaW5lIElOVF9TVE9QX0NNRCAgICAoMSA8PCAzKQorI2RlZmluZSBJTlRfQ0xLX09GRiAgICAg
KDEgPDwgNCkKKyNkZWZpbmUgSU5UX1JYRklGT19SRVEgICgxIDw8IDUpCisjZGVmaW5lIElOVF9U
WEZJRk9fUkVRICAoMSA8PCA2KQorI2RlZmluZSBJTlRfVElOVCAgICAgICAgKDEgPDwgNykKKyNk
ZWZpbmUgSU5UX0RBVF9FUlIgICAgICgxIDw8IDgpCisjZGVmaW5lIElOVF9SRVNfRVJSICAgICAo
MSA8PCA5KQorI2RlZmluZSBJTlRfUkRfU1RBTExFRCAgKDEgPDwgMTApCisjZGVmaW5lIElOVF9T
RElPX0lOVCAgICAoMSA8PCAxMSkKKyNkZWZpbmUgSU5UX1NESU9fU0FDSyAgICgxIDw8IDEyKQor
I2RlZmluZSBQUlRCVUZfUFJUX0JVRiAgKDEgPDwgMCkKCiAvKiBSb3V0ZSBpbnRlcm5hbCBpbnRl
cnJ1cHQgbGluZXMgdG8gdGhlIGdsb2JhbCBJQyBhbmQgRE1BICovCiBzdGF0aWMgdm9pZCBweGEy
eHhfbW1jaV9pbnRfdXBkYXRlKFBYQTJ4eE1NQ0lTdGF0ZSAqcykKQEAgLTE3OSwyMyArMTc5LDI1
IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9tbWNpX2ludF91cGRhdGUoUFhBMnh4TU1DSVN0YXRlICpz
KQoKIHN0YXRpYyB2b2lkIHB4YTJ4eF9tbWNpX2ZpZm9fdXBkYXRlKFBYQTJ4eE1NQ0lTdGF0ZSAq
cykKIHsKLSAgICBpZiAoIXMtPmFjdGl2ZSkKKyAgICBpZiAoIXMtPmFjdGl2ZSkgewogICAgICAg
ICByZXR1cm47CisgICAgfQoKICAgICBpZiAocy0+Y21kYXQgJiBDTURBVF9XUl9SRCkgewogICAg
ICAgICB3aGlsZSAocy0+Ynl0ZXNsZWZ0ICYmIHMtPnR4X2xlbikgewogICAgICAgICAgICAgc2Ri
dXNfd3JpdGVfYnl0ZSgmcy0+c2RidXMsIHMtPnR4X2ZpZm9bcy0+dHhfc3RhcnQrK10pOwogICAg
ICAgICAgICAgcy0+dHhfc3RhcnQgJj0zRCAweDFmOwotICAgICAgICAgICAgcy0+dHhfbGVuIC0t
OwotICAgICAgICAgICAgcy0+Ynl0ZXNsZWZ0IC0tOworICAgICAgICAgICAgcy0+dHhfbGVuLS07
CisgICAgICAgICAgICBzLT5ieXRlc2xlZnQtLTsKICAgICAgICAgfQotICAgICAgICBpZiAocy0+
Ynl0ZXNsZWZ0KQorICAgICAgICBpZiAocy0+Ynl0ZXNsZWZ0KSB7CiAgICAgICAgICAgICBzLT5p
bnRyZXEgfD0zRCBJTlRfVFhGSUZPX1JFUTsKKyAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAg
ICB3aGlsZSAocy0+Ynl0ZXNsZWZ0ICYmIHMtPnJ4X2xlbiA8IDMyKSB7Ci0gICAgICAgICAgICBz
LT5yeF9maWZvWyhzLT5yeF9zdGFydCArIChzLT5yeF9sZW4gKyspKSAmIDB4MWZdID0zRAorICAg
ICAgICAgICAgcy0+cnhfZmlmb1socy0+cnhfc3RhcnQgKyAocy0+cnhfbGVuKyspKSAmIDB4MWZd
ID0zRAogICAgICAgICAgICAgICAgIHNkYnVzX3JlYWRfYnl0ZSgmcy0+c2RidXMpOwotICAgICAg
ICAgICAgcy0+Ynl0ZXNsZWZ0IC0tOworICAgICAgICAgICAgcy0+Ynl0ZXNsZWZ0LS07CiAgICAg
ICAgICAgICBzLT5pbnRyZXEgfD0zRCBJTlRfUlhGSUZPX1JFUTsKICAgICAgICAgfQoKQEAgLTIy
Niw0NCArMjI4LDUwIEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9tbWNpX3dha2VxdWV1ZXMoUFhBMnh4
TU1DSVN0YXRlICpzKQoKICAgICByZXF1ZXN0LmNtZCA9M0Qgcy0+Y21kOwogICAgIHJlcXVlc3Qu
YXJnID0zRCBzLT5hcmc7Ci0gICAgcmVxdWVzdC5jcmMgPTNEIDA7IC8qIEZJWE1FICovCisgICAg
cmVxdWVzdC5jcmMgPTNEIDA7ICAvKiBGSVhNRSAqLwoKICAgICByc3BsZW4gPTNEIHNkYnVzX2Rv
X2NvbW1hbmQoJnMtPnNkYnVzLCAmcmVxdWVzdCwgcmVzcG9uc2UpOwogICAgIHMtPmludHJlcSB8
PTNEIElOVF9FTkRfQ01EOwoKICAgICBtZW1zZXQocy0+cmVzcF9maWZvLCAwLCBzaXplb2Yocy0+
cmVzcF9maWZvKSk7CiAgICAgc3dpdGNoIChzLT5jbWRhdCAmIENNREFUX1JFU19UWVBFKSB7Ci0j
ZGVmaW5lIFBYQU1NQ0lfUkVTUCh3ZCwgdmFsdWUwLCB2YWx1ZTEpIFwKLSAgICAgICAgcy0+cmVz
cF9maWZvWyh3ZCkgKyAwXSB8PTNEICh2YWx1ZTApOyBcCi0gICAgICAgIHMtPnJlc3BfZmlmb1so
d2QpICsgMV0gfD0zRCAodmFsdWUxKSA8PCA4OwotICAgIGNhc2UgMDogLyogTm8gcmVzcG9uc2Ug
Ki8KKyNkZWZpbmUgUFhBTU1DSV9SRVNQKHdkLCB2YWx1ZTAsIHZhbHVlMSkgICAgXAorICAgIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHMtPnJlc3Bf
Zmlmb1sod2QpICsgMF0gPTNEICh2YWx1ZTApOyAgXAorICAgICAgICBzLT5yZXNwX2ZpZm9bKHdk
KSArIDFdID0zRCAodmFsdWUxKTsgIFwKKyAgICB9IHdoaWxlICgwKQorICAgIGNhc2UgMDogLyog
Tm8gcmVzcG9uc2UgKi8KICAgICAgICAgZ290byBjb21wbGV0ZTsKCi0gICAgY2FzZSAxOiAvKiBS
MSwgUjQsIFI1IG9yIFI2ICovCi0gICAgICAgIGlmIChyc3BsZW4gPCA0KQorICAgIGNhc2UgMTog
LyogUjEsIFI0LCBSNSBvciBSNiAqLworICAgICAgICBpZiAocnNwbGVuIDwgNCkgewogICAgICAg
ICAgICAgZ290byB0aW1lb3V0OworICAgICAgICB9CiAgICAgICAgIGdvdG8gY29tcGxldGU7Cgot
ICAgIGNhc2UgMjogLyogUjIgKi8KLSAgICAgICAgaWYgKHJzcGxlbiA8IDE2KQorICAgIGNhc2Ug
MjogLyogUjIgKi8KKyAgICAgICAgaWYgKHJzcGxlbiA8IDE2KSB7CiAgICAgICAgICAgICBnb3Rv
IHRpbWVvdXQ7CisgICAgICAgIH0KICAgICAgICAgZ290byBjb21wbGV0ZTsKCi0gICAgY2FzZSAz
OiAvKiBSMyAqLwotICAgICAgICBpZiAocnNwbGVuIDwgNCkKKyAgICBjYXNlIDM6IC8qIFIzICov
CisgICAgICAgIGlmIChyc3BsZW4gPCA0KSB7CiAgICAgICAgICAgICBnb3RvIHRpbWVvdXQ7Cisg
ICAgICAgIH0KICAgICAgICAgZ290byBjb21wbGV0ZTsKCiAgICAgY29tcGxldGU6Ci0gICAgICAg
IGZvciAoaSA9M0QgMDsgcnNwbGVuID4gMDsgaSArKywgcnNwbGVuIC09M0QgMikgeworICAgICAg
ICBmb3IgKGkgPTNEIDA7IHJzcGxlbiA+IDA7IGkrKywgcnNwbGVuIC09M0QgMikgewogICAgICAg
ICAgICAgUFhBTU1DSV9SRVNQKGksIHJlc3BvbnNlW2kgKiAyXSwgcmVzcG9uc2VbaSAqIDIgKyAx
XSk7CiAgICAgICAgIH0KICAgICAgICAgcy0+c3RhdHVzIHw9M0QgU1RBVF9FTkRfQ01EUkVTOwoK
LSAgICAgICAgaWYgKCEocy0+Y21kYXQgJiBDTURBVF9EQVRBX0VOKSkKKyAgICAgICAgaWYgKCEo
cy0+Y21kYXQgJiBDTURBVF9EQVRBX0VOKSkgewogICAgICAgICAgICAgcy0+YWN0aXZlID0zRCAw
OwotICAgICAgICBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzLT5ieXRlc2xl
ZnQgPTNEIHMtPm51bWJsayAqIHMtPmJsa2xlbjsKKyAgICAgICAgfQoKICAgICAgICAgcy0+cmVz
cF9sZW4gPTNEIDA7CiAgICAgICAgIGJyZWFrOwpAQCAtMzMzLDcgKzM0MSw3IEBAIHN0YXRpYyB1
aW50NjRfdCBweGEyeHhfbW1jaV9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyCm9mZnNldCwgdW5z
aWduZWQgc2l6ZSkKICAgICAgICAgd2hpbGUgKHNpemUtLSAmJiBzLT5yeF9sZW4pIHsKICAgICAg
ICAgICAgIHJldCB8PTNEIHMtPnJ4X2ZpZm9bcy0+cnhfc3RhcnQrK10gPDwgKHNpemUgPDwgMyk7
CiAgICAgICAgICAgICBzLT5yeF9zdGFydCAmPTNEIDB4MWY7Ci0gICAgICAgICAgICBzLT5yeF9s
ZW4gLS07CisgICAgICAgICAgICBzLT5yeF9sZW4tLTsKICAgICAgICAgfQogICAgICAgICBzLT5p
bnRyZXEgJj0zRCB+SU5UX1JYRklGT19SRVE7CiAgICAgICAgIHB4YTJ4eF9tbWNpX2ZpZm9fdXBk
YXRlKHMpOwpAQCAtMzk5LDggKzQwNyw5IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9tbWNpX3dyaXRl
KHZvaWQgKm9wYXF1ZSwKICAgICAgICAgaWYgKCEodmFsdWUgJiBDTURBVF9TVE9QX1RSQU4pKSB7
CiAgICAgICAgICAgICBzLT5zdGF0dXMgJj0zRCBTVEFUX0NMS19FTjsKCi0gICAgICAgICAgICBp
ZiAocy0+c3RhdHVzICYgU1RBVF9DTEtfRU4pCisgICAgICAgICAgICBpZiAocy0+c3RhdHVzICYg
U1RBVF9DTEtfRU4pIHsKICAgICAgICAgICAgICAgICBweGEyeHhfbW1jaV93YWtlcXVldWVzKHMp
OworICAgICAgICAgICAgfQogICAgICAgICB9CgogICAgICAgICBweGEyeHhfbW1jaV9pbnRfdXBk
YXRlKHMpOwpAQCAtNDUxLDcgKzQ2MCw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9tbWNpX3dyaXRl
KHZvaWQgKm9wYXF1ZSwKCiAgICAgY2FzZSBNTUNfVFhGSUZPOgogICAgICAgICB3aGlsZSAoc2l6
ZS0tICYmIHMtPnR4X2xlbiA8IDB4MjApCi0gICAgICAgICAgICBzLT50eF9maWZvWyhzLT50eF9z
dGFydCArIChzLT50eF9sZW4gKyspKSAmIDB4MWZdID0zRAorICAgICAgICAgICAgcy0+dHhfZmlm
b1socy0+dHhfc3RhcnQgKyAocy0+dHhfbGVuKyspKSAmIDB4MWZdID0zRAogICAgICAgICAgICAg
ICAgICAgICAodmFsdWUgPj4gKHNpemUgPDwgMykpICYgMHhmZjsKICAgICAgICAgcy0+aW50cmVx
ICY9M0QgfklOVF9UWEZJRk9fUkVROwogICAgICAgICBweGEyeHhfbW1jaV9maWZvX3VwZGF0ZShz
KTsKZGlmZiAtLWdpdCBhL2h3L3RpbWVyL29tYXBfZ3B0aW1lci5jIGIvaHcvdGltZXIvb21hcF9n
cHRpbWVyLmMKaW5kZXggMzRlNmFmN2FmZi4uMDc4Y2UyOTRlYiAxMDA2NDQKLS0tIGEvaHcvdGlt
ZXIvb21hcF9ncHRpbWVyLmMKKysrIGIvaHcvdGltZXIvb21hcF9ncHRpbWVyLmMKQEAgLTY5LDI3
ICs2OSwyOSBAQCBzdHJ1Y3Qgb21hcF9ncF90aW1lcl9zIHsKICAgICB1aW50MzJfdCBtYXRjaF92
YWw7CiAgICAgaW50IGNhcHRfbnVtOwoKLSAgICB1aW50MTZfdCB3cml0ZWg7IC8qIExTQiAqLwot
ICAgIHVpbnQxNl90IHJlYWRoOyAvKiBNU0IgKi8KKyAgICB1aW50MTZfdCB3cml0ZWg7ICAvKiBM
U0IgKi8KKyAgICB1aW50MTZfdCByZWFkaDsgICAvKiBNU0IgKi8KIH07CgotI2RlZmluZSBHUFRf
VENBUl9JVCAoMSA8PCAyKQotI2RlZmluZSBHUFRfT1ZGX0lUICgxIDw8IDEpCi0jZGVmaW5lIEdQ
VF9NQVRfSVQgKDEgPDwgMCkKKyNkZWZpbmUgR1BUX1RDQVJfSVQgKDEgPDwgMikKKyNkZWZpbmUg
R1BUX09WRl9JVCAgKDEgPDwgMSkKKyNkZWZpbmUgR1BUX01BVF9JVCAgKDEgPDwgMCkKCiBzdGF0
aWMgaW5saW5lIHZvaWQgb21hcF9ncF90aW1lcl9pbnRyKHN0cnVjdCBvbWFwX2dwX3RpbWVyX3Mg
KnRpbWVyLCBpbnQKaXQpCiB7CiAgICAgaWYgKHRpbWVyLT5pdF9lbmEgJiBpdCkgewotICAgICAg
ICBpZiAoIXRpbWVyLT5zdGF0dXMpCisgICAgICAgIGlmICghdGltZXItPnN0YXR1cykgewogICAg
ICAgICAgICAgcWVtdV9pcnFfcmFpc2UodGltZXItPmlycSk7CisgICAgICAgIH0KCiAgICAgICAg
IHRpbWVyLT5zdGF0dXMgfD0zRCBpdDsKICAgICAgICAgLyogT3IgYXJlIHRoZSBzdGF0dXMgYml0
cyBzZXQgZXZlbiB3aGVuIG1hc2tlZD8KICAgICAgICAgICogaS5lLiBpcyBtYXNraW5nIGFwcGxp
ZWQgYmVmb3JlIG9yIGFmdGVyIHRoZSBzdGF0dXMgcmVnaXN0ZXI/ICAqLwogICAgIH0KCi0gICAg
aWYgKHRpbWVyLT53dV9lbmEgJiBpdCkKKyAgICBpZiAodGltZXItPnd1X2VuYSAmIGl0KSB7CiAg
ICAgICAgIHFlbXVfaXJxX3B1bHNlKHRpbWVyLT53a3VwKTsKKyAgICB9CiB9Cgogc3RhdGljIGlu
bGluZSB2b2lkIG9tYXBfZ3BfdGltZXJfb3V0KHN0cnVjdCBvbWFwX2dwX3RpbWVyX3MgKnRpbWVy
LCBpbnQKbGV2ZWwpCkBAIC0xMDgsMTAgKzExMCwxMSBAQCBzdGF0aWMgaW5saW5lIHVpbnQzMl90
IG9tYXBfZ3BfdGltZXJfcmVhZChzdHJ1Y3QKb21hcF9ncF90aW1lcl9zICp0aW1lcikKICAgICAg
ICAgZGlzdGFuY2UgPTNEIHFlbXVfY2xvY2tfZ2V0X25zKFFFTVVfQ0xPQ0tfVklSVFVBTCkgLSB0
aW1lci0+dGltZTsKICAgICAgICAgZGlzdGFuY2UgPTNEIG11bGRpdjY0KGRpc3RhbmNlLCB0aW1l
ci0+cmF0ZSwgdGltZXItPnRpY2tzX3Blcl9zZWMpOwoKLSAgICAgICAgaWYgKGRpc3RhbmNlID49
M0QgMHhmZmZmZmZmZiAtIHRpbWVyLT52YWwpCisgICAgICAgIGlmIChkaXN0YW5jZSA+PTNEIDB4
ZmZmZmZmZmYgLSB0aW1lci0+dmFsKSB7CiAgICAgICAgICAgICByZXR1cm4gMHhmZmZmZmZmZjsK
LSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmV0dXJuIHRpbWVy
LT52YWwgKyBkaXN0YW5jZTsKKyAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4g
dGltZXItPnZhbDsKIH0KQEAgLTE0OCwxMyArMTUxLDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBv
bWFwX2dwX3RpbWVyX3VwZGF0ZShzdHJ1Y3QKb21hcF9ncF90aW1lcl9zICp0aW1lcikKCiBzdGF0
aWMgaW5saW5lIHZvaWQgb21hcF9ncF90aW1lcl90cmlnZ2VyKHN0cnVjdCBvbWFwX2dwX3RpbWVy
X3MgKnRpbWVyKQogewotICAgIGlmICh0aW1lci0+cHQpCisgICAgaWYgKHRpbWVyLT5wdCkgewog
ICAgICAgICAvKiBUT0RPIGluIG92ZXJmbG93LWFuZC1tYXRjaCBtb2RlIGlmIHRoZSBmaXJzdCBl
dmVudCB0bwogICAgICAgICAgKiBvY2N1ciBpcyB0aGUgbWF0Y2gsIGRvbid0IHRvZ2dsZS4gICov
CiAgICAgICAgIG9tYXBfZ3BfdGltZXJfb3V0KHRpbWVyLCAhdGltZXItPm91dF92YWwpOwotICAg
IGVsc2UKKyAgICB9IGVsc2UgewogICAgICAgICAvKiBUT0RPIGludmVydGVkIHB1bHNlIG9uIHRp
bWVyLT5vdXRfdmFsID0zRD0zRCAxPyAgKi8KICAgICAgICAgcWVtdV9pcnFfcHVsc2UodGltZXIt
Pm91dCk7CisgICAgfQogfQoKIHN0YXRpYyB2b2lkIG9tYXBfZ3BfdGltZXJfdGljayh2b2lkICpv
cGFxdWUpCkBAIC0xODEsOCArMTg1LDkgQEAgc3RhdGljIHZvaWQgb21hcF9ncF90aW1lcl9tYXRj
aCh2b2lkICpvcGFxdWUpCiB7CiAgICAgc3RydWN0IG9tYXBfZ3BfdGltZXJfcyAqdGltZXIgPTNE
IG9wYXF1ZTsKCi0gICAgaWYgKHRpbWVyLT50cmlnZ2VyID0zRD0zRCBncHRfdHJpZ2dlcl9ib3Ro
KQorICAgIGlmICh0aW1lci0+dHJpZ2dlciA9M0Q9M0QgZ3B0X3RyaWdnZXJfYm90aCkgewogICAg
ICAgICBvbWFwX2dwX3RpbWVyX3RyaWdnZXIodGltZXIpOworICAgIH0KCiAgICAgb21hcF9ncF90
aW1lcl9pbnRyKHRpbWVyLCBHUFRfTUFUX0lUKTsKIH0KQEAgLTIxMiw4ICsyMTcsOSBAQCBzdGF0
aWMgdm9pZCBvbWFwX2dwX3RpbWVyX2lucHV0KHZvaWQgKm9wYXF1ZSwgaW50IGxpbmUsCmludCBv
bikKICAgICBpZiAocy0+aW5vdXQgJiYgdHJpZ2dlciAmJiBzLT5jYXB0X251bSA8IDIpIHsKICAg
ICAgICAgcy0+Y2FwdHVyZV92YWxbcy0+Y2FwdF9udW1dID0zRCBvbWFwX2dwX3RpbWVyX3JlYWQo
cyk7CgotICAgICAgICBpZiAocy0+Y2FwdDIgPTNEPTNEIHMtPmNhcHRfbnVtICsrKQorICAgICAg
ICBpZiAocy0+Y2FwdDIgPTNEPTNEIHMtPmNhcHRfbnVtKyspIHsKICAgICAgICAgICAgIG9tYXBf
Z3BfdGltZXJfaW50cihzLCBHUFRfVENBUl9JVCk7CisgICAgICAgIH0KICAgICB9CiB9CgpAQCAt
MjY1LDI2ICsyNzEsMjYgQEAgc3RhdGljIHVpbnQzMl90IG9tYXBfZ3BfdGltZXJfcmVhZHcodm9p
ZCAqb3BhcXVlLApod2FkZHIgYWRkcikKICAgICBzdHJ1Y3Qgb21hcF9ncF90aW1lcl9zICpzID0z
RCBvcGFxdWU7CgogICAgIHN3aXRjaCAoYWRkcikgewotICAgIGNhc2UgMHgwMDogLyogVElEUiAq
LworICAgIGNhc2UgMHgwMDogIC8qIFRJRFIgKi8KICAgICAgICAgcmV0dXJuIDB4MjE7CgotICAg
IGNhc2UgMHgxMDogLyogVElPQ1BfQ0ZHICovCisgICAgY2FzZSAweDEwOiAgLyogVElPQ1BfQ0ZH
ICovCiAgICAgICAgIHJldHVybiBzLT5jb25maWc7CgotICAgIGNhc2UgMHgxNDogLyogVElTVEFU
ICovCisgICAgY2FzZSAweDE0OiAgLyogVElTVEFUICovCiAgICAgICAgIC8qID8/PyBXaGVuJ3Mg
dGhpcyBiaXQgcmVzZXQ/ICovCi0gICAgICAgIHJldHVybiAxOyAvKiBSRVNFVERPTkUgKi8KKyAg
ICAgICAgcmV0dXJuIDE7ICAgICAgICAgICAvKiBSRVNFVERPTkUgKi8KCi0gICAgY2FzZSAweDE4
OiAvKiBUSVNSICovCisgICAgY2FzZSAweDE4OiAgLyogVElTUiAqLwogICAgICAgICByZXR1cm4g
cy0+c3RhdHVzOwoKLSAgICBjYXNlIDB4MWM6IC8qIFRJRVIgKi8KKyAgICBjYXNlIDB4MWM6ICAv
KiBUSUVSICovCiAgICAgICAgIHJldHVybiBzLT5pdF9lbmE7CgotICAgIGNhc2UgMHgyMDogLyog
VFdFUiAqLworICAgIGNhc2UgMHgyMDogIC8qIFRXRVIgKi8KICAgICAgICAgcmV0dXJuIHMtPnd1
X2VuYTsKCi0gICAgY2FzZSAweDI0OiAvKiBUQ0xSICovCisgICAgY2FzZSAweDI0OiAgLyogVENM
UiAqLwogICAgICAgICByZXR1cm4gKHMtPmlub3V0IDw8IDE0KSB8CiAgICAgICAgICAgICAgICAg
KHMtPmNhcHQyIDw8IDEzKSB8CiAgICAgICAgICAgICAgICAgKHMtPnB0IDw8IDEyKSB8CkBAIC0y
OTcsMjggKzMwMywyOCBAQCBzdGF0aWMgdWludDMyX3Qgb21hcF9ncF90aW1lcl9yZWFkdyh2b2lk
ICpvcGFxdWUsCmh3YWRkciBhZGRyKQogICAgICAgICAgICAgICAgIChzLT5hciA8PCAxKSB8CiAg
ICAgICAgICAgICAgICAgKHMtPnN0IDw8IDApOwoKLSAgICBjYXNlIDB4Mjg6IC8qIFRDUlIgKi8K
KyAgICBjYXNlIDB4Mjg6ICAvKiBUQ1JSICovCiAgICAgICAgIHJldHVybiBvbWFwX2dwX3RpbWVy
X3JlYWQocyk7CgotICAgIGNhc2UgMHgyYzogLyogVExEUiAqLworICAgIGNhc2UgMHgyYzogIC8q
IFRMRFIgKi8KICAgICAgICAgcmV0dXJuIHMtPmxvYWRfdmFsOwoKLSAgICBjYXNlIDB4MzA6IC8q
IFRUR1IgKi8KKyAgICBjYXNlIDB4MzA6ICAvKiBUVEdSICovCiAgICAgICAgIHJldHVybiAweGZm
ZmZmZmZmOwoKLSAgICBjYXNlIDB4MzQ6IC8qIFRXUFMgKi8KLSAgICAgICAgcmV0dXJuIDB4MDAw
MDAwMDA7IC8qIE5vIHBvc3RlZCB3cml0ZXMgcGVuZGluZy4gICovCisgICAgY2FzZSAweDM0OiAg
LyogVFdQUyAqLworICAgICAgICByZXR1cm4gMHgwMDAwMDAwMDsgIC8qIE5vIHBvc3RlZCB3cml0
ZXMgcGVuZGluZy4gICovCgotICAgIGNhc2UgMHgzODogLyogVE1BUiAqLworICAgIGNhc2UgMHgz
ODogIC8qIFRNQVIgKi8KICAgICAgICAgcmV0dXJuIHMtPm1hdGNoX3ZhbDsKCi0gICAgY2FzZSAw
eDNjOiAvKiBUQ0FSMSAqLworICAgIGNhc2UgMHgzYzogIC8qIFRDQVIxICovCiAgICAgICAgIHJl
dHVybiBzLT5jYXB0dXJlX3ZhbFswXTsKCi0gICAgY2FzZSAweDQwOiAvKiBUU0lDUiAqLworICAg
IGNhc2UgMHg0MDogIC8qIFRTSUNSICovCiAgICAgICAgIHJldHVybiBzLT5wb3N0ZWQgPDwgMjsK
Ci0gICAgY2FzZSAweDQ0OiAvKiBUQ0FSMiAqLworICAgIGNhc2UgMHg0NDogIC8qIFRDQVIyICov
CiAgICAgICAgIHJldHVybiBzLT5jYXB0dXJlX3ZhbFsxXTsKICAgICB9CgpAQCAtMzQ1LDQ3ICsz
NTEsNTQgQEAgc3RhdGljIHZvaWQgb21hcF9ncF90aW1lcl93cml0ZSh2b2lkICpvcGFxdWUsIGh3
YWRkcgphZGRyLCB1aW50MzJfdCB2YWx1ZSkKICAgICBzdHJ1Y3Qgb21hcF9ncF90aW1lcl9zICpz
ID0zRCBvcGFxdWU7CgogICAgIHN3aXRjaCAoYWRkcikgewotICAgIGNhc2UgMHgwMDogLyogVElE
UiAqLwotICAgIGNhc2UgMHgxNDogLyogVElTVEFUICovCi0gICAgY2FzZSAweDM0OiAvKiBUV1BT
ICovCi0gICAgY2FzZSAweDNjOiAvKiBUQ0FSMSAqLwotICAgIGNhc2UgMHg0NDogLyogVENBUjIg
Ki8KKyAgICBjYXNlIDB4MDA6ICAvKiBUSURSICovCisgICAgY2FzZSAweDE0OiAgLyogVElTVEFU
ICovCisgICAgY2FzZSAweDM0OiAgLyogVFdQUyAqLworICAgIGNhc2UgMHgzYzogIC8qIFRDQVIx
ICovCisgICAgY2FzZSAweDQ0OiAgLyogVENBUjIgKi8KICAgICAgICAgT01BUF9ST19SRUcoYWRk
cik7CiAgICAgICAgIGJyZWFrOwoKLSAgICBjYXNlIDB4MTA6IC8qIFRJT0NQX0NGRyAqLworICAg
IGNhc2UgMHgxMDogIC8qIFRJT0NQX0NGRyAqLwogICAgICAgICBzLT5jb25maWcgPTNEIHZhbHVl
ICYgMHgzM2Q7Ci0gICAgICAgIGlmICgoKHZhbHVlID4+IDMpICYgMykgPTNEPTNEIDMpIC8qIElE
TEVNT0RFICovCisgICAgICAgIGlmICgoKHZhbHVlID4+IDMpICYgMykgPTNEPTNEIDMpIHsgICAg
ICAvKiBJRExFTU9ERSAqLwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogaWxsZWdh
bCBJRExFTU9ERSB2YWx1ZSBpbiBUSU9DUF9DRkdcbiIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19mdW5jX18pOwotICAgICAgICBpZiAodmFsdWUgJiAyKSAvKiBTT0ZUUkVTRVQgKi8K
KyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgJiAyKSAgICAgICAgICAgIC8qIFNPRlRSRVNF
VCAqLwogICAgICAgICAgICAgb21hcF9ncF90aW1lcl9yZXNldChzKTsKICAgICAgICAgYnJlYWs7
CgotICAgIGNhc2UgMHgxODogLyogVElTUiAqLwotICAgICAgICBpZiAodmFsdWUgJiBHUFRfVENB
Ul9JVCkKKyAgICBjYXNlIDB4MTg6ICAvKiBUSVNSICovCisgICAgICAgIGlmICh2YWx1ZSAmIEdQ
VF9UQ0FSX0lUKSB7CiAgICAgICAgICAgICBzLT5jYXB0X251bSA9M0QgMDsKLSAgICAgICAgaWYg
KHMtPnN0YXR1cyAmJiAhKHMtPnN0YXR1cyAmPTNEIH52YWx1ZSkpCi0gICAgICAgICAgICBxZW11
X2lycV9sb3dlcihzLT5pcnEpOworICAgICAgICB9CisgICAgICAgIGlmIChzLT5zdGF0dXMpIHsK
KyAgICAgICAgICAgIHMtPnN0YXR1cyAmPTNEIH52YWx1ZTsKKyAgICAgICAgICAgIGlmICghcy0+
c3RhdHVzKSB7CisgICAgICAgICAgICAgICAgcWVtdV9pcnFfbG93ZXIocy0+aXJxKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBicmVhazsKCi0gICAgY2FzZSAweDFjOiAvKiBU
SUVSICovCisgICAgY2FzZSAweDFjOiAgLyogVElFUiAqLwogICAgICAgICBzLT5pdF9lbmEgPTNE
IHZhbHVlICYgNzsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHgyMDogLyogVFdFUiAqLwor
ICAgIGNhc2UgMHgyMDogIC8qIFRXRVIgKi8KICAgICAgICAgcy0+d3VfZW5hID0zRCB2YWx1ZSAm
IDc7CiAgICAgICAgIGJyZWFrOwoKLSAgICBjYXNlIDB4MjQ6IC8qIFRDTFIgKi8KKyAgICBjYXNl
IDB4MjQ6ICAvKiBUQ0xSICovCiAgICAgICAgIG9tYXBfZ3BfdGltZXJfc3luYyhzKTsKICAgICAg
ICAgcy0+aW5vdXQgPTNEICh2YWx1ZSA+PiAxNCkgJiAxOwogICAgICAgICBzLT5jYXB0MiA9M0Qg
KHZhbHVlID4+IDEzKSAmIDE7CiAgICAgICAgIHMtPnB0ID0zRCAodmFsdWUgPj4gMTIpICYgMTsK
ICAgICAgICAgcy0+dHJpZ2dlciA9M0QgKHZhbHVlID4+IDEwKSAmIDM7CiAgICAgICAgIGlmIChz
LT5jYXB0dXJlID0zRD0zRCBncHRfY2FwdHVyZV9ub25lICYmCi0gICAgICAgICAgICAgICAgICAg
ICAgICAoKHZhbHVlID4+IDgpICYgMykgIT0zRCBncHRfY2FwdHVyZV9ub25lKQorICAgICAgICAg
ICAgICAgICAgICAgICAgKCh2YWx1ZSA+PiA4KSAmIDMpICE9M0QgZ3B0X2NhcHR1cmVfbm9uZSkg
ewogICAgICAgICAgICAgcy0+Y2FwdF9udW0gPTNEIDA7CisgICAgICAgIH0KICAgICAgICAgcy0+
Y2FwdHVyZSA9M0QgKHZhbHVlID4+IDgpICYgMzsKICAgICAgICAgcy0+c2Nwd20gPTNEICh2YWx1
ZSA+PiA3KSAmIDE7CiAgICAgICAgIHMtPmNlID0zRCAodmFsdWUgPj4gNikgJiAxOwpAQCAtMzk5
LDM5ICs0MTIsNDEgQEAgc3RhdGljIHZvaWQgb21hcF9ncF90aW1lcl93cml0ZSh2b2lkICpvcGFx
dWUsIGh3YWRkcgphZGRyLCB1aW50MzJfdCB2YWx1ZSkKICAgICAgICAgaWYgKCFzLT5pbm91dCAm
JiBzLT5jYXB0dXJlICE9M0QgZ3B0X2NhcHR1cmVfbm9uZSkKICAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiJXM6IEdQIHRpbWVyIHBpbiBtdXN0IGJlIGFuIGlucHV0ICIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZm9yIHRoaXMgY2FwdHVyZSBtb2RlXG4iLCBfX2Z1bmNfXyk7Ci0g
ICAgICAgIGlmIChzLT50cmlnZ2VyID0zRD0zRCBncHRfdHJpZ2dlcl9ub25lKQorICAgICAgICBp
ZiAocy0+dHJpZ2dlciA9M0Q9M0QgZ3B0X3RyaWdnZXJfbm9uZSkgewogICAgICAgICAgICAgb21h
cF9ncF90aW1lcl9vdXQocywgcy0+c2Nwd20pOworICAgICAgICB9CiAgICAgICAgIC8qIFRPRE86
IG1ha2Ugc3VyZSB0aGlzIGRvZXNuJ3Qgb3ZlcmZsb3cgMzItYml0cyAqLwogICAgICAgICBzLT50
aWNrc19wZXJfc2VjID0zRCBOQU5PU0VDT05EU19QRVJfU0VDT05EIDw8IChzLT5wcmUgPyBzLT5w
dHYgKyAxCjogMCk7CiAgICAgICAgIG9tYXBfZ3BfdGltZXJfdXBkYXRlKHMpOwogICAgICAgICBi
cmVhazsKCi0gICAgY2FzZSAweDI4OiAvKiBUQ1JSICovCisgICAgY2FzZSAweDI4OiAgLyogVENS
UiAqLwogICAgICAgICBzLT50aW1lID0zRCBxZW11X2Nsb2NrX2dldF9ucyhRRU1VX0NMT0NLX1ZJ
UlRVQUwpOwogICAgICAgICBzLT52YWwgPTNEIHZhbHVlOwogICAgICAgICBvbWFwX2dwX3RpbWVy
X3VwZGF0ZShzKTsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2UgMHgyYzogLyogVExEUiAqLwor
ICAgIGNhc2UgMHgyYzogIC8qIFRMRFIgKi8KICAgICAgICAgcy0+bG9hZF92YWwgPTNEIHZhbHVl
OwogICAgICAgICBicmVhazsKCi0gICAgY2FzZSAweDMwOiAvKiBUVEdSICovCisgICAgY2FzZSAw
eDMwOiAgLyogVFRHUiAqLwogICAgICAgICBzLT50aW1lID0zRCBxZW11X2Nsb2NrX2dldF9ucyhR
RU1VX0NMT0NLX1ZJUlRVQUwpOwogICAgICAgICBzLT52YWwgPTNEIHMtPmxvYWRfdmFsOwogICAg
ICAgICBvbWFwX2dwX3RpbWVyX3VwZGF0ZShzKTsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2Ug
MHgzODogLyogVE1BUiAqLworICAgIGNhc2UgMHgzODogIC8qIFRNQVIgKi8KICAgICAgICAgb21h
cF9ncF90aW1lcl9zeW5jKHMpOwogICAgICAgICBzLT5tYXRjaF92YWwgPTNEIHZhbHVlOwogICAg
ICAgICBvbWFwX2dwX3RpbWVyX3VwZGF0ZShzKTsKICAgICAgICAgYnJlYWs7CgotICAgIGNhc2Ug
MHg0MDogLyogVFNJQ1IgKi8KKyAgICBjYXNlIDB4NDA6ICAvKiBUU0lDUiAqLwogICAgICAgICBz
LT5wb3N0ZWQgPTNEICh2YWx1ZSA+PiAyKSAmIDE7Ci0gICAgICAgIGlmICh2YWx1ZSAmIDIpIC8q
IEhvdyBtdWNoIGV4YWN0bHkgYXJlIHdlIHN1cHBvc2VkIHRvIHJlc2V0PyAqLworICAgICAgICBp
ZiAodmFsdWUgJiAyKSB7IC8qIEhvdyBtdWNoIGV4YWN0bHkgYXJlIHdlIHN1cHBvc2VkIHRvIHJl
c2V0PyAqLwogICAgICAgICAgICAgb21hcF9ncF90aW1lcl9yZXNldChzKTsKKyAgICAgICAgfQog
ICAgICAgICBicmVhazsKCiAgICAgZGVmYXVsdDoKQEAgLTQ0MywxMCArNDU4LDExIEBAIHN0YXRp
YyB2b2lkIG9tYXBfZ3BfdGltZXJfd3JpdGVoKHZvaWQgKm9wYXF1ZSwgaHdhZGRyCmFkZHIsIHVp
bnQzMl90IHZhbHVlKQogewogICAgIHN0cnVjdCBvbWFwX2dwX3RpbWVyX3MgKnMgPTNEIG9wYXF1
ZTsKCi0gICAgaWYgKGFkZHIgJiAyKQorICAgIGlmIChhZGRyICYgMikgewogICAgICAgICBvbWFw
X2dwX3RpbWVyX3dyaXRlKG9wYXF1ZSwgYWRkciwgKHZhbHVlIDw8IDE2KSB8IHMtPndyaXRlaCk7
Ci0gICAgZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIHMtPndyaXRlaCA9M0QgKHVpbnQxNl90
KSB2YWx1ZTsKKyAgICB9CiB9Cgogc3RhdGljIHVpbnQ2NF90IG9tYXBfZ3BfdGltZXJfcmVhZGZu
KHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCmRpZmYgLS1naXQgYS9ody90aW1lci9vbWFwX3N5
bmN0aW1lci5jIGIvaHcvdGltZXIvb21hcF9zeW5jdGltZXIuYwppbmRleCBkOTNhOTM0NGVkLi42
NDUxNzBjMDE1IDEwMDY0NAotLS0gYS9ody90aW1lci9vbWFwX3N5bmN0aW1lci5jCisrKyBiL2h3
L3RpbWVyL29tYXBfc3luY3RpbWVyLmMKQEAgLTI3LDcgKzI3LDggQEAgc3RydWN0IG9tYXBfc3lu
Y3RpbWVyX3MgewogfTsKCiAvKiAzMi1rSHogU3luYyBUaW1lciBvZiB0aGUgT01BUDIgKi8KLXN0
YXRpYyB1aW50MzJfdCBvbWFwX3N5bmN0aW1lcl9yZWFkKHN0cnVjdCBvbWFwX3N5bmN0aW1lcl9z
ICpzKSB7CitzdGF0aWMgdWludDMyX3Qgb21hcF9zeW5jdGltZXJfcmVhZChzdHJ1Y3Qgb21hcF9z
eW5jdGltZXJfcyAqcykKK3sKICAgICByZXR1cm4gbXVsZGl2NjQocWVtdV9jbG9ja19nZXRfbnMo
UUVNVV9DTE9DS19WSVJUVUFMKSwgMHg4MDAwLAogICAgICAgICAgICAgICAgICAgICBOQU5PU0VD
T05EU19QRVJfU0VDT05EKTsKIH0KQEAgLTQyLDEwICs0MywxMCBAQCBzdGF0aWMgdWludDMyX3Qg
b21hcF9zeW5jdGltZXJfcmVhZHcodm9pZCAqb3BhcXVlLApod2FkZHIgYWRkcikKICAgICBzdHJ1
Y3Qgb21hcF9zeW5jdGltZXJfcyAqcyA9M0Qgb3BhcXVlOwoKICAgICBzd2l0Y2ggKGFkZHIpIHsK
LSAgICBjYXNlIDB4MDA6IC8qIDMyS1NZTkNOVF9SRVYgKi8KKyAgICBjYXNlIDB4MDA6ICAvKiAz
MktTWU5DTlRfUkVWICovCiAgICAgICAgIHJldHVybiAweDIxOwoKLSAgICBjYXNlIDB4MTA6IC8q
IENSICovCisgICAgY2FzZSAweDEwOiAgLyogQ1IgKi8KICAgICAgICAgcmV0dXJuIG9tYXBfc3lu
Y3RpbWVyX3JlYWQocykgLSBzLT52YWw7CiAgICAgfQoKZGlmZiAtLWdpdCBhL2h3L3RpbWVyL3B4
YTJ4eF90aW1lci5jIGIvaHcvdGltZXIvcHhhMnh4X3RpbWVyLmMKaW5kZXggNjQ3OWFiMWE4Yi4u
MDQwNjY4NjMxZSAxMDA2NDQKLS0tIGEvaHcvdGltZXIvcHhhMnh4X3RpbWVyLmMKKysrIGIvaHcv
dGltZXIvcHhhMnh4X3RpbWVyLmMKQEAgLTIwLDQyICsyMCw0MiBAQAogI2luY2x1ZGUgInFvbS9v
YmplY3QuaCIKICNpbmNsdWRlICJzeXNlbXUvd2F0Y2hkb2cuaCIKCi0jZGVmaW5lIE9TTVIwIDB4
MDAKLSNkZWZpbmUgT1NNUjEgMHgwNAotI2RlZmluZSBPU01SMiAweDA4Ci0jZGVmaW5lIE9TTVIz
IDB4MGMKLSNkZWZpbmUgT1NNUjQgMHg4MAotI2RlZmluZSBPU01SNSAweDg0Ci0jZGVmaW5lIE9T
TVI2IDB4ODgKLSNkZWZpbmUgT1NNUjcgMHg4YwotI2RlZmluZSBPU01SOCAweDkwCi0jZGVmaW5l
IE9TTVI5IDB4OTQKLSNkZWZpbmUgT1NNUjEwIDB4OTgKLSNkZWZpbmUgT1NNUjExIDB4OWMKLSNk
ZWZpbmUgT1NDUiAweDEwIC8qIE9TIFRpbWVyIENvdW50ICovCi0jZGVmaW5lIE9TQ1I0IDB4NDAK
LSNkZWZpbmUgT1NDUjUgMHg0NAotI2RlZmluZSBPU0NSNiAweDQ4Ci0jZGVmaW5lIE9TQ1I3IDB4
NGMKLSNkZWZpbmUgT1NDUjggMHg1MAotI2RlZmluZSBPU0NSOSAweDU0Ci0jZGVmaW5lIE9TQ1Ix
MCAweDU4Ci0jZGVmaW5lIE9TQ1IxMSAweDVjCi0jZGVmaW5lIE9TU1IgMHgxNCAvKiBUaW1lciBz
dGF0dXMgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgT1dFUiAweDE4Ci0jZGVmaW5lIE9JRVIgMHgxYyAv
KiBJbnRlcnJ1cHQgZW5hYmxlIHJlZ2lzdGVyICAzLTAgdG8gRTMtRTAgKi8KLSNkZWZpbmUgT01D
UjQgMHhjMCAvKiBPUyBNYXRjaCBDb250cm9sIHJlZ2lzdGVycyAqLwotI2RlZmluZSBPTUNSNSAw
eGM0Ci0jZGVmaW5lIE9NQ1I2IDB4YzgKLSNkZWZpbmUgT01DUjcgMHhjYwotI2RlZmluZSBPTUNS
OCAweGQwCi0jZGVmaW5lIE9NQ1I5IDB4ZDQKLSNkZWZpbmUgT01DUjEwIDB4ZDgKLSNkZWZpbmUg
T01DUjExIDB4ZGMKLSNkZWZpbmUgT1NOUiAweDIwCi0KLSNkZWZpbmUgUFhBMjVYX0ZSRVEgMzY4
NjQwMCAvKiAzLjY4NjQgTUh6ICovCi0jZGVmaW5lIFBYQTI3WF9GUkVRIDMyNTAwMDAgLyogMy4y
NSBNSHogKi8KKyNkZWZpbmUgT1NNUjAgICAweDAwCisjZGVmaW5lIE9TTVIxICAgMHgwNAorI2Rl
ZmluZSBPU01SMiAgIDB4MDgKKyNkZWZpbmUgT1NNUjMgICAweDBjCisjZGVmaW5lIE9TTVI0ICAg
MHg4MAorI2RlZmluZSBPU01SNSAgIDB4ODQKKyNkZWZpbmUgT1NNUjYgICAweDg4CisjZGVmaW5l
IE9TTVI3ICAgMHg4YworI2RlZmluZSBPU01SOCAgIDB4OTAKKyNkZWZpbmUgT1NNUjkgICAweDk0
CisjZGVmaW5lIE9TTVIxMCAgMHg5OAorI2RlZmluZSBPU01SMTEgIDB4OWMKKyNkZWZpbmUgT1ND
UiAgICAweDEwICAvKiBPUyBUaW1lciBDb3VudCAqLworI2RlZmluZSBPU0NSNCAgIDB4NDAKKyNk
ZWZpbmUgT1NDUjUgICAweDQ0CisjZGVmaW5lIE9TQ1I2ICAgMHg0OAorI2RlZmluZSBPU0NSNyAg
IDB4NGMKKyNkZWZpbmUgT1NDUjggICAweDUwCisjZGVmaW5lIE9TQ1I5ICAgMHg1NAorI2RlZmlu
ZSBPU0NSMTAgIDB4NTgKKyNkZWZpbmUgT1NDUjExICAweDVjCisjZGVmaW5lIE9TU1IgICAgMHgx
NCAgLyogVGltZXIgc3RhdHVzIHJlZ2lzdGVyICovCisjZGVmaW5lIE9XRVIgICAgMHgxOAorI2Rl
ZmluZSBPSUVSICAgIDB4MWMgIC8qIEludGVycnVwdCBlbmFibGUgcmVnaXN0ZXIgIDMtMCB0byBF
My1FMCAqLworI2RlZmluZSBPTUNSNCAgIDB4YzAgIC8qIE9TIE1hdGNoIENvbnRyb2wgcmVnaXN0
ZXJzICovCisjZGVmaW5lIE9NQ1I1ICAgMHhjNAorI2RlZmluZSBPTUNSNiAgIDB4YzgKKyNkZWZp
bmUgT01DUjcgICAweGNjCisjZGVmaW5lIE9NQ1I4ICAgMHhkMAorI2RlZmluZSBPTUNSOSAgIDB4
ZDQKKyNkZWZpbmUgT01DUjEwICAweGQ4CisjZGVmaW5lIE9NQ1IxMSAgMHhkYworI2RlZmluZSBP
U05SICAgIDB4MjAKKworI2RlZmluZSBQWEEyNVhfRlJFUSAzNjg2NDAwIC8qIDMuNjg2NCBNSHog
Ki8KKyNkZWZpbmUgUFhBMjdYX0ZSRVEgMzI1MDAwMCAvKiAzLjI1IE1IeiAqLwoKIHN0YXRpYyBp
bnQgcHhhMnh4X3RpbWVyNF9mcmVxWzhdID0zRCB7CiAgICAgWzBdID0zRCAwLApAQCAtMTA4LDcg
KzEwOCw3IEBAIHN0cnVjdCBQWEEyeHhUaW1lckluZm8gewogICAgIFBYQTJ4eFRpbWVyNCB0bTRb
OF07CiB9OwoKLSNkZWZpbmUgUFhBMlhYX1RJTUVSX0hBVkVfVE00IDAKKyNkZWZpbmUgUFhBMlhY
X1RJTUVSX0hBVkVfVE00IDAKCiBzdGF0aWMgaW5saW5lIGludCBweGEyeHhfdGltZXJfaGFzX3Rt
NChQWEEyeHhUaW1lckluZm8gKnMpCiB7CkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIHZvaWQg
cHhhMnh4X3RpbWVyX3VwZGF0ZSh2b2lkICpvcGFxdWUsIHVpbnQ2NF90Cm5vd19xZW11KQogICAg
IG5vd192bSA9M0Qgcy0+Y2xvY2sgKwogICAgICAgICAgICAgbXVsZGl2NjQobm93X3FlbXUgLSBz
LT5sYXN0bG9hZCwgcy0+ZnJlcSwKTkFOT1NFQ09ORFNfUEVSX1NFQ09ORCk7CgotICAgIGZvciAo
aSA9M0QgMDsgaSA8IDQ7IGkgKyspIHsKKyAgICBmb3IgKGkgPTNEIDA7IGkgPCA0OyBpKyspIHsK
ICAgICAgICAgbmV3X3FlbXUgPTNEIG5vd19xZW11ICsgbXVsZGl2NjQoKHVpbnQzMl90KSAocy0+
dGltZXJbaV0udmFsdWUgLQpub3dfdm0pLAogICAgICAgICAgICAgICAgICAgICAgICAgTkFOT1NF
Q09ORFNfUEVSX1NFQ09ORCwgcy0+ZnJlcSk7CiAgICAgICAgIHRpbWVyX21vZChzLT50aW1lcltp
XS5xdGltZXIsIG5ld19xZW11KTsKQEAgLTE0MSwxMCArMTQxLDExIEBAIHN0YXRpYyB2b2lkIHB4
YTJ4eF90aW1lcl91cGRhdGU0KHZvaWQgKm9wYXF1ZSwKdWludDY0X3Qgbm93X3FlbXUsIGludCBu
KQogICAgIGludCBjb3VudGVyOwoKICAgICBhc3NlcnQobiA8IEFSUkFZX1NJWkUoY291bnRlcnMp
KTsKLSAgICBpZiAocy0+dG00W25dLmNvbnRyb2wgJiAoMSA8PCA3KSkKKyAgICBpZiAocy0+dG00
W25dLmNvbnRyb2wgJiAoMSA8PCA3KSkgewogICAgICAgICBjb3VudGVyID0zRCBuOwotICAgIGVs
c2UKKyAgICB9IGVsc2UgewogICAgICAgICBjb3VudGVyID0zRCBjb3VudGVyc1tuXTsKKyAgICB9
CgogICAgIGlmICghcy0+dG00W2NvdW50ZXJdLmZyZXEpIHsKICAgICAgICAgdGltZXJfZGVsKHMt
PnRtNFtuXS50bS5xdGltZXIpOwpAQCAtMTY3LDUyICsxNjgsNzEgQEAgc3RhdGljIHVpbnQ2NF90
IHB4YTJ4eF90aW1lcl9yZWFkKHZvaWQgKm9wYXF1ZSwKaHdhZGRyIG9mZnNldCwKICAgICBpbnQg
dG0gPTNEIDA7CgogICAgIHN3aXRjaCAob2Zmc2V0KSB7Ci0gICAgY2FzZSBPU01SMzogIHRtICsr
OworICAgIGNhc2UgT1NNUjM6CisgICAgICAgIHRtKys7CiAgICAgICAgIC8qIGZhbGwgdGhyb3Vn
aCAqLwotICAgIGNhc2UgT1NNUjI6ICB0bSArKzsKKyAgICBjYXNlIE9TTVIyOgorICAgICAgICB0
bSsrOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIE9TTVIxOiAgdG0gKys7
CisgICAgY2FzZSBPU01SMToKKyAgICAgICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJvdWdo
ICovCiAgICAgY2FzZSBPU01SMDoKICAgICAgICAgcmV0dXJuIHMtPnRpbWVyW3RtXS52YWx1ZTsK
LSAgICBjYXNlIE9TTVIxMTogdG0gKys7CisgICAgY2FzZSBPU01SMTE6CisgICAgICAgIHRtKys7
CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgT1NNUjEwOiB0bSArKzsKKyAg
ICBjYXNlIE9TTVIxMDoKKyAgICAgICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICov
Ci0gICAgY2FzZSBPU01SOTogIHRtICsrOworICAgIGNhc2UgT1NNUjk6CisgICAgICAgIHRtKys7
CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgT1NNUjg6ICB0bSArKzsKKyAg
ICBjYXNlIE9TTVI4OgorICAgICAgICB0bSsrOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8K
LSAgICBjYXNlIE9TTVI3OiAgdG0gKys7CisgICAgY2FzZSBPU01SNzoKKyAgICAgICAgdG0rKzsK
ICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBPU01SNjogIHRtICsrOworICAg
IGNhc2UgT1NNUjY6CisgICAgICAgIHRtKys7CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwot
ICAgIGNhc2UgT1NNUjU6ICB0bSArKzsKKyAgICBjYXNlIE9TTVI1OgorICAgICAgICB0bSsrOwog
ICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICBjYXNlIE9TTVI0OgotICAgICAgICBpZiAo
IXB4YTJ4eF90aW1lcl9oYXNfdG00KHMpKQorICAgICAgICBpZiAoIXB4YTJ4eF90aW1lcl9oYXNf
dG00KHMpKSB7CiAgICAgICAgICAgICBnb3RvIGJhZHJlZzsKKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gcy0+dG00W3RtXS50bS52YWx1ZTsKICAgICBjYXNlIE9TQ1I6CiAgICAgICAgIHJldHVy
biBzLT5jbG9jayArIG11bGRpdjY0KHFlbXVfY2xvY2tfZ2V0X25zKFFFTVVfQ0xPQ0tfVklSVFVB
TCkgLQogICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGFzdGxvYWQsIHMtPmZyZXEsIE5BTk9T
RUNPTkRTX1BFUl9TRUNPTkQpOwotICAgIGNhc2UgT1NDUjExOiB0bSArKzsKKyAgICBjYXNlIE9T
Q1IxMToKKyAgICAgICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2Fz
ZSBPU0NSMTA6IHRtICsrOworICAgIGNhc2UgT1NDUjEwOgorICAgICAgICB0bSsrOwogICAgICAg
ICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIE9TQ1I5OiAgdG0gKys7CisgICAgY2FzZSBP
U0NSOToKKyAgICAgICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2Fz
ZSBPU0NSODogIHRtICsrOworICAgIGNhc2UgT1NDUjg6CisgICAgICAgIHRtKys7CiAgICAgICAg
IC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgT1NDUjc6ICB0bSArKzsKKyAgICBjYXNlIE9T
Q1I3OgorICAgICAgICB0bSsrOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNl
IE9TQ1I2OiAgdG0gKys7CisgICAgY2FzZSBPU0NSNjoKKyAgICAgICAgdG0rKzsKICAgICAgICAg
LyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBPU0NSNTogIHRtICsrOworICAgIGNhc2UgT1ND
UjU6CisgICAgICAgIHRtKys7CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGNhc2Ug
T1NDUjQ6Ci0gICAgICAgIGlmICghcHhhMnh4X3RpbWVyX2hhc190bTQocykpCisgICAgICAgIGlm
ICghcHhhMnh4X3RpbWVyX2hhc190bTQocykpIHsKICAgICAgICAgICAgIGdvdG8gYmFkcmVnOwor
ICAgICAgICB9CgogICAgICAgICBpZiAoKHRtID0zRD0zRCA5IC0gNCB8fCB0bSA9M0Q9M0QgMTEg
LSA0KSAmJiAocy0+dG00W3RtXS5jb250cm9sICY9CiAoMSA8PAo5KSkpIHsKICAgICAgICAgICAg
IGlmIChzLT50bTRbdG0gLSAxXS5mcmVxKQpAQCAtMjI0LDM1ICsyNDQsNDQgQEAgc3RhdGljIHVp
bnQ2NF90IHB4YTJ4eF90aW1lcl9yZWFkKHZvaWQgKm9wYXF1ZSwKaHdhZGRyIG9mZnNldCwKICAg
ICAgICAgICAgICAgICBzLT5zbmFwc2hvdCA9M0Qgcy0+dG00W3RtIC0gMV0uY2xvY2s7CiAgICAg
ICAgIH0KCi0gICAgICAgIGlmICghcy0+dG00W3RtXS5mcmVxKQorICAgICAgICBpZiAoIXMtPnRt
NFt0bV0uZnJlcSkgewogICAgICAgICAgICAgcmV0dXJuIHMtPnRtNFt0bV0uY2xvY2s7CisgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHMtPnRtNFt0bV0uY2xvY2sgKwogICAgICAgICAgICAgbXVs
ZGl2NjQocWVtdV9jbG9ja19nZXRfbnMoUUVNVV9DTE9DS19WSVJUVUFMKSAtCiAgICAgICAgICAg
ICAgICAgICAgICBzLT50bTRbdG1dLmxhc3Rsb2FkLCBzLT50bTRbdG1dLmZyZXEsCiAgICAgICAg
ICAgICAgICAgICAgICBOQU5PU0VDT05EU19QRVJfU0VDT05EKTsKICAgICBjYXNlIE9JRVI6CiAg
ICAgICAgIHJldHVybiBzLT5pcnFfZW5hYmxlZDsKLSAgICBjYXNlIE9TU1I6IC8qIFN0YXR1cyBy
ZWdpc3RlciAqLworICAgIGNhc2UgT1NTUjogIC8qIFN0YXR1cyByZWdpc3RlciAqLwogICAgICAg
ICByZXR1cm4gcy0+ZXZlbnRzOwogICAgIGNhc2UgT1dFUjoKICAgICAgICAgcmV0dXJuIHMtPnJl
c2V0MzsKLSAgICBjYXNlIE9NQ1IxMTogdG0gKys7CisgICAgY2FzZSBPTUNSMTE6CisgICAgICAg
IHRtKys7CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgT01DUjEwOiB0bSAr
KzsKKyAgICBjYXNlIE9NQ1IxMDoKKyAgICAgICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJv
dWdoICovCi0gICAgY2FzZSBPTUNSOTogIHRtICsrOworICAgIGNhc2UgT01DUjk6CisgICAgICAg
IHRtKys7CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgT01DUjg6ICB0bSAr
KzsKKyAgICBjYXNlIE9NQ1I4OgorICAgICAgICB0bSsrOwogICAgICAgICAvKiBmYWxsIHRocm91
Z2ggKi8KLSAgICBjYXNlIE9NQ1I3OiAgdG0gKys7CisgICAgY2FzZSBPTUNSNzoKKyAgICAgICAg
dG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBPTUNSNjogIHRtICsr
OworICAgIGNhc2UgT01DUjY6CisgICAgICAgIHRtKys7CiAgICAgICAgIC8qIGZhbGwgdGhyb3Vn
aCAqLwotICAgIGNhc2UgT01DUjU6ICB0bSArKzsKKyAgICBjYXNlIE9NQ1I1OgorICAgICAgICB0
bSsrOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICBjYXNlIE9NQ1I0OgotICAgICAg
ICBpZiAoIXB4YTJ4eF90aW1lcl9oYXNfdG00KHMpKQorICAgICAgICBpZiAoIXB4YTJ4eF90aW1l
cl9oYXNfdG00KHMpKSB7CiAgICAgICAgICAgICBnb3RvIGJhZHJlZzsKKyAgICAgICAgfQogICAg
ICAgICByZXR1cm4gcy0+dG00W3RtXS5jb250cm9sOwogICAgIGNhc2UgT1NOUjoKICAgICAgICAg
cmV0dXJuIHMtPnNuYXBzaG90OwpAQCAtMjc3LDMzICszMDYsNDQgQEAgc3RhdGljIHZvaWQgcHhh
Mnh4X3RpbWVyX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyCm9mZnNldCwKICAgICBQWEEyeHhU
aW1lckluZm8gKnMgPTNEIChQWEEyeHhUaW1lckluZm8gKikgb3BhcXVlOwoKICAgICBzd2l0Y2gg
KG9mZnNldCkgewotICAgIGNhc2UgT1NNUjM6ICB0bSArKzsKKyAgICBjYXNlIE9TTVIzOgorICAg
ICAgICB0bSsrOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIE9TTVIyOiAg
dG0gKys7CisgICAgY2FzZSBPU01SMjoKKyAgICAgICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0
aHJvdWdoICovCi0gICAgY2FzZSBPU01SMTogIHRtICsrOworICAgIGNhc2UgT1NNUjE6CisgICAg
ICAgIHRtKys7CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGNhc2UgT1NNUjA6CiAg
ICAgICAgIHMtPnRpbWVyW3RtXS52YWx1ZSA9M0QgdmFsdWU7CiAgICAgICAgIHB4YTJ4eF90aW1l
cl91cGRhdGUocywgcWVtdV9jbG9ja19nZXRfbnMoUUVNVV9DTE9DS19WSVJUVUFMKSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgT1NNUjExOiB0bSArKzsKKyAgICBjYXNlIE9TTVIxMToKKyAg
ICAgICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBPU01SMTA6
IHRtICsrOworICAgIGNhc2UgT1NNUjEwOgorICAgICAgICB0bSsrOwogICAgICAgICAvKiBmYWxs
IHRocm91Z2ggKi8KLSAgICBjYXNlIE9TTVI5OiAgdG0gKys7CisgICAgY2FzZSBPU01SOToKKyAg
ICAgICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBPU01SODog
IHRtICsrOworICAgIGNhc2UgT1NNUjg6CisgICAgICAgIHRtKys7CiAgICAgICAgIC8qIGZhbGwg
dGhyb3VnaCAqLwotICAgIGNhc2UgT1NNUjc6ICB0bSArKzsKKyAgICBjYXNlIE9TTVI3OgorICAg
ICAgICB0bSsrOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIE9TTVI2OiAg
dG0gKys7CisgICAgY2FzZSBPU01SNjoKKyAgICAgICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0
aHJvdWdoICovCi0gICAgY2FzZSBPU01SNTogIHRtICsrOworICAgIGNhc2UgT1NNUjU6CisgICAg
ICAgIHRtKys7CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGNhc2UgT1NNUjQ6Ci0g
ICAgICAgIGlmICghcHhhMnh4X3RpbWVyX2hhc190bTQocykpCisgICAgICAgIGlmICghcHhhMnh4
X3RpbWVyX2hhc190bTQocykpIHsKICAgICAgICAgICAgIGdvdG8gYmFkcmVnOworICAgICAgICB9
CiAgICAgICAgIHMtPnRtNFt0bV0udG0udmFsdWUgPTNEIHZhbHVlOwogICAgICAgICBweGEyeHhf
dGltZXJfdXBkYXRlNChzLCBxZW11X2Nsb2NrX2dldF9ucyhRRU1VX0NMT0NLX1ZJUlRVQUwpLCB0
bSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzEzLDIzICszNTMsMzEgQEAgc3RhdGljIHZvaWQgcHhh
Mnh4X3RpbWVyX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyCm9mZnNldCwKICAgICAgICAgcy0+
Y2xvY2sgPTNEIHZhbHVlOwogICAgICAgICBweGEyeHhfdGltZXJfdXBkYXRlKHMsIHMtPmxhc3Rs
b2FkKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPU0NSMTE6IHRtICsrOworICAgIGNhc2Ug
T1NDUjExOgorICAgICAgICB0bSsrOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBj
YXNlIE9TQ1IxMDogdG0gKys7CisgICAgY2FzZSBPU0NSMTA6CisgICAgICAgIHRtKys7CiAgICAg
ICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgT1NDUjk6ICB0bSArKzsKKyAgICBjYXNl
IE9TQ1I5OgorICAgICAgICB0bSsrOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBj
YXNlIE9TQ1I4OiAgdG0gKys7CisgICAgY2FzZSBPU0NSODoKKyAgICAgICAgdG0rKzsKICAgICAg
ICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBPU0NSNzogIHRtICsrOworICAgIGNhc2Ug
T1NDUjc6CisgICAgICAgIHRtKys7CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNh
c2UgT1NDUjY6ICB0bSArKzsKKyAgICBjYXNlIE9TQ1I2OgorICAgICAgICB0bSsrOwogICAgICAg
ICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIE9TQ1I1OiAgdG0gKys7CisgICAgY2FzZSBP
U0NSNToKKyAgICAgICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgY2Fz
ZSBPU0NSNDoKLSAgICAgICAgaWYgKCFweGEyeHhfdGltZXJfaGFzX3RtNChzKSkKKyAgICAgICAg
aWYgKCFweGEyeHhfdGltZXJfaGFzX3RtNChzKSkgewogICAgICAgICAgICAgZ290byBiYWRyZWc7
CisgICAgICAgIH0KICAgICAgICAgcy0+dG00W3RtXS5vbGRjbG9jayA9M0Qgcy0+dG00W3RtXS5j
bG9jazsKICAgICAgICAgcy0+dG00W3RtXS5sYXN0bG9hZCA9M0QgcWVtdV9jbG9ja19nZXRfbnMo
UUVNVV9DTE9DS19WSVJUVUFMKTsKICAgICAgICAgcy0+dG00W3RtXS5jbG9jayA9M0QgdmFsdWU7
CkBAIC0zMzgsMjcgKzM4NiwzMyBAQCBzdGF0aWMgdm9pZCBweGEyeHhfdGltZXJfd3JpdGUodm9p
ZCAqb3BhcXVlLCBod2FkZHIKb2Zmc2V0LAogICAgIGNhc2UgT0lFUjoKICAgICAgICAgcy0+aXJx
X2VuYWJsZWQgPTNEIHZhbHVlICYgMHhmZmY7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgT1NT
UjogLyogU3RhdHVzIHJlZ2lzdGVyICovCisgICAgY2FzZSBPU1NSOiAgLyogU3RhdHVzIHJlZ2lz
dGVyICovCiAgICAgICAgIHZhbHVlICY9M0Qgcy0+ZXZlbnRzOwogICAgICAgICBzLT5ldmVudHMg
Jj0zRCB+dmFsdWU7Ci0gICAgICAgIGZvciAoaSA9M0QgMDsgaSA8IDQ7IGkgKyssIHZhbHVlID4+
PTNEIDEpCi0gICAgICAgICAgICBpZiAodmFsdWUgJiAxKQorICAgICAgICBmb3IgKGkgPTNEIDA7
IGkgPCA0OyBpKyssIHZhbHVlID4+PTNEIDEpCisgICAgICAgICAgICBpZiAodmFsdWUgJiAxKSB7
CiAgICAgICAgICAgICAgICAgcWVtdV9pcnFfbG93ZXIocy0+dGltZXJbaV0uaXJxKTsKLSAgICAg
ICAgaWYgKHB4YTJ4eF90aW1lcl9oYXNfdG00KHMpICYmICEocy0+ZXZlbnRzICYgMHhmZjApICYm
IHZhbHVlKQorICAgICAgICAgICAgfQorICAgICAgICBpZiAocHhhMnh4X3RpbWVyX2hhc190bTQo
cykgJiYgIShzLT5ldmVudHMgJiAweGZmMCkgJiYgdmFsdWUpIHsKICAgICAgICAgICAgIHFlbXVf
aXJxX2xvd2VyKHMtPmlycTQpOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
T1dFUjogLyogWFhYOiBSZXNldCBvbiBPU01SMyBtYXRjaD8gKi8KKyAgICBjYXNlIE9XRVI6ICAv
KiBYWFg6IFJlc2V0IG9uIE9TTVIzIG1hdGNoPyAqLwogICAgICAgICBzLT5yZXNldDMgPTNEIHZh
bHVlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE9NQ1I3OiAgdG0gKys7CisgICAgY2FzZSBP
TUNSNzoKKyAgICAgICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2Fz
ZSBPTUNSNjogIHRtICsrOworICAgIGNhc2UgT01DUjY6CisgICAgICAgIHRtKys7CiAgICAgICAg
IC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgT01DUjU6ICB0bSArKzsKKyAgICBjYXNlIE9N
Q1I1OgorICAgICAgICB0bSsrOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICBjYXNl
IE9NQ1I0OgotICAgICAgICBpZiAoIXB4YTJ4eF90aW1lcl9oYXNfdG00KHMpKQorICAgICAgICBp
ZiAoIXB4YTJ4eF90aW1lcl9oYXNfdG00KHMpKSB7CiAgICAgICAgICAgICBnb3RvIGJhZHJlZzsK
KyAgICAgICAgfQogICAgICAgICBzLT50bTRbdG1dLmNvbnRyb2wgPTNEIHZhbHVlICYgMHgwZmY7
CiAgICAgICAgIC8qIFhYWCBTdG9wIGlmIHJ1bm5pbmcgKHNob3VsZG4ndCBoYXBwZW4pICovCiAg
ICAgICAgIGlmICgodmFsdWUgJiAoMSA8PCA3KSkgfHwgdG0gPTNEPTNEIDApCkBAIC0zNjgsMTUg
KzQyMiwyMCBAQCBzdGF0aWMgdm9pZCBweGEyeHhfdGltZXJfd3JpdGUodm9pZCAqb3BhcXVlLCBo
d2FkZHIKb2Zmc2V0LAogICAgICAgICAgICAgcHhhMnh4X3RpbWVyX3VwZGF0ZTQocywgcWVtdV9j
bG9ja19nZXRfbnMoUUVNVV9DTE9DS19WSVJUVUFMKSwKdG0pOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgT01DUjExOiB0bSArKzsKKyAgICBjYXNlIE9NQ1IxMToKKyAgICAg
ICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBPTUNSMTA6IHRt
ICsrOworICAgIGNhc2UgT01DUjEwOgorICAgICAgICB0bSsrOwogICAgICAgICAvKiBmYWxsIHRo
cm91Z2ggKi8KLSAgICBjYXNlIE9NQ1I5OiAgdG0gKys7CisgICAgY2FzZSBPTUNSOToKKyAgICAg
ICAgdG0rKzsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSBPTUNSODogIHRt
ICs9M0QgNDsKLSAgICAgICAgaWYgKCFweGEyeHhfdGltZXJfaGFzX3RtNChzKSkKKyAgICBjYXNl
IE9NQ1I4OgorICAgICAgICB0bSArPTNEIDQ7CisgICAgICAgIGlmICghcHhhMnh4X3RpbWVyX2hh
c190bTQocykpIHsKICAgICAgICAgICAgIGdvdG8gYmFkcmVnOworICAgICAgICB9CiAgICAgICAg
IHMtPnRtNFt0bV0uY29udHJvbCA9M0QgdmFsdWUgJiAweDNmZjsKICAgICAgICAgLyogWFhYIFN0
b3AgaWYgcnVubmluZyAoc2hvdWxkbid0IGhhcHBlbikgKi8KICAgICAgICAgaWYgKCh2YWx1ZSAm
ICgxIDw8IDcpKSB8fCAhKHRtICYgMSkpCkBAIC00MjgsMTIgKzQ4NywxNSBAQCBzdGF0aWMgdm9p
ZCBweGEyeHhfdGltZXJfdGljazQodm9pZCAqb3BhcXVlKQogICAgIFBYQTJ4eFRpbWVySW5mbyAq
aSA9M0QgKFBYQTJ4eFRpbWVySW5mbyAqKSB0LT50bS5pbmZvOwoKICAgICBweGEyeHhfdGltZXJf
dGljaygmdC0+dG0pOwotICAgIGlmICh0LT5jb250cm9sICYgKDEgPDwgMykpCisgICAgaWYgKHQt
PmNvbnRyb2wgJiAoMSA8PCAzKSkgewogICAgICAgICB0LT5jbG9jayA9M0QgMDsKLSAgICBpZiAo
dC0+Y29udHJvbCAmICgxIDw8IDYpKQorICAgIH0KKyAgICBpZiAodC0+Y29udHJvbCAmICgxIDw8
IDYpKSB7CiAgICAgICAgIHB4YTJ4eF90aW1lcl91cGRhdGU0KGksIHFlbXVfY2xvY2tfZ2V0X25z
KFFFTVVfQ0xPQ0tfVklSVFVBTCksCnQtPnRtLm51bSAtIDQpOwotICAgIGlmIChpLT5ldmVudHMg
JiAweGZmMCkKKyAgICB9CisgICAgaWYgKGktPmV2ZW50cyAmIDB4ZmYwKSB7CiAgICAgICAgIHFl
bXVfaXJxX3JhaXNlKGktPmlycTQpOworICAgIH0KIH0KCiBzdGF0aWMgaW50IHB4YTI1eF90aW1l
cl9wb3N0X2xvYWQodm9pZCAqb3BhcXVlLCBpbnQgdmVyc2lvbl9pZCkKQEAgLTQ0Niw4ICs1MDgs
OSBAQCBzdGF0aWMgaW50IHB4YTI1eF90aW1lcl9wb3N0X2xvYWQodm9pZCAqb3BhcXVlLCBpbnQK
dmVyc2lvbl9pZCkKICAgICBweGEyeHhfdGltZXJfdXBkYXRlKHMsIG5vdyk7CgogICAgIGlmIChw
eGEyeHhfdGltZXJfaGFzX3RtNChzKSkKLSAgICAgICAgZm9yIChpID0zRCAwOyBpIDwgODsgaSAr
KykKKyAgICAgICAgZm9yIChpID0zRCAwOyBpIDwgODsgaSsrKSB7CiAgICAgICAgICAgICBweGEy
eHhfdGltZXJfdXBkYXRlNChzLCBub3csIGkpOworICAgICAgICB9CgogICAgIHJldHVybiAwOwog
fQpAQCAtNDc0LDcgKzUzNyw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF90aW1lcl9yZWFsaXplKERl
dmljZVN0YXRlICpkZXYsCkVycm9yICoqZXJycCkKICAgICBTeXNCdXNEZXZpY2UgKnNiZCA9M0Qg
U1lTX0JVU19ERVZJQ0UoZGV2KTsKICAgICBpbnQgaTsKCi0gICAgZm9yIChpID0zRCAwOyBpIDwg
NDsgaSArKykgeworICAgIGZvciAoaSA9M0QgMDsgaSA8IDQ7IGkrKykgewogICAgICAgICBzLT50
aW1lcltpXS52YWx1ZSA9M0QgMDsKICAgICAgICAgc3lzYnVzX2luaXRfaXJxKHNiZCwgJnMtPnRp
bWVyW2ldLmlycSk7CiAgICAgICAgIHMtPnRpbWVyW2ldLmluZm8gPTNEIHM7CkBAIC00ODYsNyAr
NTQ5LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X3RpbWVyX3JlYWxpemUoRGV2aWNlU3RhdGUgKmRl
diwKRXJyb3IgKiplcnJwKQogICAgIGlmIChzLT5mbGFncyAmICgxIDw8IFBYQTJYWF9USU1FUl9I
QVZFX1RNNCkpIHsKICAgICAgICAgc3lzYnVzX2luaXRfaXJxKHNiZCwgJnMtPmlycTQpOwoKLSAg
ICAgICAgZm9yIChpID0zRCAwOyBpIDwgODsgaSArKykgeworICAgICAgICBmb3IgKGkgPTNEIDA7
IGkgPCA4OyBpKyspIHsKICAgICAgICAgICAgIHMtPnRtNFtpXS50bS52YWx1ZSA9M0QgMDsKICAg
ICAgICAgICAgIHMtPnRtNFtpXS50bS5pbmZvID0zRCBzOwogICAgICAgICAgICAgcy0+dG00W2ld
LnRtLm51bSA9M0QgaSArIDQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L2FybS9weGEuaCBiL2lu
Y2x1ZGUvaHcvYXJtL3B4YS5oCmluZGV4IDRjNmNhZWUxMTMuLjljNmQ0MzRhNGIgMTAwNjQ0Ci0t
LSBhL2luY2x1ZGUvaHcvYXJtL3B4YS5oCisrKyBiL2luY2x1ZGUvaHcvYXJtL3B4YS5oCkBAIC0x
Niw1NyArMTYsNTcgQEAKICNpbmNsdWRlICJxb20vb2JqZWN0LmgiCgogLyogSW50ZXJydXB0IG51
bWJlcnMgKi8KLSMgZGVmaW5lIFBYQTJYWF9QSUNfU1NQMyAwCi0jIGRlZmluZSBQWEEyWFhfUElD
X1VTQkgyIDIKLSMgZGVmaW5lIFBYQTJYWF9QSUNfVVNCSDEgMwotIyBkZWZpbmUgUFhBMlhYX1BJ
Q19LRVlQQUQgNAotIyBkZWZpbmUgUFhBMlhYX1BJQ19QV1JJMkMgNgotIyBkZWZpbmUgUFhBMjVY
X1BJQ19IV1VBUlQgNwotIyBkZWZpbmUgUFhBMjdYX1BJQ19PU1RfNF8xMSA3Ci0jIGRlZmluZSBQ
WEEyWFhfUElDX0dQSU9fMCA4Ci0jIGRlZmluZSBQWEEyWFhfUElDX0dQSU9fMSA5Ci0jIGRlZmlu
ZSBQWEEyWFhfUElDX0dQSU9fWCAxMAotIyBkZWZpbmUgUFhBMlhYX1BJQ19JMlMgMTMKLSMgZGVm
aW5lIFBYQTI2WF9QSUNfQVNTUCAxNQotIyBkZWZpbmUgUFhBMjVYX1BJQ19OU1NQIDE2Ci0jIGRl
ZmluZSBQWEEyN1hfUElDX1NTUDIgMTYKLSMgZGVmaW5lIFBYQTJYWF9QSUNfTENEIDE3Ci0jIGRl
ZmluZSBQWEEyWFhfUElDX0kyQyAxOAotIyBkZWZpbmUgUFhBMlhYX1BJQ19JQ1AgMTkKLSMgZGVm
aW5lIFBYQTJYWF9QSUNfU1RVQVJUIDIwCi0jIGRlZmluZSBQWEEyWFhfUElDX0JUVUFSVCAyMQot
IyBkZWZpbmUgUFhBMlhYX1BJQ19GRlVBUlQgMjIKLSMgZGVmaW5lIFBYQTJYWF9QSUNfTU1DIDIz
Ci0jIGRlZmluZSBQWEEyWFhfUElDX1NTUCAyNAotIyBkZWZpbmUgUFhBMlhYX1BJQ19ETUEgMjUK
LSMgZGVmaW5lIFBYQTJYWF9QSUNfT1NUXzAgMjYKLSMgZGVmaW5lIFBYQTJYWF9QSUNfUlRDMUha
IDMwCi0jIGRlZmluZSBQWEEyWFhfUElDX1JUQ0FMQVJNIDMxCisjIGRlZmluZSBQWEEyWFhfUElD
X1NTUDMgICAgICAgIDAKKyMgZGVmaW5lIFBYQTJYWF9QSUNfVVNCSDIgICAgICAgMgorIyBkZWZp
bmUgUFhBMlhYX1BJQ19VU0JIMSAgICAgICAzCisjIGRlZmluZSBQWEEyWFhfUElDX0tFWVBBRCAg
ICAgIDQKKyMgZGVmaW5lIFBYQTJYWF9QSUNfUFdSSTJDICAgICAgNgorIyBkZWZpbmUgUFhBMjVY
X1BJQ19IV1VBUlQgICAgICA3CisjIGRlZmluZSBQWEEyN1hfUElDX09TVF80XzExICAgIDcKKyMg
ZGVmaW5lIFBYQTJYWF9QSUNfR1BJT18wICAgICAgOAorIyBkZWZpbmUgUFhBMlhYX1BJQ19HUElP
XzEgICAgICA5CisjIGRlZmluZSBQWEEyWFhfUElDX0dQSU9fWCAgICAgIDEwCisjIGRlZmluZSBQ
WEEyWFhfUElDX0kyUyAgICAgICAgIDEzCisjIGRlZmluZSBQWEEyNlhfUElDX0FTU1AgICAgICAg
IDE1CisjIGRlZmluZSBQWEEyNVhfUElDX05TU1AgICAgICAgIDE2CisjIGRlZmluZSBQWEEyN1hf
UElDX1NTUDIgICAgICAgIDE2CisjIGRlZmluZSBQWEEyWFhfUElDX0xDRCAgICAgICAgIDE3Cisj
IGRlZmluZSBQWEEyWFhfUElDX0kyQyAgICAgICAgIDE4CisjIGRlZmluZSBQWEEyWFhfUElDX0lD
UCAgICAgICAgIDE5CisjIGRlZmluZSBQWEEyWFhfUElDX1NUVUFSVCAgICAgIDIwCisjIGRlZmlu
ZSBQWEEyWFhfUElDX0JUVUFSVCAgICAgIDIxCisjIGRlZmluZSBQWEEyWFhfUElDX0ZGVUFSVCAg
ICAgIDIyCisjIGRlZmluZSBQWEEyWFhfUElDX01NQyAgICAgICAgIDIzCisjIGRlZmluZSBQWEEy
WFhfUElDX1NTUCAgICAgICAgIDI0CisjIGRlZmluZSBQWEEyWFhfUElDX0RNQSAgICAgICAgIDI1
CisjIGRlZmluZSBQWEEyWFhfUElDX09TVF8wICAgICAgIDI2CisjIGRlZmluZSBQWEEyWFhfUElD
X1JUQzFIWiAgICAgIDMwCisjIGRlZmluZSBQWEEyWFhfUElDX1JUQ0FMQVJNICAgIDMxCgogLyog
RE1BIHJlcXVlc3RzICovCi0jIGRlZmluZSBQWEEyWFhfUlhfUlFfSTJTIDIKLSMgZGVmaW5lIFBY
QTJYWF9UWF9SUV9JMlMgMwotIyBkZWZpbmUgUFhBMlhYX1JYX1JRX0JUVUFSVCA0Ci0jIGRlZmlu
ZSBQWEEyWFhfVFhfUlFfQlRVQVJUIDUKLSMgZGVmaW5lIFBYQTJYWF9SWF9SUV9GRlVBUlQgNgot
IyBkZWZpbmUgUFhBMlhYX1RYX1JRX0ZGVUFSVCA3Ci0jIGRlZmluZSBQWEEyWFhfUlhfUlFfU1NQ
MSAxMwotIyBkZWZpbmUgUFhBMlhYX1RYX1JRX1NTUDEgMTQKLSMgZGVmaW5lIFBYQTJYWF9SWF9S
UV9TU1AyIDE1Ci0jIGRlZmluZSBQWEEyWFhfVFhfUlFfU1NQMiAxNgotIyBkZWZpbmUgUFhBMlhY
X1JYX1JRX0lDUCAxNwotIyBkZWZpbmUgUFhBMlhYX1RYX1JRX0lDUCAxOAotIyBkZWZpbmUgUFhB
MlhYX1JYX1JRX1NUVUFSVCAxOQotIyBkZWZpbmUgUFhBMlhYX1RYX1JRX1NUVUFSVCAyMAotIyBk
ZWZpbmUgUFhBMlhYX1JYX1JRX01NQ0kgMjEKLSMgZGVmaW5lIFBYQTJYWF9UWF9SUV9NTUNJIDIy
Ci0jIGRlZmluZSBQWEEyWFhfVVNCX1JRKHgpICgoeCkgKyAyNCkKLSMgZGVmaW5lIFBYQTJYWF9S
WF9SUV9TU1AzIDY2Ci0jIGRlZmluZSBQWEEyWFhfVFhfUlFfU1NQMyA2NwotCi0jIGRlZmluZSBQ
WEEyWFhfU0RSQU1fQkFTRSAweGEwMDAwMDAwCi0jIGRlZmluZSBQWEEyWFhfSU5URVJOQUxfQkFT
RSAweDVjMDAwMDAwCi0jIGRlZmluZSBQWEEyWFhfSU5URVJOQUxfU0laRSAweDQwMDAwCisjIGRl
ZmluZSBQWEEyWFhfUlhfUlFfSTJTICAgICAgIDIKKyMgZGVmaW5lIFBYQTJYWF9UWF9SUV9JMlMg
ICAgICAgMworIyBkZWZpbmUgUFhBMlhYX1JYX1JRX0JUVUFSVCAgICA0CisjIGRlZmluZSBQWEEy
WFhfVFhfUlFfQlRVQVJUICAgIDUKKyMgZGVmaW5lIFBYQTJYWF9SWF9SUV9GRlVBUlQgICAgNgor
IyBkZWZpbmUgUFhBMlhYX1RYX1JRX0ZGVUFSVCAgICA3CisjIGRlZmluZSBQWEEyWFhfUlhfUlFf
U1NQMSAgICAgIDEzCisjIGRlZmluZSBQWEEyWFhfVFhfUlFfU1NQMSAgICAgIDE0CisjIGRlZmlu
ZSBQWEEyWFhfUlhfUlFfU1NQMiAgICAgIDE1CisjIGRlZmluZSBQWEEyWFhfVFhfUlFfU1NQMiAg
ICAgIDE2CisjIGRlZmluZSBQWEEyWFhfUlhfUlFfSUNQICAgICAgIDE3CisjIGRlZmluZSBQWEEy
WFhfVFhfUlFfSUNQICAgICAgIDE4CisjIGRlZmluZSBQWEEyWFhfUlhfUlFfU1RVQVJUICAgIDE5
CisjIGRlZmluZSBQWEEyWFhfVFhfUlFfU1RVQVJUICAgIDIwCisjIGRlZmluZSBQWEEyWFhfUlhf
UlFfTU1DSSAgICAgIDIxCisjIGRlZmluZSBQWEEyWFhfVFhfUlFfTU1DSSAgICAgIDIyCisjIGRl
ZmluZSBQWEEyWFhfVVNCX1JRKHgpICAgICAgICgoeCkgKyAyNCkKKyMgZGVmaW5lIFBYQTJYWF9S
WF9SUV9TU1AzICAgICAgNjYKKyMgZGVmaW5lIFBYQTJYWF9UWF9SUV9TU1AzICAgICAgNjcKKwor
IyBkZWZpbmUgUFhBMlhYX1NEUkFNX0JBU0UgICAgICAweGEwMDAwMDAwCisjIGRlZmluZSBQWEEy
WFhfSU5URVJOQUxfQkFTRSAgIDB4NWMwMDAwMDAKKyMgZGVmaW5lIFBYQTJYWF9JTlRFUk5BTF9T
SVpFICAgMHg0MDAwMAoKIC8qIHB4YTJ4eF9waWMuYyAqLwogRGV2aWNlU3RhdGUgKnB4YTJ4eF9w
aWNfaW5pdChod2FkZHIgYmFzZSwgQVJNQ1BVICpjcHUpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0
cnVjdCBQWEEyeHhJMlNTdGF0ZSB7CiAgICAgdWludDMyX3QgZmlmb1sxNl07CiB9OwoKLSMgZGVm
aW5lIFBBX0ZNVCAiMHglMDhseCIKKyMgZGVmaW5lIFBBX0ZNVCAgICAgICAgICAgICAgICAgIjB4
JTA4bHgiCgogUFhBMnh4U3RhdGUgKnB4YTI3MF9pbml0KHVuc2lnbmVkIGludCBzZHJhbV9zaXpl
LCBjb25zdCBjaGFyICpyZXZpc2lvbik7CiBQWEEyeHhTdGF0ZSAqcHhhMjU1X2luaXQodW5zaWdu
ZWQgaW50IHNkcmFtX3NpemUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody9hcm0vc2hhcnBzbC5o
IGIvaW5jbHVkZS9ody9hcm0vc2hhcnBzbC5oCmluZGV4IGU5ODZiMjhjNTIuLjdlNWU3Y2E2MGIg
MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvaHcvYXJtL3NoYXJwc2wuaAorKysgYi9pbmNsdWRlL2h3L2Fy
bS9zaGFycHNsLmgKQEAgLTExLDcgKzExLDcgQEAKCiAvKiB6YXVydXMuYyAqLwoKLSNkZWZpbmUg
U0xfUFhBX1BBUkFNX0JBU0UgMHhhMDAwMGEwMAorI2RlZmluZSBTTF9QWEFfUEFSQU1fQkFTRSAg
ICAgICAweGEwMDAwYTAwCiB2b2lkIHNsX2Jvb3RwYXJhbV93cml0ZShod2FkZHIgcHRyKTsKCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcvYXJtL3NvY19kbWEuaCBiL2luY2x1ZGUvaHcv
YXJtL3NvY19kbWEuaAppbmRleCBlOTNhNzQ5OWE4Li5iY2RiOTE0MjVhIDEwMDY0NAotLS0gYS9p
bmNsdWRlL2h3L2FybS9zb2NfZG1hLmgKKysrIGIvaW5jbHVkZS9ody9hcm0vc29jX2RtYS5oCkBA
IC01NCw3ICs1NCw3IEBAIHN0cnVjdCBzb2NfZG1hX2NoX3MgewogICAgIGludCBieXRlczsKICAg
ICAvKiBJbml0aWFsaXNlZCBieSB0aGUgRE1BIG1vZHVsZSwgY2FsbCBzb2NfZG1hX2NoX3VwZGF0
ZSBhZnRlcgp3cml0aW5nLiAgKi8KICAgICBlbnVtIHNvY19kbWFfYWNjZXNzX3R5cGUgdHlwZVsy
XTsKLSAgICBod2FkZHIgdmFkZHJbMl07IC8qIFVwZGF0ZWQgYnkgLnRyYW5zZmVyX2ZuKCkuICAq
LworICAgIGh3YWRkciB2YWRkclsyXTsgICAgLyogVXBkYXRlZCBieSAudHJhbnNmZXJfZm4oKS4g
ICovCiAgICAgLyogUHJpdmF0ZSAqLwogICAgIHZvaWQgKnBhZGRyWzJdOwogICAgIHNvY19kbWFf
aW9fdCBpb19mblsyXTsKQEAgLTcwLDcgKzcwLDcgQEAgc3RydWN0IHNvY19kbWFfY2hfcyB7CiBz
dHJ1Y3Qgc29jX2RtYV9zIHsKICAgICAvKiBGb2xsb3dpbmcgZmllbGRzIGFyZSBzZXQgYnkgdGhl
IFNvQyBETUEgbW9kdWxlIGFuZCBjYW4gYmUgdXNlZAogICAgICAqIGJ5IGFueWJvZHkuICAqLwot
ICAgIHVpbnQ2NF90IGRycWJtcDsgLyogSXMgemVyb2VkIGJ5IHNvY19kbWFfcmVzZXQoKSAqLwor
ICAgIHVpbnQ2NF90IGRycWJtcDsgICAgLyogSXMgemVyb2VkIGJ5IHNvY19kbWFfcmVzZXQoKSAq
LwogICAgIHFlbXVfaXJxICpkcnE7CiAgICAgdm9pZCAqb3BhcXVlOwogICAgIGludDY0X3QgZnJl
cTsKZGlmZiAtLWdpdCBhL3RjZy9hcm0vdGNnLXRhcmdldC5oIGIvdGNnL2FybS90Y2ctdGFyZ2V0
LmgKaW5kZXggYTQzODc1Y2IwOS4uOWEwNzM3MmZkOSAxMDA2NDQKLS0tIGEvdGNnL2FybS90Y2ct
dGFyZ2V0LmgKKysrIGIvdGNnL2FybS90Y2ctdGFyZ2V0LmgKQEAgLTg2LDggKzg2LDggQEAgZXh0
ZXJuIGJvb2wgdXNlX25lb25faW5zdHJ1Y3Rpb25zOwogI2VuZGlmCgogLyogdXNlZCBmb3IgZnVu
Y3Rpb24gY2FsbCBnZW5lcmF0aW9uICovCi0jZGVmaW5lIFRDR19UQVJHRVRfU1RBQ0tfQUxJR04g
OAotI2RlZmluZSBUQ0dfVEFSR0VUX0NBTExfU1RBQ0tfT0ZGU0VUIDAKKyNkZWZpbmUgVENHX1RB
UkdFVF9TVEFDS19BTElHTiAgICAgICAgICA4CisjZGVmaW5lIFRDR19UQVJHRVRfQ0FMTF9TVEFD
S19PRkZTRVQgICAgMAogI2RlZmluZSBUQ0dfVEFSR0VUX0NBTExfQVJHX0kzMiAgICAgICAgIFRD
R19DQUxMX0FSR19OT1JNQUwKICNkZWZpbmUgVENHX1RBUkdFVF9DQUxMX0FSR19JNjQgICAgICAg
ICBUQ0dfQ0FMTF9BUkdfRVZFTgogI2RlZmluZSBUQ0dfVEFSR0VUX0NBTExfQVJHX0kxMjggICAg
ICAgIFRDR19DQUxMX0FSR19FVkVOCi0tPTIwCjIuNDMuMA==

--000000000000c6e3b70617c3118c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><div><div>Hi,<br><br></div>I have added a patch inlin=
e that fixes indentation and formatting for some files as listed in <a href=
=3D"https://gitlab.com/qemu-project/qemu/-/issues/373" target=3D"_blank">ht=
tps://gitlab.com/qemu-project/qemu/-/issues/373</a>.<br><br></div>Thanks,<b=
r></div>Tanmay<br><br>From 46026574821c46804111eea6607a1b39314b7abe Mon Sep=
 17 00:00:00 2001<br>From: Tanmay Patil &lt;<a href=3D"mailto:tanmaynpatil1=
05@gmail.com">tanmaynpatil105@gmail.com</a>&gt;<br>Date: Sat, 25 Nov 2023 0=
0:53:54 +0530<br>Subject: [PATCH] Fixes: Indentation using TABs and improve=
 formatting<br>=C2=A0Resolves: <a href=3D"https://gitlab.com/qemu-project/q=
emu/-/issues/373">https://gitlab.com/qemu-project/qemu/-/issues/373</a><br>=
<br>=C2=A0 =C2=A0Files changed:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw/arm/boo=
t.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw/char/omap_uart.c<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 - hw/dma/pxa2xx_dma.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw/gpi=
o/omap_gpio.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw/gpio/zaurus.c<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 - hw/input/tsc2005.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - =
hw/input/tsc210x.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw/intc/omap_intc.c<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw/misc/cbus.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 - hw/misc/omap_clk.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw/misc/omap_l4.c<br=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw/misc/omap_sdrc.c<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 - hw/misc/omap_tap.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw/sd/omap_mmc=
.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw/sd/pxa2xx_mmci.c<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 - hw/timer/omap_gptimer.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw=
/timer/omap_synctimer.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - hw/timer/pxa2xx_ti=
mer.c<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - include/hw/arm/pxa.h<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 - include/hw/arm/sharpsl.h<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 - include/hw/arm/soc_dma.h<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - tcg/arm/tcg-ta=
rget.h<br><br>Signed-off-by: Tanmay Patil &lt;<a href=3D"mailto:tanmaynpati=
l105@gmail.com">tanmaynpatil105@gmail.com</a>&gt;<br>---<br>=C2=A0hw/arm/bo=
ot.c =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | =C2=A0 8 +-<br>=C2=A0hw/ch=
ar/omap_uart.c =C2=A0 =C2=A0 =C2=A0 | =C2=A049 +-<br>=C2=A0hw/dma/pxa2xx_dm=
a.c =C2=A0 =C2=A0 =C2=A0 | 198 ++++----<br>=C2=A0hw/gpio/omap_gpio.c =C2=A0=
 =C2=A0 =C2=A0 | 243 +++++-----<br>=C2=A0hw/gpio/zaurus.c =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0| =C2=A061 +--<br>=C2=A0hw/input/tsc2005.c =C2=A0 =C2=A0 =
=C2=A0 =C2=A0| 130 ++---<br>=C2=A0hw/input/tsc210x.c =C2=A0 =C2=A0 =C2=A0 =
=C2=A0| 442 +++++++++--------<br>=C2=A0hw/intc/omap_intc.c =C2=A0 =C2=A0 =
=C2=A0 | 261 +++++-----<br>=C2=A0hw/misc/cbus.c =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0| 202 ++++----<br>=C2=A0hw/misc/omap_clk.c =C2=A0 =C2=A0 =C2=
=A0 =C2=A0| 999 +++++++++++++++++++-------------------<br>=C2=A0hw/misc/oma=
p_l4.c =C2=A0 =C2=A0 =C2=A0 =C2=A0 | =C2=A021 +-<br>=C2=A0hw/misc/omap_sdrc=
.c =C2=A0 =C2=A0 =C2=A0 | 135 +++---<br>=C2=A0hw/misc/omap_tap.c =C2=A0 =C2=
=A0 =C2=A0 =C2=A0| =C2=A028 +-<br>=C2=A0hw/sd/omap_mmc.c =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0| 208 ++++----<br>=C2=A0hw/sd/pxa2xx_mmci.c =C2=A0 =C2=A0 =
=C2=A0 | 149 +++---<br>=C2=A0hw/timer/omap_gptimer.c =C2=A0 | 126 ++---<br>=
=C2=A0hw/timer/omap_synctimer.c | =C2=A0 7 +-<br>=C2=A0hw/timer/pxa2xx_time=
r.c =C2=A0 | 279 ++++++-----<br>=C2=A0include/hw/arm/pxa.h =C2=A0 =C2=A0 =
=C2=A0| 100 ++--<br>=C2=A0include/hw/arm/sharpsl.h =C2=A0| =C2=A0 2 +-<br>=
=C2=A0include/hw/arm/soc_dma.h =C2=A0| =C2=A0 4 +-<br>=C2=A0tcg/arm/tcg-tar=
get.h =C2=A0 =C2=A0 =C2=A0| =C2=A0 4 +-<br>=C2=A022 files changed, 1903 ins=
ertions(+), 1753 deletions(-)<br><br>diff --git a/hw/arm/boot.c b/hw/arm/bo=
ot.c<br>index 84ea6a807a..d480a7da02 100644<br>--- a/hw/arm/boot.c<br>+++ b=
/hw/arm/boot.c<br>@@ -347,13 +347,13 @@ static void set_kernel_args_old(con=
st struct arm_boot_info *info,<br>=C2=A0 =C2=A0 =C2=A0WRITE_WORD(p, info-&g=
t;ram_size / 4096);<br>=C2=A0 =C2=A0 =C2=A0/* ramdisk_size */<br>=C2=A0 =C2=
=A0 =C2=A0WRITE_WORD(p, 0);<br>-#define FLAG_READONLY	1<br>-#define FLAG_RD=
LOAD	4<br>-#define FLAG_RDPROMPT	8<br>+#define FLAG_READONLY 1<br>+#define =
FLAG_RDLOAD =C2=A0 4<br>+#define FLAG_RDPROMPT 8<br>=C2=A0 =C2=A0 =C2=A0/* =
flags */<br>=C2=A0 =C2=A0 =C2=A0WRITE_WORD(p, FLAG_READONLY | FLAG_RDLOAD |=
 FLAG_RDPROMPT);<br>=C2=A0 =C2=A0 =C2=A0/* rootdev */<br>- =C2=A0 =C2=A0WRI=
TE_WORD(p, (31 &lt;&lt; 8) | 0);	/* /dev/mtdblock0 */<br>+ =C2=A0 =C2=A0WRI=
TE_WORD(p, (31 &lt;&lt; 8) | 0); /* /dev/mtdblock0 */<br>=C2=A0 =C2=A0 =C2=
=A0/* video_num_cols */<br>=C2=A0 =C2=A0 =C2=A0WRITE_WORD(p, 0);<br>=C2=A0 =
=C2=A0 =C2=A0/* video_num_rows */<br>diff --git a/hw/char/omap_uart.c b/hw/=
char/omap_uart.c<br>index 6848bddb4e..c2ef4c137e 100644<br>--- a/hw/char/om=
ap_uart.c<br>+++ b/hw/char/omap_uart.c<br>@@ -61,7 +61,7 @@ struct omap_uar=
t_s *omap_uart_init(hwaddr base,<br>=C2=A0 =C2=A0 =C2=A0s-&gt;fclk =3D fclk=
;<br>=C2=A0 =C2=A0 =C2=A0s-&gt;irq =3D irq;<br>=C2=A0 =C2=A0 =C2=A0s-&gt;se=
rial =3D serial_mm_init(get_system_memory(), base, 2, irq,<br>- =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 omap_clk_getrate(fclk)/16,<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 omap_clk_getrate(fclk) / 16,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 chr ?: qemu_chr_new(label, &quot;null&quot;, NULL),<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 DEVICE_NATIVE_ENDIAN);<br>=C2=A0 =C2=A0 =C2=A0retu=
rn s;<br>@@ -76,27 +76,27 @@ static uint64_t omap_uart_read(void *opaque, h=
waddr addr, unsigned size)<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=
=A0 =C2=A0switch (addr) {<br>- =C2=A0 =C2=A0case 0x20:	/* MDR1 */<br>+ =C2=
=A0 =C2=A0case 0x20: =C2=A0/* MDR1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
return s-&gt;mdr[0];<br>- =C2=A0 =C2=A0case 0x24:	/* MDR2 */<br>+ =C2=A0 =
=C2=A0case 0x24: =C2=A0/* MDR2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retu=
rn s-&gt;mdr[1];<br>- =C2=A0 =C2=A0case 0x40:	/* SCR */<br>+ =C2=A0 =C2=A0c=
ase 0x40: =C2=A0/* SCR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt=
;scr;<br>- =C2=A0 =C2=A0case 0x44:	/* SSR */<br>+ =C2=A0 =C2=A0case 0x44: =
=C2=A0/* SSR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x0;<br>- =C2=
=A0 =C2=A0case 0x48:	/* EBLR (OMAP2) */<br>+ =C2=A0 =C2=A0case 0x48: =C2=A0=
/* EBLR (OMAP2) */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;eblr;<=
br>- =C2=A0 =C2=A0case 0x4C:	/* OSC_12M_SEL (OMAP1) */<br>+ =C2=A0 =C2=A0ca=
se 0x4C: =C2=A0/* OSC_12M_SEL (OMAP1) */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return s-&gt;clksel;<br>- =C2=A0 =C2=A0case 0x50:	/* MVR */<br>+ =C2=A0 =
=C2=A0case 0x50: =C2=A0/* MVR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retur=
n 0x30;<br>- =C2=A0 =C2=A0case 0x54:	/* SYSC (OMAP2) */<br>+ =C2=A0 =C2=A0c=
ase 0x54: =C2=A0/* SYSC (OMAP2) */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ret=
urn s-&gt;syscontrol;<br>- =C2=A0 =C2=A0case 0x58:	/* SYSS (OMAP2) */<br>+ =
=C2=A0 =C2=A0case 0x58: =C2=A0/* SYSS (OMAP2) */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0return 1;<br>- =C2=A0 =C2=A0case 0x5c:	/* WER (OMAP2) */<br>+ =
=C2=A0 =C2=A0case 0x5c: =C2=A0/* WER (OMAP2) */<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0return s-&gt;wkup;<br>- =C2=A0 =C2=A0case 0x60:	/* CFPS (OMAP2) *=
/<br>+ =C2=A0 =C2=A0case 0x60: =C2=A0/* CFPS (OMAP2) */<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0return s-&gt;cfps;<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<b=
r>@@ -115,35 +115,36 @@ static void omap_uart_write(void *opaque, hwaddr ad=
dr,<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (addr)=
 {<br>- =C2=A0 =C2=A0case 0x20:	/* MDR1 */<br>+ =C2=A0 =C2=A0case 0x20: =C2=
=A0/* MDR1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;mdr[0] =3D value &=
amp; 0x7f;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=A0ca=
se 0x24:	/* MDR2 */<br>+ =C2=A0 =C2=A0case 0x24: =C2=A0/* MDR2 */<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;mdr[1] =3D value &amp; 0xff;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=A0case 0x40:	/* SCR */<br=
>+ =C2=A0 =C2=A0case 0x40: =C2=A0/* SCR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0s-&gt;scr =3D value &amp; 0xff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
break;<br>- =C2=A0 =C2=A0case 0x48:	/* EBLR (OMAP2) */<br>+ =C2=A0 =C2=A0ca=
se 0x48: =C2=A0/* EBLR (OMAP2) */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&g=
t;eblr =3D value &amp; 0xff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br=
>- =C2=A0 =C2=A0case 0x4C:	/* OSC_12M_SEL (OMAP1) */<br>+ =C2=A0 =C2=A0case=
 0x4C: =C2=A0/* OSC_12M_SEL (OMAP1) */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0s-&gt;clksel =3D value &amp; 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bre=
ak;<br>- =C2=A0 =C2=A0case 0x44:	/* SSR */<br>- =C2=A0 =C2=A0case 0x50:	/* =
MVR */<br>- =C2=A0 =C2=A0case 0x58:	/* SYSS (OMAP2) */<br>+ =C2=A0 =C2=A0ca=
se 0x44: =C2=A0/* SSR */<br>+ =C2=A0 =C2=A0case 0x50: =C2=A0/* MVR */<br>+ =
=C2=A0 =C2=A0case 0x58: =C2=A0/* SYSS (OMAP2) */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0OMAP_RO_REG(addr);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;=
<br>- =C2=A0 =C2=A0case 0x54:	/* SYSC (OMAP2) */<br>+ =C2=A0 =C2=A0case 0x5=
4: =C2=A0/* SYSC (OMAP2) */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;sysc=
ontrol =3D value &amp; 0x1d;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp=
; 2)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 2) {<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_uart_reset(s);<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=
=A0case 0x5c:	/* WER (OMAP2) */<br>+ =C2=A0 =C2=A0case 0x5c: =C2=A0/* WER (=
OMAP2) */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;wkup =3D value &amp; 0=
x7f;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=A0case 0x6=
0:	/* CFPS (OMAP2) */<br>+ =C2=A0 =C2=A0case 0x60: =C2=A0/* CFPS (OMAP2) */=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;cfps =3D value &amp; 0xff;<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0 =C2=A0 =C2=A0default:<br=
>diff --git a/hw/dma/pxa2xx_dma.c b/hw/dma/pxa2xx_dma.c<br>index 9f62f0b633=
..beed1cd9a5 100644<br>--- a/hw/dma/pxa2xx_dma.c<br>+++ b/hw/dma/pxa2xx_dma=
.c<br>@@ -61,98 +61,104 @@ struct PXA2xxDMAState {<br>=C2=A0 =C2=A0 =C2=A0i=
nt running;<br>=C2=A0};<br>=C2=A0<br>-#define DCSR0	0x0000	/* DMA Control /=
 Status register for Channel 0 */<br>-#define DCSR31	0x007c	/* DMA Control =
/ Status register for Channel 31 */<br>-#define DALGN	0x00a0	/* DMA Alignme=
nt register */<br>-#define DPCSR	0x00a4	/* DMA Programmed I/O Control Statu=
s register */<br>-#define DRQSR0	0x00e0	/* DMA DREQ&lt;0&gt; Status registe=
r */<br>-#define DRQSR1	0x00e4	/* DMA DREQ&lt;1&gt; Status register */<br>-=
#define DRQSR2	0x00e8	/* DMA DREQ&lt;2&gt; Status register */<br>-#define D=
INT	0x00f0	/* DMA Interrupt register */<br>-#define DRCMR0	0x0100	/* Reques=
t to Channel Map register 0 */<br>-#define DRCMR63	0x01fc	/* Request to Cha=
nnel Map register 63 */<br>-#define D_CH0	0x0200	/* Channel 0 Descriptor st=
art */<br>-#define DRCMR64	0x1100	/* Request to Channel Map register 64 */<=
br>-#define DRCMR74	0x1128	/* Request to Channel Map register 74 */<br>+#de=
fine DCSR0 =C2=A0 0x0000 =C2=A0/* DMA Control / Status register for Channel=
 0 */<br>+#define DCSR31 =C2=A00x007c =C2=A0/* DMA Control / Status registe=
r for Channel 31 */<br>+#define DALGN =C2=A0 0x00a0 =C2=A0/* DMA Alignment =
register */<br>+#define DPCSR =C2=A0 0x00a4 =C2=A0/* DMA Programmed I/O Con=
trol Status register */<br>+#define DRQSR0 =C2=A00x00e0 =C2=A0/* DMA DREQ&l=
t;0&gt; Status register */<br>+#define DRQSR1 =C2=A00x00e4 =C2=A0/* DMA DRE=
Q&lt;1&gt; Status register */<br>+#define DRQSR2 =C2=A00x00e8 =C2=A0/* DMA =
DREQ&lt;2&gt; Status register */<br>+#define DINT =C2=A0 =C2=A00x00f0 =C2=
=A0/* DMA Interrupt register */<br>+#define DRCMR0 =C2=A00x0100 =C2=A0/* Re=
quest to Channel Map register 0 */<br>+#define DRCMR63 0x01fc =C2=A0/* Requ=
est to Channel Map register 63 */<br>+#define D_CH0 =C2=A0 0x0200 =C2=A0/* =
Channel 0 Descriptor start */<br>+#define DRCMR64 0x1100 =C2=A0/* Request t=
o Channel Map register 64 */<br>+#define DRCMR74 0x1128 =C2=A0/* Request to=
 Channel Map register 74 */<br>=C2=A0<br>=C2=A0/* Per-channel register */<b=
r>-#define DDADR	0x00<br>-#define DSADR	0x01<br>-#define DTADR	0x02<br>-#de=
fine DCMD	0x03<br>+#define DDADR 0x00<br>+#define DSADR 0x01<br>+#define DT=
ADR 0x02<br>+#define DCMD =C2=A00x03<br>=C2=A0<br>=C2=A0/* Bit-field masks =
*/<br>-#define DRCMR_CHLNUM		0x1f<br>-#define DRCMR_MAPVLD		(1 &lt;&lt; 7)<=
br>-#define DDADR_STOP		(1 &lt;&lt; 0)<br>-#define DDADR_BREN		(1 &lt;&lt; =
1)<br>-#define DCMD_LEN		0x1fff<br>-#define DCMD_WIDTH(x)		(1 &lt;&lt; ((((=
x) &gt;&gt; 14) &amp; 3) - 1))<br>-#define DCMD_SIZE(x)		(4 &lt;&lt; (((x) =
&gt;&gt; 16) &amp; 3))<br>-#define DCMD_FLYBYT		(1 &lt;&lt; 19)<br>-#define=
 DCMD_FLYBYS		(1 &lt;&lt; 20)<br>-#define DCMD_ENDIRQEN		(1 &lt;&lt; 21)<br=
>-#define DCMD_STARTIRQEN		(1 &lt;&lt; 22)<br>-#define DCMD_CMPEN		(1 &lt;&=
lt; 25)<br>-#define DCMD_FLOWTRG		(1 &lt;&lt; 28)<br>-#define DCMD_FLOWSRC	=
	(1 &lt;&lt; 29)<br>-#define DCMD_INCTRGADDR		(1 &lt;&lt; 30)<br>-#define D=
CMD_INCSRCADDR		(1 &lt;&lt; 31)<br>-#define DCSR_BUSERRINTR		(1 &lt;&lt; 0)=
<br>-#define DCSR_STARTINTR		(1 &lt;&lt; 1)<br>-#define DCSR_ENDINTR		(1 &l=
t;&lt; 2)<br>-#define DCSR_STOPINTR		(1 &lt;&lt; 3)<br>-#define DCSR_RASINT=
R		(1 &lt;&lt; 4)<br>-#define DCSR_REQPEND		(1 &lt;&lt; 8)<br>-#define DCSR=
_EORINT		(1 &lt;&lt; 9)<br>-#define DCSR_CMPST		(1 &lt;&lt; 10)<br>-#define=
 DCSR_MASKRUN		(1 &lt;&lt; 22)<br>-#define DCSR_RASIRQEN		(1 &lt;&lt; 23)<b=
r>-#define DCSR_CLRCMPST		(1 &lt;&lt; 24)<br>-#define DCSR_SETCMPST		(1 &lt=
;&lt; 25)<br>-#define DCSR_EORSTOPEN		(1 &lt;&lt; 26)<br>-#define DCSR_EORJ=
MPEN		(1 &lt;&lt; 27)<br>-#define DCSR_EORIRQEN		(1 &lt;&lt; 28)<br>-#defin=
e DCSR_STOPIRQEN		(1 &lt;&lt; 29)<br>-#define DCSR_NODESCFETCH	(1 &lt;&lt; =
30)<br>-#define DCSR_RUN		(1 &lt;&lt; 31)<br>+#define DRCMR_CHLNUM =C2=A0 =
=C2=A0 0x1f<br>+#define DRCMR_MAPVLD =C2=A0 =C2=A0 (1 &lt;&lt; 7)<br>+#defi=
ne DDADR_STOP =C2=A0 =C2=A0 =C2=A0 (1 &lt;&lt; 0)<br>+#define DDADR_BREN =
=C2=A0 =C2=A0 =C2=A0 (1 &lt;&lt; 1)<br>+#define DCMD_LEN =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 0x1fff<br>+#define DCMD_WIDTH(x) =C2=A0 =C2=A0(1 &lt;&lt; ((((x)=
 &gt;&gt; 14) &amp; 3) - 1))<br>+#define DCMD_SIZE(x) =C2=A0 =C2=A0 (4 &lt;=
&lt; (((x) &gt;&gt; 16) &amp; 3))<br>+#define DCMD_FLYBYT =C2=A0 =C2=A0 =C2=
=A0(1 &lt;&lt; 19)<br>+#define DCMD_FLYBYS =C2=A0 =C2=A0 =C2=A0(1 &lt;&lt; =
20)<br>+#define DCMD_ENDIRQEN =C2=A0 =C2=A0(1 &lt;&lt; 21)<br>+#define DCMD=
_STARTIRQEN =C2=A0(1 &lt;&lt; 22)<br>+#define DCMD_CMPEN =C2=A0 =C2=A0 =C2=
=A0 (1 &lt;&lt; 25)<br>+#define DCMD_FLOWTRG =C2=A0 =C2=A0 (1 &lt;&lt; 28)<=
br>+#define DCMD_FLOWSRC =C2=A0 =C2=A0 (1 &lt;&lt; 29)<br>+#define DCMD_INC=
TRGADDR =C2=A0(1 &lt;&lt; 30)<br>+#define DCMD_INCSRCADDR =C2=A0(1 &lt;&lt;=
 31)<br>+#define DCSR_BUSERRINTR =C2=A0(1 &lt;&lt; 0)<br>+#define DCSR_STAR=
TINTR =C2=A0 (1 &lt;&lt; 1)<br>+#define DCSR_ENDINTR =C2=A0 =C2=A0 (1 &lt;&=
lt; 2)<br>+#define DCSR_STOPINTR =C2=A0 =C2=A0(1 &lt;&lt; 3)<br>+#define DC=
SR_RASINTR =C2=A0 =C2=A0 (1 &lt;&lt; 4)<br>+#define DCSR_REQPEND =C2=A0 =C2=
=A0 (1 &lt;&lt; 8)<br>+#define DCSR_EORINT =C2=A0 =C2=A0 =C2=A0(1 &lt;&lt; =
9)<br>+#define DCSR_CMPST =C2=A0 =C2=A0 =C2=A0 (1 &lt;&lt; 10)<br>+#define =
DCSR_MASKRUN =C2=A0 =C2=A0 (1 &lt;&lt; 22)<br>+#define DCSR_RASIRQEN =C2=A0=
 =C2=A0(1 &lt;&lt; 23)<br>+#define DCSR_CLRCMPST =C2=A0 =C2=A0(1 &lt;&lt; 2=
4)<br>+#define DCSR_SETCMPST =C2=A0 =C2=A0(1 &lt;&lt; 25)<br>+#define DCSR_=
EORSTOPEN =C2=A0 (1 &lt;&lt; 26)<br>+#define DCSR_EORJMPEN =C2=A0 =C2=A0(1 =
&lt;&lt; 27)<br>+#define DCSR_EORIRQEN =C2=A0 =C2=A0(1 &lt;&lt; 28)<br>+#de=
fine DCSR_STOPIRQEN =C2=A0 (1 &lt;&lt; 29)<br>+#define DCSR_NODESCFETCH (1 =
&lt;&lt; 30)<br>+#define DCSR_RUN =C2=A0 =C2=A0 =C2=A0 =C2=A0 (1 &lt;&lt; 3=
1)<br>=C2=A0<br>=C2=A0static inline void pxa2xx_dma_update(PXA2xxDMAState *=
s, int ch)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0if (ch &gt;=3D 0) {<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;chan[ch].state &amp; DCSR_STOPIRQEN) =
&amp;&amp;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&=
gt;chan[ch].state &amp; DCSR_STOPINTR))<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;chan[ch].state &amp; DCSR_STOPINTR)) {<br=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stopintr |=3D 1 &lt;=
&lt; ch;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;stopin=
tr &amp;=3D ~(1 &lt;&lt; ch);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<b=
r>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;chan[ch].state &amp; DCSR_EO=
RIRQEN) &amp;&amp;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0(s-&gt;chan[ch].state &amp; DCSR_EORINT))<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;chan[ch].state &amp; DCSR_EORINT))=
 {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;eorintr |=3D 1 =
&lt;&lt; ch;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0 =C2=A0=
 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;eo=
rintr &amp;=3D ~(1 &lt;&lt; ch);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=
=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;chan[ch].state &amp; DC=
SR_RASIRQEN) &amp;&amp;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0(s-&gt;chan[ch].state &amp; DCSR_RASINTR))<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;chan[ch].state &amp; DCSR_RASI=
NTR)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;rasintr |=
=3D 1 &lt;&lt; ch;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-=
&gt;rasintr &amp;=3D ~(1 &lt;&lt; ch);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br=
>=C2=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;chan[ch].state &amp; DCSR=
_STARTINTR)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;chan[ch].state &amp; =
DCSR_STARTINTR) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;=
startintr |=3D 1 &lt;&lt; ch;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0s-&gt;startintr &amp;=3D ~(1 &lt;&lt; ch);<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0}<br>=C2=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;chan[ch].st=
ate &amp; DCSR_ENDINTR)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;chan[ch].=
state &amp; DCSR_ENDINTR) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0s-&gt;endintr |=3D 1 &lt;&lt; ch;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0els=
e<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;endintr &amp;=3D ~(1 &lt;&lt; ch);<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>- =C2=A0 =C2=A0=
if (s-&gt;stopintr | s-&gt;eorintr | s-&gt;rasintr | s-&gt;startintr | s-&g=
t;endintr)<br>+ =C2=A0 =C2=A0if (s-&gt;stopintr | s-&gt;eorintr | s-&gt;ras=
intr | s-&gt;startintr | s-&gt;endintr) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0qemu_irq_raise(s-&gt;irq);<br>- =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0}=
 else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_irq_lower(s-&gt;irq);<br>=
+ =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=A0static inline void pxa2xx_dm=
a_descriptor_fetch(<br>@@ -160,8 +166,9 @@ static inline void pxa2xx_dma_de=
scriptor_fetch(<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0uint32_t desc[4];<br>=C2=
=A0 =C2=A0 =C2=A0hwaddr daddr =3D s-&gt;chan[ch].descr &amp; ~0xf;<br>- =C2=
=A0 =C2=A0if ((s-&gt;chan[ch].descr &amp; DDADR_BREN) &amp;&amp; (s-&gt;cha=
n[ch].state &amp; DCSR_CMPST))<br>+ =C2=A0 =C2=A0if ((s-&gt;chan[ch].descr =
&amp; DDADR_BREN) &amp;&amp; (s-&gt;chan[ch].state &amp; DCSR_CMPST)) {<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0daddr +=3D 32;<br>+ =C2=A0 =C2=A0}<br>=C2=
=A0<br>=C2=A0 =C2=A0 =C2=A0cpu_physical_memory_read(daddr, desc, 16);<br>=
=C2=A0 =C2=A0 =C2=A0s-&gt;chan[ch].descr =3D desc[DDADR];<br>@@ -169,16 +17=
6,20 @@ static inline void pxa2xx_dma_descriptor_fetch(<br>=C2=A0 =C2=A0 =
=C2=A0s-&gt;chan[ch].dest =3D desc[DTADR];<br>=C2=A0 =C2=A0 =C2=A0s-&gt;cha=
n[ch].cmd =3D desc[DCMD];<br>=C2=A0<br>- =C2=A0 =C2=A0if (s-&gt;chan[ch].cm=
d &amp; DCMD_FLOWSRC)<br>+ =C2=A0 =C2=A0if (s-&gt;chan[ch].cmd &amp; DCMD_F=
LOWSRC) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;chan[ch].src &amp;=3D =
~3;<br>- =C2=A0 =C2=A0if (s-&gt;chan[ch].cmd &amp; DCMD_FLOWTRG)<br>+ =C2=
=A0 =C2=A0}<br>+ =C2=A0 =C2=A0if (s-&gt;chan[ch].cmd &amp; DCMD_FLOWTRG) {<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;chan[ch].dest &amp;=3D ~3;<br>+ =
=C2=A0 =C2=A0}<br>=C2=A0<br>- =C2=A0 =C2=A0if (s-&gt;chan[ch].cmd &amp; (DC=
MD_CMPEN | DCMD_FLYBYS | DCMD_FLYBYT))<br>+ =C2=A0 =C2=A0if (s-&gt;chan[ch]=
.cmd &amp; (DCMD_CMPEN | DCMD_FLYBYS | DCMD_FLYBYT)) {<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0printf(&quot;%s: unsupported mode in channel %i\n&quot;, _=
_func__, ch);<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>- =C2=A0 =C2=A0if (s-&gt;cha=
n[ch].cmd &amp; DCMD_STARTIRQEN)<br>+ =C2=A0 =C2=A0if (s-&gt;chan[ch].cmd &=
amp; DCMD_STARTIRQEN) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;chan[ch]=
.state |=3D DCSR_STARTINTR;<br>+ =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=
=A0static void pxa2xx_dma_run(PXA2xxDMAState *s)<br>@@ -190,18 +201,20 @@ s=
tatic void pxa2xx_dma_run(PXA2xxDMAState *s)<br>=C2=A0 =C2=A0 =C2=A0uint8_t=
 buffer[32];<br>=C2=A0 =C2=A0 =C2=A0PXA2xxDMAChannel *ch;<br>=C2=A0<br>- =
=C2=A0 =C2=A0if (s-&gt;running ++)<br>+ =C2=A0 =C2=A0if (s-&gt;running++) {=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>+ =C2=A0 =C2=A0}<br>=C2=A0=
<br>=C2=A0 =C2=A0 =C2=A0while (s-&gt;running) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0s-&gt;running =3D 1;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0for (c =3D 0=
; c &lt; s-&gt;channels; c ++) {<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0for (c =3D=
 0; c &lt; s-&gt;channels; c++) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0ch =3D &amp;s-&gt;chan[c];<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0while ((ch-&gt;state &amp; DCSR_RUN) &amp;&amp; !(c=
h-&gt;state &amp; DCSR_STOPINTR)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0/* Test for pending requests */<br>- =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((ch-&gt;cmd &amp; (DCMD_FL=
OWSRC | DCMD_FLOWTRG)) &amp;&amp; !ch-&gt;request)<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((ch-&gt;cmd &amp; (DCMD_FLOWSRC |=
 DCMD_FLOWTRG)) &amp;&amp; !ch-&gt;request) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>+ =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0length =3D ch-&gt;cmd &amp;=
 DCMD_LEN;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0size =3D DCMD_SIZE(ch-&gt;cmd);<br>@@ -228,11 +241,13 @@ static void pxa=
2xx_dma_run(PXA2xxDMAState *s)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((ch-&gt;cmd &amp; (DCMD_FLOWSRC | DC=
MD_FLOWTRG)) &amp;&amp;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0!ch-&gt;request) {<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0ch-&gt;state |=3D DCSR_EORINT;<br>- =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (ch-&g=
t;state &amp; DCSR_EORSTOPEN)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (ch-&gt;state &amp; DCSR_EO=
RSTOPEN) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ch-&gt;state |=3D DCSR_STOPINT=
R;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((ch-&gt;state &amp; DCSR_EORJMPEN=
) &amp;&amp;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0!(ch-&gt;state &amp; DCSR_NODESCFETCH))<br>+ =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0!(ch-&gt;state &amp; DCSR_NODE=
SCFETCH)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pxa2xx_dma_descriptor_fetch(s,=
 c);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>@@ -241,8 +256,9 @@ stati=
c void pxa2xx_dma_run(PXA2xxDMAState *s)<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* Is the transfer complete now? *=
/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!len=
gth) {<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0if (ch-&gt;cmd &amp; DCMD_ENDIRQEN)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (ch-&gt;cmd &amp; DCMD_ENDIRQEN=
) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0ch-&gt;state |=3D DCSR_ENDINTR;<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if=
 ((ch-&gt;state &amp; DCSR_NODESCFETCH) ||<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0(ch-&gt;descr &amp; DDADR_STOP) ||<br>@@ -259,7 +275,7 @@ =
static void pxa2xx_dma_run(PXA2xxDMAState *s)<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<=
br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;running --;<br>+ =C2=A0 =C2=A0 =C2=A0=
 =C2=A0s-&gt;running--;<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>@@=
 -290,8 +306,9 @@ static uint64_t pxa2xx_dma_read(void *opaque, hwaddr offs=
et,<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0case DCSR0 ... DCSR31:<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0channel =3D offset &gt;&gt; 2;<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0if (s-&gt;chan[channel].request)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0if (s-&gt;chan[channel].request) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0return s-&gt;chan[channel].state | DCSR_REQPEND;<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;cha=
n[channel].state;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0case DINT:<br>@@ -363,8 =
+380,9 @@ static void pxa2xx_dma_write(void *opaque, hwaddr offset,<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 DCSR_STARTINTR | DCSR_BUSERRINTR));<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0s-&gt;chan[channel].state |=3D value &amp; 0xfc800000;<br>=C2=
=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;chan[channel].state &amp; DCS=
R_STOPIRQEN)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;chan[channel].state =
&amp; DCSR_STOPIRQEN) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
s-&gt;chan[channel].state &amp;=3D ~DCSR_STOPINTR;<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; =
DCSR_NODESCFETCH) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* N=
o-descriptor-fetch mode */<br>@@ -382,13 +400,16 @@ static void pxa2xx_dma_=
write(void *opaque, hwaddr offset,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<b=
r>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* Shouldn&#39;t matter as ou=
r DMA is synchronous. =C2=A0*/<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!(value =
&amp; (DCSR_RUN | DCSR_MASKRUN)))<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!(val=
ue &amp; (DCSR_RUN | DCSR_MASKRUN))) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;chan[channel].state |=3D DCSR_STOPINTR;<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &=
amp; DCSR_CLRCMPST)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; DCSR_CL=
RCMPST) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;chan[cha=
nnel].state &amp;=3D ~DCSR_CMPST;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value=
 &amp; DCSR_SETCMPST)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0if (value &amp; DCSR_SETCMPST) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;chan[channel].state |=3D DCSR_CMPST;<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0px=
a2xx_dma_update(s, channel);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br=
>@@ -439,19 +460,23 @@ static void pxa2xx_dma_request(void *opaque, int req=
_num, int on)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0PXA2xxDMAState *s =3D opaqu=
e;<br>=C2=A0 =C2=A0 =C2=A0int ch;<br>- =C2=A0 =C2=A0if (req_num &lt; 0 || r=
eq_num &gt;=3D PXA2XX_DMA_NUM_REQUESTS)<br>+ =C2=A0 =C2=A0if (req_num &lt; =
0 || req_num &gt;=3D PXA2XX_DMA_NUM_REQUESTS) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0hw_error(&quot;%s: Bad DMA request %i\n&quot;, __func__, req_num)=
;<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>- =C2=A0 =C2=A0if (!(s-&gt;req[req_num] =
&amp; DRCMR_MAPVLD))<br>+ =C2=A0 =C2=A0if (!(s-&gt;req[req_num] &amp; DRCMR=
_MAPVLD)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>+ =C2=A0 =C2=A0=
}<br>=C2=A0 =C2=A0 =C2=A0ch =3D s-&gt;req[req_num] &amp; DRCMR_CHLNUM;<br>=
=C2=A0<br>- =C2=A0 =C2=A0if (!s-&gt;chan[ch].request &amp;&amp; on)<br>+ =
=C2=A0 =C2=A0if (!s-&gt;chan[ch].request &amp;&amp; on) {<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;chan[ch].state |=3D DCSR_RASINTR;<br>- =C2=A0 =C2=
=A0else<br>+ =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&=
gt;chan[ch].state &amp;=3D ~DCSR_RASINTR;<br>- =C2=A0 =C2=A0if (s-&gt;chan[=
ch].request &amp;&amp; !on)<br>+ =C2=A0 =C2=A0}<br>+ =C2=A0 =C2=A0if (s-&gt=
;chan[ch].request &amp;&amp; !on) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-=
&gt;chan[ch].state |=3D DCSR_EORINT;<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=
=A0 =C2=A0 =C2=A0s-&gt;chan[ch].request =3D on;<br>=C2=A0 =C2=A0 =C2=A0if (=
on) {<br>@@ -488,8 +513,9 @@ static void pxa2xx_dma_realize(DeviceState *de=
v, Error **errp)<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0s-&gt;chan =3D g_new0(PXA=
2xxDMAChannel, s-&gt;channels);<br>=C2=A0<br>- =C2=A0 =C2=A0for (i =3D 0; i=
 &lt; s-&gt;channels; i ++)<br>+ =C2=A0 =C2=A0for (i =3D 0; i &lt; s-&gt;ch=
annels; i++) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;chan[i].state =3D=
 DCSR_STOPINTR;<br>+ =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=A0DeviceSta=
te *pxa27x_dma_init(hwaddr base, qemu_irq irq)<br>diff --git a/hw/gpio/omap=
_gpio.c b/hw/gpio/omap_gpio.c<br>index a3341d70f1..60e97a0839 100644<br>---=
 a/hw/gpio/omap_gpio.c<br>+++ b/hw/gpio/omap_gpio.c<br>@@ -57,10 +57,11 @@ =
static void omap_gpio_set(void *opaque, int line, int level)<br>=C2=A0 =C2=
=A0 =C2=A0struct omap_gpio_s *s =3D &amp;p-&gt;omap1;<br>=C2=A0 =C2=A0 =C2=
=A0uint16_t prev =3D s-&gt;inputs;<br>=C2=A0<br>- =C2=A0 =C2=A0if (level)<b=
r>+ =C2=A0 =C2=A0if (level) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;in=
puts |=3D 1 &lt;&lt; line;<br>- =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0} else =
{<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;inputs &amp;=3D ~(1 &lt;&lt; l=
ine);<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0if (((s-&gt;edge=
 &amp; s-&gt;inputs &amp; ~prev) | (~s-&gt;edge &amp; ~s-&gt;inputs &amp; p=
rev)) &amp;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0(1 &lt;&lt; line) &amp; s-&gt;dir &amp; ~s-&gt;mask) {<br>=
@@ -80,25 +81,25 @@ static uint64_t omap_gpio_read(void *opaque, hwaddr add=
r,<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (offset=
) {<br>- =C2=A0 =C2=A0case 0x00:	/* DATA_INPUT */<br>+ =C2=A0 =C2=A0case 0x=
00: =C2=A0/* DATA_INPUT */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&g=
t;inputs &amp; s-&gt;pins;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x04:	/* DATA_O=
UTPUT */<br>+ =C2=A0 =C2=A0case 0x04: =C2=A0/* DATA_OUTPUT */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;outputs;<br>=C2=A0<br>- =C2=A0 =C2=A0c=
ase 0x08:	/* DIRECTION_CONTROL */<br>+ =C2=A0 =C2=A0case 0x08: =C2=A0/* DIR=
ECTION_CONTROL */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;dir;<br=
>=C2=A0<br>- =C2=A0 =C2=A0case 0x0c:	/* INTERRUPT_CONTROL */<br>+ =C2=A0 =
=C2=A0case 0x0c: =C2=A0/* INTERRUPT_CONTROL */<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0return s-&gt;edge;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* INTE=
RRUPT_MASK */<br>+ =C2=A0 =C2=A0case 0x10: =C2=A0/* INTERRUPT_MASK */<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;mask;<br>=C2=A0<br>- =C2=A0 =
=C2=A0case 0x14:	/* INTERRUPT_STATUS */<br>+ =C2=A0 =C2=A0case 0x14: =C2=A0=
/* INTERRUPT_STATUS */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;in=
ts;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x18:	/* PIN_CONTROL (not in OMAP310) =
*/<br>+ =C2=A0 =C2=A0case 0x18: =C2=A0/* PIN_CONTROL (not in OMAP310) */<br=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0OMAP_BAD_REG(addr);<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0return s-&gt;pins;<br>=C2=A0 =C2=A0 =C2=A0}<br>@@ -121,47 =
+122,50 @@ static void omap_gpio_write(void *opaque, hwaddr addr,<br>=C2=A0=
 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (offset) {<br>- =C2=
=A0 =C2=A0case 0x00:	/* DATA_INPUT */<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/*=
 DATA_INPUT */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0OMAP_RO_REG(addr);<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case =
0x04:	/* DATA_OUTPUT */<br>+ =C2=A0 =C2=A0case 0x04: =C2=A0/* DATA_OUTPUT *=
/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0diff =3D (s-&gt;outputs ^ value) &am=
p; ~s-&gt;dir;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;outputs =3D value=
;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0while ((ln =3D ctz32(diff)) !=3D 32)=
 {<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;handler[ln])<br>=
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;handler[ln]) {<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_set_irq(s-&=
gt;handler[ln], (value &gt;&gt; ln) &amp; 1);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0diff =
&amp;=3D ~(1 &lt;&lt; ln);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x08:	/=
* DIRECTION_CONTROL */<br>+ =C2=A0 =C2=A0case 0x08: =C2=A0/* DIRECTION_CONT=
ROL */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0diff =3D s-&gt;outputs &amp; (s=
-&gt;dir ^ value);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dir =3D value=
;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0value =3D s-&gt;outputs &a=
mp; ~s-&gt;dir;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0while ((ln =3D ctz32(d=
iff)) !=3D 32) {<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;ha=
ndler[ln])<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;handler[=
ln]) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qem=
u_set_irq(s-&gt;handler[ln], (value &gt;&gt; ln) &amp; 1);<br>+ =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0diff &amp;=3D ~(1 &lt;&lt; ln);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =
=C2=A0case 0x0c:	/* INTERRUPT_CONTROL */<br>+ =C2=A0 =C2=A0case 0x0c: =C2=
=A0/* INTERRUPT_CONTROL */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;edge =
=3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=
=A0 =C2=A0case 0x10:	/* INTERRUPT_MASK */<br>+ =C2=A0 =C2=A0case 0x10: =C2=
=A0/* INTERRUPT_MASK */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;mask =3D=
 value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =
=C2=A0case 0x14:	/* INTERRUPT_STATUS */<br>+ =C2=A0 =C2=A0case 0x14: =C2=A0=
/* INTERRUPT_STATUS */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;ints &amp=
;=3D ~value;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!s-&gt;ints)<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0if (!s-&gt;ints) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0qemu_irq_lower(s-&gt;irq);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=
=A0case 0x18:	/* PIN_CONTROL (not in OMAP310 TRM) */<br>+ =C2=A0 =C2=A0case=
 0x18: =C2=A0/* PIN_CONTROL (not in OMAP310 TRM) */<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0OMAP_BAD_REG(addr);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&g=
t;pins =3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>@@ -233,12=
 +237,15 @@ static inline void omap2_gpio_module_int_update(struct omap2_gp=
io_s *s,<br>=C2=A0<br>=C2=A0static void omap2_gpio_module_wake(struct omap2=
_gpio_s *s, int line)<br>=C2=A0{<br>- =C2=A0 =C2=A0if (!(s-&gt;config[0] &a=
mp; (1 &lt;&lt; 2)))			/* ENAWAKEUP */<br>+ =C2=A0 =C2=A0if (!(s-&gt;config=
[0] &amp; (1 &lt;&lt; 2))) { =C2=A0 /* ENAWAKEUP */<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0return;<br>- =C2=A0 =C2=A0if (!(s-&gt;config[0] &amp; (3 &lt;=
&lt; 3)))			/* Force Idle */<br>+ =C2=A0 =C2=A0}<br>+ =C2=A0 =C2=A0if (!(s-=
&gt;config[0] &amp; (3 &lt;&lt; 3))) { =C2=A0 /* Force Idle */<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>- =C2=A0 =C2=A0if (!(s-&gt;wumask &am=
p; (1 &lt;&lt; line)))<br>+ =C2=A0 =C2=A0}<br>+ =C2=A0 =C2=A0if (!(s-&gt;wu=
mask &amp; (1 &lt;&lt; line))) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retur=
n;<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0qemu_irq_raise(s-&g=
t;wkup);<br>=C2=A0}<br>@@ -279,12 +286,14 @@ static void omap2_gpio_set(voi=
d *opaque, int line, int level)<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0line &amp;=
=3D 31;<br>=C2=A0 =C2=A0 =C2=A0if (level) {<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0if (s-&gt;dir &amp; (1 &lt;&lt; line) &amp; ((~s-&gt;inputs &amp; s-&gt;=
edge[0]) | s-&gt;level[1]))<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;dir &=
amp; (1 &lt;&lt; line) &amp; ((~s-&gt;inputs &amp; s-&gt;edge[0]) | s-&gt;l=
evel[1])) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio_m=
odule_int(s, line);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;inputs |=3D 1 &lt;&lt; line;<br>=C2=A0 =C2=A0 =C2=A0=
} else {<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;dir &amp; (1 &lt;&lt; li=
ne) &amp; ((s-&gt;inputs &amp; s-&gt;edge[1]) | s-&gt;level[0]))<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;dir &amp; (1 &lt;&lt; line) &amp; ((s-&gt=
;inputs &amp; s-&gt;edge[1]) | s-&gt;level[0])) {<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio_module_int(s, line);<br>+ =C2=A0 =C2=
=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;inputs &amp;=
=3D ~(1 &lt;&lt; line);<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0}<br>@@ -312,66 +=
321,66 @@ static uint32_t omap2_gpio_module_read(void *opaque, hwaddr addr)=
<br>=C2=A0 =C2=A0 =C2=A0struct omap2_gpio_s *s =3D opaque;<br>=C2=A0<br>=C2=
=A0 =C2=A0 =C2=A0switch (addr) {<br>- =C2=A0 =C2=A0case 0x00:	/* GPIO_REVIS=
ION */<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/* GPIO_REVISION */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;revision;<br>=C2=A0<br>- =C2=A0 =C2=A0=
case 0x10:	/* GPIO_SYSCONFIG */<br>+ =C2=A0 =C2=A0case 0x10: =C2=A0/* GPIO_=
SYSCONFIG */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;config[0];<b=
r>=C2=A0<br>- =C2=A0 =C2=A0case 0x14:	/* GPIO_SYSSTATUS */<br>+ =C2=A0 =C2=
=A0case 0x14: =C2=A0/* GPIO_SYSSTATUS */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return 0x01;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x18:	/* GPIO_IRQSTATUS1 *=
/<br>+ =C2=A0 =C2=A0case 0x18: =C2=A0/* GPIO_IRQSTATUS1 */<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0return s-&gt;ints[0];<br>=C2=A0<br>- =C2=A0 =C2=A0case=
 0x1c:	/* GPIO_IRQENABLE1 */<br>- =C2=A0 =C2=A0case 0x60:	/* GPIO_CLEARIRQE=
NABLE1 */<br>- =C2=A0 =C2=A0case 0x64:	/* GPIO_SETIRQENABLE1 */<br>+ =C2=A0=
 =C2=A0case 0x1c: =C2=A0/* GPIO_IRQENABLE1 */<br>+ =C2=A0 =C2=A0case 0x60: =
=C2=A0/* GPIO_CLEARIRQENABLE1 */<br>+ =C2=A0 =C2=A0case 0x64: =C2=A0/* GPIO=
_SETIRQENABLE1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;mask[0]=
;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x20:	/* GPIO_WAKEUPENABLE */<br>- =C2=
=A0 =C2=A0case 0x80:	/* GPIO_CLEARWKUENA */<br>- =C2=A0 =C2=A0case 0x84:	/*=
 GPIO_SETWKUENA */<br>+ =C2=A0 =C2=A0case 0x20: =C2=A0/* GPIO_WAKEUPENABLE =
*/<br>+ =C2=A0 =C2=A0case 0x80: =C2=A0/* GPIO_CLEARWKUENA */<br>+ =C2=A0 =
=C2=A0case 0x84: =C2=A0/* GPIO_SETWKUENA */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0return s-&gt;wumask;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x28:	/* GPIO_I=
RQSTATUS2 */<br>+ =C2=A0 =C2=A0case 0x28: =C2=A0/* GPIO_IRQSTATUS2 */<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;ints[1];<br>=C2=A0<br>- =C2=
=A0 =C2=A0case 0x2c:	/* GPIO_IRQENABLE2 */<br>- =C2=A0 =C2=A0case 0x70:	/* =
GPIO_CLEARIRQENABLE2 */<br>- =C2=A0 =C2=A0case 0x74:	/* GPIO_SETIREQNEABLE2=
 */<br>+ =C2=A0 =C2=A0case 0x2c: =C2=A0/* GPIO_IRQENABLE2 */<br>+ =C2=A0 =
=C2=A0case 0x70: =C2=A0/* GPIO_CLEARIRQENABLE2 */<br>+ =C2=A0 =C2=A0case 0x=
74: =C2=A0/* GPIO_SETIREQNEABLE2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0re=
turn s-&gt;mask[1];<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x30:	/* GPIO_CTRL */<=
br>+ =C2=A0 =C2=A0case 0x30: =C2=A0/* GPIO_CTRL */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0return s-&gt;config[1];<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x34:=
	/* GPIO_OE */<br>+ =C2=A0 =C2=A0case 0x34: =C2=A0/* GPIO_OE */<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;dir;<br>=C2=A0<br>- =C2=A0 =C2=A0ca=
se 0x38:	/* GPIO_DATAIN */<br>+ =C2=A0 =C2=A0case 0x38: =C2=A0/* GPIO_DATAI=
N */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;inputs;<br>=C2=A0<br=
>- =C2=A0 =C2=A0case 0x3c:	/* GPIO_DATAOUT */<br>- =C2=A0 =C2=A0case 0x90:	=
/* GPIO_CLEARDATAOUT */<br>- =C2=A0 =C2=A0case 0x94:	/* GPIO_SETDATAOUT */<=
br>+ =C2=A0 =C2=A0case 0x3c: =C2=A0/* GPIO_DATAOUT */<br>+ =C2=A0 =C2=A0cas=
e 0x90: =C2=A0/* GPIO_CLEARDATAOUT */<br>+ =C2=A0 =C2=A0case 0x94: =C2=A0/*=
 GPIO_SETDATAOUT */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;outpu=
ts;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x40:	/* GPIO_LEVELDETECT0 */<br>+ =C2=
=A0 =C2=A0case 0x40: =C2=A0/* GPIO_LEVELDETECT0 */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0return s-&gt;level[0];<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x44:	=
/* GPIO_LEVELDETECT1 */<br>+ =C2=A0 =C2=A0case 0x44: =C2=A0/* GPIO_LEVELDET=
ECT1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;level[1];<br>=C2=
=A0<br>- =C2=A0 =C2=A0case 0x48:	/* GPIO_RISINGDETECT */<br>+ =C2=A0 =C2=A0=
case 0x48: =C2=A0/* GPIO_RISINGDETECT */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return s-&gt;edge[0];<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x4c:	/* GPIO_FAL=
LINGDETECT */<br>+ =C2=A0 =C2=A0case 0x4c: =C2=A0/* GPIO_FALLINGDETECT */<b=
r>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;edge[1];<br>=C2=A0<br>- =
=C2=A0 =C2=A0case 0x50:	/* GPIO_DEBOUNCENABLE */<br>+ =C2=A0 =C2=A0case 0x5=
0: =C2=A0/* GPIO_DEBOUNCENABLE */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retu=
rn s-&gt;debounce;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x54:	/* GPIO_DEBOUNCIN=
GTIME */<br>+ =C2=A0 =C2=A0case 0x54: =C2=A0/* GPIO_DEBOUNCINGTIME */<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;delay;<br>=C2=A0 =C2=A0 =C2=
=A0}<br>=C2=A0<br>@@ -387,55 +396,56 @@ static void omap2_gpio_module_write=
(void *opaque, hwaddr addr,<br>=C2=A0 =C2=A0 =C2=A0int ln;<br>=C2=A0<br>=C2=
=A0 =C2=A0 =C2=A0switch (addr) {<br>- =C2=A0 =C2=A0case 0x00:	/* GPIO_REVIS=
ION */<br>- =C2=A0 =C2=A0case 0x14:	/* GPIO_SYSSTATUS */<br>- =C2=A0 =C2=A0=
case 0x38:	/* GPIO_DATAIN */<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/* GPIO_REV=
ISION */<br>+ =C2=A0 =C2=A0case 0x14: =C2=A0/* GPIO_SYSSTATUS */<br>+ =C2=
=A0 =C2=A0case 0x38: =C2=A0/* GPIO_DATAIN */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0OMAP_RO_REG(addr);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=
=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* GPIO_SYSCONFIG */<br>+ =C2=A0 =C2=A0=
case 0x10: =C2=A0/* GPIO_SYSCONFIG */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
if (((value &gt;&gt; 3) &amp; 3) =3D=3D 3) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0qemu_log_mask(LOG_GUEST_ERROR,<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0&quot;%s: Illegal IDLEMODE value: 3\n&quot;, __func__);<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0}<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 2)<b=
r>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 2) {<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio_module_reset(s);<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;config[0] =3D val=
ue &amp; 0x1d;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =
=C2=A0 =C2=A0case 0x18:	/* GPIO_IRQSTATUS1 */<br>+ =C2=A0 =C2=A0case 0x18: =
=C2=A0/* GPIO_IRQSTATUS1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;=
ints[0] &amp; value) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s=
-&gt;ints[0] &amp;=3D ~value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0omap2_gpio_module_level_update(s, 0);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =
=C2=A0case 0x1c:	/* GPIO_IRQENABLE1 */<br>+ =C2=A0 =C2=A0case 0x1c: =C2=A0/=
* GPIO_IRQENABLE1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;mask[0] =3D=
 value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio_module_int_update(s=
, 0);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=
=A0case 0x20:	/* GPIO_WAKEUPENABLE */<br>+ =C2=A0 =C2=A0case 0x20: =C2=A0/*=
 GPIO_WAKEUPENABLE */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;wumask =3D=
 value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =
=C2=A0case 0x28:	/* GPIO_IRQSTATUS2 */<br>+ =C2=A0 =C2=A0case 0x28: =C2=A0/=
* GPIO_IRQSTATUS2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;ints[1]=
 &amp; value) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;in=
ts[1] &amp;=3D ~value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0o=
map2_gpio_module_level_update(s, 1);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0ca=
se 0x2c:	/* GPIO_IRQENABLE2 */<br>+ =C2=A0 =C2=A0case 0x2c: =C2=A0/* GPIO_I=
RQENABLE2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;mask[1] =3D value;<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio_module_int_update(s, 1);<br=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case =
0x30:	/* GPIO_CTRL */<br>+ =C2=A0 =C2=A0case 0x30: =C2=A0/* GPIO_CTRL */<br=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;config[1] =3D value &amp; 7;<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0=
x34:	/* GPIO_OE */<br>+ =C2=A0 =C2=A0case 0x34: =C2=A0/* GPIO_OE */<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0diff =3D s-&gt;outputs &amp; (s-&gt;dir ^ va=
lue);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dir =3D value;<br>=C2=A0<b=
r>@@ -449,71 +459,71 @@ static void omap2_gpio_module_write(void *opaque, h=
waddr addr,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio_module_level_up=
date(s, 1);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=
=A0 =C2=A0case 0x3c:	/* GPIO_DATAOUT */<br>+ =C2=A0 =C2=A0case 0x3c: =C2=A0=
/* GPIO_DATAOUT */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio_module_o=
ut_update(s, s-&gt;outputs ^ value);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0b=
reak;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x40:	/* GPIO_LEVELDETECT0 */<br>+ =
=C2=A0 =C2=A0case 0x40: =C2=A0/* GPIO_LEVELDETECT0 */<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;level[0] =3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0omap2_gpio_module_level_update(s, 0);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0omap2_gpio_module_level_update(s, 1);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x44:	/* GPIO_LEVELDETECT1 */=
<br>+ =C2=A0 =C2=A0case 0x44: =C2=A0/* GPIO_LEVELDETECT1 */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;level[1] =3D value;<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0omap2_gpio_module_level_update(s, 0);<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0omap2_gpio_module_level_update(s, 1);<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x48:	/* GPIO_RISINGDE=
TECT */<br>+ =C2=A0 =C2=A0case 0x48: =C2=A0/* GPIO_RISINGDETECT */<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;edge[0] =3D value;<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x4c:	/* GPIO_F=
ALLINGDETECT */<br>+ =C2=A0 =C2=A0case 0x4c: =C2=A0/* GPIO_FALLINGDETECT */=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;edge[1] =3D value;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x50:	/*=
 GPIO_DEBOUNCENABLE */<br>+ =C2=A0 =C2=A0case 0x50: =C2=A0/* GPIO_DEBOUNCEN=
ABLE */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;debounce =3D value;<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0=
x54:	/* GPIO_DEBOUNCINGTIME */<br>+ =C2=A0 =C2=A0case 0x54: =C2=A0/* GPIO_D=
EBOUNCINGTIME */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;delay =3D value=
;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0c=
ase 0x60:	/* GPIO_CLEARIRQENABLE1 */<br>+ =C2=A0 =C2=A0case 0x60: =C2=A0/* =
GPIO_CLEARIRQENABLE1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;mask[0] =
&amp;=3D ~value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio_module_int=
_update(s, 0);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =
=C2=A0 =C2=A0case 0x64:	/* GPIO_SETIRQENABLE1 */<br>+ =C2=A0 =C2=A0case 0x6=
4: =C2=A0/* GPIO_SETIRQENABLE1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&g=
t;mask[0] |=3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio_modul=
e_int_update(s, 0);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<b=
r>- =C2=A0 =C2=A0case 0x70:	/* GPIO_CLEARIRQENABLE2 */<br>+ =C2=A0 =C2=A0ca=
se 0x70: =C2=A0/* GPIO_CLEARIRQENABLE2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0s-&gt;mask[1] &amp;=3D ~value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0o=
map2_gpio_module_int_update(s, 1);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bre=
ak;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x74:	/* GPIO_SETIREQNEABLE2 */<br>+ =
=C2=A0 =C2=A0case 0x74: =C2=A0/* GPIO_SETIREQNEABLE2 */<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;mask[1] |=3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0omap2_gpio_module_int_update(s, 1);<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x80:	/* GPIO_CLEARWKUENA=
 */<br>+ =C2=A0 =C2=A0case 0x80: =C2=A0/* GPIO_CLEARWKUENA */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;wumask &amp;=3D ~value;<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x84:	/* GPIO_SETW=
KUENA */<br>+ =C2=A0 =C2=A0case 0x84: =C2=A0/* GPIO_SETWKUENA */<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;wumask |=3D value;<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x90:	/* GPIO_CLEARDA=
TAOUT */<br>+ =C2=A0 =C2=A0case 0x90: =C2=A0/* GPIO_CLEARDATAOUT */<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio_module_out_update(s, s-&gt;output=
s &amp; value);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =
=C2=A0 =C2=A0case 0x94:	/* GPIO_SETDATAOUT */<br>+ =C2=A0 =C2=A0case 0x94: =
=C2=A0/* GPIO_SETDATAOUT */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio=
_module_out_update(s, ~s-&gt;outputs &amp; value);<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0break;<br>=C2=A0<br>@@ -541,39 +551,39 @@ static void omap2_gp=
io_module_writep(void *opaque, hwaddr addr,<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=
=A0<br>=C2=A0 =C2=A0 =C2=A0switch (addr &amp; ~3) {<br>- =C2=A0 =C2=A0case =
0x00:	/* GPIO_REVISION */<br>- =C2=A0 =C2=A0case 0x14:	/* GPIO_SYSSTATUS */=
<br>- =C2=A0 =C2=A0case 0x38:	/* GPIO_DATAIN */<br>+ =C2=A0 =C2=A0case 0x00=
: =C2=A0/* GPIO_REVISION */<br>+ =C2=A0 =C2=A0case 0x14: =C2=A0/* GPIO_SYSS=
TATUS */<br>+ =C2=A0 =C2=A0case 0x38: =C2=A0/* GPIO_DATAIN */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0OMAP_RO_REG(addr);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* GPIO_SYSCONFIG */<br=
>- =C2=A0 =C2=A0case 0x1c:	/* GPIO_IRQENABLE1 */<br>- =C2=A0 =C2=A0case 0x2=
0:	/* GPIO_WAKEUPENABLE */<br>- =C2=A0 =C2=A0case 0x2c:	/* GPIO_IRQENABLE2 =
*/<br>- =C2=A0 =C2=A0case 0x30:	/* GPIO_CTRL */<br>- =C2=A0 =C2=A0case 0x34=
:	/* GPIO_OE */<br>- =C2=A0 =C2=A0case 0x3c:	/* GPIO_DATAOUT */<br>- =C2=A0=
 =C2=A0case 0x40:	/* GPIO_LEVELDETECT0 */<br>- =C2=A0 =C2=A0case 0x44:	/* G=
PIO_LEVELDETECT1 */<br>- =C2=A0 =C2=A0case 0x48:	/* GPIO_RISINGDETECT */<br=
>- =C2=A0 =C2=A0case 0x4c:	/* GPIO_FALLINGDETECT */<br>- =C2=A0 =C2=A0case =
0x50:	/* GPIO_DEBOUNCENABLE */<br>- =C2=A0 =C2=A0case 0x54:	/* GPIO_DEBOUNC=
INGTIME */<br>+ =C2=A0 =C2=A0case 0x10: =C2=A0/* GPIO_SYSCONFIG */<br>+ =C2=
=A0 =C2=A0case 0x1c: =C2=A0/* GPIO_IRQENABLE1 */<br>+ =C2=A0 =C2=A0case 0x2=
0: =C2=A0/* GPIO_WAKEUPENABLE */<br>+ =C2=A0 =C2=A0case 0x2c: =C2=A0/* GPIO=
_IRQENABLE2 */<br>+ =C2=A0 =C2=A0case 0x30: =C2=A0/* GPIO_CTRL */<br>+ =C2=
=A0 =C2=A0case 0x34: =C2=A0/* GPIO_OE */<br>+ =C2=A0 =C2=A0case 0x3c: =C2=
=A0/* GPIO_DATAOUT */<br>+ =C2=A0 =C2=A0case 0x40: =C2=A0/* GPIO_LEVELDETEC=
T0 */<br>+ =C2=A0 =C2=A0case 0x44: =C2=A0/* GPIO_LEVELDETECT1 */<br>+ =C2=
=A0 =C2=A0case 0x48: =C2=A0/* GPIO_RISINGDETECT */<br>+ =C2=A0 =C2=A0case 0=
x4c: =C2=A0/* GPIO_FALLINGDETECT */<br>+ =C2=A0 =C2=A0case 0x50: =C2=A0/* G=
PIO_DEBOUNCENABLE */<br>+ =C2=A0 =C2=A0case 0x54: =C2=A0/* GPIO_DEBOUNCINGT=
IME */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cur =3D omap2_gpio_module_read(=
opaque, addr &amp; ~3) &amp;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0~(mask &lt;&lt; ((addr &amp; 3) &lt;&lt; 3));<br>=C2=A0=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* Fall through. =C2=A0*/<br>- =C2=A0=
 =C2=A0case 0x18:	/* GPIO_IRQSTATUS1 */<br>- =C2=A0 =C2=A0case 0x28:	/* GPI=
O_IRQSTATUS2 */<br>- =C2=A0 =C2=A0case 0x60:	/* GPIO_CLEARIRQENABLE1 */<br>=
- =C2=A0 =C2=A0case 0x64:	/* GPIO_SETIRQENABLE1 */<br>- =C2=A0 =C2=A0case 0=
x70:	/* GPIO_CLEARIRQENABLE2 */<br>- =C2=A0 =C2=A0case 0x74:	/* GPIO_SETIRE=
QNEABLE2 */<br>- =C2=A0 =C2=A0case 0x80:	/* GPIO_CLEARWKUENA */<br>- =C2=A0=
 =C2=A0case 0x84:	/* GPIO_SETWKUENA */<br>- =C2=A0 =C2=A0case 0x90:	/* GPIO=
_CLEARDATAOUT */<br>- =C2=A0 =C2=A0case 0x94:	/* GPIO_SETDATAOUT */<br>+ =
=C2=A0 =C2=A0case 0x18: =C2=A0/* GPIO_IRQSTATUS1 */<br>+ =C2=A0 =C2=A0case =
0x28: =C2=A0/* GPIO_IRQSTATUS2 */<br>+ =C2=A0 =C2=A0case 0x60: =C2=A0/* GPI=
O_CLEARIRQENABLE1 */<br>+ =C2=A0 =C2=A0case 0x64: =C2=A0/* GPIO_SETIRQENABL=
E1 */<br>+ =C2=A0 =C2=A0case 0x70: =C2=A0/* GPIO_CLEARIRQENABLE2 */<br>+ =
=C2=A0 =C2=A0case 0x74: =C2=A0/* GPIO_SETIREQNEABLE2 */<br>+ =C2=A0 =C2=A0c=
ase 0x80: =C2=A0/* GPIO_CLEARWKUENA */<br>+ =C2=A0 =C2=A0case 0x84: =C2=A0/=
* GPIO_SETWKUENA */<br>+ =C2=A0 =C2=A0case 0x90: =C2=A0/* GPIO_CLEARDATAOUT=
 */<br>+ =C2=A0 =C2=A0case 0x94: =C2=A0/* GPIO_SETDATAOUT */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0value &lt;&lt;=3D (addr &amp; 3) &lt;&lt; 3;<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpio_module_write(opaque, addr, cur | =
value);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>@@ -616,22 +626,22 @=
@ static uint64_t omap2_gpif_top_read(void *opaque, hwaddr addr, unsigned s=
ize)<br>=C2=A0 =C2=A0 =C2=A0Omap2GpioState *s =3D opaque;<br>=C2=A0<br>=C2=
=A0 =C2=A0 =C2=A0switch (addr) {<br>- =C2=A0 =C2=A0case 0x00:	/* IPGENERICO=
CPSPL_REVISION */<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/* IPGENERICOCPSPL_REV=
ISION */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x18;<br>=C2=A0<br>- =
=C2=A0 =C2=A0case 0x10:	/* IPGENERICOCPSPL_SYSCONFIG */<br>+ =C2=A0 =C2=A0c=
ase 0x10: =C2=A0/* IPGENERICOCPSPL_SYSCONFIG */<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0return s-&gt;autoidle;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x14:	/* =
IPGENERICOCPSPL_SYSSTATUS */<br>+ =C2=A0 =C2=A0case 0x14: =C2=A0/* IPGENERI=
COCPSPL_SYSSTATUS */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x01;<br>=
=C2=A0<br>- =C2=A0 =C2=A0case 0x18:	/* IPGENERICOCPSPL_IRQSTATUS */<br>+ =
=C2=A0 =C2=A0case 0x18: =C2=A0/* IPGENERICOCPSPL_IRQSTATUS */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return 0x00;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x40:=
	/* IPGENERICOCPSPL_GPO */<br>+ =C2=A0 =C2=A0case 0x40: =C2=A0/* IPGENERICO=
CPSPL_GPO */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;gpo;<br>=C2=
=A0<br>- =C2=A0 =C2=A0case 0x50:	/* IPGENERICOCPSPL_GPI */<br>+ =C2=A0 =C2=
=A0case 0x50: =C2=A0/* IPGENERICOCPSPL_GPI */<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0return 0x00;<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>@@ -645,20 +65=
5,21 @@ static void omap2_gpif_top_write(void *opaque, hwaddr addr,<br>=C2=
=A0 =C2=A0 =C2=A0Omap2GpioState *s =3D opaque;<br>=C2=A0<br>=C2=A0 =C2=A0 =
=C2=A0switch (addr) {<br>- =C2=A0 =C2=A0case 0x00:	/* IPGENERICOCPSPL_REVIS=
ION */<br>- =C2=A0 =C2=A0case 0x14:	/* IPGENERICOCPSPL_SYSSTATUS */<br>- =
=C2=A0 =C2=A0case 0x18:	/* IPGENERICOCPSPL_IRQSTATUS */<br>- =C2=A0 =C2=A0c=
ase 0x50:	/* IPGENERICOCPSPL_GPI */<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/* I=
PGENERICOCPSPL_REVISION */<br>+ =C2=A0 =C2=A0case 0x14: =C2=A0/* IPGENERICO=
CPSPL_SYSSTATUS */<br>+ =C2=A0 =C2=A0case 0x18: =C2=A0/* IPGENERICOCPSPL_IR=
QSTATUS */<br>+ =C2=A0 =C2=A0case 0x50: =C2=A0/* IPGENERICOCPSPL_GPI */<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0OMAP_RO_REG(addr);<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* IPGENERIC=
OCPSPL_SYSCONFIG */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; (1 &lt;=
&lt; 1))					/* SOFTRESET */<br>+ =C2=A0 =C2=A0case 0x10: =C2=A0/* IPGENERI=
COCPSPL_SYSCONFIG */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; (1 &lt=
;&lt; 1)) { =C2=A0 =C2=A0 =C2=A0 /* SOFTRESET */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0omap2_gpif_reset(DEVICE(s));<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;autoidle =3D valu=
e &amp; 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=
=A0 =C2=A0case 0x40:	/* IPGENERICOCPSPL_GPO */<br>+ =C2=A0 =C2=A0case 0x40:=
 =C2=A0/* IPGENERICOCPSPL_GPO */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt=
;gpo =3D value &amp; 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=
=A0<br>diff --git a/hw/gpio/zaurus.c b/hw/gpio/zaurus.c<br>index 5884804c58=
..7342440b95 100644<br>--- a/hw/gpio/zaurus.c<br>+++ b/hw/gpio/zaurus.c<br>=
@@ -49,19 +49,20 @@ struct ScoopInfo {<br>=C2=A0 =C2=A0 =C2=A0uint16_t isr;=
<br>=C2=A0};<br>=C2=A0<br>-#define SCOOP_MCR	0x00<br>-#define SCOOP_CDR	0x0=
4<br>-#define SCOOP_CSR	0x08<br>-#define SCOOP_CPR	0x0c<br>-#define SCOOP_C=
CR	0x10<br>-#define SCOOP_IRR_IRM	0x14<br>-#define SCOOP_IMR	0x18<br>-#defi=
ne SCOOP_ISR	0x1c<br>-#define SCOOP_GPCR	0x20<br>-#define SCOOP_GPWR	0x24<b=
r>-#define SCOOP_GPRR	0x28<br>-<br>-static inline void scoop_gpio_handler_u=
pdate(ScoopInfo *s) {<br>+#define SCOOP_MCR =C2=A0 =C2=A0 =C2=A0 0x00<br>+#=
define SCOOP_CDR =C2=A0 =C2=A0 =C2=A0 0x04<br>+#define SCOOP_CSR =C2=A0 =C2=
=A0 =C2=A0 0x08<br>+#define SCOOP_CPR =C2=A0 =C2=A0 =C2=A0 0x0c<br>+#define=
 SCOOP_CCR =C2=A0 =C2=A0 =C2=A0 0x10<br>+#define SCOOP_IRR_IRM =C2=A0 0x14<=
br>+#define SCOOP_IMR =C2=A0 =C2=A0 =C2=A0 0x18<br>+#define SCOOP_ISR =C2=
=A0 =C2=A0 =C2=A0 0x1c<br>+#define SCOOP_GPCR =C2=A0 =C2=A0 =C2=A00x20<br>+=
#define SCOOP_GPWR =C2=A0 =C2=A0 =C2=A00x24<br>+#define SCOOP_GPRR =C2=A0 =
=C2=A0 =C2=A00x28<br>+<br>+static inline void scoop_gpio_handler_update(Sco=
opInfo *s)<br>+{<br>=C2=A0 =C2=A0 =C2=A0uint32_t level, diff;<br>=C2=A0 =C2=
=A0 =C2=A0int bit;<br>=C2=A0 =C2=A0 =C2=A0level =3D s-&gt;gpio_level &amp; =
s-&gt;gpio_dir;<br>@@ -125,8 +126,9 @@ static void scoop_write(void *opaque=
, hwaddr addr,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0 =C2=A0=
 =C2=A0case SCOOP_CPR:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;power =3D=
 value;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 0x80)<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0if (value &amp; 0x80) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;power |=3D 0x8040;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0 =C2=A0 =C2=A0cas=
e SCOOP_CCR:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;ccr =3D value;<br>@=
@ -145,7 +147,7 @@ static void scoop_write(void *opaque, hwaddr addr,<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0scoop_gpio_handler_update(s);<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0 =C2=A0 =C2=A0case SCOOP_GPWR:<b=
r>- =C2=A0 =C2=A0case SCOOP_GPRR:	/* GPRR is probably R/O in real HW */<br>=
+ =C2=A0 =C2=A0case SCOOP_GPRR: =C2=A0 =C2=A0/* GPRR is probably R/O in rea=
l HW */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;gpio_level =3D value &am=
p; s-&gt;gpio_dir;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0scoop_gpio_handler_=
update(s);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>@@ -166,10 +168,1=
1 @@ static void scoop_gpio_set(void *opaque, int line, int level)<br>=C2=
=A0{<br>=C2=A0 =C2=A0 =C2=A0ScoopInfo *s =3D (ScoopInfo *) opaque;<br>=C2=
=A0<br>- =C2=A0 =C2=A0if (level)<br>+ =C2=A0 =C2=A0if (level) {<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;gpio_level |=3D (1 &lt;&lt; line);<br>- =
=C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0s-&gt;gpio_level &amp;=3D ~(1 &lt;&lt; line);<br>+ =C2=A0 =C2=A0}<br=
>=C2=A0}<br>=C2=A0<br>=C2=A0static void scoop_init(Object *obj)<br>@@ -203,=
7 +206,7 @@ static int scoop_post_load(void *opaque, int version_id)<br>=C2=
=A0 =C2=A0 =C2=A0return 0;<br>=C2=A0}<br>=C2=A0<br>-static bool is_version_=
0 (void *opaque, int version_id)<br>+static bool is_version_0(void *opaque,=
 int version_id)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0return version_id =3D=3D=
 0;<br>=C2=A0}<br>@@ -265,7 +268,7 @@ type_init(scoop_register_types)<br>=
=C2=A0<br>=C2=A0/* Write the bootloader parameters memory area. =C2=A0*/<br=
>=C2=A0<br>-#define MAGIC_CHG(a, b, c, d)	((d &lt;&lt; 24) | (c &lt;&lt; 16=
) | (b &lt;&lt; 8) | a)<br>+#define MAGIC_CHG(a, b, c, d) =C2=A0 ((d &lt;&l=
t; 24) | (c &lt;&lt; 16) | (b &lt;&lt; 8) | a)<br>=C2=A0<br>=C2=A0static st=
ruct QEMU_PACKED sl_param_info {<br>=C2=A0 =C2=A0 =C2=A0uint32_t comadj_key=
word;<br>@@ -286,16 +289,16 @@ static struct QEMU_PACKED sl_param_info {<br=
>=C2=A0 =C2=A0 =C2=A0uint32_t phad_keyword;<br>=C2=A0 =C2=A0 =C2=A0int32_t =
phadadj;<br>=C2=A0} zaurus_bootparam =3D {<br>- =C2=A0 =C2=A0.comadj_keywor=
d	=3D MAGIC_CHG(&#39;C&#39;, &#39;M&#39;, &#39;A&#39;, &#39;D&#39;),<br>- =
=C2=A0 =C2=A0.comadj		=3D 125,<br>- =C2=A0 =C2=A0.uuid_keyword	=3D MAGIC_CH=
G(&#39;U&#39;, &#39;U&#39;, &#39;I&#39;, &#39;D&#39;),<br>- =C2=A0 =C2=A0.u=
uid		=3D { -1 },<br>- =C2=A0 =C2=A0.touch_keyword	=3D MAGIC_CHG(&#39;T&#39;=
, &#39;U&#39;, &#39;C&#39;, &#39;H&#39;),<br>- =C2=A0 =C2=A0.touch_xp		=3D =
-1,<br>- =C2=A0 =C2=A0.adadj_keyword	=3D MAGIC_CHG(&#39;B&#39;, &#39;V&#39;=
, &#39;A&#39;, &#39;D&#39;),<br>- =C2=A0 =C2=A0.adadj		=3D -1,<br>- =C2=A0 =
=C2=A0.phad_keyword	=3D MAGIC_CHG(&#39;P&#39;, &#39;H&#39;, &#39;A&#39;, &#=
39;D&#39;),<br>- =C2=A0 =C2=A0.phadadj		=3D 0x01,<br>+ =C2=A0 =C2=A0.comadj=
_keyword =C2=A0 =C2=A0 =3D MAGIC_CHG(&#39;C&#39;, &#39;M&#39;, &#39;A&#39;,=
 &#39;D&#39;),<br>+ =C2=A0 =C2=A0.comadj =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =3D 125,<br>+ =C2=A0 =C2=A0.uuid_keyword =C2=A0 =C2=A0 =C2=A0 =3D M=
AGIC_CHG(&#39;U&#39;, &#39;U&#39;, &#39;I&#39;, &#39;D&#39;),<br>+ =C2=A0 =
=C2=A0.uuid =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =3D { -1 },<br=
>+ =C2=A0 =C2=A0.touch_keyword =C2=A0 =C2=A0 =C2=A0=3D MAGIC_CHG(&#39;T&#39=
;, &#39;U&#39;, &#39;C&#39;, &#39;H&#39;),<br>+ =C2=A0 =C2=A0.touch_xp =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =3D -1,<br>+ =C2=A0 =C2=A0.adadj_keyword =
=C2=A0 =C2=A0 =C2=A0=3D MAGIC_CHG(&#39;B&#39;, &#39;V&#39;, &#39;A&#39;, &#=
39;D&#39;),<br>+ =C2=A0 =C2=A0.adadj =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0=3D -1,<br>+ =C2=A0 =C2=A0.phad_keyword =C2=A0 =C2=A0 =C2=A0 =3D =
MAGIC_CHG(&#39;P&#39;, &#39;H&#39;, &#39;A&#39;, &#39;D&#39;),<br>+ =C2=A0 =
=C2=A0.phadadj =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=3D 0x01,<br>=C2=A0=
};<br>=C2=A0<br>=C2=A0void sl_bootparam_write(hwaddr ptr)<br>diff --git a/h=
w/input/tsc2005.c b/hw/input/tsc2005.c<br>index 941f163d36..05094ab2b1 1006=
44<br>--- a/hw/input/tsc2005.c<br>+++ b/hw/input/tsc2005.c<br>@@ -28,10 +28=
,10 @@<br>=C2=A0#include &quot;migration/vmstate.h&quot;<br>=C2=A0#include =
&quot;trace.h&quot;<br>=C2=A0<br>-#define TSC_CUT_RESOLUTION(value, p)	((va=
lue) &gt;&gt; (16 - (p ? 12 : 10)))<br>+#define TSC_CUT_RESOLUTION(value, p=
) =C2=A0((value) &gt;&gt; (16 - (p ? 12 : 10)))<br>=C2=A0<br>=C2=A0typedef =
struct {<br>- =C2=A0 =C2=A0qemu_irq pint;	/* Combination of the nPENIRQ and=
 DAV signals */<br>+ =C2=A0 =C2=A0qemu_irq pint; =C2=A0/* Combination of th=
e nPENIRQ and DAV signals */<br>=C2=A0 =C2=A0 =C2=A0QEMUTimer *timer;<br>=
=C2=A0 =C2=A0 =C2=A0uint16_t model;<br>=C2=A0<br>@@ -63,7 +63,7 @@ typedef =
struct {<br>=C2=A0} TSC2005State;<br>=C2=A0<br>=C2=A0enum {<br>- =C2=A0 =C2=
=A0TSC_MODE_XYZ_SCAN	=3D 0x0,<br>+ =C2=A0 =C2=A0TSC_MODE_XYZ_SCAN =3D 0x0,<=
br>=C2=A0 =C2=A0 =C2=A0TSC_MODE_XY_SCAN,<br>=C2=A0 =C2=A0 =C2=A0TSC_MODE_X,=
<br>=C2=A0 =C2=A0 =C2=A0TSC_MODE_Y,<br>@@ -82,100 +82,100 @@ enum {<br>=C2=
=A0};<br>=C2=A0<br>=C2=A0static const uint16_t mode_regs[16] =3D {<br>- =C2=
=A0 =C2=A00xf000,	/* X, Y, Z scan */<br>- =C2=A0 =C2=A00xc000,	/* X, Y scan=
 */<br>- =C2=A0 =C2=A00x8000,	/* X */<br>- =C2=A0 =C2=A00x4000,	/* Y */<br>=
- =C2=A0 =C2=A00x3000,	/* Z */<br>- =C2=A0 =C2=A00x0800,	/* AUX */<br>- =C2=
=A0 =C2=A00x0400,	/* TEMP1 */<br>- =C2=A0 =C2=A00x0200,	/* TEMP2 */<br>- =
=C2=A0 =C2=A00x0800,	/* AUX scan */<br>- =C2=A0 =C2=A00x0040,	/* X test */<=
br>- =C2=A0 =C2=A00x0020,	/* Y test */<br>- =C2=A0 =C2=A00x0080,	/* Short-c=
ircuit test */<br>- =C2=A0 =C2=A00x0000,	/* Reserved */<br>- =C2=A0 =C2=A00=
x0000,	/* X+, X- drivers */<br>- =C2=A0 =C2=A00x0000,	/* Y+, Y- drivers */<=
br>- =C2=A0 =C2=A00x0000,	/* Y+, X- drivers */<br>+ =C2=A0 =C2=A00xf000, /*=
 X, Y, Z scan */<br>+ =C2=A0 =C2=A00xc000, /* X, Y scan */<br>+ =C2=A0 =C2=
=A00x8000, /* X */<br>+ =C2=A0 =C2=A00x4000, /* Y */<br>+ =C2=A0 =C2=A00x30=
00, /* Z */<br>+ =C2=A0 =C2=A00x0800, /* AUX */<br>+ =C2=A0 =C2=A00x0400, /=
* TEMP1 */<br>+ =C2=A0 =C2=A00x0200, /* TEMP2 */<br>+ =C2=A0 =C2=A00x0800, =
/* AUX scan */<br>+ =C2=A0 =C2=A00x0040, /* X test */<br>+ =C2=A0 =C2=A00x0=
020, /* Y test */<br>+ =C2=A0 =C2=A00x0080, /* Short-circuit test */<br>+ =
=C2=A0 =C2=A00x0000, /* Reserved */<br>+ =C2=A0 =C2=A00x0000, /* X+, X- dri=
vers */<br>+ =C2=A0 =C2=A00x0000, /* Y+, Y- drivers */<br>+ =C2=A0 =C2=A00x=
0000, /* Y+, X- drivers */<br>=C2=A0};<br>=C2=A0<br>-#define X_TRANSFORM(s)=
			\<br>+#define X_TRANSFORM(s) =C2=A0 =C2=A0 =C2=A0\<br>=C2=A0 =C2=A0 =C2=
=A0((s-&gt;y * s-&gt;tr[0] - s-&gt;x * s-&gt;tr[1]) / s-&gt;tr[2] + s-&gt;t=
r[3])<br>-#define Y_TRANSFORM(s)			\<br>+#define Y_TRANSFORM(s) =C2=A0 =C2=
=A0 =C2=A0\<br>=C2=A0 =C2=A0 =C2=A0((s-&gt;y * s-&gt;tr[4] - s-&gt;x * s-&g=
t;tr[5]) / s-&gt;tr[6] + s-&gt;tr[7])<br>-#define Z1_TRANSFORM(s)			\<br>+#=
define Z1_TRANSFORM(s) =C2=A0 =C2=A0 \<br>=C2=A0 =C2=A0 =C2=A0((400 - ((s)-=
&gt;x &gt;&gt; 7) + ((s)-&gt;pressure &lt;&lt; 10)) &lt;&lt; 4)<br>-#define=
 Z2_TRANSFORM(s)			\<br>+#define Z2_TRANSFORM(s) =C2=A0 =C2=A0 \<br>=C2=A0 =
=C2=A0 =C2=A0((4000 + ((s)-&gt;y &gt;&gt; 7) - ((s)-&gt;pressure &lt;&lt; 1=
0)) &lt;&lt; 4)<br>=C2=A0<br>-#define AUX_VAL				(700 &lt;&lt; 4)	/* +/- 3 =
at 12-bit */<br>-#define TEMP1_VAL			(1264 &lt;&lt; 4)	/* +/- 5 at 12-bit *=
/<br>-#define TEMP2_VAL			(1531 &lt;&lt; 4)	/* +/- 5 at 12-bit */<br>+#defi=
ne AUX_VAL =C2=A0 =C2=A0 =C2=A0 (700 &lt;&lt; 4) =C2=A0/* +/- 3 at 12-bit *=
/<br>+#define TEMP1_VAL =C2=A0 =C2=A0 (1264 &lt;&lt; 4) /* +/- 5 at 12-bit =
*/<br>+#define TEMP2_VAL =C2=A0 =C2=A0 (1531 &lt;&lt; 4) /* +/- 5 at 12-bit=
 */<br>=C2=A0<br>=C2=A0static uint16_t tsc2005_read(TSC2005State *s, int re=
g)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0uint16_t ret;<br>=C2=A0<br>=C2=A0 =C2=
=A0 =C2=A0switch (reg) {<br>- =C2=A0 =C2=A0case 0x0:	/* X */<br>+ =C2=A0 =
=C2=A0case 0x0: /* X */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dav &amp=
;=3D ~mode_regs[TSC_MODE_X];<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return TS=
C_CUT_RESOLUTION(X_TRANSFORM(s), s-&gt;precision) +<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;noise &amp; 3);<br>- =C2=
=A0 =C2=A0case 0x1:	/* Y */<br>+ =C2=A0 =C2=A0case 0x1: /* Y */<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dav &amp;=3D ~mode_regs[TSC_MODE_Y];<br>- =
=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;noise ++;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0=
s-&gt;noise++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return TSC_CUT_RESOLUTI=
ON(Y_TRANSFORM(s), s-&gt;precision) ^<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;noise &amp; 3);<br>- =C2=A0 =C2=A0case 0=
x2:	/* Z1 */<br>+ =C2=A0 =C2=A0case 0x2: /* Z1 */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0s-&gt;dav &amp;=3D 0xdfff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return TSC_CUT_RESOLUTION(Z1_TRANSFORM(s), s-&gt;precision) -<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;noise &amp; 3=
);<br>- =C2=A0 =C2=A0case 0x3:	/* Z2 */<br>+ =C2=A0 =C2=A0case 0x3: /* Z2 *=
/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dav &amp;=3D 0xefff;<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0return TSC_CUT_RESOLUTION(Z2_TRANSFORM(s), s-&g=
t;precision) |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0(s-&gt;noise &amp; 3);<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x4:	/* AUX *=
/<br>+ =C2=A0 =C2=A0case 0x4: /* AUX */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0s-&gt;dav &amp;=3D ~mode_regs[TSC_MODE_AUX];<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0return TSC_CUT_RESOLUTION(AUX_VAL, s-&gt;precision);<br>=C2=A0<br=
>- =C2=A0 =C2=A0case 0x5:	/* TEMP1 */<br>+ =C2=A0 =C2=A0case 0x5: /* TEMP1 =
*/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dav &amp;=3D ~mode_regs[TSC_M=
ODE_TEMP1];<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return TSC_CUT_RESOLUTION(=
TEMP1_VAL, s-&gt;precision) -<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0(s-&gt;noise &amp; 5);<br>- =C2=A0 =C2=A0case 0x6:	/* T=
EMP2 */<br>+ =C2=A0 =C2=A0case 0x6: /* TEMP2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0s-&gt;dav &amp;=3D 0xdfff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s=
-&gt;dav &amp;=3D ~mode_regs[TSC_MODE_TEMP2];<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0return TSC_CUT_RESOLUTION(TEMP2_VAL, s-&gt;precision) ^<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;noise &amp; =
3);<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x7:	/* Status */<br>+ =C2=A0 =C2=A0ca=
se 0x7: /* Status */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D s-&gt;dav=
 | (s-&gt;reset &lt;&lt; 7) | (s-&gt;pdst &lt;&lt; 2) | 0x0;<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dav &amp;=3D ~(mode_regs[TSC_MODE_X_TEST] | m=
ode_regs[TSC_MODE_Y_TEST] |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0mode_regs[TSC_MODE_TS_TEST]=
);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;reset =3D true;<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return ret;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x8: =
=C2=A0 /* AUX high threshold */<br>+ =C2=A0 =C2=A0case 0x8: /* AUX high thr=
eshold */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;aux_thr[1];<br>=
- =C2=A0 =C2=A0case 0x9: =C2=A0 /* AUX low threshold */<br>+ =C2=A0 =C2=A0c=
ase 0x9: /* AUX low threshold */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retur=
n s-&gt;aux_thr[0];<br>=C2=A0<br>- =C2=A0 =C2=A0case 0xa: =C2=A0 /* TEMP hi=
gh threshold */<br>+ =C2=A0 =C2=A0case 0xa: /* TEMP high threshold */<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;temp_thr[1];<br>- =C2=A0 =C2=
=A0case 0xb: =C2=A0 /* TEMP low threshold */<br>+ =C2=A0 =C2=A0case 0xb: /*=
 TEMP low threshold */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;te=
mp_thr[0];<br>=C2=A0<br>- =C2=A0 =C2=A0case 0xc:	/* CFR0 */<br>+ =C2=A0 =C2=
=A0case 0xc: /* CFR0 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return (s-&gt;=
pressure &lt;&lt; 15) | ((!s-&gt;busy) &lt;&lt; 14) |<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;nextprecision &lt;&lt; 13) =
| s-&gt;timing[0]; <br>- =C2=A0 =C2=A0case 0xd:	/* CFR1 */<br>+ =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;nextprecision &lt;&lt; =
13) | s-&gt;timing[0];<br>+ =C2=A0 =C2=A0case 0xd: /* CFR1 */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;timing[1];<br>- =C2=A0 =C2=A0case 0xe:=
	/* CFR2 */<br>+ =C2=A0 =C2=A0case 0xe: /* CFR2 */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0return (s-&gt;pin_func &lt;&lt; 14) | s-&gt;filter;<br>=C2=A0<=
br>- =C2=A0 =C2=A0case 0xf:	/* Function select status */<br>+ =C2=A0 =C2=A0=
case 0xf: /* Function select status */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return s-&gt;function &gt;=3D 0 ? 1 &lt;&lt; s-&gt;function : 0;<br>=C2=
=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>@@ -200,13 +200,14 @@ static void tsc2005_w=
rite(TSC2005State *s, int reg, uint16_t data)<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0s-&gt;temp_thr[0] =3D data;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0xc:	/* CFR0 */<br>+ =C2=A0 =C2=A0c=
ase 0xc: /* CFR0 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;host_mode =
=3D (data &gt;&gt; 15) !=3D 0;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&=
gt;enabled !=3D !(data &amp; 0x4000)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;enabled =3D !(data &amp; 0x4000);<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0trace_tsc2005_sense(s-&gt;enabled ? &quot=
;enabled&quot; : &quot;disabled&quot;);<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0if (s-&gt;busy &amp;&amp; !s-&gt;enabled)<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;busy &amp;&amp; !s-&gt;enabled) {<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0timer_del(s-&=
gt;timer);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;busy =3D s-&gt;busy &amp;&amp; s-&=
gt;enabled;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0s-&gt;nextprecision =3D (data &gt;&gt; 13) &amp; 1;<br>@@ -216=
,10 +217,10 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t=
 data)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;tsc2005_write: illegal conversion c=
lock setting\n&quot;);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=A0case 0xd:	/* CFR1 */<br>+ =
=C2=A0 =C2=A0case 0xd: /* CFR1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&g=
t;timing[1] =3D data &amp; 0xf07;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0brea=
k;<br>- =C2=A0 =C2=A0case 0xe:	/* CFR2 */<br>+ =C2=A0 =C2=A0case 0xe: /* CF=
R2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;pin_func =3D (data &gt;&gt=
; 14) &amp; 3;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;filter =3D data &=
amp; 0x3fff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>@@ -258,10 +259=
,12 @@ static void tsc2005_pin_update(TSC2005State *s)<br>=C2=A0 =C2=A0 =C2=
=A0switch (s-&gt;nextfunction) {<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_XYZ_S=
CAN:<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_XY_SCAN:<br>- =C2=A0 =C2=A0 =C2=
=A0 =C2=A0if (!s-&gt;host_mode &amp;&amp; s-&gt;dav)<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0if (!s-&gt;host_mode &amp;&amp; s-&gt;dav) {<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;enabled =3D false;<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0if (!s-&gt;pressure)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!s-&gt;pressure) {<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* Fall through */<br>=C2=A0 =C2=A0 =C2=A0ca=
se TSC_MODE_AUX_SCAN:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>@@ -26=
9,8 +272,9 @@ static void tsc2005_pin_update(TSC2005State *s)<br>=C2=A0 =C2=
=A0 =C2=A0case TSC_MODE_X:<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_Y:<br>=C2=
=A0 =C2=A0 =C2=A0case TSC_MODE_Z:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!s-&g=
t;pressure)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!s-&gt;pressure) {<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* Fall through */<br>=C2=
=A0 =C2=A0 =C2=A0case TSC_MODE_AUX:<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_TE=
MP1:<br>@@ -278,8 +282,9 @@ static void tsc2005_pin_update(TSC2005State *s)=
<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_X_TEST:<br>=C2=A0 =C2=A0 =C2=A0case T=
SC_MODE_Y_TEST:<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_TS_TEST:<br>- =C2=A0 =
=C2=A0 =C2=A0 =C2=A0if (s-&gt;dav)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&g=
t;dav) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;enabled =
=3D false;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0break;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_RESERVED:<br>@=
@ -290,13 +295,14 @@ static void tsc2005_pin_update(TSC2005State *s)<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<b=
r>- =C2=A0 =C2=A0if (!s-&gt;enabled || s-&gt;busy)<br>+ =C2=A0 =C2=A0if (!s=
-&gt;enabled || s-&gt;busy) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<=
br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0s-&gt;busy =3D true;<b=
r>=C2=A0 =C2=A0 =C2=A0s-&gt;precision =3D s-&gt;nextprecision;<br>=C2=A0 =
=C2=A0 =C2=A0s-&gt;function =3D s-&gt;nextfunction;<br>- =C2=A0 =C2=A0s-&gt=
;pdst =3D !s-&gt;pnd0;	/* Synchronised on internal clock */<br>+ =C2=A0 =C2=
=A0s-&gt;pdst =3D !s-&gt;pnd0; /* Synchronised on internal clock */<br>=C2=
=A0 =C2=A0 =C2=A0expires =3D qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(NANOSECONDS_PER_SECOND &gt;&gt; 7);<br>=C2=
=A0 =C2=A0 =C2=A0timer_mod(s-&gt;timer, expires);<br>@@ -331,7 +337,7 @@ st=
atic uint8_t tsc2005_txrx_word(void *opaque, uint8_t value)<br>=C2=A0 =C2=
=A0 =C2=A0TSC2005State *s =3D opaque;<br>=C2=A0 =C2=A0 =C2=A0uint32_t ret =
=3D 0;<br>=C2=A0<br>- =C2=A0 =C2=A0switch (s-&gt;state ++) {<br>+ =C2=A0 =
=C2=A0switch (s-&gt;state++) {<br>=C2=A0 =C2=A0 =C2=A0case 0:<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 0x80) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0/* Command */<br>@@ -343,8 +349,9 @@ static uint8_t=
 tsc2005_txrx_word(void *opaque, uint8_t value)<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;enabled !=3D !(value &amp; =
1)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0s-&gt;enabled =3D !(value &amp; 1);<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0trace_tsc2005_sense(s-&=
gt;enabled ? &quot;enabled&quot; : &quot;disabled&quot;);<br>- =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;busy &=
amp;&amp; !s-&gt;enabled)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;busy &amp;&amp; !s-&gt;enabled) {<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0timer_del(s-&gt;timer);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;busy =3D s-&gt;busy &=
amp;&amp; s-&gt;enabled;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0tsc2005_pin_update(s);<br>@@ -368,10 +375,11 @@ static uint8_t ts=
c2005_txrx_word(void *opaque, uint8_t value)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0break;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0case 1:<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0if (s-&gt;command)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;c=
ommand) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D (s-&gt=
;data &gt;&gt; 8) &amp; 0xff;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0s-&gt;data |=3D value &lt;&lt; 8;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>=C2=A0 =C2=A0=
 =C2=A0case 2:<br>@@ -409,8 +417,9 @@ static void tsc2005_timer_tick(void *=
opaque)<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0/* Timer ticked -- a set of conver=
sions has been finished. =C2=A0*/<br>=C2=A0<br>- =C2=A0 =C2=A0if (!s-&gt;bu=
sy)<br>+ =C2=A0 =C2=A0if (!s-&gt;busy) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return;<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0s-&gt;busy =
=3D false;<br>=C2=A0 =C2=A0 =C2=A0s-&gt;dav |=3D mode_regs[s-&gt;function];=
<br>@@ -435,8 +444,9 @@ static void tsc2005_touchscreen_event(void *opaque,=
<br>=C2=A0 =C2=A0 =C2=A0 * signaling TS events immediately, but for now we =
simulate<br>=C2=A0 =C2=A0 =C2=A0 * the first conversion delay for sake of c=
orrectness.<br>=C2=A0 =C2=A0 =C2=A0 */<br>- =C2=A0 =C2=A0if (p !=3D s-&gt;p=
ressure)<br>+ =C2=A0 =C2=A0if (p !=3D s-&gt;pressure) {<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0tsc2005_pin_update(s);<br>+ =C2=A0 =C2=A0}<br>=C2=A0}<b=
r>=C2=A0<br>=C2=A0static int tsc2005_post_load(void *opaque, int version_id=
)<br>diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c<br>index c4e32c7a=
42..b94e346af1 100644<br>--- a/hw/input/tsc210x.c<br>+++ b/hw/input/tsc210x=
.c<br>@@ -33,13 +33,13 @@<br>=C2=A0#include &quot;migration/vmstate.h&quot;=
<br>=C2=A0#include &quot;qapi/error.h&quot;<br>=C2=A0<br>-#define TSC_DATA_=
REGISTERS_PAGE		0x0<br>-#define TSC_CONTROL_REGISTERS_PAGE	0x1<br>-#define =
TSC_AUDIO_REGISTERS_PAGE	0x2<br>+#define TSC_DATA_REGISTERS_PAGE =C2=A0 =C2=
=A0 0x0<br>+#define TSC_CONTROL_REGISTERS_PAGE =C2=A00x1<br>+#define TSC_AU=
DIO_REGISTERS_PAGE =C2=A0 =C2=A00x2<br>=C2=A0<br>=C2=A0#define TSC_VERBOSE<=
br>=C2=A0<br>-#define TSC_CUT_RESOLUTION(value, p)	((value) &gt;&gt; (16 - =
resolution[p]))<br>+#define TSC_CUT_RESOLUTION(value, p) =C2=A0((value) &gt=
;&gt; (16 - resolution[p]))<br>=C2=A0<br>=C2=A0typedef struct {<br>=C2=A0 =
=C2=A0 =C2=A0qemu_irq pint;<br>@@ -105,60 +105,60 @@ typedef struct {<br>=
=C2=A0<br>=C2=A0static const int resolution[4] =3D { 12, 8, 10, 12 };<br>=
=C2=A0<br>-#define TSC_MODE_NO_SCAN	0x0<br>-#define TSC_MODE_XY_SCAN	0x1<br=
>-#define TSC_MODE_XYZ_SCAN	0x2<br>-#define TSC_MODE_X		0x3<br>-#define TSC=
_MODE_Y		0x4<br>-#define TSC_MODE_Z		0x5<br>-#define TSC_MODE_BAT1		0x6<br>=
-#define TSC_MODE_BAT2		0x7<br>-#define TSC_MODE_AUX		0x8<br>-#define TSC_M=
ODE_AUX_SCAN	0x9<br>-#define TSC_MODE_TEMP1		0xa<br>-#define TSC_MODE_PORT_=
SCAN	0xb<br>-#define TSC_MODE_TEMP2		0xc<br>-#define TSC_MODE_XX_DRV		0xd<b=
r>-#define TSC_MODE_YY_DRV		0xe<br>-#define TSC_MODE_YX_DRV		0xf<br>+#defin=
e TSC_MODE_NO_SCAN =C2=A0 =C2=A00x0<br>+#define TSC_MODE_XY_SCAN =C2=A0 =C2=
=A00x1<br>+#define TSC_MODE_XYZ_SCAN =C2=A0 0x2<br>+#define TSC_MODE_X =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00x3<br>+#define TSC_MODE_Y =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A00x4<br>+#define TSC_MODE_Z =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A00x5<br>+#define TSC_MODE_BAT1 =C2=A0 =C2=A0 =C2=A0 0x6<br>+#define TSC_M=
ODE_BAT2 =C2=A0 =C2=A0 =C2=A0 0x7<br>+#define TSC_MODE_AUX =C2=A0 =C2=A0 =
=C2=A0 =C2=A00x8<br>+#define TSC_MODE_AUX_SCAN =C2=A0 0x9<br>+#define TSC_M=
ODE_TEMP1 =C2=A0 =C2=A0 =C2=A00xa<br>+#define TSC_MODE_PORT_SCAN =C2=A00xb<=
br>+#define TSC_MODE_TEMP2 =C2=A0 =C2=A0 =C2=A00xc<br>+#define TSC_MODE_XX_=
DRV =C2=A0 =C2=A0 0xd<br>+#define TSC_MODE_YY_DRV =C2=A0 =C2=A0 0xe<br>+#de=
fine TSC_MODE_YX_DRV =C2=A0 =C2=A0 0xf<br>=C2=A0<br>=C2=A0static const uint=
16_t mode_regs[16] =3D {<br>- =C2=A0 =C2=A00x0000,	/* No scan */<br>- =C2=
=A0 =C2=A00x0600,	/* X, Y scan */<br>- =C2=A0 =C2=A00x0780,	/* X, Y, Z scan=
 */<br>- =C2=A0 =C2=A00x0400,	/* X */<br>- =C2=A0 =C2=A00x0200,	/* Y */<br>=
- =C2=A0 =C2=A00x0180,	/* Z */<br>- =C2=A0 =C2=A00x0040,	/* BAT1 */<br>- =
=C2=A0 =C2=A00x0030,	/* BAT2 */<br>- =C2=A0 =C2=A00x0010,	/* AUX */<br>- =
=C2=A0 =C2=A00x0010,	/* AUX scan */<br>- =C2=A0 =C2=A00x0004,	/* TEMP1 */<b=
r>- =C2=A0 =C2=A00x0070,	/* Port scan */<br>- =C2=A0 =C2=A00x0002,	/* TEMP2=
 */<br>- =C2=A0 =C2=A00x0000,	/* X+, X- drivers */<br>- =C2=A0 =C2=A00x0000=
,	/* Y+, Y- drivers */<br>- =C2=A0 =C2=A00x0000,	/* Y+, X- drivers */<br>+ =
=C2=A0 =C2=A00x0000, /* No scan */<br>+ =C2=A0 =C2=A00x0600, /* X, Y scan *=
/<br>+ =C2=A0 =C2=A00x0780, /* X, Y, Z scan */<br>+ =C2=A0 =C2=A00x0400, /*=
 X */<br>+ =C2=A0 =C2=A00x0200, /* Y */<br>+ =C2=A0 =C2=A00x0180, /* Z */<b=
r>+ =C2=A0 =C2=A00x0040, /* BAT1 */<br>+ =C2=A0 =C2=A00x0030, /* BAT2 */<br=
>+ =C2=A0 =C2=A00x0010, /* AUX */<br>+ =C2=A0 =C2=A00x0010, /* AUX scan */<=
br>+ =C2=A0 =C2=A00x0004, /* TEMP1 */<br>+ =C2=A0 =C2=A00x0070, /* Port sca=
n */<br>+ =C2=A0 =C2=A00x0002, /* TEMP2 */<br>+ =C2=A0 =C2=A00x0000, /* X+,=
 X- drivers */<br>+ =C2=A0 =C2=A00x0000, /* Y+, Y- drivers */<br>+ =C2=A0 =
=C2=A00x0000, /* Y+, X- drivers */<br>=C2=A0};<br>=C2=A0<br>-#define X_TRAN=
SFORM(s)			\<br>+#define X_TRANSFORM(s) =C2=A0 =C2=A0 =C2=A0\<br>=C2=A0 =C2=
=A0 =C2=A0((s-&gt;y * s-&gt;tr[0] - s-&gt;x * s-&gt;tr[1]) / s-&gt;tr[2] + =
s-&gt;tr[3])<br>-#define Y_TRANSFORM(s)			\<br>+#define Y_TRANSFORM(s) =C2=
=A0 =C2=A0 =C2=A0\<br>=C2=A0 =C2=A0 =C2=A0((s-&gt;y * s-&gt;tr[4] - s-&gt;x=
 * s-&gt;tr[5]) / s-&gt;tr[6] + s-&gt;tr[7])<br>-#define Z1_TRANSFORM(s)			=
\<br>+#define Z1_TRANSFORM(s) =C2=A0 =C2=A0 \<br>=C2=A0 =C2=A0 =C2=A0((400 =
- ((s)-&gt;x &gt;&gt; 7) + ((s)-&gt;pressure &lt;&lt; 10)) &lt;&lt; 4)<br>-=
#define Z2_TRANSFORM(s)			\<br>+#define Z2_TRANSFORM(s) =C2=A0 =C2=A0 \<br>=
=C2=A0 =C2=A0 =C2=A0((4000 + ((s)-&gt;y &gt;&gt; 7) - ((s)-&gt;pressure &lt=
;&lt; 10)) &lt;&lt; 4)<br>=C2=A0<br>-#define BAT1_VAL			0x8660<br>-#define =
BAT2_VAL			0x0000<br>-#define AUX1_VAL			0x35c0<br>-#define AUX2_VAL			0xff=
ff<br>-#define TEMP1_VAL			0x8c70<br>-#define TEMP2_VAL			0xa5b0<br>+#defin=
e BAT1_VAL =C2=A0 =C2=A0 =C2=A00x8660<br>+#define BAT2_VAL =C2=A0 =C2=A0 =
=C2=A00x0000<br>+#define AUX1_VAL =C2=A0 =C2=A0 =C2=A00x35c0<br>+#define AU=
X2_VAL =C2=A0 =C2=A0 =C2=A00xffff<br>+#define TEMP1_VAL =C2=A0 =C2=A0 0x8c7=
0<br>+#define TEMP2_VAL =C2=A0 =C2=A0 0xa5b0<br>=C2=A0<br>-#define TSC_POWE=
ROFF_DELAY		50<br>-#define TSC_SOFTSTEP_DELAY		50<br>+#define TSC_POWEROFF_=
DELAY =C2=A0 =C2=A050<br>+#define TSC_SOFTSTEP_DELAY =C2=A0 =C2=A050<br>=C2=
=A0<br>=C2=A0static void tsc210x_reset(TSC210xState *s)<br>=C2=A0{<br>@@ -2=
24,34 +224,34 @@ typedef struct {<br>=C2=A0 =C2=A0 =C2=A0int fsref;<br>=C2=
=A0} TSC210xRateInfo;<br>=C2=A0<br>-/* =C2=A0{ rate, =C2=A0 dsor, fsref }	*=
/<br>+/* =C2=A0{ rate, =C2=A0 dsor, fsref } */<br>=C2=A0static const TSC210=
xRateInfo tsc2102_rates[] =3D {<br>=C2=A0 =C2=A0 =C2=A0/* Fsref / 6.0 */<br=
>- =C2=A0 =C2=A0{ 7350,	63,	1 },<br>- =C2=A0 =C2=A0{ 8000,	63,	0 },<br>+ =
=C2=A0 =C2=A0{ 7350, 63, 1 },<br>+ =C2=A0 =C2=A0{ 8000, 63, 0 },<br>=C2=A0 =
=C2=A0 =C2=A0/* Fsref / 6.0 */<br>- =C2=A0 =C2=A0{ 7350,	54,	1 },<br>- =C2=
=A0 =C2=A0{ 8000,	54,	0 },<br>+ =C2=A0 =C2=A0{ 7350, 54, 1 },<br>+ =C2=A0 =
=C2=A0{ 8000, 54, 0 },<br>=C2=A0 =C2=A0 =C2=A0/* Fsref / 5.0 */<br>- =C2=A0=
 =C2=A0{ 8820,	45,	1 },<br>- =C2=A0 =C2=A0{ 9600,	45,	0 },<br>+ =C2=A0 =C2=
=A0{ 8820, 45, 1 },<br>+ =C2=A0 =C2=A0{ 9600, 45, 0 },<br>=C2=A0 =C2=A0 =C2=
=A0/* Fsref / 4.0 */<br>- =C2=A0 =C2=A0{ 11025,	36,	1 },<br>- =C2=A0 =C2=A0=
{ 12000,	36,	0 },<br>+ =C2=A0 =C2=A0{ 11025, 36, 1 },<br>+ =C2=A0 =C2=A0{ 1=
2000, 36, 0 },<br>=C2=A0 =C2=A0 =C2=A0/* Fsref / 3.0 */<br>- =C2=A0 =C2=A0{=
 14700,	27,	1 },<br>- =C2=A0 =C2=A0{ 16000,	27,	0 },<br>+ =C2=A0 =C2=A0{ 14=
700, 27, 1 },<br>+ =C2=A0 =C2=A0{ 16000, 27, 0 },<br>=C2=A0 =C2=A0 =C2=A0/*=
 Fsref / 2.0 */<br>- =C2=A0 =C2=A0{ 22050,	18,	1 },<br>- =C2=A0 =C2=A0{ 240=
00,	18,	0 },<br>+ =C2=A0 =C2=A0{ 22050, 18, 1 },<br>+ =C2=A0 =C2=A0{ 24000,=
 18, 0 },<br>=C2=A0 =C2=A0 =C2=A0/* Fsref / 1.5 */<br>- =C2=A0 =C2=A0{ 2940=
0,	9,	1 },<br>- =C2=A0 =C2=A0{ 32000,	9,	0 },<br>+ =C2=A0 =C2=A0{ 29400, 9,=
 1 },<br>+ =C2=A0 =C2=A0{ 32000, 9, 0 },<br>=C2=A0 =C2=A0 =C2=A0/* Fsref */=
<br>- =C2=A0 =C2=A0{ 44100,	0,	1 },<br>- =C2=A0 =C2=A0{ 48000,	0,	0 },<br>+=
 =C2=A0 =C2=A0{ 44100, 0, 1 },<br>+ =C2=A0 =C2=A0{ 48000, 0, 0 },<br>=C2=A0=
<br>- =C2=A0 =C2=A0{ 0,	0, 	0 },<br>+ =C2=A0 =C2=A0{ 0, 0, 0 },<br>=C2=A0};=
<br>=C2=A0<br>=C2=A0static inline void tsc210x_out_flush(TSC210xState *s, i=
nt len)<br>@@ -259,12 +259,14 @@ static inline void tsc210x_out_flush(TSC21=
0xState *s, int len)<br>=C2=A0 =C2=A0 =C2=A0uint8_t *data =3D s-&gt;codec.o=
ut.fifo + s-&gt;codec.out.start;<br>=C2=A0 =C2=A0 =C2=A0uint8_t *end =3D da=
ta + len;<br>=C2=A0<br>- =C2=A0 =C2=A0while (data &lt; end)<br>+ =C2=A0 =C2=
=A0while (data &lt; end) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0data +=3D A=
UD_write(s-&gt;dac_voice[0], data, end - data) ?: (end - data);<br>+ =C2=A0=
 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0s-&gt;codec.out.len -=3D len;<br>=
- =C2=A0 =C2=A0if (s-&gt;codec.out.len)<br>+ =C2=A0 =C2=A0if (s-&gt;codec.o=
ut.len) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0memmove(s-&gt;codec.out.fifo=
, end, s-&gt;codec.out.len);<br>+ =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0s-&=
gt;codec.out.start =3D 0;<br>=C2=A0}<br>=C2=A0<br>@@ -285,11 +287,12 @@ sta=
tic void tsc2102_audio_rate_update(TSC210xState *s)<br>=C2=A0<br>=C2=A0 =C2=
=A0 =C2=A0s-&gt;codec.tx_rate =3D 0;<br>=C2=A0 =C2=A0 =C2=A0s-&gt;codec.rx_=
rate =3D 0;<br>- =C2=A0 =C2=A0if (s-&gt;dac_power &amp; (1 &lt;&lt; 15))			=
	/* PWDNC */<br>+ =C2=A0 =C2=A0if (s-&gt;dac_power &amp; (1 &lt;&lt; 15)) {=
 =C2=A0 =C2=A0 /* PWDNC */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=
+ =C2=A0 }<br>=C2=A0<br>- =C2=A0 =C2=A0for (rate =3D tsc2102_rates; rate-&g=
t;rate; rate ++)<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (rate-&gt;dsor =3D=3D (=
s-&gt;audio_ctrl1 &amp; 0x3f) &amp;&amp;		/* DACFS */<br>+ =C2=A0 =C2=A0for=
 (rate =3D tsc2102_rates; rate-&gt;rate; rate++)<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0if (rate-&gt;dsor =3D=3D (s-&gt;audio_ctrl1 &amp; 0x3f) &amp;&amp; =
=C2=A0 =C2=A0/* DACFS */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rate-&gt;fsref =3D=3D ((s-&gt;=
audio_ctrl3 &gt;&gt; 13) &amp; 1))/* REFFS */<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0 =C2=A0 =C2=A0if (!rate-&gt;rate) {=
<br>@@ -315,10 +318,11 @@ static void tsc2102_audio_output_update(TSC210xSt=
ate *s)<br>=C2=A0 =C2=A0 =C2=A0s-&gt;codec.cts =3D 0;<br>=C2=A0<br>=C2=A0 =
=C2=A0 =C2=A0enable =3D<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(~s-&=
gt;dac_power &amp; (1 &lt;&lt; 15)) &amp;&amp;			/* PWDNC */<br>- =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(~s-&gt;dac_power &amp; (1 &lt;&lt; 10));=
			/* DAPWDN */<br>- =C2=A0 =C2=A0if (!enable || !s-&gt;codec.tx_rate)<br>+=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(~s-&gt;dac_power &amp; (1 &lt;&l=
t; 15)) &amp;&amp; =C2=A0 =C2=A0 /* PWDNC */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0(~s-&gt;dac_power &amp; (1 &lt;&lt; 10)); =C2=A0 =C2=A0 =
=C2=A0 /* DAPWDN */<br>+ =C2=A0 =C2=A0if (!enable || !s-&gt;codec.tx_rate) =
{<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>+ =C2=A0 =C2=A0}<br>=C2=
=A0<br>=C2=A0 =C2=A0 =C2=A0/* Force our own sampling rate even in slave DAC=
 mode */<br>=C2=A0 =C2=A0 =C2=A0fmt.endianness =3D 0;<br>@@ -337,28 +341,28=
 @@ static void tsc2102_audio_output_update(TSC210xState *s)<br>=C2=A0stati=
c uint16_t tsc2102_data_register_read(TSC210xState *s, int reg)<br>=C2=A0{<=
br>=C2=A0 =C2=A0 =C2=A0switch (reg) {<br>- =C2=A0 =C2=A0case 0x00:	/* X */<=
br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/* X */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0s-&gt;dav &amp;=3D 0xfbff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retur=
n TSC_CUT_RESOLUTION(X_TRANSFORM(s), s-&gt;precision) +<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;noise &amp; 3);<br>=
=C2=A0<br>- =C2=A0 =C2=A0case 0x01:	/* Y */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0s-&gt;noise ++;<br>+ =C2=A0 =C2=A0case 0x01: =C2=A0/* Y */<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;noise++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&=
gt;dav &amp;=3D 0xfdff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return TSC_CUT=
_RESOLUTION(Y_TRANSFORM(s), s-&gt;precision) ^<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;noise &amp; 3);<br>=C2=A0<br>-=
 =C2=A0 =C2=A0case 0x02:	/* Z1 */<br>+ =C2=A0 =C2=A0case 0x02: =C2=A0/* Z1 =
*/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dav &amp;=3D 0xfeff;<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return TSC_CUT_RESOLUTION(Z1_TRANSFORM(s), s=
-&gt;precision) -<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0(s-&gt;noise &amp; 3);<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x03:	/* =
Z2 */<br>+ =C2=A0 =C2=A0case 0x03: =C2=A0/* Z2 */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0s-&gt;dav &amp;=3D 0xff7f;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return TSC_CUT_RESOLUTION(Z2_TRANSFORM(s), s-&gt;precision) |<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;noise &amp; 3=
);<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x04:	/* KPData */<br>+ =C2=A0 =C2=A0ca=
se 0x04: =C2=A0/* KPData */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt=
;model &amp; 0xff00) =3D=3D 0x2300) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0if (s-&gt;kb.intr &amp;&amp; (s-&gt;kb.mode &amp; 2)) {<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;kb.intr=
 =3D 0;<br>@@ -369,34 +373,34 @@ static uint16_t tsc2102_data_register_read=
(TSC210xState *s, int reg)<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0r=
eturn 0xffff;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x05:	/* BAT1 */<br>+ =C2=A0=
 =C2=A0case 0x05: =C2=A0/* BAT1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&=
gt;dav &amp;=3D 0xffbf;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return TSC_CUT=
_RESOLUTION(BAT1_VAL, s-&gt;precision) +<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;noise &amp; 6);<br>=C2=A0<br>- =C2=A0=
 =C2=A0case 0x06:	/* BAT2 */<br>+ =C2=A0 =C2=A0case 0x06: =C2=A0/* BAT2 */<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dav &amp;=3D 0xffdf;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0return TSC_CUT_RESOLUTION(BAT2_VAL, s-&gt;precis=
ion);<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x07:	/* AUX1 */<br>+ =C2=A0 =C2=A0c=
ase 0x07: =C2=A0/* AUX1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dav &=
amp;=3D 0xffef;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return TSC_CUT_RESOLUT=
ION(AUX1_VAL, s-&gt;precision);<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x08:	/* A=
UX2 */<br>+ =C2=A0 =C2=A0case 0x08: =C2=A0/* AUX2 */<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;dav &amp;=3D 0xfff7;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0return 0xffff;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x09:	/* TEMP1 */<br>=
+ =C2=A0 =C2=A0case 0x09: =C2=A0/* TEMP1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0s-&gt;dav &amp;=3D 0xfffb;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retur=
n TSC_CUT_RESOLUTION(TEMP1_VAL, s-&gt;precision) -<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;noise &amp; 5);<br>=C2=A0<b=
r>- =C2=A0 =C2=A0case 0x0a:	/* TEMP2 */<br>+ =C2=A0 =C2=A0case 0x0a: =C2=A0=
/* TEMP2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dav &amp;=3D 0xfffd;=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return TSC_CUT_RESOLUTION(TEMP2_VAL, =
s-&gt;precision) ^<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0(s-&gt;noise &amp; 3);<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x0b:	/* =
DAC */<br>+ =C2=A0 =C2=A0case 0x0b: =C2=A0/* DAC */<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0s-&gt;dav &amp;=3D 0xfffe;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return 0xffff;<br>=C2=A0<br>@@ -413,11 +417,11 @@ static uint16_t tsc210=
2_control_register_read(<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0TSC210xState *s, int reg)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=
=A0switch (reg) {<br>- =C2=A0 =C2=A0case 0x00:	/* TSC ADC */<br>+ =C2=A0 =
=C2=A0case 0x00: =C2=A0/* TSC ADC */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0r=
eturn (s-&gt;pressure &lt;&lt; 15) | ((!s-&gt;busy) &lt;&lt; 14) |<br>- =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;nextfunction &lt=
;&lt; 10) | (s-&gt;nextprecision &lt;&lt; 8) | s-&gt;filter; <br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;nextfunction &lt;&lt=
; 10) | (s-&gt;nextprecision &lt;&lt; 8) | s-&gt;filter;<br>=C2=A0<br>- =C2=
=A0 =C2=A0case 0x01:	/* Status / Keypad Control */<br>+ =C2=A0 =C2=A0case 0=
x01: =C2=A0/* Status / Keypad Control */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0if ((s-&gt;model &amp; 0xff00) =3D=3D 0x2100)<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0return (s-&gt;pin_func &lt;&lt; 14) | ((!s-&gt;e=
nabled) &lt;&lt; 13) |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;host_mode &lt;&lt; 12) | ((!!s-&gt;dav) &=
lt;&lt; 11) | s-&gt;dav;<br>@@ -425,29 +429,32 @@ static uint16_t tsc2102_c=
ontrol_register_read(<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0re=
turn (s-&gt;kb.intr &lt;&lt; 15) | ((s-&gt;kb.scan || !s-&gt;kb.down) &lt;&=
lt; 14) |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0(s-&gt;kb.debounce &lt;&lt; 11);<br>=C2=A0<br>- =C2=A0 =C2=A0=
case 0x02:	/* DAC Control */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;mod=
el &amp; 0xff00) =3D=3D 0x2300)<br>+ =C2=A0 =C2=A0case 0x02: =C2=A0/* DAC C=
ontrol */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;model &amp; 0xff00) =
=3D=3D 0x2300) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return =
s-&gt;dac_power &amp; 0x8000;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0goto bad_reg;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>- =
=C2=A0 =C2=A0case 0x03:	/* Reference */<br>+ =C2=A0 =C2=A0case 0x03: =C2=A0=
/* Reference */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;ref;<br>=
=C2=A0<br>- =C2=A0 =C2=A0case 0x04:	/* Reset */<br>+ =C2=A0 =C2=A0case 0x04=
: =C2=A0/* Reset */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0xffff;<br>=
=C2=A0<br>- =C2=A0 =C2=A0case 0x05:	/* Configuration */<br>+ =C2=A0 =C2=A0c=
ase 0x05: =C2=A0/* Configuration */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0re=
turn s-&gt;timing;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x06:	/* Secondary conf=
iguration */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;model &amp; 0xff00)=
 =3D=3D 0x2100)<br>+ =C2=A0 =C2=A0case 0x06: =C2=A0/* Secondary configurati=
on */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;model &amp; 0xff00) =3D=3D=
 0x2100) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto bad_reg;=
<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ret=
urn ((!s-&gt;dav) &lt;&lt; 15) | ((s-&gt;kb.mode &amp; 1) &lt;&lt; 14) | s-=
&gt;pll[2];<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* Keypad Mask */<br>- =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;model &amp; 0xff00) =3D=3D 0x2100)<br=
>+ =C2=A0 =C2=A0case 0x10: =C2=A0/* Keypad Mask */<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0if ((s-&gt;model &amp; 0xff00) =3D=3D 0x2100) {<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto bad_reg;<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;kb.mask;<br>=C2=
=A0<br>=C2=A0 =C2=A0 =C2=A0default:<br>@@ -466,19 +473,19 @@ static uint16_=
t tsc2102_audio_register_read(TSC210xState *s, int reg)<br>=C2=A0 =C2=A0 =
=C2=A0uint16_t val;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (reg) {<br>- =
=C2=A0 =C2=A0case 0x00:	/* Audio Control 1 */<br>+ =C2=A0 =C2=A0case 0x00: =
=C2=A0/* Audio Control 1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&=
gt;audio_ctrl1;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0case 0x01:<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return 0xff00;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x0=
2:	/* DAC Volume Control */<br>+ =C2=A0 =C2=A0case 0x02: =C2=A0/* DAC Volum=
e Control */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;volume;<br>=
=C2=A0<br>=C2=A0 =C2=A0 =C2=A0case 0x03:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return 0x8b00;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x04:	/* Audio Control 2=
 */<br>+ =C2=A0 =C2=A0case 0x04: =C2=A0/* Audio Control 2 */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0l_ch =3D 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0r_=
ch =3D 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;softstep &amp;&amp=
; !(s-&gt;dac_power &amp; (1 &lt;&lt; 10))) {<br>@@ -490,46 +497,46 @@ stat=
ic uint16_t tsc2102_audio_register_read(TSC210xState *s, int reg)<br>=C2=A0=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;audio_ctrl2 | (l_ch &lt;=
&lt; 3) | (r_ch &lt;&lt; 2);<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x05:	/* Ster=
eo DAC Power Control */<br>+ =C2=A0 =C2=A0case 0x05: =C2=A0/* Stereo DAC Po=
wer Control */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x2aa0 | s-&gt;d=
ac_power |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0(((s-&gt;dac_power &amp; (1 &lt;&lt; 10)) &amp;&amp;<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(qemu_clock_get_ns(Q=
EMU_CLOCK_VIRTUAL) &gt;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 s-&gt;powerdown + TSC_POWEROFF_DELAY)) &lt;&lt; 6);<b=
r>=C2=A0<br>- =C2=A0 =C2=A0case 0x06:	/* Audio Control 3 */<br>+ =C2=A0 =C2=
=A0case 0x06: =C2=A0/* Audio Control 3 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0val =3D s-&gt;audio_ctrl3 | 0x0001;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0s-&gt;audio_ctrl3 &amp;=3D 0xff3f;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return val;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x07:	/* LCH_BASS_BOOST_N0 =
*/<br>- =C2=A0 =C2=A0case 0x08:	/* LCH_BASS_BOOST_N1 */<br>- =C2=A0 =C2=A0c=
ase 0x09:	/* LCH_BASS_BOOST_N2 */<br>- =C2=A0 =C2=A0case 0x0a:	/* LCH_BASS_=
BOOST_N3 */<br>- =C2=A0 =C2=A0case 0x0b:	/* LCH_BASS_BOOST_N4 */<br>- =C2=
=A0 =C2=A0case 0x0c:	/* LCH_BASS_BOOST_N5 */<br>- =C2=A0 =C2=A0case 0x0d:	/=
* LCH_BASS_BOOST_D1 */<br>- =C2=A0 =C2=A0case 0x0e:	/* LCH_BASS_BOOST_D2 */=
<br>- =C2=A0 =C2=A0case 0x0f:	/* LCH_BASS_BOOST_D4 */<br>- =C2=A0 =C2=A0cas=
e 0x10:	/* LCH_BASS_BOOST_D5 */<br>- =C2=A0 =C2=A0case 0x11:	/* RCH_BASS_BO=
OST_N0 */<br>- =C2=A0 =C2=A0case 0x12:	/* RCH_BASS_BOOST_N1 */<br>- =C2=A0 =
=C2=A0case 0x13:	/* RCH_BASS_BOOST_N2 */<br>- =C2=A0 =C2=A0case 0x14:	/* RC=
H_BASS_BOOST_N3 */<br>- =C2=A0 =C2=A0case 0x15:	/* RCH_BASS_BOOST_N4 */<br>=
- =C2=A0 =C2=A0case 0x16:	/* RCH_BASS_BOOST_N5 */<br>- =C2=A0 =C2=A0case 0x=
17:	/* RCH_BASS_BOOST_D1 */<br>- =C2=A0 =C2=A0case 0x18:	/* RCH_BASS_BOOST_=
D2 */<br>- =C2=A0 =C2=A0case 0x19:	/* RCH_BASS_BOOST_D4 */<br>- =C2=A0 =C2=
=A0case 0x1a:	/* RCH_BASS_BOOST_D5 */<br>+ =C2=A0 =C2=A0case 0x07: =C2=A0/*=
 LCH_BASS_BOOST_N0 */<br>+ =C2=A0 =C2=A0case 0x08: =C2=A0/* LCH_BASS_BOOST_=
N1 */<br>+ =C2=A0 =C2=A0case 0x09: =C2=A0/* LCH_BASS_BOOST_N2 */<br>+ =C2=
=A0 =C2=A0case 0x0a: =C2=A0/* LCH_BASS_BOOST_N3 */<br>+ =C2=A0 =C2=A0case 0=
x0b: =C2=A0/* LCH_BASS_BOOST_N4 */<br>+ =C2=A0 =C2=A0case 0x0c: =C2=A0/* LC=
H_BASS_BOOST_N5 */<br>+ =C2=A0 =C2=A0case 0x0d: =C2=A0/* LCH_BASS_BOOST_D1 =
*/<br>+ =C2=A0 =C2=A0case 0x0e: =C2=A0/* LCH_BASS_BOOST_D2 */<br>+ =C2=A0 =
=C2=A0case 0x0f: =C2=A0/* LCH_BASS_BOOST_D4 */<br>+ =C2=A0 =C2=A0case 0x10:=
 =C2=A0/* LCH_BASS_BOOST_D5 */<br>+ =C2=A0 =C2=A0case 0x11: =C2=A0/* RCH_BA=
SS_BOOST_N0 */<br>+ =C2=A0 =C2=A0case 0x12: =C2=A0/* RCH_BASS_BOOST_N1 */<b=
r>+ =C2=A0 =C2=A0case 0x13: =C2=A0/* RCH_BASS_BOOST_N2 */<br>+ =C2=A0 =C2=
=A0case 0x14: =C2=A0/* RCH_BASS_BOOST_N3 */<br>+ =C2=A0 =C2=A0case 0x15: =
=C2=A0/* RCH_BASS_BOOST_N4 */<br>+ =C2=A0 =C2=A0case 0x16: =C2=A0/* RCH_BAS=
S_BOOST_N5 */<br>+ =C2=A0 =C2=A0case 0x17: =C2=A0/* RCH_BASS_BOOST_D1 */<br=
>+ =C2=A0 =C2=A0case 0x18: =C2=A0/* RCH_BASS_BOOST_D2 */<br>+ =C2=A0 =C2=A0=
case 0x19: =C2=A0/* RCH_BASS_BOOST_D4 */<br>+ =C2=A0 =C2=A0case 0x1a: =C2=
=A0/* RCH_BASS_BOOST_D5 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&g=
t;filter_data[reg - 0x07];<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x1b:	/* PLL Pr=
ogrammability 1 */<br>+ =C2=A0 =C2=A0case 0x1b: =C2=A0/* PLL Programmabilit=
y 1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;pll[0];<br>=C2=A0<=
br>- =C2=A0 =C2=A0case 0x1c:	/* PLL Programmability 2 */<br>+ =C2=A0 =C2=A0=
case 0x1c: =C2=A0/* PLL Programmability 2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0return s-&gt;pll[1];<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x1d:	/* Audio=
 Control 4 */<br>+ =C2=A0 =C2=A0case 0x1d: =C2=A0/* Audio Control 4 */<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return (!s-&gt;softstep) &lt;&lt; 14;<br>=
=C2=A0<br>=C2=A0 =C2=A0 =C2=A0default:<br>@@ -545,16 +552,16 @@ static void=
 tsc2102_data_register_write(<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0TSC210xState *s, int reg, uint16_t value)<br>=C2=A0{<br=
>=C2=A0 =C2=A0 =C2=A0switch (reg) {<br>- =C2=A0 =C2=A0case 0x00:	/* X */<br=
>- =C2=A0 =C2=A0case 0x01:	/* Y */<br>- =C2=A0 =C2=A0case 0x02:	/* Z1 */<br=
>- =C2=A0 =C2=A0case 0x03:	/* Z2 */<br>- =C2=A0 =C2=A0case 0x05:	/* BAT1 */=
<br>- =C2=A0 =C2=A0case 0x06:	/* BAT2 */<br>- =C2=A0 =C2=A0case 0x07:	/* AU=
X1 */<br>- =C2=A0 =C2=A0case 0x08:	/* AUX2 */<br>- =C2=A0 =C2=A0case 0x09:	=
/* TEMP1 */<br>- =C2=A0 =C2=A0case 0x0a:	/* TEMP2 */<br>+ =C2=A0 =C2=A0case=
 0x00: =C2=A0/* X */<br>+ =C2=A0 =C2=A0case 0x01: =C2=A0/* Y */<br>+ =C2=A0=
 =C2=A0case 0x02: =C2=A0/* Z1 */<br>+ =C2=A0 =C2=A0case 0x03: =C2=A0/* Z2 *=
/<br>+ =C2=A0 =C2=A0case 0x05: =C2=A0/* BAT1 */<br>+ =C2=A0 =C2=A0case 0x06=
: =C2=A0/* BAT2 */<br>+ =C2=A0 =C2=A0case 0x07: =C2=A0/* AUX1 */<br>+ =C2=
=A0 =C2=A0case 0x08: =C2=A0/* AUX2 */<br>+ =C2=A0 =C2=A0case 0x09: =C2=A0/*=
 TEMP1 */<br>+ =C2=A0 =C2=A0case 0x0a: =C2=A0/* TEMP2 */<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0default:<br>@@=
 -567,18 +574,19 @@ static void tsc2102_control_register_write(<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0TSC210xState *s, int=
 reg, uint16_t value)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0switch (reg) {<br>-=
 =C2=A0 =C2=A0case 0x00:	/* TSC ADC */<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/=
* TSC ADC */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;host_mode =3D value=
 &gt;&gt; 15;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;enabled =3D !(valu=
e &amp; 0x4000);<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;busy &amp;&amp; =
!s-&gt;enabled)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;busy &amp;&amp; !=
s-&gt;enabled) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0timer_d=
el(s-&gt;timer);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0s-&gt;busy =3D s-&gt;busy &amp;&amp; s-&gt;enabled;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;nextfunction =3D (value &gt;&gt; 10) &amp;=
 0xf;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;nextprecision =3D (value &=
gt;&gt; 8) &amp; 3;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;filter =3D v=
alue &amp; 0xff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>=
- =C2=A0 =C2=A0case 0x01:	/* Status / Keypad Control */<br>+ =C2=A0 =C2=A0c=
ase 0x01: =C2=A0/* Status / Keypad Control */<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0if ((s-&gt;model &amp; 0xff00) =3D=3D 0x2100)<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;pin_func =3D value &gt;&gt; 14;<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0else {<br>@@ -591,7 +599,7 @@ static void=
 tsc2102_control_register_write(<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case =
0x02:	/* DAC Control */<br>+ =C2=A0 =C2=A0case 0x02: =C2=A0/* DAC Control *=
/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;model &amp; 0xff00) =3D=
=3D 0x2300) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dac_=
power &amp;=3D 0x7fff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s=
-&gt;dac_power |=3D 0x8000 &amp; value;<br>@@ -599,14 +607,15 @@ static voi=
d tsc2102_control_register_write(<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0goto bad_reg;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=
=A0<br>- =C2=A0 =C2=A0case 0x03:	/* Reference */<br>+ =C2=A0 =C2=A0case 0x0=
3: =C2=A0/* Reference */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;ref =3D=
 value &amp; 0x1f;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<b=
r>- =C2=A0 =C2=A0case 0x04:	/* Reset */<br>+ =C2=A0 =C2=A0case 0x04: =C2=A0=
/* Reset */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value =3D=3D 0xbb00) {=
<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;busy)<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;busy) {<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0timer_del(s-&gt;timer);<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0tsc210x_reset(s);<br>=C2=A0#ifdef TSC_VERBOSE<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0} else {<br>@@ -616,7 +625,7 @@ static void tsc2=
102_control_register_write(<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x0=
5:	/* Configuration */<br>+ =C2=A0 =C2=A0case 0x05: =C2=A0/* Configuration =
*/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;timing =3D value &amp; 0x3f;<=
br>=C2=A0#ifdef TSC_VERBOSE<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value =
&amp; ~0x3f)<br>@@ -625,16 +634,18 @@ static void tsc2102_control_register_=
write(<br>=C2=A0#endif<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=
=A0<br>- =C2=A0 =C2=A0case 0x06:	/* Secondary configuration */<br>- =C2=A0 =
=C2=A0 =C2=A0 =C2=A0if ((s-&gt;model &amp; 0xff00) =3D=3D 0x2100)<br>+ =C2=
=A0 =C2=A0case 0x06: =C2=A0/* Secondary configuration */<br>+ =C2=A0 =C2=A0=
 =C2=A0 =C2=A0if ((s-&gt;model &amp; 0xff00) =3D=3D 0x2100) {<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto bad_reg;<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;kb.mode =3D value &g=
t;&gt; 14;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;pll[2] =3D value &amp=
; 0x3ffff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=
=A0 =C2=A0case 0x10:	/* Keypad Mask */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (=
(s-&gt;model &amp; 0xff00) =3D=3D 0x2100)<br>+ =C2=A0 =C2=A0case 0x10: =C2=
=A0/* Keypad Mask */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((s-&gt;model &amp;=
 0xff00) =3D=3D 0x2100) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0goto bad_reg;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0s-&gt;kb.mask =3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
return;<br>=C2=A0<br>@@ -649,7 +660,7 @@ static void tsc2102_audio_register=
_write(<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0TS=
C210xState *s, int reg, uint16_t value)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0s=
witch (reg) {<br>- =C2=A0 =C2=A0case 0x00:	/* Audio Control 1 */<br>+ =C2=
=A0 =C2=A0case 0x00: =C2=A0/* Audio Control 1 */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0s-&gt;audio_ctrl1 =3D value &amp; 0x0f3f;<br>=C2=A0#ifdef TSC_=
VERBOSE<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((value &amp; ~0x0f3f) || (=
(value &amp; 7) !=3D ((value &gt;&gt; 3) &amp; 7)))<br>@@ -668,7 +679,7 @@ =
static void tsc2102_audio_register_write(<br>=C2=A0#endif<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x02:	/* DAC V=
olume Control */<br>+ =C2=A0 =C2=A0case 0x02: =C2=A0/* DAC Volume Control *=
/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;volume =3D value;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;volume_change =3D qemu_clock_get_ns(QEMU_C=
LOCK_VIRTUAL);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>@@ -681,7 +6=
92,7 @@ static void tsc2102_audio_register_write(<br>=C2=A0#endif<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x04:	=
/* Audio Control 2 */<br>+ =C2=A0 =C2=A0case 0x04: =C2=A0/* Audio Control 2=
 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;audio_ctrl2 =3D value &amp; =
0xf7f2;<br>=C2=A0#ifdef TSC_VERBOSE<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if=
 (value &amp; ~0xf7fd)<br>@@ -690,9 +701,10 @@ static void tsc2102_audio_re=
gister_write(<br>=C2=A0#endif<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<=
br>=C2=A0<br>- =C2=A0 =C2=A0case 0x05:	/* Stereo DAC Power Control */<br>- =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((value &amp; ~s-&gt;dac_power) &amp; (1 &lt;=
&lt; 10))<br>+ =C2=A0 =C2=A0case 0x05: =C2=A0/* Stereo DAC Power Control */=
<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((value &amp; ~s-&gt;dac_power) &amp; (=
1 &lt;&lt; 10)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;=
powerdown =3D qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dac_power =
=3D value &amp; 0x9543;<br>=C2=A0#ifdef TSC_VERBOSE<br>@@ -704,7 +716,7 @@ =
static void tsc2102_audio_register_write(<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0tsc2102_audio_output_update(s);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x06:	/* Audio Control 3 */<br>+ =
=C2=A0 =C2=A0case 0x06: =C2=A0/* Audio Control 3 */<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0s-&gt;audio_ctrl3 &amp;=3D 0x00c0;<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0s-&gt;audio_ctrl3 |=3D value &amp; 0xf800;<br>=C2=A0#ifdef TSC=
_VERBOSE<br>@@ -715,30 +727,30 @@ static void tsc2102_audio_register_write(=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0tsc2102_audio_output_update(s);<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case =
0x07:	/* LCH_BASS_BOOST_N0 */<br>- =C2=A0 =C2=A0case 0x08:	/* LCH_BASS_BOOS=
T_N1 */<br>- =C2=A0 =C2=A0case 0x09:	/* LCH_BASS_BOOST_N2 */<br>- =C2=A0 =
=C2=A0case 0x0a:	/* LCH_BASS_BOOST_N3 */<br>- =C2=A0 =C2=A0case 0x0b:	/* LC=
H_BASS_BOOST_N4 */<br>- =C2=A0 =C2=A0case 0x0c:	/* LCH_BASS_BOOST_N5 */<br>=
- =C2=A0 =C2=A0case 0x0d:	/* LCH_BASS_BOOST_D1 */<br>- =C2=A0 =C2=A0case 0x=
0e:	/* LCH_BASS_BOOST_D2 */<br>- =C2=A0 =C2=A0case 0x0f:	/* LCH_BASS_BOOST_=
D4 */<br>- =C2=A0 =C2=A0case 0x10:	/* LCH_BASS_BOOST_D5 */<br>- =C2=A0 =C2=
=A0case 0x11:	/* RCH_BASS_BOOST_N0 */<br>- =C2=A0 =C2=A0case 0x12:	/* RCH_B=
ASS_BOOST_N1 */<br>- =C2=A0 =C2=A0case 0x13:	/* RCH_BASS_BOOST_N2 */<br>- =
=C2=A0 =C2=A0case 0x14:	/* RCH_BASS_BOOST_N3 */<br>- =C2=A0 =C2=A0case 0x15=
:	/* RCH_BASS_BOOST_N4 */<br>- =C2=A0 =C2=A0case 0x16:	/* RCH_BASS_BOOST_N5=
 */<br>- =C2=A0 =C2=A0case 0x17:	/* RCH_BASS_BOOST_D1 */<br>- =C2=A0 =C2=A0=
case 0x18:	/* RCH_BASS_BOOST_D2 */<br>- =C2=A0 =C2=A0case 0x19:	/* RCH_BASS=
_BOOST_D4 */<br>- =C2=A0 =C2=A0case 0x1a:	/* RCH_BASS_BOOST_D5 */<br>+ =C2=
=A0 =C2=A0case 0x07: =C2=A0/* LCH_BASS_BOOST_N0 */<br>+ =C2=A0 =C2=A0case 0=
x08: =C2=A0/* LCH_BASS_BOOST_N1 */<br>+ =C2=A0 =C2=A0case 0x09: =C2=A0/* LC=
H_BASS_BOOST_N2 */<br>+ =C2=A0 =C2=A0case 0x0a: =C2=A0/* LCH_BASS_BOOST_N3 =
*/<br>+ =C2=A0 =C2=A0case 0x0b: =C2=A0/* LCH_BASS_BOOST_N4 */<br>+ =C2=A0 =
=C2=A0case 0x0c: =C2=A0/* LCH_BASS_BOOST_N5 */<br>+ =C2=A0 =C2=A0case 0x0d:=
 =C2=A0/* LCH_BASS_BOOST_D1 */<br>+ =C2=A0 =C2=A0case 0x0e: =C2=A0/* LCH_BA=
SS_BOOST_D2 */<br>+ =C2=A0 =C2=A0case 0x0f: =C2=A0/* LCH_BASS_BOOST_D4 */<b=
r>+ =C2=A0 =C2=A0case 0x10: =C2=A0/* LCH_BASS_BOOST_D5 */<br>+ =C2=A0 =C2=
=A0case 0x11: =C2=A0/* RCH_BASS_BOOST_N0 */<br>+ =C2=A0 =C2=A0case 0x12: =
=C2=A0/* RCH_BASS_BOOST_N1 */<br>+ =C2=A0 =C2=A0case 0x13: =C2=A0/* RCH_BAS=
S_BOOST_N2 */<br>+ =C2=A0 =C2=A0case 0x14: =C2=A0/* RCH_BASS_BOOST_N3 */<br=
>+ =C2=A0 =C2=A0case 0x15: =C2=A0/* RCH_BASS_BOOST_N4 */<br>+ =C2=A0 =C2=A0=
case 0x16: =C2=A0/* RCH_BASS_BOOST_N5 */<br>+ =C2=A0 =C2=A0case 0x17: =C2=
=A0/* RCH_BASS_BOOST_D1 */<br>+ =C2=A0 =C2=A0case 0x18: =C2=A0/* RCH_BASS_B=
OOST_D2 */<br>+ =C2=A0 =C2=A0case 0x19: =C2=A0/* RCH_BASS_BOOST_D4 */<br>+ =
=C2=A0 =C2=A0case 0x1a: =C2=A0/* RCH_BASS_BOOST_D5 */<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;filter_data[reg - 0x07] =3D value;<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x1b:	/* PLL P=
rogrammability 1 */<br>+ =C2=A0 =C2=A0case 0x1b: =C2=A0/* PLL Programmabili=
ty 1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;pll[0] =3D value &amp; 0=
xfffc;<br>=C2=A0#ifdef TSC_VERBOSE<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if =
(value &amp; ~0xfffc)<br>@@ -747,7 +759,7 @@ static void tsc2102_audio_regi=
ster_write(<br>=C2=A0#endif<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br=
>=C2=A0<br>- =C2=A0 =C2=A0case 0x1c:	/* PLL Programmability 2 */<br>+ =C2=
=A0 =C2=A0case 0x1c: =C2=A0/* PLL Programmability 2 */<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;pll[1] =3D value &amp; 0xfffc;<br>=C2=A0#ifdef TSC_V=
ERBOSE<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; ~0xfffc)<br>@@ =
-756,7 +768,7 @@ static void tsc2102_audio_register_write(<br>=C2=A0#endif<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0ca=
se 0x1d:	/* Audio Control 4 */<br>+ =C2=A0 =C2=A0case 0x1d: =C2=A0/* Audio =
Control 4 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;softstep =3D !(valu=
e &amp; 0x4000);<br>=C2=A0#ifdef TSC_VERBOSE<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0if (value &amp; ~0x4000)<br>@@ -789,8 +801,9 @@ static void tsc210x_=
pin_update(TSC210xState *s)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pin_state =
=3D s-&gt;pressure &amp;&amp; !s-&gt;dav;<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=
=A0<br>- =C2=A0 =C2=A0if (!s-&gt;enabled)<br>+ =C2=A0 =C2=A0if (!s-&gt;enab=
led) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pin_state =3D false;<br>+ =C2=
=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0if (pin_state !=3D s-&gt;irq) =
{<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;irq =3D pin_state;<br>@@ -800,=
23 +813,26 @@ static void tsc210x_pin_update(TSC210xState *s)<br>=C2=A0 =C2=
=A0 =C2=A0switch (s-&gt;nextfunction) {<br>=C2=A0 =C2=A0 =C2=A0case TSC_MOD=
E_XY_SCAN:<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_XYZ_SCAN:<br>- =C2=A0 =C2=
=A0 =C2=A0 =C2=A0if (!s-&gt;pressure)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!=
s-&gt;pressure) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return=
;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0br=
eak;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_X:<br>=C2=A0 =C2=A0 =C2=
=A0case TSC_MODE_Y:<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_Z:<br>- =C2=A0 =C2=
=A0 =C2=A0 =C2=A0if (!s-&gt;pressure)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!=
s-&gt;pressure) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return=
;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/*=
 Fall through */<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_BAT1:<br>=C2=A0 =C2=
=A0 =C2=A0case TSC_MODE_BAT2:<br>=C2=A0 =C2=A0 =C2=A0case TSC_MODE_AUX:<br>=
=C2=A0 =C2=A0 =C2=A0case TSC_MODE_TEMP1:<br>=C2=A0 =C2=A0 =C2=A0case TSC_MO=
DE_TEMP2:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;dav)<br>+ =C2=A0 =C2=A0=
 =C2=A0 =C2=A0if (s-&gt;dav) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0s-&gt;enabled =3D false;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0case TS=
C_MODE_AUX_SCAN:<br>@@ -831,8 +847,9 @@ static void tsc210x_pin_update(TSC2=
10xState *s)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0 =C2=A0 =
=C2=A0}<br>=C2=A0<br>- =C2=A0 =C2=A0if (!s-&gt;enabled || s-&gt;busy || s-&=
gt;dav)<br>+ =C2=A0 =C2=A0if (!s-&gt;enabled || s-&gt;busy || s-&gt;dav) {<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>+ =C2=A0 =C2=A0}<br>=C2=A0<=
br>=C2=A0 =C2=A0 =C2=A0s-&gt;busy =3D true;<br>=C2=A0 =C2=A0 =C2=A0s-&gt;pr=
ecision =3D s-&gt;nextprecision;<br>@@ -846,14 +863,16 @@ static uint16_t t=
sc210x_read(TSC210xState *s)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0uint16_t ret=
 =3D 0x0000;<br>=C2=A0<br>- =C2=A0 =C2=A0if (!s-&gt;command)<br>+ =C2=A0 =
=C2=A0if (!s-&gt;command) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0fprintf(st=
derr, &quot;tsc210x_read: SPI underrun!\n&quot;);<br>+ =C2=A0 =C2=A0}<br>=
=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (s-&gt;page) {<br>=C2=A0 =C2=A0 =C2=A0=
case TSC_DATA_REGISTERS_PAGE:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ret =3D =
tsc2102_data_register_read(s, s-&gt;offset);<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0if (!s-&gt;dav)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!s-&gt;dav) {<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_irq_raise(s-&gt;davint);<=
br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0brea=
k;<br>=C2=A0 =C2=A0 =C2=A0case TSC_CONTROL_REGISTERS_PAGE:<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0ret =3D tsc2102_control_register_read(s, s-&gt;offset)=
;<br>@@ -868,7 +887,7 @@ static uint16_t tsc210x_read(TSC210xState *s)<br>=
=C2=A0 =C2=A0 =C2=A0tsc210x_pin_update(s);<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=
=A0/* Allow sequential reads. =C2=A0*/<br>- =C2=A0 =C2=A0s-&gt;offset ++;<b=
r>+ =C2=A0 =C2=A0s-&gt;offset++;<br>=C2=A0 =C2=A0 =C2=A0s-&gt;state =3D fal=
se;<br>=C2=A0 =C2=A0 =C2=A0return ret;<br>=C2=A0}<br>@@ -921,10 +940,12 @@ =
uint32_t tsc210x_txrx(void *opaque, uint32_t value, int len)<br>=C2=A0 =C2=
=A0 =C2=A0/* TODO: sequential reads etc - how do we make sure the host does=
n&#39;t<br>=C2=A0 =C2=A0 =C2=A0 * unintentionally read out a conversion res=
ult from a register while<br>=C2=A0 =C2=A0 =C2=A0 * transmitting the comman=
d word of the next command? =C2=A0*/<br>- =C2=A0 =C2=A0if (!value || (s-&gt=
;state &amp;&amp; s-&gt;command))<br>+ =C2=A0 =C2=A0if (!value || (s-&gt;st=
ate &amp;&amp; s-&gt;command)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ret =
=3D tsc210x_read(s);<br>- =C2=A0 =C2=A0if (value || (s-&gt;state &amp;&amp;=
 !s-&gt;command))<br>+ =C2=A0 =C2=A0}<br>+ =C2=A0 =C2=A0if (value || (s-&gt=
;state &amp;&amp; !s-&gt;command)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0t=
sc210x_write(s, value);<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=
=A0return ret;<br>=C2=A0}<br>@@ -935,8 +956,9 @@ static void tsc210x_timer_=
tick(void *opaque)<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0/* Timer ticked -- a se=
t of conversions has been finished. =C2=A0*/<br>=C2=A0<br>- =C2=A0 =C2=A0if=
 (!s-&gt;busy)<br>+ =C2=A0 =C2=A0if (!s-&gt;busy) {<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0return;<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0=
s-&gt;busy =3D false;<br>=C2=A0 =C2=A0 =C2=A0s-&gt;dav |=3D mode_regs[s-&gt=
;function];<br>@@ -961,16 +983,18 @@ static void tsc210x_touchscreen_event(=
void *opaque,<br>=C2=A0 =C2=A0 =C2=A0 * signaling TS events immediately, bu=
t for now we simulate<br>=C2=A0 =C2=A0 =C2=A0 * the first conversion delay =
for sake of correctness.<br>=C2=A0 =C2=A0 =C2=A0 */<br>- =C2=A0 =C2=A0if (p=
 !=3D s-&gt;pressure)<br>+ =C2=A0 =C2=A0if (p !=3D s-&gt;pressure) {<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0tsc210x_pin_update(s);<br>+ =C2=A0 =C2=A0}<b=
r>=C2=A0}<br>=C2=A0<br>=C2=A0static void tsc210x_i2s_swallow(TSC210xState *=
s)<br>=C2=A0{<br>- =C2=A0 =C2=A0if (s-&gt;dac_voice[0])<br>+ =C2=A0 =C2=A0i=
f (s-&gt;dac_voice[0]) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0tsc210x_out_f=
lush(s, s-&gt;codec.out.len);<br>- =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0} el=
se {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;codec.out.len =3D 0;<br>+ =
=C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=A0static void tsc210x_i2s_set_ra=
te(TSC210xState *s, int in, int out)<br>@@ -1163,32 +1187,6 @@ I2SCodec *ts=
c210x_codec(uWireSlave *chip)<br>=C2=A0void tsc210x_set_transform(uWireSlav=
e *chip, const MouseTransformInfo *info)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0=
TSC210xState *s =3D (TSC210xState *) chip-&gt;opaque;<br>-#if 0<br>- =C2=A0=
 =C2=A0int64_t ltr[8];<br>-<br>- =C2=A0 =C2=A0ltr[0] =3D (int64_t) info-&gt=
;a[1] * info-&gt;y;<br>- =C2=A0 =C2=A0ltr[1] =3D (int64_t) info-&gt;a[4] * =
info-&gt;x;<br>- =C2=A0 =C2=A0ltr[2] =3D (int64_t) info-&gt;a[1] * info-&gt=
;a[3] -<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(int64_t) info-&gt;a[=
4] * info-&gt;a[0];<br>- =C2=A0 =C2=A0ltr[3] =3D (int64_t) info-&gt;a[2] * =
info-&gt;a[4] -<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(int64_t) inf=
o-&gt;a[5] * info-&gt;a[1];<br>- =C2=A0 =C2=A0ltr[4] =3D (int64_t) info-&gt=
;a[0] * info-&gt;y;<br>- =C2=A0 =C2=A0ltr[5] =3D (int64_t) info-&gt;a[3] * =
info-&gt;x;<br>- =C2=A0 =C2=A0ltr[6] =3D (int64_t) info-&gt;a[4] * info-&gt=
;a[0] -<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(int64_t) info-&gt;a[=
1] * info-&gt;a[3];<br>- =C2=A0 =C2=A0ltr[7] =3D (int64_t) info-&gt;a[2] * =
info-&gt;a[3] -<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(int64_t) inf=
o-&gt;a[5] * info-&gt;a[0];<br>-<br>- =C2=A0 =C2=A0/* Avoid integer overflo=
w */<br>- =C2=A0 =C2=A0s-&gt;tr[0] =3D ltr[0] &gt;&gt; 11;<br>- =C2=A0 =C2=
=A0s-&gt;tr[1] =3D ltr[1] &gt;&gt; 11;<br>- =C2=A0 =C2=A0s-&gt;tr[2] =3D mu=
ldiv64(ltr[2], 1, info-&gt;a[6]);<br>- =C2=A0 =C2=A0s-&gt;tr[3] =3D muldiv6=
4(ltr[3], 1 &lt;&lt; 4, ltr[2]);<br>- =C2=A0 =C2=A0s-&gt;tr[4] =3D ltr[4] &=
gt;&gt; 11;<br>- =C2=A0 =C2=A0s-&gt;tr[5] =3D ltr[5] &gt;&gt; 11;<br>- =C2=
=A0 =C2=A0s-&gt;tr[6] =3D muldiv64(ltr[6], 1, info-&gt;a[6]);<br>- =C2=A0 =
=C2=A0s-&gt;tr[7] =3D muldiv64(ltr[7], 1 &lt;&lt; 4, ltr[6]);<br>-#else<br>=
=C2=A0<br>=C2=A0 =C2=A0 =C2=A0/* This version assumes touchscreen X &amp; Y=
 axis are parallel or<br>=C2=A0 =C2=A0 =C2=A0 * perpendicular to LCD&#39;s =
=C2=A0X &amp; Y axis in some way. =C2=A0*/<br>@@ -1218,17 +1216,17 @@ void =
tsc210x_set_transform(uWireSlave *chip, const MouseTransformInfo *info)<br>=
=C2=A0 =C2=A0 =C2=A0s-&gt;tr[4] &gt;&gt;=3D 11;<br>=C2=A0 =C2=A0 =C2=A0s-&g=
t;tr[5] &gt;&gt;=3D 11;<br>=C2=A0 =C2=A0 =C2=A0s-&gt;tr[7] &lt;&lt;=3D 4;<b=
r>-#endif<br>=C2=A0}<br>=C2=A0<br>=C2=A0void tsc210x_key_event(uWireSlave *=
chip, int key, int down)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0TSC210xState *s =
=3D (TSC210xState *) chip-&gt;opaque;<br>=C2=A0<br>- =C2=A0 =C2=A0if (down)=
<br>+ =C2=A0 =C2=A0if (down) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;k=
b.down |=3D 1 &lt;&lt; key;<br>- =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0} else=
 {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;kb.down &amp;=3D ~(1 &lt;&lt;=
 key);<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0if (down &amp;&=
amp; (s-&gt;kb.down &amp; ~s-&gt;kb.mask) &amp;&amp; !s-&gt;kb.intr) {<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;kb.intr =3D 1;<br>diff --git a/hw/i=
ntc/omap_intc.c b/hw/intc/omap_intc.c<br>index 435c47600f..4a5b413d0a 10064=
4<br>--- a/hw/intc/omap_intc.c<br>+++ b/hw/intc/omap_intc.c<br>@@ -104,8 +1=
04,8 @@ static inline void omap_inth_update(OMAPIntcState *s, int is_fiq)<b=
r>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>-#define INT_FALLING_EDGE	0=
<br>-#define INT_LOW_LEVEL		1<br>+#define INT_FALLING_EDGE =C2=A0 =C2=A0 =
=C2=A0 =C2=A00<br>+#define INT_LOW_LEVEL =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 1<br>=C2=A0<br>=C2=A0static void omap_set_intr(void *opaque, int irq, int =
req)<br>=C2=A0{<br>@@ -117,9 +117,9 @@ static void omap_set_intr(void *opaq=
ue, int irq, int req)<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0if (req) {<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0rise =3D ~bank-&gt;irqs &amp; (1 &lt;&lt; n);<b=
r>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (~bank-&gt;sens_edge &amp; (1 &lt;&lt; n)=
)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (~bank-&gt;sens_edge &amp; (1 &lt;&lt;=
 n)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rise &amp;=3D ~ba=
nk-&gt;inputs;<br>-<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0bank-&gt;inputs |=3D (1 &lt;&lt; n);<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0if (rise) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0bank-&gt;irqs |=3D rise;<br>@@ -164,66 +164,69 @@ static uint64_t oma=
p_inth_read(void *opaque, hwaddr addr,<br>=C2=A0 =C2=A0 =C2=A0offset &amp;=
=3D 0xff;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (offset) {<br>- =C2=A0 =
=C2=A0case 0x00:	/* ITR */<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/* ITR */<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return bank-&gt;irqs;<br>=C2=A0<br>- =C2=
=A0 =C2=A0case 0x04:	/* MIR */<br>+ =C2=A0 =C2=A0case 0x04: =C2=A0/* MIR */=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return bank-&gt;mask;<br>=C2=A0<br>- =
=C2=A0 =C2=A0case 0x10:	/* SIR_IRQ_CODE */<br>+ =C2=A0 =C2=A0case 0x10: =C2=
=A0/* SIR_IRQ_CODE */<br>=C2=A0 =C2=A0 =C2=A0case 0x14: =C2=A0/* SIR_FIQ_CO=
DE */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (bank_no !=3D 0)<br>+ =C2=A0 =C2=
=A0 =C2=A0 =C2=A0if (bank_no !=3D 0) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0break;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0line_no =3D s-&gt;sir_intr[(offset - 0x10) &gt;&gt; 2];=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bank =3D &amp;s-&gt;bank[line_no &gt;=
&gt; 5];<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0i =3D line_no &amp; 31;<br>- =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if (((bank-&gt;sens_edge &gt;&gt; i) &amp; 1) =
=3D=3D INT_FALLING_EDGE)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (((bank-&gt;sen=
s_edge &gt;&gt; i) &amp; 1) =3D=3D INT_FALLING_EDGE) {<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bank-&gt;irqs &amp;=3D ~(1 &lt;&lt; i);<br>+=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return l=
ine_no;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x18:	/* CONTROL_REG */<br>- =C2=
=A0 =C2=A0 =C2=A0 =C2=A0if (bank_no !=3D 0)<br>+ =C2=A0 =C2=A0case 0x18: =
=C2=A0/* CONTROL_REG */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (bank_no !=3D 0)=
 {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>=C2=
=A0<br>- =C2=A0 =C2=A0case 0x1c:	/* ILR0 */<br>- =C2=A0 =C2=A0case 0x20:	/*=
 ILR1 */<br>- =C2=A0 =C2=A0case 0x24:	/* ILR2 */<br>- =C2=A0 =C2=A0case 0x2=
8:	/* ILR3 */<br>- =C2=A0 =C2=A0case 0x2c:	/* ILR4 */<br>- =C2=A0 =C2=A0cas=
e 0x30:	/* ILR5 */<br>- =C2=A0 =C2=A0case 0x34:	/* ILR6 */<br>- =C2=A0 =C2=
=A0case 0x38:	/* ILR7 */<br>- =C2=A0 =C2=A0case 0x3c:	/* ILR8 */<br>- =C2=
=A0 =C2=A0case 0x40:	/* ILR9 */<br>- =C2=A0 =C2=A0case 0x44:	/* ILR10 */<br=
>- =C2=A0 =C2=A0case 0x48:	/* ILR11 */<br>- =C2=A0 =C2=A0case 0x4c:	/* ILR1=
2 */<br>- =C2=A0 =C2=A0case 0x50:	/* ILR13 */<br>- =C2=A0 =C2=A0case 0x54:	=
/* ILR14 */<br>- =C2=A0 =C2=A0case 0x58:	/* ILR15 */<br>- =C2=A0 =C2=A0case=
 0x5c:	/* ILR16 */<br>- =C2=A0 =C2=A0case 0x60:	/* ILR17 */<br>- =C2=A0 =C2=
=A0case 0x64:	/* ILR18 */<br>- =C2=A0 =C2=A0case 0x68:	/* ILR19 */<br>- =C2=
=A0 =C2=A0case 0x6c:	/* ILR20 */<br>- =C2=A0 =C2=A0case 0x70:	/* ILR21 */<b=
r>- =C2=A0 =C2=A0case 0x74:	/* ILR22 */<br>- =C2=A0 =C2=A0case 0x78:	/* ILR=
23 */<br>- =C2=A0 =C2=A0case 0x7c:	/* ILR24 */<br>- =C2=A0 =C2=A0case 0x80:=
	/* ILR25 */<br>- =C2=A0 =C2=A0case 0x84:	/* ILR26 */<br>- =C2=A0 =C2=A0cas=
e 0x88:	/* ILR27 */<br>- =C2=A0 =C2=A0case 0x8c:	/* ILR28 */<br>- =C2=A0 =
=C2=A0case 0x90:	/* ILR29 */<br>- =C2=A0 =C2=A0case 0x94:	/* ILR30 */<br>- =
=C2=A0 =C2=A0case 0x98:	/* ILR31 */<br>+ =C2=A0 =C2=A0case 0x1c: =C2=A0/* I=
LR0 */<br>+ =C2=A0 =C2=A0case 0x20: =C2=A0/* ILR1 */<br>+ =C2=A0 =C2=A0case=
 0x24: =C2=A0/* ILR2 */<br>+ =C2=A0 =C2=A0case 0x28: =C2=A0/* ILR3 */<br>+ =
=C2=A0 =C2=A0case 0x2c: =C2=A0/* ILR4 */<br>+ =C2=A0 =C2=A0case 0x30: =C2=
=A0/* ILR5 */<br>+ =C2=A0 =C2=A0case 0x34: =C2=A0/* ILR6 */<br>+ =C2=A0 =C2=
=A0case 0x38: =C2=A0/* ILR7 */<br>+ =C2=A0 =C2=A0case 0x3c: =C2=A0/* ILR8 *=
/<br>+ =C2=A0 =C2=A0case 0x40: =C2=A0/* ILR9 */<br>+ =C2=A0 =C2=A0case 0x44=
: =C2=A0/* ILR10 */<br>+ =C2=A0 =C2=A0case 0x48: =C2=A0/* ILR11 */<br>+ =C2=
=A0 =C2=A0case 0x4c: =C2=A0/* ILR12 */<br>+ =C2=A0 =C2=A0case 0x50: =C2=A0/=
* ILR13 */<br>+ =C2=A0 =C2=A0case 0x54: =C2=A0/* ILR14 */<br>+ =C2=A0 =C2=
=A0case 0x58: =C2=A0/* ILR15 */<br>+ =C2=A0 =C2=A0case 0x5c: =C2=A0/* ILR16=
 */<br>+ =C2=A0 =C2=A0case 0x60: =C2=A0/* ILR17 */<br>+ =C2=A0 =C2=A0case 0=
x64: =C2=A0/* ILR18 */<br>+ =C2=A0 =C2=A0case 0x68: =C2=A0/* ILR19 */<br>+ =
=C2=A0 =C2=A0case 0x6c: =C2=A0/* ILR20 */<br>+ =C2=A0 =C2=A0case 0x70: =C2=
=A0/* ILR21 */<br>+ =C2=A0 =C2=A0case 0x74: =C2=A0/* ILR22 */<br>+ =C2=A0 =
=C2=A0case 0x78: =C2=A0/* ILR23 */<br>+ =C2=A0 =C2=A0case 0x7c: =C2=A0/* IL=
R24 */<br>+ =C2=A0 =C2=A0case 0x80: =C2=A0/* ILR25 */<br>+ =C2=A0 =C2=A0cas=
e 0x84: =C2=A0/* ILR26 */<br>+ =C2=A0 =C2=A0case 0x88: =C2=A0/* ILR27 */<br=
>+ =C2=A0 =C2=A0case 0x8c: =C2=A0/* ILR28 */<br>+ =C2=A0 =C2=A0case 0x90: =
=C2=A0/* ILR29 */<br>+ =C2=A0 =C2=A0case 0x94: =C2=A0/* ILR30 */<br>+ =C2=
=A0 =C2=A0case 0x98: =C2=A0/* ILR31 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0i =3D (offset - 0x1c) &gt;&gt; 2;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0r=
eturn (bank-&gt;priority[i] &lt;&lt; 2) |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(((bank-&gt;sens_edge &gt;&gt; i) &amp; 1=
) &lt;&lt; 1) |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0((bank-&gt;fiq &gt;&gt; i) &amp; 1);<br>=C2=A0<br>- =C2=A0 =C2=A0case=
 0x9c:	/* ISR */<br>+ =C2=A0 =C2=A0case 0x9c: =C2=A0/* ISR */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return 0x00000000;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=
=A0}<br>@@ -241,26 +244,27 @@ static void omap_inth_write(void *opaque, hwa=
ddr addr,<br>=C2=A0 =C2=A0 =C2=A0offset &amp;=3D 0xff;<br>=C2=A0<br>=C2=A0 =
=C2=A0 =C2=A0switch (offset) {<br>- =C2=A0 =C2=A0case 0x00:	/* ITR */<br>+ =
=C2=A0 =C2=A0case 0x00: =C2=A0/* ITR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0/* Important: ignore the clearing if the IRQ is level-triggered and<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 the input bit is 1 */<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0bank-&gt;irqs &amp;=3D value | (bank-&gt;inputs =
&amp; bank-&gt;sens_edge);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=
=C2=A0<br>- =C2=A0 =C2=A0case 0x04:	/* MIR */<br>+ =C2=A0 =C2=A0case 0x04: =
=C2=A0/* MIR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bank-&gt;mask =3D valu=
e;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_inth_update(s, 0);<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0omap_inth_update(s, 1);<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* SIR_IRQ_CODE=
 */<br>- =C2=A0 =C2=A0case 0x14:	/* SIR_FIQ_CODE */<br>+ =C2=A0 =C2=A0case =
0x10: =C2=A0/* SIR_IRQ_CODE */<br>+ =C2=A0 =C2=A0case 0x14: =C2=A0/* SIR_FI=
Q_CODE */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0OMAP_RO_REG(addr);<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x18:	/=
* CONTROL_REG */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (bank_no !=3D 0)<br>+ =
=C2=A0 =C2=A0case 0x18: =C2=A0/* CONTROL_REG */<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0if (bank_no !=3D 0) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0break;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0if (value &amp; 2) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0qemu_set_irq(s-&gt;parent_intr[1], 0);<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;new_agr[1] =3D ~0;<br>@@ -273,38 +277,38 @@ s=
tatic void omap_inth_write(void *opaque, hwaddr addr,<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<b=
r>- =C2=A0 =C2=A0case 0x1c:	/* ILR0 */<br>- =C2=A0 =C2=A0case 0x20:	/* ILR1=
 */<br>- =C2=A0 =C2=A0case 0x24:	/* ILR2 */<br>- =C2=A0 =C2=A0case 0x28:	/*=
 ILR3 */<br>- =C2=A0 =C2=A0case 0x2c:	/* ILR4 */<br>- =C2=A0 =C2=A0case 0x3=
0:	/* ILR5 */<br>- =C2=A0 =C2=A0case 0x34:	/* ILR6 */<br>- =C2=A0 =C2=A0cas=
e 0x38:	/* ILR7 */<br>- =C2=A0 =C2=A0case 0x3c:	/* ILR8 */<br>- =C2=A0 =C2=
=A0case 0x40:	/* ILR9 */<br>- =C2=A0 =C2=A0case 0x44:	/* ILR10 */<br>- =C2=
=A0 =C2=A0case 0x48:	/* ILR11 */<br>- =C2=A0 =C2=A0case 0x4c:	/* ILR12 */<b=
r>- =C2=A0 =C2=A0case 0x50:	/* ILR13 */<br>- =C2=A0 =C2=A0case 0x54:	/* ILR=
14 */<br>- =C2=A0 =C2=A0case 0x58:	/* ILR15 */<br>- =C2=A0 =C2=A0case 0x5c:=
	/* ILR16 */<br>- =C2=A0 =C2=A0case 0x60:	/* ILR17 */<br>- =C2=A0 =C2=A0cas=
e 0x64:	/* ILR18 */<br>- =C2=A0 =C2=A0case 0x68:	/* ILR19 */<br>- =C2=A0 =
=C2=A0case 0x6c:	/* ILR20 */<br>- =C2=A0 =C2=A0case 0x70:	/* ILR21 */<br>- =
=C2=A0 =C2=A0case 0x74:	/* ILR22 */<br>- =C2=A0 =C2=A0case 0x78:	/* ILR23 *=
/<br>- =C2=A0 =C2=A0case 0x7c:	/* ILR24 */<br>- =C2=A0 =C2=A0case 0x80:	/* =
ILR25 */<br>- =C2=A0 =C2=A0case 0x84:	/* ILR26 */<br>- =C2=A0 =C2=A0case 0x=
88:	/* ILR27 */<br>- =C2=A0 =C2=A0case 0x8c:	/* ILR28 */<br>- =C2=A0 =C2=A0=
case 0x90:	/* ILR29 */<br>- =C2=A0 =C2=A0case 0x94:	/* ILR30 */<br>- =C2=A0=
 =C2=A0case 0x98:	/* ILR31 */<br>+ =C2=A0 =C2=A0case 0x1c: =C2=A0/* ILR0 */=
<br>+ =C2=A0 =C2=A0case 0x20: =C2=A0/* ILR1 */<br>+ =C2=A0 =C2=A0case 0x24:=
 =C2=A0/* ILR2 */<br>+ =C2=A0 =C2=A0case 0x28: =C2=A0/* ILR3 */<br>+ =C2=A0=
 =C2=A0case 0x2c: =C2=A0/* ILR4 */<br>+ =C2=A0 =C2=A0case 0x30: =C2=A0/* IL=
R5 */<br>+ =C2=A0 =C2=A0case 0x34: =C2=A0/* ILR6 */<br>+ =C2=A0 =C2=A0case =
0x38: =C2=A0/* ILR7 */<br>+ =C2=A0 =C2=A0case 0x3c: =C2=A0/* ILR8 */<br>+ =
=C2=A0 =C2=A0case 0x40: =C2=A0/* ILR9 */<br>+ =C2=A0 =C2=A0case 0x44: =C2=
=A0/* ILR10 */<br>+ =C2=A0 =C2=A0case 0x48: =C2=A0/* ILR11 */<br>+ =C2=A0 =
=C2=A0case 0x4c: =C2=A0/* ILR12 */<br>+ =C2=A0 =C2=A0case 0x50: =C2=A0/* IL=
R13 */<br>+ =C2=A0 =C2=A0case 0x54: =C2=A0/* ILR14 */<br>+ =C2=A0 =C2=A0cas=
e 0x58: =C2=A0/* ILR15 */<br>+ =C2=A0 =C2=A0case 0x5c: =C2=A0/* ILR16 */<br=
>+ =C2=A0 =C2=A0case 0x60: =C2=A0/* ILR17 */<br>+ =C2=A0 =C2=A0case 0x64: =
=C2=A0/* ILR18 */<br>+ =C2=A0 =C2=A0case 0x68: =C2=A0/* ILR19 */<br>+ =C2=
=A0 =C2=A0case 0x6c: =C2=A0/* ILR20 */<br>+ =C2=A0 =C2=A0case 0x70: =C2=A0/=
* ILR21 */<br>+ =C2=A0 =C2=A0case 0x74: =C2=A0/* ILR22 */<br>+ =C2=A0 =C2=
=A0case 0x78: =C2=A0/* ILR23 */<br>+ =C2=A0 =C2=A0case 0x7c: =C2=A0/* ILR24=
 */<br>+ =C2=A0 =C2=A0case 0x80: =C2=A0/* ILR25 */<br>+ =C2=A0 =C2=A0case 0=
x84: =C2=A0/* ILR26 */<br>+ =C2=A0 =C2=A0case 0x88: =C2=A0/* ILR27 */<br>+ =
=C2=A0 =C2=A0case 0x8c: =C2=A0/* ILR28 */<br>+ =C2=A0 =C2=A0case 0x90: =C2=
=A0/* ILR29 */<br>+ =C2=A0 =C2=A0case 0x94: =C2=A0/* ILR30 */<br>+ =C2=A0 =
=C2=A0case 0x98: =C2=A0/* ILR31 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0i =
=3D (offset - 0x1c) &gt;&gt; 2;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bank-&=
gt;priority[i] =3D (value &gt;&gt; 2) &amp; 0x1f;<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0bank-&gt;sens_edge &amp;=3D ~(1 &lt;&lt; i);<br>@@ -313,8 +317=
,8 @@ static void omap_inth_write(void *opaque, hwaddr addr,<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0bank-&gt;fiq |=3D (value &amp; 1) &lt;&lt; i;<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case =
0x9c:	/* ISR */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0for (i =3D 0; i &lt; 32; i =
++)<br>+ =C2=A0 =C2=A0case 0x9c: =C2=A0/* ISR */<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0for (i =3D 0; i &lt; 32; i++)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0if (value &amp; (1 &lt;&lt; i)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_set_intr(s, 32 * bank_no + i, 1)=
;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<=
br>@@ -339,7 +343,7 @@ static void omap_inth_reset(DeviceState *dev)<br>=C2=
=A0 =C2=A0 =C2=A0OMAPIntcState *s =3D OMAP_INTC(dev);<br>=C2=A0 =C2=A0 =C2=
=A0int i;<br>=C2=A0<br>- =C2=A0 =C2=A0for (i =3D 0; i &lt; s-&gt;nbanks; ++=
i){<br>+ =C2=A0 =C2=A0for (i =3D 0; i &lt; s-&gt;nbanks; ++i) {<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;bank[i].irqs =3D 0x00000000;<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;bank[i].mask =3D 0xffffffff;<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0s-&gt;bank[i].sens_edge =3D 0x00000000;<br>@@ -348,8 +=
352,9 @@ static void omap_inth_reset(DeviceState *dev)<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;bank[i].swi =3D 0x00000000;<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0memset(s-&gt;bank[i].priority, 0, sizeof(s-&gt;bank[i].priorit=
y));<br>=C2=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;level_only)<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;level_only) {<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;bank[i].sens_edge =3D 0xffffffff;<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=
=A0 =C2=A0s-&gt;new_agr[0] =3D ~0;<br>@@ -440,58 +445,59 @@ static uint64_t=
 omap2_inth_read(void *opaque, hwaddr addr,<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=
=A0<br>=C2=A0 =C2=A0 =C2=A0switch (offset) {<br>- =C2=A0 =C2=A0case 0x00:	/=
* INTC_REVISION */<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/* INTC_REVISION */<b=
r>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;revision;<br>=C2=A0<br>- =
=C2=A0 =C2=A0case 0x10:	/* INTC_SYSCONFIG */<br>+ =C2=A0 =C2=A0case 0x10: =
=C2=A0/* INTC_SYSCONFIG */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return (s-&=
gt;autoidle &gt;&gt; 2) &amp; 1;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x14:	/* =
INTC_SYSSTATUS */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0return 1;						/* RESETDO=
NE */<br>+ =C2=A0 =C2=A0case 0x14: =C2=A0/* INTC_SYSSTATUS */<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0return 1; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* RESETDONE */<br>=C2=A0<br>- =
=C2=A0 =C2=A0case 0x40:	/* INTC_SIR_IRQ */<br>+ =C2=A0 =C2=A0case 0x40: =C2=
=A0/* INTC_SIR_IRQ */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;sir=
_intr[0];<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x44:	/* INTC_SIR_FIQ */<br>+ =
=C2=A0 =C2=A0case 0x44: =C2=A0/* INTC_SIR_FIQ */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0return s-&gt;sir_intr[1];<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x4=
8:	/* INTC_CONTROL */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0return (!s-&gt;mask) =
&lt;&lt; 2;					/* GLOBALMASK */<br>+ =C2=A0 =C2=A0case 0x48: =C2=A0/* INTC=
_CONTROL */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0return (!s-&gt;mask) &lt;&lt; 2=
; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* GLOBALMASK */<br>=C2=A0<br>- =C2=
=A0 =C2=A0case 0x4c:	/* INTC_PROTECTION */<br>+ =C2=A0 =C2=A0case 0x4c: =C2=
=A0/* INTC_PROTECTION */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>=
=C2=A0<br>- =C2=A0 =C2=A0case 0x50:	/* INTC_IDLE */<br>+ =C2=A0 =C2=A0case =
0x50: =C2=A0/* INTC_IDLE */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&=
gt;autoidle &amp; 3;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0/* Per-bank registers=
 */<br>- =C2=A0 =C2=A0case 0x80:	/* INTC_ITR */<br>+ =C2=A0 =C2=A0case 0x80=
: =C2=A0/* INTC_ITR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return bank-&gt=
;inputs;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x84:	/* INTC_MIR */<br>+ =C2=A0 =
=C2=A0case 0x84: =C2=A0/* INTC_MIR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
return bank-&gt;mask;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x88:	/* INTC_MIR_CL=
EAR */<br>- =C2=A0 =C2=A0case 0x8c:	/* INTC_MIR_SET */<br>+ =C2=A0 =C2=A0ca=
se 0x88: =C2=A0/* INTC_MIR_CLEAR */<br>+ =C2=A0 =C2=A0case 0x8c: =C2=A0/* I=
NTC_MIR_SET */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>=C2=A0<br>=
- =C2=A0 =C2=A0case 0x90:	/* INTC_ISR_SET */<br>+ =C2=A0 =C2=A0case 0x90: =
=C2=A0/* INTC_ISR_SET */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return bank-&=
gt;swi;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x94:	/* INTC_ISR_CLEAR */<br>+ =
=C2=A0 =C2=A0case 0x94: =C2=A0/* INTC_ISR_CLEAR */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0return 0;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x98:	/* INTC_PENDI=
NG_IRQ */<br>+ =C2=A0 =C2=A0case 0x98: =C2=A0/* INTC_PENDING_IRQ */<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return bank-&gt;irqs &amp; ~bank-&gt;mask &a=
mp; ~bank-&gt;fiq;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x9c:	/* INTC_PENDING_F=
IQ */<br>+ =C2=A0 =C2=A0case 0x9c: =C2=A0/* INTC_PENDING_FIQ */<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0return bank-&gt;irqs &amp; ~bank-&gt;mask &amp; =
bank-&gt;fiq;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0/* Per-line registers */<br>=
- =C2=A0 =C2=A0case 0x100 ... 0x300:	/* INTC_ILR */<br>+ =C2=A0 =C2=A0case =
0x100 ... 0x300: =C2=A0 =C2=A0 =C2=A0 /* INTC_ILR */<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0bank_no =3D (offset - 0x100) &gt;&gt; 7;<br>- =C2=A0 =C2=
=A0 =C2=A0 =C2=A0if (bank_no &gt; s-&gt;nbanks)<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0if (bank_no &gt; s-&gt;nbanks) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0break;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0bank =3D &amp;s-&gt;bank[bank_no];<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0line_no =3D (offset &amp; 0x7f) &gt;&gt; 2;<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return (bank-&gt;priority[line_no] &lt;&lt; 2) |<br=
>@@ -521,7 +527,7 @@ static void omap2_inth_write(void *opaque, hwaddr addr=
,<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (offset)=
 {<br>- =C2=A0 =C2=A0case 0x10:	/* INTC_SYSCONFIG */<br>+ =C2=A0 =C2=A0case=
 0x10: =C2=A0/* INTC_SYSCONFIG */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&g=
t;autoidle &amp;=3D 4;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;autoidle =
|=3D (value &amp; 1) &lt;&lt; 2;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (v=
alue &amp; 2) { =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0/* SOFTRESET */<br>@@ -529,21 +535,21 @@ static void omap2_inth_write=
(void *opaque, hwaddr addr,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x4=
8:	/* INTC_CONTROL */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;mask =3D (value=
 &amp; 4) ? 0 : ~0;				/* GLOBALMASK */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if =
(value &amp; 2) {					/* NEWFIQAGR */<br>+ =C2=A0 =C2=A0case 0x48: =C2=A0/*=
 INTC_CONTROL */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;mask =3D (value &amp=
; 4) ? 0 : ~0; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 /* GLOBALMASK */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0i=
f (value &amp; 2) { =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0/* NEWFIQAGR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0qemu_set_irq(s-&gt;parent_intr[1], 0);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;new_agr[1] =3D ~0;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0omap_inth_update(s, 1);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0}<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 1) {					/* NEWIRQ=
AGR */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 1) { =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* NEWIRQAGR */<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_set_irq(s-&gt;parent_intr=
[0], 0);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;new_agr[0=
] =3D ~0;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_inth_upda=
te(s, 0);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x4c:	/* INTC_PROTECT=
ION */<br>+ =C2=A0 =C2=A0case 0x4c: =C2=A0/* INTC_PROTECTION */<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0/* TODO: Make a bitmap (or sizeof(char)map) of a=
ccess privileges<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * for every register=
, see Chapter 3 and 4 for privileged mode. =C2=A0*/<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0if (value &amp; 1)<br>@@ -551,44 +557,45 @@ static void omap2=
_inth_write(void *opaque, hwaddr addr,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__=
func__);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0=
 =C2=A0case 0x50:	/* INTC_IDLE */<br>+ =C2=A0 =C2=A0case 0x50: =C2=A0/* INT=
C_IDLE */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;autoidle &amp;=3D ~3;<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;autoidle |=3D value &amp; 3;<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0=
/* Per-bank registers */<br>- =C2=A0 =C2=A0case 0x84:	/* INTC_MIR */<br>+ =
=C2=A0 =C2=A0case 0x84: =C2=A0/* INTC_MIR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0bank-&gt;mask =3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_i=
nth_update(s, 0);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_inth_update(s, =
1);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=
=A0case 0x88:	/* INTC_MIR_CLEAR */<br>+ =C2=A0 =C2=A0case 0x88: =C2=A0/* IN=
TC_MIR_CLEAR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bank-&gt;mask &amp;=3D=
 ~value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_inth_update(s, 0);<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_inth_update(s, 1);<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x8c:	/* INTC_=
MIR_SET */<br>+ =C2=A0 =C2=A0case 0x8c: =C2=A0/* INTC_MIR_SET */<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0bank-&gt;mask |=3D value;<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x90:	/* INTC_ISR=
_SET */<br>+ =C2=A0 =C2=A0case 0x90: =C2=A0/* INTC_ISR_SET */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0bank-&gt;irqs |=3D bank-&gt;swi |=3D value;<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_inth_update(s, 0);<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0omap_inth_update(s, 1);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x94:	/* INTC_ISR_CLEAR */<br>+=
 =C2=A0 =C2=A0case 0x94: =C2=A0/* INTC_ISR_CLEAR */<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0bank-&gt;swi &amp;=3D ~value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0bank-&gt;irqs =3D bank-&gt;swi &amp; bank-&gt;inputs;<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0/* Per-lin=
e registers */<br>- =C2=A0 =C2=A0case 0x100 ... 0x300:	/* INTC_ILR */<br>+ =
=C2=A0 =C2=A0case 0x100 ... 0x300: =C2=A0 =C2=A0 =C2=A0 /* INTC_ILR */<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bank_no =3D (offset - 0x100) &gt;&gt; 7;<=
br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (bank_no &gt; s-&gt;nbanks)<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0if (bank_no &gt; s-&gt;nbanks) {<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bank =3D &amp;s-&gt;bank[bank_no];<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0line_no =3D (offset &amp; 0x7f) &gt;&gt; 2;<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bank-&gt;priority[line_no] =3D (value =
&gt;&gt; 2) &amp; 0x3f;<br>@@ -596,13 +603,13 @@ static void omap2_inth_wri=
te(void *opaque, hwaddr addr,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bank-&gt=
;fiq |=3D (value &amp; 1) &lt;&lt; line_no;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x00:	/* INTC_REVISION */<br=
>- =C2=A0 =C2=A0case 0x14:	/* INTC_SYSSTATUS */<br>- =C2=A0 =C2=A0case 0x40=
:	/* INTC_SIR_IRQ */<br>- =C2=A0 =C2=A0case 0x44:	/* INTC_SIR_FIQ */<br>- =
=C2=A0 =C2=A0case 0x80:	/* INTC_ITR */<br>- =C2=A0 =C2=A0case 0x98:	/* INTC=
_PENDING_IRQ */<br>- =C2=A0 =C2=A0case 0x9c:	/* INTC_PENDING_FIQ */<br>+ =
=C2=A0 =C2=A0case 0x00: =C2=A0/* INTC_REVISION */<br>+ =C2=A0 =C2=A0case 0x=
14: =C2=A0/* INTC_SYSSTATUS */<br>+ =C2=A0 =C2=A0case 0x40: =C2=A0/* INTC_S=
IR_IRQ */<br>+ =C2=A0 =C2=A0case 0x44: =C2=A0/* INTC_SIR_FIQ */<br>+ =C2=A0=
 =C2=A0case 0x80: =C2=A0/* INTC_ITR */<br>+ =C2=A0 =C2=A0case 0x98: =C2=A0/=
* INTC_PENDING_IRQ */<br>+ =C2=A0 =C2=A0case 0x9c: =C2=A0/* INTC_PENDING_FI=
Q */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0OMAP_RO_REG(addr);<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return;<br>=C2=A0 =C2=A0 =C2=A0}<br>diff --git a/hw=
/misc/cbus.c b/hw/misc/cbus.c<br>index 653e8ddcd5..a09232e755 100644<br>---=
 a/hw/misc/cbus.c<br>+++ b/hw/misc/cbus.c<br>@@ -26,7 +26,7 @@<br>=C2=A0#in=
clude &quot;hw/misc/cbus.h&quot;<br>=C2=A0#include &quot;sysemu/runstate.h&=
quot;<br>=C2=A0<br>-//#define DEBUG<br>+/*#define DEBUG*/<br>=C2=A0<br>=C2=
=A0typedef struct {<br>=C2=A0 =C2=A0 =C2=A0void *opaque;<br>@@ -78,13 +78,1=
5 @@ static void cbus_cycle(CBusPriv *s)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0s-&gt;dir =3D !s-&gt;rw;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;val =
=3D 0;<br>=C2=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;rw)<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0if (s-&gt;rw) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0cbus_io(s);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0case cbus_valu=
e:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!s-&gt;rw)<br>+ =C2=A0 =C2=A0 =C2=A0=
 =C2=A0if (!s-&gt;rw) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
cbus_io(s);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;cycle =3D cbus_address;<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0s-&gt;bit =3D 8;<br>@@ -99,13 +101,15 @@ static void cbus_clk(=
void *opaque, int line, int level)<br>=C2=A0 =C2=A0 =C2=A0CBusPriv *s =3D (=
CBusPriv *) opaque;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0if (!s-&gt;sel &amp;&a=
mp; level &amp;&amp; !s-&gt;clk) {<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&g=
t;dir)<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;val |=3D s-&gt;d=
at &lt;&lt; (s-&gt;bit --);<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>- =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_set_irq(s-&gt;dat_out, (s-&gt;va=
l &gt;&gt; (s-&gt;bit --)) &amp; 1);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-=
&gt;dir) {<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;val |=3D s-&=
gt;dat &lt;&lt; (s-&gt;bit--);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0} else {<br>=
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_set_irq(s-&gt;dat_out, (s-&=
gt;val &gt;&gt; (s-&gt;bit--)) &amp; 1);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<=
br>=C2=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;bit &lt; 0)<br>+ =C2=A0=
 =C2=A0 =C2=A0 =C2=A0if (s-&gt;bit &lt; 0) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0cbus_cycle(s);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=
=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0s-&gt;clk =3D level;=
<br>@@ -179,61 +183,61 @@ static void retu_interrupt_update(CBusRetu *s)<br=
>=C2=A0 =C2=A0 =C2=A0qemu_set_irq(s-&gt;irq, s-&gt;irqst &amp; ~s-&gt;irqen=
);<br>=C2=A0}<br>=C2=A0<br>-#define RETU_REG_ASICR		0x00	/* (RO) ASIC ID &a=
mp; revision */<br>-#define RETU_REG_IDR		0x01	/* (T) =C2=A0Interrupt ID */=
<br>-#define RETU_REG_IMR		0x02	/* (RW) Interrupt mask */<br>-#define RETU_=
REG_RTCDSR		0x03	/* (RW) RTC seconds register */<br>-#define RETU_REG_RTCHM=
R		0x04	/* (RO) RTC hours and minutes reg */<br>-#define RETU_REG_RTCHMAR	0=
x05	/* (RW) RTC hours and minutes set reg */<br>-#define RETU_REG_RTCCALR	0=
x06	/* (RW) RTC calibration register */<br>-#define RETU_REG_ADCR		0x08	/* =
(RW) ADC result register */<br>-#define RETU_REG_ADCSCR		0x09	/* (RW) ADC s=
ample control register */<br>-#define RETU_REG_AFCR		0x0a	/* (RW) AFC regis=
ter */<br>-#define RETU_REG_ANTIFR		0x0b	/* (RW) AntiF register */<br>-#def=
ine RETU_REG_CALIBR		0x0c	/* (RW) CalibR register*/<br>-#define RETU_REG_CC=
R1		0x0d	/* (RW) Common control register 1 */<br>-#define RETU_REG_CCR2		0x=
0e	/* (RW) Common control register 2 */<br>-#define RETU_REG_RCTRL_CLR	0x0f=
	/* (T) =C2=A0Regulator clear register */<br>-#define RETU_REG_RCTRL_SET	0x=
10	/* (T) =C2=A0Regulator set register */<br>-#define RETU_REG_TXCR		0x11	/=
* (RW) TxC register */<br>-#define RETU_REG_STATUS		0x16	/* (RO) Status reg=
ister */<br>-#define RETU_REG_WATCHDOG	0x17	/* (RW) Watchdog register */<br=
>-#define RETU_REG_AUDTXR		0x18	/* (RW) Audio Codec Tx register */<br>-#def=
ine RETU_REG_AUDPAR		0x19	/* (RW) AudioPA register */<br>-#define RETU_REG_=
AUDRXR1	0x1a	/* (RW) Audio receive register 1 */<br>-#define RETU_REG_AUDRX=
R2	0x1b	/* (RW) Audio receive register 2 */<br>-#define RETU_REG_SGR1		0x1c=
	/* (RW) */<br>-#define RETU_REG_SCR1		0x1d	/* (RW) */<br>-#define RETU_REG=
_SGR2		0x1e	/* (RW) */<br>-#define RETU_REG_SCR2		0x1f	/* (RW) */<br>+#defi=
ne RETU_REG_ASICR =C2=A0 =C2=A0 =C2=A00x00 =C2=A0/* (RO) ASIC ID &amp; revi=
sion */<br>+#define RETU_REG_IDR =C2=A0 =C2=A0 =C2=A0 =C2=A00x01 =C2=A0/* (=
T) =C2=A0Interrupt ID */<br>+#define RETU_REG_IMR =C2=A0 =C2=A0 =C2=A0 =C2=
=A00x02 =C2=A0/* (RW) Interrupt mask */<br>+#define RETU_REG_RTCDSR =C2=A0 =
=C2=A0 0x03 =C2=A0/* (RW) RTC seconds register */<br>+#define RETU_REG_RTCH=
MR =C2=A0 =C2=A0 0x04 =C2=A0/* (RO) RTC hours and minutes reg */<br>+#defin=
e RETU_REG_RTCHMAR =C2=A0 =C2=A00x05 =C2=A0/* (RW) RTC hours and minutes se=
t reg */<br>+#define RETU_REG_RTCCALR =C2=A0 =C2=A00x06 =C2=A0/* (RW) RTC c=
alibration register */<br>+#define RETU_REG_ADCR =C2=A0 =C2=A0 =C2=A0 0x08 =
=C2=A0/* (RW) ADC result register */<br>+#define RETU_REG_ADCSCR =C2=A0 =C2=
=A0 0x09 =C2=A0/* (RW) ADC sample control register */<br>+#define RETU_REG_=
AFCR =C2=A0 =C2=A0 =C2=A0 0x0a =C2=A0/* (RW) AFC register */<br>+#define RE=
TU_REG_ANTIFR =C2=A0 =C2=A0 0x0b =C2=A0/* (RW) AntiF register */<br>+#defin=
e RETU_REG_CALIBR =C2=A0 =C2=A0 0x0c =C2=A0/* (RW) CalibR register*/<br>+#d=
efine RETU_REG_CCR1 =C2=A0 =C2=A0 =C2=A0 0x0d =C2=A0/* (RW) Common control =
register 1 */<br>+#define RETU_REG_CCR2 =C2=A0 =C2=A0 =C2=A0 0x0e =C2=A0/* =
(RW) Common control register 2 */<br>+#define RETU_REG_RCTRL_CLR =C2=A00x0f=
 =C2=A0/* (T) =C2=A0Regulator clear register */<br>+#define RETU_REG_RCTRL_=
SET =C2=A00x10 =C2=A0/* (T) =C2=A0Regulator set register */<br>+#define RET=
U_REG_TXCR =C2=A0 =C2=A0 =C2=A0 0x11 =C2=A0/* (RW) TxC register */<br>+#def=
ine RETU_REG_STATUS =C2=A0 =C2=A0 0x16 =C2=A0/* (RO) Status register */<br>=
+#define RETU_REG_WATCHDOG =C2=A0 0x17 =C2=A0/* (RW) Watchdog register */<b=
r>+#define RETU_REG_AUDTXR =C2=A0 =C2=A0 0x18 =C2=A0/* (RW) Audio Codec Tx =
register */<br>+#define RETU_REG_AUDPAR =C2=A0 =C2=A0 0x19 =C2=A0/* (RW) Au=
dioPA register */<br>+#define RETU_REG_AUDRXR1 =C2=A0 =C2=A00x1a =C2=A0/* (=
RW) Audio receive register 1 */<br>+#define RETU_REG_AUDRXR2 =C2=A0 =C2=A00=
x1b =C2=A0/* (RW) Audio receive register 2 */<br>+#define RETU_REG_SGR1 =C2=
=A0 =C2=A0 =C2=A0 0x1c =C2=A0/* (RW) */<br>+#define RETU_REG_SCR1 =C2=A0 =
=C2=A0 =C2=A0 0x1d =C2=A0/* (RW) */<br>+#define RETU_REG_SGR2 =C2=A0 =C2=A0=
 =C2=A0 0x1e =C2=A0/* (RW) */<br>+#define RETU_REG_SCR2 =C2=A0 =C2=A0 =C2=
=A0 0x1f =C2=A0/* (RW) */<br>=C2=A0<br>=C2=A0/* Retu Interrupt sources */<b=
r>=C2=A0enum {<br>- =C2=A0 =C2=A0retu_int_pwr	=3D 0,	/* Power button */<br>=
- =C2=A0 =C2=A0retu_int_char	=3D 1,	/* Charger */<br>- =C2=A0 =C2=A0retu_in=
t_rtcs	=3D 2,	/* Seconds */<br>- =C2=A0 =C2=A0retu_int_rtcm	=3D 3,	/* Minut=
es */<br>- =C2=A0 =C2=A0retu_int_rtcd	=3D 4,	/* Days */<br>- =C2=A0 =C2=A0r=
etu_int_rtca	=3D 5,	/* Alarm */<br>- =C2=A0 =C2=A0retu_int_hook	=3D 6,	/* H=
ook */<br>- =C2=A0 =C2=A0retu_int_head	=3D 7,	/* Headset */<br>- =C2=A0 =C2=
=A0retu_int_adcs	=3D 8,	/* ADC sample */<br>+ =C2=A0 =C2=A0retu_int_pwr =C2=
=A0=3D 0, =C2=A0/* Power button */<br>+ =C2=A0 =C2=A0retu_int_char =3D 1, =
=C2=A0/* Charger */<br>+ =C2=A0 =C2=A0retu_int_rtcs =3D 2, =C2=A0/* Seconds=
 */<br>+ =C2=A0 =C2=A0retu_int_rtcm =3D 3, =C2=A0/* Minutes */<br>+ =C2=A0 =
=C2=A0retu_int_rtcd =3D 4, =C2=A0/* Days */<br>+ =C2=A0 =C2=A0retu_int_rtca=
 =3D 5, =C2=A0/* Alarm */<br>+ =C2=A0 =C2=A0retu_int_hook =3D 6, =C2=A0/* H=
ook */<br>+ =C2=A0 =C2=A0retu_int_head =3D 7, =C2=A0/* Headset */<br>+ =C2=
=A0 =C2=A0retu_int_adcs =3D 8, =C2=A0/* ADC sample */<br>=C2=A0};<br>=C2=A0=
<br>=C2=A0/* Retu ADC channel wiring */<br>=C2=A0enum {<br>- =C2=A0 =C2=A0r=
etu_adc_bsi	=3D 1,	/* BSI */<br>- =C2=A0 =C2=A0retu_adc_batt_temp	=3D 2,	/*=
 Battery temperature */<br>- =C2=A0 =C2=A0retu_adc_chg_volt	=3D 3,	/* Charg=
er voltage */<br>- =C2=A0 =C2=A0retu_adc_head_det	=3D 4,	/* Headset detecti=
on */<br>- =C2=A0 =C2=A0retu_adc_hook_det	=3D 5,	/* Hook detection */<br>- =
=C2=A0 =C2=A0retu_adc_rf_gp	=3D 6,	/* RF GP */<br>- =C2=A0 =C2=A0retu_adc_t=
x_det	=3D 7,	/* Wideband Tx detection */<br>- =C2=A0 =C2=A0retu_adc_batt_vo=
lt	=3D 8,	/* Battery voltage */<br>- =C2=A0 =C2=A0retu_adc_sens	=3D 10,	/* =
Light sensor */<br>- =C2=A0 =C2=A0retu_adc_sens_temp	=3D 11,	/* Light senso=
r temperature */<br>- =C2=A0 =C2=A0retu_adc_bbatt_volt	=3D 12,	/* Backup ba=
ttery voltage */<br>- =C2=A0 =C2=A0retu_adc_self_temp	=3D 13,	/* RETU tempe=
rature */<br>+ =C2=A0 =C2=A0retu_adc_bsi =3D 1, =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 /* BSI */<br>+ =C2=A0 =C2=A0retu_adc_batt_temp =3D 2, =C2=A0 /* Battery te=
mperature */<br>+ =C2=A0 =C2=A0retu_adc_chg_volt =3D 3, =C2=A0 =C2=A0/* Cha=
rger voltage */<br>+ =C2=A0 =C2=A0retu_adc_head_det =3D 4, =C2=A0 =C2=A0/* =
Headset detection */<br>+ =C2=A0 =C2=A0retu_adc_hook_det =3D 5, =C2=A0 =C2=
=A0/* Hook detection */<br>+ =C2=A0 =C2=A0retu_adc_rf_gp =3D 6, =C2=A0 =C2=
=A0 =C2=A0 /* RF GP */<br>+ =C2=A0 =C2=A0retu_adc_tx_det =3D 7, =C2=A0 =C2=
=A0 =C2=A0/* Wideband Tx detection */<br>+ =C2=A0 =C2=A0retu_adc_batt_volt =
=3D 8, =C2=A0 /* Battery voltage */<br>+ =C2=A0 =C2=A0retu_adc_sens =3D 10,=
 =C2=A0 =C2=A0 =C2=A0 /* Light sensor */<br>+ =C2=A0 =C2=A0retu_adc_sens_te=
mp =3D 11, =C2=A0/* Light sensor temperature */<br>+ =C2=A0 =C2=A0retu_adc_=
bbatt_volt =3D 12, /* Backup battery voltage */<br>+ =C2=A0 =C2=A0retu_adc_=
self_temp =3D 13, =C2=A0/* RETU temperature */<br>=C2=A0};<br>=C2=A0<br>=C2=
=A0static inline uint16_t retu_read(CBusRetu *s, int reg)<br>@@ -246,7 +250=
,7 @@ static inline uint16_t retu_read(CBusRetu *s, int reg)<br>=C2=A0 =C2=
=A0 =C2=A0case RETU_REG_ASICR:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return =
0x0215 | (s-&gt;is_vilma &lt;&lt; 7);<br>=C2=A0<br>- =C2=A0 =C2=A0case RETU=
_REG_IDR:	/* TODO: Or is this ffs(s-&gt;irqst)? =C2=A0*/<br>+ =C2=A0 =C2=A0=
case RETU_REG_IDR: =C2=A0/* TODO: Or is this ffs(s-&gt;irqst)? =C2=A0*/<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;irqst;<br>=C2=A0<br>=C2=A0 =
=C2=A0 =C2=A0case RETU_REG_IMR:<br>@@ -355,8 +359,9 @@ static inline void r=
etu_write(CBusRetu *s, int reg, uint16_t val)<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0break;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0case RETU_REG_WATCHDOG:<b=
r>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (val =3D=3D 0 &amp;&amp; (s-&gt;cc[0] &am=
p; 2))<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (val =3D=3D 0 &amp;&amp; (s-&gt;c=
c[0] &amp; 2)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_sy=
stem_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN);<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>=C2=
=A0 =C2=A0 =C2=A0case RETU_REG_TXCR:<br>@@ -380,10 +385,11 @@ static void r=
etu_io(void *opaque, int rw, int reg, uint16_t *val)<br>=C2=A0{<br>=C2=A0 =
=C2=A0 =C2=A0CBusRetu *s =3D (CBusRetu *) opaque;<br>=C2=A0<br>- =C2=A0 =C2=
=A0if (rw)<br>+ =C2=A0 =C2=A0if (rw) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0*val =3D retu_read(s, reg);<br>- =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0} e=
lse {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retu_write(s, reg, *val);<br>+ =
=C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=A0void *retu_init(qemu_irq irq, =
int vilma)<br>@@ -424,47 +430,12 @@ void retu_key_event(void *retu, int sta=
te)<br>=C2=A0 =C2=A0 =C2=A0s-&gt;irqst |=3D 1 &lt;&lt; retu_int_pwr;<br>=C2=
=A0 =C2=A0 =C2=A0retu_interrupt_update(s);<br>=C2=A0<br>- =C2=A0 =C2=A0if (=
state)<br>+ =C2=A0 =C2=A0if (state) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
s-&gt;status &amp;=3D ~(1 &lt;&lt; 5);<br>- =C2=A0 =C2=A0else<br>+ =C2=A0 =
=C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;status |=3D 1 &lt=
;&lt; 5;<br>-}<br>-<br>-#if 0<br>-static void retu_head_event(void *retu, i=
nt state)<br>-{<br>- =C2=A0 =C2=A0CBusSlave *slave =3D (CBusSlave *) retu;<=
br>- =C2=A0 =C2=A0CBusRetu *s =3D (CBusRetu *) slave-&gt;opaque;<br>-<br>- =
=C2=A0 =C2=A0if ((s-&gt;cc[0] &amp; 0x500) =3D=3D 0x500) {	/* TODO: Which b=
its? */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0/* TODO: reissue the interrupt ever=
y 100ms or so. =C2=A0*/<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;irqst |=3D 1 =
&lt;&lt; retu_int_head;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0retu_interrupt_upda=
te(s);<br>=C2=A0 =C2=A0 =C2=A0}<br>-<br>- =C2=A0 =C2=A0if (state)<br>- =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;result[retu_adc_head_det] =3D 50;<br>- =C2=A0=
 =C2=A0else<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;result[retu_adc_head_det]=
 =3D 123;<br>-}<br>-<br>-static void retu_hook_event(void *retu, int state)=
<br>-{<br>- =C2=A0 =C2=A0CBusSlave *slave =3D (CBusSlave *) retu;<br>- =C2=
=A0 =C2=A0CBusRetu *s =3D (CBusRetu *) slave-&gt;opaque;<br>-<br>- =C2=A0 =
=C2=A0if ((s-&gt;cc[0] &amp; 0x500) =3D=3D 0x500) {<br>- =C2=A0 =C2=A0 =C2=
=A0 =C2=A0/* TODO: reissue the interrupt every 100ms or so. =C2=A0*/<br>- =
=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;irqst |=3D 1 &lt;&lt; retu_int_hook;<br>- =
=C2=A0 =C2=A0 =C2=A0 =C2=A0retu_interrupt_update(s);<br>- =C2=A0 =C2=A0}<br=
>-<br>- =C2=A0 =C2=A0if (state)<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;resul=
t[retu_adc_hook_det] =3D 50;<br>- =C2=A0 =C2=A0else<br>- =C2=A0 =C2=A0 =C2=
=A0 =C2=A0s-&gt;result[retu_adc_hook_det] =3D 123;<br>=C2=A0}<br>-#endif<br=
>=C2=A0<br>=C2=A0/* Tahvo/Betty */<br>=C2=A0typedef struct {<br>@@ -485,20 =
+456,20 @@ static void tahvo_interrupt_update(CBusTahvo *s)<br>=C2=A0 =C2=
=A0 =C2=A0qemu_set_irq(s-&gt;irq, s-&gt;irqst &amp; ~s-&gt;irqen);<br>=C2=
=A0}<br>=C2=A0<br>-#define TAHVO_REG_ASICR		0x00	/* (RO) ASIC ID &amp; revi=
sion */<br>-#define TAHVO_REG_IDR		0x01	/* (T) =C2=A0Interrupt ID */<br>-#d=
efine TAHVO_REG_IDSR		0x02	/* (RO) Interrupt status */<br>-#define TAHVO_RE=
G_IMR		0x03	/* (RW) Interrupt mask */<br>-#define TAHVO_REG_CHAPWMR	0x04	/*=
 (RW) Charger PWM */<br>-#define TAHVO_REG_LEDPWMR	0x05	/* (RW) LED PWM */<=
br>-#define TAHVO_REG_USBR		0x06	/* (RW) USB control */<br>-#define TAHVO_R=
EG_RCR		0x07	/* (RW) Some kind of power management */<br>-#define TAHVO_REG=
_CCR1		0x08	/* (RW) Common control register 1 */<br>-#define TAHVO_REG_CCR2=
		0x09	/* (RW) Common control register 2 */<br>-#define TAHVO_REG_TESTR1	0x=
0a	/* (RW) Test register 1 */<br>-#define TAHVO_REG_TESTR2	0x0b	/* (RW) Tes=
t register 2 */<br>-#define TAHVO_REG_NOPR		0x0c	/* (RW) Number of periods =
*/<br>-#define TAHVO_REG_FRR		0x0d	/* (RO) FR */<br>+#define TAHVO_REG_ASIC=
R =C2=A0 0x00 =C2=A0/* (RO) ASIC ID &amp; revision */<br>+#define TAHVO_REG=
_IDR =C2=A0 =C2=A0 0x01 =C2=A0/* (T) =C2=A0Interrupt ID */<br>+#define TAHV=
O_REG_IDSR =C2=A0 =C2=A00x02 =C2=A0/* (RO) Interrupt status */<br>+#define =
TAHVO_REG_IMR =C2=A0 =C2=A0 0x03 =C2=A0/* (RW) Interrupt mask */<br>+#defin=
e TAHVO_REG_CHAPWMR 0x04 =C2=A0/* (RW) Charger PWM */<br>+#define TAHVO_REG=
_LEDPWMR 0x05 =C2=A0/* (RW) LED PWM */<br>+#define TAHVO_REG_USBR =C2=A0 =
=C2=A00x06 =C2=A0/* (RW) USB control */<br>+#define TAHVO_REG_RCR =C2=A0 =
=C2=A0 0x07 =C2=A0/* (RW) Some kind of power management */<br>+#define TAHV=
O_REG_CCR1 =C2=A0 =C2=A00x08 =C2=A0/* (RW) Common control register 1 */<br>=
+#define TAHVO_REG_CCR2 =C2=A0 =C2=A00x09 =C2=A0/* (RW) Common control regi=
ster 2 */<br>+#define TAHVO_REG_TESTR1 =C2=A00x0a =C2=A0/* (RW) Test regist=
er 1 */<br>+#define TAHVO_REG_TESTR2 =C2=A00x0b =C2=A0/* (RW) Test register=
 2 */<br>+#define TAHVO_REG_NOPR =C2=A0 =C2=A00x0c =C2=A0/* (RW) Number of =
periods */<br>+#define TAHVO_REG_FRR =C2=A0 =C2=A0 0x0d =C2=A0/* (RO) FR */=
<br>=C2=A0<br>=C2=A0static inline uint16_t tahvo_read(CBusTahvo *s, int reg=
)<br>=C2=A0{<br>@@ -508,10 +479,10 @@ static inline uint16_t tahvo_read(CBu=
sTahvo *s, int reg)<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (reg) {<br>=C2=
=A0 =C2=A0 =C2=A0case TAHVO_REG_ASICR:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0retu=
rn 0x0021 | (s-&gt;is_betty ? 0x0b00 : 0x0300);	/* 22 in N810 */<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return 0x0021 | (s-&gt;is_betty ? 0x0b00 : 0x0300);=
 =C2=A0/* 22 in N810 */<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0case TAHVO_REG_IDR=
:<br>- =C2=A0 =C2=A0case TAHVO_REG_IDSR:	/* XXX: what does this do? =C2=A0*=
/<br>+ =C2=A0 =C2=A0case TAHVO_REG_IDSR: =C2=A0/* XXX: what does this do? =
=C2=A0*/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;irqst;<br>=C2=A0=
<br>=C2=A0 =C2=A0 =C2=A0case TAHVO_REG_IMR:<br>@@ -596,10 +567,11 @@ static=
 void tahvo_io(void *opaque, int rw, int reg, uint16_t *val)<br>=C2=A0{<br>=
=C2=A0 =C2=A0 =C2=A0CBusTahvo *s =3D (CBusTahvo *) opaque;<br>=C2=A0<br>- =
=C2=A0 =C2=A0if (rw)<br>+ =C2=A0 =C2=A0if (rw) {<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0*val =3D tahvo_read(s, reg);<br>- =C2=A0 =C2=A0else<br>+ =C2=
=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0tahvo_write(s, reg,=
 *val);<br>+ =C2=A0 }<br>=C2=A0}<br>=C2=A0<br>=C2=A0void *tahvo_init(qemu_i=
rq irq, int betty)<br>diff --git a/hw/misc/omap_clk.c b/hw/misc/omap_clk.c<=
br>index c77ca2fc74..ec2345e9ab 100644<br>--- a/hw/misc/omap_clk.c<br>+++ b=
/hw/misc/omap_clk.c<br>@@ -30,174 +30,174 @@ struct clk {<br>=C2=A0 =C2=A0 =
=C2=A0struct clk *parent;<br>=C2=A0 =C2=A0 =C2=A0struct clk *child1;<br>=C2=
=A0 =C2=A0 =C2=A0struct clk *sibling;<br>-#define ALWAYS_ENABLED		(1 &lt;&l=
t; 0)<br>-#define CLOCK_IN_OMAP310	(1 &lt;&lt; 10)<br>-#define CLOCK_IN_OMA=
P730	(1 &lt;&lt; 11)<br>-#define CLOCK_IN_OMAP1510	(1 &lt;&lt; 12)<br>-#def=
ine CLOCK_IN_OMAP16XX	(1 &lt;&lt; 13)<br>-#define CLOCK_IN_OMAP242X	(1 &lt;=
&lt; 14)<br>-#define CLOCK_IN_OMAP243X	(1 &lt;&lt; 15)<br>-#define CLOCK_IN=
_OMAP343X	(1 &lt;&lt; 16)<br>+#define ALWAYS_ENABLED =C2=A0 =C2=A0(1 &lt;&l=
t; 0)<br>+#define CLOCK_IN_OMAP310 =C2=A0(1 &lt;&lt; 10)<br>+#define CLOCK_=
IN_OMAP730 =C2=A0(1 &lt;&lt; 11)<br>+#define CLOCK_IN_OMAP1510 (1 &lt;&lt; =
12)<br>+#define CLOCK_IN_OMAP16XX (1 &lt;&lt; 13)<br>+#define CLOCK_IN_OMAP=
242X (1 &lt;&lt; 14)<br>+#define CLOCK_IN_OMAP243X (1 &lt;&lt; 15)<br>+#def=
ine CLOCK_IN_OMAP343X (1 &lt;&lt; 16)<br>=C2=A0 =C2=A0 =C2=A0uint32_t flags=
;<br>=C2=A0 =C2=A0 =C2=A0int id;<br>=C2=A0<br>- =C2=A0 =C2=A0int running;		=
/* Is currently ticking */<br>- =C2=A0 =C2=A0int enabled;		/* Is enabled, r=
egardless of its input clk */<br>- =C2=A0 =C2=A0unsigned long rate;		/* Cur=
rent rate (if .running) */<br>- =C2=A0 =C2=A0unsigned int divisor;	/* Rate =
relative to input (if .enabled) */<br>- =C2=A0 =C2=A0unsigned int multiplie=
r;	/* Rate relative to input (if .enabled) */<br>- =C2=A0 =C2=A0qemu_irq us=
ers[16];		/* Who to notify on change */<br>- =C2=A0 =C2=A0int usecount;		/*=
 Automatically idle when unused */<br>+ =C2=A0 =C2=A0int running; =C2=A0 =
=C2=A0/* Is currently ticking */<br>+ =C2=A0 =C2=A0int enabled; =C2=A0 =C2=
=A0/* Is enabled, regardless of its input clk */<br>+ =C2=A0 =C2=A0unsigned=
 long rate; =C2=A0 =C2=A0/* Current rate (if .running) */<br>+ =C2=A0 =C2=
=A0unsigned int divisor; /*g Rate relative to input (if .enabled) */<br>+ =
=C2=A0 =C2=A0unsigned int multiplier; /*g Rate relative to input (if .enabl=
ed) */<br>+ =C2=A0 =C2=A0qemu_irq users[16]; =C2=A0 =C2=A0/* Who to notify =
on change */<br>+ =C2=A0 =C2=A0int usecount; =C2=A0 =C2=A0/* Automatically =
idle when unused */<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk xtal_o=
sc12m =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;xtal_osc_12m&quot;,<br>- =C2=
=A0 =C2=A0.rate	=3D 12000000,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP151=
0 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>+ =C2=A0 =C2=A0.name =3D &quot=
;xtal_osc_12m&quot;,<br>+ =C2=A0 =C2=A0.rate =3D 12000000,<br>+ =C2=A0 =C2=
=A0.flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>=
=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk xtal_osc32k =3D {<br>- =C2=A0=
 =C2=A0.name	=3D &quot;xtal_osc_32k&quot;,<br>- =C2=A0 =C2=A0.rate	=3D 3276=
8,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLO=
CK_IN_OMAP310 |<br>+ =C2=A0 =C2=A0.name =3D &quot;xtal_osc_32k&quot;,<br>+ =
=C2=A0 =C2=A0.rate =3D 32768,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP151=
0 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>=C2=A0};<br>=
=C2=A0<br>=C2=A0static struct clk ck_ref =3D {<br>- =C2=A0 =C2=A0.name	=3D =
&quot;ck_ref&quot;,<br>- =C2=A0 =C2=A0.alias	=3D &quot;clkin&quot;,<br>- =
=C2=A0 =C2=A0.parent	=3D &amp;xtal_osc12m,<br>- =C2=A0 =C2=A0.flags	=3D CLO=
CK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |<br>+ =C2=A0 =C2=A0.=
name =3D &quot;ck_ref&quot;,<br>+ =C2=A0 =C2=A0.alias =3D &quot;clkin&quot;=
,<br>+ =C2=A0 =C2=A0.parent =3D &amp;xtal_osc12m,<br>+ =C2=A0 =C2=A0.flags =
=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=
=A0<br>=C2=A0/* If a dpll is disabled it becomes a bypass, child clocks don=
&#39;t stop */<br>=C2=A0static struct clk dpll1 =3D {<br>- =C2=A0 =C2=A0.na=
me	=3D &quot;dpll1&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;ck_ref,<br>- =
=C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OM=
AP310 |<br>+ =C2=A0 =C2=A0.name =3D &quot;dpll1&quot;,<br>+ =C2=A0 =C2=A0.p=
arent =3D &amp;ck_ref,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510 | CLO=
CK_IN_OMAP16XX | CLOCK_IN_OMAP310 |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct c=
lk dpll2 =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;dpll2&quot;,<br>- =C2=A0 =
=C2=A0.parent	=3D &amp;ck_ref,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP31=
0 | ALWAYS_ENABLED,<br>+ =C2=A0 =C2=A0.name =3D &quot;dpll2&quot;,<br>+ =C2=
=A0 =C2=A0.parent =3D &amp;ck_ref,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OM=
AP310 | ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk dp=
ll3 =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;dpll3&quot;,<br>- =C2=A0 =C2=A0=
.parent	=3D &amp;ck_ref,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP310 | AL=
WAYS_ENABLED,<br>+ =C2=A0 =C2=A0.name =3D &quot;dpll3&quot;,<br>+ =C2=A0 =
=C2=A0.parent =3D &amp;ck_ref,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP31=
0 | ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk dpll4 =
=3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;dpll4&quot;,<br>- =C2=A0 =C2=A0.par=
ent	=3D &amp;ck_ref,<br>- =C2=A0 =C2=A0.multiplier	=3D 4,<br>- =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>=
+ =C2=A0 =C2=A0.name =3D &quot;dpll4&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &=
amp;ck_ref,<br>+ =C2=A0 =C2=A0.multiplier =3D 4,<br>+ =C2=A0 =C2=A0.flags =
=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>=C2=A0};<b=
r>=C2=A0<br>=C2=A0static struct clk apll =3D {<br>- =C2=A0 =C2=A0.name	=3D =
&quot;apll&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;ck_ref,<br>- =C2=A0 =
=C2=A0.multiplier	=3D 48,<br>- =C2=A0 =C2=A0.divisor	=3D 12,<br>- =C2=A0 =
=C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<=
br>+ =C2=A0 =C2=A0.name =3D &quot;apll&quot;,<br>+ =C2=A0 =C2=A0.parent =3D=
 &amp;ck_ref,<br>+ =C2=A0 =C2=A0.multiplier =3D 48,<br>+ =C2=A0 =C2=A0.divi=
sor =3D 12,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP1=
6XX | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk ck=
_48m =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;ck_48m&quot;,<br>- =C2=A0 =C2=
=A0.parent	=3D &amp;dpll4,	/* either dpll4 or apll */<br>- =C2=A0 =C2=A0.fl=
ags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>+ =C2=
=A0 =C2=A0.name =3D &quot;ck_48m&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;=
dpll4, /*g either dpll4 or apll */<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OM=
AP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<br>=C2=
=A0static struct clk ck_dpll1out =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;ck=
_dpll1out&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;dpll1,<br>- =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.name =3D &quot;ck_dpll1=
out&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;dpll1,<br>+ =C2=A0 =C2=A0.fla=
gs =3D CLOCK_IN_OMAP16XX,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk =
sossi_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;ck_sossi&quot;,<br>- =C2=
=A0 =C2=A0.parent	=3D &amp;ck_dpll1out,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_=
IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.name =3D &quot;ck_sossi&quot;,<br>+ =C2=A0 =
=C2=A0.parent =3D &amp;ck_dpll1out,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_O=
MAP16XX,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk clkm1 =3D {<br>- =
=C2=A0 =C2=A0.name	=3D &quot;clkm1&quot;,<br>- =C2=A0 =C2=A0.alias	=3D &quo=
t;ck_gen1&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;dpll1,<br>- =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |<br=
>+ =C2=A0 =C2=A0.name =3D &quot;clkm1&quot;,<br>+ =C2=A0 =C2=A0.alias =3D &=
quot;ck_gen1&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;dpll1,<br>+ =C2=A0 =
=C2=A0.flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ALWAYS_ENABLED,<br>=C2=
=A0};<br>=C2=A0<br>=C2=A0static struct clk clkm2 =3D {<br>- =C2=A0 =C2=A0.n=
ame	=3D &quot;clkm2&quot;,<br>- =C2=A0 =C2=A0.alias	=3D &quot;ck_gen2&quot;=
,<br>- =C2=A0 =C2=A0.parent	=3D &amp;dpll1,<br>- =C2=A0 =C2=A0.flags	=3D CL=
OCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |<br>+ =C2=A0 =C2=A0=
.name =3D &quot;clkm2&quot;,<br>+ =C2=A0 =C2=A0.alias =3D &quot;ck_gen2&quo=
t;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;dpll1,<br>+ =C2=A0 =C2=A0.flags =3D =
CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br=
>=C2=A0static struct clk clkm3 =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;clkm=
3&quot;,<br>- =C2=A0 =C2=A0.alias	=3D &quot;ck_gen3&quot;,<br>- =C2=A0 =C2=
=A0.parent	=3D &amp;dpll1,	/* either dpll1 or ck_ref */<br>- =C2=A0 =C2=A0.=
flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |<br>+ =
=C2=A0 =C2=A0.name =3D &quot;clkm3&quot;,<br>+ =C2=A0 =C2=A0.alias =3D &quo=
t;ck_gen3&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;dpll1, /*g either dpll1=
 or ck_ref */<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMA=
P16XX | CLOCK_IN_OMAP310 |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk arm_ck =
=3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;arm_ck&quot;,<br>- =C2=A0 =C2=A0.al=
ias	=3D &quot;mpu_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;clkm1,<br>- =
=C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OM=
AP310 |<br>+ =C2=A0 =C2=A0.name =3D &quot;arm_ck&quot;,<br>+ =C2=A0 =C2=A0.=
alias =3D &quot;mpu_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;clkm1,<br>=
+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_=
OMAP310 |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ALWAYS_ENABLED=
,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk armper_ck =3D {<br>- =C2=
=A0 =C2=A0.name	=3D &quot;armper_ck&quot;,<br>- =C2=A0 =C2=A0.alias	=3D &qu=
ot;mpuper_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;clkm1,<br>- =C2=A0 =
=C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<=
br>+ =C2=A0 =C2=A0.name =3D &quot;armper_ck&quot;,<br>+ =C2=A0 =C2=A0.alias=
 =3D &quot;mpuper_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;clkm1,<br>+ =
=C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OM=
AP310,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk arm_gpio_ck =3D {<b=
r>- =C2=A0 =C2=A0.name	=3D &quot;arm_gpio_ck&quot;,<br>- =C2=A0 =C2=A0.alia=
s	=3D &quot;mpu_gpio_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;clkm1,<br=
>- =C2=A0 =C2=A0.divisor	=3D 1,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1=
510 | CLOCK_IN_OMAP310,<br>+ =C2=A0 =C2=A0.name =3D &quot;arm_gpio_ck&quot;=
,<br>+ =C2=A0 =C2=A0.alias =3D &quot;mpu_gpio_ck&quot;,<br>+ =C2=A0 =C2=A0.=
parent =3D &amp;clkm1,<br>+ =C2=A0 =C2=A0.divisor =3D 1,<br>+ =C2=A0 =C2=A0=
.flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<br>=
=C2=A0static struct clk armxor_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;a=
rmxor_ck&quot;,<br>- =C2=A0 =C2=A0.alias	=3D &quot;mpuxor_ck&quot;,<br>- =
=C2=A0 =C2=A0.parent	=3D &amp;ck_ref,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN=
_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>+ =C2=A0 =C2=A0.name =
=3D &quot;armxor_ck&quot;,<br>+ =C2=A0 =C2=A0.alias =3D &quot;mpuxor_ck&quo=
t;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;ck_ref,<br>+ =C2=A0 =C2=A0.flags =3D=
 CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=
=C2=A0<br>=C2=A0static struct clk armtim_ck =3D {<br>- =C2=A0 =C2=A0.name	=
=3D &quot;armtim_ck&quot;,<br>- =C2=A0 =C2=A0.alias	=3D &quot;mputim_ck&quo=
t;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;ck_ref,	/* either CLKIN or DPLL1 */<=
br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_=
IN_OMAP310,<br>+ =C2=A0 =C2=A0.name =3D &quot;armtim_ck&quot;,<br>+ =C2=A0 =
=C2=A0.alias =3D &quot;mputim_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;=
ck_ref, /*g either CLKIN or DPLL1 */<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_=
OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<br>=
=C2=A0static struct clk armwdt_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;a=
rmwdt_ck&quot;,<br>- =C2=A0 =C2=A0.alias	=3D &quot;mpuwd_ck&quot;,<br>- =C2=
=A0 =C2=A0.parent	=3D &amp;clkm1,<br>- =C2=A0 =C2=A0.divisor	=3D 14,<br>- =
=C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OM=
AP310 |<br>+ =C2=A0 =C2=A0.name =3D &quot;armwdt_ck&quot;,<br>+ =C2=A0 =C2=
=A0.alias =3D &quot;mpuwd_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;clkm=
1,<br>+ =C2=A0 =C2=A0.divisor =3D 14,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN=
_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=A0s=
tatic struct clk arminth_ck16xx =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;arm=
inth_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;arm_ck,<br>- =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,<br>+ =C2=A0 =C2=A0.name =
=3D &quot;arminth_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;arm_ck,<br>+=
 =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,<br>=C2=A0 =C2=
=A0 =C2=A0/* Note: On 16xx the frequency can be divided by 2 by programming=
<br>=C2=A0 =C2=A0 =C2=A0 * ARM_CKCTL:ARM_INTHCK_SEL(14) to 1<br>=C2=A0 =C2=
=A0 =C2=A0 *<br>@@ -206,48 +206,48 @@ static struct clk arminth_ck16xx =3D =
{<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk dsp_ck =3D {<br>- =C2=A0=
 =C2=A0.name	=3D &quot;dsp_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;clk=
m2,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLO=
CK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.name =3D &quot;dsp_ck&quot;,<br>+ =C2=A0=
 =C2=A0.parent =3D &amp;clkm2,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP31=
0 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,<br>=C2=A0};<br>=C2=A0<br>=C2=A0s=
tatic struct clk dspmmu_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;dspmmu_c=
k&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;clkm2,<br>- =C2=A0 =C2=A0.flags=
	=3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |<br>+ =C2=A0=
 =C2=A0.name =3D &quot;dspmmu_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;=
clkm2,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | =
CLOCK_IN_OMAP16XX |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ALWA=
YS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk dspper_ck =3D =
{<br>- =C2=A0 =C2=A0.name	=3D &quot;dspper_ck&quot;,<br>- =C2=A0 =C2=A0.par=
ent	=3D &amp;clkm2,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP310 | CLOCK_I=
N_OMAP1510 | CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.name =3D &quot;dspper_ck=
&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;clkm2,<br>+ =C2=A0 =C2=A0.flags =
=3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,<br>=C2=A0};<b=
r>=C2=A0<br>=C2=A0static struct clk dspxor_ck =3D {<br>- =C2=A0 =C2=A0.name=
	=3D &quot;dspxor_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;ck_ref,<br>-=
 =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OM=
AP16XX,<br>+ =C2=A0 =C2=A0.name =3D &quot;dspxor_ck&quot;,<br>+ =C2=A0 =C2=
=A0.parent =3D &amp;ck_ref,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP310 |=
 CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,<br>=C2=A0};<br>=C2=A0<br>=C2=A0stat=
ic struct clk dsptim_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;dsptim_ck&q=
uot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;ck_ref,<br>- =C2=A0 =C2=A0.flags	=
=3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =
=C2=A0.name =3D &quot;dsptim_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;c=
k_ref,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | =
CLOCK_IN_OMAP16XX,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk tc_ck =
=3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;tc_ck&quot;,<br>- =C2=A0 =C2=A0.par=
ent	=3D &amp;clkm3,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_=
IN_OMAP16XX |<br>+ =C2=A0 =C2=A0.name =3D &quot;tc_ck&quot;,<br>+ =C2=A0 =
=C2=A0.parent =3D &amp;clkm3,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP151=
0 | CLOCK_IN_OMAP16XX |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
CLOCK_IN_OMAP730 | CLOCK_IN_OMAP310 |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct =
clk arminth_ck15xx =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;arminth_ck&quot;=
,<br>- =C2=A0 =C2=A0.parent	=3D &amp;tc_ck,<br>- =C2=A0 =C2=A0.flags	=3D CL=
OCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED,<br>+ =C2=A0 =C2=A0.nam=
e =3D &quot;arminth_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;tc_ck,<br>=
+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENA=
BLED,<br>=C2=A0 =C2=A0 =C2=A0/* Note: On 1510 the frequency follows TC_CK<b=
r>=C2=A0 =C2=A0 =C2=A0 *<br>=C2=A0 =C2=A0 =C2=A0 * 16xx version is in MPU c=
locks.<br>@@ -256,606 +256,606 @@ static struct clk arminth_ck15xx =3D {<br=
>=C2=A0<br>=C2=A0static struct clk tipb_ck =3D {<br>=C2=A0 =C2=A0 =C2=A0/* =
No-idle controlled by &quot;tc_ck&quot; */<br>- =C2=A0 =C2=A0.name	=3D &quo=
t;tipb_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;tc_ck,<br>- =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED,<br>+ =
=C2=A0 =C2=A0.name =3D &quot;tipb_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &=
amp;tc_ck,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP31=
0 | ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk l3_ocp=
i_ck =3D {<br>=C2=A0 =C2=A0 =C2=A0/* No-idle controlled by &quot;tc_ck&quot=
; */<br>- =C2=A0 =C2=A0.name	=3D &quot;l3_ocpi_ck&quot;,<br>- =C2=A0 =C2=A0=
.parent	=3D &amp;tc_ck,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP16XX,<br>=
+ =C2=A0 =C2=A0.name =3D &quot;l3_ocpi_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =
=3D &amp;tc_ck,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP16XX,<br>=C2=A0};=
<br>=C2=A0<br>=C2=A0static struct clk tc1_ck =3D {<br>- =C2=A0 =C2=A0.name	=
=3D &quot;tc1_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;tc_ck,<br>- =C2=
=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.name =3D &quot;t=
c1_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;tc_ck,<br>+ =C2=A0 =C2=A0.f=
lags =3D CLOCK_IN_OMAP16XX,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct cl=
k tc2_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;tc2_ck&quot;,<br>- =C2=A0 =
=C2=A0.parent	=3D &amp;tc_ck,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP16X=
X,<br>+ =C2=A0 =C2=A0.name =3D &quot;tc2_ck&quot;,<br>+ =C2=A0 =C2=A0.paren=
t =3D &amp;tc_ck,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP16XX,<br>=C2=A0=
};<br>=C2=A0<br>=C2=A0static struct clk dma_ck =3D {<br>=C2=A0 =C2=A0 =C2=
=A0/* No-idle controlled by &quot;tc_ck&quot; */<br>- =C2=A0 =C2=A0.name	=
=3D &quot;dma_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;tc_ck,<br>- =C2=
=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP3=
10 |<br>+ =C2=A0 =C2=A0.name =3D &quot;dma_ck&quot;,<br>+ =C2=A0 =C2=A0.par=
ent =3D &amp;tc_ck,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510 | CLOCK_=
IN_OMAP16XX | CLOCK_IN_OMAP310 |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk =
dma_lcdfree_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;dma_lcdfree_ck&quot;=
,<br>- =C2=A0 =C2=A0.parent	=3D &amp;tc_ck,<br>- =C2=A0 =C2=A0.flags	=3D CL=
OCK_IN_OMAP16XX | ALWAYS_ENABLED,<br>+ =C2=A0 =C2=A0.name =3D &quot;dma_lcd=
free_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;tc_ck,<br>+ =C2=A0 =C2=A0=
.flags =3D CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=
=A0static struct clk api_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;api_ck&=
quot;,<br>- =C2=A0 =C2=A0.alias	=3D &quot;mpui_ck&quot;,<br>- =C2=A0 =C2=A0=
.parent	=3D &amp;tc_ck,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CL=
OCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>+ =C2=A0 =C2=A0.name =3D &quot;api_c=
k&quot;,<br>+ =C2=A0 =C2=A0.alias =3D &quot;mpui_ck&quot;,<br>+ =C2=A0 =C2=
=A0.parent =3D &amp;tc_ck,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510 |=
 CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<br>=C2=A0stati=
c struct clk lb_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;lb_ck&quot;,<br>=
- =C2=A0 =C2=A0.parent	=3D &amp;tc_ck,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_I=
N_OMAP1510 | CLOCK_IN_OMAP310,<br>+ =C2=A0 =C2=A0.name =3D &quot;lb_ck&quot=
;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;tc_ck,<br>+ =C2=A0 =C2=A0.flags =3D C=
LOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static =
struct clk lbfree_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;lbfree_ck&quot=
;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;tc_ck,<br>- =C2=A0 =C2=A0.flags	=3D C=
LOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,<br>+ =C2=A0 =C2=A0.name =3D &quot;lbfr=
ee_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;tc_ck,<br>+ =C2=A0 =C2=A0.f=
lags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<br>=C2=
=A0static struct clk hsab_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;hsab_c=
k&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;tc_ck,<br>- =C2=A0 =C2=A0.flags=
	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,<br>+ =C2=A0 =C2=A0.name =3D &quo=
t;hsab_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;tc_ck,<br>+ =C2=A0 =C2=
=A0.flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<b=
r>=C2=A0static struct clk rhea1_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;=
rhea1_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;tc_ck,<br>- =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,<br>+ =C2=A0 =C2=A0.name =
=3D &quot;rhea1_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;tc_ck,<br>+ =
=C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,<br>=C2=A0};<br>=
=C2=A0<br>=C2=A0static struct clk rhea2_ck =3D {<br>- =C2=A0 =C2=A0.name	=
=3D &quot;rhea2_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;tc_ck,<br>- =
=C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,<br>+ =C2=A0 =C2=
=A0.name =3D &quot;rhea2_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;tc_ck=
,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,<br>=C2=
=A0};<br>=C2=A0<br>=C2=A0static struct clk lcd_ck_16xx =3D {<br>- =C2=A0 =
=C2=A0.name	=3D &quot;lcd_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;clkm=
3,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP730,<br>+ =
=C2=A0 =C2=A0.name =3D &quot;lcd_ck&quot;,<br>+ =C2=A0 =C2=A0.parent =3D &a=
mp;clkm3,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP730=
,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk lcd_ck_1510 =3D {<br>- =
=C2=A0 =C2=A0.name	=3D &quot;lcd_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &a=
mp;clkm3,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310=
,<br>+ =C2=A0 =C2=A0.name =3D &quot;lcd_ck&quot;,<br>+ =C2=A0 =C2=A0.parent=
 =3D &amp;clkm3,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_=
OMAP310,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk uart1_1510 =3D {<=
br>- =C2=A0 =C2=A0.name	=3D &quot;uart1_ck&quot;,<br>+ =C2=A0 =C2=A0.name =
=3D &quot;uart1_ck&quot;,<br>=C2=A0 =C2=A0 =C2=A0/* Direct from ULPD, no re=
al parent */<br>- =C2=A0 =C2=A0.parent	=3D &amp;armper_ck,	/* either armper=
_ck or dpll4 */<br>- =C2=A0 =C2=A0.rate	=3D 12000000,<br>- =C2=A0 =C2=A0.fl=
ags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED,<br>+ =C2=A0 =
=C2=A0.parent =3D &amp;armper_ck, /*g either armper_ck or dpll4 */<br>+ =C2=
=A0 =C2=A0.rate =3D 12000000,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP151=
0 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=A0stati=
c struct clk uart1_16xx =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;uart1_ck&qu=
ot;,<br>+ =C2=A0 =C2=A0.name =3D &quot;uart1_ck&quot;,<br>=C2=A0 =C2=A0 =C2=
=A0/* Direct from ULPD, no real parent */<br>- =C2=A0 =C2=A0.parent	=3D &am=
p;armper_ck,<br>- =C2=A0 =C2=A0.rate	=3D 48000000,<br>- =C2=A0 =C2=A0.flags=
	=3D CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.parent =3D &amp;armper_ck,<br>+ =
=C2=A0 =C2=A0.rate =3D 48000000,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP=
16XX,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk uart2_ck =3D {<br>- =
=C2=A0 =C2=A0.name	=3D &quot;uart2_ck&quot;,<br>+ =C2=A0 =C2=A0.name =3D &q=
uot;uart2_ck&quot;,<br>=C2=A0 =C2=A0 =C2=A0/* Direct from ULPD, no real par=
ent */<br>- =C2=A0 =C2=A0.parent	=3D &amp;armper_ck,	/* either armper_ck or=
 dpll4 */<br>- =C2=A0 =C2=A0.rate	=3D 12000000,<br>- =C2=A0 =C2=A0.flags	=
=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |<br>+ =C2=A0 =
=C2=A0.parent =3D &amp;armper_ck, /*g either armper_ck or dpll4 */<br>+ =C2=
=A0 =C2=A0.rate =3D 12000000,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP151=
0 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0ALWAYS_ENABLED,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static s=
truct clk uart3_1510 =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;uart3_ck&quot;=
,<br>+ =C2=A0 =C2=A0.name =3D &quot;uart3_ck&quot;,<br>=C2=A0 =C2=A0 =C2=A0=
/* Direct from ULPD, no real parent */<br>- =C2=A0 =C2=A0.parent	=3D &amp;a=
rmper_ck,	/* either armper_ck or dpll4 */<br>- =C2=A0 =C2=A0.rate	=3D 12000=
000,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | AL=
WAYS_ENABLED,<br>+ =C2=A0 =C2=A0.parent =3D &amp;armper_ck, /*g either armp=
er_ck or dpll4 */<br>+ =C2=A0 =C2=A0.rate =3D 12000000,<br>+ =C2=A0 =C2=A0.=
flags =3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED,<br>=C2=A0}=
;<br>=C2=A0<br>=C2=A0static struct clk uart3_16xx =3D {<br>- =C2=A0 =C2=A0.=
name	=3D &quot;uart3_ck&quot;,<br>+ =C2=A0 =C2=A0.name =3D &quot;uart3_ck&q=
uot;,<br>=C2=A0 =C2=A0 =C2=A0/* Direct from ULPD, no real parent */<br>- =
=C2=A0 =C2=A0.parent	=3D &amp;armper_ck,<br>- =C2=A0 =C2=A0.rate	=3D 480000=
00,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.pare=
nt =3D &amp;armper_ck,<br>+ =C2=A0 =C2=A0.rate =3D 48000000,<br>+ =C2=A0 =
=C2=A0.flags =3D CLOCK_IN_OMAP16XX,<br>=C2=A0};<br>=C2=A0<br>-static struct=
 clk usb_clk0 =3D {	/* 6 MHz output on W4_USB_CLK0 */<br>- =C2=A0 =C2=A0.na=
me	=3D &quot;usb_clk0&quot;,<br>- =C2=A0 =C2=A0.alias	=3D &quot;usb.clko&qu=
ot;,<br>+static struct clk usb_clk0 =3D { /*g 6 MHz output on W4_USB_CLK0 *=
/<br>+ =C2=A0 =C2=A0.name =3D &quot;usb_clk0&quot;,<br>+ =C2=A0 =C2=A0.alia=
s =3D &quot;usb.clko&quot;,<br>=C2=A0 =C2=A0 =C2=A0/* Direct from ULPD, no =
parent */<br>- =C2=A0 =C2=A0.rate	=3D 6000000,<br>- =C2=A0 =C2=A0.flags	=3D=
 CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>+ =C2=A0 =C2=
=A0.rate =3D 6000000,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510 | CLOC=
K_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static str=
uct clk usb_hhc_ck1510 =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;usb_hhc_ck&q=
uot;,<br>+ =C2=A0 =C2=A0.name =3D &quot;usb_hhc_ck&quot;,<br>=C2=A0 =C2=A0 =
=C2=A0/* Direct from ULPD, no parent */<br>- =C2=A0 =C2=A0.rate	=3D 4800000=
0, /* Actually 2 clocks, 12MHz and 48MHz */<br>- =C2=A0 =C2=A0.flags	=3D CL=
OCK_IN_OMAP1510 | CLOCK_IN_OMAP310,<br>+ =C2=A0 =C2=A0.rate =3D 48000000, /=
* Actually 2 clocks, 12MHz and 48MHz */<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_=
IN_OMAP1510 | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struc=
t clk usb_hhc_ck16xx =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;usb_hhc_ck&quo=
t;,<br>+ =C2=A0 =C2=A0.name =3D &quot;usb_hhc_ck&quot;,<br>=C2=A0 =C2=A0 =
=C2=A0/* Direct from ULPD, no parent */<br>- =C2=A0 =C2=A0.rate	=3D 4800000=
0,<br>+ =C2=A0 =C2=A0.rate =3D 48000000,<br>=C2=A0 =C2=A0 =C2=A0/* OTG_SYSC=
ON_2.OTG_PADEN =3D=3D 0 (not 1510-compatible) */<br>- =C2=A0 =C2=A0.flags	=
=3D CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP16XX,<br>=
=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk usb_w2fc_mclk =3D {<br>- =C2=
=A0 =C2=A0.name	=3D &quot;usb_w2fc_mclk&quot;,<br>- =C2=A0 =C2=A0.alias	=3D=
 &quot;usb_w2fc_ck&quot;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;ck_48m,<br>- =
=C2=A0 =C2=A0.rate	=3D 48000000,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP=
310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.name =3D &q=
uot;usb_w2fc_mclk&quot;,<br>+ =C2=A0 =C2=A0.alias =3D &quot;usb_w2fc_ck&quo=
t;,<br>+ =C2=A0 =C2=A0.parent =3D &amp;ck_48m,<br>+ =C2=A0 =C2=A0.rate =3D =
48000000,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510=
 | CLOCK_IN_OMAP16XX,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk mclk=
_1510 =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;mclk&quot;,<br>+ =C2=A0 =C2=
=A0.name =3D &quot;mclk&quot;,<br>=C2=A0 =C2=A0 =C2=A0/* Direct from ULPD, =
no parent. May be enabled by ext hardware. */<br>- =C2=A0 =C2=A0.rate	=3D 1=
2000000,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP1510,<br>+ =C2=A0 =C2=A0=
.rate =3D 12000000,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP1510,<br>=C2=
=A0};<br>=C2=A0<br>=C2=A0static struct clk bclk_310 =3D {<br>- =C2=A0 =C2=
=A0.name	=3D &quot;bt_mclk_out&quot;,	/* Alias midi_mclk_out? */<br>- =C2=
=A0 =C2=A0.parent	=3D &amp;armper_ck,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN=
_OMAP310,<br>+ =C2=A0 =C2=A0.name =3D &quot;bt_mclk_out&quot;, /*g Alias mi=
di_mclk_out? */<br>+ =C2=A0 =C2=A0.parent =3D &amp;armper_ck,<br>+ =C2=A0 =
=C2=A0.flags =3D CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static st=
ruct clk mclk_310 =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;com_mclk_out&quot=
;,<br>- =C2=A0 =C2=A0.parent	=3D &amp;armper_ck,<br>- =C2=A0 =C2=A0.flags	=
=3D CLOCK_IN_OMAP310,<br>+ =C2=A0 =C2=A0.name =3D &quot;com_mclk_out&quot;,=
<br>+ =C2=A0 =C2=A0.parent =3D &amp;armper_ck,<br>+ =C2=A0 =C2=A0.flags =3D=
 CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk mclk_16=
xx =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;mclk&quot;,<br>+ =C2=A0 =C2=A0.n=
ame =3D &quot;mclk&quot;,<br>=C2=A0 =C2=A0 =C2=A0/* Direct from ULPD, no pa=
rent. May be enabled by ext hardware. */<br>- =C2=A0 =C2=A0.flags	=3D CLOCK=
_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP16XX,<br>=C2=A0};<b=
r>=C2=A0<br>=C2=A0static struct clk bclk_1510 =3D {<br>- =C2=A0 =C2=A0.name=
	=3D &quot;bclk&quot;,<br>+ =C2=A0 =C2=A0.name =3D &quot;bclk&quot;,<br>=C2=
=A0 =C2=A0 =C2=A0/* Direct from ULPD, no parent. May be enabled by ext hard=
ware. */<br>- =C2=A0 =C2=A0.rate	=3D 12000000,<br>- =C2=A0 =C2=A0.flags	=3D=
 CLOCK_IN_OMAP1510,<br>+ =C2=A0 =C2=A0.rate =3D 12000000,<br>+ =C2=A0 =C2=
=A0.flags =3D CLOCK_IN_OMAP1510,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static stru=
ct clk bclk_16xx =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;bclk&quot;,<br>+ =
=C2=A0 =C2=A0.name =3D &quot;bclk&quot;,<br>=C2=A0 =C2=A0 =C2=A0/* Direct f=
rom ULPD, no parent. May be enabled by ext hardware. */<br>- =C2=A0 =C2=A0.=
flags	=3D CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP16XX=
,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk mmc1_ck =3D {<br>- =C2=
=A0 =C2=A0.name	=3D &quot;mmc_ck&quot;,<br>- =C2=A0 =C2=A0.id		=3D 1,<br>+ =
=C2=A0 =C2=A0.name =3D &quot;mmc_ck&quot;,<br>+ =C2=A0 =C2=A0.id =C2=A0=3D =
1,<br>=C2=A0 =C2=A0 =C2=A0/* Functional clock is direct from ULPD, interfac=
e clock is ARMPER */<br>- =C2=A0 =C2=A0.parent	=3D &amp;armper_ck,	/* eithe=
r armper_ck or dpll4 */<br>- =C2=A0 =C2=A0.rate	=3D 48000000,<br>- =C2=A0 =
=C2=A0.flags	=3D CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<=
br>+ =C2=A0 =C2=A0.parent =3D &amp;armper_ck, /*g either armper_ck or dpll4=
 */<br>+ =C2=A0 =C2=A0.rate =3D 48000000,<br>+ =C2=A0 =C2=A0.flags =3D CLOC=
K_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,<br>=C2=A0};<br>=C2=A0=
<br>=C2=A0static struct clk mmc2_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot=
;mmc_ck&quot;,<br>- =C2=A0 =C2=A0.id		=3D 2,<br>+ =C2=A0 =C2=A0.name =3D &q=
uot;mmc_ck&quot;,<br>+ =C2=A0 =C2=A0.id =C2=A0=3D 2,<br>=C2=A0 =C2=A0 =C2=
=A0/* Functional clock is direct from ULPD, interface clock is ARMPER */<br=
>- =C2=A0 =C2=A0.parent	=3D &amp;armper_ck,<br>- =C2=A0 =C2=A0.rate	=3D 480=
00000,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.p=
arent =3D &amp;armper_ck,<br>+ =C2=A0 =C2=A0.rate =3D 48000000,<br>+ =C2=A0=
 =C2=A0.flags =3D CLOCK_IN_OMAP16XX,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static =
struct clk cam_mclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;cam.mclk&quot;,=
<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_=
IN_OMAP16XX,<br>- =C2=A0 =C2=A0.rate	=3D 12000000,<br>+ =C2=A0 =C2=A0.name =
=3D &quot;cam.mclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP310 | C=
LOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.rate =3D 12000000,=
<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk cam_exclk =3D {<br>- =C2=
=A0 =C2=A0.name	=3D &quot;cam.exclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLO=
CK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.n=
ame =3D &quot;cam.exclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP31=
0 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,<br>=C2=A0 =C2=A0 =C2=A0/* Either=
 12M from cam.mclk or 48M from dpll4 */<br>- =C2=A0 =C2=A0.parent	=3D &amp;=
cam_mclk,<br>+ =C2=A0 =C2=A0.parent =3D &amp;cam_mclk,<br>=C2=A0};<br>=C2=
=A0<br>=C2=A0static struct clk cam_lclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &=
quot;cam.lclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP310 | CLOCK_=
IN_OMAP1510 | CLOCK_IN_OMAP16XX,<br>+ =C2=A0 =C2=A0.name =3D &quot;cam.lclk=
&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 |=
 CLOCK_IN_OMAP16XX,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk i2c_fc=
k =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;i2c_fck&quot;,<br>- =C2=A0 =C2=A0=
.id		=3D 1,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP15=
10 | CLOCK_IN_OMAP16XX |<br>+ =C2=A0 =C2=A0.name =3D &quot;i2c_fck&quot;,<b=
r>+ =C2=A0 =C2=A0.id =C2=A0=3D 1,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMA=
P310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0ALWAYS_ENABLED,<br>- =C2=A0 =C2=A0.parent	=3D &amp;=
armxor_ck,<br>+ =C2=A0 =C2=A0.parent =3D &amp;armxor_ck,<br>=C2=A0};<br>=C2=
=A0<br>=C2=A0static struct clk i2c_ick =3D {<br>- =C2=A0 =C2=A0.name	=3D &q=
uot;i2c_ick&quot;,<br>- =C2=A0 =C2=A0.id		=3D 1,<br>- =C2=A0 =C2=A0.flags	=
=3D CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,<br>- =C2=A0 =C2=A0.parent	=3D &amp;=
armper_ck,<br>+ =C2=A0 =C2=A0.name =3D &quot;i2c_ick&quot;,<br>+ =C2=A0 =C2=
=A0.id =C2=A0=3D 1,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP16XX | ALWAYS=
_ENABLED,<br>+ =C2=A0 =C2=A0.parent =3D &amp;armper_ck,<br>=C2=A0};<br>=C2=
=A0<br>=C2=A0static struct clk clk32k =3D {<br>- =C2=A0 =C2=A0.name	=3D &qu=
ot;clk32-kHz&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP310 | CLOCK_I=
N_OMAP1510 | CLOCK_IN_OMAP16XX |<br>+ =C2=A0 =C2=A0.name =3D &quot;clk32-kH=
z&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 =
| CLOCK_IN_OMAP16XX |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0CL=
OCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ALWAYS_ENABLED,<br>- =C2=A0 =C2=A0.pa=
rent	=3D &amp;xtal_osc32k,<br>+ =C2=A0 =C2=A0.parent =3D &amp;xtal_osc32k,<=
br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk ref_clk =3D {<br>- =C2=A0 =
=C2=A0.name	=3D &quot;ref_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_=
OMAP242X | CLOCK_IN_OMAP243X | ALWAYS_ENABLED,<br>- =C2=A0 =C2=A0.rate	=3D =
12000000,	/* 12 MHz or 13 MHz or 19.2 MHz */<br>- =C2=A0 =C2=A0/*.parent	=
=3D sys.xtalin */<br>+ =C2=A0 =C2=A0.name =3D &quot;ref_clk&quot;,<br>+ =C2=
=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ALWAYS_ENABLED=
,<br>+ =C2=A0 =C2=A0.rate =3D 12000000, /*g 12 MHz or 13 MHz or 19.2 MHz */=
<br>+ =C2=A0 =C2=A0/*.parent =3D sys.xtalin */<br>=C2=A0};<br>=C2=A0<br>=C2=
=A0static struct clk apll_96m =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;apll_=
96m&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP24=
3X | ALWAYS_ENABLED,<br>- =C2=A0 =C2=A0.rate	=3D 96000000,<br>- =C2=A0 =C2=
=A0/*.parent	=3D ref_clk */<br>+ =C2=A0 =C2=A0.name =3D &quot;apll_96m&quot=
;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ALW=
AYS_ENABLED,<br>+ =C2=A0 =C2=A0.rate =3D 96000000,<br>+ =C2=A0 =C2=A0/*.par=
ent =3D ref_clk */<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk apll_54=
m =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;apll_54m&quot;,<br>- =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ALWAYS_ENABLED,<br>- =
=C2=A0 =C2=A0.rate	=3D 54000000,<br>- =C2=A0 =C2=A0/*.parent	=3D ref_clk */=
<br>+ =C2=A0 =C2=A0.name =3D &quot;apll_54m&quot;,<br>+ =C2=A0 =C2=A0.flags=
 =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ALWAYS_ENABLED,<br>+ =C2=A0 =
=C2=A0.rate =3D 54000000,<br>+ =C2=A0 =C2=A0/*.parent =3D ref_clk */<br>=C2=
=A0};<br>=C2=A0<br>=C2=A0static struct clk sys_clk =3D {<br>- =C2=A0 =C2=A0=
.name	=3D &quot;sys_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP24=
2X | CLOCK_IN_OMAP243X | ALWAYS_ENABLED,<br>- =C2=A0 =C2=A0.rate	=3D 32768,=
<br>- =C2=A0 =C2=A0/*.parent	=3D sys.xtalin */<br>+ =C2=A0 =C2=A0.name =3D =
&quot;sys_clk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK=
_IN_OMAP243X | ALWAYS_ENABLED,<br>+ =C2=A0 =C2=A0.rate =3D 32768,<br>+ =C2=
=A0 =C2=A0/*.parent =3D sys.xtalin */<br>=C2=A0};<br>=C2=A0<br>=C2=A0static=
 struct clk sleep_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;sleep_clk&quo=
t;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | AL=
WAYS_ENABLED,<br>- =C2=A0 =C2=A0.rate	=3D 32768,<br>- =C2=A0 =C2=A0/*.paren=
t	=3D sys.xtalin */<br>+ =C2=A0 =C2=A0.name =3D &quot;sleep_clk&quot;,<br>+=
 =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ALWAYS_ENA=
BLED,<br>+ =C2=A0 =C2=A0.rate =3D 32768,<br>+ =C2=A0 =C2=A0/*.parent =3D sy=
s.xtalin */<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk dpll_ck =3D {<=
br>- =C2=A0 =C2=A0.name	=3D &quot;dpll&quot;,<br>- =C2=A0 =C2=A0.flags	=3D =
CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ALWAYS_ENABLED,<br>- =C2=A0 =C2=A0.=
parent	=3D &amp;ref_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;dpll&quot;,<br>+=
 =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ALWAYS_ENA=
BLED,<br>+ =C2=A0 =C2=A0.parent =3D &amp;ref_clk,<br>=C2=A0};<br>=C2=A0<br>=
=C2=A0static struct clk dpll_x2_ck =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;=
dpll_x2&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OM=
AP243X | ALWAYS_ENABLED,<br>- =C2=A0 =C2=A0.parent	=3D &amp;ref_clk,<br>+ =
=C2=A0 =C2=A0.name =3D &quot;dpll_x2&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CL=
OCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ALWAYS_ENABLED,<br>+ =C2=A0 =C2=A0.pa=
rent =3D &amp;ref_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk wdt=
1_sys_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;wdt1_sys_clk&quot;,<br>- =
=C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ALWAYS_ENAB=
LED,<br>- =C2=A0 =C2=A0.rate	=3D 32768,<br>- =C2=A0 =C2=A0/*.parent	=3D sys=
.xtalin */<br>+ =C2=A0 =C2=A0.name =3D &quot;wdt1_sys_clk&quot;,<br>+ =C2=
=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ALWAYS_ENABLED=
,<br>+ =C2=A0 =C2=A0.rate =3D 32768,<br>+ =C2=A0 =C2=A0/*.parent =3D sys.xt=
alin */<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk func_96m_clk =3D {=
<br>- =C2=A0 =C2=A0.name	=3D &quot;func_96m_clk&quot;,<br>- =C2=A0 =C2=A0.f=
lags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.divisor	=
=3D 1,<br>- =C2=A0 =C2=A0.parent	=3D &amp;apll_96m,<br>+ =C2=A0 =C2=A0.name=
 =3D &quot;func_96m_clk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP24=
2X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.divisor =3D 1,<br>+ =C2=A0 =C2=
=A0.parent =3D &amp;apll_96m,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct =
clk func_48m_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;func_48m_clk&quot;=
,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =
=C2=A0 =C2=A0.divisor	=3D 2,<br>- =C2=A0 =C2=A0.parent	=3D &amp;apll_96m,<b=
r>+ =C2=A0 =C2=A0.name =3D &quot;func_48m_clk&quot;,<br>+ =C2=A0 =C2=A0.fla=
gs =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.divisor =
=3D 2,<br>+ =C2=A0 =C2=A0.parent =3D &amp;apll_96m,<br>=C2=A0};<br>=C2=A0<b=
r>=C2=A0static struct clk func_12m_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &q=
uot;func_12m_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CL=
OCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.divisor	=3D 8,<br>- =C2=A0 =C2=A0.paren=
t	=3D &amp;apll_96m,<br>+ =C2=A0 =C2=A0.name =3D &quot;func_12m_clk&quot;,<=
br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =
=C2=A0 =C2=A0.divisor =3D 8,<br>+ =C2=A0 =C2=A0.parent =3D &amp;apll_96m,<b=
r>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk func_54m_clk =3D {<br>- =C2=
=A0 =C2=A0.name	=3D &quot;func_54m_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D =
CLOCK_IN_OMAP242X,<br>- =C2=A0 =C2=A0.divisor	=3D 1,<br>- =C2=A0 =C2=A0.par=
ent	=3D &amp;apll_54m,<br>+ =C2=A0 =C2=A0.name =3D &quot;func_54m_clk&quot;=
,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X,<br>+ =C2=A0 =C2=A0.diviso=
r =3D 1,<br>+ =C2=A0 =C2=A0.parent =3D &amp;apll_54m,<br>=C2=A0};<br>=C2=A0=
<br>=C2=A0static struct clk sys_clkout =3D {<br>- =C2=A0 =C2=A0.name	=3D &q=
uot;clkout&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN=
_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;sys_clk,<br>+ =C2=A0 =C2=A0.n=
ame =3D &quot;clkout&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X =
| CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;sys_clk,<br>=C2=A0}=
;<br>=C2=A0<br>=C2=A0static struct clk sys_clkout2 =3D {<br>- =C2=A0 =C2=A0=
.name	=3D &quot;clkout2&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP24=
2X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;sys_clk,<br>+ =
=C2=A0 =C2=A0.name =3D &quot;clkout2&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CL=
OCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;sys=
_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk core_clk =3D {<br>- =
=C2=A0 =C2=A0.name	=3D &quot;core_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D C=
LOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;dp=
ll_x2_ck,	/* Switchable between dpll_ck and clk32k */<br>+ =C2=A0 =C2=A0.na=
me =3D &quot;core_clk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X=
 | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;dpll_x2_ck, /*g Sw=
itchable between dpll_ck and clk32k */<br>=C2=A0};<br>=C2=A0<br>=C2=A0stati=
c struct clk l3_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;l3_clk&quot;,<b=
r>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=
=A0 =C2=A0.parent	=3D &amp;core_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;l3_c=
lk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243=
X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;core_clk,<br>=C2=A0};<br>=C2=A0<br>=
=C2=A0static struct clk core_l4_iclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quo=
t;core_l4_iclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOC=
K_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;l3_clk,<br>+ =C2=A0 =C2=
=A0.name =3D &quot;core_l4_iclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_I=
N_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;l3_clk,<=
br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk wu_l4_iclk =3D {<br>- =C2=
=A0 =C2=A0.name	=3D &quot;wu_l4_iclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CL=
OCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;l3_=
clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;wu_l4_iclk&quot;,<br>+ =C2=A0 =C2=A0=
.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent=
 =3D &amp;l3_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk core_l3_=
iclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;core_l3_iclk&quot;,<br>- =C2=
=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=
=A0.parent	=3D &amp;core_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;core_l3_icl=
k&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X=
,<br>+ =C2=A0 =C2=A0.parent =3D &amp;core_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=
=A0static struct clk core_l4_usb_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quo=
t;core_l4_usb_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | C=
LOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;l3_clk,<br>+ =C2=A0 =
=C2=A0.name =3D &quot;core_l4_usb_clk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D C=
LOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;l3=
_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk wu_gpt1_clk =3D {<br=
>- =C2=A0 =C2=A0.name	=3D &quot;wu_gpt1_clk&quot;,<br>- =C2=A0 =C2=A0.flags=
	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &=
amp;sys_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;wu_gpt1_clk&quot;,<br>+ =C2=
=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=
=A0.parent =3D &amp;sys_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct c=
lk wu_32k_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;wu_32k_clk&quot;,<br>=
- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=
=A0 =C2=A0.parent	=3D &amp;sys_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;wu_32=
k_clk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP=
243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;sys_clk,<br>=C2=A0};<br>=C2=A0<br>=
=C2=A0static struct clk uart1_fclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;=
uart1_fclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN=
_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;func_48m_clk,<br>+ =C2=A0 =C2=
=A0.name =3D &quot;uart1_fclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_=
OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;func_48m_c=
lk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk uart1_iclk =3D {<br>- =
=C2=A0 =C2=A0.name	=3D &quot;uart1_iclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D=
 CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;=
core_l4_iclk,<br>+ =C2=A0 =C2=A0.name =3D &quot;uart1_iclk&quot;,<br>+ =C2=
=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=
=A0.parent =3D &amp;core_l4_iclk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static str=
uct clk uart2_fclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;uart2_fclk&quot;=
,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =
=C2=A0 =C2=A0.parent	=3D &amp;func_48m_clk,<br>+ =C2=A0 =C2=A0.name =3D &qu=
ot;uart2_fclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK=
_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;func_48m_clk,<br>=C2=A0};<=
br>=C2=A0<br>=C2=A0static struct clk uart2_iclk =3D {<br>- =C2=A0 =C2=A0.na=
me	=3D &quot;uart2_iclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP24=
2X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;core_l4_iclk,<br=
>+ =C2=A0 =C2=A0.name =3D &quot;uart2_iclk&quot;,<br>+ =C2=A0 =C2=A0.flags =
=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &a=
mp;core_l4_iclk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk uart3_fcl=
k =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;uart3_fclk&quot;,<br>- =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.par=
ent	=3D &amp;func_48m_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;uart3_fclk&quo=
t;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>=
+ =C2=A0 =C2=A0.parent =3D &amp;func_48m_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=
=A0static struct clk uart3_iclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;uar=
t3_iclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OM=
AP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;core_l4_iclk,<br>+ =C2=A0 =C2=A0=
.name =3D &quot;uart3_iclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMA=
P242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;core_l4_iclk,=
<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk mpu_fclk =3D {<br>- =C2=
=A0 =C2=A0.name	=3D &quot;mpu_fclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOC=
K_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;core_=
clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;mpu_fclk&quot;,<br>+ =C2=A0 =C2=A0.f=
lags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =
=3D &amp;core_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk mpu_icl=
k =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;mpu_iclk&quot;,<br>- =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.par=
ent	=3D &amp;core_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;mpu_iclk&quot;,<br=
>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=
=A0 =C2=A0.parent =3D &amp;core_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static =
struct clk int_m_fclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;int_m_fclk&qu=
ot;,<br>- =C2=A0 =C2=A0.alias	=3D &quot;mpu_intc_fclk&quot;,<br>- =C2=A0 =
=C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.=
parent	=3D &amp;core_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;int_m_fclk&quot=
;,<br>+ =C2=A0 =C2=A0.alias =3D &quot;mpu_intc_fclk&quot;,<br>+ =C2=A0 =C2=
=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.par=
ent =3D &amp;core_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk int=
_m_iclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;int_m_iclk&quot;,<br>- =C2=
=A0 =C2=A0.alias	=3D &quot;mpu_intc_iclk&quot;,<br>- =C2=A0 =C2=A0.flags	=
=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &a=
mp;core_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;int_m_iclk&quot;,<br>+ =C2=
=A0 =C2=A0.alias =3D &quot;mpu_intc_iclk&quot;,<br>+ =C2=A0 =C2=A0.flags =
=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &a=
mp;core_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk core_gpt2_clk=
 =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;core_gpt2_clk&quot;,<br>- =C2=A0 =
=C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.=
parent	=3D &amp;sys_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;core_gpt2_clk&qu=
ot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br=
>+ =C2=A0 =C2=A0.parent =3D &amp;sys_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0st=
atic struct clk core_gpt3_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;core_=
gpt3_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_O=
MAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;sys_clk,<br>+ =C2=A0 =C2=A0.nam=
e =3D &quot;core_gpt3_clk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP=
242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;sys_clk,<br>=
=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk core_gpt4_clk =3D {<br>- =C2=
=A0 =C2=A0.name	=3D &quot;core_gpt4_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D=
 CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;=
sys_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;core_gpt4_clk&quot;,<br>+ =C2=A0=
 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0=
.parent =3D &amp;sys_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk =
core_gpt5_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;core_gpt5_clk&quot;,<=
br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =
=C2=A0 =C2=A0.parent	=3D &amp;sys_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;co=
re_gpt5_clk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_I=
N_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;sys_clk,<br>=C2=A0};<br>=C2=
=A0<br>=C2=A0static struct clk core_gpt6_clk =3D {<br>- =C2=A0 =C2=A0.name	=
=3D &quot;core_gpt6_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP24=
2X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;sys_clk,<br>+ =
=C2=A0 =C2=A0.name =3D &quot;core_gpt6_clk&quot;,<br>+ =C2=A0 =C2=A0.flags =
=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &a=
mp;sys_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk core_gpt7_clk =
=3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;core_gpt7_clk&quot;,<br>- =C2=A0 =
=C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.=
parent	=3D &amp;sys_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;core_gpt7_clk&qu=
ot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br=
>+ =C2=A0 =C2=A0.parent =3D &amp;sys_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0st=
atic struct clk core_gpt8_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;core_=
gpt8_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_O=
MAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;sys_clk,<br>+ =C2=A0 =C2=A0.nam=
e =3D &quot;core_gpt8_clk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP=
242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;sys_clk,<br>=
=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk core_gpt9_clk =3D {<br>- =C2=
=A0 =C2=A0.name	=3D &quot;core_gpt9_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D=
 CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;=
sys_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;core_gpt9_clk&quot;,<br>+ =C2=A0=
 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0=
.parent =3D &amp;sys_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk =
core_gpt10_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;core_gpt10_clk&quot;=
,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =
=C2=A0 =C2=A0.parent	=3D &amp;sys_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;co=
re_gpt10_clk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_=
IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;sys_clk,<br>=C2=A0};<br>=C2=
=A0<br>=C2=A0static struct clk core_gpt11_clk =3D {<br>- =C2=A0 =C2=A0.name=
	=3D &quot;core_gpt11_clk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP=
242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;sys_clk,<br>+ =
=C2=A0 =C2=A0.name =3D &quot;core_gpt11_clk&quot;,<br>+ =C2=A0 =C2=A0.flags=
 =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &=
amp;sys_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk core_gpt12_cl=
k =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;core_gpt12_clk&quot;,<br>- =C2=A0=
 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0=
.parent	=3D &amp;sys_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;core_gpt12_clk&=
quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<=
br>+ =C2=A0 =C2=A0.parent =3D &amp;sys_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0=
static struct clk mcbsp1_clk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;mcbsp1=
_cg&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP24=
3X,<br>- =C2=A0 =C2=A0.divisor	=3D 2,<br>- =C2=A0 =C2=A0.parent	=3D &amp;fu=
nc_96m_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;mcbsp1_cg&quot;,<br>+ =C2=A0 =
=C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.=
divisor =3D 2,<br>+ =C2=A0 =C2=A0.parent =3D &amp;func_96m_clk,<br>=C2=A0};=
<br>=C2=A0<br>=C2=A0static struct clk mcbsp2_clk =3D {<br>- =C2=A0 =C2=A0.n=
ame	=3D &quot;mcbsp2_cg&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP24=
2X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.divisor	=3D 2,<br>- =C2=A0 =C2=
=A0.parent	=3D &amp;func_96m_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;mcbsp2_=
cg&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243=
X,<br>+ =C2=A0 =C2=A0.divisor =3D 2,<br>+ =C2=A0 =C2=A0.parent =3D &amp;fun=
c_96m_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk emul_clk =3D {<=
br>- =C2=A0 =C2=A0.name	=3D &quot;emul_ck&quot;,<br>- =C2=A0 =C2=A0.flags	=
=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &a=
mp;func_54m_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;emul_ck&quot;,<br>+ =C2=
=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=
=A0.parent =3D &amp;func_54m_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static str=
uct clk sdma_fclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;sdma_fclk&quot;,<=
br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =
=C2=A0 =C2=A0.parent	=3D &amp;l3_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;sdm=
a_fclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMA=
P243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;l3_clk,<br>=C2=A0};<br>=C2=A0<br>=
=C2=A0static struct clk sdma_iclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;s=
dma_iclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_O=
MAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;core_l3_iclk, /* core_l4_iclk f=
or the configuration port */<br>+ =C2=A0 =C2=A0.name =3D &quot;sdma_iclk&qu=
ot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br=
>+ =C2=A0 =C2=A0.parent =3D &amp;core_l3_iclk, /* core_l4_iclk for the conf=
iguration port */<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk i2c1_fcl=
k =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;i2c1.fclk&quot;,<br>- =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.par=
ent	=3D &amp;func_12m_clk,<br>- =C2=A0 =C2=A0.divisor	=3D 1,<br>+ =C2=A0 =
=C2=A0.name =3D &quot;i2c1.fclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_I=
N_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;func_12m=
_clk,<br>+ =C2=A0 =C2=A0.divisor =3D 1,<br>=C2=A0};<br>=C2=A0<br>=C2=A0stat=
ic struct clk i2c1_iclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;i2c1.iclk&q=
uot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<b=
r>- =C2=A0 =C2=A0.parent	=3D &amp;core_l4_iclk,<br>+ =C2=A0 =C2=A0.name =3D=
 &quot;i2c1.iclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CL=
OCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;core_l4_iclk,<br>=C2=A0=
};<br>=C2=A0<br>=C2=A0static struct clk i2c2_fclk =3D {<br>- =C2=A0 =C2=A0.=
name	=3D &quot;i2c2.fclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP2=
42X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;func_12m_clk,<b=
r>- =C2=A0 =C2=A0.divisor	=3D 1,<br>+ =C2=A0 =C2=A0.name =3D &quot;i2c2.fcl=
k&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X=
,<br>+ =C2=A0 =C2=A0.parent =3D &amp;func_12m_clk,<br>+ =C2=A0 =C2=A0.divis=
or =3D 1,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk i2c2_iclk =3D {<=
br>- =C2=A0 =C2=A0.name	=3D &quot;i2c2.iclk&quot;,<br>- =C2=A0 =C2=A0.flags=
	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &=
amp;core_l4_iclk,<br>+ =C2=A0 =C2=A0.name =3D &quot;i2c2.iclk&quot;,<br>+ =
=C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =
=C2=A0.parent =3D &amp;core_l4_iclk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static =
struct clk gpio_dbclk[5] =3D {<br>=C2=A0 =C2=A0 =C2=A0{<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.name	=3D &quot;gpio1_dbclk&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =
=C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.parent	=3D &amp;wu_32k_clk,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.=
name =3D &quot;gpio1_dbclk&quot;,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags =
=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0=
.parent =3D &amp;wu_32k_clk,<br>=C2=A0 =C2=A0 =C2=A0}, {<br>- =C2=A0 =C2=A0=
 =C2=A0 =C2=A0.name	=3D &quot;gpio2_dbclk&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =
=C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.parent	=3D &amp;wu_32k_clk,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.=
name =3D &quot;gpio2_dbclk&quot;,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags =
=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0=
.parent =3D &amp;wu_32k_clk,<br>=C2=A0 =C2=A0 =C2=A0}, {<br>- =C2=A0 =C2=A0=
 =C2=A0 =C2=A0.name	=3D &quot;gpio3_dbclk&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =
=C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.parent	=3D &amp;wu_32k_clk,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.=
name =3D &quot;gpio3_dbclk&quot;,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags =
=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0=
.parent =3D &amp;wu_32k_clk,<br>=C2=A0 =C2=A0 =C2=A0}, {<br>- =C2=A0 =C2=A0=
 =C2=A0 =C2=A0.name	=3D &quot;gpio4_dbclk&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =
=C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.parent	=3D &amp;wu_32k_clk,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.=
name =3D &quot;gpio4_dbclk&quot;,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags =
=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0=
.parent =3D &amp;wu_32k_clk,<br>=C2=A0 =C2=A0 =C2=A0}, {<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0.name =C2=A0 =3D &quot;gpio5_dbclk&quot;,<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0.flags =C2=A0=3D CLOCK_IN_OMAP243X,<br>@@ -864,90 +=
864,90 @@ static struct clk gpio_dbclk[5] =3D {<br>=C2=A0};<br>=C2=A0<br>=
=C2=A0static struct clk gpio_iclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;g=
pio_iclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_O=
MAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;wu_l4_iclk,<br>+ =C2=A0 =C2=A0.=
name =3D &quot;gpio_iclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP2=
42X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;wu_l4_iclk,<br>=
=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk mmc_fck =3D {<br>- =C2=A0 =C2=
=A0.name	=3D &quot;mmc_fclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OM=
AP242X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;func_96m_clk,<br>+ =C2=A0 =C2=A0=
.name =3D &quot;mmc_fclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP2=
42X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;func_96m_clk,<br>=C2=A0};<br>=C2=A0=
<br>=C2=A0static struct clk mmc_ick =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot=
;mmc_iclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X,<br>- =C2=
=A0 =C2=A0.parent	=3D &amp;core_l4_iclk,<br>+ =C2=A0 =C2=A0.name =3D &quot;=
mmc_iclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X,<br>+ =C2=A0=
 =C2=A0.parent =3D &amp;core_l4_iclk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static=
 struct clk spi_fclk[3] =3D {<br>=C2=A0 =C2=A0 =C2=A0{<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.name	=3D &quot;spi1_fclk&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =C2=
=A0 =C2=A0.parent	=3D &amp;func_48m_clk,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.n=
ame =3D &quot;spi1_fclk&quot;,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags =3D C=
LOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.pare=
nt =3D &amp;func_48m_clk,<br>=C2=A0 =C2=A0 =C2=A0}, {<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.name	=3D &quot;spi2_fclk&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =C2=
=A0 =C2=A0.parent	=3D &amp;func_48m_clk,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.n=
ame =3D &quot;spi2_fclk&quot;,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags =3D C=
LOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.pare=
nt =3D &amp;func_48m_clk,<br>=C2=A0 =C2=A0 =C2=A0}, {<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.name	=3D &quot;spi3_fclk&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0.parent	=
=3D &amp;func_48m_clk,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.name =3D &quot;spi3=
_fclk&quot;,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP243X,<=
br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.parent =3D &amp;func_48m_clk,<br>=C2=A0 =
=C2=A0 =C2=A0},<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk dss_clk[2]=
 =3D {<br>=C2=A0 =C2=A0 =C2=A0{<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0.name	=3D &=
quot;dss_clk1&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OM=
AP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0.parent	=3D &am=
p;core_clk,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.name =3D &quot;dss_clk1&quot;,=
<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OM=
AP243X,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.parent =3D &amp;core_clk,<br>=C2=
=A0 =C2=A0 =C2=A0}, {<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0.name	=3D &quot;dss_c=
lk2&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | C=
LOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0.parent	=3D &amp;sys_clk,=
<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.name =3D &quot;dss_clk2&quot;,<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<b=
r>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.parent =3D &amp;sys_clk,<br>=C2=A0 =C2=A0 =
=C2=A0},<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk dss_54m_clk =3D {=
<br>- =C2=A0 =C2=A0.name	=3D &quot;dss_54m_clk&quot;,<br>- =C2=A0 =C2=A0.fl=
ags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=
=3D &amp;func_54m_clk,<br>+ =C2=A0 =C2=A0.name =3D &quot;dss_54m_clk&quot;,=
<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =
=C2=A0 =C2=A0.parent =3D &amp;func_54m_clk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0=
static struct clk dss_l3_iclk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;dss_l=
3_iclk&quot;,<br>- =C2=A0 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMA=
P243X,<br>- =C2=A0 =C2=A0.parent	=3D &amp;core_l3_iclk,<br>+ =C2=A0 =C2=A0.=
name =3D &quot;dss_l3_iclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMA=
P242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0.parent =3D &amp;core_l3_iclk,=
<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk dss_l4_iclk =3D {<br>- =
=C2=A0 =C2=A0.name	=3D &quot;dss_l4_iclk&quot;,<br>- =C2=A0 =C2=A0.flags	=
=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0.parent	=3D &a=
mp;core_l4_iclk,<br>+ =C2=A0 =C2=A0.name =3D &quot;dss_l4_iclk&quot;,<br>+ =
=C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =
=C2=A0.parent =3D &amp;core_l4_iclk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static =
struct clk spi_iclk[3] =3D {<br>=C2=A0 =C2=A0 =C2=A0{<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.name	=3D &quot;spi1_iclk&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =C2=
=A0 =C2=A0.parent	=3D &amp;core_l4_iclk,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.n=
ame =3D &quot;spi1_iclk&quot;,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags =3D C=
LOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.pare=
nt =3D &amp;core_l4_iclk,<br>=C2=A0 =C2=A0 =C2=A0}, {<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.name	=3D &quot;spi2_iclk&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =C2=
=A0 =C2=A0.parent	=3D &amp;core_l4_iclk,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.n=
ame =3D &quot;spi2_iclk&quot;,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags =3D C=
LOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.pare=
nt =3D &amp;core_l4_iclk,<br>=C2=A0 =C2=A0 =C2=A0}, {<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0.name	=3D &quot;spi3_iclk&quot;,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0.flags	=3D CLOCK_IN_OMAP243X,<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0.parent	=
=3D &amp;core_l4_iclk,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.name =3D &quot;spi3=
_iclk&quot;,<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.flags =3D CLOCK_IN_OMAP243X,<=
br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0.parent =3D &amp;core_l4_iclk,<br>=C2=A0 =
=C2=A0 =C2=A0},<br>=C2=A0};<br>=C2=A0<br>=C2=A0static struct clk omapctrl_c=
lk =3D {<br>- =C2=A0 =C2=A0.name	=3D &quot;omapctrl_iclk&quot;,<br>- =C2=A0=
 =C2=A0.flags	=3D CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,<br>+ =C2=A0 =C2=A0=
.name =3D &quot;omapctrl_iclk&quot;,<br>+ =C2=A0 =C2=A0.flags =3D CLOCK_IN_=
OMAP242X | CLOCK_IN_OMAP243X,<br>=C2=A0 =C2=A0 =C2=A0/* XXX Should be in WK=
UP domain */<br>- =C2=A0 =C2=A0.parent	=3D &amp;core_l4_iclk,<br>+ =C2=A0 =
=C2=A0.parent =3D &amp;core_l4_iclk,<br>=C2=A0};<br>=C2=A0<br>=C2=A0static =
struct clk *onchip_clks[] =3D {<br>@@ -1100,7 +1100,9 @@ void omap_clk_addu=
ser(struct clk *clk, qemu_irq user)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0qemu_=
irq *i;<br>=C2=A0<br>- =C2=A0 =C2=A0for (i =3D clk-&gt;users; *i; i ++);<br=
>+ =C2=A0 =C2=A0for (i =3D clk-&gt;users; *i; i++) {<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0;<br>+ =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0*i =3D user;<br>=C2=
=A0}<br>=C2=A0<br>@@ -1108,21 +1110,23 @@ struct clk *omap_findclk(struct o=
map_mpu_state_s *mpu, const char *name)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0s=
truct clk *i;<br>=C2=A0<br>- =C2=A0 =C2=A0for (i =3D mpu-&gt;clks; i-&gt;na=
me; i ++)<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!strcmp(i-&gt;name, name) || =
(i-&gt;alias &amp;&amp; !strcmp(i-&gt;alias, name)))<br>+ =C2=A0 =C2=A0for =
(i =3D mpu-&gt;clks; i-&gt;name; i++)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!=
strcmp(i-&gt;name, name) || (i-&gt;alias &amp;&amp; !strcmp(i-&gt;alias, na=
me))) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return i;<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0hw_error(&quot;%s: %s n=
ot found\n&quot;, __func__, name);<br>=C2=A0}<br>=C2=A0<br>=C2=A0void omap_=
clk_get(struct clk *clk)<br>=C2=A0{<br>- =C2=A0 =C2=A0clk-&gt;usecount ++;<=
br>+ =C2=A0 =C2=A0clk-&gt;usecount++;<br>=C2=A0}<br>=C2=A0<br>=C2=A0void om=
ap_clk_put(struct clk *clk)<br>=C2=A0{<br>- =C2=A0 =C2=A0if (!(clk-&gt;usec=
ount --))<br>+ =C2=A0 =C2=A0if (!(clk-&gt;usecount--)) {<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0hw_error(&quot;%s: %s is not in use\n&quot;, __func__, =
clk-&gt;name);<br>+ =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=A0static voi=
d omap_clk_update(struct clk *clk)<br>@@ -1131,19 +1135,22 @@ static void o=
map_clk_update(struct clk *clk)<br>=C2=A0 =C2=A0 =C2=A0qemu_irq *user;<br>=
=C2=A0 =C2=A0 =C2=A0struct clk *i;<br>=C2=A0<br>- =C2=A0 =C2=A0if (clk-&gt;=
parent)<br>+ =C2=A0 =C2=A0if (clk-&gt;parent) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0parent =3D clk-&gt;parent-&gt;running;<br>- =C2=A0 =C2=A0else<br>=
+ =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0parent =3D 1;<=
br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0running =3D parent &am=
p;&amp; (clk-&gt;enabled ||<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0((clk-&gt;flags &amp; ALWAYS_ENABLED) &am=
p;&amp; clk-&gt;usecount));<br>=C2=A0 =C2=A0 =C2=A0if (clk-&gt;running !=3D=
 running) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0clk-&gt;running =3D runnin=
g;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0for (user =3D clk-&gt;users; *user; user=
 ++)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0for (user =3D clk-&gt;users; *user; us=
er++) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_set_irq(*us=
er, running);<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0for (i =3D clk-&gt;child1; i;=
 i =3D i-&gt;sibling)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0for (i =3D clk-&gt;child1; i; i =3D i-&gt;sibling) {<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_clk_update(i);<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>@@ -=
1155,8 +1162,9 @@ static void omap_clk_rate_update_full(struct clk *clk, un=
signed long int rate,<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0clk-&gt;rate =3D mul=
div64(rate, mult, div);<br>=C2=A0 =C2=A0 =C2=A0if (clk-&gt;running)<br>- =
=C2=A0 =C2=A0 =C2=A0 =C2=A0for (user =3D clk-&gt;users; *user; user ++)<br>=
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0for (user =3D clk-&gt;users; *user; user++) {<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_irq_raise(*user);<b=
r>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0for (i =3D clk-&gt;=
child1; i; i =3D i-&gt;sibling)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_c=
lk_rate_update_full(i, rate,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0div * i-&gt;divisor, mult *=
 i-&gt;multiplier);<br>@@ -1180,7 +1188,9 @@ void omap_clk_reparent(struct =
clk *clk, struct clk *parent)<br>=C2=A0 =C2=A0 =C2=A0struct clk **p;<br>=C2=
=A0<br>=C2=A0 =C2=A0 =C2=A0if (clk-&gt;parent) {<br>- =C2=A0 =C2=A0 =C2=A0 =
=C2=A0for (p =3D &amp;clk-&gt;parent-&gt;child1; *p !=3D clk; p =3D &amp;(*=
p)-&gt;sibling);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0for (p =3D &amp;clk-&gt;pa=
rent-&gt;child1; *p !=3D clk; p =3D &amp;(*p)-&gt;sibling) {<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*p =3D clk-&gt;sibling;<br>=C2=A0 =C2=A0 =
=C2=A0}<br>=C2=A0<br>@@ -1202,10 +1212,11 @@ void omap_clk_onoff(struct clk=
 *clk, int on)<br>=C2=A0<br>=C2=A0void omap_clk_canidle(struct clk *clk, in=
t can)<br>=C2=A0{<br>- =C2=A0 =C2=A0if (can)<br>+ =C2=A0 =C2=A0if (can) {<b=
r>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_clk_put(clk);<br>- =C2=A0 =C2=A0el=
se<br>+ =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_clk=
_get(clk);<br>+ =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=A0void omap_clk_=
setrate(struct clk *clk, int divide, int multiply)<br>@@ -1226,27 +1237,29 =
@@ void omap_clk_init(struct omap_mpu_state_s *mpu)<br>=C2=A0 =C2=A0 =C2=A0=
int count;<br>=C2=A0 =C2=A0 =C2=A0int flag;<br>=C2=A0<br>- =C2=A0 =C2=A0if =
(cpu_is_omap310(mpu))<br>+ =C2=A0 =C2=A0if (cpu_is_omap310(mpu)) {<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0flag =3D CLOCK_IN_OMAP310;<br>- =C2=A0 =C2=
=A0else if (cpu_is_omap1510(mpu))<br>+ =C2=A0 =C2=A0} else if (cpu_is_omap1=
510(mpu)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0flag =3D CLOCK_IN_OMAP1510=
;<br>- =C2=A0 =C2=A0else if (cpu_is_omap2410(mpu) || cpu_is_omap2420(mpu))<=
br>+ =C2=A0 =C2=A0} else if (cpu_is_omap2410(mpu) || cpu_is_omap2420(mpu)) =
{<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0flag =3D CLOCK_IN_OMAP242X;<br>- =C2=
=A0 =C2=A0else if (cpu_is_omap2430(mpu))<br>+ =C2=A0 =C2=A0} else if (cpu_i=
s_omap2430(mpu)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0flag =3D CLOCK_IN_O=
MAP243X;<br>- =C2=A0 =C2=A0else if (cpu_is_omap3430(mpu))<br>+ =C2=A0 =C2=
=A0} else if (cpu_is_omap3430(mpu)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
flag =3D CLOCK_IN_OMAP243X;<br>- =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0} else=
 {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return;<br>+ =C2=A0 =C2=A0}<br>=C2=
=A0<br>- =C2=A0 =C2=A0for (i =3D onchip_clks, count =3D 0; *i; i ++)<br>- =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if ((*i)-&gt;flags &amp; flag)<br>- =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0count ++;<br>+ =C2=A0 =C2=A0for (i =3D onchi=
p_clks, count =3D 0; *i; i++)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((*i)-&gt;=
flags &amp; flag) {<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0count++;<=
br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0mpu-&gt;clks =3D g=
_new0(struct clk, count + 1);<br>- =C2=A0 =C2=A0for (i =3D onchip_clks, j =
=3D mpu-&gt;clks; *i; i ++)<br>+ =C2=A0 =C2=A0for (i =3D onchip_clks, j =3D=
 mpu-&gt;clks; *i; i++)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((*i)-&gt;f=
lags &amp; flag) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0memcp=
y(j, *i, sizeof(struct clk));<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0for (k =3D mpu-&gt;clks; k &lt; j; k ++)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0for (k =3D mpu-&gt;clks; k &lt; j; k++)<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (j-&gt;parent &amp;&amp;=
 !strcmp(j-&gt;parent-&gt;name, k-&gt;name)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0j-&gt;parent =3D k;<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0j-&gt;sibling =3D k-&gt;child1;<br>@@ -1258,9 +1271,9 @@ void omap_clk_i=
nit(struct omap_mpu_state_s *mpu)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0j-&gt;divisor =3D j-&gt;divisor ?: 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0j-&gt;multiplier =3D j-&gt;multiplier ?: 1;<br>- =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0j ++;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0j++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>- =C2=A0 =C2=A0=
for (j =3D mpu-&gt;clks; count --; j ++) {<br>+ =C2=A0 =C2=A0for (j =3D mpu=
-&gt;clks; count--; j++) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_clk_up=
date(j);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_clk_rate_update(j);<br>=
=C2=A0 =C2=A0 =C2=A0}<br>diff --git a/hw/misc/omap_l4.c b/hw/misc/omap_l4.c=
<br>index b7875489da..e0f5cea921 100644<br>--- a/hw/misc/omap_l4.c<br>+++ b=
/hw/misc/omap_l4.c<br>@@ -61,13 +61,13 @@ static uint64_t omap_l4ta_read(vo=
id *opaque, hwaddr addr, unsigned size)<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<=
br>=C2=A0 =C2=A0 =C2=A0switch (addr) {<br>- =C2=A0 =C2=A0case 0x00:	/* COMP=
ONENT */<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/* COMPONENT */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;component;<br>=C2=A0<br>- =C2=A0 =C2=
=A0case 0x20:	/* AGENT_CONTROL */<br>+ =C2=A0 =C2=A0case 0x20: =C2=A0/* AGE=
NT_CONTROL */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;control;<br=
>=C2=A0<br>- =C2=A0 =C2=A0case 0x28:	/* AGENT_STATUS */<br>+ =C2=A0 =C2=A0c=
ase 0x28: =C2=A0/* AGENT_STATUS */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ret=
urn s-&gt;status;<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>@@ -86,15 +86,16 @@=
 static void omap_l4ta_write(void *opaque, hwaddr addr,<br>=C2=A0 =C2=A0 =
=C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (addr) {<br>- =C2=A0 =C2=A0=
case 0x00:	/* COMPONENT */<br>- =C2=A0 =C2=A0case 0x28:	/* AGENT_STATUS */<=
br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/* COMPONENT */<br>+ =C2=A0 =C2=A0case 0=
x28: =C2=A0/* AGENT_STATUS */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0OMAP_RO_=
REG(addr);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=
=A0 =C2=A0case 0x20:	/* AGENT_CONTROL */<br>+ =C2=A0 =C2=A0case 0x20: =C2=
=A0/* AGENT_CONTROL */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;control =
=3D value &amp; 0x01000700;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp;=
 1)					/* OCP_RESET */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt=
;status &amp;=3D ~1;				/* REQ_TIMEOUT */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0i=
f (value &amp; 1) { =C2=A0 =C2=A0 =C2=A0 =C2=A0/* OCP_RESET */<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;status &amp;=3D ~1; =C2=A0 =C2=A0 =
=C2=A0 =C2=A0/* REQ_TIMEOUT */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0default:=
<br>@@ -117,7 +118,7 @@ struct omap_target_agent_s *omap_l4ta_get(struct om=
ap_l4_s *bus,<br>=C2=A0 =C2=A0 =C2=A0struct omap_target_agent_s *ta =3D NUL=
L;<br>=C2=A0 =C2=A0 =C2=A0const struct omap_l4_agent_info_s *info =3D NULL;=
<br>=C2=A0<br>- =C2=A0 =C2=A0for (i =3D 0; i &lt; bus-&gt;ta_num; i ++)<br>=
+ =C2=A0 =C2=A0for (i =3D 0; i &lt; bus-&gt;ta_num; i++)<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0if (agents[i].ta =3D=3D cs) {<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0ta =3D &amp;bus-&gt;ta[i];<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0info =3D &amp;agents[i];<br>@@ -134,7 +135,7=
 @@ struct omap_target_agent_s *omap_l4ta_get(struct omap_l4_s *bus,<br>=C2=
=A0<br>=C2=A0 =C2=A0 =C2=A0ta-&gt;component =3D (&#39;Q&#39; &lt;&lt; 24) |=
 (&#39;E&#39; &lt;&lt; 16) | (&#39;M&#39; &lt;&lt; 8) | (&#39;U&#39; &lt;&l=
t; 0);<br>=C2=A0 =C2=A0 =C2=A0ta-&gt;status =3D 0x00000000;<br>- =C2=A0 =C2=
=A0ta-&gt;control =3D 0x00000200;	/* XXX 01000200 for L4TAO */<br>+ =C2=A0 =
=C2=A0ta-&gt;control =3D 0x00000200; /* XXX 01000200 for L4TAO */<br>=C2=A0=
<br>=C2=A0 =C2=A0 =C2=A0memory_region_init_io(&amp;ta-&gt;iomem, NULL, &amp=
;omap_l4ta_ops, ta, &quot;omap.l4ta&quot;,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_l=
4_region_size(ta, info-&gt;ta_region));<br>diff --git a/hw/misc/omap_sdrc.c=
 b/hw/misc/omap_sdrc.c<br>index 6aa1b3ef7f..21d3ca8683 100644<br>--- a/hw/m=
isc/omap_sdrc.c<br>+++ b/hw/misc/omap_sdrc.c<br>@@ -40,44 +40,44 @@ static =
uint64_t omap_sdrc_read(void *opaque, hwaddr addr, unsigned size)<br>=C2=A0=
 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (addr) {<br>- =C2=
=A0 =C2=A0case 0x00:	/* SDRC_REVISION */<br>+ =C2=A0 =C2=A0case 0x00: =C2=
=A0/* SDRC_REVISION */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x20;<br=
>=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* SDRC_SYSCONFIG */<br>+ =C2=A0 =C2=
=A0case 0x10: =C2=A0/* SDRC_SYSCONFIG */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return s-&gt;config;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x14:	/* SDRC_SYSS=
TATUS */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0return 1;						/* RESETDONE */<br>=
-<br>- =C2=A0 =C2=A0case 0x40:	/* SDRC_CS_CFG */<br>- =C2=A0 =C2=A0case 0x4=
4:	/* SDRC_SHARING */<br>- =C2=A0 =C2=A0case 0x48:	/* SDRC_ERR_ADDR */<br>-=
 =C2=A0 =C2=A0case 0x4c:	/* SDRC_ERR_TYPE */<br>- =C2=A0 =C2=A0case 0x60:	/=
* SDRC_DLLA_SCTRL */<br>- =C2=A0 =C2=A0case 0x64:	/* SDRC_DLLA_STATUS */<br=
>- =C2=A0 =C2=A0case 0x68:	/* SDRC_DLLB_CTRL */<br>- =C2=A0 =C2=A0case 0x6c=
:	/* SDRC_DLLB_STATUS */<br>- =C2=A0 =C2=A0case 0x70:	/* SDRC_POWER */<br>-=
 =C2=A0 =C2=A0case 0x80:	/* SDRC_MCFG_0 */<br>- =C2=A0 =C2=A0case 0x84:	/* =
SDRC_MR_0 */<br>- =C2=A0 =C2=A0case 0x88:	/* SDRC_EMR1_0 */<br>- =C2=A0 =C2=
=A0case 0x8c:	/* SDRC_EMR2_0 */<br>- =C2=A0 =C2=A0case 0x90:	/* SDRC_EMR3_0=
 */<br>- =C2=A0 =C2=A0case 0x94:	/* SDRC_DCDL1_CTRL */<br>- =C2=A0 =C2=A0ca=
se 0x98:	/* SDRC_DCDL2_CTRL */<br>- =C2=A0 =C2=A0case 0x9c:	/* SDRC_ACTIM_C=
TRLA_0 */<br>- =C2=A0 =C2=A0case 0xa0:	/* SDRC_ACTIM_CTRLB_0 */<br>- =C2=A0=
 =C2=A0case 0xa4:	/* SDRC_RFR_CTRL_0 */<br>- =C2=A0 =C2=A0case 0xa8:	/* SDR=
C_MANUAL_0 */<br>- =C2=A0 =C2=A0case 0xb0:	/* SDRC_MCFG_1 */<br>- =C2=A0 =
=C2=A0case 0xb4:	/* SDRC_MR_1 */<br>- =C2=A0 =C2=A0case 0xb8:	/* SDRC_EMR1_=
1 */<br>- =C2=A0 =C2=A0case 0xbc:	/* SDRC_EMR2_1 */<br>- =C2=A0 =C2=A0case =
0xc0:	/* SDRC_EMR3_1 */<br>- =C2=A0 =C2=A0case 0xc4:	/* SDRC_ACTIM_CTRLA_1 =
*/<br>- =C2=A0 =C2=A0case 0xc8:	/* SDRC_ACTIM_CTRLB_1 */<br>- =C2=A0 =C2=A0=
case 0xd4:	/* SDRC_RFR_CTRL_1 */<br>- =C2=A0 =C2=A0case 0xd8:	/* SDRC_MANUA=
L_1 */<br>+ =C2=A0 =C2=A0case 0x14: =C2=A0/* SDRC_SYSSTATUS */<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0return 1; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* RESETDO=
NE */<br>+<br>+ =C2=A0 =C2=A0case 0x40: =C2=A0/* SDRC_CS_CFG */<br>+ =C2=A0=
 =C2=A0case 0x44: =C2=A0/* SDRC_SHARING */<br>+ =C2=A0 =C2=A0case 0x48: =C2=
=A0/* SDRC_ERR_ADDR */<br>+ =C2=A0 =C2=A0case 0x4c: =C2=A0/* SDRC_ERR_TYPE =
*/<br>+ =C2=A0 =C2=A0case 0x60: =C2=A0/* SDRC_DLLA_SCTRL */<br>+ =C2=A0 =C2=
=A0case 0x64: =C2=A0/* SDRC_DLLA_STATUS */<br>+ =C2=A0 =C2=A0case 0x68: =C2=
=A0/* SDRC_DLLB_CTRL */<br>+ =C2=A0 =C2=A0case 0x6c: =C2=A0/* SDRC_DLLB_STA=
TUS */<br>+ =C2=A0 =C2=A0case 0x70: =C2=A0/* SDRC_POWER */<br>+ =C2=A0 =C2=
=A0case 0x80: =C2=A0/* SDRC_MCFG_0 */<br>+ =C2=A0 =C2=A0case 0x84: =C2=A0/*=
 SDRC_MR_0 */<br>+ =C2=A0 =C2=A0case 0x88: =C2=A0/* SDRC_EMR1_0 */<br>+ =C2=
=A0 =C2=A0case 0x8c: =C2=A0/* SDRC_EMR2_0 */<br>+ =C2=A0 =C2=A0case 0x90: =
=C2=A0/* SDRC_EMR3_0 */<br>+ =C2=A0 =C2=A0case 0x94: =C2=A0/* SDRC_DCDL1_CT=
RL */<br>+ =C2=A0 =C2=A0case 0x98: =C2=A0/* SDRC_DCDL2_CTRL */<br>+ =C2=A0 =
=C2=A0case 0x9c: =C2=A0/* SDRC_ACTIM_CTRLA_0 */<br>+ =C2=A0 =C2=A0case 0xa0=
: =C2=A0/* SDRC_ACTIM_CTRLB_0 */<br>+ =C2=A0 =C2=A0case 0xa4: =C2=A0/* SDRC=
_RFR_CTRL_0 */<br>+ =C2=A0 =C2=A0case 0xa8: =C2=A0/* SDRC_MANUAL_0 */<br>+ =
=C2=A0 =C2=A0case 0xb0: =C2=A0/* SDRC_MCFG_1 */<br>+ =C2=A0 =C2=A0case 0xb4=
: =C2=A0/* SDRC_MR_1 */<br>+ =C2=A0 =C2=A0case 0xb8: =C2=A0/* SDRC_EMR1_1 *=
/<br>+ =C2=A0 =C2=A0case 0xbc: =C2=A0/* SDRC_EMR2_1 */<br>+ =C2=A0 =C2=A0ca=
se 0xc0: =C2=A0/* SDRC_EMR3_1 */<br>+ =C2=A0 =C2=A0case 0xc4: =C2=A0/* SDRC=
_ACTIM_CTRLA_1 */<br>+ =C2=A0 =C2=A0case 0xc8: =C2=A0/* SDRC_ACTIM_CTRLB_1 =
*/<br>+ =C2=A0 =C2=A0case 0xd4: =C2=A0/* SDRC_RFR_CTRL_1 */<br>+ =C2=A0 =C2=
=A0case 0xd8: =C2=A0/* SDRC_MANUAL_1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return 0x00;<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>@@ -96,49 +96,50 @@ s=
tatic void omap_sdrc_write(void *opaque, hwaddr addr,<br>=C2=A0 =C2=A0 =C2=
=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (addr) {<br>- =C2=A0 =C2=A0cas=
e 0x00:	/* SDRC_REVISION */<br>- =C2=A0 =C2=A0case 0x14:	/* SDRC_SYSSTATUS =
*/<br>- =C2=A0 =C2=A0case 0x48:	/* SDRC_ERR_ADDR */<br>- =C2=A0 =C2=A0case =
0x64:	/* SDRC_DLLA_STATUS */<br>- =C2=A0 =C2=A0case 0x6c:	/* SDRC_DLLB_STAT=
US */<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/* SDRC_REVISION */<br>+ =C2=A0 =
=C2=A0case 0x14: =C2=A0/* SDRC_SYSSTATUS */<br>+ =C2=A0 =C2=A0case 0x48: =
=C2=A0/* SDRC_ERR_ADDR */<br>+ =C2=A0 =C2=A0case 0x64: =C2=A0/* SDRC_DLLA_S=
TATUS */<br>+ =C2=A0 =C2=A0case 0x6c: =C2=A0/* SDRC_DLLB_STATUS */<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0OMAP_RO_REG(addr);<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0return;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* SDRC_SYSCONF=
IG */<br>+ =C2=A0 =C2=A0case 0x10: =C2=A0/* SDRC_SYSCONFIG */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0if ((value &gt;&gt; 3) !=3D 0x2)<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0fprintf(stderr, &quot;%s: bad SDRAM idle =
mode %i\n&quot;,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0__func__, (unsigned)value &gt;&gt; 3);<br>- =C2=A0 =C2=
=A0 =C2=A0 =C2=A0if (value &amp; 2)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (val=
ue &amp; 2) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_sdrc_=
reset(s);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0s-&gt;config =3D value &amp; 0x18;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x40:	/* SDRC_CS_CFG */<br>- =C2=
=A0 =C2=A0case 0x44:	/* SDRC_SHARING */<br>- =C2=A0 =C2=A0case 0x4c:	/* SDR=
C_ERR_TYPE */<br>- =C2=A0 =C2=A0case 0x60:	/* SDRC_DLLA_SCTRL */<br>- =C2=
=A0 =C2=A0case 0x68:	/* SDRC_DLLB_CTRL */<br>- =C2=A0 =C2=A0case 0x70:	/* S=
DRC_POWER */<br>- =C2=A0 =C2=A0case 0x80:	/* SDRC_MCFG_0 */<br>- =C2=A0 =C2=
=A0case 0x84:	/* SDRC_MR_0 */<br>- =C2=A0 =C2=A0case 0x88:	/* SDRC_EMR1_0 *=
/<br>- =C2=A0 =C2=A0case 0x8c:	/* SDRC_EMR2_0 */<br>- =C2=A0 =C2=A0case 0x9=
0:	/* SDRC_EMR3_0 */<br>- =C2=A0 =C2=A0case 0x94:	/* SDRC_DCDL1_CTRL */<br>=
- =C2=A0 =C2=A0case 0x98:	/* SDRC_DCDL2_CTRL */<br>- =C2=A0 =C2=A0case 0x9c=
:	/* SDRC_ACTIM_CTRLA_0 */<br>- =C2=A0 =C2=A0case 0xa0:	/* SDRC_ACTIM_CTRLB=
_0 */<br>- =C2=A0 =C2=A0case 0xa4:	/* SDRC_RFR_CTRL_0 */<br>- =C2=A0 =C2=A0=
case 0xa8:	/* SDRC_MANUAL_0 */<br>- =C2=A0 =C2=A0case 0xb0:	/* SDRC_MCFG_1 =
*/<br>- =C2=A0 =C2=A0case 0xb4:	/* SDRC_MR_1 */<br>- =C2=A0 =C2=A0case 0xb8=
:	/* SDRC_EMR1_1 */<br>- =C2=A0 =C2=A0case 0xbc:	/* SDRC_EMR2_1 */<br>- =C2=
=A0 =C2=A0case 0xc0:	/* SDRC_EMR3_1 */<br>- =C2=A0 =C2=A0case 0xc4:	/* SDRC=
_ACTIM_CTRLA_1 */<br>- =C2=A0 =C2=A0case 0xc8:	/* SDRC_ACTIM_CTRLB_1 */<br>=
- =C2=A0 =C2=A0case 0xd4:	/* SDRC_RFR_CTRL_1 */<br>- =C2=A0 =C2=A0case 0xd8=
:	/* SDRC_MANUAL_1 */<br>+ =C2=A0 =C2=A0case 0x40: =C2=A0/* SDRC_CS_CFG */<=
br>+ =C2=A0 =C2=A0case 0x44: =C2=A0/* SDRC_SHARING */<br>+ =C2=A0 =C2=A0cas=
e 0x4c: =C2=A0/* SDRC_ERR_TYPE */<br>+ =C2=A0 =C2=A0case 0x60: =C2=A0/* SDR=
C_DLLA_SCTRL */<br>+ =C2=A0 =C2=A0case 0x68: =C2=A0/* SDRC_DLLB_CTRL */<br>=
+ =C2=A0 =C2=A0case 0x70: =C2=A0/* SDRC_POWER */<br>+ =C2=A0 =C2=A0case 0x8=
0: =C2=A0/* SDRC_MCFG_0 */<br>+ =C2=A0 =C2=A0case 0x84: =C2=A0/* SDRC_MR_0 =
*/<br>+ =C2=A0 =C2=A0case 0x88: =C2=A0/* SDRC_EMR1_0 */<br>+ =C2=A0 =C2=A0c=
ase 0x8c: =C2=A0/* SDRC_EMR2_0 */<br>+ =C2=A0 =C2=A0case 0x90: =C2=A0/* SDR=
C_EMR3_0 */<br>+ =C2=A0 =C2=A0case 0x94: =C2=A0/* SDRC_DCDL1_CTRL */<br>+ =
=C2=A0 =C2=A0case 0x98: =C2=A0/* SDRC_DCDL2_CTRL */<br>+ =C2=A0 =C2=A0case =
0x9c: =C2=A0/* SDRC_ACTIM_CTRLA_0 */<br>+ =C2=A0 =C2=A0case 0xa0: =C2=A0/* =
SDRC_ACTIM_CTRLB_0 */<br>+ =C2=A0 =C2=A0case 0xa4: =C2=A0/* SDRC_RFR_CTRL_0=
 */<br>+ =C2=A0 =C2=A0case 0xa8: =C2=A0/* SDRC_MANUAL_0 */<br>+ =C2=A0 =C2=
=A0case 0xb0: =C2=A0/* SDRC_MCFG_1 */<br>+ =C2=A0 =C2=A0case 0xb4: =C2=A0/*=
 SDRC_MR_1 */<br>+ =C2=A0 =C2=A0case 0xb8: =C2=A0/* SDRC_EMR1_1 */<br>+ =C2=
=A0 =C2=A0case 0xbc: =C2=A0/* SDRC_EMR2_1 */<br>+ =C2=A0 =C2=A0case 0xc0: =
=C2=A0/* SDRC_EMR3_1 */<br>+ =C2=A0 =C2=A0case 0xc4: =C2=A0/* SDRC_ACTIM_CT=
RLA_1 */<br>+ =C2=A0 =C2=A0case 0xc8: =C2=A0/* SDRC_ACTIM_CTRLB_1 */<br>+ =
=C2=A0 =C2=A0case 0xd4: =C2=A0/* SDRC_RFR_CTRL_1 */<br>+ =C2=A0 =C2=A0case =
0xd8: =C2=A0/* SDRC_MANUAL_1 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;=
<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0default:<br>diff --git a/hw/misc/omap_tap=
.c b/hw/misc/omap_tap.c<br>index 4d7fb7d85f..daa15696ee 100644<br>--- a/hw/=
misc/omap_tap.c<br>+++ b/hw/misc/omap_tap.c<br>@@ -32,25 +32,25 @@ static u=
int64_t omap_tap_read(void *opaque, hwaddr addr, unsigned size)<br>=C2=A0 =
=C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (addr) {<br>- =C2=A0=
 =C2=A0case 0x204:	/* IDCODE_reg */<br>+ =C2=A0 =C2=A0case 0x204: /* IDCODE=
_reg */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0switch (s-&gt;mpu_model) {<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case omap2420:<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0case omap2422:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case omap2=
423:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x5b5d902f;	/* ES=
 2.2 */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x5b5d902f; =
=C2=A0/* ES 2.2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case omap2430:<br>-=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x5b68a02f;	/* ES 2.2 */<b=
r>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x5b68a02f; =C2=A0/* ES=
 2.2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case omap3430:<br>- =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x1b7ae02f;	/* ES 2 */<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x1b7ae02f; =C2=A0/* ES 2 */<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0default:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0hw_error(&quot;%s: Bad mpu model\n&quot;, __func__);<br=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x208=
:	/* PRODUCTION_ID_reg for OMAP2 */<br>- =C2=A0 =C2=A0case 0x210:	/* PRODUC=
TION_ID_reg for OMAP3 */<br>+ =C2=A0 =C2=A0case 0x208: /* PRODUCTION_ID_reg=
 for OMAP2 */<br>+ =C2=A0 =C2=A0case 0x210: /* PRODUCTION_ID_reg for OMAP3 =
*/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0switch (s-&gt;mpu_model) {<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case omap2420:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0return 0x000254f0;	/* POP ESHS2.1.1 in N91/93/95, ES2 in N=
800 */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x000254f0; =C2=
=A0/* POP ESHS2.1.1 in N91/93/95, ES2 in N800 */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0case omap2422:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0return 0x000400f0;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case omap2423=
:<br>@@ -68,22 +68,22 @@ static uint64_t omap_tap_read(void *opaque, hwaddr=
 addr, unsigned size)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case omap2420:<b=
r>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case omap2422:<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0case omap2423:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0r=
eturn 0xcafeb5d9;	/* ES 2.2 */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return 0xcafeb5d9; =C2=A0/* ES 2.2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0case omap2430:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0xca=
feb68a;	/* ES 2.2 */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0=
xcafeb68a; =C2=A0/* ES 2.2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case oma=
p3430:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0xcafeb7ae;	/* =
ES 2 */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0xcafeb7ae; =
=C2=A0/* ES 2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0default:<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0hw_error(&quot;%s: Bad mpu model\n=
&quot;, __func__);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>- =
=C2=A0 =C2=A0case 0x218:	/* DIE_ID_reg */<br>+ =C2=A0 =C2=A0case 0x218: /* =
DIE_ID_reg */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return (&#39;Q&#39; &lt;=
&lt; 24) | (&#39;E&#39; &lt;&lt; 16) | (&#39;M&#39; &lt;&lt; 8) | (&#39;U&#=
39; &lt;&lt; 0);<br>- =C2=A0 =C2=A0case 0x21c:	/* DIE_ID_reg */<br>+ =C2=A0=
 =C2=A0case 0x21c: /* DIE_ID_reg */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0re=
turn 0x54 &lt;&lt; 24;<br>- =C2=A0 =C2=A0case 0x220:	/* DIE_ID_reg */<br>+ =
=C2=A0 =C2=A0case 0x220: /* DIE_ID_reg */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0return (&#39;Q&#39; &lt;&lt; 24) | (&#39;E&#39; &lt;&lt; 16) | (&#39;=
M&#39; &lt;&lt; 8) | (&#39;U&#39; &lt;&lt; 0);<br>- =C2=A0 =C2=A0case 0x224=
:	/* DIE_ID_reg */<br>+ =C2=A0 =C2=A0case 0x224: /* DIE_ID_reg */<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0return (&#39;Q&#39; &lt;&lt; 24) | (&#39;E&#39;=
 &lt;&lt; 16) | (&#39;M&#39; &lt;&lt; 8) | (&#39;U&#39; &lt;&lt; 0);<br>=C2=
=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>diff --git a/hw/sd/omap_mmc.c b/hw/sd/omap_=
mmc.c<br>index edd3cf2a1e..848e42f076 100644<br>--- a/hw/sd/omap_mmc.c<br>+=
++ b/hw/sd/omap_mmc.c<br>@@ -104,11 +104,11 @@ static void omap_mmc_fifolev=
el_update(struct omap_mmc_s *host)<br>=C2=A0}<br>=C2=A0<br>=C2=A0typedef en=
um {<br>- =C2=A0 =C2=A0sd_nore =3D 0,	/* no response */<br>- =C2=A0 =C2=A0s=
d_r1,		/* normal response command */<br>- =C2=A0 =C2=A0sd_r2,		/* CID, CSD =
registers */<br>- =C2=A0 =C2=A0sd_r3,		/* OCR register */<br>- =C2=A0 =C2=
=A0sd_r6 =3D 6,		/* Published RCA response */<br>+ =C2=A0 =C2=A0sd_nore =3D=
 0, =C2=A0/* no response */<br>+ =C2=A0 =C2=A0sd_r1, =C2=A0 =C2=A0 =C2=A0 =
=C2=A0/* normal response command */<br>+ =C2=A0 =C2=A0sd_r2, =C2=A0 =C2=A0 =
=C2=A0 =C2=A0/* CID, CSD registers */<br>+ =C2=A0 =C2=A0sd_r3, =C2=A0 =C2=
=A0 =C2=A0 =C2=A0/* OCR register */<br>+ =C2=A0 =C2=A0sd_r6 =3D 6, =C2=A0 =
=C2=A0/* Published RCA response */<br>=C2=A0 =C2=A0 =C2=A0sd_r1b =3D -1,<br=
>=C2=A0} sd_rsp_type_t;<br>=C2=A0<br>@@ -125,8 +125,9 @@ static void omap_m=
mc_command(struct omap_mmc_s *host, int cmd, int dir,<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0return;<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>- =C2=A0 =C2=
=A0if (resptype =3D=3D sd_r1 &amp;&amp; busy)<br>+ =C2=A0 =C2=A0if (resptyp=
e =3D=3D sd_r1 &amp;&amp; busy) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0resp=
type =3D sd_r1b;<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0if (t=
ype =3D=3D sd_adtc) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;fifo_st=
art =3D 0;<br>@@ -164,8 +165,9 @@ static void omap_mmc_command(struct omap_=
mmc_s *host, int cmd, int dir,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0LOCK_UNLOCK_FAILED | COM_CRC_ERROR | ILLEGAL_COMMAND |=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0CARD_ECC_=
FAILED | CC_ERROR | SD_ERROR |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0CID_CSD_OVERWRITE;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if =
(host-&gt;sdio &amp; (1 &lt;&lt; 13))<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (h=
ost-&gt;sdio &amp; (1 &lt;&lt; 13)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0mask |=3D AKE_SEQ_ERROR;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rspstatus =3D ldl_be_p(response);<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>@@ -185,10 +187,11 @@ st=
atic void omap_mmc_command(struct omap_mmc_s *host, int cmd, int dir,<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0rsplen =3D 4;<br>=C2=A0<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0rspstatus =3D ldl_be_p(response);<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0if (rspstatus &amp; 0x80000000)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0if (rspstatus &amp; 0x80000000) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0host-&gt;status &amp;=3D 0xe000;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0else<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;status |=3D 0x1000;<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>=C2=
=A0 =C2=A0 =C2=A0case sd_r6:<br>@@ -202,35 +205,39 @@ static void omap_mmc_=
command(struct omap_mmc_s *host, int cmd, int dir,<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0rspstatus =3D (response[2] &lt;&lt; 8) | (response[3] &lt;&lt;=
 0);<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>- =C2=A0 =C2=A0if (rspstatus &am=
p; mask)<br>+ =C2=A0 =C2=A0if (rspstatus &amp; mask) {<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0host-&gt;status |=3D 0x4000;<br>- =C2=A0 =C2=A0else<br>+ =
=C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;status =
&amp;=3D 0xb000;<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0if (r=
splen)<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0for (rsplen =3D 0; rsplen &lt; 8; rs=
plen ++)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0for (rsplen =3D 0; rsplen &lt; 8; =
rsplen++)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;rsp[~=
rsplen &amp; 7] =3D response[(rsplen &lt;&lt; 1) | 1] |<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(response[(rs=
plen &lt;&lt; 1) | 0] &lt;&lt; 8);<br>=C2=A0<br>- =C2=A0 =C2=A0if (timeout)=
<br>+ =C2=A0 =C2=A0if (timeout) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host=
-&gt;status |=3D 0x0080;<br>- =C2=A0 =C2=A0else if (cmd =3D=3D 12)<br>- =C2=
=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;status |=3D 0x0005;	/* Makes it more real =
*/<br>- =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0} else if (cmd =3D=3D 12) {<br>=
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;status |=3D 0x0005; /* Makes it more =
real */<br>+ =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0hos=
t-&gt;status |=3D 0x0001;<br>+ =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=
=A0static void omap_mmc_transfer(struct omap_mmc_s *host)<br>=C2=A0{<br>=C2=
=A0 =C2=A0 =C2=A0uint8_t value;<br>=C2=A0<br>- =C2=A0 =C2=A0if (!host-&gt;t=
ransfer)<br>+ =C2=A0 =C2=A0if (!host-&gt;transfer) {<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0return;<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=
=A0while (1) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (host-&gt;ddir) {<br=
>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (host-&gt;fifo_len &gt; host=
-&gt;af_level)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (host-&gt;f=
ifo_len &gt; host-&gt;af_level) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0break;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0value =3D=
 sd_read_byte(host-&gt;card);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0host-&gt;fifo[(host-&gt;fifo_start + host-&gt;fifo_len) &amp; 31] =3D=
 value;<br>@@ -238,29 +245,30 @@ static void omap_mmc_transfer(struct omap_=
mmc_s *host)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0value =3D sd_read_byte(host-&gt;card);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;fifo[(host-&gt;fifo_start + host=
-&gt;fifo_len) &amp; 31] |=3D<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0value &lt;&lt; 8;<br>- =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;blen_counter -=
-;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;ble=
n_counter--;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0=
<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;fifo_len ++;<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;fifo_len++;<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0} else {<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0if (!host-&gt;fifo_len)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0if (!host-&gt;fifo_len) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0break;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<=
br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0value =3D host=
-&gt;fifo[host-&gt;fifo_start] &amp; 0xff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0sd_write_byte(host-&gt;card, value);<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (-- host-&gt;blen_counter) {<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0value =3D host-&gt;=
fifo[host-&gt;fifo_start] &gt;&gt; 8;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0sd_write_byte(host-&gt;card, value);<br>- =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;blen_counter -=
-;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;ble=
n_counter--;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0=
<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;fifo_start ++;<br>-=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;fifo_len --;<br>+ =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;fifo_start++;<br>+ =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;fifo_len--;<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0host-&gt;fifo_start &amp;=3D 31;<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if=
 (host-&gt;blen_counter =3D=3D 0) {<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0host-&gt;nblk_counter --;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0host-&gt;nblk_counter--;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0host-&gt;blen_counter =3D host-&gt;blen;<br>=C2=A0<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (host-&gt;nblk_counter =3D=3D 0) {<br>=
@@ -331,82 +339,82 @@ static uint64_t omap_mmc_read(void *opaque, hwaddr of=
fset, unsigned size)<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =
=C2=A0switch (offset) {<br>- =C2=A0 =C2=A0case 0x00:	/* MMC_CMD */<br>+ =C2=
=A0 =C2=A0case 0x00: =C2=A0/* MMC_CMD */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return s-&gt;last_cmd;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x04:	/* MMC_ARG=
L */<br>+ =C2=A0 =C2=A0case 0x04: =C2=A0/* MMC_ARGL */<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0return s-&gt;arg &amp; 0x0000ffff;<br>=C2=A0<br>- =C2=A0 =
=C2=A0case 0x08:	/* MMC_ARGH */<br>+ =C2=A0 =C2=A0case 0x08: =C2=A0/* MMC_A=
RGH */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;arg &gt;&gt; 16;<b=
r>=C2=A0<br>- =C2=A0 =C2=A0case 0x0c:	/* MMC_CON */<br>- =C2=A0 =C2=A0 =C2=
=A0 =C2=A0return (s-&gt;dw &lt;&lt; 15) | (s-&gt;mode &lt;&lt; 12) | (s-&gt=
;enable &lt;&lt; 11) | <br>+ =C2=A0 =C2=A0case 0x0c: =C2=A0/* MMC_CON */<br=
>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0return (s-&gt;dw &lt;&lt; 15) | (s-&gt;mode &=
lt;&lt; 12) | (s-&gt;enable &lt;&lt; 11) |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;be &lt;&lt; 10) | s-&gt;clkdiv;<br=
>=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* MMC_STAT */<br>+ =C2=A0 =C2=A0case =
0x10: =C2=A0/* MMC_STAT */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&g=
t;status;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x14:	/* MMC_IE */<br>+ =C2=A0 =
=C2=A0case 0x14: =C2=A0/* MMC_IE */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0re=
turn s-&gt;mask;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x18:	/* MMC_CTO */<br>+ =
=C2=A0 =C2=A0case 0x18: =C2=A0/* MMC_CTO */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0return s-&gt;cto;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x1c:	/* MMC_DTO *=
/<br>+ =C2=A0 =C2=A0case 0x1c: =C2=A0/* MMC_DTO */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0return s-&gt;dto;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x20:	/* MM=
C_DATA */<br>+ =C2=A0 =C2=A0case 0x20: =C2=A0/* MMC_DATA */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0/* TODO: support 8-bit access */<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0i =3D s-&gt;fifo[s-&gt;fifo_start];<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0if (s-&gt;fifo_len =3D=3D 0) {<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0printf(&quot;MMC: FIFO underrun\n&quot;);<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return i;<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0}<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;fifo_start ++;<br>=
- =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;fifo_len --;<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0s-&gt;fifo_start++;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;fifo_len--;=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;fifo_start &amp;=3D 31;<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_mmc_transfer(s);<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0omap_mmc_fifolevel_update(s);<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0omap_mmc_interrupts_update(s);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return i;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x24:	/* MMC_BLEN */<br>+ =C2=
=A0 =C2=A0case 0x24: =C2=A0/* MMC_BLEN */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0return s-&gt;blen_counter;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x28:	/* =
MMC_NBLK */<br>+ =C2=A0 =C2=A0case 0x28: =C2=A0/* MMC_NBLK */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;nblk_counter;<br>=C2=A0<br>- =C2=A0 =
=C2=A0case 0x2c:	/* MMC_BUF */<br>+ =C2=A0 =C2=A0case 0x2c: =C2=A0/* MMC_BU=
F */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return (s-&gt;rx_dma &lt;&lt; 15)=
 | (s-&gt;af_level &lt;&lt; 8) |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0(s-&gt;tx_dma &lt;&lt; 7) | s-&gt;ae_level;<br>=C2=A0<br>- =C2=A0=
 =C2=A0case 0x30:	/* MMC_SPI */<br>+ =C2=A0 =C2=A0case 0x30: =C2=A0/* MMC_S=
PI */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x0000;<br>- =C2=A0 =C2=
=A0case 0x34:	/* MMC_SDIO */<br>+ =C2=A0 =C2=A0case 0x34: =C2=A0/* MMC_SDIO=
 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return (s-&gt;cdet_wakeup &lt;&lt;=
 2) | (s-&gt;cdet_enable) | s-&gt;sdio;<br>- =C2=A0 =C2=A0case 0x38:	/* MMC=
_SYST */<br>+ =C2=A0 =C2=A0case 0x38: =C2=A0/* MMC_SYST */<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0return 0x0000;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x3c:	=
/* MMC_REV */<br>+ =C2=A0 =C2=A0case 0x3c: =C2=A0/* MMC_REV */<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;rev;<br>=C2=A0<br>- =C2=A0 =C2=A0ca=
se 0x40:	/* MMC_RSP0 */<br>- =C2=A0 =C2=A0case 0x44:	/* MMC_RSP1 */<br>- =
=C2=A0 =C2=A0case 0x48:	/* MMC_RSP2 */<br>- =C2=A0 =C2=A0case 0x4c:	/* MMC_=
RSP3 */<br>- =C2=A0 =C2=A0case 0x50:	/* MMC_RSP4 */<br>- =C2=A0 =C2=A0case =
0x54:	/* MMC_RSP5 */<br>- =C2=A0 =C2=A0case 0x58:	/* MMC_RSP6 */<br>- =C2=
=A0 =C2=A0case 0x5c:	/* MMC_RSP7 */<br>+ =C2=A0 =C2=A0case 0x40: =C2=A0/* M=
MC_RSP0 */<br>+ =C2=A0 =C2=A0case 0x44: =C2=A0/* MMC_RSP1 */<br>+ =C2=A0 =
=C2=A0case 0x48: =C2=A0/* MMC_RSP2 */<br>+ =C2=A0 =C2=A0case 0x4c: =C2=A0/*=
 MMC_RSP3 */<br>+ =C2=A0 =C2=A0case 0x50: =C2=A0/* MMC_RSP4 */<br>+ =C2=A0 =
=C2=A0case 0x54: =C2=A0/* MMC_RSP5 */<br>+ =C2=A0 =C2=A0case 0x58: =C2=A0/*=
 MMC_RSP6 */<br>+ =C2=A0 =C2=A0case 0x5c: =C2=A0/* MMC_RSP7 */<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;rsp[(offset - 0x40) &gt;&gt; 2];<br=
>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0/* OMAP2-specific */<br>- =C2=A0 =C2=A0case =
0x60:	/* MMC_IOSR */<br>- =C2=A0 =C2=A0case 0x64:	/* MMC_SYSC */<br>+ =C2=
=A0 =C2=A0case 0x60: =C2=A0/* MMC_IOSR */<br>+ =C2=A0 =C2=A0case 0x64: =C2=
=A0/* MMC_SYSC */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0;<br>- =C2=
=A0 =C2=A0case 0x68:	/* MMC_SYSS */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0return =
1;						/* RSTD */<br>+ =C2=A0 =C2=A0case 0x68: =C2=A0/* MMC_SYSS */<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0return 1; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* =
RSTD */<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0OMAP_BAD_=
REG(offset);<br>@@ -425,13 +433,15 @@ static void omap_mmc_write(void *opaq=
ue, hwaddr offset,<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=
=A0switch (offset) {<br>- =C2=A0 =C2=A0case 0x00:	/* MMC_CMD */<br>- =C2=A0=
 =C2=A0 =C2=A0 =C2=A0if (!s-&gt;enable)<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0=
/* MMC_CMD */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!s-&gt;enable) {<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;last_cmd =
=3D value;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0for (i =3D 0; i &lt; 8; i ++)<br=
>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0for (i =3D 0; i &lt; 8; i++) {<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;rsp[i] =3D 0x0000;<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_mmc_command=
(s, value &amp; 63, (value &gt;&gt; 15) &amp; 1,<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(sd_cmd_type_t) ((value &gt;&gt; 1=
2) &amp; 3),<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0(value &gt;&gt; 11) &amp; 1,<br>@@ -440,17 +450,17 @@ static void omap_m=
mc_write(void *opaque, hwaddr offset,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
omap_mmc_update(s);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<b=
r>- =C2=A0 =C2=A0case 0x04:	/* MMC_ARGL */<br>+ =C2=A0 =C2=A0case 0x04: =C2=
=A0/* MMC_ARGL */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;arg &amp;=3D 0=
xffff0000;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;arg |=3D 0x0000ffff &=
amp; value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=
=A0 =C2=A0case 0x08:	/* MMC_ARGH */<br>+ =C2=A0 =C2=A0case 0x08: =C2=A0/* M=
MC_ARGH */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;arg &amp;=3D 0x0000ff=
ff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;arg |=3D value &lt;&lt; 16;<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0cas=
e 0x0c:	/* MMC_CON */<br>+ =C2=A0 =C2=A0case 0x0c: =C2=A0/* MMC_CON */<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;dw =3D (value &gt;&gt; 15) &amp; 1;=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;mode =3D (value &gt;&gt; 12) &a=
mp; 3;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;enable =3D (value &gt;&gt=
; 11) &amp; 1;<br>@@ -464,101 +474,109 @@ static void omap_mmc_write(void *=
opaque, hwaddr offset,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0q=
emu_log_mask(LOG_UNIMP,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;omap_mmc_wr: Big End=
ian not implemented\n&quot;);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>- =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;dw !=3D 0 &amp;&amp; s-&gt;lines &lt; =
4)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;dw !=3D 0 &amp;&amp; s-&gt;lin=
es &lt; 4) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0printf(&quo=
t;4-bit SD bus enabled\n&quot;);<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!s-&gt=
;enable)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0=
if (!s-&gt;enable) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0oma=
p_mmc_pseudo_reset(s);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* MMC_ST=
AT */<br>+ =C2=A0 =C2=A0case 0x10: =C2=A0/* MMC_STAT */<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;status &amp;=3D ~value;<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0omap_mmc_interrupts_update(s);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x14:	/* MMC_IE */<br>+ =C2=
=A0 =C2=A0case 0x14: =C2=A0/* MMC_IE */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0s-&gt;mask =3D value &amp; 0x7fff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
omap_mmc_interrupts_update(s);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<=
br>=C2=A0<br>- =C2=A0 =C2=A0case 0x18:	/* MMC_CTO */<br>+ =C2=A0 =C2=A0case=
 0x18: =C2=A0/* MMC_CTO */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;cto =
=3D value &amp; 0xff;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;cto &gt; 0x=
fd &amp;&amp; s-&gt;rev &lt;=3D 1)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&g=
t;cto &gt; 0xfd &amp;&amp; s-&gt;rev &lt;=3D 1) {<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0printf(&quot;MMC: CTO of 0xff and 0xfe cannot be=
 used!\n&quot;);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x1c:	/* MMC_DTO */<br=
>+ =C2=A0 =C2=A0case 0x1c: =C2=A0/* MMC_DTO */<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0s-&gt;dto =3D value &amp; 0xffff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x20:	/* MMC_DATA */<br>+ =C2=
=A0 =C2=A0case 0x20: =C2=A0/* MMC_DATA */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0/* TODO: support 8-bit access */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (=
s-&gt;fifo_len =3D=3D 32)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;fifo_le=
n =3D=3D 32) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br=
>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;=
fifo[(s-&gt;fifo_start + s-&gt;fifo_len) &amp; 31] =3D value;<br>- =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;fifo_len ++;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&g=
t;fifo_len++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_mmc_transfer(s);<br=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_mmc_fifolevel_update(s);<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0omap_mmc_interrupts_update(s);<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x24:	/* MMC_BL=
EN */<br>+ =C2=A0 =C2=A0case 0x24: =C2=A0/* MMC_BLEN */<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;blen =3D (value &amp; 0x07ff) + 1;<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;blen_counter =3D s-&gt;blen;<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x28:	/* MMC_N=
BLK */<br>+ =C2=A0 =C2=A0case 0x28: =C2=A0/* MMC_NBLK */<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;nblk =3D (value &amp; 0x07ff) + 1;<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;nblk_counter =3D s-&gt;nblk;<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0s-&gt;blen_counter =3D s-&gt;blen;<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x2c:	/* MMC_BU=
F */<br>+ =C2=A0 =C2=A0case 0x2c: =C2=A0/* MMC_BUF */<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;rx_dma =3D (value &gt;&gt; 15) &amp; 1;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;af_level =3D (value &gt;&gt; 8) &amp; 0x1f=
;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tx_dma =3D (value &gt;&gt; 7) =
&amp; 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;ae_level =3D value &amp=
; 0x1f;<br>=C2=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;rx_dma)<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;rx_dma) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;status &amp;=3D 0xfbff;<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0if (s-&gt;tx_dma)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;tx_dma) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;status &amp;=3D 0xf7ff;<br>+ =C2=A0 =C2=A0 =C2=A0=
 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_mmc_fifolevel_update(s);=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_mmc_interrupts_update(s);<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0/* S=
PI, SDIO and TEST modes unimplemented */<br>- =C2=A0 =C2=A0case 0x30:	/* MM=
C_SPI (OMAP1 only) */<br>+ =C2=A0 =C2=A0case 0x30: =C2=A0/* MMC_SPI (OMAP1 =
only) */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=A0case=
 0x34:	/* MMC_SDIO */<br>+ =C2=A0 =C2=A0case 0x34: =C2=A0/* MMC_SDIO */<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;sdio =3D value &amp; (s-&gt;rev &gt=
;=3D 2 ? 0xfbf3 : 0x2020);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;cdet_=
wakeup =3D (value &gt;&gt; 9) &amp; 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0s-&gt;cdet_enable =3D (value &gt;&gt; 2) &amp; 1;<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=A0case 0x38:	/* MMC_SYST */<br>+ =
=C2=A0 =C2=A0case 0x38: =C2=A0/* MMC_SYST */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x3c:	/* MMC_REV */<br>- =C2=
=A0 =C2=A0case 0x40:	/* MMC_RSP0 */<br>- =C2=A0 =C2=A0case 0x44:	/* MMC_RSP=
1 */<br>- =C2=A0 =C2=A0case 0x48:	/* MMC_RSP2 */<br>- =C2=A0 =C2=A0case 0x4=
c:	/* MMC_RSP3 */<br>- =C2=A0 =C2=A0case 0x50:	/* MMC_RSP4 */<br>- =C2=A0 =
=C2=A0case 0x54:	/* MMC_RSP5 */<br>- =C2=A0 =C2=A0case 0x58:	/* MMC_RSP6 */=
<br>- =C2=A0 =C2=A0case 0x5c:	/* MMC_RSP7 */<br>+ =C2=A0 =C2=A0case 0x3c: =
=C2=A0/* MMC_REV */<br>+ =C2=A0 =C2=A0case 0x40: =C2=A0/* MMC_RSP0 */<br>+ =
=C2=A0 =C2=A0case 0x44: =C2=A0/* MMC_RSP1 */<br>+ =C2=A0 =C2=A0case 0x48: =
=C2=A0/* MMC_RSP2 */<br>+ =C2=A0 =C2=A0case 0x4c: =C2=A0/* MMC_RSP3 */<br>+=
 =C2=A0 =C2=A0case 0x50: =C2=A0/* MMC_RSP4 */<br>+ =C2=A0 =C2=A0case 0x54: =
=C2=A0/* MMC_RSP5 */<br>+ =C2=A0 =C2=A0case 0x58: =C2=A0/* MMC_RSP6 */<br>+=
 =C2=A0 =C2=A0case 0x5c: =C2=A0/* MMC_RSP7 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0OMAP_RO_REG(offset);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<=
br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0/* OMAP2-specific */<br>- =C2=A0 =C2=A0cas=
e 0x60:	/* MMC_IOSR */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 0xf)=
<br>+ =C2=A0 =C2=A0case 0x60: =C2=A0/* MMC_IOSR */<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0if (value &amp; 0xf) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0printf(&quot;MMC: SDIO bits used!\n&quot;);<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=
=A0case 0x64:	/* MMC_SYSC */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp=
; (1 &lt;&lt; 2))					/* SRTS */<br>+ =C2=A0 =C2=A0case 0x64: =C2=A0/* MMC_=
SYSC */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; (1 &lt;&lt; 2)) { =
=C2=A0 =C2=A0 =C2=A0 /* SRTS */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0omap_mmc_reset(s);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=A0case 0x68:	/* MMC_SYSS =
*/<br>+ =C2=A0 =C2=A0case 0x68: =C2=A0/* MMC_SYSS */<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0OMAP_RO_REG(offset);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
break;<br>=C2=A0<br>@@ -601,7 +619,7 @@ struct omap_mmc_s *omap_mmc_init(hw=
addr base,<br>=C2=A0 =C2=A0 =C2=A0s-&gt;irq =3D irq;<br>=C2=A0 =C2=A0 =C2=
=A0s-&gt;dma =3D dma;<br>=C2=A0 =C2=A0 =C2=A0s-&gt;clk =3D clk;<br>- =C2=A0=
 =C2=A0s-&gt;lines =3D 1;	/* TODO: needs to be settable per-board */<br>+ =
=C2=A0 =C2=A0s-&gt;lines =3D 1; /* TODO: needs to be settable per-board */<=
br>=C2=A0 =C2=A0 =C2=A0s-&gt;rev =3D 1;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0me=
mory_region_init_io(&amp;s-&gt;iomem, NULL, &amp;omap_mmc_ops, s, &quot;oma=
p.mmc&quot;, 0x800);<br>diff --git a/hw/sd/pxa2xx_mmci.c b/hw/sd/pxa2xx_mmc=
i.c<br>index 82529708c8..4fd17da95b 100644<br>--- a/hw/sd/pxa2xx_mmci.c<br>=
+++ b/hw/sd/pxa2xx_mmci.c<br>@@ -113,55 +113,55 @@ static const VMStateDesc=
ription vmstate_pxa2xx_mmci =3D {<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0};<br>=
=C2=A0<br>-#define MMC_STRPCL	0x00	/* MMC Clock Start/Stop register */<br>-=
#define MMC_STAT	0x04	/* MMC Status register */<br>-#define MMC_CLKRT	0x08	=
/* MMC Clock Rate register */<br>-#define MMC_SPI		0x0c	/* MMC SPI Mode reg=
ister */<br>-#define MMC_CMDAT	0x10	/* MMC Command/Data register */<br>-#de=
fine MMC_RESTO	0x14	/* MMC Response Time-Out register */<br>-#define MMC_RD=
TO	0x18	/* MMC Read Time-Out register */<br>-#define MMC_BLKLEN	0x1c	/* MMC=
 Block Length register */<br>-#define MMC_NUMBLK	0x20	/* MMC Number of Bloc=
ks register */<br>-#define MMC_PRTBUF	0x24	/* MMC Buffer Partly Full regist=
er */<br>-#define MMC_I_MASK	0x28	/* MMC Interrupt Mask register */<br>-#de=
fine MMC_I_REG	0x2c	/* MMC Interrupt Request register */<br>-#define MMC_CM=
D		0x30	/* MMC Command register */<br>-#define MMC_ARGH	0x34	/* MMC Argumen=
t High register */<br>-#define MMC_ARGL	0x38	/* MMC Argument Low register *=
/<br>-#define MMC_RES		0x3c	/* MMC Response FIFO */<br>-#define MMC_RXFIFO	=
0x40	/* MMC Receive FIFO */<br>-#define MMC_TXFIFO	0x44	/* MMC Transmit FIF=
O */<br>-#define MMC_RDWAIT	0x48	/* MMC RD_WAIT register */<br>-#define MMC=
_BLKS_REM	0x4c	/* MMC Blocks Remaining register */<br>+#define MMC_STRPCL =
=C2=A0 =C2=A00x00 =C2=A0/* MMC Clock Start/Stop register */<br>+#define MMC=
_STAT =C2=A0 =C2=A0 =C2=A00x04 =C2=A0/* MMC Status register */<br>+#define =
MMC_CLKRT =C2=A0 =C2=A0 0x08 =C2=A0/* MMC Clock Rate register */<br>+#defin=
e MMC_SPI =C2=A0 =C2=A0 =C2=A0 0x0c =C2=A0/* MMC SPI Mode register */<br>+#=
define MMC_CMDAT =C2=A0 =C2=A0 0x10 =C2=A0/* MMC Command/Data register */<b=
r>+#define MMC_RESTO =C2=A0 =C2=A0 0x14 =C2=A0/* MMC Response Time-Out regi=
ster */<br>+#define MMC_RDTO =C2=A0 =C2=A0 =C2=A00x18 =C2=A0/* MMC Read Tim=
e-Out register */<br>+#define MMC_BLKLEN =C2=A0 =C2=A00x1c =C2=A0/* MMC Blo=
ck Length register */<br>+#define MMC_NUMBLK =C2=A0 =C2=A00x20 =C2=A0/* MMC=
 Number of Blocks register */<br>+#define MMC_PRTBUF =C2=A0 =C2=A00x24 =C2=
=A0/* MMC Buffer Partly Full register */<br>+#define MMC_I_MASK =C2=A0 =C2=
=A00x28 =C2=A0/* MMC Interrupt Mask register */<br>+#define MMC_I_REG =C2=
=A0 =C2=A0 0x2c =C2=A0/* MMC Interrupt Request register */<br>+#define MMC_=
CMD =C2=A0 =C2=A0 =C2=A0 0x30 =C2=A0/* MMC Command register */<br>+#define =
MMC_ARGH =C2=A0 =C2=A0 =C2=A00x34 =C2=A0/* MMC Argument High register */<br=
>+#define MMC_ARGL =C2=A0 =C2=A0 =C2=A00x38 =C2=A0/* MMC Argument Low regis=
ter */<br>+#define MMC_RES =C2=A0 =C2=A0 =C2=A0 0x3c =C2=A0/* MMC Response =
FIFO */<br>+#define MMC_RXFIFO =C2=A0 =C2=A00x40 =C2=A0/* MMC Receive FIFO =
*/<br>+#define MMC_TXFIFO =C2=A0 =C2=A00x44 =C2=A0/* MMC Transmit FIFO */<b=
r>+#define MMC_RDWAIT =C2=A0 =C2=A00x48 =C2=A0/* MMC RD_WAIT register */<br=
>+#define MMC_BLKS_REM =C2=A00x4c =C2=A0/* MMC Blocks Remaining register */=
<br>=C2=A0<br>=C2=A0/* Bitfield masks */<br>-#define STRPCL_STOP_CLK	(1 &lt=
;&lt; 0)<br>-#define STRPCL_STRT_CLK	(1 &lt;&lt; 1)<br>-#define STAT_TOUT_R=
ES	(1 &lt;&lt; 1)<br>-#define STAT_CLK_EN	(1 &lt;&lt; 8)<br>-#define STAT_D=
ATA_DONE	(1 &lt;&lt; 11)<br>-#define STAT_PRG_DONE	(1 &lt;&lt; 12)<br>-#def=
ine STAT_END_CMDRES	(1 &lt;&lt; 13)<br>-#define SPI_SPI_MODE	(1 &lt;&lt; 0)=
<br>-#define CMDAT_RES_TYPE	(3 &lt;&lt; 0)<br>-#define CMDAT_DATA_EN	(1 &lt=
;&lt; 2)<br>-#define CMDAT_WR_RD	(1 &lt;&lt; 3)<br>-#define CMDAT_DMA_EN	(1=
 &lt;&lt; 7)<br>-#define CMDAT_STOP_TRAN	(1 &lt;&lt; 10)<br>-#define INT_DA=
TA_DONE	(1 &lt;&lt; 0)<br>-#define INT_PRG_DONE	(1 &lt;&lt; 1)<br>-#define =
INT_END_CMD	(1 &lt;&lt; 2)<br>-#define INT_STOP_CMD	(1 &lt;&lt; 3)<br>-#def=
ine INT_CLK_OFF	(1 &lt;&lt; 4)<br>-#define INT_RXFIFO_REQ	(1 &lt;&lt; 5)<br=
>-#define INT_TXFIFO_REQ	(1 &lt;&lt; 6)<br>-#define INT_TINT	(1 &lt;&lt; 7)=
<br>-#define INT_DAT_ERR	(1 &lt;&lt; 8)<br>-#define INT_RES_ERR	(1 &lt;&lt;=
 9)<br>-#define INT_RD_STALLED	(1 &lt;&lt; 10)<br>-#define INT_SDIO_INT	(1 =
&lt;&lt; 11)<br>-#define INT_SDIO_SACK	(1 &lt;&lt; 12)<br>-#define PRTBUF_P=
RT_BUF	(1 &lt;&lt; 0)<br>+#define STRPCL_STOP_CLK (1 &lt;&lt; 0)<br>+#defin=
e STRPCL_STRT_CLK (1 &lt;&lt; 1)<br>+#define STAT_TOUT_RES =C2=A0 (1 &lt;&l=
t; 1)<br>+#define STAT_CLK_EN =C2=A0 =C2=A0 (1 &lt;&lt; 8)<br>+#define STAT=
_DATA_DONE =C2=A0(1 &lt;&lt; 11)<br>+#define STAT_PRG_DONE =C2=A0 (1 &lt;&l=
t; 12)<br>+#define STAT_END_CMDRES (1 &lt;&lt; 13)<br>+#define SPI_SPI_MODE=
 =C2=A0 =C2=A0(1 &lt;&lt; 0)<br>+#define CMDAT_RES_TYPE =C2=A0(3 &lt;&lt; 0=
)<br>+#define CMDAT_DATA_EN =C2=A0 (1 &lt;&lt; 2)<br>+#define CMDAT_WR_RD =
=C2=A0 =C2=A0 (1 &lt;&lt; 3)<br>+#define CMDAT_DMA_EN =C2=A0 =C2=A0(1 &lt;&=
lt; 7)<br>+#define CMDAT_STOP_TRAN (1 &lt;&lt; 10)<br>+#define INT_DATA_DON=
E =C2=A0 (1 &lt;&lt; 0)<br>+#define INT_PRG_DONE =C2=A0 =C2=A0(1 &lt;&lt; 1=
)<br>+#define INT_END_CMD =C2=A0 =C2=A0 (1 &lt;&lt; 2)<br>+#define INT_STOP=
_CMD =C2=A0 =C2=A0(1 &lt;&lt; 3)<br>+#define INT_CLK_OFF =C2=A0 =C2=A0 (1 &=
lt;&lt; 4)<br>+#define INT_RXFIFO_REQ =C2=A0(1 &lt;&lt; 5)<br>+#define INT_=
TXFIFO_REQ =C2=A0(1 &lt;&lt; 6)<br>+#define INT_TINT =C2=A0 =C2=A0 =C2=A0 =
=C2=A0(1 &lt;&lt; 7)<br>+#define INT_DAT_ERR =C2=A0 =C2=A0 (1 &lt;&lt; 8)<b=
r>+#define INT_RES_ERR =C2=A0 =C2=A0 (1 &lt;&lt; 9)<br>+#define INT_RD_STAL=
LED =C2=A0(1 &lt;&lt; 10)<br>+#define INT_SDIO_INT =C2=A0 =C2=A0(1 &lt;&lt;=
 11)<br>+#define INT_SDIO_SACK =C2=A0 (1 &lt;&lt; 12)<br>+#define PRTBUF_PR=
T_BUF =C2=A0(1 &lt;&lt; 0)<br>=C2=A0<br>=C2=A0/* Route internal interrupt l=
ines to the global IC and DMA */<br>=C2=A0static void pxa2xx_mmci_int_updat=
e(PXA2xxMMCIState *s)<br>@@ -179,23 +179,25 @@ static void pxa2xx_mmci_int_=
update(PXA2xxMMCIState *s)<br>=C2=A0<br>=C2=A0static void pxa2xx_mmci_fifo_=
update(PXA2xxMMCIState *s)<br>=C2=A0{<br>- =C2=A0 =C2=A0if (!s-&gt;active)<=
br>+ =C2=A0 =C2=A0if (!s-&gt;active) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return;<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0if (s-&gt;c=
mdat &amp; CMDAT_WR_RD) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0while (s-&gt=
;bytesleft &amp;&amp; s-&gt;tx_len) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0sdbus_write_byte(&amp;s-&gt;sdbus, s-&gt;tx_fifo[s-&gt;tx_sta=
rt++]);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tx_start &=
amp;=3D 0x1f;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tx_len --=
;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;bytesleft --;<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tx_len--;<br>+ =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;bytesleft--;<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0}<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;bytesleft)<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;bytesleft) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;intreq |=3D INT_TXFIFO_REQ;<br>+ =C2=A0 =C2=
=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0} else<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0while (s-&gt;bytesleft &amp;&amp; s-&gt;rx_len &lt; 32) {<br>-=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;rx_fifo[(s-&gt;rx_start + (=
s-&gt;rx_len ++)) &amp; 0x1f] =3D<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0s-&gt;rx_fifo[(s-&gt;rx_start + (s-&gt;rx_len++)) &amp; 0x1f] =3D<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sdbus_read_by=
te(&amp;s-&gt;sdbus);<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;b=
ytesleft --;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;bytesleft-=
-;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;intreq |=3D INT=
_RXFIFO_REQ;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>@@ -226,44=
 +228,50 @@ static void pxa2xx_mmci_wakequeues(PXA2xxMMCIState *s)<br>=C2=
=A0<br>=C2=A0 =C2=A0 =C2=A0request.cmd =3D s-&gt;cmd;<br>=C2=A0 =C2=A0 =C2=
=A0request.arg =3D s-&gt;arg;<br>- =C2=A0 =C2=A0request.crc =3D 0;	/* FIXME=
 */<br>+ =C2=A0 =C2=A0request.crc =3D 0; =C2=A0/* FIXME */<br>=C2=A0<br>=C2=
=A0 =C2=A0 =C2=A0rsplen =3D sdbus_do_command(&amp;s-&gt;sdbus, &amp;request=
, response);<br>=C2=A0 =C2=A0 =C2=A0s-&gt;intreq |=3D INT_END_CMD;<br>=C2=
=A0<br>=C2=A0 =C2=A0 =C2=A0memset(s-&gt;resp_fifo, 0, sizeof(s-&gt;resp_fif=
o));<br>=C2=A0 =C2=A0 =C2=A0switch (s-&gt;cmdat &amp; CMDAT_RES_TYPE) {<br>=
-#define PXAMMCI_RESP(wd, value0, value1)	\<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0s-&gt;resp_fifo[(wd) + 0] |=3D (value0);	\<br>- =C2=A0 =C2=A0 =C2=A0 =C2=
=A0s-&gt;resp_fifo[(wd) + 1] |=3D (value1) &lt;&lt; 8;<br>- =C2=A0 =C2=A0ca=
se 0:	/* No response */<br>+#define PXAMMCI_RESP(wd, value0, value1) =C2=A0=
 =C2=A0\<br>+ =C2=A0 =C2=A0do { =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0\<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;resp_fifo[(wd) + 0] =3D (=
value0); =C2=A0\<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;resp_fifo[(wd) + 1] =
=3D (value1); =C2=A0\<br>+ =C2=A0 =C2=A0} while (0)<br>+ =C2=A0 =C2=A0case =
0: /* No response */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto complete;<br=
>=C2=A0<br>- =C2=A0 =C2=A0case 1:	/* R1, R4, R5 or R6 */<br>- =C2=A0 =C2=A0=
 =C2=A0 =C2=A0if (rsplen &lt; 4)<br>+ =C2=A0 =C2=A0case 1: /* R1, R4, R5 or=
 R6 */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (rsplen &lt; 4) {<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto timeout;<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto complete;<br>=C2=A0<b=
r>- =C2=A0 =C2=A0case 2:	/* R2 */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (rsple=
n &lt; 16)<br>+ =C2=A0 =C2=A0case 2: /* R2 */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0if (rsplen &lt; 16) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0goto timeout;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0goto complete;<br>=C2=A0<br>- =C2=A0 =C2=A0case 3:	/* R3 */<br=
>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (rsplen &lt; 4)<br>+ =C2=A0 =C2=A0case 3: =
/* R3 */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (rsplen &lt; 4) {<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto timeout;<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto complete;<br>=C2=A0<b=
r>=C2=A0 =C2=A0 =C2=A0complete:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0for (i =3D =
0; rsplen &gt; 0; i ++, rsplen -=3D 2) {<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0fo=
r (i =3D 0; rsplen &gt; 0; i++, rsplen -=3D 2) {<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0PXAMMCI_RESP(i, response[i * 2], response[i * 2 =
+ 1]);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0s-&gt;status |=3D STAT_END_CMDRES;<br>=C2=A0<br>- =C2=A0 =C2=A0 =
=C2=A0 =C2=A0if (!(s-&gt;cmdat &amp; CMDAT_DATA_EN))<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0if (!(s-&gt;cmdat &amp; CMDAT_DATA_EN)) {<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;active =3D 0;<br>- =C2=A0 =C2=A0 =C2=A0 =
=C2=A0else<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;bytesleft =3D s-&gt;numblk * s-&gt;blklen=
;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0s-&gt;resp_len =3D 0;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;=
<br>@@ -333,7 +341,7 @@ static uint64_t pxa2xx_mmci_read(void *opaque, hwad=
dr offset, unsigned size)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0while (size-=
- &amp;&amp; s-&gt;rx_len) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0ret |=3D s-&gt;rx_fifo[s-&gt;rx_start++] &lt;&lt; (size &lt;&lt; 3);<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;rx_start &amp;=3D =
0x1f;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;rx_len --;<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;rx_len--;<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;intreq &am=
p;=3D ~INT_RXFIFO_REQ;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pxa2xx_mmci_fif=
o_update(s);<br>@@ -399,8 +407,9 @@ static void pxa2xx_mmci_write(void *opa=
que,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!(value &amp; CMDAT_STOP_TRAN=
)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;status &amp;=
=3D STAT_CLK_EN;<br>=C2=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if=
 (s-&gt;status &amp; STAT_CLK_EN)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0if (s-&gt;status &amp; STAT_CLK_EN) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pxa2xx_mmci_wakequeues(s);<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<=
br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pxa2xx_mmci_int_update(s);<b=
r>@@ -451,7 +460,7 @@ static void pxa2xx_mmci_write(void *opaque,<br>=C2=A0=
<br>=C2=A0 =C2=A0 =C2=A0case MMC_TXFIFO:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0while (size-- &amp;&amp; s-&gt;tx_len &lt; 0x20)<br>- =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tx_fifo[(s-&gt;tx_start + (s-&gt;tx_len ++)) =
&amp; 0x1f] =3D<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tx_fifo=
[(s-&gt;tx_start + (s-&gt;tx_len++)) &amp; 0x1f] =3D<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(value &gt;&gt; =
(size &lt;&lt; 3)) &amp; 0xff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;i=
ntreq &amp;=3D ~INT_TXFIFO_REQ;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pxa2xx=
_mmci_fifo_update(s);<br>diff --git a/hw/timer/omap_gptimer.c b/hw/timer/om=
ap_gptimer.c<br>index 34e6af7aff..078ce294eb 100644<br>--- a/hw/timer/omap_=
gptimer.c<br>+++ b/hw/timer/omap_gptimer.c<br>@@ -69,27 +69,29 @@ struct om=
ap_gp_timer_s {<br>=C2=A0 =C2=A0 =C2=A0uint32_t match_val;<br>=C2=A0 =C2=A0=
 =C2=A0int capt_num;<br>=C2=A0<br>- =C2=A0 =C2=A0uint16_t writeh;	/* LSB */=
<br>- =C2=A0 =C2=A0uint16_t readh;	/* MSB */<br>+ =C2=A0 =C2=A0uint16_t wri=
teh; =C2=A0/* LSB */<br>+ =C2=A0 =C2=A0uint16_t readh; =C2=A0 /* MSB */<br>=
=C2=A0};<br>=C2=A0<br>-#define GPT_TCAR_IT	(1 &lt;&lt; 2)<br>-#define GPT_O=
VF_IT	(1 &lt;&lt; 1)<br>-#define GPT_MAT_IT	(1 &lt;&lt; 0)<br>+#define GPT_=
TCAR_IT (1 &lt;&lt; 2)<br>+#define GPT_OVF_IT =C2=A0(1 &lt;&lt; 1)<br>+#def=
ine GPT_MAT_IT =C2=A0(1 &lt;&lt; 0)<br>=C2=A0<br>=C2=A0static inline void o=
map_gp_timer_intr(struct omap_gp_timer_s *timer, int it)<br>=C2=A0{<br>=C2=
=A0 =C2=A0 =C2=A0if (timer-&gt;it_ena &amp; it) {<br>- =C2=A0 =C2=A0 =C2=A0=
 =C2=A0if (!timer-&gt;status)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!timer-&g=
t;status) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_irq_rai=
se(timer-&gt;irq);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0timer-&gt;status |=3D it;<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0/* Or are the status bits set even when masked?<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 * i.e. is masking applied before or after the s=
tatus register? =C2=A0*/<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>- =C2=A0 =C2=
=A0if (timer-&gt;wu_ena &amp; it)<br>+ =C2=A0 =C2=A0if (timer-&gt;wu_ena &a=
mp; it) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_irq_pulse(timer-&gt;wku=
p);<br>+ =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=A0static inline void om=
ap_gp_timer_out(struct omap_gp_timer_s *timer, int level)<br>@@ -108,10 +11=
0,11 @@ static inline uint32_t omap_gp_timer_read(struct omap_gp_timer_s *t=
imer)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0distance =3D qemu_clock_get_ns(Q=
EMU_CLOCK_VIRTUAL) - timer-&gt;time;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0d=
istance =3D muldiv64(distance, timer-&gt;rate, timer-&gt;ticks_per_sec);<br=
>=C2=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (distance &gt;=3D 0xffffffff - t=
imer-&gt;val)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (distance &gt;=3D 0xffffff=
ff - timer-&gt;val) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0re=
turn 0xffffffff;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0re=
turn timer-&gt;val + distance;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =
=C2=A0 =C2=A0} else<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return timer-&gt;v=
al;<br>=C2=A0}<br>@@ -148,13 +151,14 @@ static inline void omap_gp_timer_up=
date(struct omap_gp_timer_s *timer)<br>=C2=A0<br>=C2=A0static inline void o=
map_gp_timer_trigger(struct omap_gp_timer_s *timer)<br>=C2=A0{<br>- =C2=A0 =
=C2=A0if (timer-&gt;pt)<br>+ =C2=A0 =C2=A0if (timer-&gt;pt) {<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0/* TODO in overflow-and-match mode if the first eve=
nt to<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * occur is the match, don&#39;t=
 toggle. =C2=A0*/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_gp_timer_out(ti=
mer, !timer-&gt;out_val);<br>- =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0} else {=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* TODO inverted pulse on timer-&gt;o=
ut_val =3D=3D 1? =C2=A0*/<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_irq_pul=
se(timer-&gt;out);<br>+ =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=A0static=
 void omap_gp_timer_tick(void *opaque)<br>@@ -181,8 +185,9 @@ static void o=
map_gp_timer_match(void *opaque)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0struct o=
map_gp_timer_s *timer =3D opaque;<br>=C2=A0<br>- =C2=A0 =C2=A0if (timer-&gt=
;trigger =3D=3D gpt_trigger_both)<br>+ =C2=A0 =C2=A0if (timer-&gt;trigger =
=3D=3D gpt_trigger_both) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_gp_tim=
er_trigger(timer);<br>+ =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0oma=
p_gp_timer_intr(timer, GPT_MAT_IT);<br>=C2=A0}<br>@@ -212,8 +217,9 @@ stati=
c void omap_gp_timer_input(void *opaque, int line, int on)<br>=C2=A0 =C2=A0=
 =C2=A0if (s-&gt;inout &amp;&amp; trigger &amp;&amp; s-&gt;capt_num &lt; 2)=
 {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;capture_val[s-&gt;capt_num] =
=3D omap_gp_timer_read(s);<br>=C2=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-=
&gt;capt2 =3D=3D s-&gt;capt_num ++)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&=
gt;capt2 =3D=3D s-&gt;capt_num++) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0omap_gp_timer_intr(s, GPT_TCAR_IT);<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0}<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>@@ -265,26 +271,26=
 @@ static uint32_t omap_gp_timer_readw(void *opaque, hwaddr addr)<br>=C2=
=A0 =C2=A0 =C2=A0struct omap_gp_timer_s *s =3D opaque;<br>=C2=A0<br>=C2=A0 =
=C2=A0 =C2=A0switch (addr) {<br>- =C2=A0 =C2=A0case 0x00:	/* TIDR */<br>+ =
=C2=A0 =C2=A0case 0x00: =C2=A0/* TIDR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return 0x21;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* TIOCP_CFG */<br>+=
 =C2=A0 =C2=A0case 0x10: =C2=A0/* TIOCP_CFG */<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0return s-&gt;config;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x14:	/* TI=
STAT */<br>+ =C2=A0 =C2=A0case 0x14: =C2=A0/* TISTAT */<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0/* ??? When&#39;s this bit reset? */<br>- =C2=A0 =C2=A0=
 =C2=A0 =C2=A0return 1;						/* RESETDONE */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0return 1; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* RESETDONE */<br>=C2=A0<b=
r>- =C2=A0 =C2=A0case 0x18:	/* TISR */<br>+ =C2=A0 =C2=A0case 0x18: =C2=A0/=
* TISR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;status;<br>=C2=
=A0<br>- =C2=A0 =C2=A0case 0x1c:	/* TIER */<br>+ =C2=A0 =C2=A0case 0x1c: =
=C2=A0/* TIER */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;it_ena;<=
br>=C2=A0<br>- =C2=A0 =C2=A0case 0x20:	/* TWER */<br>+ =C2=A0 =C2=A0case 0x=
20: =C2=A0/* TWER */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;wu_e=
na;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x24:	/* TCLR */<br>+ =C2=A0 =C2=A0cas=
e 0x24: =C2=A0/* TCLR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return (s-&gt=
;inout &lt;&lt; 14) |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0(s-&gt;capt2 &lt;&lt; 13) |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;pt &lt;&lt; 12) |<br>@@ -297,28 +303,=
28 @@ static uint32_t omap_gp_timer_readw(void *opaque, hwaddr addr)<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s-&gt;ar &lt;&l=
t; 1) |<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(s=
-&gt;st &lt;&lt; 0);<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x28:	/* TCRR */<br>+=
 =C2=A0 =C2=A0case 0x28: =C2=A0/* TCRR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0return omap_gp_timer_read(s);<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x2c:	=
/* TLDR */<br>+ =C2=A0 =C2=A0case 0x2c: =C2=A0/* TLDR */<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0return s-&gt;load_val;<br>=C2=A0<br>- =C2=A0 =C2=A0case=
 0x30:	/* TTGR */<br>+ =C2=A0 =C2=A0case 0x30: =C2=A0/* TTGR */<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0return 0xffffffff;<br>=C2=A0<br>- =C2=A0 =C2=A0c=
ase 0x34:	/* TWPS */<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x00000000;	/* =
No posted writes pending. =C2=A0*/<br>+ =C2=A0 =C2=A0case 0x34: =C2=A0/* TW=
PS */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x00000000; =C2=A0/* No posted=
 writes pending. =C2=A0*/<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x38:	/* TMAR */=
<br>+ =C2=A0 =C2=A0case 0x38: =C2=A0/* TMAR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0return s-&gt;match_val;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x3c:	/*=
 TCAR1 */<br>+ =C2=A0 =C2=A0case 0x3c: =C2=A0/* TCAR1 */<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0return s-&gt;capture_val[0];<br>=C2=A0<br>- =C2=A0 =C2=
=A0case 0x40:	/* TSICR */<br>+ =C2=A0 =C2=A0case 0x40: =C2=A0/* TSICR */<br=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;posted &lt;&lt; 2;<br>=C2=
=A0<br>- =C2=A0 =C2=A0case 0x44:	/* TCAR2 */<br>+ =C2=A0 =C2=A0case 0x44: =
=C2=A0/* TCAR2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;capture=
_val[1];<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>@@ -345,47 +351,54 @@ static=
 void omap_gp_timer_write(void *opaque, hwaddr addr, uint32_t value)<br>=C2=
=A0 =C2=A0 =C2=A0struct omap_gp_timer_s *s =3D opaque;<br>=C2=A0<br>=C2=A0 =
=C2=A0 =C2=A0switch (addr) {<br>- =C2=A0 =C2=A0case 0x00:	/* TIDR */<br>- =
=C2=A0 =C2=A0case 0x14:	/* TISTAT */<br>- =C2=A0 =C2=A0case 0x34:	/* TWPS *=
/<br>- =C2=A0 =C2=A0case 0x3c:	/* TCAR1 */<br>- =C2=A0 =C2=A0case 0x44:	/* =
TCAR2 */<br>+ =C2=A0 =C2=A0case 0x00: =C2=A0/* TIDR */<br>+ =C2=A0 =C2=A0ca=
se 0x14: =C2=A0/* TISTAT */<br>+ =C2=A0 =C2=A0case 0x34: =C2=A0/* TWPS */<b=
r>+ =C2=A0 =C2=A0case 0x3c: =C2=A0/* TCAR1 */<br>+ =C2=A0 =C2=A0case 0x44: =
=C2=A0/* TCAR2 */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0OMAP_RO_REG(addr);<b=
r>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case=
 0x10:	/* TIOCP_CFG */<br>+ =C2=A0 =C2=A0case 0x10: =C2=A0/* TIOCP_CFG */<b=
r>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;config =3D value &amp; 0x33d;<br>=
- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (((value &gt;&gt; 3) &amp; 3) =3D=3D 3)				=
/* IDLEMODE */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (((value &gt;&gt; 3) &amp=
; 3) =3D=3D 3) { =C2=A0 =C2=A0 =C2=A0/* IDLEMODE */<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0fprintf(stderr, &quot;%s: illegal IDLEMODE valu=
e in TIOCP_CFG\n&quot;,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__func__);<br>- =C2=
=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 2)						/* SOFTRESET */<br>+ =C2=A0=
 =C2=A0 =C2=A0 =C2=A0}<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 2) =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* SOFTRESET */<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_gp_timer_reset(s);<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x18:	/* TISR *=
/<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; GPT_TCAR_IT)<br>+ =C2=A0 =
=C2=A0case 0x18: =C2=A0/* TISR */<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value=
 &amp; GPT_TCAR_IT) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-=
&gt;capt_num =3D 0;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;status &amp;&=
amp; !(s-&gt;status &amp;=3D ~value))<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0qemu_irq_lower(s-&gt;irq);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>+=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&gt;status) {<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0s-&gt;status &amp;=3D ~value;<br>+ =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0if (!s-&gt;status) {<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_irq_lower(s-&gt;irq);<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x1c:	/*=
 TIER */<br>+ =C2=A0 =C2=A0case 0x1c: =C2=A0/* TIER */<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;it_ena =3D value &amp; 7;<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x20:	/* TWER */<br>+ =
=C2=A0 =C2=A0case 0x20: =C2=A0/* TWER */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0s-&gt;wu_ena =3D value &amp; 7;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bre=
ak;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x24:	/* TCLR */<br>+ =C2=A0 =C2=A0cas=
e 0x24: =C2=A0/* TCLR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_gp_timer=
_sync(s);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;inout =3D (value &gt;&=
gt; 14) &amp; 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;capt2 =3D (valu=
e &gt;&gt; 13) &amp; 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;pt =3D (=
value &gt;&gt; 12) &amp; 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;trig=
ger =3D (value &gt;&gt; 10) &amp; 3;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0i=
f (s-&gt;capture =3D=3D gpt_capture_none &amp;&amp;<br>- =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0((value &=
gt;&gt; 8) &amp; 3) !=3D gpt_capture_none)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0((value &gt;&gt; 8)=
 &amp; 3) !=3D gpt_capture_none) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0s-&gt;capt_num =3D 0;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;capture =3D (value &gt;&gt; 8) &amp; 3=
;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;scpwm =3D (value &gt;&gt; 7) &=
amp; 1;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;ce =3D (value &gt;&gt; 6=
) &amp; 1;<br>@@ -399,39 +412,41 @@ static void omap_gp_timer_write(void *o=
paque, hwaddr addr, uint32_t value)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if=
 (!s-&gt;inout &amp;&amp; s-&gt;capture !=3D gpt_capture_none)<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0fprintf(stderr, &quot;%s: GP timer=
 pin must be an input &quot;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;for thi=
s capture mode\n&quot;, __func__);<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&g=
t;trigger =3D=3D gpt_trigger_none)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (s-&g=
t;trigger =3D=3D gpt_trigger_none) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0omap_gp_timer_out(s, s-&gt;scpwm);<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* TODO: make sure this doesn&=
#39;t overflow 32-bits */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;ticks_=
per_sec =3D NANOSECONDS_PER_SECOND &lt;&lt; (s-&gt;pre ? s-&gt;ptv + 1 : 0)=
;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_gp_timer_update(s);<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x28:	/*=
 TCRR */<br>+ =C2=A0 =C2=A0case 0x28: =C2=A0/* TCRR */<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;time =3D qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;val =3D value;<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0omap_gp_timer_update(s);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0break;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x2c:	/* TLDR */<br>+ =C2=A0 =
=C2=A0case 0x2c: =C2=A0/* TLDR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&g=
t;load_val =3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0=
<br>- =C2=A0 =C2=A0case 0x30:	/* TTGR */<br>+ =C2=A0 =C2=A0case 0x30: =C2=
=A0/* TTGR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;time =3D qemu_cloc=
k_get_ns(QEMU_CLOCK_VIRTUAL);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;va=
l =3D s-&gt;load_val;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_gp_timer_up=
date(s);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>=C2=A0<br>- =C2=A0 =
=C2=A0case 0x38:	/* TMAR */<br>+ =C2=A0 =C2=A0case 0x38: =C2=A0/* TMAR */<b=
r>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_gp_timer_sync(s);<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0s-&gt;match_val =3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0omap_gp_timer_update(s);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bre=
ak;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x40:	/* TSICR */<br>+ =C2=A0 =C2=A0ca=
se 0x40: =C2=A0/* TSICR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;poste=
d =3D (value &gt;&gt; 2) &amp; 1;<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value=
 &amp; 2)	/* How much exactly are we supposed to reset? */<br>+ =C2=A0 =C2=
=A0 =C2=A0 =C2=A0if (value &amp; 2) { /* How much exactly are we supposed t=
o reset? */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_gp_time=
r_reset(s);<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0break;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0default:<br>@@ -443,10 +4=
58,11 @@ static void omap_gp_timer_writeh(void *opaque, hwaddr addr, uint32=
_t value)<br>=C2=A0{<br>=C2=A0 =C2=A0 =C2=A0struct omap_gp_timer_s *s =3D o=
paque;<br>=C2=A0<br>- =C2=A0 =C2=A0if (addr &amp; 2)<br>+ =C2=A0 =C2=A0if (=
addr &amp; 2) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0omap_gp_timer_write(op=
aque, addr, (value &lt;&lt; 16) | s-&gt;writeh);<br>- =C2=A0 =C2=A0else<br>=
+ =C2=A0 =C2=A0} else {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;writeh =
=3D (uint16_t) value;<br>+ =C2=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=A0sta=
tic uint64_t omap_gp_timer_readfn(void *opaque, hwaddr addr,<br>diff --git =
a/hw/timer/omap_synctimer.c b/hw/timer/omap_synctimer.c<br>index d93a9344ed=
..645170c015 100644<br>--- a/hw/timer/omap_synctimer.c<br>+++ b/hw/timer/om=
ap_synctimer.c<br>@@ -27,7 +27,8 @@ struct omap_synctimer_s {<br>=C2=A0};<b=
r>=C2=A0<br>=C2=A0/* 32-kHz Sync Timer of the OMAP2 */<br>-static uint32_t =
omap_synctimer_read(struct omap_synctimer_s *s) {<br>+static uint32_t omap_=
synctimer_read(struct omap_synctimer_s *s)<br>+{<br>=C2=A0 =C2=A0 =C2=A0ret=
urn muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL), 0x8000,<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0NANOSECON=
DS_PER_SECOND);<br>=C2=A0}<br>@@ -42,10 +43,10 @@ static uint32_t omap_sync=
timer_readw(void *opaque, hwaddr addr)<br>=C2=A0 =C2=A0 =C2=A0struct omap_s=
ynctimer_s *s =3D opaque;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (addr) {<=
br>- =C2=A0 =C2=A0case 0x00:	/* 32KSYNCNT_REV */<br>+ =C2=A0 =C2=A0case 0x0=
0: =C2=A0/* 32KSYNCNT_REV */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return 0x=
21;<br>=C2=A0<br>- =C2=A0 =C2=A0case 0x10:	/* CR */<br>+ =C2=A0 =C2=A0case =
0x10: =C2=A0/* CR */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return omap_synct=
imer_read(s) - s-&gt;val;<br>=C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>diff --git =
a/hw/timer/pxa2xx_timer.c b/hw/timer/pxa2xx_timer.c<br>index 6479ab1a8b..04=
0668631e 100644<br>--- a/hw/timer/pxa2xx_timer.c<br>+++ b/hw/timer/pxa2xx_t=
imer.c<br>@@ -20,42 +20,42 @@<br>=C2=A0#include &quot;qom/object.h&quot;<br=
>=C2=A0#include &quot;sysemu/watchdog.h&quot;<br>=C2=A0<br>-#define OSMR0	0=
x00<br>-#define OSMR1	0x04<br>-#define OSMR2	0x08<br>-#define OSMR3	0x0c<br=
>-#define OSMR4	0x80<br>-#define OSMR5	0x84<br>-#define OSMR6	0x88<br>-#def=
ine OSMR7	0x8c<br>-#define OSMR8	0x90<br>-#define OSMR9	0x94<br>-#define OS=
MR10	0x98<br>-#define OSMR11	0x9c<br>-#define OSCR	0x10	/* OS Timer Count *=
/<br>-#define OSCR4	0x40<br>-#define OSCR5	0x44<br>-#define OSCR6	0x48<br>-=
#define OSCR7	0x4c<br>-#define OSCR8	0x50<br>-#define OSCR9	0x54<br>-#defin=
e OSCR10	0x58<br>-#define OSCR11	0x5c<br>-#define OSSR	0x14	/* Timer status=
 register */<br>-#define OWER	0x18<br>-#define OIER	0x1c	/* Interrupt enabl=
e register =C2=A03-0 to E3-E0 */<br>-#define OMCR4	0xc0	/* OS Match Control=
 registers */<br>-#define OMCR5	0xc4<br>-#define OMCR6	0xc8<br>-#define OMC=
R7	0xcc<br>-#define OMCR8	0xd0<br>-#define OMCR9	0xd4<br>-#define OMCR10	0x=
d8<br>-#define OMCR11	0xdc<br>-#define OSNR	0x20<br>-<br>-#define PXA25X_FR=
EQ	3686400	/* 3.6864 MHz */<br>-#define PXA27X_FREQ	3250000	/* 3.25 MHz */<=
br>+#define OSMR0 =C2=A0 0x00<br>+#define OSMR1 =C2=A0 0x04<br>+#define OSM=
R2 =C2=A0 0x08<br>+#define OSMR3 =C2=A0 0x0c<br>+#define OSMR4 =C2=A0 0x80<=
br>+#define OSMR5 =C2=A0 0x84<br>+#define OSMR6 =C2=A0 0x88<br>+#define OSM=
R7 =C2=A0 0x8c<br>+#define OSMR8 =C2=A0 0x90<br>+#define OSMR9 =C2=A0 0x94<=
br>+#define OSMR10 =C2=A00x98<br>+#define OSMR11 =C2=A00x9c<br>+#define OSC=
R =C2=A0 =C2=A00x10 =C2=A0/* OS Timer Count */<br>+#define OSCR4 =C2=A0 0x4=
0<br>+#define OSCR5 =C2=A0 0x44<br>+#define OSCR6 =C2=A0 0x48<br>+#define O=
SCR7 =C2=A0 0x4c<br>+#define OSCR8 =C2=A0 0x50<br>+#define OSCR9 =C2=A0 0x5=
4<br>+#define OSCR10 =C2=A00x58<br>+#define OSCR11 =C2=A00x5c<br>+#define O=
SSR =C2=A0 =C2=A00x14 =C2=A0/* Timer status register */<br>+#define OWER =
=C2=A0 =C2=A00x18<br>+#define OIER =C2=A0 =C2=A00x1c =C2=A0/* Interrupt ena=
ble register =C2=A03-0 to E3-E0 */<br>+#define OMCR4 =C2=A0 0xc0 =C2=A0/* O=
S Match Control registers */<br>+#define OMCR5 =C2=A0 0xc4<br>+#define OMCR=
6 =C2=A0 0xc8<br>+#define OMCR7 =C2=A0 0xcc<br>+#define OMCR8 =C2=A0 0xd0<b=
r>+#define OMCR9 =C2=A0 0xd4<br>+#define OMCR10 =C2=A00xd8<br>+#define OMCR=
11 =C2=A00xdc<br>+#define OSNR =C2=A0 =C2=A00x20<br>+<br>+#define PXA25X_FR=
EQ 3686400 /* 3.6864 MHz */<br>+#define PXA27X_FREQ 3250000 /* 3.25 MHz */<=
br>=C2=A0<br>=C2=A0static int pxa2xx_timer4_freq[8] =3D {<br>=C2=A0 =C2=A0 =
=C2=A0[0] =3D 0,<br>@@ -108,7 +108,7 @@ struct PXA2xxTimerInfo {<br>=C2=A0 =
=C2=A0 =C2=A0PXA2xxTimer4 tm4[8];<br>=C2=A0};<br>=C2=A0<br>-#define PXA2XX_=
TIMER_HAVE_TM4	0<br>+#define PXA2XX_TIMER_HAVE_TM4 0<br>=C2=A0<br>=C2=A0sta=
tic inline int pxa2xx_timer_has_tm4(PXA2xxTimerInfo *s)<br>=C2=A0{<br>@@ -1=
25,7 +125,7 @@ static void pxa2xx_timer_update(void *opaque, uint64_t now_q=
emu)<br>=C2=A0 =C2=A0 =C2=A0now_vm =3D s-&gt;clock +<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0muldiv64(now_qemu - s-&gt;lastload, s-&gt;fr=
eq, NANOSECONDS_PER_SECOND);<br>=C2=A0<br>- =C2=A0 =C2=A0for (i =3D 0; i &l=
t; 4; i ++) {<br>+ =C2=A0 =C2=A0for (i =3D 0; i &lt; 4; i++) {<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0new_qemu =3D now_qemu + muldiv64((uint32_t) (s-&=
gt;timer[i].value - now_vm),<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0NANOSECONDS_PER_SECOND, s-&=
gt;freq);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0timer_mod(s-&gt;timer[i].qti=
mer, new_qemu);<br>@@ -141,10 +141,11 @@ static void pxa2xx_timer_update4(v=
oid *opaque, uint64_t now_qemu, int n)<br>=C2=A0 =C2=A0 =C2=A0int counter;<=
br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0assert(n &lt; ARRAY_SIZE(counters));<br>- =
=C2=A0 =C2=A0if (s-&gt;tm4[n].control &amp; (1 &lt;&lt; 7))<br>+ =C2=A0 =C2=
=A0if (s-&gt;tm4[n].control &amp; (1 &lt;&lt; 7)) {<br>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0counter =3D n;<br>- =C2=A0 =C2=A0else<br>+ =C2=A0 =C2=A0} els=
e {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0counter =3D counters[n];<br>+ =C2=
=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0if (!s-&gt;tm4[counter].freq) =
{<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0timer_del(s-&gt;tm4[n].tm.qtimer);<b=
r>@@ -167,52 +168,71 @@ static uint64_t pxa2xx_timer_read(void *opaque, hwa=
ddr offset,<br>=C2=A0 =C2=A0 =C2=A0int tm =3D 0;<br>=C2=A0<br>=C2=A0 =C2=A0=
 =C2=A0switch (offset) {<br>- =C2=A0 =C2=A0case OSMR3: =C2=A0tm ++;<br>+ =
=C2=A0 =C2=A0case OSMR3:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OSMR2:=
 =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSMR2:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=
=A0 =C2=A0case OSMR1: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSMR1:<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall =
through */<br>=C2=A0 =C2=A0 =C2=A0case OSMR0:<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0return s-&gt;timer[tm].value;<br>- =C2=A0 =C2=A0case OSMR11: tm +=
+;<br>+ =C2=A0 =C2=A0case OSMR11:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case=
 OSMR10: tm ++;<br>+ =C2=A0 =C2=A0case OSMR10:<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =
=C2=A0 =C2=A0case OSMR9: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSMR9:<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fa=
ll through */<br>- =C2=A0 =C2=A0case OSMR8: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0=
case OSMR8:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OSMR7: =C2=A0tm ++;<=
br>+ =C2=A0 =C2=A0case OSMR7:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OS=
MR6: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSMR6:<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =
=C2=A0 =C2=A0case OSMR5: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSMR5:<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fa=
ll through */<br>=C2=A0 =C2=A0 =C2=A0case OSMR4:<br>- =C2=A0 =C2=A0 =C2=A0 =
=C2=A0if (!pxa2xx_timer_has_tm4(s))<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!px=
a2xx_timer_has_tm4(s)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0goto badreg;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0return s-&gt;tm4[tm].tm.value;<br>=C2=A0 =C2=A0 =C2=A0case OSC=
R:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;clock + muldiv64(qemu_=
clock_get_ns(QEMU_CLOCK_VIRTUAL) -<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;lastload, s-&g=
t;freq, NANOSECONDS_PER_SECOND);<br>- =C2=A0 =C2=A0case OSCR11: tm ++;<br>+=
 =C2=A0 =C2=A0case OSCR11:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OSCR10=
: tm ++;<br>+ =C2=A0 =C2=A0case OSCR10:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm+=
+;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=
=A0case OSCR9: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSCR9:<br>+ =C2=A0 =C2=
=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through=
 */<br>- =C2=A0 =C2=A0case OSCR8: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSCR8=
:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0/* fall through */<br>- =C2=A0 =C2=A0case OSCR7: =C2=A0tm ++;<br>+ =C2=
=A0 =C2=A0case OSCR7:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OSCR6: =
=C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSCR6:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0=
tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =
=C2=A0case OSCR5: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSCR5:<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall thro=
ugh */<br>=C2=A0 =C2=A0 =C2=A0case OSCR4:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0i=
f (!pxa2xx_timer_has_tm4(s))<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!pxa2xx_ti=
mer_has_tm4(s)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto b=
adreg;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0if ((tm =3D=3D 9 - 4 || tm =3D=3D 11 - 4) &amp;&amp; (s-&gt;tm=
4[tm].control &amp; (1 &lt;&lt; 9))) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0if (s-&gt;tm4[tm - 1].freq)<br>@@ -224,35 +244,44 @@ stati=
c uint64_t pxa2xx_timer_read(void *opaque, hwaddr offset,<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;snapshot =3D s-&gt;tm=
4[tm - 1].clock;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>- =C2=
=A0 =C2=A0 =C2=A0 =C2=A0if (!s-&gt;tm4[tm].freq)<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0if (!s-&gt;tm4[tm].freq) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0return s-&gt;tm4[tm].clock;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;tm4[tm].clock +<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0muldiv64(qemu_clock_get_ns(QEMU_CL=
OCK_VIRTUAL) -<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 s-&gt;tm4[tm].lastload, s-&gt;tm4[tm].freq,<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NANOS=
ECONDS_PER_SECOND);<br>=C2=A0 =C2=A0 =C2=A0case OIER:<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0return s-&gt;irq_enabled;<br>- =C2=A0 =C2=A0case OSSR:	/* =
Status register */<br>+ =C2=A0 =C2=A0case OSSR: =C2=A0/* Status register */=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;events;<br>=C2=A0 =C2=A0=
 =C2=A0case OWER:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;reset3;=
<br>- =C2=A0 =C2=A0case OMCR11: tm ++;<br>+ =C2=A0 =C2=A0case OMCR11:<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fa=
ll through */<br>- =C2=A0 =C2=A0case OMCR10: tm ++;<br>+ =C2=A0 =C2=A0case =
OMCR10:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OMCR9: =C2=A0tm ++;<br>=
+ =C2=A0 =C2=A0case OMCR9:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OMCR8:=
 =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OMCR8:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=
=A0 =C2=A0case OMCR7: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OMCR7:<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall =
through */<br>- =C2=A0 =C2=A0case OMCR6: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0cas=
e OMCR6:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OMCR5: =C2=A0tm ++;<br>=
+ =C2=A0 =C2=A0case OMCR5:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>=C2=A0 =C2=A0 =C2=A0case O=
MCR4:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!pxa2xx_timer_has_tm4(s))<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!pxa2xx_timer_has_tm4(s)) {<br>=C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto badreg;<br>+ =C2=A0 =C2=A0 =C2=A0 =
=C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return s-&gt;tm4[tm].control;<=
br>=C2=A0 =C2=A0 =C2=A0case OSNR:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0retu=
rn s-&gt;snapshot;<br>@@ -277,33 +306,44 @@ static void pxa2xx_timer_write(=
void *opaque, hwaddr offset,<br>=C2=A0 =C2=A0 =C2=A0PXA2xxTimerInfo *s =3D =
(PXA2xxTimerInfo *) opaque;<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0switch (offset=
) {<br>- =C2=A0 =C2=A0case OSMR3: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSMR3=
:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0/* fall through */<br>- =C2=A0 =C2=A0case OSMR2: =C2=A0tm ++;<br>+ =C2=
=A0 =C2=A0case OSMR2:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OSMR1: =
=C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSMR1:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0=
tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>=C2=A0 =C2=
=A0 =C2=A0case OSMR0:<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;timer[tm].=
value =3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pxa2xx_timer_update(s=
, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL));<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0break;<br>- =C2=A0 =C2=A0case OSMR11: tm ++;<br>+ =C2=A0 =C2=A0case O=
SMR11:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OSMR10: tm ++;<br>+ =C2=A0=
 =C2=A0case OSMR10:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OSMR9: =C2=A0=
tm ++;<br>+ =C2=A0 =C2=A0case OSMR9:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0c=
ase OSMR8: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSMR8:<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<=
br>- =C2=A0 =C2=A0case OSMR7: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSMR7:<br=
>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/*=
 fall through */<br>- =C2=A0 =C2=A0case OSMR6: =C2=A0tm ++;<br>+ =C2=A0 =C2=
=A0case OSMR6:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OSMR5: =C2=A0tm =
++;<br>+ =C2=A0 =C2=A0case OSMR5:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>=C2=A0 =C2=A0 =C2=
=A0case OSMR4:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!pxa2xx_timer_has_tm4(s)=
)<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!pxa2xx_timer_has_tm4(s)) {<br>=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto badreg;<br>+ =C2=A0 =C2=A0 =
=C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tm4[tm].tm.value =
=3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pxa2xx_timer_update4(s, qem=
u_clock_get_ns(QEMU_CLOCK_VIRTUAL), tm);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0break;<br>@@ -313,23 +353,31 @@ static void pxa2xx_timer_write(void *opa=
que, hwaddr offset,<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;clock =3D va=
lue;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pxa2xx_timer_update(s, s-&gt;last=
load);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=A0case O=
SCR11: tm ++;<br>+ =C2=A0 =C2=A0case OSCR11:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=
=A0 =C2=A0case OSCR10: tm ++;<br>+ =C2=A0 =C2=A0case OSCR10:<br>+ =C2=A0 =
=C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall thro=
ugh */<br>- =C2=A0 =C2=A0case OSCR9: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OS=
CR9:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OSCR8: =C2=A0tm ++;<br>+ =
=C2=A0 =C2=A0case OSCR8:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OSCR7:=
 =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSCR7:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=
=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=
=A0 =C2=A0case OSCR6: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OSCR6:<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall =
through */<br>- =C2=A0 =C2=A0case OSCR5: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0cas=
e OSCR5:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0/* fall through */<br>=C2=A0 =C2=A0 =C2=A0case OSCR4:<br>- =C2=A0=
 =C2=A0 =C2=A0 =C2=A0if (!pxa2xx_timer_has_tm4(s))<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0if (!pxa2xx_timer_has_tm4(s)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0goto badreg;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tm4[tm].oldclock =3D s-&gt;tm4[tm].clo=
ck;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tm4[tm].lastload =3D qemu_cl=
ock_get_ns(QEMU_CLOCK_VIRTUAL);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;=
tm4[tm].clock =3D value;<br>@@ -338,27 +386,33 @@ static void pxa2xx_timer_=
write(void *opaque, hwaddr offset,<br>=C2=A0 =C2=A0 =C2=A0case OIER:<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;irq_enabled =3D value &amp; 0xfff;<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=A0case OSSR:	/* St=
atus register */<br>+ =C2=A0 =C2=A0case OSSR: =C2=A0/* Status register */<b=
r>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0value &amp;=3D s-&gt;events;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;events &amp;=3D ~value;<br>- =C2=A0 =C2=A0=
 =C2=A0 =C2=A0for (i =3D 0; i &lt; 4; i ++, value &gt;&gt;=3D 1)<br>- =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 1)<br>+ =C2=A0 =C2=A0=
 =C2=A0 =C2=A0for (i =3D 0; i &lt; 4; i++, value &gt;&gt;=3D 1)<br>+ =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (value &amp; 1) {<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_irq_lower(s-&gt;timer[=
i].irq);<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (pxa2xx_timer_has_tm4(s) &amp;&=
amp; !(s-&gt;events &amp; 0xff0) &amp;&amp; value)<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0}<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (pxa2xx_timer_=
has_tm4(s) &amp;&amp; !(s-&gt;events &amp; 0xff0) &amp;&amp; value) {<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_irq_lower(s-&gt;irq4);=
<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bre=
ak;<br>- =C2=A0 =C2=A0case OWER:	/* XXX: Reset on OSMR3 match? */<br>+ =C2=
=A0 =C2=A0case OWER: =C2=A0/* XXX: Reset on OSMR3 match? */<br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;reset3 =3D value;<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0break;<br>- =C2=A0 =C2=A0case OMCR7: =C2=A0tm ++;<br>+ =C2=A0 =C2=
=A0case OMCR7:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case OMCR6: =C2=A0tm =
++;<br>+ =C2=A0 =C2=A0case OMCR6:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =C2=A0case=
 OMCR5: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OMCR5:<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>=
=C2=A0 =C2=A0 =C2=A0case OMCR4:<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!pxa2xx=
_timer_has_tm4(s))<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!pxa2xx_timer_has_tm=
4(s)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0goto badreg;<br>=
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;t=
m4[tm].control =3D value &amp; 0x0ff;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
/* XXX Stop if running (shouldn&#39;t happen) */<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0if ((value &amp; (1 &lt;&lt; 7)) || tm =3D=3D 0)<br>@@ -368,15=
 +422,20 @@ static void pxa2xx_timer_write(void *opaque, hwaddr offset,<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pxa2xx_timer_update4(s, qem=
u_clock_get_ns(QEMU_CLOCK_VIRTUAL), tm);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0}<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0break;<br>- =C2=A0 =C2=A0case OMC=
R11: tm ++;<br>+ =C2=A0 =C2=A0case OMCR11:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0=
tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */<br>- =C2=A0 =
=C2=A0case OMCR10: tm ++;<br>+ =C2=A0 =C2=A0case OMCR10:<br>+ =C2=A0 =C2=A0=
 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* fall through */=
<br>- =C2=A0 =C2=A0case OMCR9: =C2=A0tm ++;<br>+ =C2=A0 =C2=A0case OMCR9:<b=
r>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm++;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/=
* fall through */<br>- =C2=A0 =C2=A0case OMCR8: =C2=A0tm +=3D 4;<br>- =C2=
=A0 =C2=A0 =C2=A0 =C2=A0if (!pxa2xx_timer_has_tm4(s))<br>+ =C2=A0 =C2=A0cas=
e OMCR8:<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0tm +=3D 4;<br>+ =C2=A0 =C2=A0 =C2=
=A0 =C2=A0if (!pxa2xx_timer_has_tm4(s)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0goto badreg;<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tm4[tm].control =3D value &amp; 0x3ff;=
<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* XXX Stop if running (shouldn&#39;t=
 happen) */<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if ((value &amp; (1 &lt;&l=
t; 7)) || !(tm &amp; 1))<br>@@ -428,12 +487,15 @@ static void pxa2xx_timer_=
tick4(void *opaque)<br>=C2=A0 =C2=A0 =C2=A0PXA2xxTimerInfo *i =3D (PXA2xxTi=
merInfo *) t-&gt;<a href=3D"http://tm.info">tm.info</a>;<br>=C2=A0<br>=C2=
=A0 =C2=A0 =C2=A0pxa2xx_timer_tick(&amp;t-&gt;tm);<br>- =C2=A0 =C2=A0if (t-=
&gt;control &amp; (1 &lt;&lt; 3))<br>+ =C2=A0 =C2=A0if (t-&gt;control &amp;=
 (1 &lt;&lt; 3)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0t-&gt;clock =3D 0;<=
br>- =C2=A0 =C2=A0if (t-&gt;control &amp; (1 &lt;&lt; 6))<br>+ =C2=A0 =C2=
=A0}<br>+ =C2=A0 =C2=A0if (t-&gt;control &amp; (1 &lt;&lt; 6)) {<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0pxa2xx_timer_update4(i, qemu_clock_get_ns(QEMU_C=
LOCK_VIRTUAL), t-&gt;tm.num - 4);<br>- =C2=A0 =C2=A0if (i-&gt;events &amp; =
0xff0)<br>+ =C2=A0 =C2=A0}<br>+ =C2=A0 =C2=A0if (i-&gt;events &amp; 0xff0) =
{<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0qemu_irq_raise(i-&gt;irq4);<br>+ =C2=
=A0 =C2=A0}<br>=C2=A0}<br>=C2=A0<br>=C2=A0static int pxa25x_timer_post_load=
(void *opaque, int version_id)<br>@@ -446,8 +508,9 @@ static int pxa25x_tim=
er_post_load(void *opaque, int version_id)<br>=C2=A0 =C2=A0 =C2=A0pxa2xx_ti=
mer_update(s, now);<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0if (pxa2xx_timer_has_t=
m4(s))<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0for (i =3D 0; i &lt; 8; i ++)<br>+ =
=C2=A0 =C2=A0 =C2=A0 =C2=A0for (i =3D 0; i &lt; 8; i++) {<br>=C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pxa2xx_timer_update4(s, now, i);<br>+ =C2=
=A0 =C2=A0 =C2=A0 =C2=A0}<br>=C2=A0<br>=C2=A0 =C2=A0 =C2=A0return 0;<br>=C2=
=A0}<br>@@ -474,7 +537,7 @@ static void pxa2xx_timer_realize(DeviceState *d=
ev, Error **errp)<br>=C2=A0 =C2=A0 =C2=A0SysBusDevice *sbd =3D SYS_BUS_DEVI=
CE(dev);<br>=C2=A0 =C2=A0 =C2=A0int i;<br>=C2=A0<br>- =C2=A0 =C2=A0for (i =
=3D 0; i &lt; 4; i ++) {<br>+ =C2=A0 =C2=A0for (i =3D 0; i &lt; 4; i++) {<b=
r>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;timer[i].value =3D 0;<br>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0sysbus_init_irq(sbd, &amp;s-&gt;timer[i].irq);<b=
r>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;timer[i].info =3D s;<br>@@ -486,7=
 +549,7 @@ static void pxa2xx_timer_realize(DeviceState *dev, Error **errp)=
<br>=C2=A0 =C2=A0 =C2=A0if (s-&gt;flags &amp; (1 &lt;&lt; PXA2XX_TIMER_HAVE=
_TM4)) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0sysbus_init_irq(sbd, &amp;s-&=
gt;irq4);<br>=C2=A0<br>- =C2=A0 =C2=A0 =C2=A0 =C2=A0for (i =3D 0; i &lt; 8;=
 i ++) {<br>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0for (i =3D 0; i &lt; 8; i++) {<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tm4[i].tm.value =3D 0=
;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0s-&gt;tm4[i].<a href=
=3D"http://tm.info">tm.info</a> =3D s;<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0s-&gt;tm4[i].tm.num =3D i + 4;<br>diff --git a/include/hw/=
arm/pxa.h b/include/hw/arm/pxa.h<br>index 4c6caee113..9c6d434a4b 100644<br>=
--- a/include/hw/arm/pxa.h<br>+++ b/include/hw/arm/pxa.h<br>@@ -16,57 +16,5=
7 @@<br>=C2=A0#include &quot;qom/object.h&quot;<br>=C2=A0<br>=C2=A0/* Inter=
rupt numbers */<br>-# define PXA2XX_PIC_SSP3	0<br>-# define PXA2XX_PIC_USBH=
2	2<br>-# define PXA2XX_PIC_USBH1	3<br>-# define PXA2XX_PIC_KEYPAD	4<br>-# =
define PXA2XX_PIC_PWRI2C	6<br>-# define PXA25X_PIC_HWUART	7<br>-# define PX=
A27X_PIC_OST_4_11	7<br>-# define PXA2XX_PIC_GPIO_0	8<br>-# define PXA2XX_PI=
C_GPIO_1	9<br>-# define PXA2XX_PIC_GPIO_X	10<br>-# define PXA2XX_PIC_I2S 	1=
3<br>-# define PXA26X_PIC_ASSP	15<br>-# define PXA25X_PIC_NSSP	16<br>-# def=
ine PXA27X_PIC_SSP2	16<br>-# define PXA2XX_PIC_LCD		17<br>-# define PXA2XX_=
PIC_I2C		18<br>-# define PXA2XX_PIC_ICP		19<br>-# define PXA2XX_PIC_STUART	=
20<br>-# define PXA2XX_PIC_BTUART	21<br>-# define PXA2XX_PIC_FFUART	22<br>-=
# define PXA2XX_PIC_MMC		23<br>-# define PXA2XX_PIC_SSP		24<br>-# define PX=
A2XX_PIC_DMA		25<br>-# define PXA2XX_PIC_OST_0	26<br>-# define PXA2XX_PIC_R=
TC1HZ	30<br>-# define PXA2XX_PIC_RTCALARM	31<br>+# define PXA2XX_PIC_SSP3 =
=C2=A0 =C2=A0 =C2=A0 =C2=A00<br>+# define PXA2XX_PIC_USBH2 =C2=A0 =C2=A0 =
=C2=A0 2<br>+# define PXA2XX_PIC_USBH1 =C2=A0 =C2=A0 =C2=A0 3<br>+# define =
PXA2XX_PIC_KEYPAD =C2=A0 =C2=A0 =C2=A04<br>+# define PXA2XX_PIC_PWRI2C =C2=
=A0 =C2=A0 =C2=A06<br>+# define PXA25X_PIC_HWUART =C2=A0 =C2=A0 =C2=A07<br>=
+# define PXA27X_PIC_OST_4_11 =C2=A0 =C2=A07<br>+# define PXA2XX_PIC_GPIO_0=
 =C2=A0 =C2=A0 =C2=A08<br>+# define PXA2XX_PIC_GPIO_1 =C2=A0 =C2=A0 =C2=A09=
<br>+# define PXA2XX_PIC_GPIO_X =C2=A0 =C2=A0 =C2=A010<br>+# define PXA2XX_=
PIC_I2S =C2=A0 =C2=A0 =C2=A0 =C2=A0 13<br>+# define PXA26X_PIC_ASSP =C2=A0 =
=C2=A0 =C2=A0 =C2=A015<br>+# define PXA25X_PIC_NSSP =C2=A0 =C2=A0 =C2=A0 =
=C2=A016<br>+# define PXA27X_PIC_SSP2 =C2=A0 =C2=A0 =C2=A0 =C2=A016<br>+# d=
efine PXA2XX_PIC_LCD =C2=A0 =C2=A0 =C2=A0 =C2=A0 17<br>+# define PXA2XX_PIC=
_I2C =C2=A0 =C2=A0 =C2=A0 =C2=A0 18<br>+# define PXA2XX_PIC_ICP =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 19<br>+# define PXA2XX_PIC_STUART =C2=A0 =C2=A0 =C2=A020<=
br>+# define PXA2XX_PIC_BTUART =C2=A0 =C2=A0 =C2=A021<br>+# define PXA2XX_P=
IC_FFUART =C2=A0 =C2=A0 =C2=A022<br>+# define PXA2XX_PIC_MMC =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 23<br>+# define PXA2XX_PIC_SSP =C2=A0 =C2=A0 =C2=A0 =C2=A0 24=
<br>+# define PXA2XX_PIC_DMA =C2=A0 =C2=A0 =C2=A0 =C2=A0 25<br>+# define PX=
A2XX_PIC_OST_0 =C2=A0 =C2=A0 =C2=A0 26<br>+# define PXA2XX_PIC_RTC1HZ =C2=
=A0 =C2=A0 =C2=A030<br>+# define PXA2XX_PIC_RTCALARM =C2=A0 =C2=A031<br>=C2=
=A0<br>=C2=A0/* DMA requests */<br>-# define PXA2XX_RX_RQ_I2S	2<br>-# defin=
e PXA2XX_TX_RQ_I2S	3<br>-# define PXA2XX_RX_RQ_BTUART	4<br>-# define PXA2XX=
_TX_RQ_BTUART	5<br>-# define PXA2XX_RX_RQ_FFUART	6<br>-# define PXA2XX_TX_R=
Q_FFUART	7<br>-# define PXA2XX_RX_RQ_SSP1	13<br>-# define PXA2XX_TX_RQ_SSP1=
	14<br>-# define PXA2XX_RX_RQ_SSP2	15<br>-# define PXA2XX_TX_RQ_SSP2	16<br>=
-# define PXA2XX_RX_RQ_ICP	17<br>-# define PXA2XX_TX_RQ_ICP	18<br>-# define=
 PXA2XX_RX_RQ_STUART	19<br>-# define PXA2XX_TX_RQ_STUART	20<br>-# define PX=
A2XX_RX_RQ_MMCI	21<br>-# define PXA2XX_TX_RQ_MMCI	22<br>-# define PXA2XX_US=
B_RQ(x)	((x) + 24)<br>-# define PXA2XX_RX_RQ_SSP3	66<br>-# define PXA2XX_TX=
_RQ_SSP3	67<br>-<br>-# define PXA2XX_SDRAM_BASE	0xa0000000<br>-# define PXA=
2XX_INTERNAL_BASE	0x5c000000<br>-# define PXA2XX_INTERNAL_SIZE	0x40000<br>+=
# define PXA2XX_RX_RQ_I2S =C2=A0 =C2=A0 =C2=A0 2<br>+# define PXA2XX_TX_RQ_=
I2S =C2=A0 =C2=A0 =C2=A0 3<br>+# define PXA2XX_RX_RQ_BTUART =C2=A0 =C2=A04<=
br>+# define PXA2XX_TX_RQ_BTUART =C2=A0 =C2=A05<br>+# define PXA2XX_RX_RQ_F=
FUART =C2=A0 =C2=A06<br>+# define PXA2XX_TX_RQ_FFUART =C2=A0 =C2=A07<br>+# =
define PXA2XX_RX_RQ_SSP1 =C2=A0 =C2=A0 =C2=A013<br>+# define PXA2XX_TX_RQ_S=
SP1 =C2=A0 =C2=A0 =C2=A014<br>+# define PXA2XX_RX_RQ_SSP2 =C2=A0 =C2=A0 =C2=
=A015<br>+# define PXA2XX_TX_RQ_SSP2 =C2=A0 =C2=A0 =C2=A016<br>+# define PX=
A2XX_RX_RQ_ICP =C2=A0 =C2=A0 =C2=A0 17<br>+# define PXA2XX_TX_RQ_ICP =C2=A0=
 =C2=A0 =C2=A0 18<br>+# define PXA2XX_RX_RQ_STUART =C2=A0 =C2=A019<br>+# de=
fine PXA2XX_TX_RQ_STUART =C2=A0 =C2=A020<br>+# define PXA2XX_RX_RQ_MMCI =C2=
=A0 =C2=A0 =C2=A021<br>+# define PXA2XX_TX_RQ_MMCI =C2=A0 =C2=A0 =C2=A022<b=
r>+# define PXA2XX_USB_RQ(x) =C2=A0 =C2=A0 =C2=A0 ((x) + 24)<br>+# define P=
XA2XX_RX_RQ_SSP3 =C2=A0 =C2=A0 =C2=A066<br>+# define PXA2XX_TX_RQ_SSP3 =C2=
=A0 =C2=A0 =C2=A067<br>+<br>+# define PXA2XX_SDRAM_BASE =C2=A0 =C2=A0 =C2=
=A00xa0000000<br>+# define PXA2XX_INTERNAL_BASE =C2=A0 0x5c000000<br>+# def=
ine PXA2XX_INTERNAL_SIZE =C2=A0 0x40000<br>=C2=A0<br>=C2=A0/* pxa2xx_pic.c =
*/<br>=C2=A0DeviceState *pxa2xx_pic_init(hwaddr base, ARMCPU *cpu);<br>@@ -=
189,7 +189,7 @@ struct PXA2xxI2SState {<br>=C2=A0 =C2=A0 =C2=A0uint32_t fif=
o[16];<br>=C2=A0};<br>=C2=A0<br>-# define PA_FMT			&quot;0x%08lx&quot;<br>+=
# define PA_FMT =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &qu=
ot;0x%08lx&quot;<br>=C2=A0<br>=C2=A0PXA2xxState *pxa270_init(unsigned int s=
dram_size, const char *revision);<br>=C2=A0PXA2xxState *pxa255_init(unsigne=
d int sdram_size);<br>diff --git a/include/hw/arm/sharpsl.h b/include/hw/ar=
m/sharpsl.h<br>index e986b28c52..7e5e7ca60b 100644<br>--- a/include/hw/arm/=
sharpsl.h<br>+++ b/include/hw/arm/sharpsl.h<br>@@ -11,7 +11,7 @@<br>=C2=A0<=
br>=C2=A0/* zaurus.c */<br>=C2=A0<br>-#define SL_PXA_PARAM_BASE	0xa0000a00<=
br>+#define SL_PXA_PARAM_BASE =C2=A0 =C2=A0 =C2=A0 0xa0000a00<br>=C2=A0void=
 sl_bootparam_write(hwaddr ptr);<br>=C2=A0<br>=C2=A0#endif<br>diff --git a/=
include/hw/arm/soc_dma.h b/include/hw/arm/soc_dma.h<br>index e93a7499a8..bc=
db91425a 100644<br>--- a/include/hw/arm/soc_dma.h<br>+++ b/include/hw/arm/s=
oc_dma.h<br>@@ -54,7 +54,7 @@ struct soc_dma_ch_s {<br>=C2=A0 =C2=A0 =C2=A0=
int bytes;<br>=C2=A0 =C2=A0 =C2=A0/* Initialised by the DMA module, call so=
c_dma_ch_update after writing. =C2=A0*/<br>=C2=A0 =C2=A0 =C2=A0enum soc_dma=
_access_type type[2];<br>- =C2=A0 =C2=A0hwaddr vaddr[2];	/* Updated by .tra=
nsfer_fn(). =C2=A0*/<br>+ =C2=A0 =C2=A0hwaddr vaddr[2]; =C2=A0 =C2=A0/* Upd=
ated by .transfer_fn(). =C2=A0*/<br>=C2=A0 =C2=A0 =C2=A0/* Private */<br>=
=C2=A0 =C2=A0 =C2=A0void *paddr[2];<br>=C2=A0 =C2=A0 =C2=A0soc_dma_io_t io_=
fn[2];<br>@@ -70,7 +70,7 @@ struct soc_dma_ch_s {<br>=C2=A0struct soc_dma_s=
 {<br>=C2=A0 =C2=A0 =C2=A0/* Following fields are set by the SoC DMA module=
 and can be used<br>=C2=A0 =C2=A0 =C2=A0 * by anybody. =C2=A0*/<br>- =C2=A0=
 =C2=A0uint64_t drqbmp;	/* Is zeroed by soc_dma_reset() */<br>+ =C2=A0 =C2=
=A0uint64_t drqbmp; =C2=A0 =C2=A0/* Is zeroed by soc_dma_reset() */<br>=C2=
=A0 =C2=A0 =C2=A0qemu_irq *drq;<br>=C2=A0 =C2=A0 =C2=A0void *opaque;<br>=C2=
=A0 =C2=A0 =C2=A0int64_t freq;<br>diff --git a/tcg/arm/tcg-target.h b/tcg/a=
rm/tcg-target.h<br>index a43875cb09..9a07372fd9 100644<br>--- a/tcg/arm/tcg=
-target.h<br>+++ b/tcg/arm/tcg-target.h<br>@@ -86,8 +86,8 @@ extern bool us=
e_neon_instructions;<br>=C2=A0#endif<br>=C2=A0<br>=C2=A0/* used for functio=
n call generation */<br>-#define TCG_TARGET_STACK_ALIGN		8<br>-#define TCG_=
TARGET_CALL_STACK_OFFSET	0<br>+#define TCG_TARGET_STACK_ALIGN =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A08<br>+#define TCG_TARGET_CALL_STACK_OFFSET =C2=A0 =C2=
=A00<br>=C2=A0#define TCG_TARGET_CALL_ARG_I32 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T=
CG_CALL_ARG_NORMAL<br>=C2=A0#define TCG_TARGET_CALL_ARG_I64 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 TCG_CALL_ARG_EVEN<br>=C2=A0#define TCG_TARGET_CALL_ARG_I128 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0TCG_CALL_ARG_EVEN<br>-- <br>2.43.0<br><br><br></=
div>

--000000000000c6e3b70617c3118c--