我最近为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
注册表吗?还是内核版本是问题的原因?或其他什么?
答案 0 :(得分:1)
cr0
是x86寄存器。 X86_CR0_WP
应该是赠送的,这是特定于x86的代码。
清除该位会导致禁用写保护:内核可能会写入只读映射页。有关how to do this on ARM的(未答复的)StackOverflow问题。我也不知道答案。