From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5932 invoked by alias); 24 Aug 2016 11:02:07 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 5823 invoked by uid 89); 24 Aug 2016 11:02:05 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,KAM_LOTSOFHASH,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=sk:build_f, pat, msr X-HELO: foss.arm.com Received: from foss.arm.com (HELO foss.arm.com) (217.140.101.70) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 24 Aug 2016 11:01:59 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B1734689 for ; Wed, 24 Aug 2016 04:03:37 -0700 (PDT) Received: from [10.2.206.221] (e107157-lin.cambridge.arm.com [10.2.206.221]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E03263F220 for ; Wed, 24 Aug 2016 04:01:57 -0700 (PDT) Subject: Re: [PATCH 7/7, GCC, ARM, V8M] Added support for ARMV8-M Security Extension cmse_nonsecure_caller intrinsic To: gcc-patches@gcc.gnu.org References: <5796116C.6010100@arm.com> <57961419.8040904@arm.com> From: "Andre Vieira (lists)" Message-ID: <57BD7EA4.4010500@arm.com> Date: Wed, 24 Aug 2016 11:02:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <57961419.8040904@arm.com> Content-Type: multipart/mixed; boundary="------------040507060503020901090009" X-IsSubscribed: yes X-SW-Source: 2016-08/txt/msg01712.txt.bz2 This is a multi-part message in MIME format. --------------040507060503020901090009 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-length: 3631 On 25/07/16 14:28, Andre Vieira (lists) wrote: > This patch adds support ARMv8-M's Security Extension's > cmse_nonsecure_caller intrinsic. This intrinsic is used to check whether > an entry function was called from a non-secure state. > See Section 5.4.3 of ARM®v8-M Security Extensions: Requirements on > Development Tools > (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html) > for further details. > > The FIXME in config/arm/arm_cmse.h is for a diagnostic message that is > suggested in the ARMv8-M Security Extensions document mentioned above, > to diagnose the use of the cmse_nonsecure_caller intrinsic outside of > functions with the 'cmse_nonsecure_entry' attribute. Checking whether > the intrinsic is called from within such functions can easily be done > inside 'arm_expand_builtin'. However, making the warning point to the > right location is more complicated. The ARMv8-M Security Extensions > specification does mention that such a diagnostic might become > mandatory, so I might have to pick this up later, otherwise it is left > as a potential extra feature. > > > *** gcc/ChangeLog *** > 2016-07-25 Andre Vieira > Thomas Preud'homme > > * config/arm/arm-builtins.c (arm_builtins): Define > ARM_BUILTIN_CMSE_NONSECURE_CALLER. > (bdesc_2arg): Add line for cmse_nonsecure_caller. > (arm_expand_builtin): Handle cmse_nonsecure_caller. > * config/arm/arm_cmse.h (cmse_nonsecure_caller): New. > > *** gcc/testsuite/ChangeLog *** > 2016-07-25 Andre Vieira > Thomas Preud'homme > > * gcc.target/arm/cmse/cmse-1.c: Add test for > cmse_nonsecure_caller. > Added more documentation as requested. --- This patch adds support ARMv8-M's Security Extension's cmse_nonsecure_caller intrinsic. This intrinsic is used to check whether an entry function was called from a non-secure state. See Section 5.4.3 of ARM®v8-M Security Extensions: Requirements on Development Tools (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html) for further details. The FIXME in config/arm/arm_cmse.h is for a diagnostic message that is suggested in the ARMv8-M Security Extensions document mentioned above, to diagnose the use of the cmse_nonsecure_caller intrinsic outside of functions with the 'cmse_nonsecure_entry' attribute. Checking whether the intrinsic is called from within such functions can easily be done inside 'arm_expand_builtin'. However, making the warning point to the right location is more complicated. The ARMv8-M Security Extensions specification does mention that such a diagnostic might become mandatory, so I might have to pick this up later, otherwise it is left as a potential extra feature. *** gcc/ChangeLog *** 2016-07-xx Andre Vieira Thomas Preud'homme * config/arm/arm-builtins.c (arm_builtins): Define ARM_BUILTIN_CMSE_NONSECURE_CALLER. (bdesc_2arg): Add line for cmse_nonsecure_caller. (arm_expand_builtin): Handle cmse_nonsecure_caller. * config/arm/arm_cmse.h (cmse_nonsecure_caller): New. * doc/extend.texi (ARM ARMv8-M Security Extensions): New intrinsic. *** gcc/testsuite/ChangeLog *** 2016-07-xx Andre Vieira Thomas Preud'homme * gcc.target/arm/cmse/cmse-1.c: Add test for cmse_nonsecure_caller. --------------040507060503020901090009 Content-Type: text/plain; charset=UTF-8; name="diff7" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diff7" Content-length: 5454 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybS1idWlsdGlucy5jIGIv Z2NjL2NvbmZpZy9hcm0vYXJtLWJ1aWx0aW5zLmMKaW5kZXggNjhiMjgzOTg3 OWY3OGU4ZDgxOTQ0NGZiYzExZDJhOTFmOGQ2Mjc5YS4uMjU4OWVjMmQxMjMz ZjNkYWZmOTRhMWQzNWViZjYzYzhhOWI5M2VjZiAxMDA2NDQKLS0tIGEvZ2Nj L2NvbmZpZy9hcm0vYXJtLWJ1aWx0aW5zLmMKKysrIGIvZ2NjL2NvbmZpZy9h cm0vYXJtLWJ1aWx0aW5zLmMKQEAgLTUxNSw2ICs1MTUsOCBAQCBlbnVtIGFy bV9idWlsdGlucwogICBBUk1fQlVJTFRJTl9HRVRfRlBTQ1IsCiAgIEFSTV9C VUlMVElOX1NFVF9GUFNDUiwKIAorICBBUk1fQlVJTFRJTl9DTVNFX05PTlNF Q1VSRV9DQUxMRVIsCisKICN1bmRlZiBDUllQVE8xCiAjdW5kZWYgQ1JZUFRP MgogI3VuZGVmIENSWVBUTzMKQEAgLTE3ODksNiArMTc5MSwxNyBAQCBhcm1f aW5pdF9idWlsdGlucyAodm9pZCkKIAk9IGFkZF9idWlsdGluX2Z1bmN0aW9u ICgiX19idWlsdGluX2FybV9zdGZzY3IiLCBmdHlwZV9zZXRfZnBzY3IsCiAJ CQkJQVJNX0JVSUxUSU5fU0VUX0ZQU0NSLCBCVUlMVF9JTl9NRCwgTlVMTCwg TlVMTF9UUkVFKTsKICAgICB9CisKKyAgaWYgKGFybV9hcmNoX2Ntc2UpCisg ICAgeworICAgICAgdHJlZSBmdHlwZV9jbXNlX25vbnNlY3VyZV9jYWxsZXIK Kwk9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAodW5zaWduZWRfdHlwZV9u b2RlLCBOVUxMKTsKKyAgICAgIGFybV9idWlsdGluX2RlY2xzW0FSTV9CVUlM VElOX0NNU0VfTk9OU0VDVVJFX0NBTExFUl0KKwk9IGFkZF9idWlsdGluX2Z1 bmN0aW9uICgiX19idWlsdGluX2FybV9jbXNlX25vbnNlY3VyZV9jYWxsZXIi LAorCQkJCWZ0eXBlX2Ntc2Vfbm9uc2VjdXJlX2NhbGxlciwKKwkJCQlBUk1f QlVJTFRJTl9DTVNFX05PTlNFQ1VSRV9DQUxMRVIsIEJVSUxUX0lOX01ELAor CQkJCU5VTEwsIE5VTExfVFJFRSk7CisgICAgfQogfQogCiAvKiBSZXR1cm4g dGhlIEFSTSBidWlsdGluIGZvciBDT0RFLiAgKi8KQEAgLTIzNjgsNiArMjM4 MSwxMiBAQCBhcm1fZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLAogICAgICAg ZW1pdF9pbnNuIChwYXQpOwogICAgICAgcmV0dXJuIHRhcmdldDsKIAorICAg IGNhc2UgQVJNX0JVSUxUSU5fQ01TRV9OT05TRUNVUkVfQ0FMTEVSOgorICAg ICAgdGFyZ2V0ID0gZ2VuX3JlZ19ydHggKFNJbW9kZSk7CisgICAgICBvcDAg PSBhcm1fcmV0dXJuX2FkZHIgKDAsIE5VTExfUlRYKTsKKyAgICAgIGVtaXRf aW5zbiAoZ2VuX2FkZHNpMyAodGFyZ2V0LCBvcDAsIGNvbnN0MV9ydHgpKTsK KyAgICAgIHJldHVybiB0YXJnZXQ7CisKICAgICBjYXNlIEFSTV9CVUlMVElO X1RFWFRSTVNCOgogICAgIGNhc2UgQVJNX0JVSUxUSU5fVEVYVFJNVUI6CiAg ICAgY2FzZSBBUk1fQlVJTFRJTl9URVhUUk1TSDoKZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvYXJtL2FybV9jbXNlLmggYi9nY2MvY29uZmlnL2FybS9hcm1f Y21zZS5oCmluZGV4IGI0MjMyOTM3YzZhZTA0NzU0YTZiYmM1MTNiMTQzNjcy YTRiZTU1MzAuLmQzZjUyOWNjZTkwYjhhN2VjZjgxMzJhZDQwODQzMjcwZTBi MjI5ZDIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYXJtL2FybV9jbXNlLmgK KysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtX2Ntc2UuaApAQCAtMTYzLDYgKzE2 MywxMyBAQCBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKQog Y21zZV9UVEFUICh2b2lkICpfX3ApCiBfX0NNU0VfVFRfQVNNIChhdCkKIAor LyogRklYTUU6IGRpYWdub3NlIHVzZSBvdXRzaWRlIGNtc2Vfbm9uc2VjdXJl X2VudHJ5IGZ1bmN0aW9ucy4gICovCitfX2V4dGVuc2lvbl9fIHN0YXRpYyBf X2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9f KSkKK2Ntc2Vfbm9uc2VjdXJlX2NhbGxlciAodm9pZCkKK3sKKyAgcmV0dXJu IF9fYnVpbHRpbl9hcm1fY21zZV9ub25zZWN1cmVfY2FsbGVyICgpOworfQor CiAjZGVmaW5lIENNU0VfQVVfTk9OU0VDVVJFCTIKICNkZWZpbmUgQ01TRV9N UFVfTk9OU0VDVVJFCTE2CiAjZGVmaW5lIENNU0VfTk9OU0VDVVJFCQkxOApk aWZmIC0tZ2l0IGEvZ2NjL2RvYy9leHRlbmQudGV4aSBiL2djYy9kb2MvZXh0 ZW5kLnRleGkKaW5kZXggZjFlNmEyMDU4M2Y5YjE2ZDVhNjcwMTQ0YTE2MjIw M2ExMmIyMzliZC4uMWVjNjliMDg4ZjVkYzFkZWY5NTI1NDUwYzU1MTMzNTQw NDhlOTBkZCAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9leHRlbmQudGV4aQorKysg Yi9nY2MvZG9jL2V4dGVuZC50ZXhpCkBAIC0xMjQzOSw2ICsxMjQzOSw3IEBA IGNtc2VfYWRkcmVzc19pbmZvX3QgY21zZV9UVEFUX2ZwdHIgKEZQVFIpCiB2 b2lkICogY21zZV9jaGVja19hZGRyZXNzX3JhbmdlICh2b2lkICosIHNpemVf dCwgaW50KQogdHlwZW9mKHApIGNtc2VfbnNmcHRyX2NyZWF0ZSAoRlBUUiBw KQogaW50cHRyX3QgY21zZV9pc19uc2ZwdHIgKEZQVFIpCitpbnQgY21zZV9u b25zZWN1cmVfY2FsbGVyICh2b2lkKQogQGVuZCBzbWFsbGV4YW1wbGUKIAog QG5vZGUgQVZSIEJ1aWx0LWluIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Ntc2UtMS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9jbXNlL2Ntc2UtMS5jCmluZGV4 IGQ1YjlhMmQ5ZDU5NTY5ZGUxNzBkYTgxNGFlNjYwZTlmYjJiOTQzZTcuLmRk Y2YxMmEzMGE2YzE4MDY5NjlkMjM5YzQ0OGRhODFjY2Y0OTUzMmUgMTAwNjQ0 Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vY21zZS9jbXNl LTEuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2Ntc2Uv Y21zZS0xLmMKQEAgLTY1LDMgKzY1LDMyIEBAIGludCBmb28gKGNoYXIgKiBw KQogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ0dGF0 ICIgMiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAiYmwuY21zZV9jaGVja19hZGRyZXNzX3JhbmdlIiA3IH0gfSAqLwog LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY21zZV9jaGVj a19wb2ludGVkX29iamVjdCIgfSB9ICovCisKK3R5cGVkZWYgaW50ICgqaW50 X3JldF9mdW5jcHRyX3QpICh2b2lkKTsKK3R5cGVkZWYgaW50IF9fYXR0cmli dXRlX18gKChjbXNlX25vbnNlY3VyZV9jYWxsKSkgKCppbnRfcmV0X25zZnVu Y3B0cl90KSAodm9pZCk7CisKK2ludCBfX2F0dHJpYnV0ZV9fICgoY21zZV9u b25zZWN1cmVfZW50cnkpKQorYmF6ICh2b2lkKQoreworICByZXR1cm4gY21z ZV9ub25zZWN1cmVfY2FsbGVyICgpOworfQorCitpbnQgX19hdHRyaWJ1dGVf XyAoKGNtc2Vfbm9uc2VjdXJlX2VudHJ5KSkKK3F1eCAoaW50X3JldF9mdW5j cHRyX3QgaW50X3JldF9mdW5jcHRyKQoreworICBpbnRfcmV0X25zZnVuY3B0 cl90IGludF9yZXRfbnNmdW5jX3B0cjsKKworICBpZiAoY21zZV9pc19uc2Zw dHIgKGludF9yZXRfZnVuY3B0cikpCisgICAgeworICAgICAgaW50X3JldF9u c2Z1bmNfcHRyID0gY21zZV9uc2ZwdHJfY3JlYXRlIChpbnRfcmV0X2Z1bmNw dHIpOworICAgICAgcmV0dXJuIGludF9yZXRfbnNmdW5jX3B0ciAoKTsKKyAg ICB9CisgIHJldHVybiAwOworfQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJiYXo6IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAiX19hY2xlX3NlX2JhejoiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiXHRjbXNlX25vbnNlY3VyZV9jYWxs ZXIiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAgImFu ZC4qcmVnLipjb25zdF9pbnQgMSIgZXhwYW5kIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJiaWMiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoXHRce3I0LCByNSwgcjYiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtc3JcdEFQ U1JfbnpjdnEiIH0gfSAqLwo= --------------040507060503020901090009--