From 75947c30273233bf8f7e6eb2bc3d92ce51778679 Mon Sep 17 00:00:00 2001 From: Valery Ushakov Date: Fri, 13 Jan 2017 16:44:05 +0300 Subject: Copied from Linux version. Use macros. --- emu/NetBSD/asm-power.S | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 emu/NetBSD/asm-power.S (limited to 'emu/NetBSD') diff --git a/emu/NetBSD/asm-power.S b/emu/NetBSD/asm-power.S new file mode 100644 index 00000000..e35f2ed2 --- /dev/null +++ b/emu/NetBSD/asm-power.S @@ -0,0 +1,91 @@ +#include + +ENTRY_NOPROFILE(FPsave) + stfd %f14,0*8(%r3) + stfd %f15,1*8(%r3) + stfd %f16,2*8(%r3) + stfd %f17,3*8(%r3) + stfd %f18,4*8(%r3) + stfd %f19,5*8(%r3) + stfd %f20,6*8(%r3) + stfd %f21,7*8(%r3) + stfd %f22,8*8(%r3) + stfd %f23,9*8(%r3) + stfd %f24,10*8(%r3) + stfd %f25,11*8(%r3) + stfd %f26,12*8(%r3) + stfd %f27,13*8(%r3) + stfd %f28,14*8(%r3) + stfd %f29,15*8(%r3) + stfd %f30,16*8(%r3) + stfd %f31,17*8(%r3) + blr + END(FPsave) + +ENTRY_NOPROFILE(FPrestore) + lfd %f14,0*8(%r3) + lfd %f15,1*8(%r3) + lfd %f16,2*8(%r3) + lfd %f17,3*8(%r3) + lfd %f18,4*8(%r3) + lfd %f19,5*8(%r3) + lfd %f20,6*8(%r3) + lfd %f21,7*8(%r3) + lfd %f22,8*8(%r3) + lfd %f23,9*8(%r3) + lfd %f24,10*8(%r3) + lfd %f25,11*8(%r3) + lfd %f26,12*8(%r3) + lfd %f27,13*8(%r3) + lfd %f28,14*8(%r3) + lfd %f29,15*8(%r3) + lfd %f30,16*8(%r3) + lfd %f31,17*8(%r3) + blr + END(FPrestore) + +ENTRY_NOPROFILE(_tas) + sync + mr %r4, %r3 + addi %r5,0,0x1 +1: + lwarx %r3, 0, %r4 + cmpwi %r3, 0 + bne- 2f + stwcx. %r5, 0, %r4 + bne- 1b +2: + sync + blr + END(_tas) + +/* + * void + * executeonnewstack(void *tos, void (*tramp)(void *arg), void *arg) + */ +ENTRY_NOPROFILE(executeonnewstack) + mr %r1,%r3 /* change stacks */ + stwu %lr,-16(%r1) /* save lr to aid the traceback */ + li %r0,0 + stw %r0,20(%r1) + mr %r3,%r5 + mtctr %r4 + bctrl /* tramp(arg) */ + br + END(executeonnewstack) + +/* + * void unlockandexit(int *key) + * + * NB: the return status may be garbaged if the stack is reused + * between the unlock and the system call, but this should + * not matter since no task is waiting for the result + */ +ENTRY_NOPROFILE(unlockandexit) + li %r0,0x0 + stw %r0,0(%r3) /* unlock */ + li %r0,1 /* sys exit; 234 is exit group */ + li %r3,0 /* exit status */ + sc + br + END(unlockandexit) -- cgit v1.2.3 From 6b5dd84f4e939091bfe5e1cd9f6fdf3f6e686acf Mon Sep 17 00:00:00 2001 From: Valery Ushakov Date: Fri, 13 Jan 2017 16:55:10 +0300 Subject: Don't hardcode OBJTYPE. --- emu/NetBSD/mkfile | 2 -- 1 file changed, 2 deletions(-) (limited to 'emu/NetBSD') diff --git a/emu/NetBSD/mkfile b/emu/NetBSD/mkfile index effbaefe..fcf5a658 100644 --- a/emu/NetBSD/mkfile +++ b/emu/NetBSD/mkfile @@ -1,8 +1,6 @@ SYSTARG=NetBSD -OBJTYPE=386 <../../mkconfig SYSTARG=NetBSD -OBJTYPE=386 #Configurable parameters -- cgit v1.2.3 From fe3d3b1497fa06dc9b7d04f1e81dbf99aca80db3 Mon Sep 17 00:00:00 2001 From: Valery Ushakov Date: Fri, 13 Jan 2017 17:01:30 +0300 Subject: Remove autogenerated emu.c - this copy was imported accidentally. --- emu/NetBSD/emu.c | 88 -------------------------------------------------------- 1 file changed, 88 deletions(-) delete mode 100644 emu/NetBSD/emu.c (limited to 'emu/NetBSD') diff --git a/emu/NetBSD/emu.c b/emu/NetBSD/emu.c deleted file mode 100644 index 69e1139d..00000000 --- a/emu/NetBSD/emu.c +++ /dev/null @@ -1,88 +0,0 @@ -#include "dat.h" -#include "fns.h" -#include "error.h" -#include "interp.h" - - -#include "emu.root.h" - -ulong ndevs = 29; - -extern Dev rootdevtab; -extern Dev consdevtab; -extern Dev envdevtab; -extern Dev mntdevtab; -extern Dev pipedevtab; -extern Dev progdevtab; -extern Dev profdevtab; -extern Dev srvdevtab; -extern Dev dupdevtab; -extern Dev ssldevtab; -extern Dev capdevtab; -extern Dev fsdevtab; -extern Dev cmddevtab; -extern Dev indirdevtab; -extern Dev drawdevtab; -extern Dev pointerdevtab; -extern Dev snarfdevtab; -extern Dev ipdevtab; -extern Dev eiadevtab; -extern Dev audiodevtab; -extern Dev memdevtab; -Dev* devtab[]={ - &rootdevtab, - &consdevtab, - &envdevtab, - &mntdevtab, - &pipedevtab, - &progdevtab, - &profdevtab, - &srvdevtab, - &dupdevtab, - &ssldevtab, - &capdevtab, - &fsdevtab, - &cmddevtab, - &indirdevtab, - &drawdevtab, - &pointerdevtab, - &snarfdevtab, - &ipdevtab, - &eiadevtab, - &audiodevtab, - &memdevtab, - nil, - nil, - nil, - nil, - nil, - nil, - nil, - nil, - nil, -}; - -void links(void){ -} - -extern void sysmodinit(void); -extern void drawmodinit(void); -extern void tkmodinit(void); -extern void mathmodinit(void); -extern void srvmodinit(void); -extern void keyringmodinit(void); -extern void loadermodinit(void); -extern void freetypemodinit(void); -void modinit(void){ - sysmodinit(); - drawmodinit(); - tkmodinit(); - mathmodinit(); - srvmodinit(); - keyringmodinit(); - loadermodinit(); - freetypemodinit(); -} - -char* conffile = "emu"; -ulong kerndate = KERNDATE; -- cgit v1.2.3 From 37b19cf47dde41d596ef2c686af69c85684f2183 Mon Sep 17 00:00:00 2001 From: Valery Ushakov Date: Sat, 14 Jan 2017 02:12:41 +0300 Subject: Normalize mixed tabs for tab width of 8. --- emu/NetBSD/asm-power.S | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) (limited to 'emu/NetBSD') diff --git a/emu/NetBSD/asm-power.S b/emu/NetBSD/asm-power.S index e35f2ed2..da40e825 100644 --- a/emu/NetBSD/asm-power.S +++ b/emu/NetBSD/asm-power.S @@ -23,31 +23,31 @@ ENTRY_NOPROFILE(FPsave) END(FPsave) ENTRY_NOPROFILE(FPrestore) - lfd %f14,0*8(%r3) - lfd %f15,1*8(%r3) - lfd %f16,2*8(%r3) - lfd %f17,3*8(%r3) - lfd %f18,4*8(%r3) - lfd %f19,5*8(%r3) - lfd %f20,6*8(%r3) - lfd %f21,7*8(%r3) - lfd %f22,8*8(%r3) - lfd %f23,9*8(%r3) - lfd %f24,10*8(%r3) - lfd %f25,11*8(%r3) - lfd %f26,12*8(%r3) - lfd %f27,13*8(%r3) - lfd %f28,14*8(%r3) - lfd %f29,15*8(%r3) - lfd %f30,16*8(%r3) - lfd %f31,17*8(%r3) + lfd %f14,0*8(%r3) + lfd %f15,1*8(%r3) + lfd %f16,2*8(%r3) + lfd %f17,3*8(%r3) + lfd %f18,4*8(%r3) + lfd %f19,5*8(%r3) + lfd %f20,6*8(%r3) + lfd %f21,7*8(%r3) + lfd %f22,8*8(%r3) + lfd %f23,9*8(%r3) + lfd %f24,10*8(%r3) + lfd %f25,11*8(%r3) + lfd %f26,12*8(%r3) + lfd %f27,13*8(%r3) + lfd %f28,14*8(%r3) + lfd %f29,15*8(%r3) + lfd %f30,16*8(%r3) + lfd %f31,17*8(%r3) blr END(FPrestore) ENTRY_NOPROFILE(_tas) sync - mr %r4, %r3 - addi %r5,0,0x1 + mr %r4, %r3 + addi %r5,0,0x1 1: lwarx %r3, 0, %r4 cmpwi %r3, 0 @@ -64,11 +64,11 @@ ENTRY_NOPROFILE(_tas) * executeonnewstack(void *tos, void (*tramp)(void *arg), void *arg) */ ENTRY_NOPROFILE(executeonnewstack) - mr %r1,%r3 /* change stacks */ + mr %r1,%r3 /* change stacks */ stwu %lr,-16(%r1) /* save lr to aid the traceback */ - li %r0,0 + li %r0,0 stw %r0,20(%r1) - mr %r3,%r5 + mr %r3,%r5 mtctr %r4 bctrl /* tramp(arg) */ br -- cgit v1.2.3 From 887c05cf54e7dbd2381ecc932bd343e73343d1b6 Mon Sep 17 00:00:00 2001 From: Valery Ushakov Date: Sat, 26 Aug 2017 11:01:25 +0300 Subject: PowerPC needs segflush() --- emu/NetBSD/mkfile | 1 + emu/NetBSD/os.c | 8 -------- emu/NetBSD/segflush-386.c | 9 +++++++++ emu/NetBSD/segflush-power.c | 12 ++++++++++++ 4 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 emu/NetBSD/segflush-386.c create mode 100644 emu/NetBSD/segflush-power.c (limited to 'emu/NetBSD') diff --git a/emu/NetBSD/mkfile b/emu/NetBSD/mkfile index fcf5a658..5af02362 100644 --- a/emu/NetBSD/mkfile +++ b/emu/NetBSD/mkfile @@ -22,6 +22,7 @@ X11LIBS= -L/usr/X11R7/lib -R/usr/X11R7/lib -lXext -lX11 OBJ=\ asm-$OBJTYPE.$O\ os.$O\ + segflush-$OBJTYPE.$O\ $CONF.root.$O\ lock.$O\ $DEVS\ diff --git a/emu/NetBSD/os.c b/emu/NetBSD/os.c index e299a188..b6ffab99 100644 --- a/emu/NetBSD/os.c +++ b/emu/NetBSD/os.c @@ -527,11 +527,3 @@ stackalloc(Proc *p, void **tos) *(Proc **)rv = p; return rv; } - -int -segflush(void *a, ulong n) -{ - USED(a); - USED(n); - return 0; -} diff --git a/emu/NetBSD/segflush-386.c b/emu/NetBSD/segflush-386.c new file mode 100644 index 00000000..cdf0496b --- /dev/null +++ b/emu/NetBSD/segflush-386.c @@ -0,0 +1,9 @@ +#include "dat.h" + +int +segflush(void *a, ulong n) +{ + USED(a); + USED(n); + return 0; +} diff --git a/emu/NetBSD/segflush-power.c b/emu/NetBSD/segflush-power.c new file mode 100644 index 00000000..845d74f6 --- /dev/null +++ b/emu/NetBSD/segflush-power.c @@ -0,0 +1,12 @@ +#include +#include + +#include "dat.h" + + +int +segflush(void *a, ulong n) +{ + __syncicache(a, n); + return 0; +} -- cgit v1.2.3 From f6a76de4c68187d3916866f73e58afce6998111b Mon Sep 17 00:00:00 2001 From: Valery Ushakov Date: Sat, 26 Aug 2017 11:10:09 +0300 Subject: Tweak to reduce diff with Linux. --- emu/NetBSD/mkfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'emu/NetBSD') diff --git a/emu/NetBSD/mkfile b/emu/NetBSD/mkfile index 5af02362..ce001d96 100644 --- a/emu/NetBSD/mkfile +++ b/emu/NetBSD/mkfile @@ -36,8 +36,6 @@ KERNDATE=`{$NDATE} default:V: $O.$CONF -<../port/portmkfile - $O.$CONF: $OBJ $CONF.c $CONF.root.h $LIBFILES $CC $CFLAGS '-DKERNDATE='$KERNDATE $CONF.c $LD $LDFLAGS -o $target $OBJ $CONF.$O $LIBFILES $SYSLIBS @@ -45,4 +43,6 @@ $O.$CONF: $OBJ $CONF.c $CONF.root.h $LIBFILES install:V: $O.$CONF cp $O.$CONF $INSTALLDIR/$CONF +<../port/portmkfile + devfs.$O: ../port/devfs-posix.c -- cgit v1.2.3 From 2c1c5550090353a79298acaab260482d239afb54 Mon Sep 17 00:00:00 2001 From: Valery Ushakov Date: Mon, 28 Aug 2017 20:02:27 +0300 Subject: On PowerPC tell the JIT compiler it's not Plan9 ABI and it needs to explicitly clear %r0. --- emu/NetBSD/emu | 3 +++ emu/NetBSD/emu-g | 4 ++++ 2 files changed, 7 insertions(+) (limited to 'emu/NetBSD') diff --git a/emu/NetBSD/emu b/emu/NetBSD/emu index 55705a2b..d89c5bc5 100644 --- a/emu/NetBSD/emu +++ b/emu/NetBSD/emu @@ -81,6 +81,9 @@ port uqid code + #ifdef __powerpc__ + int macjit = 1; /* tell compiler it's not plan9 abi */ + #endif init emuinit diff --git a/emu/NetBSD/emu-g b/emu/NetBSD/emu-g index e662b4c1..6e87297a 100644 --- a/emu/NetBSD/emu-g +++ b/emu/NetBSD/emu-g @@ -70,6 +70,10 @@ port uqid code + #ifdef __powerpc__ + int macjit = 1; /* tell compiler it's not plan9 abi */ + #endif + void setpointer(int x, int y){USED(x); USED(y);} ulong strtochan(char *s){USED(s); return ~0;} -- cgit v1.2.3