Register Guide
RISC-V vstart / vstart Register: Vector Start CSR
vstart records the element index from which a vector instruction resumes; software normally restores it to 0 after exception handling.
ABI name: vstart; physical register: vstart.
Save rule: Saved by software when context requires.
Read it through its psABI role first, then inspect how each instruction reads or writes it.
Physical Name vstartABI Name vstartSave Rule Saved by software when context requires
Role
Vector Start CSR
Convention
Architectural state / CSR semantics
Remember This First
t* registers are caller-saved, so callees may overwrite them.
psABI Reference
ABI register
vstart records the element index from which a vector instruction resumes; software normally restores it to 0 after exception handling.
Preserved across calls: Saved by software when context requires
RISC-V psABI integer register conventionWhen It Fits Best
- - Hold short-lived temporary computation results.
- - Use them for local computations that do not need to survive calls.
- - Use them as caller-managed scratch registers.
When Not To Use It This Way
- - Do not keep values in t* across a call unless you save them yourself first.
- - Do not expect callees to restore t* for you.
What Happens Around A Call
1
t* registers are caller-saved, so callees may overwrite them.
2
If the caller still needs a t* value after a call, it must save it in advance.
Protect Temporary Values Before A Call
Examples explain the rule, not a complete programaddi t0, a0, 1
# If t0 is needed after the call, save it to an ABI-valid location first
call foo
# restore t0 from that saved location after the call returns