commit b8f742db850ffc99333a97ab54fc820c6de0fd98 from: rsc date: Tue Jan 11 17:43:53 2005 UTC os x changes commit - 530d00164177fd68e2aeb403e7b9be31823e3168 commit + b8f742db850ffc99333a97ab54fc820c6de0fd98 blob - df82ac5921930c77f6eaf9666dfaf0109c146756 blob + af9746a499803b069e4a1f49b53a33bc9d6f2492 --- include/u.h +++ include/u.h @@ -120,7 +120,7 @@ typedef short s16int; /* * Gcc 3 is too smart for its own good. */ -#if defined(__GNUC__) +#if defined(__GNUC__) && !defined(__APPLE_CC__) # if __GNUC__ >= 3 # undef AUTOLIB # define AUTOLIB(x) int __p9l_autolib_ ## x __attribute__ ((weak)); blob - 97953325984a53687f29ad9df3e50979dee987cb blob + 4ac0d676245ad02fbcf0f5f7e8503fcad7b085e1 --- src/cmd/acme/dat.h +++ src/cmd/acme/dat.h @@ -465,6 +465,9 @@ enum #define WIN(q) ((((ulong)(q).path)>>8) & 0xFFFFFF) #define FILE(q) ((q).path & 0xFF) +#undef FALSE +#undef TRUE + enum { FALSE, blob - 47109d43e874e9273938f62da61e889c03aa8c83 blob + e8dd3ab3dc390432c65c05d3bed7da046153d8f9 --- src/cmd/map/map.c +++ src/cmd/map/map.c @@ -105,6 +105,8 @@ double diddle(struct place *, double, double); void dobounds(double, double, double, double, int); void dogrid(double, double, double, double); int duple(struct place *, double); +#define fmax map_fmax +#define fmin map_fmin double fmax(double, double); double fmin(double, double); void getdata(char *); blob - 4d272749c2365bea830e5188c0e44d57bbe704cd blob + 43f2205de439949496c415db2946a1093f6eefe0 --- src/cmd/map/mkfile +++ src/cmd/map/mkfile @@ -5,7 +5,6 @@ LIB=libmap/libmap.a OFILES=map.$O\ symbol.$O\ index.$O\ - sqrt.$O\ HFILES=map.h\ iplot.h\ blob - 991572b1d12f53eee9353bfb5a0b5b62f8248e36 blob + 2967e0037b8e8e7e7c362a5d406efae48fe01f99 --- src/cmd/pr.c +++ src/cmd/pr.c @@ -8,6 +8,7 @@ * 2+head+2+page[56]+5 */ +#define err pr_err #define ISPRINT(c) ((c) >= ' ') #define ESC '\033' #define LENGTH 66 blob - edd34991c5f4f7130414eb41a5f05c1acd1c64d1 blob + 72d55083f33cf4e1fc792179eadc6eb02e7861df --- src/cmd/proof/proof.h +++ src/cmd/proof/proof.h @@ -10,6 +10,8 @@ #define ONES ~0 #define devname proof_devname +#define getc proof_getc +#define ungetc proof_ungetc extern char devname[]; extern double mag; blob - bbb97373e3d80e86df15f31a86662f1518b48881 blob + 3d6c7f8da35bd2b0b8b43ddc1201b701d3956d21 --- src/cmd/vac/error.h +++ src/cmd/vac/error.h @@ -1,3 +1,8 @@ +/* + * Somehow has been included on Mac OS X + */ +#undef EIO + extern char ENoDir[]; extern char EBadDir[]; extern char EBadMeta[]; blob - d72aa4c772e6081d9fa51945ccb7e26ad0cb43ae blob + dfb3bc9f31def80d401d854d0abd826526580f05 --- src/lib9pclient/fs.c +++ src/lib9pclient/fs.c @@ -56,7 +56,6 @@ CFsys* fsmount(int fd, char *aname) { int n; - char *user; CFsys *fs; CFid *fid; @@ -72,7 +71,6 @@ fsmount(int fd, char *aname) } fs->msize = n; - user = getuser(); if((fid = fsattach(fs, nil, getuser(), aname)) == nil) goto Error; fssetroot(fs, fid); blob - /dev/null blob + 3626e7c6998c53ae0035343edc29d292f7dfe34f (mode 644) --- /dev/null +++ src/libmach/OpenBSD.c @@ -0,0 +1 @@ +#include "nosys.c" blob - 18f8bdfec0bb7e3f6e11501f90762e15325ba039 blob + 8fa74ab97abd0d6df23ba765740e5210a7a7a13a --- src/libmach/elfcorelinux386.c +++ src/libmach/elfcorelinux386.c @@ -4,6 +4,9 @@ #include "elf.h" #include "ureg386.h" +#undef errno +#define errno uregerrno + typedef struct Lreg Lreg; typedef struct Status Status; typedef struct Psinfo Psinfo; blob - 701e9c6526703afc2d4dfb8e33972d063640e5b4 blob + 141645a6c670678e182dd7fb62d0fc8373500e60 --- src/libmach/machpower.c +++ src/libmach/machpower.c @@ -570,7 +570,7 @@ sub(Opcode *o, Instr *i) bprint(i, "\tR%d,$%d,R%d", i->ra, i->simm, i->rd); } -#define div qdiv +#define div power_div static void div(Opcode *o, Instr *i) blob - 61d86c36f21a1dd405630cbf6c16ab817050500c blob + e758a7382a9533a657da5e9b165a697bf45cb323 --- src/libsec/386/md5block.spp +++ src/libsec/386/md5block.spp @@ -43,7 +43,7 @@ #define S43 15 #define S44 21 -#define PAYME(x) $##x +#define PAYME(x) $ ## x /* * SI is data blob - 0776b1e3ab9ca8d34567ea5ece349386c647eedb blob + a064b5eaf5142c32c1d2c9abf39bb2bc122798e6 --- src/libthread/Darwin-power-asm.s +++ src/libthread/Darwin-power-asm.s @@ -4,9 +4,9 @@ .text .align 2 -.globl __setlabel +.globl __getmcontext -__setlabel: /* xxx: instruction scheduling */ +__getmcontext: /* xxx: instruction scheduling */ mflr r0 mfcr r5 mfctr r6 @@ -18,35 +18,35 @@ __setlabel: /* xxx: instruction scheduling */ stw r1, 4*4(r3) stw r2, 5*4(r3) - li r5, 1 /* return value for gotolabel */ + li r5, 1 /* return value for setmcontext */ stw r5, 6*4(r3) - stw r13, (0+6)*4(r3) /* callee-save GPRs */ - stw r14, (1+6)*4(r3) /* xxx: block move */ - stw r15, (2+6)*4(r3) - stw r16, (3+6)*4(r3) - stw r17, (4+6)*4(r3) - stw r18, (5+6)*4(r3) - stw r19, (6+6)*4(r3) - stw r20, (7+6)*4(r3) - stw r21, (8+6)*4(r3) - stw r22, (9+6)*4(r3) - stw r23, (10+6)*4(r3) - stw r24, (11+6)*4(r3) - stw r25, (12+6)*4(r3) - stw r26, (13+6)*4(r3) - stw r27, (14+6)*4(r3) - stw r28, (15+6)*4(r3) - stw r29, (16+6)*4(r3) - stw r30, (17+6)*4(r3) - stw r31, (18+6)*4(r3) + stw r13, (0+7)*4(r3) /* callee-save GPRs */ + stw r14, (1+7)*4(r3) /* xxx: block move */ + stw r15, (2+7)*4(r3) + stw r16, (3+7)*4(r3) + stw r17, (4+7)*4(r3) + stw r18, (5+7)*4(r3) + stw r19, (6+7)*4(r3) + stw r20, (7+7)*4(r3) + stw r21, (8+7)*4(r3) + stw r22, (9+7)*4(r3) + stw r23, (10+7)*4(r3) + stw r24, (11+7)*4(r3) + stw r25, (12+7)*4(r3) + stw r26, (13+7)*4(r3) + stw r27, (14+7)*4(r3) + stw r28, (15+7)*4(r3) + stw r29, (16+7)*4(r3) + stw r30, (17+7)*4(r3) + stw r31, (18+7)*4(r3) li r3, 0 /* return */ blr -.globl __gotolabel +.globl __setmcontext -__gotolabel: +__setmcontext: lwz r13, (0+7)*4(r3) /* callee-save GPRs */ lwz r14, (1+7)*4(r3) /* xxx: block move */ lwz r15, (2+7)*4(r3) @@ -79,5 +79,5 @@ __gotolabel: lwz r0, 3*4(r3) mtxer r0 - lwz r3, 6*4(r4) + lwz r3, 6*4(r3) blr blob - 373cc62374a21fbbd64dba55a9df4e70cb52ee67 blob + e625626c8376352a2f27e87fc7b92eeb6d5259d2 --- src/libthread/Darwin-power.c +++ src/libthread/Darwin-power.c @@ -8,23 +8,24 @@ makecontext(ucontext_t *ucp, void (*func)(void), int a tos = (ulong*)ucp->uc_stack.ss_sp+ucp->uc_stack.ss_size/sizeof(ulong); sp = tos - 16; - ucp->label.pc = (long)func; - ucp->label.sp = (long)sp; + ucp->mc.pc = (long)func; + ucp->mc.sp = (long)sp; va_start(arg, argc); - ucp->label.r3 = va_arg(arg, long); + ucp->mc.r3 = va_arg(arg, long); va_end(arg); } -void +int getcontext(ucontext_t *uc) { - return __setlabel(uc); + return _getmcontext(&uc->mc); } int setcontext(ucontext_t *uc) { - return __gotolabel(uc); + _setmcontext(&uc->mc); + return 0; } int blob - c7915ff8bb519ff73241a5bd94ace0432edce015 blob + a39be28a940f0ff88fb59d350dab86ce746f5d92 --- src/libthread/Darwin-ucontext.h +++ src/libthread/Darwin-ucontext.h @@ -1,5 +1,6 @@ +typedef struct mcontext mcontext_t; typedef struct ucontext ucontext_t; -struct ucontext +struct mcontext { ulong pc; /* lr */ ulong cr; /* mfcr */ @@ -15,10 +16,20 @@ struct ucontext // ulong vr[4*12]; /* callee saved: v20-v31, 256-bits each */ }; +struct ucontext +{ + struct { + void *ss_sp; + uint ss_size; + } uc_stack; + sigset_t uc_sigmask; + mcontext_t mc; +}; + void makecontext(ucontext_t*, void(*)(void), int, ...); -void getcontext(ucontext_t*); +int getcontext(ucontext_t*); int setcontext(ucontext_t*); int swapcontext(ucontext_t*, ucontext_t*); -int __setlabel(ucontext_t*); -void __gotolabel(ucontext_t*); +int _getmcontext(mcontext_t*); +void _setmcontext(mcontext_t*); blob - 120e65145c4f10271b771db0d5e4def6ee848f8f blob + 550cc0568c6673bd22acb4a70f0fd905a3c07afc --- src/libthread/thread.c +++ src/libthread/thread.c @@ -27,6 +27,11 @@ _threaddebug(char *fmt, ...) static int fd = -1; return; + va_start(arg, fmt); + vfprint(1, fmt, arg); + va_end(arg); +return; + if(fd < 0){ p = strrchr(argv0, '/'); if(p) @@ -77,9 +82,11 @@ threadstart(void *v) _Thread *t; t = v; +//print("threadstart %p\n", v); t->startfn(t->startarg); - memset(&v, 0xff, 32); /* try to cut off stack traces */ +//print("threadexits %p\n", v); threadexits(nil); +//print("not reacehd\n"); } static _Thread* @@ -156,6 +163,7 @@ _threadswitch(void) Proc *p; p = proc(); +//print("threadswtch %p\n", p); contextswitch(&p->thread->context, &p->schedcontext); } @@ -217,7 +225,7 @@ scheduler(Proc *p) setproc(p); _threaddebug("scheduler enter"); - // print("s %p %d\n", p, gettid()); +// print("s %p\n", p); lock(&p->lock); for(;;){ while((t = p->runqueue.head) == nil){ @@ -234,11 +242,13 @@ scheduler(Proc *p) p->nswitch++; _threaddebug("run %d (%s)", t->id, t->name); contextswitch(&p->schedcontext, &t->context); +//print("back in scheduler\n"); p->thread = nil; lock(&p->lock); if(t->exiting){ delthreadinproc(p, t); p->nthread--; +//print("ntrhead %d\n", p->nthread); free(t); } } @@ -313,6 +323,7 @@ threadsetstate(char *fmt, ...) static int threadqlock(QLock *l, int block, ulong pc) { +//print("threadqlock %p\n", l); lock(&l->l); if(l->owner == nil){ l->owner = (*threadnow)(); blob - 0334fe30df96f9f64b566f751f3462f23d4c323a blob + 842b81d87596768c64251c9e136e23559d34b861 --- src/libthread/threadimpl.h +++ src/libthread/threadimpl.h @@ -17,6 +17,10 @@ extern void makecontext(ucontext_t*, void(*)(), int, #endif #if defined(__APPLE__) +# define mcontext libthread_mcontext +# define mcontext_t libthread_mcontext_t +# define ucontext libthread_ucontext +# define ucontext_t libthread_ucontext_t # include "Darwin-ucontext.h" #endif blob - e63c1f0661d91b0f57084803b952d9df95b13bc7 blob + 666ba430eb6a0499c9a038f06238111cbe1eb3b6 --- src/mkhdr +++ src/mkhdr @@ -1,5 +1,12 @@ SYSNAME=`uname` -OBJTYPE=`uname -m | sed 's;i.86;386;; s;/.*;;; s; ;;g' | sed 's/ppc64/power/g' | sed 's/ppc/power/g'` +OBJTYPE=`uname -m | sed ' + s;i.86;386;; + s;/.*;;; + s; ;;g; + s;PowerMacintosh;power;g; + s;ppc64;power;g; + s;ppc;power;g'` + SYSVERSION=`uname -r` BIN=$PLAN9/bin