2012-09-09 61 views
2

在Linux/MIPS上,哪些寄存器保存在系统调用(不是函数调用,通过syscall指令实际往返于kernelspace)?Linux-MIPS系统调用保存的寄存器?

arch/mips/include/asm/stackframe.h头文件中的宏判断,r2-r7,r25,函数将使用它们会在将它们打开之前自行保存)。它是否正确?

当然,至少有一对(r2和r7)会将它们的值与系统调用的结果联系起来。

回答

2

的描述(唯一一个我所知道的比内核源代码本身等)在linux/MIPS的系统调用寄存器使用的见this link

+0

谢谢。顺便说一句,这是今天被添加到维基百科;我问的时候并不存在。 –

+0

我遵循linux-mips邮件列表,碰巧看到今天早上提到这个新的wiki条目......好的时机;-) –

2

我想MIPS ABI公约应该精确地定义哪些寄存器包含系统调用之前的系统调用号和参数,以及在系统调用之后哪些寄存器包含结果(包括错误代码)。经常系统调用不使用堆栈,只有注册。

2

“为了与调用约定保持一致,系统调用保留了o32定义为幸存函数调用的那些寄存器的值。” (See MIPS Run,379页)