From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MsZTE-0004hq-Cz for qemu-devel@nongnu.org; Tue, 29 Sep 2009 05:58:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MsZTD-0004he-DH for qemu-devel@nongnu.org; Tue, 29 Sep 2009 05:58:07 -0400 Received: from [199.232.76.173] (port=46107 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MsZTD-0004hb-57 for qemu-devel@nongnu.org; Tue, 29 Sep 2009 05:58:07 -0400 Received: from fg-out-1718.google.com ([72.14.220.155]:36291) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MsZTC-0001E7-DD for qemu-devel@nongnu.org; Tue, 29 Sep 2009 05:58:06 -0400 Received: by fg-out-1718.google.com with SMTP id e21so962552fga.10 for ; Tue, 29 Sep 2009 02:58:04 -0700 (PDT) MIME-Version: 1.0 Date: Tue, 29 Sep 2009 11:58:04 +0200 Message-ID: <761ea48b0909290258x4313e24ahb8ca1e4237e62072@mail.gmail.com> From: Laurent Desnogues Content-Type: multipart/mixed; boundary=001485e9ab4f57e64a0474b473b8 Subject: [Qemu-devel] [PATCH] x86: use globals for CPU registers (rev 2) List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org --001485e9ab4f57e64a0474b473b8 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hello, this is a revision of my proposal to use globals for the 8 or 16 CPU registers on i386 and x86_64. The changes with my previous patch are: - take into account Aur=E9lien's comments - get rid of USE_REGS define (thus the old way of accessing x86 is no more) - respect the original order of functions - simplify code in some places. It would probably be good if someone could give this a test for system mode, as I only tested user mode i386/x86_64 on a x86_64 host and i386 on i386. Laurent --001485e9ab4f57e64a0474b473b8 Content-Type: text/x-diff; charset=US-ASCII; name="i386-reg-v2.patch" Content-Disposition: attachment; filename="i386-reg-v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g06gxvuc0 ZGlmZiAtLWdpdCBhL3RhcmdldC1pMzg2L3RyYW5zbGF0ZS5jIGIvdGFyZ2V0LWkzODYvdHJhbnNs YXRlLmMKaW5kZXggM2VhZTliYy4uNWIxMWQ3ZiAxMDA2NDQKLS0tIGEvdGFyZ2V0LWkzODYvdHJh bnNsYXRlLmMKKysrIGIvdGFyZ2V0LWkzODYvdHJhbnNsYXRlLmMKQEAgLTYyLDYgKzYyLDcgQEAK IHN0YXRpYyBUQ0d2X3B0ciBjcHVfZW52Owogc3RhdGljIFRDR3YgY3B1X0EwLCBjcHVfY2Nfc3Jj LCBjcHVfY2NfZHN0LCBjcHVfY2NfdG1wOwogc3RhdGljIFRDR3ZfaTMyIGNwdV9jY19vcDsKK3N0 YXRpYyBUQ0d2IGNwdV9yZWdzW0NQVV9OQl9SRUdTXTsKIC8qIGxvY2FsIHRlbXBzICovCiBzdGF0 aWMgVENHdiBjcHVfVFsyXSwgY3B1X1QzOwogLyogbG9jYWwgcmVnaXN0ZXIgaW5kZXhlcyAob25s eSB1c2VkIGluc2lkZSBvbGQgbWljcm8gb3BzKSAqLwpAQCAtMjcxLDMyICsyNzIsMzggQEAgc3Rh dGljIGlubGluZSB2b2lkIGdlbl9vcF9hbmRsX0EwX2ZmZmYodm9pZCkKIAogc3RhdGljIGlubGlu ZSB2b2lkIGdlbl9vcF9tb3ZfcmVnX3YoaW50IG90LCBpbnQgcmVnLCBUQ0d2IHQwKQogeworICAg IFRDR3YgdG1wOworCiAgICAgc3dpdGNoKG90KSB7CiAgICAgY2FzZSBPVF9CWVRFOgorICAgICAg ICB0bXAgPSB0Y2dfdGVtcF9uZXcoKTsKKyAgICAgICAgdGNnX2dlbl9leHQ4dV90bCh0bXAsIHQw KTsKICAgICAgICAgaWYgKHJlZyA8IDQgWDg2XzY0X0RFRiggfHwgcmVnID49IDggfHwgeDg2XzY0 X2hyZWdzKSkgewotICAgICAgICAgICAgdGNnX2dlbl9zdDhfdGwodDAsIGNwdV9lbnYsIG9mZnNl dG9mKENQVVN0YXRlLCByZWdzW3JlZ10pICsgUkVHX0JfT0ZGU0VUKTsKKyAgICAgICAgICAgIHRj Z19nZW5fYW5kaV90bChjcHVfcmVnc1tyZWddLCBjcHVfcmVnc1tyZWddLCB+MHhmZik7CisgICAg ICAgICAgICB0Y2dfZ2VuX29yX3RsKGNwdV9yZWdzW3JlZ10sIGNwdV9yZWdzW3JlZ10sIHRtcCk7 CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0Y2dfZ2VuX3N0OF90bCh0MCwgY3B1X2Vu diwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbcmVnIC0gNF0pICsgUkVHX0hfT0ZGU0VUKTsKKyAg ICAgICAgICAgIHRjZ19nZW5fc2hsaV90bCh0bXAsIHRtcCwgOCk7CisgICAgICAgICAgICB0Y2df Z2VuX2FuZGlfdGwoY3B1X3JlZ3NbcmVnIC0gNF0sIGNwdV9yZWdzW3JlZyAtIDRdLCB+MHhmZjAw KTsKKyAgICAgICAgICAgIHRjZ19nZW5fb3JfdGwoY3B1X3JlZ3NbcmVnIC0gNF0sIGNwdV9yZWdz W3JlZyAtIDRdLCB0bXApOwogICAgICAgICB9CisgICAgICAgIHRjZ190ZW1wX2ZyZWUodG1wKTsK ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPVF9XT1JEOgotICAgICAgICB0Y2dfZ2VuX3N0MTZf dGwodDAsIGNwdV9lbnYsIG9mZnNldG9mKENQVVN0YXRlLCByZWdzW3JlZ10pICsgUkVHX1dfT0ZG U0VUKTsKKyAgICAgICAgdG1wID0gdGNnX3RlbXBfbmV3KCk7CisgICAgICAgIHRjZ19nZW5fZXh0 MTZ1X3RsKHRtcCwgdDApOworICAgICAgICB0Y2dfZ2VuX2FuZGlfdGwoY3B1X3JlZ3NbcmVnXSwg Y3B1X3JlZ3NbcmVnXSwgfjB4ZmZmZik7CisgICAgICAgIHRjZ19nZW5fb3JfdGwoY3B1X3JlZ3Nb cmVnXSwgY3B1X3JlZ3NbcmVnXSwgdG1wKTsKKyAgICAgICAgdGNnX3RlbXBfZnJlZSh0bXApOwog ICAgICAgICBicmVhazsKLSNpZmRlZiBUQVJHRVRfWDg2XzY0CisgICAgZGVmYXVsdDogLyogWFhY IHRoaXMgc2hvdWxkbid0IGJlIHJlYWNoZWQ7ICBhYm9ydD8gKi8KICAgICBjYXNlIE9UX0xPTkc6 Ci0gICAgICAgIHRjZ19nZW5fc3QzMl90bCh0MCwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUs IHJlZ3NbcmVnXSkgKyBSRUdfTF9PRkZTRVQpOwotICAgICAgICAvKiBoaWdoIHBhcnQgb2YgcmVn aXN0ZXIgc2V0IHRvIHplcm8gKi8KLSAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKGNwdV90bXAwLCAw KTsKLSAgICAgICAgdGNnX2dlbl9zdDMyX3RsKGNwdV90bXAwLCBjcHVfZW52LCBvZmZzZXRvZihD UFVTdGF0ZSwgcmVnc1tyZWddKSArIFJFR19MSF9PRkZTRVQpOworICAgICAgICAvKiBGb3IgeDg2 XzY0LCB0aGlzIHNldHMgdGhlIGhpZ2hlciBoYWxmIG9mIHJlZ2lzdGVyIHRvIHplcm8uCisgICAg ICAgICAgIEZvciBpMzg2LCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBtb3YuICovCisgICAgICAg IHRjZ19nZW5fZXh0MzJ1X3RsKGNwdV9yZWdzW3JlZ10sIHQwKTsKICAgICAgICAgYnJlYWs7Ci0g ICAgZGVmYXVsdDoKKyNpZmRlZiBUQVJHRVRfWDg2XzY0CiAgICAgY2FzZSBPVF9RVUFEOgotICAg ICAgICB0Y2dfZ2VuX3N0X3RsKHQwLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTdGF0ZSwgcmVnc1ty ZWddKSk7Ci0gICAgICAgIGJyZWFrOwotI2Vsc2UKLSAgICBkZWZhdWx0OgotICAgIGNhc2UgT1Rf TE9ORzoKLSAgICAgICAgdGNnX2dlbl9zdDMyX3RsKHQwLCBjcHVfZW52LCBvZmZzZXRvZihDUFVT dGF0ZSwgcmVnc1tyZWddKSArIFJFR19MX09GRlNFVCk7CisgICAgICAgIHRjZ19nZW5fbW92X3Rs KGNwdV9yZWdzW3JlZ10sIHQwKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICB9CkBAIC0z MTQsMjUgKzMyMSwyNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX29wX21vdl9yZWdfVDEoaW50 IG90LCBpbnQgcmVnKQogCiBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX29wX21vdl9yZWdfQTAoaW50 IHNpemUsIGludCByZWcpCiB7CisgICAgVENHdiB0bXA7CisKICAgICBzd2l0Y2goc2l6ZSkgewog ICAgIGNhc2UgMDoKLSAgICAgICAgdGNnX2dlbl9zdDE2X3RsKGNwdV9BMCwgY3B1X2Vudiwgb2Zm c2V0b2YoQ1BVU3RhdGUsIHJlZ3NbcmVnXSkgKyBSRUdfV19PRkZTRVQpOworICAgICAgICB0bXAg PSB0Y2dfdGVtcF9uZXcoKTsKKyAgICAgICAgdGNnX2dlbl9leHQxNnVfdGwodG1wLCBjcHVfQTAp OworICAgICAgICB0Y2dfZ2VuX2FuZGlfdGwoY3B1X3JlZ3NbcmVnXSwgY3B1X3JlZ3NbcmVnXSwg fjB4ZmZmZik7CisgICAgICAgIHRjZ19nZW5fb3JfdGwoY3B1X3JlZ3NbcmVnXSwgY3B1X3JlZ3Nb cmVnXSwgdG1wKTsKKyAgICAgICAgdGNnX3RlbXBfZnJlZSh0bXApOwogICAgICAgICBicmVhazsK LSNpZmRlZiBUQVJHRVRfWDg2XzY0CisgICAgZGVmYXVsdDogLyogWFhYIHRoaXMgc2hvdWxkbid0 IGJlIHJlYWNoZWQ7ICBhYm9ydD8gKi8KICAgICBjYXNlIDE6Ci0gICAgICAgIHRjZ19nZW5fc3Qz Ml90bChjcHVfQTAsIGNwdV9lbnYsIG9mZnNldG9mKENQVVN0YXRlLCByZWdzW3JlZ10pICsgUkVH X0xfT0ZGU0VUKTsKLSAgICAgICAgLyogaGlnaCBwYXJ0IG9mIHJlZ2lzdGVyIHNldCB0byB6ZXJv ICovCi0gICAgICAgIHRjZ19nZW5fbW92aV90bChjcHVfdG1wMCwgMCk7Ci0gICAgICAgIHRjZ19n ZW5fc3QzMl90bChjcHVfdG1wMCwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbcmVn XSkgKyBSRUdfTEhfT0ZGU0VUKTsKKyAgICAgICAgLyogRm9yIHg4Nl82NCwgdGhpcyBzZXRzIHRo ZSBoaWdoZXIgaGFsZiBvZiByZWdpc3RlciB0byB6ZXJvLgorICAgICAgICAgICBGb3IgaTM4Niwg dGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgbW92LiAqLworICAgICAgICB0Y2dfZ2VuX2V4dDMydV90 bChjcHVfcmVnc1tyZWddLCBjcHVfQTApOwogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogor I2lmZGVmIFRBUkdFVF9YODZfNjQKICAgICBjYXNlIDI6Ci0gICAgICAgIHRjZ19nZW5fc3RfdGwo Y3B1X0EwLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTdGF0ZSwgcmVnc1tyZWddKSk7Ci0gICAgICAg IGJyZWFrOwotI2Vsc2UKLSAgICBkZWZhdWx0OgotICAgIGNhc2UgMToKLSAgICAgICAgdGNnX2dl bl9zdDMyX3RsKGNwdV9BMCwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbcmVnXSkg KyBSRUdfTF9PRkZTRVQpOworICAgICAgICB0Y2dfZ2VuX21vdl90bChjcHVfcmVnc1tyZWddLCBj cHVfQTApOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIH0KQEAgLTM0NSwxMiArMzUyLDEz IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3BfbW92X3ZfcmVnKGludCBvdCwgVENHdiB0MCwg aW50IHJlZykKICAgICAgICAgaWYgKHJlZyA8IDQgWDg2XzY0X0RFRiggfHwgcmVnID49IDggfHwg eDg2XzY0X2hyZWdzKSkgewogICAgICAgICAgICAgZ290byBzdGRfY2FzZTsKICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgIHRjZ19nZW5fbGQ4dV90bCh0MCwgY3B1X2Vudiwgb2Zmc2V0b2Yo Q1BVU3RhdGUsIHJlZ3NbcmVnIC0gNF0pICsgUkVHX0hfT0ZGU0VUKTsKKyAgICAgICAgICAgIHRj Z19nZW5fc2hyaV90bCh0MCwgY3B1X3JlZ3NbcmVnIC0gNF0sIDgpOworICAgICAgICAgICAgdGNn X2dlbl9leHQ4dV90bCh0MCwgdDApOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGRl ZmF1bHQ6CiAgICAgc3RkX2Nhc2U6Ci0gICAgICAgIHRjZ19nZW5fbGRfdGwodDAsIGNwdV9lbnYs IG9mZnNldG9mKENQVVN0YXRlLCByZWdzW3JlZ10pKTsKKyAgICAgICAgdGNnX2dlbl9tb3ZfdGwo dDAsIGNwdV9yZWdzW3JlZ10pOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0zNjIsNyAr MzcwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbl9vcF9tb3ZfVE5fcmVnKGludCBvdCwgaW50 IHRfaW5kZXgsIGludCByZWcpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3BfbW92bF9BMF9y ZWcoaW50IHJlZykKIHsKLSAgICB0Y2dfZ2VuX2xkMzJ1X3RsKGNwdV9BMCwgY3B1X2Vudiwgb2Zm c2V0b2YoQ1BVU3RhdGUsIHJlZ3NbcmVnXSkgKyBSRUdfTF9PRkZTRVQpOworICAgIHRjZ19nZW5f bW92X3RsKGNwdV9BMCwgY3B1X3JlZ3NbcmVnXSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBn ZW5fb3BfYWRkbF9BMF9pbShpbnQzMl90IHZhbCkKQEAgLTQwNCwyMyArNDEyLDIxIEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBnZW5fb3BfYWRkX3JlZ19pbShpbnQgc2l6ZSwgaW50IHJlZywgaW50MzJf dCB2YWwpCiB7CiAgICAgc3dpdGNoKHNpemUpIHsKICAgICBjYXNlIDA6Ci0gICAgICAgIHRjZ19n ZW5fbGRfdGwoY3B1X3RtcDAsIGNwdV9lbnYsIG9mZnNldG9mKENQVVN0YXRlLCByZWdzW3JlZ10p KTsKLSAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGNwdV90bXAwLCBjcHVfdG1wMCwgdmFsKTsKLSAg ICAgICAgdGNnX2dlbl9zdDE2X3RsKGNwdV90bXAwLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTdGF0 ZSwgcmVnc1tyZWddKSArIFJFR19XX09GRlNFVCk7CisgICAgICAgIHRjZ19nZW5fYWRkaV90bChj cHVfdG1wMCwgY3B1X3JlZ3NbcmVnXSwgdmFsKTsKKyAgICAgICAgdGNnX2dlbl9leHQxNnVfdGwo Y3B1X3RtcDAsIGNwdV90bXAwKTsKKyAgICAgICAgdGNnX2dlbl9hbmRpX3RsKGNwdV9yZWdzW3Jl Z10sIGNwdV9yZWdzW3JlZ10sIH4weGZmZmYpOworICAgICAgICB0Y2dfZ2VuX29yX3RsKGNwdV9y ZWdzW3JlZ10sIGNwdV9yZWdzW3JlZ10sIGNwdV90bXAwKTsKICAgICAgICAgYnJlYWs7CiAgICAg Y2FzZSAxOgotICAgICAgICB0Y2dfZ2VuX2xkX3RsKGNwdV90bXAwLCBjcHVfZW52LCBvZmZzZXRv ZihDUFVTdGF0ZSwgcmVnc1tyZWddKSk7Ci0gICAgICAgIHRjZ19nZW5fYWRkaV90bChjcHVfdG1w MCwgY3B1X3RtcDAsIHZhbCk7Ci0jaWZkZWYgVEFSR0VUX1g4Nl82NAotICAgICAgICB0Y2dfZ2Vu X2FuZGlfdGwoY3B1X3RtcDAsIGNwdV90bXAwLCAweGZmZmZmZmZmKTsKLSNlbmRpZgotICAgICAg ICB0Y2dfZ2VuX3N0X3RsKGNwdV90bXAwLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTdGF0ZSwgcmVn c1tyZWddKSk7CisgICAgICAgIHRjZ19nZW5fYWRkaV90bChjcHVfdG1wMCwgY3B1X3JlZ3NbcmVn XSwgdmFsKTsKKyAgICAgICAgLyogRm9yIHg4Nl82NCwgdGhpcyBzZXRzIHRoZSBoaWdoZXIgaGFs ZiBvZiByZWdpc3RlciB0byB6ZXJvLgorICAgICAgICAgICBGb3IgaTM4NiwgdGhpcyBpcyBlcXVp dmFsZW50IHRvIGEgbm9wLiAqLworICAgICAgICB0Y2dfZ2VuX2V4dDMydV90bChjcHVfdG1wMCwg Y3B1X3RtcDApOworICAgICAgICB0Y2dfZ2VuX21vdl90bChjcHVfcmVnc1tyZWddLCBjcHVfdG1w MCk7CiAgICAgICAgIGJyZWFrOwogI2lmZGVmIFRBUkdFVF9YODZfNjQKICAgICBjYXNlIDI6Ci0g ICAgICAgIHRjZ19nZW5fbGRfdGwoY3B1X3RtcDAsIGNwdV9lbnYsIG9mZnNldG9mKENQVVN0YXRl LCByZWdzW3JlZ10pKTsKLSAgICAgICAgdGNnX2dlbl9hZGRpX3RsKGNwdV90bXAwLCBjcHVfdG1w MCwgdmFsKTsKLSAgICAgICAgdGNnX2dlbl9zdF90bChjcHVfdG1wMCwgY3B1X2Vudiwgb2Zmc2V0 b2YoQ1BVU3RhdGUsIHJlZ3NbcmVnXSkpOworICAgICAgICB0Y2dfZ2VuX2FkZGlfdGwoY3B1X3Jl Z3NbcmVnXSwgY3B1X3JlZ3NbcmVnXSwgdmFsKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAg ICB9CkBAIC00MzAsMjMgKzQzNiwyMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX29wX2FkZF9y ZWdfVDAoaW50IHNpemUsIGludCByZWcpCiB7CiAgICAgc3dpdGNoKHNpemUpIHsKICAgICBjYXNl IDA6Ci0gICAgICAgIHRjZ19nZW5fbGRfdGwoY3B1X3RtcDAsIGNwdV9lbnYsIG9mZnNldG9mKENQ VVN0YXRlLCByZWdzW3JlZ10pKTsKLSAgICAgICAgdGNnX2dlbl9hZGRfdGwoY3B1X3RtcDAsIGNw dV90bXAwLCBjcHVfVFswXSk7Ci0gICAgICAgIHRjZ19nZW5fc3QxNl90bChjcHVfdG1wMCwgY3B1 X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbcmVnXSkgKyBSRUdfV19PRkZTRVQpOworICAg ICAgICB0Y2dfZ2VuX2FkZF90bChjcHVfdG1wMCwgY3B1X3JlZ3NbcmVnXSwgY3B1X1RbMF0pOwor ICAgICAgICB0Y2dfZ2VuX2V4dDE2dV90bChjcHVfdG1wMCwgY3B1X3RtcDApOworICAgICAgICB0 Y2dfZ2VuX2FuZGlfdGwoY3B1X3JlZ3NbcmVnXSwgY3B1X3JlZ3NbcmVnXSwgfjB4ZmZmZik7Cisg ICAgICAgIHRjZ19nZW5fb3JfdGwoY3B1X3JlZ3NbcmVnXSwgY3B1X3JlZ3NbcmVnXSwgY3B1X3Rt cDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDE6Ci0gICAgICAgIHRjZ19nZW5fbGRfdGwo Y3B1X3RtcDAsIGNwdV9lbnYsIG9mZnNldG9mKENQVVN0YXRlLCByZWdzW3JlZ10pKTsKLSAgICAg ICAgdGNnX2dlbl9hZGRfdGwoY3B1X3RtcDAsIGNwdV90bXAwLCBjcHVfVFswXSk7Ci0jaWZkZWYg VEFSR0VUX1g4Nl82NAotICAgICAgICB0Y2dfZ2VuX2FuZGlfdGwoY3B1X3RtcDAsIGNwdV90bXAw LCAweGZmZmZmZmZmKTsKLSNlbmRpZgotICAgICAgICB0Y2dfZ2VuX3N0X3RsKGNwdV90bXAwLCBj cHVfZW52LCBvZmZzZXRvZihDUFVTdGF0ZSwgcmVnc1tyZWddKSk7CisgICAgICAgIHRjZ19nZW5f YWRkX3RsKGNwdV90bXAwLCBjcHVfcmVnc1tyZWddLCBjcHVfVFswXSk7CisgICAgICAgIC8qIEZv ciB4ODZfNjQsIHRoaXMgc2V0cyB0aGUgaGlnaGVyIGhhbGYgb2YgcmVnaXN0ZXIgdG8gemVyby4K KyAgICAgICAgICAgRm9yIGkzODYsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBhIG5vcC4gKi8KKyAg ICAgICAgdGNnX2dlbl9leHQzMnVfdGwoY3B1X3RtcDAsIGNwdV90bXAwKTsKKyAgICAgICAgdGNn X2dlbl9tb3ZfdGwoY3B1X3JlZ3NbcmVnXSwgY3B1X3RtcDApOwogICAgICAgICBicmVhazsKICNp ZmRlZiBUQVJHRVRfWDg2XzY0CiAgICAgY2FzZSAyOgotICAgICAgICB0Y2dfZ2VuX2xkX3RsKGNw dV90bXAwLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTdGF0ZSwgcmVnc1tyZWddKSk7Ci0gICAgICAg IHRjZ19nZW5fYWRkX3RsKGNwdV90bXAwLCBjcHVfdG1wMCwgY3B1X1RbMF0pOwotICAgICAgICB0 Y2dfZ2VuX3N0X3RsKGNwdV90bXAwLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTdGF0ZSwgcmVnc1ty ZWddKSk7CisgICAgICAgIHRjZ19nZW5fYWRkX3RsKGNwdV9yZWdzW3JlZ10sIGNwdV9yZWdzW3Jl Z10sIGNwdV9UWzBdKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICB9CkBAIC00NTksMTMg KzQ2MywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX29wX3NldF9jY19vcChpbnQzMl90IHZh bCkKIAogc3RhdGljIGlubGluZSB2b2lkIGdlbl9vcF9hZGRsX0EwX3JlZ19zTihpbnQgc2hpZnQs IGludCByZWcpCiB7Ci0gICAgdGNnX2dlbl9sZF90bChjcHVfdG1wMCwgY3B1X2Vudiwgb2Zmc2V0 b2YoQ1BVU3RhdGUsIHJlZ3NbcmVnXSkpOwotICAgIGlmIChzaGlmdCAhPSAwKSAKKyAgICB0Y2df Z2VuX21vdl90bChjcHVfdG1wMCwgY3B1X3JlZ3NbcmVnXSk7CisgICAgaWYgKHNoaWZ0ICE9IDAp CiAgICAgICAgIHRjZ19nZW5fc2hsaV90bChjcHVfdG1wMCwgY3B1X3RtcDAsIHNoaWZ0KTsKICAg ICB0Y2dfZ2VuX2FkZF90bChjcHVfQTAsIGNwdV9BMCwgY3B1X3RtcDApOwotI2lmZGVmIFRBUkdF VF9YODZfNjQKLSAgICB0Y2dfZ2VuX2FuZGlfdGwoY3B1X0EwLCBjcHVfQTAsIDB4ZmZmZmZmZmYp OwotI2VuZGlmCisgICAgLyogRm9yIHg4Nl82NCwgdGhpcyBzZXRzIHRoZSBoaWdoZXIgaGFsZiBv ZiByZWdpc3RlciB0byB6ZXJvLgorICAgICAgIEZvciBpMzg2LCB0aGlzIGlzIGVxdWl2YWxlbnQg dG8gYSBub3AuICovCisgICAgdGNnX2dlbl9leHQzMnVfdGwoY3B1X0EwLCBjcHVfQTApOwogfQog CiBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX29wX21vdmxfQTBfc2VnKGludCByZWcpCkBAIC00OTYs MTMgKzUwMCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuX29wX2FkZHFfQTBfc2VnKGludCBy ZWcpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3BfbW92cV9BMF9yZWcoaW50IHJlZykKIHsK LSAgICB0Y2dfZ2VuX2xkX3RsKGNwdV9BMCwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJl Z3NbcmVnXSkpOworICAgIHRjZ19nZW5fbW92X3RsKGNwdV9BMCwgY3B1X3JlZ3NbcmVnXSk7CiB9 CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3BfYWRkcV9BMF9yZWdfc04oaW50IHNoaWZ0LCBp bnQgcmVnKQogewotICAgIHRjZ19nZW5fbGRfdGwoY3B1X3RtcDAsIGNwdV9lbnYsIG9mZnNldG9m KENQVVN0YXRlLCByZWdzW3JlZ10pKTsKLSAgICBpZiAoc2hpZnQgIT0gMCkgCisgICAgdGNnX2dl bl9tb3ZfdGwoY3B1X3RtcDAsIGNwdV9yZWdzW3JlZ10pOworICAgIGlmIChzaGlmdCAhPSAwKQog ICAgICAgICB0Y2dfZ2VuX3NobGlfdGwoY3B1X3RtcDAsIGNwdV90bXAwLCBzaGlmdCk7CiAgICAg dGNnX2dlbl9hZGRfdGwoY3B1X0EwLCBjcHVfQTAsIGNwdV90bXAwKTsKIH0KQEAgLTcwMSwxNCAr NzA1LDE0IEBAIHN0YXRpYyB2b2lkIGdlbl9leHRzKGludCBvdCwgVENHdiByZWcpCiAKIHN0YXRp YyBpbmxpbmUgdm9pZCBnZW5fb3Bfam56X2VjeChpbnQgc2l6ZSwgaW50IGxhYmVsMSkKIHsKLSAg ICB0Y2dfZ2VuX2xkX3RsKGNwdV90bXAwLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTdGF0ZSwgcmVn c1tSX0VDWF0pKTsKKyAgICB0Y2dfZ2VuX21vdl90bChjcHVfdG1wMCwgY3B1X3JlZ3NbUl9FQ1hd KTsKICAgICBnZW5fZXh0dShzaXplICsgMSwgY3B1X3RtcDApOwogICAgIHRjZ19nZW5fYnJjb25k aV90bChUQ0dfQ09ORF9ORSwgY3B1X3RtcDAsIDAsIGxhYmVsMSk7CiB9CiAKIHN0YXRpYyBpbmxp bmUgdm9pZCBnZW5fb3BfanpfZWN4KGludCBzaXplLCBpbnQgbGFiZWwxKQogewotICAgIHRjZ19n ZW5fbGRfdGwoY3B1X3RtcDAsIGNwdV9lbnYsIG9mZnNldG9mKENQVVN0YXRlLCByZWdzW1JfRUNY XSkpOworICAgIHRjZ19nZW5fbW92X3RsKGNwdV90bXAwLCBjcHVfcmVnc1tSX0VDWF0pOwogICAg IGdlbl9leHR1KHNpemUgKyAxLCBjcHVfdG1wMCk7CiAgICAgdGNnX2dlbl9icmNvbmRpX3RsKFRD R19DT05EX0VRLCBjcHVfdG1wMCwgMCwgbGFiZWwxKTsKIH0KQEAgLTQ4MzQsOCArNDgzOCw3IEBA IHN0YXRpYyB0YXJnZXRfdWxvbmcgZGlzYXNfaW5zbihEaXNhc0NvbnRleHQgKnMsIHRhcmdldF91 bG9uZyBwY19zdGFydCkKICAgICAgICAgICAgICAgICBybSA9IDA7IC8qIGF2b2lkIHdhcm5pbmcg Ki8KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxhYmVsMSA9IGdlbl9uZXdfbGFiZWwoKTsK LSAgICAgICAgICAgIHRjZ19nZW5fbGRfdGwodDIsIGNwdV9lbnYsIG9mZnNldG9mKENQVVN0YXRl LCByZWdzW1JfRUFYXSkpOwotICAgICAgICAgICAgdGNnX2dlbl9zdWJfdGwodDIsIHQyLCB0MCk7 CisgICAgICAgICAgICB0Y2dfZ2VuX3N1Yl90bCh0MiwgY3B1X3JlZ3NbUl9FQVhdLCB0MCk7CiAg ICAgICAgICAgICBnZW5fZXh0dShvdCwgdDIpOwogICAgICAgICAgICAgdGNnX2dlbl9icmNvbmRp X3RsKFRDR19DT05EX0VRLCB0MiwgMCwgbGFiZWwxKTsKICAgICAgICAgICAgIGlmIChtb2QgPT0g MykgewpAQCAtNTQwOSw3ICs1NDEyLDcgQEAgc3RhdGljIHRhcmdldF91bG9uZyBkaXNhc19pbnNu KERpc2FzQ29udGV4dCAqcywgdGFyZ2V0X3Vsb25nIHBjX3N0YXJ0KQogICAgICAgICAgICAgdmFs ID0gbGR1Yl9jb2RlKHMtPnBjKyspOwogICAgICAgICAgICAgdGNnX2dlbl9tb3ZpX3RsKGNwdV9U MywgdmFsKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRjZ19nZW5fbGRfdGwoY3B1 X1QzLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTdGF0ZSwgcmVnc1tSX0VDWF0pKTsKKyAgICAgICAg ICAgIHRjZ19nZW5fbW92X3RsKGNwdV9UMywgY3B1X3JlZ3NbUl9FQ1hdKTsKICAgICAgICAgfQog ICAgICAgICBnZW5fc2hpZnRkX3JtX1QxX1QzKHMsIG90LCBvcHJlZywgb3ApOwogICAgICAgICBi cmVhazsKQEAgLTYzMTcsMTAgKzYzMjAsOSBAQCBzdGF0aWMgdGFyZ2V0X3Vsb25nIGRpc2FzX2lu c24oRGlzYXNDb250ZXh0ICpzLCB0YXJnZXRfdWxvbmcgcGNfc3RhcnQpCiAgICAgICAgICAgICAg ICAgLyogWFhYOiBzcGVjaWZpYyBJbnRlbCBiZWhhdmlvdXIgPyAqLwogICAgICAgICAgICAgICAg IGwxID0gZ2VuX25ld19sYWJlbCgpOwogICAgICAgICAgICAgICAgIGdlbl9qY2MxKHMsIHMtPmNj X29wLCBiIF4gMSwgbDEpOwotICAgICAgICAgICAgICAgIHRjZ19nZW5fc3QzMl90bCh0MCwgY3B1 X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbcmVnXSkgKyBSRUdfTF9PRkZTRVQpOworICAg ICAgICAgICAgICAgIHRjZ19nZW5fbW92X3RsKGNwdV9yZWdzW3JlZ10sIHQwKTsKICAgICAgICAg ICAgICAgICBnZW5fc2V0X2xhYmVsKGwxKTsKLSAgICAgICAgICAgICAgICB0Y2dfZ2VuX21vdmlf dGwoY3B1X3RtcDAsIDApOwotICAgICAgICAgICAgICAgIHRjZ19nZW5fc3QzMl90bChjcHVfdG1w MCwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbcmVnXSkgKyBSRUdfTEhfT0ZGU0VU KTsKKyAgICAgICAgICAgICAgICB0Y2dfZ2VuX2V4dDMydV90bChjcHVfcmVnc1tyZWddLCBjcHVf cmVnc1tyZWddKTsKICAgICAgICAgICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgICAgICB7CkBA IC03NTg4LDYgKzc1OTAsNTggQEAgdm9pZCBvcHRpbWl6ZV9mbGFnc19pbml0KHZvaWQpCiAgICAg Y3B1X2NjX3RtcCA9IHRjZ19nbG9iYWxfbWVtX25ldyhUQ0dfQVJFRzAsIG9mZnNldG9mKENQVVN0 YXRlLCBjY190bXApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNjX3Rt cCIpOwogCisjaWZkZWYgVEFSR0VUX1g4Nl82NAorICAgIGNwdV9yZWdzW1JfRUFYXSA9IHRjZ19n bG9iYWxfbWVtX25ld19pNjQoVENHX0FSRUcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FQVhdKSwgInJheCIp OworICAgIGNwdV9yZWdzW1JfRUNYXSA9IHRjZ19nbG9iYWxfbWVtX25ld19pNjQoVENHX0FSRUcw LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yo Q1BVU3RhdGUsIHJlZ3NbUl9FQ1hdKSwgInJjeCIpOworICAgIGNwdV9yZWdzW1JfRURYXSA9IHRj Z19nbG9iYWxfbWVtX25ld19pNjQoVENHX0FSRUcwLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FRFhdKSwgInJk eCIpOworICAgIGNwdV9yZWdzW1JfRUJYXSA9IHRjZ19nbG9iYWxfbWVtX25ld19pNjQoVENHX0FS RUcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0 b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FQlhdKSwgInJieCIpOworICAgIGNwdV9yZWdzW1JfRVNQXSA9 IHRjZ19nbG9iYWxfbWVtX25ld19pNjQoVENHX0FSRUcwLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FU1BdKSwg InJzcCIpOworICAgIGNwdV9yZWdzW1JfRUJQXSA9IHRjZ19nbG9iYWxfbWVtX25ld19pNjQoVENH X0FSRUcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm c2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FQlBdKSwgInJicCIpOworICAgIGNwdV9yZWdzW1JfRVNJ XSA9IHRjZ19nbG9iYWxfbWVtX25ld19pNjQoVENHX0FSRUcwLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FU0ld KSwgInJzaSIpOworICAgIGNwdV9yZWdzW1JfRURJXSA9IHRjZ19nbG9iYWxfbWVtX25ld19pNjQo VENHX0FSRUcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FREldKSwgInJkaSIpOworICAgIGNwdV9yZWdzWzhd ID0gdGNnX2dsb2JhbF9tZW1fbmV3X2k2NChUQ0dfQVJFRzAsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKENQVVN0YXRlLCByZWdzWzhdKSwgInI4Iik7 CisgICAgY3B1X3JlZ3NbOV0gPSB0Y2dfZ2xvYmFsX21lbV9uZXdfaTY0KFRDR19BUkVHMCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKENQVVN0YXRl LCByZWdzWzldKSwgInI5Iik7CisgICAgY3B1X3JlZ3NbMTBdID0gdGNnX2dsb2JhbF9tZW1fbmV3 X2k2NChUQ0dfQVJFRzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvZmZzZXRvZihDUFVTdGF0ZSwgcmVnc1sxMF0pLCAicjEwIik7CisgICAgY3B1X3JlZ3NbMTFd ID0gdGNnX2dsb2JhbF9tZW1fbmV3X2k2NChUQ0dfQVJFRzAsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihDUFVTdGF0ZSwgcmVnc1sxMV0pLCAicjEx Iik7CisgICAgY3B1X3JlZ3NbMTJdID0gdGNnX2dsb2JhbF9tZW1fbmV3X2k2NChUQ0dfQVJFRzAs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihDUFVT dGF0ZSwgcmVnc1sxMl0pLCAicjEyIik7CisgICAgY3B1X3JlZ3NbMTNdID0gdGNnX2dsb2JhbF9t ZW1fbmV3X2k2NChUQ0dfQVJFRzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvZmZzZXRvZihDUFVTdGF0ZSwgcmVnc1sxM10pLCAicjEzIik7CisgICAgY3B1X3Jl Z3NbMTRdID0gdGNnX2dsb2JhbF9tZW1fbmV3X2k2NChUQ0dfQVJFRzAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihDUFVTdGF0ZSwgcmVnc1sxNF0p LCAicjE0Iik7CisgICAgY3B1X3JlZ3NbMTVdID0gdGNnX2dsb2JhbF9tZW1fbmV3X2k2NChUQ0df QVJFRzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRv ZihDUFVTdGF0ZSwgcmVnc1sxNV0pLCAicjE1Iik7CisjZWxzZQorICAgIGNwdV9yZWdzW1JfRUFY XSA9IHRjZ19nbG9iYWxfbWVtX25ld19pMzIoVENHX0FSRUcwLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FQVhd KSwgImVheCIpOworICAgIGNwdV9yZWdzW1JfRUNYXSA9IHRjZ19nbG9iYWxfbWVtX25ld19pMzIo VENHX0FSRUcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FQ1hdKSwgImVjeCIpOworICAgIGNwdV9yZWdzW1Jf RURYXSA9IHRjZ19nbG9iYWxfbWVtX25ld19pMzIoVENHX0FSRUcwLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9F RFhdKSwgImVkeCIpOworICAgIGNwdV9yZWdzW1JfRUJYXSA9IHRjZ19nbG9iYWxfbWVtX25ld19p MzIoVENHX0FSRUcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FQlhdKSwgImVieCIpOworICAgIGNwdV9yZWdz W1JfRVNQXSA9IHRjZ19nbG9iYWxfbWVtX25ld19pMzIoVENHX0FSRUcwLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3Nb Ul9FU1BdKSwgImVzcCIpOworICAgIGNwdV9yZWdzW1JfRUJQXSA9IHRjZ19nbG9iYWxfbWVtX25l d19pMzIoVENHX0FSRUcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FQlBdKSwgImVicCIpOworICAgIGNwdV9y ZWdzW1JfRVNJXSA9IHRjZ19nbG9iYWxfbWVtX25ld19pMzIoVENHX0FSRUcwLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJl Z3NbUl9FU0ldKSwgImVzaSIpOworICAgIGNwdV9yZWdzW1JfRURJXSA9IHRjZ19nbG9iYWxfbWVt X25ld19pMzIoVENHX0FSRUcwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb2Zmc2V0b2YoQ1BVU3RhdGUsIHJlZ3NbUl9FREldKSwgImVkaSIpOworI2VuZGlm CisKICAgICAvKiByZWdpc3RlciBoZWxwZXJzICovCiAjZGVmaW5lIEdFTl9IRUxQRVIgMgogI2lu Y2x1ZGUgImhlbHBlci5oIgo= --001485e9ab4f57e64a0474b473b8--