From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 1/3] x86/emul: Optimise decode_register() somewhat Date: Fri, 26 Jan 2018 13:16:38 +0000 Message-ID: <1516972600-26262-2-git-send-email-andrew.cooper3@citrix.com> References: <1516972600-26262-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1516972600-26262-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhlIHBvc2l0aW9ucyBvZiBHUFJzIGluc2lkZSBzdHJ1Y3QgY3B1X3VzZXJfcmVncyBkb2Vzbid0 IGZvbGxvdyBhbnkKcGFydGljdWxhciBvcmRlciwgc28gYXMgY29tcGlsZWQsIGRlY29kZV9yZWdp c3RlcigpIGJlY29tZXMgYSBqdW1wIHRhYmxlIHRvIDE2CmJsb2NrcyB3aGljaCBjYWxjdWxhdGUg dGhlIGFwcHJvcHJpYXRlIG9mZnNldCwgYXQgYSB0b3RhbCBvZiAyMDcgYnl0ZXMuCgpJbnN0ZWFk LCBwcmUtY29tcHV0ZSB0aGUgb2Zmc2V0cyBhdCBidWlsZCB0aW1lIGFuZCB1c2UgcG9pbnRlciBh cml0aG1ldGljIHRvCmNhbGN1bGF0ZSB0aGUgcmVzdWx0LiAgVGhlIHJlc3VsdGluZyBmdW5jdGlv biBpcyBmYXIgbW9yZSByZWFzb25hYmxlOgoKICAgIHRlc3QgICAlZWR4LCVlZHgKICAgIGxlYSAg ICAweGJmYjk3KCVyaXApLCVyYXggICAgICAgICMgPGNwdV91c2VyX3JlZ3NfaGlnaF9ncHJfb2Zm c2V0cz4KICAgIGxlYSAgICAweGJmYmEwKCVyaXApLCVyZHggICAgICAgICMgPGNwdV91c2VyX3Jl Z3NfZ3ByX29mZnNldHM+CiAgICBjbW92ZSAgJXJkeCwlcmF4CiAgICBhbmQgICAgJDB4ZiwlZWRp CiAgICBtb3Z6YmwgKCVyYXgsJXJkaSwxKSwlZWF4CiAgICBhZGQgICAgJXJzaSwlcmF4CiAgICBy ZXRxCgphbmQgYnkgb2JzZXJ2YXRpb24sIG1vc3QgY2FsbGVycyBpbiB4ODZfZW11bGF0ZSgpIGlu bGluZSBhbmQKY29uc3RhbnQtcHJvcGFnYXRlIHRoZSBoaWdoYnl0ZV9yZWdzIHZhbHVlIG9mIDAg dG8gZHJvcCB0aGUgdGVzdCwgb25lIGxlYSBhbmQKdGhlIGNtb3ZlLgoKU2lnbmVkLW9mZi1ieTog QW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1 bGljaCA8SkJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4 Nl9lbXVsYXRlLmMgfCA4MiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgYi94ZW4vYXJjaC94ODYv eDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwppbmRleCBmZjBhMDAzLi4zZjU2MzZmIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYworKysgYi94ZW4vYXJj aC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtMzk2LDYgKzM5Niw1MSBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IHsKIC8qIFNoaWZ0IHZhbHVlcyBiZXR3ZWVuIHNyYyBhbmQgZHN0IHNp emVzIG9mIHBtb3Z7cyx6fXh7Yix3LGR9e3csZCxxfS4gKi8KIHN0YXRpYyBjb25zdCB1aW50OF90 IHBtb3ZfY29udmVydF9kZWx0YVtdID0geyAxLCAyLCAzLCAxLCAyLCAxIH07CiAKKy8qCisgKiBN YXAgR1BScyBieSBNb2RSTSBlbmNvZGluZyB0byB0aGVpciBvZmZzZXQgd2l0aGluIHN0cnVjdCBj cHVfdXNlcl9yZWdzLgorICogVGhlIEFILENILERILEJIIG9mZnNldHMgYXJlIG1pc2FsaWduZWQu CisgKi8KK3N0YXRpYyBjb25zdCB1aW50OF90IGNwdV91c2VyX3JlZ3NfZ3ByX29mZnNldHNbXSA9 IHsKKyAgICBvZmZzZXRvZihzdHJ1Y3QgY3B1X3VzZXJfcmVncywgcihheCkpLAorICAgIG9mZnNl dG9mKHN0cnVjdCBjcHVfdXNlcl9yZWdzLCByKGN4KSksCisgICAgb2Zmc2V0b2Yoc3RydWN0IGNw dV91c2VyX3JlZ3MsIHIoZHgpKSwKKyAgICBvZmZzZXRvZihzdHJ1Y3QgY3B1X3VzZXJfcmVncywg cihieCkpLAorICAgIG9mZnNldG9mKHN0cnVjdCBjcHVfdXNlcl9yZWdzLCByKHNwKSksCisgICAg b2Zmc2V0b2Yoc3RydWN0IGNwdV91c2VyX3JlZ3MsIHIoYnApKSwKKyAgICBvZmZzZXRvZihzdHJ1 Y3QgY3B1X3VzZXJfcmVncywgcihzaSkpLAorICAgIG9mZnNldG9mKHN0cnVjdCBjcHVfdXNlcl9y ZWdzLCByKGRpKSksCisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorICAgIG9mZnNldG9mKHN0cnVj dCBjcHVfdXNlcl9yZWdzLCByOCksCisgICAgb2Zmc2V0b2Yoc3RydWN0IGNwdV91c2VyX3JlZ3Ms IHI5KSwKKyAgICBvZmZzZXRvZihzdHJ1Y3QgY3B1X3VzZXJfcmVncywgcjEwKSwKKyAgICBvZmZz ZXRvZihzdHJ1Y3QgY3B1X3VzZXJfcmVncywgcjExKSwKKyAgICBvZmZzZXRvZihzdHJ1Y3QgY3B1 X3VzZXJfcmVncywgcjEyKSwKKyAgICBvZmZzZXRvZihzdHJ1Y3QgY3B1X3VzZXJfcmVncywgcjEz KSwKKyAgICBvZmZzZXRvZihzdHJ1Y3QgY3B1X3VzZXJfcmVncywgcjE0KSwKKyAgICBvZmZzZXRv ZihzdHJ1Y3QgY3B1X3VzZXJfcmVncywgcjE1KSwKKyNlbmRpZgorfTsKK3N0YXRpYyBjb25zdCB1 aW50OF90IGNwdV91c2VyX3JlZ3NfaGlnaF9ncHJfb2Zmc2V0c1tdID0geworICAgIG9mZnNldG9m KHN0cnVjdCBjcHVfdXNlcl9yZWdzLCByKGF4KSksCisgICAgb2Zmc2V0b2Yoc3RydWN0IGNwdV91 c2VyX3JlZ3MsIHIoY3gpKSwKKyAgICBvZmZzZXRvZihzdHJ1Y3QgY3B1X3VzZXJfcmVncywgcihk eCkpLAorICAgIG9mZnNldG9mKHN0cnVjdCBjcHVfdXNlcl9yZWdzLCByKGJ4KSksCisgICAgb2Zm c2V0b2Yoc3RydWN0IGNwdV91c2VyX3JlZ3MsIGFoKSwKKyAgICBvZmZzZXRvZihzdHJ1Y3QgY3B1 X3VzZXJfcmVncywgY2gpLAorICAgIG9mZnNldG9mKHN0cnVjdCBjcHVfdXNlcl9yZWdzLCBkaCks CisgICAgb2Zmc2V0b2Yoc3RydWN0IGNwdV91c2VyX3JlZ3MsIGJoKSwKKyNpZiBkZWZpbmVkKF9f eDg2XzY0X18pCisgICAgb2Zmc2V0b2Yoc3RydWN0IGNwdV91c2VyX3JlZ3MsIHI4KSwKKyAgICBv ZmZzZXRvZihzdHJ1Y3QgY3B1X3VzZXJfcmVncywgcjkpLAorICAgIG9mZnNldG9mKHN0cnVjdCBj cHVfdXNlcl9yZWdzLCByMTApLAorICAgIG9mZnNldG9mKHN0cnVjdCBjcHVfdXNlcl9yZWdzLCBy MTEpLAorICAgIG9mZnNldG9mKHN0cnVjdCBjcHVfdXNlcl9yZWdzLCByMTIpLAorICAgIG9mZnNl dG9mKHN0cnVjdCBjcHVfdXNlcl9yZWdzLCByMTMpLAorICAgIG9mZnNldG9mKHN0cnVjdCBjcHVf dXNlcl9yZWdzLCByMTQpLAorICAgIG9mZnNldG9mKHN0cnVjdCBjcHVfdXNlcl9yZWdzLCByMTUp LAorI2VuZGlmCit9OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IHsKICAgICB1aW50OF90IHNpbWRf c2l6ZTo1OwogICAgIHVpbnQ4X3QgdG9fbWVtOjE7CkBAIC0xOTM5LDMyICsxOTg0LDIxIEBAIHZv aWQgKgogZGVjb2RlX3JlZ2lzdGVyKAogICAgIHVpbnQ4X3QgbW9kcm1fcmVnLCBzdHJ1Y3QgY3B1 X3VzZXJfcmVncyAqcmVncywgaW50IGhpZ2hieXRlX3JlZ3MpCiB7Ci0gICAgdm9pZCAqcDsKKyAg ICBjb25zdCB1aW50OF90ICpvZmZzZXRzID0gaGlnaGJ5dGVfcmVncyA/IGNwdV91c2VyX3JlZ3Nf aGlnaF9ncHJfb2Zmc2V0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDogY3B1X3VzZXJfcmVnc19ncHJfb2Zmc2V0czsKIAotICAgIHN3aXRjaCAoIG1vZHJtX3Jl ZyApCi0gICAgewotICAgIGNhc2UgIDA6IHAgPSAmcmVncy0+cihheCk7IGJyZWFrOwotICAgIGNh c2UgIDE6IHAgPSAmcmVncy0+cihjeCk7IGJyZWFrOwotICAgIGNhc2UgIDI6IHAgPSAmcmVncy0+ cihkeCk7IGJyZWFrOwotICAgIGNhc2UgIDM6IHAgPSAmcmVncy0+cihieCk7IGJyZWFrOwotICAg IGNhc2UgIDQ6IHAgPSAoaGlnaGJ5dGVfcmVncyA/ICZyZWdzLT5haCA6ICh2b2lkICopJnJlZ3Mt PnIoc3ApKTsgYnJlYWs7Ci0gICAgY2FzZSAgNTogcCA9IChoaWdoYnl0ZV9yZWdzID8gJnJlZ3Mt PmNoIDogKHZvaWQgKikmcmVncy0+cihicCkpOyBicmVhazsKLSAgICBjYXNlICA2OiBwID0gKGhp Z2hieXRlX3JlZ3MgPyAmcmVncy0+ZGggOiAodm9pZCAqKSZyZWdzLT5yKHNpKSk7IGJyZWFrOwot ICAgIGNhc2UgIDc6IHAgPSAoaGlnaGJ5dGVfcmVncyA/ICZyZWdzLT5iaCA6ICh2b2lkICopJnJl Z3MtPnIoZGkpKTsgYnJlYWs7Ci0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKQotICAgIGNhc2UgIDg6 IHAgPSAmcmVncy0+cjg7ICBicmVhazsKLSAgICBjYXNlICA5OiBwID0gJnJlZ3MtPnI5OyAgYnJl YWs7Ci0gICAgY2FzZSAxMDogcCA9ICZyZWdzLT5yMTA7IGJyZWFrOwotICAgIGNhc2UgMTE6IHAg PSAmcmVncy0+cjExOyBicmVhazsKLSAgICBjYXNlIDEyOiBwID0gJnJlZ3MtPnIxMjsgYnJlYWs7 Ci0gICAgY2FzZSAxMzogcCA9ICZyZWdzLT5yMTM7IGJyZWFrOwotICAgIGNhc2UgMTQ6IHAgPSAm cmVncy0+cjE0OyBicmVhazsKLSAgICBjYXNlIDE1OiBwID0gJnJlZ3MtPnIxNTsgYnJlYWs7Ci0j ZW5kaWYKLSAgICBkZWZhdWx0OiBCVUcoKTsgcCA9IE5VTEw7IGJyZWFrOwotICAgIH0KKyAgICAv KiBDaGVjayB0aGF0IHRoZSBhcnJheXMgYXJlIHRoZSBzYW1lIHNpemUsIGFuZCBhIHBvd2VyIG9m IHR3by4gKi8KKyAgICBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShjcHVfdXNlcl9yZWdzX2dwcl9v ZmZzZXRzKSAhPQorICAgICAgICAgICAgICAgICBBUlJBWV9TSVpFKGNwdV91c2VyX3JlZ3NfaGln aF9ncHJfb2Zmc2V0cykpOworICAgIEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGNwdV91c2VyX3Jl Z3NfZ3ByX29mZnNldHMpICYKKyAgICAgICAgICAgICAgICAgKEFSUkFZX1NJWkUoY3B1X3VzZXJf cmVnc19ncHJfb2Zmc2V0cykgLSAxKSk7CisKKyAgICBBU1NFUlQobW9kcm1fcmVnIDwgQVJSQVlf U0laRShjcHVfdXNlcl9yZWdzX2dwcl9vZmZzZXRzKSk7CisKKyAgICAvKiBGb3Igc2FmZXR5IGlu IHJlbGVhc2UgYnVpbGRzLiAgRGVidWcgYnVpbGRzIHdpbGwgaGl0IHRoZSBBU1NFUlQoKSAqLwor ICAgIG1vZHJtX3JlZyAmPSBBUlJBWV9TSVpFKGNwdV91c2VyX3JlZ3NfZ3ByX29mZnNldHMpIC0g MTsKIAotICAgIHJldHVybiBwOworICAgIHJldHVybiAodm9pZCAqKXJlZ3MgKyBvZmZzZXRzW21v ZHJtX3JlZ107CiB9CiAKIHN0YXRpYyB2b2lkICpkZWNvZGVfdmV4X2dwcih1bnNpZ25lZCBpbnQg dmV4X3JlZywgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCi0tIAoyLjEuNAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=