在Linux/MIPS上,哪些寄存器保存在系統調用(不是函數調用,通過syscall
指令實際往返於kernelspace)?Linux-MIPS系統調用保存的寄存器?
從arch/mips/include/asm/stackframe.h
頭文件中的宏判斷,r2-r7,r25,函數將使用它們會在將它們打開之前自行保存)。它是否正確?
當然,至少有一對(r2和r7)會將它們的值與系統調用的結果聯繫起來。
在Linux/MIPS上,哪些寄存器保存在系統調用(不是函數調用,通過syscall
指令實際往返於kernelspace)?Linux-MIPS系統調用保存的寄存器?
從arch/mips/include/asm/stackframe.h
頭文件中的宏判斷,r2-r7,r25,函數將使用它們會在將它們打開之前自行保存)。它是否正確?
當然,至少有一對(r2和r7)會將它們的值與系統調用的結果聯繫起來。
的描述(唯一一個我所知道的比內核源代碼本身等)在linux/MIPS的系統調用寄存器使用的見this link。
我想MIPS ABI公約應該精確地定義哪些寄存器包含系統調用之前的系統調用號和參數,以及在系統調用之後哪些寄存器包含結果(包括錯誤代碼)。經常系統調用不使用堆棧,只有註冊。
「爲了與調用約定保持一致,系統調用保留了o32定義爲倖存函數調用的那些寄存器的值。」 (See MIPS Run,379頁)
謝謝。順便說一句,這是今天被添加到維基百科;我問的時候並不存在。 –
我遵循linux-mips郵件列表,碰巧看到今天早上提到這個新的wiki條目......好的時機;-) –