在raspbian中隐式声明函数'read_cr0'

时间:2018-01-27 19:31:14

标签: linux-kernel raspberry-pi kernel kernel-module

我最近为mint 18编译内核模块(内核版本:4.4.0-36-generic)并使用这些函数:

static inline unsigned long rk_disable_wp(void)
{
    unsigned long cr0;

    preempt_disable();

    barrier();
    cr0 = read_cr0();
    write_cr0(cr0 & ~X86_CR0_WP);
    barrier();

    return cr0;
}

当我将此源代码移动到raspbian 9.1(内核版本:4.9.59-v7 +)时,我无法编译并且此错误抛出:

error: implicit declaration of function 'read_cr0' [-Werror=implicit-function-declaration]
error: implicit declaration of function 'write_cr0' [-Werror=implicit-function-declaration]
error: 'X86_CR0_WP' undeclared (first use in this function)

Rasberry pi没有CR0注册表吗?还是内核版本是问题的原因?或其他什么?

1 个答案:

答案 0 :(得分:1)

cr0是x86寄存器。 X86_CR0_WP应该是赠送的,这是特定于x86的代码。

清除该位会导致禁用写保护:内核可能会写入只读映射页。有关how to do this on ARM的(未答复的)StackOverflow问题。我也不知道答案。