[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH 1/2] libc: setjmp.S nach arch/i386 verschieben
! libc: setjmp ist nicht wirklich plattformunabhaengig, das muss in ein
arch-Verzeichnis
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/lib/arch/i386/setjmp.S | 92 ++++++++++++++++++++++++++++++++++++++++++++
src/lib/setjmp.S | 92 --------------------------------------------
2 files changed, 92 insertions(+), 92 deletions(-)
create mode 100644 src/lib/arch/i386/setjmp.S
delete mode 100644 src/lib/setjmp.S
diff --git a/src/lib/arch/i386/setjmp.S b/src/lib/arch/i386/setjmp.S
new file mode 100644
index 0000000..5201433
--- /dev/null
+++ b/src/lib/arch/i386/setjmp.S
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2007 The tyndur Project. All rights reserved.
+ *
+ * This code is derived from software contributed to the tyndur Project
+ * by Mathias Gottschlag.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+ .global setjmp
+ .global longjmp
+setjmp:
+ pushl %ebp
+ movl %esp, %ebp
+
+ pushl %edi
+ movl 8(%ebp), %edi
+
+ //edi = Sprungdaten (jmp_buf)
+ //Sichere Register
+
+ movl %eax, 0(%edi)
+ movl %ebx, 4(%edi)
+ movl %ecx, 8(%edi)
+ movl %edx, 12(%edi)
+ movl %esi, 16(%edi)
+
+ //Sichere edi
+ movl -4(%ebp), %eax
+ movl %eax, 20(%edi)
+
+ //Sichere Rest des Stack Frames
+ //Vorheriger ebp
+ movl 0(%ebp), %eax
+ movl %eax, 24(%edi)
+ //Beginn des Stack Frames
+ movl %esp, %eax
+ addl $12, %eax
+ movl %eax, 28(%edi)
+ //Rücksprungaddresse
+ movl 4(%ebp), %eax
+ movl %eax, 32(%edi)
+
+ popl %edi
+ movl $0, %eax
+ leave
+ ret
+
+longjmp:
+ pushl %ebp
+ movl %esp, %ebp
+
+ //edi = Sprungdaten (jmp_buf)
+ movl 8(%ebp), %edi
+ //Zurückgabewert in die Sprungdaten schreiben
+ movl 12(%ebp), %eax
+ movl %eax, 0(%edi)
+
+ //Register wiederherstellen
+ movl 24(%edi), %ebp
+
+ movl 28(%edi), %esp
+
+ pushl 32(%edi)
+
+ movl 0(%edi), %eax
+ movl 4(%edi), %ebx
+ movl 8(%edi), %ecx
+ movl 12(%edi), %edx
+ movl 16(%edi), %esi
+ movl 20(%edi), %edi
+
+ ret
diff --git a/src/lib/setjmp.S b/src/lib/setjmp.S
deleted file mode 100644
index 5201433..0000000
--- a/src/lib/setjmp.S
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2007 The tyndur Project. All rights reserved.
- *
- * This code is derived from software contributed to the tyndur Project
- * by Mathias Gottschlag.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
- .global setjmp
- .global longjmp
-setjmp:
- pushl %ebp
- movl %esp, %ebp
-
- pushl %edi
- movl 8(%ebp), %edi
-
- //edi = Sprungdaten (jmp_buf)
- //Sichere Register
-
- movl %eax, 0(%edi)
- movl %ebx, 4(%edi)
- movl %ecx, 8(%edi)
- movl %edx, 12(%edi)
- movl %esi, 16(%edi)
-
- //Sichere edi
- movl -4(%ebp), %eax
- movl %eax, 20(%edi)
-
- //Sichere Rest des Stack Frames
- //Vorheriger ebp
- movl 0(%ebp), %eax
- movl %eax, 24(%edi)
- //Beginn des Stack Frames
- movl %esp, %eax
- addl $12, %eax
- movl %eax, 28(%edi)
- //Rücksprungaddresse
- movl 4(%ebp), %eax
- movl %eax, 32(%edi)
-
- popl %edi
- movl $0, %eax
- leave
- ret
-
-longjmp:
- pushl %ebp
- movl %esp, %ebp
-
- //edi = Sprungdaten (jmp_buf)
- movl 8(%ebp), %edi
- //Zurückgabewert in die Sprungdaten schreiben
- movl 12(%ebp), %eax
- movl %eax, 0(%edi)
-
- //Register wiederherstellen
- movl 24(%edi), %ebp
-
- movl 28(%edi), %esp
-
- pushl 32(%edi)
-
- movl 0(%edi), %eax
- movl 4(%edi), %ebx
- movl 8(%edi), %ecx
- movl 12(%edi), %edx
- movl 16(%edi), %esi
- movl 20(%edi), %edi
-
- ret
--
1.6.0.2