6.59.9 ARM ARMv8-M Security Extensions

GCC implements the ARMv8-M Security Extensions as described in the ARMv8-M Security Extensions: Requiremenets on Development Tools Engineering Specification, which can be found at http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/ECM0359818_armv8m_security_extensions_reqs_on_dev_tools_1_0.pdf .

As part of the Security Extensions GCC implements two new function attributes: cmse_nonsecure_entry and cmse_nonsecure_call .

As part of the Security Extensions GCC implements the intrinsics below. FPTR is used here to mean any function pointer type.

     cmse_address_info_t cmse_TT (void *)
     cmse_address_info_t cmse_TT_fptr (FPTR)
     cmse_address_info_t cmse_TTT (void *)
     cmse_address_info_t cmse_TTT_fptr (FPTR)
     cmse_address_info_t cmse_TTA (void *)
     cmse_address_info_t cmse_TTA_fptr (FPTR)
     cmse_address_info_t cmse_TTAT (void *)
     cmse_address_info_t cmse_TTAT_fptr (FPTR)
     void * cmse_check_address_range (void *, size_t, int)
     typeof(p) cmse_nsfptr_create (FPTR p)
     intptr_t cmse_is_nsfptr (FPTR)
     int cmse_nonsecure_caller (void)