Register Definitions ==================== Integer Registers ----------------- +---------+----------+-----------------------------------+--------+ |Register | ABI Name | Description | Saver | +=========+==========+===================================+========+ |x0 |zero | Hard-wired zero | | +---------+----------+-----------------------------------+--------+ |x1 |ra | Return address | Caller | +---------+----------+-----------------------------------+--------+ |x2 |sp | Stack pointer | Callee | +---------+----------+-----------------------------------+--------+ |x3 |gp | Global pointer | | +---------+----------+-----------------------------------+--------+ |x4 |tp | Thread pointer | | +---------+----------+-----------------------------------+--------+ |x5 |t0 | Temporary/alternate link register | Caller | +---------+----------+-----------------------------------+--------+ |x6 |t1 | Temporaries | Caller | +---------+----------+-----------------------------------+--------+ |x7 |t2 | Temporaries | Caller | +---------+----------+-----------------------------------+--------+ |x8 |s0/fp | Saved register/frame pointer | Callee | +---------+----------+-----------------------------------+--------+ |x9 |s1 | Saved register | Callee | +---------+----------+-----------------------------------+--------+ |x10 |a0 | Function arguments/return values | Caller | +---------+----------+-----------------------------------+--------+ |x11 |a1 | Function arguments/return values | Caller | +---------+----------+-----------------------------------+--------+ |x12 |a2 | Function arguments | Caller | +---------+----------+-----------------------------------+--------+ |x13 |a3 | Function arguments | Caller | +---------+----------+-----------------------------------+--------+ |x14 |a4 | Function arguments | Caller | +---------+----------+-----------------------------------+--------+ |x15 |a5 | Function arguments | Caller | +---------+----------+-----------------------------------+--------+ |x16 |a6 | Function arguments | Caller | +---------+----------+-----------------------------------+--------+ |x17 |a7 | Function arguments | Caller | +---------+----------+-----------------------------------+--------+ |x18 |s2 | Saved registers | Callee | +---------+----------+-----------------------------------+--------+ |x19 |s3 | Saved registers | Callee | +---------+----------+-----------------------------------+--------+ |x20 |s4 | Saved registers | Callee | +---------+----------+-----------------------------------+--------+ |x21 |s5 | Saved registers | Callee | +---------+----------+-----------------------------------+--------+ |x22 |s6 | Saved registers | Callee | +---------+----------+-----------------------------------+--------+ |x23 |s7 | Saved registers | Callee | +---------+----------+-----------------------------------+--------+ |x24 |s8 | Saved registers | Callee | +---------+----------+-----------------------------------+--------+ |x25 |s9 | Saved registers | Callee | +---------+----------+-----------------------------------+--------+ |x26 |s10 | Saved registers | Callee | +---------+----------+-----------------------------------+--------+ |x27 |s11 | Saved registers | Callee | +---------+----------+-----------------------------------+--------+ |x28 |t3 | Temporaries | Caller | +---------+----------+-----------------------------------+--------+ |x29 |t4 | Temporaries | Caller | +---------+----------+-----------------------------------+--------+ |x30 |t5 | Temporaries | Caller | +---------+----------+-----------------------------------+--------+ |x31 |t6 | Temporaries | Caller | +---------+----------+-----------------------------------+--------+ Floating Point Registers ------------------------ +---------+----------+-----------------------------------+--------+ |Register | ABI Name | Description | Saver | +=========+==========+===================================+========+ |f0 | ft0 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+ |f1 | ft1 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+ |f2 | ft2 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+ |f3 | ft3 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+ |f4 | ft4 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+ |f5 | ft5 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+ |f6 | ft6 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+ |f7 | ft7 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+ |f8 | fs0 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f9 | fs1 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f10 | fa0 | FP arguments/return values | Caller | +---------+----------+-----------------------------------+--------+ |f11 | fa1 | FP arguments/return values | Caller | +---------+----------+-----------------------------------+--------+ |f12 | fa2 | FP arguments | Caller | +---------+----------+-----------------------------------+--------+ |f13 | fa3 | FP arguments | Caller | +---------+----------+-----------------------------------+--------+ |f14 | fa4 | FP arguments | Caller | +---------+----------+-----------------------------------+--------+ |f15 | fa5 | FP arguments | Caller | +---------+----------+-----------------------------------+--------+ |f16 | fa6 | FP arguments | Caller | +---------+----------+-----------------------------------+--------+ |f17 | fa7 | FP arguments | Caller | +---------+----------+-----------------------------------+--------+ |f18 | fs2 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f19 | fs3 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f20 | fs4 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f21 | fs5 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f22 | fs6 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f23 | fs7 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f24 | fs8 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f25 | fs9 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f26 | fs10 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f27 | fs11 | FP saved registers | Callee | +---------+----------+-----------------------------------+--------+ |f28 | ft8 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+ |f29 | ft9 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+ |f30 | ft10 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+ |f31 | ft11 | FP temporaries | Caller | +---------+----------+-----------------------------------+--------+