summaryrefslogtreecommitdiff
path: root/databases
diff options
context:
space:
mode:
authorbriggs <briggs@pkgsrc.org>2001-01-10 06:03:13 +0000
committerbriggs <briggs@pkgsrc.org>2001-01-10 06:03:13 +0000
commitc332e21f5a24971ff3c02adb60f1c6670cd42987 (patch)
tree41995567224a482d4571ad4ca6a43020b35d9434 /databases
parente66f7596ea9e63ae03c9dbe08f4b80084563dcb3 (diff)
downloadpkgsrc-c332e21f5a24971ff3c02adb60f1c6670cd42987.tar.gz
Add support for NetBSD-*-powerpc to embedded mit-pthreads, and enable
this package for same.
Diffstat (limited to 'databases')
-rw-r--r--databases/mysql-server/Makefile5
-rw-r--r--databases/mysql-server/files/patch-sum9
-rw-r--r--databases/mysql-server/patches/patch-ae22
-rw-r--r--databases/mysql-server/patches/patch-af19
-rw-r--r--databases/mysql-server/patches/patch-ag19
-rw-r--r--databases/mysql-server/patches/patch-ah234
-rw-r--r--databases/mysql-server/patches/patch-ai116
-rw-r--r--databases/mysql-server/patches/patch-aj192
-rw-r--r--databases/mysql-server/patches/patch-ak52
9 files changed, 665 insertions, 3 deletions
diff --git a/databases/mysql-server/Makefile b/databases/mysql-server/Makefile
index cbe4b6f4f3a..e9f7a634a37 100644
--- a/databases/mysql-server/Makefile
+++ b/databases/mysql-server/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.14 2001/01/09 18:39:44 bad Exp $
+# $NetBSD: Makefile,v 1.15 2001/01/10 06:03:13 briggs Exp $
#
DISTNAME= mysql-3.22.32
@@ -34,7 +34,8 @@ CFLAGS+= -Dunix
# platforms on which included mit-pthreads is usable
ONLY_FOR_PLATFORM= NetBSD-*-alpha NetBSD-*-arm32 NetBSD-*-i386 \
- NetBSD-*-sparc NetBSD-*-m68k SunOS-*-sparc
+ NetBSD-*-sparc NetBSD-*-m68k SunOS-*-sparc \
+ NetBSD-*-powerpc
USE_PERL5=
diff --git a/databases/mysql-server/files/patch-sum b/databases/mysql-server/files/patch-sum
index b190d4876d1..ced4a477bf8 100644
--- a/databases/mysql-server/files/patch-sum
+++ b/databases/mysql-server/files/patch-sum
@@ -1,6 +1,13 @@
-$NetBSD: patch-sum,v 1.12 2000/12/24 12:27:15 skrll Exp $
+$NetBSD: patch-sum,v 1.13 2001/01/10 06:03:14 briggs Exp $
MD5 (patch-aa) = f9dc5acd38bc7bcfb5f853140cd02cf9
MD5 (patch-ab) = d6cde586e7f7eb2daaee47e201cc4fbf
MD5 (patch-ac) = 90ea5395eaac74614946b001661f6e81
MD5 (patch-ad) = a4b2108e220ffe06ed3bcd75ec5e57c8
+MD5 (patch-ae) = 19181f32ca7f83b72b65180e3bc4b6a6
+MD5 (patch-af) = eebcb40a8871e4ca6df32d6844987215
+MD5 (patch-ag) = f701becb5090574077ec6573b6f3d969
+MD5 (patch-ah) = 952b9d2d64ded14b9b11336e1310f82f
+MD5 (patch-ai) = aaff83e3e87b88e6756eb1cca372c770
+MD5 (patch-aj) = e5bf4e0f4e6c896f655686e4d148cce3
+MD5 (patch-ak) = 1d623f0c081871b9b81a988f33ac9548
diff --git a/databases/mysql-server/patches/patch-ae b/databases/mysql-server/patches/patch-ae
new file mode 100644
index 00000000000..79c02fb73bb
--- /dev/null
+++ b/databases/mysql-server/patches/patch-ae
@@ -0,0 +1,22 @@
+$NetBSD: patch-ae,v 1.1 2001/01/10 06:03:14 briggs Exp $
+
+*** mit-pthreads/config/config.guess.orig Thu Dec 30 19:15:51 1999
+--- mit-pthreads/config/config.guess Tue Jan 9 22:43:12 2001
+***************
+*** 295,301 ****
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit 0 ;;
+ *:NetBSD:*:*)
+! echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ exit 0 ;;
+ *:OpenBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+--- 295,302 ----
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit 0 ;;
+ *:NetBSD:*:*)
+! UNAME_PROCESSOR=`uname -p 2>/dev/null` || UNAME_PROCESSOR=$UNAME_MACHINE
+! echo ${UNAME_PROCESSOR}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ exit 0 ;;
+ *:OpenBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
diff --git a/databases/mysql-server/patches/patch-af b/databases/mysql-server/patches/patch-af
new file mode 100644
index 00000000000..f5f2469916d
--- /dev/null
+++ b/databases/mysql-server/patches/patch-af
@@ -0,0 +1,19 @@
+$NetBSD: patch-af,v 1.1 2001/01/10 06:03:14 briggs Exp $
+
+*** mit-pthreads/config/configure.orig Thu Dec 30 19:15:51 1999
+--- mit-pthreads/config/configure Tue Jan 9 22:41:32 2001
+***************
+*** 1211,1216 ****
+--- 1211,1222 ----
+ # hpux-9.03.mk seems to be missing; what should this be?
+ except="fork"
+ ;;
++ powerpc-*-netbsd1.*)
++ name=powerpc-netbsd
++ sysincludes=netbsd-1.1
++ except="fork lseek ftruncate pipe fstat"
++ available_syscalls="sigprocmask sigaction sigsuspend"
++ ;;
+ sparc-*-sunos4.1.3* | sparc-*-sunos4.1.4*)
+ name=sparc-sunos-4.1.3
+ sysincludes=sunos-4.1.3
diff --git a/databases/mysql-server/patches/patch-ag b/databases/mysql-server/patches/patch-ag
new file mode 100644
index 00000000000..744b79c7bd6
--- /dev/null
+++ b/databases/mysql-server/patches/patch-ag
@@ -0,0 +1,19 @@
+$NetBSD: patch-ag,v 1.1 2001/01/10 06:03:14 briggs Exp $
+
+*** mit-pthreads/config/configure.in.orig Tue Jan 9 21:34:16 2001
+--- mit-pthreads/config/configure.in Tue Jan 9 22:41:49 2001
+***************
+*** 174,179 ****
+--- 174,185 ----
+ # hpux-9.03.mk seems to be missing; what should this be?
+ except="fork"
+ ;;
++ powerpc-*-netbsd1.*)
++ name=powerpc-netbsd
++ sysincludes=netbsd-1.1
++ except="fork lseek ftruncate pipe fstat"
++ available_syscalls="sigprocmask sigaction sigsuspend"
++ ;;
+ sparc-*-sunos4.1.3* | sparc-*-sunos4.1.4*)
+ name=sparc-sunos-4.1.3
+ sysincludes=sunos-4.1.3
diff --git a/databases/mysql-server/patches/patch-ah b/databases/mysql-server/patches/patch-ah
new file mode 100644
index 00000000000..6f8f876d5e1
--- /dev/null
+++ b/databases/mysql-server/patches/patch-ah
@@ -0,0 +1,234 @@
+$NetBSD: patch-ah,v 1.5 2001/01/10 06:03:15 briggs Exp $
+
+*** /dev/null Wed Dec 31 19:00:00 1969
+--- mit-pthreads/machdep/engine-powerpc-netbsd.c Tue Jan 9 22:35:36 2001
+***************
+*** 0 ****
+--- 1,227 ----
++ /* ==== machdep.c ============================================================
++ * Copyright (c) 1993, 1994 Chris Provenzano, proven@athena.mit.edu
++ *
++ * Description : Machine dependent functions for NetBSD/PowerPC (1.5+)
++ *
++ * 1.00 93/08/04 proven
++ * -Started coding this file.
++ *
++ * 2001/01/10 briggs
++ * -Modified to make it go with NetBSD/PowerPC
++ */
++
++ #ifndef lint
++ static const char rcsid[] = "engine-alpha-osf1.c,v 1.4.4.1 1995/12/13 05:41:37 proven Exp";
++ #endif
++
++ #include <pthread.h>
++ #include <sys/types.h>
++ #include <sys/socket.h>
++ #include <sys/syscall.h>
++ #include <stdlib.h>
++ #include <fcntl.h>
++ #include <stdio.h>
++
++ /* ==========================================================================
++ * machdep_pthread_start()
++ */
++ void machdep_pthread_start(void)
++ {
++ context_switch_done();
++ pthread_sched_resume ();
++
++ /* XXXMLG
++ * This is EXTREMELY bogus, but it seems that this function is called
++ * with the pthread kernel locked. If this happens, __errno() will
++ * return the wrong address until after the first context switch.
++ *
++ * Clearly there is a leak of pthread_kernel somewhere, but until
++ * it is found, we force a context switch here, just before calling
++ * the thread start routine. When we return from pthread_yield
++ * the kernel will be unlocked.
++ */
++ pthread_yield();
++
++ /* Run current threads start routine with argument */
++ pthread_exit(pthread_run->machdep_data.start_routine
++ (pthread_run->machdep_data.start_argument));
++
++ /* should never reach here */
++ PANIC();
++ }
++
++ /* ==========================================================================
++ * __machdep_pthread_create()
++ */
++ void __machdep_pthread_create(struct machdep_pthread *machdep_pthread,
++ void *(* start_routine)(void *), void *start_argument,
++ long stack_size, long nsec, long flags)
++ {
++ machdep_pthread->start_routine = start_routine;
++ machdep_pthread->start_argument = start_argument;
++
++ machdep_pthread->machdep_timer.it_value.tv_sec = 0;
++ machdep_pthread->machdep_timer.it_interval.tv_sec = 0;
++ machdep_pthread->machdep_timer.it_interval.tv_usec = 0;
++ machdep_pthread->machdep_timer.it_value.tv_usec = nsec / 1000;
++
++ /* Set up new stack frame so that it looks like it returned from a
++ longjmp() to the beginning of machdep_pthread_start(). */
++ /* state is sigmask, then r8-r31 where r11 is the LR
++ * So, istate[3] is r10, which is the SP
++ * So, istate[4] is r11, which is the LR
++ * So, istate[5] is r12, which is the CR
++ */
++ machdep_pthread->machdep_istate[4] = (long)machdep_pthread_start;
++ machdep_pthread->machdep_istate[5] = 0;
++
++ /* PowerPC stack starts high and builds down, and needs to be 16-byte
++ aligned. */
++ machdep_pthread->machdep_istate[3] =
++ ((long) machdep_pthread->machdep_stack + stack_size) & ~0xf;
++ }
++
++ /* ==========================================================================
++ * machdep_save_state()
++ */
++ int machdep_save_state(void)
++ {
++ return( _setjmp(pthread_run->machdep_data.machdep_istate) );
++ }
++
++ void machdep_restore_state(void)
++ {
++ _longjmp(pthread_run->machdep_data.machdep_istate, 1);
++ }
++
++ void machdep_save_float_state (struct pthread *pthread)
++ {
++ __machdep_save_fp_state(pthread->machdep_data.machdep_fstate);
++ }
++
++ void machdep_restore_float_state (void)
++ {
++ __machdep_restore_fp_state(pthread_run->machdep_data.machdep_fstate);
++ }
++
++ /* ==========================================================================
++ * machdep_set_thread_timer()
++ */
++ void machdep_set_thread_timer(struct machdep_pthread *machdep_pthread)
++ {
++ if (setitimer(ITIMER_VIRTUAL, &(machdep_pthread->machdep_timer), NULL)) {
++ PANIC();
++ }
++ }
++
++ /* ==========================================================================
++ * machdep_unset_thread_timer()
++ */
++ void machdep_unset_thread_timer(struct machdep_pthread *machdep_pthread)
++ {
++ struct itimerval zeroval = { { 0, 0 }, { 0, 0} };
++
++ if (setitimer(ITIMER_VIRTUAL, &zeroval, NULL)) {
++ PANIC();
++ }
++ }
++
++ /* ==========================================================================
++ * machdep_pthread_cleanup()
++ */
++ void *machdep_pthread_cleanup(struct machdep_pthread *machdep_pthread)
++ {
++ return(machdep_pthread->machdep_stack);
++ }
++
++ void *machdep_pthread_cleanup(struct machdep_pthread *machdep_pthread);
++ void machdep_pthread_start(void);
++
++ /* ==========================================================================
++ * __machdep_stack_free()
++ */
++ void
++ __machdep_stack_free(void * stack)
++ {
++ free(stack);
++ }
++
++ /* ==========================================================================
++ * __machdep_stack_alloc()
++ */
++ void *
++ __machdep_stack_alloc(size_t size)
++ {
++ return(malloc(size));
++ }
++
++ /* ==========================================================================
++ * machdep_sys_creat()
++ */
++ int
++ machdep_sys_creat(char * path, int mode)
++ {
++ return(machdep_sys_open(path, O_WRONLY | O_CREAT | O_TRUNC, mode));
++ }
++
++ /* ==========================================================================
++ * machdep_sys_wait3()
++ */
++ int
++ machdep_sys_wait3(int * b, int c, int *d)
++ {
++ return(machdep_sys_wait4(0, b, c, d));
++ }
++
++ /* ==========================================================================
++ * machdep_sys_waitpid()
++ */
++ int
++ machdep_sys_waitpid(int a, int * b, int c)
++ {
++ return(machdep_sys_wait4(a, b, c, NULL));
++ }
++
++ /* ==========================================================================
++ * machdep_sys_getdtablesize()
++ */
++ int
++ machdep_sys_getdtablesize(void)
++ {
++ return(sysconf(_SC_OPEN_MAX));
++ }
++
++ /* ==========================================================================
++ * machdep_sys_lseek()
++ */
++ off_t
++ machdep_sys_lseek(int fd, off_t offset, int whence)
++ {
++ return(__syscall((quad_t)SYS_lseek, fd, 0, offset, whence));
++ }
++
++ int
++ machdep_sys_ftruncate( int fd, off_t length)
++ {
++ quad_t q;
++ int rv;
++
++ q = __syscall((quad_t)SYS_ftruncate, fd,0, length);
++ if( /* LINTED constant */ sizeof( quad_t ) == sizeof( register_t ) ||
++ /* LINTED constant */ BYTE_ORDER == LITTLE_ENDIAN )
++ rv = (int)q;
++ else
++ rv = (int)((u_quad_t)q >> 32);
++
++ return rv;
++ }
++
++
++ /* ==========================================================================
++ * machdep_sys_getdirentries()
++ */
++ int
++ machdep_sys_getdirentries(int fd, char * buf, int len, int * seek)
++ {
++ return(machdep_sys_getdents(fd, buf, len));
++ }
diff --git a/databases/mysql-server/patches/patch-ai b/databases/mysql-server/patches/patch-ai
new file mode 100644
index 00000000000..258fd1d3781
--- /dev/null
+++ b/databases/mysql-server/patches/patch-ai
@@ -0,0 +1,116 @@
+$NetBSD: patch-ai,v 1.3 2001/01/10 06:03:15 briggs Exp $
+
+*** /dev/null Wed Dec 31 19:00:00 1969
+--- mit-pthreads/machdep/engine-powerpc-netbsd.h Tue Jan 9 22:35:36 2001
+***************
+*** 0 ****
+--- 1,109 ----
++ /* ==== machdep.h ============================================================
++ * Copyright (c) 1994 Chris Provenzano (proven@athena.mit.edu) and
++ * Ken Raeburn (raeburn@mit.edu).
++ *
++ * engine-alpha-osf1.h,v 1.4.4.1 1995/12/13 05:41:42 proven Exp
++ *
++ */
++
++ #include <unistd.h>
++ #include <setjmp.h>
++ #include <sys/time.h>
++ #include <sys/cdefs.h>
++ #include <sys/signal.h> /* for _NSIG */
++
++ /*
++ * The first machine dependent functions are the SEMAPHORES
++ * needing the test and set instruction.
++ */
++ #define SEMAPHORE_CLEAR 0
++ #define SEMAPHORE_SET 0xffff
++
++ #define SEMAPHORE_TEST_AND_SET(lock) \
++ ({ \
++ volatile long t1, temp = SEMAPHORE_SET; \
++ __asm__ volatile( \
++ "1: lwarx %0,0,%1; \
++ cmpwi %0, 0; \
++ bne 2f; \
++ stwcx. %2,0,%1; \
++ bne- 1b; \
++ 2: " \
++ :"=r" (t1) \
++ :"m" (lock), "r" (temp)); \
++ t1; \
++ })
++
++ #define SEMAPHORE_RESET(lock) *lock = SEMAPHORE_CLEAR
++
++ /*
++ * New types
++ */
++ typedef int semaphore;
++
++ /*
++ * sigset_t macros
++ */
++ #define SIG_ANY(sig) (sig)
++ #define SIGMAX (_NSIG-1)
++
++ /*
++ * New Strutures
++ */
++ struct machdep_pthread {
++ void *(*start_routine)(void *);
++ void *start_argument;
++ void *machdep_stack;
++ struct itimerval machdep_timer;
++ jmp_buf machdep_istate;
++ unsigned long machdep_fstate[66];
++ /* 64-bit fp regs 0-31 + fpscr */
++ /* We pretend the fpscr is 64 bits */
++ };
++
++ /*
++ * Static machdep_pthread initialization values.
++ * For initial thread only.
++ */
++ #define MACHDEP_PTHREAD_INIT \
++ { NULL, NULL, NULL, { { 0, 0 }, { 0, 100000 } }, { 0 }, { 0 } }
++
++ /*
++ * Minimum stack size
++ */
++ #define PTHREAD_STACK_MIN 2048
++
++ /*
++ * Some fd flag defines that are necessary to distinguish between posix
++ * behavior and bsd4.3 behavior.
++ */
++ #define __FD_NONBLOCK O_NONBLOCK
++
++ /*
++ * New functions
++ */
++
++ __BEGIN_DECLS
++
++ #if defined(PTHREAD_KERNEL)
++
++ #define __machdep_stack_get(x) (x)->machdep_stack
++ #define __machdep_stack_set(x, y) (x)->machdep_stack = y
++ #define __machdep_stack_repl(x, y) \
++ { \
++ if ((stack = __machdep_stack_get(x))) { \
++ __machdep_stack_free(stack); \
++ } \
++ __machdep_stack_set(x, y); \
++ }
++
++ int machdep_save_state(void);
++
++ void __machdep_save_fp_state(unsigned long *);
++ void __machdep_restore_fp_state(unsigned long *);
++ void *__machdep_stack_alloc(size_t);
++ void __machdep_stack_free(void *);
++
++ #endif
++
++ __END_DECLS
diff --git a/databases/mysql-server/patches/patch-aj b/databases/mysql-server/patches/patch-aj
new file mode 100644
index 00000000000..be9a788397e
--- /dev/null
+++ b/databases/mysql-server/patches/patch-aj
@@ -0,0 +1,192 @@
+$NetBSD: patch-aj,v 1.3 2001/01/10 06:03:15 briggs Exp $
+
+*** /dev/null Wed Dec 31 19:00:00 1969
+--- mit-pthreads/machdep/syscall-powerpc-netbsd.S Tue Jan 9 22:35:59 2001
+***************
+*** 0 ****
+--- 1,185 ----
++ #include <machine/asm.h>
++ #define COMPAT_43
++ #include <sys/syscall.h>
++ #ifndef __CONCAT
++ #include <sys/cdefs.h>
++ #endif
++ #define CONCAT __CONCAT
++
++ #undef SYSCALL
++
++ /* Kernel syscall interface:
++ Input:
++ 0 - system call number
++ 3-8 - arguments, as in C
++ Output:
++ so - (summary overflow) clear iff successful
++
++ This macro is similar to SYSCALL in asm.h, but not completely.
++ There's room for optimization, if we assume this will continue to
++ be assembled as one file.
++
++ This macro expansions does not include the return instruction.
++ If there's no other work to be done, use something like:
++ SYSCALL(foo) ; ret
++ If there is other work to do (in fork, maybe?), do it after the
++ SYSCALL invocation. */
++
++ ENTRY(machdep_cerror)
++ mflr 0 # Save LR in 0
++ stwu 1,-16(1) # allocate new stack frame
++ stw 0,20(1) # Stash 0 in stack
++ stw 31,8(1) # Stash 31 in stack (since it's callee-saved
++ mr 31,3 # and we stash return there)
++ bl PIC_PLT(_C_LABEL(__errno))
++ stw 31,0(3) # *errno() = err
++ lwz 0,20(1) # Restore LR from stack to 0
++ neg 3,31 # return -errno to 3
++ lwz 31,8(1) # Restore 31 from stack
++ mtlr 0
++ la 1,16(1) # Restore stack frame
++ li 4,-1 # Put -1 in r4 for those syscalls that return
++ blr # two values
++
++ /* The fork system call is special... */
++ ENTRY(machdep_sys_fork)
++ li 0, SYS_fork
++ sc
++ bso PIC_PLT(_C_LABEL(machdep_cerror))
++ addi 4,4,-1
++ blr
++
++ /* The pipe system call is special... */
++ ENTRY(machdep_sys_pipe)
++ mr 5,3
++ li 0,SYS_pipe
++ sc
++ bso PIC_PLT(_C_LABEL(machdep_cerror))
++ stw 3,0(5) # Success, store fds
++ stw 4,4(5)
++ li 3,0
++ blr # And return 0
++
++ #ifndef SYS___sigsuspend14
++ /* The sigsuspend system call is special... */
++ ENTRY(machdep_sys_sigsuspend)
++ lwz 3,0(3)
++ li 0,SYS_compat_13_sigsuspend13
++ sc
++ b PIC_PLT(_C_LABEL(machdep_cerror))
++ #endif /* SYS_sigsuspend14 */
++
++ #ifndef SYS___sigprocmask14
++ /* The sigprocmask system call is special... */
++ ENTRY(machdep_sys_sigprocmask)
++ or. 4,4,4 # Set == NULL ?
++ li 6,1 # how = SIG_BLOCK
++ beq Ldoit
++ lwz 4,0(4) # if not, replace it in r4 with #set
++ mr 6,3
++ Ldoit: mr 3,6 # ... using sigprocmask(SIG_BLOCK)
++ li 0,SYS_compat_13_sigprocmask13
++ sc
++ bso PIC_PLT(_C_LABEL(machdep_cerror))
++ or. 5,5,5 # Check to see if oset requested
++ beq Ldone # if oset != NULL
++ stw 3,0(5) # *oset = oldmask
++ Ldone:
++ li 3,0 # return 0
++ blr
++ #endif /* SYS_sigprocmask14 */
++
++ /* More stuff ... */
++
++ /* For fstat() we actually syscall fstat13. */
++ ENTRY(machdep_sys_fstat)
++ li 0, SYS___fstat13
++ sc
++ bnslr
++ b PIC_PLT(_C_LABEL(machdep_cerror))
++
++ /* Do we need to save the entire floating point state? I think so... */
++ ENTRY(__machdep_save_fp_state)
++ stwu 1,-8(1)
++ stw 3,4(1)
++ stfd 0,0(3)
++ stfdu 1,8(3)
++ stfdu 2,8(3)
++ stfdu 3,8(3)
++ stfdu 4,8(3)
++ stfdu 5,8(3)
++ stfdu 6,8(3)
++ stfdu 7,8(3)
++ stfdu 8,8(3)
++ stfdu 9,8(3)
++ stfdu 10,8(3)
++ stfdu 11,8(3)
++ stfdu 12,8(3)
++ stfdu 13,8(3)
++ stfdu 14,8(3)
++ stfdu 15,8(3)
++ stfdu 16,8(3)
++ stfdu 17,8(3)
++ stfdu 18,8(3)
++ stfdu 19,8(3)
++ stfdu 20,8(3)
++ stfdu 21,8(3)
++ stfdu 22,8(3)
++ stfdu 23,8(3)
++ stfdu 24,8(3)
++ stfdu 25,8(3)
++ stfdu 26,8(3)
++ stfdu 27,8(3)
++ stfdu 28,8(3)
++ stfdu 29,8(3)
++ stfdu 30,8(3)
++ stfdu 31,8(3)
++ mffs 0
++ stfdu 0,8(3)
++ lwz 3,4(1)
++ lwz 1,0(1)
++ blr
++
++ ENTRY(__machdep_restore_fp_state)
++ stwu 1,-12(1)
++ stw 3,4(1)
++ stw 4,8(1)
++ mr 4,3
++ lfdu 1,8(3)
++ lfdu 2,8(3)
++ lfdu 3,8(3)
++ lfdu 4,8(3)
++ lfdu 5,8(3)
++ lfdu 6,8(3)
++ lfdu 7,8(3)
++ lfdu 8,8(3)
++ lfdu 9,8(3)
++ lfdu 10,8(3)
++ lfdu 11,8(3)
++ lfdu 12,8(3)
++ lfdu 13,8(3)
++ lfdu 14,8(3)
++ lfdu 15,8(3)
++ lfdu 16,8(3)
++ lfdu 17,8(3)
++ lfdu 18,8(3)
++ lfdu 19,8(3)
++ lfdu 20,8(3)
++ lfdu 21,8(3)
++ lfdu 22,8(3)
++ lfdu 23,8(3)
++ lfdu 24,8(3)
++ lfdu 25,8(3)
++ lfdu 26,8(3)
++ lfdu 27,8(3)
++ lfdu 28,8(3)
++ lfdu 29,8(3)
++ lfdu 30,8(3)
++ lfdu 31,8(3)
++ lfdu 0,8(3)
++ mtfsf 127,0
++ lfd 0,0(4)
++ lwz 3,4(1)
++ lwz 4,8(1)
++ lwz 1,0(1)
++ blr
diff --git a/databases/mysql-server/patches/patch-ak b/databases/mysql-server/patches/patch-ak
new file mode 100644
index 00000000000..698f22c2285
--- /dev/null
+++ b/databases/mysql-server/patches/patch-ak
@@ -0,0 +1,52 @@
+$NetBSD: patch-ak,v 1.3 2001/01/10 06:03:15 briggs Exp $
+
+*** /dev/null Wed Dec 31 19:00:00 1969
+--- mit-pthreads/machdep/syscall-template-powerpc-netbsd.S Tue Jan 9 22:35:59 2001
+***************
+*** 0 ****
+--- 1,45 ----
++ #include <machine/asm.h>
++ #define COMPAT_43
++ #include <sys/syscall.h>
++
++ #ifdef SYS___sigsuspend14
++ #define SYS_sigsuspend SYS___sigsuspend14
++ #endif
++
++ #ifdef SYS___sigaction14
++ #define SYS_sigaction SYS___sigaction14
++ #endif
++
++ #ifdef SYS___sigprocmask14
++ #define SYS_sigprocmask SYS___sigprocmask14
++ #endif
++
++ #undef SYSCALL
++
++ /* Kernel syscall interface:
++ Input:
++ 0 - system call number
++ 3-8 - arguments, as in C
++ Output:
++ so - (summary overflow) clear iff successful
++
++ This macro is similar to SYSCALL in asm.h, but not completely.
++ There's room for optimization, if we assume this will continue to
++ be assembled as one file.
++
++ This macro expansions does not include the return instruction.
++ If there's no other work to be done, use something like:
++ SYSCALL(foo) ; ret
++ If there is other work to do (in fork, maybe?), do it after the
++ SYSCALL invocation. */
++
++ #define SYSCALL(x) \
++ ENTRY(machdep_sys_ ## x) \
++ li 0, SYS_ ## x ; \
++ sc ; \
++ bnslr ; \
++ b PIC_PLT(_C_LABEL(machdep_cerror))
++
++ #define XSYSCALL(x) SYSCALL(x) ; blr
++
++ XSYSCALL(SYSCALL_NAME)