summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2003-06-26 05:40:15 +0000
committermarcel <marcel@FreeBSD.org>2003-06-26 05:40:15 +0000
commitd53d28ab16ab1b4e86f0c6c0dad48423dd07711b (patch)
tree6961d8cc8ec08d91fa1da3383ce9e61a51cf3320 /lib
parentb29d32135927942eca81d93fb29f0480b41f49be (diff)
downloadFreeBSD-src-d53d28ab16ab1b4e86f0c6c0dad48423dd07711b.zip
FreeBSD-src-d53d28ab16ab1b4e86f0c6c0dad48423dd07711b.tar.gz
Implement _ia64_enter_uts(). The purpose of this function is to switch
the register stack and memory stack and call the function given to it. While here, provide empty, non-working, stubs for the context functions (_ia64_save_context() and _ia64_restore_context()) so that anyone can at least compile libkse from CVS sources. Real implementations will follow soon.
Diffstat (limited to 'lib')
-rw-r--r--lib/libkse/arch/ia64/Makefile.inc2
-rw-r--r--lib/libkse/arch/ia64/ia64/context.S40
-rw-r--r--lib/libkse/arch/ia64/ia64/enter_uts.S60
-rw-r--r--lib/libpthread/arch/ia64/Makefile.inc2
-rw-r--r--lib/libpthread/arch/ia64/ia64/context.S40
-rw-r--r--lib/libpthread/arch/ia64/ia64/enter_uts.S60
6 files changed, 202 insertions, 2 deletions
diff --git a/lib/libkse/arch/ia64/Makefile.inc b/lib/libkse/arch/ia64/Makefile.inc
index 4b8d9d2..c0e4c47 100644
--- a/lib/libkse/arch/ia64/Makefile.inc
+++ b/lib/libkse/arch/ia64/Makefile.inc
@@ -2,4 +2,4 @@
.PATH: ${.CURDIR}/arch/${MACHINE_ARCH}/${MACHINE_ARCH}
-SRCS+= thr_enter_uts.S thr_switch.S
+SRCS+= context.S enter_uts.S
diff --git a/lib/libkse/arch/ia64/ia64/context.S b/lib/libkse/arch/ia64/ia64/context.S
new file mode 100644
index 0000000..af5a786
--- /dev/null
+++ b/lib/libkse/arch/ia64/ia64/context.S
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2003 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * 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 AUTHOR ``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 AUTHOR 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.
+ */
+
+#include <machine/asm.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * int _ia64_restore_context(mcontext_t *mc, intptr_t val, intptr_t *loc);
+ */
+ENTRY(_ia64_restore_context, 3)
+END(_ia64_restore_context)
+
+/*
+ * int _ia64_save_context(mcontext_t *mc);
+ */
+ENTRY(_ia64_save_context, 1)
+END(_ia64_save_context)
diff --git a/lib/libkse/arch/ia64/ia64/enter_uts.S b/lib/libkse/arch/ia64/ia64/enter_uts.S
new file mode 100644
index 0000000..5df4d93
--- /dev/null
+++ b/lib/libkse/arch/ia64/ia64/enter_uts.S
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2003 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * 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 AUTHOR ``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 AUTHOR 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.
+ */
+
+#include <machine/asm.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * void _ia64_enter_uts(kse_func_t uts, struct kse_mailbox *km, void *stack,
+ * size_t stacksz);
+ */
+ENTRY(_ia64_enter_uts, 4)
+{ .mmi
+ ld8 r14=[in0],8
+ mov ar.rsc=0xc
+ add r15=in2,in3
+ ;;
+}
+{ .mmi
+ flushrs
+ ld8 r1=[in0]
+ mov b7=r14
+ ;;
+}
+{ .mii
+ mov ar.bspstore=in2
+ add sp=-16,r15
+ mov rp=r14
+ ;;
+}
+{ .mib
+ mov ar.rsc=0xf
+ mov in0=in1
+ br.cond.sptk b7
+ ;;
+}
+1: br.cond.sptk 1b
+END(_ia64_enter_uts)
diff --git a/lib/libpthread/arch/ia64/Makefile.inc b/lib/libpthread/arch/ia64/Makefile.inc
index 4b8d9d2..c0e4c47 100644
--- a/lib/libpthread/arch/ia64/Makefile.inc
+++ b/lib/libpthread/arch/ia64/Makefile.inc
@@ -2,4 +2,4 @@
.PATH: ${.CURDIR}/arch/${MACHINE_ARCH}/${MACHINE_ARCH}
-SRCS+= thr_enter_uts.S thr_switch.S
+SRCS+= context.S enter_uts.S
diff --git a/lib/libpthread/arch/ia64/ia64/context.S b/lib/libpthread/arch/ia64/ia64/context.S
new file mode 100644
index 0000000..af5a786
--- /dev/null
+++ b/lib/libpthread/arch/ia64/ia64/context.S
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2003 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * 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 AUTHOR ``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 AUTHOR 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.
+ */
+
+#include <machine/asm.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * int _ia64_restore_context(mcontext_t *mc, intptr_t val, intptr_t *loc);
+ */
+ENTRY(_ia64_restore_context, 3)
+END(_ia64_restore_context)
+
+/*
+ * int _ia64_save_context(mcontext_t *mc);
+ */
+ENTRY(_ia64_save_context, 1)
+END(_ia64_save_context)
diff --git a/lib/libpthread/arch/ia64/ia64/enter_uts.S b/lib/libpthread/arch/ia64/ia64/enter_uts.S
new file mode 100644
index 0000000..5df4d93
--- /dev/null
+++ b/lib/libpthread/arch/ia64/ia64/enter_uts.S
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2003 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * 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 AUTHOR ``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 AUTHOR 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.
+ */
+
+#include <machine/asm.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * void _ia64_enter_uts(kse_func_t uts, struct kse_mailbox *km, void *stack,
+ * size_t stacksz);
+ */
+ENTRY(_ia64_enter_uts, 4)
+{ .mmi
+ ld8 r14=[in0],8
+ mov ar.rsc=0xc
+ add r15=in2,in3
+ ;;
+}
+{ .mmi
+ flushrs
+ ld8 r1=[in0]
+ mov b7=r14
+ ;;
+}
+{ .mii
+ mov ar.bspstore=in2
+ add sp=-16,r15
+ mov rp=r14
+ ;;
+}
+{ .mib
+ mov ar.rsc=0xf
+ mov in0=in1
+ br.cond.sptk b7
+ ;;
+}
+1: br.cond.sptk 1b
+END(_ia64_enter_uts)
OpenPOWER on IntegriCloud