From 61359b39c0d0bebba7521a9d1aa4f3aec0288275 Mon Sep 17 00:00:00 2001 From: he Date: Wed, 18 Apr 2018 08:42:16 +0000 Subject: 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. --- lang/sr/patches/patch-au | 117 ----------------------------------------------- 1 file changed, 117 deletions(-) delete mode 100644 lang/sr/patches/patch-au (limited to 'lang/sr/patches/patch-au') 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 -+ -+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 */ -+} -- cgit v1.2.3