我在这里有这个典型的要求:

内核/arch/arm/lib/csumpartial.S中有一个文件,该文件具有一个名为csumpartial()的函数,该函数计算16位校验和(显然是汇编代码),并且此函数与EXPORT符号一起导出。

我现在使用名为csumpartial.c的文件中的内在函数通过NEON优化实现了相同的功能

我有以下要求:

  • 现在,我希望我的函数'csumpartial'的版本被调用内核函数而不是程序集版本调用。

    -为此,我应该将csumpartial.S文件替换为csumpartial.C文件吗?但是,接下来该如何更换(需要注意哪些事项)?
  • 此csumpartial.c文件应使用特殊的编译器标记-mfpu=neon -mfloat-abi=softfp -flax-vector-conversions -O3进行编译,以进行NEON优化。

    -那么在哪里以及如何提及此编译器标志?

  • 简而言之,在编译内核时,应完全弃用汇编版本,并使用-mfpu=neon -mfloat-abi=softfp -flax-vector-conversions -O3标志编译c版本。当内核中的某人调用csumpartial时,应该调用该函数的c版本

    早期的帮助将不胜感激。

    很少输入:
  • Linux版本2.6.37
  • 使用交叉编译器工具对arm进行交叉编译(cgt_a8/arm-2009q1)
  • ARM cortex-a8的
  • 编码

  • 让我知道更多信息

    注意:只有我将使用这个经过编辑的内核,因此我了解这种替换所带来的风险

    最佳答案

    如果您只想构建修改后的内核,请使用命令行中所需的编译标志将csumpartial.c编译为csumpartial.o。之后,编译整个内核。 GNU make不会将.S重新编译为具有更高时间戳的.o文件。

    作为永久解决方案:删除csumpartial.S,创建csumpartial.c,并将以下行添加到/arch/arm/lib/Makefile:

    CFLAGS_csumpartial.o += -mfpu=neon -mfloat-abi=softfp -flax-vector-conversions -O3
    
    # seems this line is not necessary
    $(obj)/csumpartial.o: $(obj)/csumpartial.c
    

    关于linux - 如何调用MyChecksum而不是内核校验和(内核校验和汇编代码),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14196270/

    10-09 07:05