EABI Name Description Saver x0 zero Hard-wired zero value - x1 ra Return address Caller x2 sp Stack pointer Callee x3 gp Global pointer - x4 tp Thread pointer - x5 t0 Temporary/link register Caller x6 s3 Saved register Callee x7 s4 Saved register Callee x8 s0/fp Saved register/frame pointer Callee x9 s1 Saved register Callee x10 a0 Argument/return value Caller x11 a1 Argument/return value Caller x12 a2 Argument Caller x13 a3 Argument Caller x14 s2 Saved register Callee x15 t1 Temporary Caller x16-x31 s5-s20 Saved registers Callee reg ABI Use by convention Preserved? x0 zero hardwired to 0, ignores writes n/a x1 ra return address for jumps no x2 sp stack pointer yes x3 gp global pointer n/a x4 tp thread pointer n/a x5 t0 temporary register 0 no x6 t1 temporary register 1 no x7 t2 temporary register 2 no x8 s0/fp saved register 0 or frame pointer yes x9 s1 saved register 1 yes x10 a0 argument/return value 0 no x11 a1 argument/return value 1 no x12 a2 argument 2 no x13 a3 argument 3 no x14 a4 argument 4 no x15 a5 argument 5 no x16 a6 argument 6 no x17 a7 argument 7 no x18 s2 saved register 2 yes x19 s3 saved register 3 yes x20 s4 saved register 4 yes x21 s5 saved register 5 yes x22 s6 saved register 6 yes x23 s7 saved register 7 yes x24 s8 saved register 8 yes x25 s9 saved register 9 yes x26 s10 saved register 10 yes x27 s11 saved register 11 yes x28 t3 temporary register 3 no x29 t4 temporary register 4 no x30 t5 temporary register 5 no x31 t6 temporary register 6 no