summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/metag/_longjmp.S
diff options
context:
space:
mode:
authorMarkos Chandras <markos.chandras@imgtec.com>2008-02-05 14:51:48 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2013-03-14 22:45:15 +0100
commit22686a1383c4a4a319eaaa6b16b1a9540114bd66 (patch)
tree04e12086f9187c150ba6a33db0368b9903e50363 /libc/sysdeps/linux/metag/_longjmp.S
parent37439e66a31f251eba39604885f57099a43d943d (diff)
Add support for the Meta architecture
Meta cores are 32-bit, hardware multithreaded, general purpose, embedded processors which also feature a DSP instruction set, and can be found in many digital radios. They are capable of running different operating systems on different hardware threads, for example a digital radio might run RTOSes for DAB decoding and audio decoding on 3 hardware threads, and run Linux on the 4th hardware thread to manage the user interface, networking etc. HTPs are also capable of running SMP Linux on multiple hardware threads. Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/sysdeps/linux/metag/_longjmp.S')
-rw-r--r--libc/sysdeps/linux/metag/_longjmp.S25
1 files changed, 25 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/metag/_longjmp.S b/libc/sysdeps/linux/metag/_longjmp.S
new file mode 100644
index 000000000..54bc71c36
--- /dev/null
+++ b/libc/sysdeps/linux/metag/_longjmp.S
@@ -0,0 +1,25 @@
+! Copyright (C) 2013 Imagination Technologies Ltd.
+
+! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
+
+
+ .text
+ .global ___longjmp
+ .type ___longjmp,function
+
+___longjmp:
+ !! If val is 0, set it to 1
+ CMP D0Ar2,#0
+ ADDZ D0Ar2,D0Ar2,#1
+
+ !! Restore A0/A1 regs
+ MGETL A0.0,A0.1,[D1Ar1++]
+ !! Restore D0/D1 regs
+ MOV A0.3,D1Ar1
+ MGETL D0FrT,D0.5,D0.6,D0.7,[A0.3++]
+ !! Move 2nd argument to return value
+ MOV D0Re0,D0Ar2
+ MOV PC,D1RtP
+ .size ___longjmp,.-___longjmp
+
+libc_hidden_def(__longjmp)