Register Guide
RISC-V frm / frm Register: Floating-point dynamic rounding mode
frm is the floating-point dynamic rounding mode register, setting rounding direction for FP operations (RNE/RTZ/RDN/RUP/RMM).
ABI name: frm; physical register: frm.
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 frmABI Name frmSave Rule Saved by software when context requires
Role
Floating-point dynamic rounding mode
Convention
Architectural state / CSR semantics
Remember This First
t* registers are caller-saved, so callees may overwrite them.
psABI Reference
ABI register
frm is the floating-point dynamic rounding mode register, setting rounding direction for FP operations (RNE/RTZ/RDN/RUP/RMM).
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