summaryrefslogtreecommitdiff
path: root/apps/codecs/lib/setjmp_mips.S
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2010-08-24 12:38:42 +0000
committerThomas Martitz <kugel@rockbox.org>2010-08-24 12:38:42 +0000
commit46454ac2a8a7d693ac135f0d4a9461bbcf24eea9 (patch)
tree86488784b36537f382ccd448c6684d60f1540527 /apps/codecs/lib/setjmp_mips.S
parent20de4c55a2ddfa802a01cc353884d73a934bf7ba (diff)
downloadrockbox-46454ac2a8a7d693ac135f0d4a9461bbcf24eea9.zip
rockbox-46454ac2a8a7d693ac135f0d4a9461bbcf24eea9.tar.gz
rockbox-46454ac2a8a7d693ac135f0d4a9461bbcf24eea9.tar.bz2
rockbox-46454ac2a8a7d693ac135f0d4a9461bbcf24eea9.tar.xz
Move setjmp to lib and add setjmp for sh (imported from newlib) and compile it as separate library.
It's used by both, plugins and codecs, and sh/hwcodec doesn't compile codecs so it doesn't fit into sources. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27869 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/lib/setjmp_mips.S')
-rw-r--r--apps/codecs/lib/setjmp_mips.S101
1 files changed, 0 insertions, 101 deletions
diff --git a/apps/codecs/lib/setjmp_mips.S b/apps/codecs/lib/setjmp_mips.S
deleted file mode 100644
index 7fa127a..0000000
--- a/apps/codecs/lib/setjmp_mips.S
+++ /dev/null
@@ -1,101 +0,0 @@
-#include "config.h"
-#include "mips.h"
-
-/* This is a simple version of setjmp and longjmp for MIPS 32 and 64.
-
- Ian Lance Taylor, Cygnus Support, 13 May 1993. */
-
-#ifdef __mips16
-/* This file contains 32 bit assembly code. */
- .set nomips16
-#endif
-
-#define GPR_LAYOUT \
- GPR_OFFSET ($16, 0); \
- GPR_OFFSET ($17, 1); \
- GPR_OFFSET ($18, 2); \
- GPR_OFFSET ($19, 3); \
- GPR_OFFSET ($20, 4); \
- GPR_OFFSET ($21, 5); \
- GPR_OFFSET ($22, 6); \
- GPR_OFFSET ($23, 7); \
- GPR_OFFSET ($29, 8); \
- GPR_OFFSET ($30, 9); \
- GPR_OFFSET ($31, 10)
-
-#define NUM_GPRS_SAVED 11
-
-#ifdef __mips_hard_float
-#define FPR_LAYOUT \
- FPR_OFFSET ($f20, 0); \
- FPR_OFFSET ($f21, 1); \
- FPR_OFFSET ($f22, 2); \
- FPR_OFFSET ($f23, 3); \
- FPR_OFFSET ($f24, 4); \
- FPR_OFFSET ($f25, 5); \
- FPR_OFFSET ($f26, 6); \
- FPR_OFFSET ($f27, 7); \
- FPR_OFFSET ($f28, 8); \
- FPR_OFFSET ($f29, 9); \
- FPR_OFFSET ($f30, 10); \
- FPR_OFFSET ($f31, 11)
-#else
-#define FPR_LAYOUT
-#endif
-
-#if CPU_MIPS == 64
-#define BYTES_PER_WORD 8
-#define LOAD_GPR ld
-#define LOAD_FPR ldc1
-#define STORE_GPR sd
-#define STORE_FPR sdc1
-#else
-#define BYTES_PER_WORD 4
-#define LOAD_GPR lw
-#define LOAD_FPR lwc1
-#define STORE_GPR sw
-#define STORE_FPR swc1
-#endif
-
-#define GPOFF(INDEX) (INDEX * BYTES_PER_WORD)
-#define FPOFF(INDEX) ((INDEX + NUM_GPRS_SAVED) * BYTES_PER_WORD)
-
-/* int setjmp (jmp_buf); */
- .globl setjmp
- .ent setjmp
-setjmp:
- .frame sp, 0, ra
-
-#define GPR_OFFSET(REG, INDEX) STORE_GPR REG,GPOFF(INDEX)(a0)
-#define FPR_OFFSET(REG, INDEX) STORE_FPR REG,FPOFF(INDEX)(a0)
- GPR_LAYOUT
- FPR_LAYOUT
-#undef GPR_OFFSET
-#undef FPR_OFFSET
-
- move v0, $0
- j ra
-
- .end setjmp
-
-/* volatile void longjmp (jmp_buf, int); */
- .globl longjmp
- .ent longjmp
-longjmp:
- .frame sp, 0, ra
-
-#define GPR_OFFSET(REG, INDEX) LOAD_GPR REG,GPOFF(INDEX)(a0)
-#define FPR_OFFSET(REG, INDEX) LOAD_FPR REG,FPOFF(INDEX)(a0)
- GPR_LAYOUT
- FPR_LAYOUT
-#undef GPR_OFFSET
-#undef FPR_OFFSET
-
- bne a1, $0, 1f
- li a1, 1
-1:
- move v0, a1
- j ra
-
- .end longjmp
-