diff options
| -rw-r--r-- | CHANGES | 2 | ||||
| -rw-r--r-- | include/version.h | 2 | ||||
| -rw-r--r-- | lib9/getcallerpc-NetBSD-386.S | 7 | ||||
| -rw-r--r-- | libmath/FPcontrol-NetBSD.c | 78 | ||||
| -rw-r--r-- | libmemdraw/mkfile-NetBSD | 4 | ||||
| -rw-r--r-- | mkfiles/mkfile-NetBSD-386 | 29 | ||||
| -rw-r--r-- | mkfiles/mkhost-NetBSD | 19 |
7 files changed, 140 insertions, 1 deletions
@@ -1,3 +1,5 @@ +20080524 + add missing NetBSD files 20080522 dis/lib/msgio.dis appl/lib/msgio.b - fix incorrect check for 16rFF add OpenBSD changes from tim@nop.cx (more changes to follow shortly that cause changes elsewhere) diff --git a/include/version.h b/include/version.h index 1e70c2b7..a2f53183 100644 --- a/include/version.h +++ b/include/version.h @@ -1 +1 @@ -#define VERSION "Fourth Edition (20080522)" +#define VERSION "Fourth Edition (20080524)" diff --git a/lib9/getcallerpc-NetBSD-386.S b/lib9/getcallerpc-NetBSD-386.S new file mode 100644 index 00000000..8cf0040b --- /dev/null +++ b/lib9/getcallerpc-NetBSD-386.S @@ -0,0 +1,7 @@ + .file "getcallerpc-NetBSD-386.S" + + .type getcallerpc,@function + .global getcallerpc +getcallerpc: + movl 4(%ebp), %eax + ret diff --git a/libmath/FPcontrol-NetBSD.c b/libmath/FPcontrol-NetBSD.c new file mode 100644 index 00000000..a4419c8f --- /dev/null +++ b/libmath/FPcontrol-NetBSD.c @@ -0,0 +1,78 @@ +#include "lib9.h" +#include "fpuctl.h" +#include "mathi.h" + +void +FPinit(void) +{ + setfsr(0); /* Clear pending exceptions */ + setfcr(FPPDBL|FPRNR|FPINVAL|FPZDIV|FPUNFL|FPOVFL); +} + +ulong +getFPstatus(void) +{ + ulong fsr = 0, fsr9 = getfsr(); + /* on specific machines, could be table lookup */ + if(fsr9&FPAINEX) fsr |= INEX; + if(fsr9&FPAOVFL) fsr |= OVFL; + if(fsr9&FPAUNFL) fsr |= UNFL; + if(fsr9&FPAZDIV) fsr |= ZDIV; + if(fsr9&FPAINVAL) fsr |= INVAL; + return fsr; +} + +ulong +FPstatus(ulong fsr, ulong mask) +{ + ulong fsr9 = 0; + ulong old = getFPstatus(); + fsr = (fsr&mask) | (old&~mask); + if(fsr&INEX) fsr9 |= FPAINEX; + if(fsr&OVFL) fsr9 |= FPAOVFL; + if(fsr&UNFL) fsr9 |= FPAUNFL; + if(fsr&ZDIV) fsr9 |= FPAZDIV; + if(fsr&INVAL) fsr9 |= FPAINVAL; + setfsr(fsr9); + return(old&mask); +} + +ulong +getFPcontrol(void) +{ + ulong fcr = 0, fcr9 = getfcr(); + switch(fcr9&FPRMASK){ + case FPRNR: fcr = RND_NR; break; + case FPRNINF: fcr = RND_NINF; break; + case FPRPINF: fcr = RND_PINF; break; + case FPRZ: fcr = RND_Z; break; + } + if(fcr9&FPINEX) fcr |= INEX; + if(fcr9&FPOVFL) fcr |= OVFL; + if(fcr9&FPUNFL) fcr |= UNFL; + if(fcr9&FPZDIV) fcr |= ZDIV; + if(fcr9&FPINVAL) fcr |= INVAL; + return fcr; +} + +ulong +FPcontrol(ulong fcr, ulong mask) +{ + ulong fcr9 = FPPDBL; + ulong old = getFPcontrol(); + fcr = (fcr&mask) | (old&~mask); + if(fcr&INEX) fcr9 |= FPINEX; + if(fcr&OVFL) fcr9 |= FPOVFL; + if(fcr&UNFL) fcr9 |= FPUNFL; + if(fcr&ZDIV) fcr9 |= FPZDIV; + if(fcr&INVAL) fcr9 |= FPINVAL; + switch(fcr&RND_MASK){ + case RND_NR: fcr9 |= FPRNR; break; + case RND_NINF: fcr9 |= FPRNINF; break; + case RND_PINF: fcr9 |= FPRPINF; break; + case RND_Z: fcr9 |= FPRZ; break; + } + setfcr(fcr9); + return(old&mask); +} + diff --git a/libmemdraw/mkfile-NetBSD b/libmemdraw/mkfile-NetBSD new file mode 100644 index 00000000..f00ef4c1 --- /dev/null +++ b/libmemdraw/mkfile-NetBSD @@ -0,0 +1,4 @@ +# +# Object files specific for Nt +# +<mkfile-Inferno diff --git a/mkfiles/mkfile-NetBSD-386 b/mkfiles/mkfile-NetBSD-386 new file mode 100644 index 00000000..6c6c7f52 --- /dev/null +++ b/mkfiles/mkfile-NetBSD-386 @@ -0,0 +1,29 @@ +TARGMODEL= Posix +TARGSHTYPE= sh +CPUS= 386 + +O= o +OS= o + +AR= ar +ARFLAGS= ruvs + +AS= cc -c +ASFLAGS= + +CC= cc -c +CFLAGS= -g\ + -O\ + -Wno-deprecated-declarations -Wuninitialized -Wunused -Wreturn-type -Wimplicit\ + -I$ROOT/NetBSD/386/include\ + -I$ROOT/include\ + -I/usr/X11R6/include + +ANSICPP= +LD= cc +LDFLAGS= -L/usr/X11R6/lib -R/usr/X11R6/lib + +SYSLIBS= + +YACC= yacc +YFLAGS= -d diff --git a/mkfiles/mkhost-NetBSD b/mkfiles/mkhost-NetBSD new file mode 100644 index 00000000..b9348840 --- /dev/null +++ b/mkfiles/mkhost-NetBSD @@ -0,0 +1,19 @@ + +# Variables for host system type = NetBSD + +SHELLTYPE= sh +SHELLNAME= /bin/sh +HOSTMODEL= Posix +OSTARG= os + +DATA2S= data2s +NDATE= date +'%s' +KSIZE= ksize +AWK= awk +CP= cp +ECHO= echo +FALSE= false +MKDIR= mkdir -p +RM= rm -f +RMDIR= rmdir +TRUE= true |
