1. 程式人生 > >解決編譯核心時“ Error: selected processor does not support ARM mode 'smc 0'”相關問題

解決編譯核心時“ Error: selected processor does not support ARM mode 'smc 0'”相關問題

最近在用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))。

再次編譯即可。