summaryrefslogtreecommitdiff
path: root/OpenBSD
diff options
context:
space:
mode:
authorScott Francis <scott@kurokoproject.com>2017-07-09 17:01:09 -0700
committerScott Francis <scott@kurokoproject.com>2017-07-09 17:01:09 -0700
commit9615754de500d96213e295cb80e41cb24e4a75ac (patch)
treeccc95e8df88c633508a9fd542b591fd84e263868 /OpenBSD
parent8823998c509302a526d8711095f664dd06997234 (diff)
Use pthreads instead of rthreads on OpenBSD and add back FPU support
Diffstat (limited to 'OpenBSD')
-rw-r--r--OpenBSD/386/include/emu.h4
-rw-r--r--OpenBSD/386/include/lib9.h31
2 files changed, 35 insertions, 0 deletions
diff --git a/OpenBSD/386/include/emu.h b/OpenBSD/386/include/emu.h
index 5e03489b..5392e2a4 100644
--- a/OpenBSD/386/include/emu.h
+++ b/OpenBSD/386/include/emu.h
@@ -15,6 +15,7 @@ struct FPU
#define KSTACK (32 * 1024)
+#ifndef USE_PTHREADS
static __inline Proc *getup(void) {
Proc *p;
__asm__( "movl %%esp, %%eax\n\t"
@@ -22,6 +23,9 @@ static __inline Proc *getup(void) {
);
return *(Proc **)((unsigned long)p & ~(KSTACK - 1));
};
+#else
+extern Proc* getup(void);
+#endif
#define up (getup())
diff --git a/OpenBSD/386/include/lib9.h b/OpenBSD/386/include/lib9.h
index 69c310e9..377e19f6 100644
--- a/OpenBSD/386/include/lib9.h
+++ b/OpenBSD/386/include/lib9.h
@@ -1,10 +1,15 @@
/* define _BSD_SOURCE to use ISO C, POSIX, and 4.3BSD things. */
+#define USE_PTHREADS
#ifndef _BSD_SOURCE
#define _BSD_SOURCE
#endif
/* these aren't really needed because OpenBSD does the right thing and makes off_t 64 bits, full stop */
#define _LARGEFILE64_SOURCE 1
#define _FILE_OFFSET_BITS 64
+
+#ifdef USE_PTHREADS
+#define _REENTRANT 1
+#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
@@ -473,3 +478,29 @@ extern char *argv0;
#define setbinmode()
+/* FCR */
+#define FPINEX (1<<5)
+#define FPUNFL ((1<<4)|(1<<1))
+#define FPOVFL (1<<3)
+#define FPZDIV (1<<2)
+#define FPINVAL (1<<0)
+#define FPRNR (0<<10)
+#define FPRZ (3<<10)
+#define FPRPINF (2<<10)
+#define FPRNINF (1<<10)
+#define FPRMASK (3<<10)
+#define FPPEXT (3<<8)
+#define FPPSGL (0<<8)
+#define FPPDBL (2<<8)
+#define FPPMASK (3<<8)
+/* FSR */
+#define FPAINEX FPINEX
+#define FPAOVFL FPOVFL
+#define FPAUNFL FPUNFL
+#define FPAZDIV FPZDIV
+#define FPAINVAL FPINVAL
+
+extern void setfcr(ulong);
+extern void setfsr(ulong);
+extern ulong getfcr(void);
+extern ulong getfsr(void);