aboutsummaryrefslogtreecommitdiff
path: root/emu/FreeRTOS/asm-mips.S
diff options
context:
space:
mode:
authorbhgv <bhgv.empire@gmail.com>2020-05-12 12:50:49 +0300
committerbhgv <bhgv.empire@gmail.com>2020-05-12 12:50:49 +0300
commit9b5d5f8a4640dbecdc87e5b6e7e95f71018632cf (patch)
treed3135c3861ef93ed2523642d3c5f64c7819b7def /emu/FreeRTOS/asm-mips.S
parent73c13e732072c17f3e584e11a51d1f7dc8d88e32 (diff)
parent31b4edc67b75658ce5e2d41f2fc87331f4b26d49 (diff)
Merge branch 'master' of https://github.com/bhgv/Inferno-OS-bhgv
Diffstat (limited to 'emu/FreeRTOS/asm-mips.S')
-rw-r--r--emu/FreeRTOS/asm-mips.S28
1 files changed, 28 insertions, 0 deletions
diff --git a/emu/FreeRTOS/asm-mips.S b/emu/FreeRTOS/asm-mips.S
new file mode 100644
index 0000000..d2780f6
--- /dev/null
+++ b/emu/FreeRTOS/asm-mips.S
@@ -0,0 +1,28 @@
+#include <sys/asm.h>
+#include <sys/regdef.h>
+#include <asm/cachectl.h>
+
+LEAF(FPsave)
+ cfc1 t0, $31
+ sw t0, 0(a0) /* a0 is argument */
+ j $31
+ END(FPsave)
+
+LEAF(FPrestore)
+ lw t0, 0(a0) /* a0 is argument */
+ ctc1 t0, $31
+ j $31
+ END(FPrestore)
+
+LEAF(_tas)
+ .set noreorder
+1:
+ ll v0,0(a0) /* a0 is argument */
+ or t1, v0, 1
+ sc t1,0(a0)
+ beq t1,zero,1b
+ nop
+ j $31 /* lock held */
+ nop
+ .set reorder
+ END(_tas)