From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KwF9z-0004Y1-79 for qemu-devel@nongnu.org; Sat, 01 Nov 2008 08:00:55 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KwF9w-0004Xh-Tf for qemu-devel@nongnu.org; Sat, 01 Nov 2008 08:00:54 -0400 Received: from [199.232.76.173] (port=47233 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KwF9w-0004Xe-N2 for qemu-devel@nongnu.org; Sat, 01 Nov 2008 08:00:52 -0400 Received: from wf-out-1314.google.com ([209.85.200.169]:64379) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KwF9v-00028T-Er for qemu-devel@nongnu.org; Sat, 01 Nov 2008 08:00:52 -0400 Received: by wf-out-1314.google.com with SMTP id 27so1667705wfd.4 for ; Sat, 01 Nov 2008 05:00:50 -0700 (PDT) Message-ID: Date: Sat, 1 Nov 2008 14:00:50 +0200 From: "Blue Swirl" Subject: Re: [Qemu-devel] Re: [PATCH][RFC] Run time TCGv size check for debugging In-Reply-To: <4909808C.5040602@bellard.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_48604_26527191.1225540850589" References: <4908D7A3.7030309@bellard.org> <200810300007.42763.paul@codesourcery.com> <4909808C.5040602@bellard.org> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fabrice Bellard Cc: Paul Brook , qemu-devel@nongnu.org ------=_Part_48604_26527191.1225540850589 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 10/30/08, Fabrice Bellard wrote: > Paul Brook wrote: > > On Wednesday 29 October 2008, Fabrice Bellard wrote: > >> Blue Swirl wrote: > >>> Hi, > >>> > >>> When emulating a mixed 32/64 bit Qemu target CPUs it's easy to confuse > >>> the TCGv size, passing 32 bit TCGv to a function expecting a 64 bit > >>> one and vice versa. This patch adds a run time sanity check for TCGv > >>> sizes. > >>> > >>> Because a 32 bit Qemu host does not really use 64 bit TCGvs, the patch > >>> is only functional on a 64 bit host. Of course also a pure 32 bit Qemu > >>> target is not likely to suffer from TCGv size confusion. > >>> > >>> Some use cases are not covered yet. Comments? > >> Theses tests can be done at compile time by introducing the TCGv_i32 and > >> TCGv_i64 types. The same can be done with the helpers by using a few > >> macros to declare them. > > > > That would also require updating all the target code in translate.c to use > > these types. In principle there's no reason why this couldn't be done, but > > it'd be a much more invasive change. > > > If you define TCGv as the word size of the emulated CPU, it will > eliminates most of the changes. This version introduces TCGv_i32 and TCGv_i64. TCGv_ptr and TCGv (TL sized) are based on them. For Sparc, the patch is very invasive (I just commented out the helpers to avoid that part) but I think i386 would need much smaller changes. With the patch, I found some bugs in Sparc translation. I'm not sure what to do with helpers, there should be a way to declare the size of the arguments somehow and then the calling should be easier than: tcg_gen_helper_1_4_i64_tl_i32_i32_i32(helper_ld_asi, dst, addr, r_asi, r_size, r_sign); Otherwise, I think only some variant of the TCGV_LOW parts are worth committing, they make the code slightly more easy to understand. ------=_Part_48604_26527191.1225540850589 Content-Type: application/x-bzip2; name=compile_time_tcgv_size_check.diff.bz2 Content-Transfer-Encoding: base64 X-Attachment-Id: f_fn07c2uo Content-Disposition: attachment; filename=compile_time_tcgv_size_check.diff.bz2 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 TaA6l6foZ1s//i7kinChIPbPLfg= ------=_Part_48604_26527191.1225540850589 Content-Type: plain/text; name=sparc_tcgv_size_fixes.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fn07c8ew Content-Disposition: attachment; filename=sparc_tcgv_size_fixes.diff SW5kZXg6IHFlbXUvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUu b3JpZy90YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMJMjAwOC0xMS0wMSAxMToxMjoxNi4wMDAwMDAw MDAgKzAwMDAKKysrIHFlbXUvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCTIwMDgtMTEtMDEgMTE6 MjU6MzguMDAwMDAwMDAwICswMDAwCkBAIC0zMDIsNyArMzAyLDcgQEAKICAgICB0Y2dfZ2VuX2Jy Y29uZGlfdGwoVENHX0NPTkRfTkUsIHJfdGVtcCwgMCwgbDEpOwogICAgIHRjZ19nZW5fb3JpX2kz MihjcHVfcHNyLCBjcHVfcHNyLCBQU1JfWkVSTyk7CiAgICAgZ2VuX3NldF9sYWJlbChsMSk7Ci0g ICAgdGNnX2dlbl9leHRfaTMyX3RsKHJfdGVtcCwgZHN0KTsKKyAgICB0Y2dfZ2VuX2V4dDMyc190 bChyX3RlbXAsIGRzdCk7CiAgICAgdGNnX2dlbl9icmNvbmRpX3RsKFRDR19DT05EX0dFLCByX3Rl bXAsIDAsIGwyKTsKICAgICB0Y2dfZ2VuX29yaV9pMzIoY3B1X3BzciwgY3B1X3BzciwgUFNSX05F Ryk7CiAgICAgZ2VuX3NldF9sYWJlbChsMik7CkBAIC03NTIsOCArNzUyLDggQEAKICAgICByX3Rl bXAgPSB0Y2dfdGVtcF9uZXdfaTY0KFRDR19UWVBFX0k2NCk7CiAgICAgcl90ZW1wMiA9IHRjZ190 ZW1wX25ld19pNjQoVENHX1RZUEVfSTY0KTsKIAotICAgIHRjZ19nZW5fZXh0dV9pMzJfaTY0KHJf dGVtcCwgc3JjMik7Ci0gICAgdGNnX2dlbl9leHR1X2kzMl9pNjQocl90ZW1wMiwgc3JjMSk7Cisg ICAgdGNnX2dlbl9leHR1X3RsX2k2NChyX3RlbXAsIHNyYzIpOworICAgIHRjZ19nZW5fZXh0dV90 bF9pNjQocl90ZW1wMiwgc3JjMSk7CiAgICAgdGNnX2dlbl9tdWxfaTY0KHJfdGVtcDIsIHJfdGVt cCwgcl90ZW1wMik7CiAKICAgICB0Y2dfZ2VuX3NocmlfaTY0KHJfdGVtcCwgcl90ZW1wMiwgMzIp OwpAQCAtNzc1LDggKzc3NSw4IEBACiAgICAgcl90ZW1wID0gdGNnX3RlbXBfbmV3X2k2NChUQ0df VFlQRV9JNjQpOwogICAgIHJfdGVtcDIgPSB0Y2dfdGVtcF9uZXdfaTY0KFRDR19UWVBFX0k2NCk7 CiAKLSAgICB0Y2dfZ2VuX2V4dF9pMzJfaTY0KHJfdGVtcCwgc3JjMik7Ci0gICAgdGNnX2dlbl9l eHRfaTMyX2k2NChyX3RlbXAyLCBzcmMxKTsKKyAgICB0Y2dfZ2VuX2V4dF90bF9pNjQocl90ZW1w LCBzcmMyKTsKKyAgICB0Y2dfZ2VuX2V4dF90bF9pNjQocl90ZW1wMiwgc3JjMSk7CiAgICAgdGNn X2dlbl9tdWxfaTY0KHJfdGVtcDIsIHJfdGVtcCwgcl90ZW1wMik7CiAKICAgICB0Y2dfZ2VuX3No cmlfaTY0KHJfdGVtcCwgcl90ZW1wMiwgMzIpOwpAQCAtMjI0OSw5ICsyMjQ5LDEwIEBACiAgICAg ICAgICAgICAgICAgICAgICAgICByX3RzcHRyID0gdGNnX3RlbXBfbmV3X3B0cihUQ0dfVFlQRV9Q VFIpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9sZF9wdHIocl90c3B0ciwgY3B1 X2VudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKENQ VVN0YXRlLCB0c3B0cikpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9sZF9pMzIo Y3B1X3RtcDAsIHJfdHNwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2xkX2kz MihjcHVfdG1wMzIsIHJfdHNwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvZmZzZXRvZih0cmFwX3N0YXRlLCB0dCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg dGNnX3RlbXBfZnJlZV9wdHIocl90c3B0cik7CisgICAgICAgICAgICAgICAgICAgICAgICB0Y2df Z2VuX2V4dF9pMzJfdGwoY3B1X3RtcDAsIGNwdV90bXAzMik7CiAgICAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSA0OiAv LyB0aWNrCkBAIC0yMzIzLDcgKzIzMjQsNyBAQAogICAgICAgICAgICAgICAgICAgICBDSEVDS19J VV9GRUFUVVJFKGRjLCBIWVBWKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFoeXBlcnZpc29y KGRjKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcHJpdl9pbnNuOwotICAgICAgICAg ICAgICAgICAgICB0Y2dfZ2VuX2V4dF9pMzJfdGwoY3B1X3RtcDAsIGNwdV9zc3IpOworICAgICAg ICAgICAgICAgICAgICB0Y2dfZ2VuX21vdl90bChjcHVfdG1wMCwgY3B1X3Nzcik7CiAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgMzE6IC8vIHZlcgogICAg ICAgICAgICAgICAgICAgICB0Y2dfZ2VuX21vdl90bChjcHVfdG1wMCwgY3B1X3Zlcik7CkBAIC0z MDM2LDcgKzMwMzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9zYXJpX2k2 NChjcHVfZHN0LCBjcHVfc3JjMSwgcnMyICYgMHgzZik7CiAgICAgICAgICAgICAgICAgICAgIH0g ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2FuZGlfaTY0KGNwdV9kc3Qs IGNwdV9zcmMxLCAweGZmZmZmZmZmVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19n ZW5fZXh0X2kzMl9pNjQoY3B1X2RzdCwgY3B1X2RzdCk7CisgICAgICAgICAgICAgICAgICAgICAg ICB0Y2dfZ2VuX2V4dDMyc19pNjQoY3B1X2RzdCwgY3B1X2RzdCk7CiAgICAgICAgICAgICAgICAg ICAgICAgICB0Y2dfZ2VuX3NhcmlfaTY0KGNwdV9kc3QsIGNwdV9kc3QsIHJzMiAmIDB4MWYpOwog ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAg ICAgICAgLyogcmVnaXN0ZXIgKi8KQEAgLTMwNDgsNyArMzA0OSw3IEBACiAgICAgICAgICAgICAg ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2FuZGlfaTY0 KGNwdV90bXAwLCBjcHVfc3JjMiwgMHgxZik7CiAgICAgICAgICAgICAgICAgICAgICAgICB0Y2df Z2VuX2FuZGlfaTY0KGNwdV9kc3QsIGNwdV9zcmMxLCAweGZmZmZmZmZmVUxMKTsKLSAgICAgICAg ICAgICAgICAgICAgICAgIHRjZ19nZW5fZXh0X2kzMl9pNjQoY3B1X2RzdCwgY3B1X2RzdCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2V4dDMyc19pNjQoY3B1X2RzdCwgY3B1X2Rz dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3Nhcl9pNjQoY3B1X2RzdCwgY3B1 X2RzdCwgY3B1X3RtcDApOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg fQpAQCAtMzQzNCw3ICszNDM1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJfdHNwdHIgPSB0Y2dfdGVtcF9uZXdfcHRyKFRDR19UWVBFX1BUUik7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX2xkX3B0cihyX3RzcHRyLCBjcHVfZW52 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm c2V0b2YoQ1BVU3RhdGUsIHRzcHRyKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0Y2dfZ2VuX3N0X2kzMihjcHVfdG1wMCwgcl90c3B0ciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fdHJ1bmNfdGxfaTMyKGNwdV90bXAzMiwgY3B1X3Rt cDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9zdF9pMzIo Y3B1X3RtcDMyLCByX3RzcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb2Zmc2V0b2YodHJhcF9zdGF0ZSwgdHQpKTsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRjZ190ZW1wX2ZyZWVfcHRyKHJfdHNwdHIpOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0zNTE1LDcgKzM1MTcsNyBAQAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDSEVDS19JVV9GRUFUVVJFKGRjLCBIWVBWKTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoeXBlcnZpc29yKGRjKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcHJpdl9pbnNuOwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3RydW5jX3RsX2kzMihjcHVfc3NyLCBjcHVf dG1wMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fbW92X3RsKGNw dV9zc3IsIGNwdV90bXAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX2luc247CkBAIC00MzE0LDkgKzQzMTYsOSBAQAog ICAgICAgICAgICAgICAgICAgICBDSEVDS19JVV9GRUFUVVJFKGRjLCBTV0FQKTsKICAgICAgICAg ICAgICAgICAgICAgZ2VuX21vdmxfcmVnX1ROKHJkLCBjcHVfdmFsKTsKICAgICAgICAgICAgICAg ICAgICAgZ2VuX2FkZHJlc3NfbWFzayhkYywgY3B1X2FkZHIpOwotICAgICAgICAgICAgICAgICAg ICB0Y2dfZ2VuX3FlbXVfbGQzMnUoY3B1X3RtcDMyLCBjcHVfYWRkciwgZGMtPm1lbV9pZHgpOwor ICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3FlbXVfbGQzMnUoY3B1X3RtcDAsIGNwdV9hZGRy LCBkYy0+bWVtX2lkeCk7CiAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fcWVtdV9zdDMyKGNw dV92YWwsIGNwdV9hZGRyLCBkYy0+bWVtX2lkeCk7Ci0gICAgICAgICAgICAgICAgICAgIHRjZ19n ZW5fZXh0dV9pMzJfdGwoY3B1X3ZhbCwgY3B1X3RtcDMyKTsKKyAgICAgICAgICAgICAgICAgICAg dGNnX2dlbl9tb3ZfdGwoY3B1X3ZhbCwgY3B1X3RtcDApOwogICAgICAgICAgICAgICAgICAgICBi cmVhazsKICNpZiAhZGVmaW5lZChDT05GSUdfVVNFUl9PTkxZKSB8fCBkZWZpbmVkKFRBUkdFVF9T UEFSQzY0KQogICAgICAgICAgICAgICAgIGNhc2UgMHgxMDogICAgICAvKiBsb2FkIHdvcmQgYWx0 ZXJuYXRlICovCkBAIC00NDYxLDcgKzQ0NjMsOCBAQAogICAgICAgICAgICAgICAgIHN3aXRjaCAo eG9wKSB7CiAgICAgICAgICAgICAgICAgY2FzZSAweDIwOiAgICAgIC8qIGxvYWQgZnByZWcgKi8K ICAgICAgICAgICAgICAgICAgICAgZ2VuX2FkZHJlc3NfbWFzayhkYywgY3B1X2FkZHIpOwotICAg ICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3FlbXVfbGQzMnUoY3B1X2ZwcltyZF0sIGNwdV9hZGRy LCBkYy0+bWVtX2lkeCk7CisgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fcWVtdV9sZDMydShj cHVfdG1wMCwgY3B1X2FkZHIsIGRjLT5tZW1faWR4KTsKKyAgICAgICAgICAgICAgICAgICAgdGNn X2dlbl90cnVuY190bF9pMzIoY3B1X2ZwcltyZF0sIGNwdV90bXAwKTsKICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSAweDIxOiAgICAgIC8qIGxkZnNyLCBW OSBsZHhmc3IgKi8KICNpZmRlZiBUQVJHRVRfU1BBUkM2NApAQCAtNDYwMCw3ICs0NjAzLDggQEAK ICAgICAgICAgICAgICAgICBzd2l0Y2ggKHhvcCkgewogICAgICAgICAgICAgICAgIGNhc2UgMHgy NDogLyogc3RvcmUgZnByZWcgKi8KICAgICAgICAgICAgICAgICAgICAgZ2VuX2FkZHJlc3NfbWFz ayhkYywgY3B1X2FkZHIpOwotICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3FlbXVfc3QzMihj cHVfZnByW3JkXSwgY3B1X2FkZHIsIGRjLT5tZW1faWR4KTsKKyAgICAgICAgICAgICAgICAgICAg dGNnX2dlbl9leHRfaTMyX3RsKGNwdV90bXAwLCBjcHVfZnByW3JkXSk7CisgICAgICAgICAgICAg ICAgICAgIHRjZ19nZW5fcWVtdV9zdDMyKGNwdV90bXAwLCBjcHVfYWRkciwgZGMtPm1lbV9pZHgp OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIDB4MjU6 IC8qIHN0ZnNyLCBWOSBzdHhmc3IgKi8KICNpZmRlZiBUQVJHRVRfU1BBUkM2NApAQCAtNDYwOCwx MCArNDYxMiw4IEBACiAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fbGRfaTY0KGNwdV90bXA2 NCwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIGZzcikpOwogICAgICAgICAgICAgICAgICAg ICBpZiAocmQgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5fcWVtdV9zdDY0 KGNwdV90bXA2NCwgY3B1X2FkZHIsIGRjLT5tZW1faWR4KTsKLSAgICAgICAgICAgICAgICAgICAg ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3RydW5jX3RsX2kzMihjcHVf dG1wMzIsIGNwdV90bXA2NCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0Y2dfZ2VuX3FlbXVf c3QzMihjcHVfdG1wMzIsIGNwdV9hZGRyLCBkYy0+bWVtX2lkeCk7Ci0gICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg dGNnX2dlbl9xZW11X3N0MzIoY3B1X3RtcDY0LCBjcHVfYWRkciwgZGMtPm1lbV9pZHgpOwogI2Vs c2UKICAgICAgICAgICAgICAgICAgICAgdGNnX2dlbl9sZF9pMzIoY3B1X3RtcDMyLCBjcHVfZW52 LCBvZmZzZXRvZihDUFVTdGF0ZSwgZnNyKSk7CiAgICAgICAgICAgICAgICAgICAgIHRjZ19nZW5f cWVtdV9zdDMyKGNwdV90bXAzMiwgY3B1X2FkZHIsIGRjLT5tZW1faWR4KTsK ------=_Part_48604_26527191.1225540850589--