> Hi > > In linux/arch/arm/boot/ > compressed/head.S: > > > #ifndef __ARM_ARCH_2__ > /* > * Booting from Angel - need to enter SVC mode and disable > * FIQs/IRQs (numeric definitions from angel arm.h source). > * We only do this if we were in user mode on entry. > */ > mrs r2, cpsr @ get current mode > tst r2, #3 @ not user? > bne not_angel > mov r0, #0x17 @ angel_SWIreason_EnterSVC > swi 0x123456 @ angel_SWI_ARM > > > I don't know what the"__ARM_ARCH_2__" mean? __ARM_ARCH_2__ is defined by GCC when compiling for the ARMv2 architecture. GCC defines an __ARM_ARCH_<architecture version>__ predefine when compiling for a particular architecture. In the snippet you posted it is used to make sure the code below the #ifndef is not used/compiled when targeting ARMv2. HTH, Kyrill P.S. In the future, questions like these go on the gcc-help list. The gcc list is used for discussions on the development of gcc.