Appendix A: Calling Convention for Vector State (Not authoritative - Placeholder Only)
| This Appendix is only a placeholder to help explain the conventions used in the code examples, and is not considered frozen or part of the ratification process. The official RISC-V psABI document is being expanded to specify the vector calling conventions. |
In the RISC-V psABI, the vector registers v0-v31 are all caller-saved.
The vl and vtype CSRs are also caller-saved.
Procedures may assume that vstart is zero upon entry. Procedures may
assume that vstart is zero upon return from a procedure call.
Application software should normally not write vstart explicitly.
Any procedure that does explicitly write vstart to a nonzero value must
zero vstart before either returning or calling another procedure.
|
The vxrm and vxsat fields of vcsr have thread storage duration.
Executing a system call causes all caller-saved vector registers
(v0-v31, vl, vtype) and vstart to become unspecified.
| This scheme allows system calls that cause context switches to avoid saving and later restoring the vector registers. |
| Most OSes will choose to either leave these registers intact or reset them to their initial state to avoid leaking information across process boundaries. |