summaryrefslogtreecommitdiff
path: root/lang/sr/patches/patch-au
diff options
context:
space:
mode:
authorhe <he@pkgsrc.org>2018-04-18 08:42:16 +0000
committerhe <he@pkgsrc.org>2018-04-18 08:42:16 +0000
commit61359b39c0d0bebba7521a9d1aa4f3aec0288275 (patch)
tree9e64263cb33cad8cfb61470d53744fcb37860531 /lang/sr/patches/patch-au
parentd9109c661c0d9903580d7f15207ba2998bf41611 (diff)
downloadpkgsrc-61359b39c0d0bebba7521a9d1aa4f3aec0288275.tar.gz
Modernize this so that it builds again (after SSP), and
do the context-shifting in a non-MI manner so it may work on other ports than i386. Bump PKGREVISION.
Diffstat (limited to 'lang/sr/patches/patch-au')
-rw-r--r--lang/sr/patches/patch-au117
1 files changed, 0 insertions, 117 deletions
diff --git a/lang/sr/patches/patch-au b/lang/sr/patches/patch-au
deleted file mode 100644
index beb4a68bd5a..00000000000
--- a/lang/sr/patches/patch-au
+++ /dev/null
@@ -1,117 +0,0 @@
-$NetBSD: patch-au,v 1.3 2005/03/02 13:21:34 is Exp $
-
---- csw/netbsd.c.orig 2005-03-02 13:00:06.000000000 +0000
-+++ csw/netbsd.c
-@@ -0,0 +1,112 @@
-+/*
-+ * netbsd.c -- context switch code for NetBSD 2.
-+ *
-+ * Some Makefile changes are needed to use this code.
-+ */
-+
-+#include <ucontext.h>
-+
-+void sr_stk_underflow(void);
-+void sr_stk_corrupted(void);
-+
-+static void startup(void (*)(void), unsigned long, unsigned long, unsigned long, unsigned long);
-+
-+#ifdef __i386__
-+void pthread__i386_init(void);
-+
-+#define _setcontext_u(uc) (*_md_setcontext_u)(uc)
-+#define _swapcontext_u(oc,nc) (*_md_swapcontext_u)(oc,nc)
-+
-+static void sr_setcontext_u(ucontext_t *);
-+static void sr_swapcontext_u(ucontext_t *, ucontext_t *);
-+
-+void (*_md_getcontext_u) (ucontext_t *);
-+void (*_md_setcontext_u) (ucontext_t *) = sr_setcontext_u;
-+void (*_md_swapcontext_u)(ucontext_t *, ucontext_t *) = sr_swapcontext_u;
-+
-+static void
-+sr_setcontext_u(ucontext_t *uc) {
-+ pthread__i386_init();
-+ _setcontext_u(uc);
-+}
-+
-+static void
-+sr_swapcontext_u(ucontext_t *oldc, ucontext_t *newc) {
-+ pthread__i386_init();
-+ _swapcontext_u(oldc, newc);
-+}
-+#endif
-+
-+
-+/*
-+ * sr_build_context (func, buf, bufsize, arg1, arg2, arg3, arg4)
-+ *
-+ * Build a context that will call func(arg1,arg2,arg3,arg4) when activated
-+ * and will catch an underflow error if func returns. We use an intermediary
-+ * in order to catch that return.
-+ */
-+void
-+sr_build_context (func, buf, bufsize, arg1, arg2, arg3, arg4)
-+void (*func)();
-+char *buf;
-+int bufsize;
-+unsigned long arg1, arg2, arg3, arg4;
-+{
-+ ucontext_t *uc = (ucontext_t *) buf; /* put header at front of buf */
-+
-+ if (0 != getcontext(uc)) { /* initialize context */
-+ sr_stk_corrupted();
-+ }
-+
-+ uc->uc_stack.ss_sp = buf + sizeof (ucontext_t);
-+ uc->uc_stack.ss_size = bufsize - sizeof (ucontext_t);
-+
-+ makecontext (uc, startup, 5, func, arg1, arg2, arg3, arg4);
-+ uc->uc_stack.ss_flags = 0;
-+}
-+
-+/*
-+ * startup (func, a,b,c,d) -- intermediary for startup and underflow detection.
-+ */
-+static void
-+startup (func, arg1, arg2, arg3, arg4)
-+void (*func)();
-+unsigned long arg1, arg2, arg3, arg4;
-+{
-+ (*func) (arg1, arg2, arg3, arg4);
-+ sr_stk_underflow();
-+}
-+
-+
-+
-+/*
-+ * sr_chg_context (newctx, oldctx) -- change contexts.
-+ */
-+void
-+sr_chg_context (new, old)
-+char *new, *old;
-+{
-+ ucontext_t *oldu, *newu;
-+ newu = (ucontext_t *)new;
-+
-+ if (old) {
-+ oldu = (ucontext_t *)old;
-+ _swapcontext_u(oldu, newu);
-+ } else {
-+ _setcontext_u(newu);
-+ }
-+}
-+
-+
-+
-+/*
-+ * sr_check_stk (stk) -- check for stack overflow.
-+ *
-+ * We have no idea of how to do that, so we do nothing.
-+ */
-+void
-+sr_check_stk(stk)
-+char *stk;
-+{
-+ /* nothing */
-+}