我正在尝试实现 tlb 刷新功能。对于刷新,我使用INVLPG
指令,但不幸的是它总是会导致分段错误。你能帮我解决这个问题吗?
这是代码:
#include "stdlib.h"
inline void tlb_flush_entry(int *m)
{
asm volatile ("invlpg %0"::"m"(*m):"memory");
}
int main(int argc, char **argv)
{
int *memory = (int *)malloc(100);
tlb_flush_entry(memory);
}