最近在用arm-2014.05编译器编译Linux内核时,出现如下问题:
Error: selected processor does not support ARM mode 'smc 0'
这是我使用的交叉编译器:
解决步骤:
(1)arch/arm/mach-exynos/include/mach/smc.h文件:
在第54行和第69下面添加:
__asm__ volatile (
+ ".arch_extension sec\n" //
"smc 0\n"
: "+r"(reg0), "+r"(reg1), "+r"(reg2), "+r"(reg3)
);
(2)arch/arm/mach-exynos/sleep-exynos4.S文件:
在第43行上面添加:
#ifdef CONFIG_ARM_TRUSTZONE
.arch_extension sec
#endif
(3)arch/arm/mach-exynos/idle-exynos4.S文件:
在第47行上面添加:
#ifdef CONFIG_ARM_TRUSTZONE
.arch_extension sec
#endif
再次使用make zImage命令,发现出现新的错误:
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/home/skyfall/kernel/kernel/iTop4412_Kernel_3.0/kernel/Makefile:140: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
Makefile:953: recipe for target 'kernel' failed
这个问题我在是编译树莓派内核时遇到过,修改kernel/timeconst.pl文件内容,
将if (!defined(@val)) 改为if (!(@val))。
再次编译即可。