summaryrefslogtreecommitdiffstats
path: root/cpukit/score/cpu/riscv/riscv-context-volatile-clobber.S
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/cpu/riscv/riscv-context-volatile-clobber.S')
-rw-r--r--cpukit/score/cpu/riscv/riscv-context-volatile-clobber.S46
1 files changed, 46 insertions, 0 deletions
diff --git a/cpukit/score/cpu/riscv/riscv-context-volatile-clobber.S b/cpukit/score/cpu/riscv/riscv-context-volatile-clobber.S
index 9d3d39b32d..628bd1a467 100644
--- a/cpukit/score/cpu/riscv/riscv-context-volatile-clobber.S
+++ b/cpukit/score/cpu/riscv/riscv-context-volatile-clobber.S
@@ -36,6 +36,52 @@
PUBLIC(_CPU_Context_volatile_clobber)
SYM(_CPU_Context_volatile_clobber):
+#if __riscv_flen > 0
+ andi t0, a0, 0x1f
+ fsflags t0
+
+ addi t0, a0, 15
+ FMVYX ft0, t0
+ addi t0, a0, 16
+ FMVYX ft1, t0
+ addi t0, a0, 17
+ FMVYX ft2, t0
+ addi t0, a0, 18
+ FMVYX ft3, t0
+ addi t0, a0, 19
+ FMVYX ft4, t0
+ addi t0, a0, 20
+ FMVYX ft5, t0
+ addi t0, a0, 21
+ FMVYX ft6, t0
+ addi t0, a0, 22
+ FMVYX ft7, t0
+ addi t0, a0, 23
+ FMVYX ft8, t0
+ addi t0, a0, 24
+ FMVYX ft9, t0
+ addi t0, a0, 25
+ FMVYX ft10, t0
+ addi t0, a0, 26
+ FMVYX ft11, t0
+ addi t0, a0, 27
+ FMVYX fa0, t0
+ addi t0, a0, 28
+ FMVYX fa1, t0
+ addi t0, a0, 29
+ FMVYX fa2, t0
+ addi t0, a0, 30
+ FMVYX fa3, t0
+ addi t0, a0, 31
+ FMVYX fa4, t0
+ addi t0, a0, 32
+ FMVYX fa5, t0
+ addi t0, a0, 33
+ FMVYX fa6, t0
+ addi t0, a0, 34
+ FMVYX fa7, t0
+#endif /* __riscv_flen */
+
addi a1, a0, 1
addi a2, a0, 2
addi a3, a0, 3