summaryrefslogtreecommitdiff
path: root/src/sys_cacheflush.S
diff options
context:
space:
mode:
authorToad King2012-06-14 03:21:06 -0400
committerToad King2012-06-14 03:21:06 -0400
commit6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119 (patch)
tree885cf7f507139b795ba7b2a6fb829dc044da39dd /src/sys_cacheflush.S
downloadsnes9x2002-6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119.tar.gz
snes9x2002-6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119.tar.bz2
snes9x2002-6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119.zip
initial pocketsnes commit
Diffstat (limited to 'src/sys_cacheflush.S')
-rw-r--r--src/sys_cacheflush.S29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/sys_cacheflush.S b/src/sys_cacheflush.S
new file mode 100644
index 0000000..d26f81a
--- /dev/null
+++ b/src/sys_cacheflush.S
@@ -0,0 +1,29 @@
+@ vim:filetype=armasm
+#include <sys/syscall.h>
+
+
+.global sys_cacheflush @ void *start_addr, void *end_addr
+
+sys_cacheflush:
+ mov r2, #0
+#ifdef __ARM_EABI__
+ /* EABI version */
+ str r7, [sp, #-4]!
+ mov r7, #(__ARM_NR_cacheflush & 0xff)
+ orr r7, r7, #(__ARM_NR_cacheflush & 0x00ff00)
+ orr r7, r7, #(__ARM_NR_cacheflush & 0xff0000)
+ swi 0
+ ldr r7, [sp], #4
+#else
+ /* OABI */
+ swi __ARM_NR_cacheflush
+#endif
+ bx lr
+
+.global spend_cycles
+spend_cycles:
+ mov r0,r0,lsr #2
+ 0:subs r0, r0, #1
+ bne 0b
+ bx lr
+