diff --git a/compiler/mips/mips-regs.txt b/compiler/mips/mips-regs.txt index dd39a472785a112949d876e7e034593d048cd848..1c0728b0dcc0ee90bb56d1b9af333ae6983f7f15 100644 --- a/compiler/mips/mips-regs.txt +++ b/compiler/mips/mips-regs.txt @@ -1,39 +1,60 @@ - Reg CN PR C Usage Lisp Name Lisp Usage GC -------------------------------------------------------------------------------------------------- - R0 - - Wired Zero ZERO Wired Zero N - R1 - N Assembler Temp LIP Lisp Interior Pointer Special - R2 v0 N { Expr Eval, Results } NL0 Non-Lisp Reg N - R3 v1 N { Static Link } NL1 Non-Lisp Reg N - R4 a0 N Integer Arg NL2 Non-Lisp Reg N - R5 a1 N Integer Arg NL3 Non-Lisp Reg N - R6 a2 N Integer Arg NL4 Non-Lisp Reg N - R7 a3 N Integer Arg NL5/NARGS Non-Lisp Reg / Arg Count N - R8 t0 N Temporary Reg L0 Lisp Reg Y - R9 t1 N Temporary Reg L1 Lisp Reg Y - R10 t2 N Temporary Reg L2 Lisp Reg Y - R11 t3 N Temporary Reg L3 Lisp Reg Y - R12 t4 N Temporary Reg L4 Lisp Reg Y - R13 t5 N Temporary Reg L5/LEX-ENV Lisp Reg / Lexical Environment Y - R14 t6 N Temporary Reg L6/OLD-CONT Lisp Reg / Old Continuation Y - R15 t7 N Temporary Reg L7/CALL-NAME Lisp Reg / Call Name Y - R16 s0 Y Saved Temporary Reg L8/A0 Lisp Reg / Arg Y - R17 s1 Y Saved Temporary Reg L9/A1 Lisp Reg / Arg Y - R18 s2 Y Saved Temporary Reg L10/A2 Lisp Reg / Arg Y - R19 s3 Y Saved Temporary Reg L11/A3 Lisp Reg / Arg Y - R20 s4 Y Saved Temporary Reg L12/A4 Lisp Reg / Arg Y - R21 s5 Y Saved Temporary Reg L13/A5 Lisp Reg / Arg Y - R22 s6 Y Saved Temporary Reg L14/ARGS Lisp Reg / Argument Pointer Y - R23 s7 Y Saved Temporary Reg L15/LRA Lisp Reg / Lisp Return Address Y - R24 t8 N Temporary Reg BSP Binding Stack Pointer Special - R25 t9 N Temporary Reg CSP Control Stack Pointer Special - R26 k0 - Kernel Reg (reserved) - Kernel Reg (reserved) N - R27 k1 - Kernel Reg (reserved) - Kernel Reg (reserved) N - R28 gp - Global Pointer NULL Null / Nil Constant Y - R29 sp - Stack Pointer NSP Number Stack Pointer N - R30 s8 Y Saved Temporary Reg CODE Code Pointer Y - R31 ra N Return Addr / Temp CONT Current Continuation Special +Global Lisp Registers: + NULL - Wired NIL register. + CSP - Control stack pointer. + CONT - Continuation pointer. + NSP - Number stack pointer. + BSP - Binding stack pointer. + FLAGS - Special flags register. + ALLOC - Allocation pointer. + CODE - Current code object. + +Linkage Registers: + NARGS - Number of arguments or values. + LEXENV - Lexical Environment being called. + OLDCONT - Old continuation pointer. + CNAME - Name of called function. + A0-A5 - First 6 arguments. + ARGS - Argument pointer. + LRA - Lisp Return Address. + + + Reg CN PR C Usage LN Lisp Usage GC +------------------------------------------------------------------------ + R0 - - Wired Zero ZERO Wired Zero N + R1 - N Assembler Temp LIP Lisp-Interior Special + R2 v0 N Results NL0 Non-Lisp Reg N + R3 v1 N Static Link NL1 Non-Lisp Reg N + R4 a0 N Integer Arg NL2 Non-Lisp Reg N + R5 a1 N Integer Arg NL3 Non-Lisp Reg N + R6 a2 N Integer Arg NL4 Non-Lisp Reg N + R7 a3 N Integer Arg NARGS Arg Count N + R8 t0 N Temporary Reg A0 Argument Y + R9 t1 N Temporary Reg A1 Argument Y + R10 t2 N Temporary Reg A2 Argument Y + R11 t3 N Temporary Reg A3 Argument Y + R12 t4 N Temporary Reg A4 Argument Y + R13 t5 N Temporary Reg A5 Argument Y + R14 t6 N Temporary Reg CNAME Call Name Y + R15 t7 N Temporary Reg LEXENV Lexical Env Y + R16 s0 Y Saved Temp Reg ARGS Arg Pointer Y + R17 s1 Y Saved Temp Reg OLDCONT Old Continuation Y + R18 s2 Y Saved Temp Reg LRA Lisp Return Address Y + R19 s3 Y Saved Temp Reg L0 Random Lisp Reg Y + R20 s4 Y Saved Temp Reg NULL Null / Nil Constant Y + R21 s5 Y Saved Temp Reg BSP Binding Stack Pointer Special + R22 s6 Y Saved Temp Reg CONT Current Continuation Special + R23 s7 Y Saved Temp Reg CSP Control Stack Pointer Special + R24 t8 N Temporary Reg FLAGS Flags register N + R25 t9 N Temporary Reg ALLOC Allocation Pointer Special + R26 k0 - (reserved) - Kernel Reg (reserved) N + R27 k1 - (reserved) - Kernel Reg (reserved) N + R28 gp - Global Pointer L1 Random Lisp Reg Y + R29 sp - Stack Pointer NSP Number Stack Pointer N + R30 s8 Y Saved Temp Reg CODE Code Pointer Y + R31 ra N Return Addr L2 Random Lisp Reg Y Key: CN == C/UNIX name + NL == Lisp name PR == Preserved on C function call (callee saves) GC == Considered as a root for GC