当我运行 fork 测试时,我有一个 TLB 未命中错误,我知道这是由于将错误的 stackptr 传递给 mips_usermode ,我的实现似乎围绕这里的一些建议,如果我得到纠正她将不胜感激。我下面的代码作为 thread_fork 中的入口点函数提供。我错过了什么吗?
void
enter_forked_process(void *junk,unsigned long num)
{
kprintf("\n entered enter_fork_process");
struct trapframe tf = (*((struct trapframe *) junk));
(void) num;
kprintf("\n copied tf from from parent to child");
tf.tf_v0 = 0;
tf.tf_a3 = 0;
tf.tf_epc += 4;
kprintf("abt to enter mips_ usermode");
mips_usermode(&tf);
}