Thanks. The following are the flags I am using; I do not see what I am doing wrong. Would you have a look? LOCAL_CFLAGS := -march=armv7-a -mtune=cortex-a15 -D__ASSEMBLY__ -mabi=aapcs-linux -gdwarf-2 -Wall -Wundef -Wstrict-proto types -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-de lete-null-pointer-checks -Os -Wno-maybe-uninitialized -marm -fno-dwarf2-cfi-asm -fstack-protector -mabi=aapcs-linux -mno -thumb-interwork -funwind-tables -D__LINUX_ARM_ARCH__=7 -mcpu=cortex-a15 -msoft-float -Uarm -Wframe-larger-than=1024 -Wn o-unused-but-set-variable -fomit-frame-pointer -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow - fconserve-stack -DCC_HAVE_ASM_GOTO -----Original Message----- From: gcc-help-owner@xxxxxxxxxxx [mailto:gcc-help-owner@xxxxxxxxxxx] On Behalf Of Richard Earnshaw Sent: Friday, July 31, 2015 5:46 AM To: Shahin Ansari <shansari@xxxxxxxxxxx>; gcc-help@xxxxxxxxxxx Subject: Re: what options to pass to gcc for support of arm security extensions On 30/07/15 20:29, Shahin Ansari wrote: > Greetings- > According to the ARM documentation the SMC call should be supported at > ARMv6 and above. However, I get the error message below when I try to use it: > Almost, it's ARMv6Z that introduced the SMC instruction. It will certainly be recognized for ARMv7-a and above. GCC uses the -mcpu= (or if that's not specified the -march=) options from the command line to tell the assembler what instructions should be permitted. R.