From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15561 invoked by alias); 9 Feb 2015 08:40:36 -0000 Mailing-List: contact libffi-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libffi-discuss-owner@sourceware.org Received: (qmail 15525 invoked by uid 89); 9 Feb 2015 08:40:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-lb0-f176.google.com Received: from mail-lb0-f176.google.com (HELO mail-lb0-f176.google.com) (209.85.217.176) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Mon, 09 Feb 2015 08:40:34 +0000 Received: by mail-lb0-f176.google.com with SMTP id u10so14938615lbd.7 for ; Mon, 09 Feb 2015 00:40:31 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.152.28.227 with SMTP id e3mr14936132lah.117.1423471231106; Mon, 09 Feb 2015 00:40:31 -0800 (PST) Received: by 10.25.21.213 with HTTP; Mon, 9 Feb 2015 00:40:30 -0800 (PST) Date: Mon, 09 Feb 2015 08:40:00 -0000 Message-ID: Subject: [PATCH] Implement libffi for AARCH64:ILP32 From: Andrew Pinski To: GCC Patches , "libffi-discuss@sourceware.org" Content-Type: multipart/mixed; boundary=089e0160b7ce14198f050ea3b930 X-SW-Source: 2015/txt/msg00027.txt.bz2 --089e0160b7ce14198f050ea3b930 Content-Type: text/plain; charset=UTF-8 Content-length: 863 Hi, The following GCC patch (I don't have the libffi code git checked out) implements libffi for AARCH64:ILP32. The majority of the AARCH64 code works correctly for ILP32. For ILP32, we need to use long long types for ffi_arg and ffi_sarg. And then we need to fix up the closure code to load cif, fn, and user_data by 32bit instead of 64bits as they are stored as pointers in C code. With this patch, I got no failures in the libffi testsuite that is included with GCC. OK? Built and tested on aarch64 with no regressions. Thanks, Andrew Pinski ChangeLog: * src/aarch64/ffitarget.h (ffi_arg): Use unsigned long long for ILP32. (ffi_sarg): Use signed long long for ILP32. * src/aarch64/sysv.S (PTR_REG): New macro. (PTR_SIZE): New macro. (ffi_closure_SYSV): Load cif, fn and user_data using PTR_REG. (ffi_go_closure_SYSV): Load cif and fn using PTR_REG. --089e0160b7ce14198f050ea3b930 Content-Type: text/plain; charset=US-ASCII; name="implementlibffiilp32.diff.txt" Content-Disposition: attachment; filename="implementlibffiilp32.diff.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i5xly06j0 Content-length: 2489 ZGlmZiAtLWdpdCBhL2xpYmZmaS9zcmMvYWFyY2g2NC9mZml0YXJnZXQuaCBi L2xpYmZmaS9zcmMvYWFyY2g2NC9mZml0YXJnZXQuaAppbmRleCBmY2EyODEx Li5jMTM0ZmUzIDEwMDY0NAotLS0gYS9saWJmZmkvc3JjL2FhcmNoNjQvZmZp dGFyZ2V0LmgKKysrIGIvbGliZmZpL3NyYy9hYXJjaDY0L2ZmaXRhcmdldC5o CkBAIC0yNyw4ICsyNywxMyBAQCBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U SEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCiAjZW5kaWYKIAog I2lmbmRlZiBMSUJGRklfQVNNCisjaWZkZWYgX19JTFAzMl9fCit0eXBlZGVm IHVuc2lnbmVkIGxvbmcgbG9uZyBmZmlfYXJnOwordHlwZWRlZiBzaWduZWQg bG9uZyBsb25nIGZmaV9zYXJnOworI2Vsc2UKIHR5cGVkZWYgdW5zaWduZWQg bG9uZyBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyBmZmlfc2FyZzsK KyNlbmRpZgogCiB0eXBlZGVmIGVudW0gZmZpX2FiaQogICB7CmRpZmYgLS1n aXQgYS9saWJmZmkvc3JjL2FhcmNoNjQvc3lzdi5TIGIvbGliZmZpL3NyYy9h YXJjaDY0L3N5c3YuUwppbmRleCA0NmY1MGI5Li5jMWJmOWI5IDEwMDY0NAot LS0gYS9saWJmZmkvc3JjL2FhcmNoNjQvc3lzdi5TCisrKyBiL2xpYmZmaS9z cmMvYWFyY2g2NC9zeXN2LlMKQEAgLTQ1LDYgKzQ1LDE4IEBAIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJF LiAgKi8KICMgZGVmaW5lIEJFKFgpCTAKICNlbmRpZgogCisjaWZkZWYgX19J TFAzMl9fCisjZGVmaW5lIFBUUl9SRUcobikgICAgICB3IyNuCisjZWxzZQor I2RlZmluZSBQVFJfUkVHKG4pICAgICAgeCMjbgorI2VuZGlmCisKKyNpZmRl ZiBfX0lMUDMyX18KKyNkZWZpbmUgUFRSX1NJWkUJNAorI2Vsc2UKKyNkZWZp bmUgUFRSX1NJWkUJOAorI2VuZGlmCisKIAkudGV4dAogCS5hbGlnbiA0CiAK QEAgLTI0OCw4ICsyNjAsOCBAQCBDTkFNRShmZmlfY2xvc3VyZV9TWVNWKToK IAlzdHAgICAgIHg2LCB4NywgW3NwLCAjMTYgKyAxNipOX1ZfQVJHX1JFRyAr IDQ4XQogCiAJLyogTG9hZCBmZmlfY2xvc3VyZV9pbm5lciBhcmd1bWVudHMu ICAqLwotCWxkcAl4MCwgeDEsIFt4MTcsICNGRklfVFJBTVBPTElORV9DTE9T VVJFX09GRlNFVF0JLyogbG9hZCBjaWYsIGZuICovCi0JbGRyCXgyLCBbeDE3 LCAjRkZJX1RSQU1QT0xJTkVfQ0xPU1VSRV9PRkZTRVQrMTZdCS8qIGxvYWQg dXNlcl9kYXRhICovCisJbGRwCVBUUl9SRUcoMCksIFBUUl9SRUcoMSksIFt4 MTcsICNGRklfVFJBTVBPTElORV9DTE9TVVJFX09GRlNFVF0JLyogbG9hZCBj aWYsIGZuICovCisJbGRyCVBUUl9SRUcoMiksIFt4MTcsICNGRklfVFJBTVBP TElORV9DTE9TVVJFX09GRlNFVCtQVFJfU0laRSoyXQkvKiBsb2FkIHVzZXJf ZGF0YSAqLwogLkxkb19jbG9zdXJlOgogCWFkZAl4Mywgc3AsICMxNgkJCQkv KiBsb2FkIGNvbnRleHQgKi8KIAlhZGQJeDQsIHNwLCAjZmZpX2Nsb3N1cmVf U1lTVl9GUwkJLyogbG9hZCBzdGFjayAqLwpAQCAtNDAzLDcgKzQxNSw3IEBA IENOQU1FKGZmaV9nb19jbG9zdXJlX1NZU1YpOgogCXN0cCAgICAgeDYsIHg3 LCBbc3AsICMxNiArIDE2Kk5fVl9BUkdfUkVHICsgNDhdCiAKIAkvKiBMb2Fk IGZmaV9jbG9zdXJlX2lubmVyIGFyZ3VtZW50cy4gICovCi0JbGRwCXgwLCB4 MSwgW3gxOCwgIzhdCQkJLyogbG9hZCBjaWYsIGZuICovCisJbGRwCVBUUl9S RUcoMCksIFBUUl9SRUcoMSksIFt4MTgsICNQVFJfU0laRV0vKiBsb2FkIGNp ZiwgZm4gKi8KIAltb3YJeDIsIHgxOAkJCQkJLyogbG9hZCB1c2VyX2RhdGEg Ki8KIAliCS5MZG9fY2xvc3VyZQogCWNmaV9lbmRwcm9jCg== --089e0160b7ce14198f050ea3b930--