From 5797fdc0c0206e5e006e37597662b9a7b308d74d Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sun, 21 May 2006 16:32:29 +0000 Subject: [PATCH] amd64 fixes --- exportfs/exportsrv.c | 10 +++++----- gui-x11/screen.c | 2 ++ gui-x11/xmem.h | 2 +- include/lib.h | 3 ++- include/user.h | 4 ++-- kern/allocb.c | 8 ++++---- kern/chan.c | 4 ++-- kern/dat.h | 4 ++-- kern/devaudio-unix.c | 1 + kern/devdraw.c | 36 +++++++++++++++++++++++++++++++++--- kern/devlfd.c | 8 ++++---- kern/devmnt.c | 2 +- kern/devssl.c | 2 +- kern/devtls.c | 24 +++++++++++++++--------- kern/posix.c | 1 + kern/qio.c | 6 +++--- kern/stub.c | 2 +- kern/sysfile.c | 18 +++++++++--------- libauth/auth_proxy.c | 1 + libc/dofmt.c | 6 +++++- libc/lock.c | 2 +- libc/strtod.c | 2 +- libmemdraw/alloc.c | 20 ++++++++++++-------- libmemdraw/defont.c | 2 +- libsec/ranlib.core | Bin 430080 -> 0 bytes posix-386/getcallerpc.c | 4 ++-- posix-power/getcallerpc.c | 4 ++-- win32-386/getcallerpc.c | 4 ++-- 28 files changed, 116 insertions(+), 66 deletions(-) delete mode 100644 libsec/ranlib.core diff --git a/exportfs/exportsrv.c b/exportfs/exportsrv.c index 95abecf..dabb6a0 100644 --- a/exportfs/exportsrv.c +++ b/exportfs/exportsrv.c @@ -434,7 +434,7 @@ slave(Fsrpc *f) if(p->busy == 0) { f->pid = p->pid; p->busy = 1; - pid = rendezvous(p->pid, (ulong)f); + pid = (uintptr)rendezvous((void*)(uintptr)p->pid, f); if(pid != p->pid) fatal("rendezvous sync fail"); return; @@ -459,7 +459,7 @@ slave(Fsrpc *f) Proclist = p; DEBUG(DFD, "parent %d rendez\n", pid); - rendezvous(pid, (ulong)p); + rendezvous((void*)(uintptr)pid, p); DEBUG(DFD, "parent %d went\n", pid); } } @@ -479,12 +479,12 @@ blockingslave(void *x) pid = getpid(); DEBUG(DFD, "blockingslave %d rendez\n", pid); - m = (Proc*)rendezvous(pid, 0); + m = (Proc*)rendezvous((void*)(uintptr)pid, 0); DEBUG(DFD, "blockingslave %d rendez got %p\n", pid, m); for(;;) { - p = (Fsrpc*)rendezvous(pid, pid); - if((int)p == ~0) /* Interrupted */ + p = rendezvous((void*)(uintptr)pid, (void*)(uintptr)pid); + if((uintptr)p == ~(uintptr)0) /* Interrupted */ continue; DEBUG(DFD, "\tslave: %d %F b %d p %d\n", pid, &p->work, p->busy, p->pid); diff --git a/gui-x11/screen.c b/gui-x11/screen.c index 0c79bae..8bf6004 100644 --- a/gui-x11/screen.c +++ b/gui-x11/screen.c @@ -566,6 +566,8 @@ initmap(Window w) * some displays say MSB even though they run on LSB. * Besides, this is more anal. */ + if(xscreendepth != DefaultDepth(xdisplay, DefaultScreen(xdisplay))) + xcmap = XCreateColormap(xdisplay, w, xvis, AllocNone); c = map[19]; /* find out index into colormap for our RGB */ diff --git a/gui-x11/xmem.h b/gui-x11/xmem.h index a92a47e..3272699 100644 --- a/gui-x11/xmem.h +++ b/gui-x11/xmem.h @@ -31,7 +31,7 @@ struct Xmem int dirty; Rectangle dirtyr; Rectangle r; - ulong pc; /* who wrote into xi */ + uintptr pc; /* who wrote into xi */ }; extern int xtblbit; diff --git a/include/lib.h b/include/lib.h index 2568ede..8e72575 100644 --- a/include/lib.h +++ b/include/lib.h @@ -236,7 +236,7 @@ extern int fmtprint(Fmt*, char*, ...); extern int fmtvprint(Fmt*, char*, va_list); extern void* mallocz(ulong, int); -extern ulong getcallerpc(void*); +extern uintptr getcallerpc(void*); extern char* cleanname(char*); extern void sysfatal(char*, ...); extern char* strecpy(char*, char*, char*); @@ -250,6 +250,7 @@ extern int dec64(uchar*, int, char*, int); extern int enc64(char*, int, uchar*, int); extern int dec32(uchar*, int, char*, int); extern int enc32(char*, int, uchar*, int); +extern int enc16(char*, int, uchar*, int); void hnputs(void *p, unsigned short v); extern int dofmt(Fmt*, char*); extern double __NaN(void); diff --git a/include/user.h b/include/user.h index 927f2c7..f6925ce 100644 --- a/include/user.h +++ b/include/user.h @@ -74,13 +74,13 @@ extern int pushssl(int, char*, char*, char*, int*); extern int iounit(int); extern long pread(int, void*, long, vlong); extern long pwrite(int, void*, long, vlong); -extern ulong rendezvous(ulong, ulong); +extern void* rendezvous(void*, void*); extern int kproc(char*, void(*)(void*), void*); extern int getpid(void); extern void panic(char*, ...); extern void sleep(int); extern void osyield(void); -extern void setmalloctag(void*, ulong); +extern void setmalloctag(void*, uintptr); extern int errstr(char*, uint); extern int rerrstr(char*, uint); extern int encrypt(void*, void*, int); diff --git a/kern/allocb.c b/kern/allocb.c index dbc91e1..ab1595c 100644 --- a/kern/allocb.c +++ b/kern/allocb.c @@ -20,7 +20,7 @@ static Block* _allocb(int size) { Block *b; - ulong addr; + uintptr addr; if((b = mallocz(sizeof(Block)+size+Hdrspc, 0)) == nil) return nil; @@ -31,13 +31,13 @@ _allocb(int size) b->flag = 0; /* align start of data portion by rounding up */ - addr = (ulong)b; + addr = (uintptr)b; addr = ROUND(addr + sizeof(Block), BLOCKALIGN); b->base = (uchar*)addr; /* align end of data portion by rounding down */ b->lim = ((uchar*)b) + sizeof(Block)+size+Hdrspc; - addr = (ulong)(b->lim); + addr = (uintptr)(b->lim); addr = addr & ~(BLOCKALIGN-1); b->lim = (uchar*)addr; @@ -60,7 +60,7 @@ allocb(int size) * Can still error out of here, though. */ if(up == nil) - panic("allocb without up: %luX\n", getcallerpc(&size)); + panic("allocb without up: %p\n", getcallerpc(&size)); if((b = _allocb(size)) == nil){ panic("allocb: no memory for %d bytes\n", size); } diff --git a/kern/chan.c b/kern/chan.c index a60a32a..79d2762 100644 --- a/kern/chan.c +++ b/kern/chan.c @@ -112,7 +112,7 @@ decref(Ref *r) x = --r->ref; unlock(&r->lk); if(x < 0) - panic("decref, pc=0x%lux", getcallerpc(&r)); + panic("decref, pc=0x%p", getcallerpc(&r)); return x; } @@ -354,7 +354,7 @@ void cclose(Chan *c) { if(c->flag&CFREE) - panic("cclose %lux", getcallerpc(&c)); + panic("cclose %p", getcallerpc(&c)); if(decref(&c->ref)) return; diff --git a/kern/dat.h b/kern/dat.h index f0752c5..6fea6f6 100644 --- a/kern/dat.h +++ b/kern/dat.h @@ -401,8 +401,8 @@ struct Proc int notepending; /* note issued but not acted on */ int kp; /* true if a kernel process */ - ulong rendtag; /* Tag for rendezvous */ - ulong rendval; /* Value for rendezvous */ + void* rendtag; /* Tag for rendezvous */ + void* rendval; /* Value for rendezvous */ Proc *rendhash; /* Hash list for tag values */ int nerrlab; diff --git a/kern/devaudio-unix.c b/kern/devaudio-unix.c index 12e1b12..ad5af74 100644 --- a/kern/devaudio-unix.c +++ b/kern/devaudio-unix.c @@ -179,4 +179,5 @@ int audiodevread(void *v, int n) { error("no reading"); + return -1; } diff --git a/kern/devdraw.c b/kern/devdraw.c index 5425321..9bc56f4 100644 --- a/kern/devdraw.c +++ b/kern/devdraw.c @@ -867,12 +867,17 @@ drawpoint(Point *p, uchar *a) p->y = BGLONG(a+1*4); } +#define isvgascreen(dst) 1 + + Point -drawchar(Memimage *dst, Point p, Memimage *src, Point *sp, DImage *font, int index, int op) +drawchar(Memimage *dst, Memimage *rdst, Point p, + Memimage *src, Point *sp, DImage *font, int index, int op) { FChar *fc; Rectangle r; Point sp1; + static Memimage *tmp; fc = &font->fchar[index]; r.min.x = p.x+fc->left; @@ -881,7 +886,31 @@ drawchar(Memimage *dst, Point p, Memimage *src, Point *sp, DImage *font, int ind r.max.y = r.min.y+(fc->maxy-fc->miny); sp1.x = sp->x+fc->left; sp1.y = sp->y+fc->miny; - memdraw(dst, r, src, sp1, font->image, Pt(fc->minx, fc->miny), op); + + /* + * If we're drawing greyscale fonts onto a VGA screen, + * it's very costly to read the screen memory to do the + * alpha blending inside memdraw. If this is really a stringbg, + * then rdst is the bg image (in main memory) which we can + * refer to for the underlying dst pixels instead of reading dst + * directly. + */ + if(1 || (isvgascreen(dst) && !isvgascreen(rdst) /*&& font->image->depth > 1*/)){ + if(tmp == nil || tmp->chan != dst->chan || Dx(tmp->r) < Dx(r) || Dy(tmp->r) < Dy(r)){ + if(tmp) + freememimage(tmp); + tmp = allocmemimage(Rect(0,0,Dx(r),Dy(r)), dst->chan); + if(tmp == nil) + goto fallback; + } + memdraw(tmp, Rect(0,0,Dx(r),Dy(r)), rdst, r.min, memopaque, ZP, S); + memdraw(tmp, Rect(0,0,Dx(r),Dy(r)), src, sp1, font->image, Pt(fc->minx, fc->miny), op); + memdraw(dst, r, tmp, ZP, memopaque, ZP, S); + }else{ + fallback: + memdraw(dst, r, src, sp1, font->image, Pt(fc->minx, fc->miny), op); + } + p.x += fc->width; sp->x += fc->width; return p; @@ -1873,6 +1902,7 @@ drawmesg(Client *client, void *av, int n) clipr = dst->clipr; dst->clipr = r; op = drawclientop(client); + l = dst; if(*a == 'x'){ /* paint background */ l = drawimage(client, a+47); @@ -1901,7 +1931,7 @@ drawmesg(Client *client, void *av, int n) dst->clipr = clipr; error(Eindex); } - q = drawchar(dst, q, src, &sp, font, ci, op); + q = drawchar(dst, l, q, src, &sp, font, ci, op); u += 2; } dst->clipr = clipr; diff --git a/kern/devlfd.c b/kern/devlfd.c index 29a1ba4..7c61e0c 100644 --- a/kern/devlfd.c +++ b/kern/devlfd.c @@ -15,7 +15,7 @@ lfdchan(int fd) c = newchan(); c->type = devno('L', 0); - c->aux = (void*)fd; + c->aux = (void*)(uintptr)fd; c->name = newcname("fd"); c->mode = ORDWR; c->qid.type = 0; @@ -76,14 +76,14 @@ lfdopen(Chan *c, int omode) static void lfdclose(Chan *c) { - close((int)c->aux); + close((int)(uintptr)c->aux); } static long lfdread(Chan *c, void *buf, long n, vlong off) { USED(off); /* can't pread on pipes */ - n = read((int)c->aux, buf, n); + n = read((int)(uintptr)c->aux, buf, n); if(n < 0){ iprint("error %d\n", errno); oserror(); @@ -96,7 +96,7 @@ lfdwrite(Chan *c, void *buf, long n, vlong off) { USED(off); /* can't pread on pipes */ - n = write((int)c->aux, buf, n); + n = write((int)(uintptr)c->aux, buf, n); if(n < 0){ iprint("error %d\n", errno); oserror(); diff --git a/kern/devmnt.c b/kern/devmnt.c index 5dcf9aa..8675d4f 100644 --- a/kern/devmnt.c +++ b/kern/devmnt.c @@ -1037,7 +1037,7 @@ alloctag(void) for(i = 0; i < NMASK; i++){ v = mntalloc.tagmask[i]; - if(v == ~0UL) + if(v == ~0) continue; for(j = 0; j < 1<uid)) kstrdup(&s->user, dir->uid); - if(dir->mode != ~0UL) + if(dir->mode != ~0) s->perm = dir->mode; free(dir); diff --git a/kern/devtls.c b/kern/devtls.c index 4b650b2..8e8eed9 100644 --- a/kern/devtls.c +++ b/kern/devtls.c @@ -224,7 +224,7 @@ static void put64(uchar *p, vlong x); static void put32(uchar *p, u32int); static void put24(uchar *p, int); static void put16(uchar *p, int); -static u32int get32(uchar *p); +/* static u32int get32(uchar *p); */ static int get16(uchar *p); static void tlsSetState(TlsRec *tr, int new, int old); static void rcvAlert(TlsRec *tr, int err); @@ -241,14 +241,18 @@ static char *tlsstate(int s); static void pdump(int, void*, char*); static char *tlsnames[] = { -[Qclonus] "clone", -[Qencalgs] "encalgs", -[Qhashalgs] "hashalgs", -[Qdata] "data", -[Qctl] "ctl", -[Qhand] "hand", -[Qstatus] "status", -[Qstats] "stats", + /* unused */ 0, + /* topdir */ 0, + /* protodir */ 0, + "clone", + "encalgs", + "hashalgs", + /* convdir */ 0, + "data", + "ctl", + "hand", + "status", + "stats", }; static int convdir[] = { Qctl, Qdata, Qhand, Qstatus, Qstats }; @@ -2132,11 +2136,13 @@ put16(uchar *p, int x) p[1] = x; } +/* static u32int get32(uchar *p) { return (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3]; } +*/ static int get16(uchar *p) diff --git a/kern/posix.c b/kern/posix.c index 3e06131..6069987 100644 --- a/kern/posix.c +++ b/kern/posix.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include diff --git a/kern/qio.c b/kern/qio.c index 3d646f7..edee200 100644 --- a/kern/qio.c +++ b/kern/qio.c @@ -96,7 +96,7 @@ padblock(Block *bp, int size) } if(bp->next) - panic("padblock 0x%luX", getcallerpc(&bp)); + panic("padblock 0x%p", getcallerpc(&bp)); n = BLEN(bp); padblockcnt++; nbp = allocb(size+n); @@ -110,7 +110,7 @@ padblock(Block *bp, int size) size = -size; if(bp->next) - panic("padblock 0x%luX", getcallerpc(&bp)); + panic("padblock 0x%p", getcallerpc(&bp)); if(bp->lim - bp->wp >= size) return bp; @@ -1270,7 +1270,7 @@ qwrite(Queue *q, void *vp, int len) uchar *p = vp; QDEBUG if(!islo()) - print("qwrite hi %lux\n", getcallerpc(&q)); + print("qwrite hi %p\n", getcallerpc(&q)); sofar = 0; do { diff --git a/kern/stub.c b/kern/stub.c index 8c291b5..d9c6906 100644 --- a/kern/stub.c +++ b/kern/stub.c @@ -139,7 +139,7 @@ rdb(void) } void -setmalloctag(void *v, ulong tag) +setmalloctag(void *v, uintptr tag) { USED(v); USED(tag); diff --git a/kern/sysfile.c b/kern/sysfile.c index 32272fd..18dadbc 100644 --- a/kern/sysfile.c +++ b/kern/sysfile.c @@ -1189,15 +1189,15 @@ rerrstr(char *buf, uint n) return strlen(buf); } -ulong -_sysrendezvous(ulong arg0, ulong arg1) +void* +_sysrendezvous(void* arg0, void* arg1) { - ulong tag, val; + void *tag, *val; Proc *p, **l; tag = arg0; - l = &REND(up->rgrp, tag); - up->rendval = ~0UL; + l = &REND(up->rgrp, (uintptr)tag); + up->rendval = (void*)~0; lock(&up->rgrp->ref.lk); for(p = *l; p; p = p->rendhash) { @@ -1228,15 +1228,15 @@ _sysrendezvous(ulong arg0, ulong arg1) return up->rendval; } -ulong -sysrendezvous(ulong tag, ulong val) +void* +sysrendezvous(void *tag, void *val) { - ulong n; + void *n; starterror(); if(waserror()){ _syserror(); - return -1; + return (void*)~0; } n = _sysrendezvous(tag, val); enderror(); diff --git a/libauth/auth_proxy.c b/libauth/auth_proxy.c index 186031e..3a65aba 100644 --- a/libauth/auth_proxy.c +++ b/libauth/auth_proxy.c @@ -90,6 +90,7 @@ auth_getinfo(AuthRpc *rpc) if(auth_rpc(rpc, "authinfo", nil, 0) != ARok) return nil; + a = nil; if(convM2AI((uchar*)rpc->arg, rpc->narg, &a) == nil){ werrstr("bad auth info from factotum"); return nil; diff --git a/libc/dofmt.c b/libc/dofmt.c index be0732c..826360d 100644 --- a/libc/dofmt.c +++ b/libc/dofmt.c @@ -333,7 +333,11 @@ __ifmt(Fmt *f) break; } if(f->r == 'p'){ - u = (ulong)va_arg(f->args, void*); + if(sizeof(void*) == sizeof(uvlong)){ + isv = 1; + vu = (uvlong)va_arg(f->args, uvlong); + }else + u = (ulong)va_arg(f->args, ulong); f->r = 'x'; fl |= FmtUnsigned; }else if(fl & FmtVLong){ diff --git a/libc/lock.c b/libc/lock.c index 4d6759d..e6ba5cf 100644 --- a/libc/lock.c +++ b/libc/lock.c @@ -38,7 +38,7 @@ lock(Lock *lk) for(;;) { if(canlock(lk)) return; - iprint("lock loop %ld: val=%d &lock=%ux pc=%ux\n", getpid(), lk->key, lk, getcallerpc(&lk)); + iprint("lock loop %ld: val=%d &lock=%ux pc=%p\n", getpid(), lk->key, lk, getcallerpc(&lk)); osmsleep(1000); } } diff --git a/libc/strtod.c b/libc/strtod.c index 7df7690..a48abe5 100644 --- a/libc/strtod.c +++ b/libc/strtod.c @@ -224,7 +224,7 @@ fmtstrtod(const char *as, char **aas) /* close approx by naive conversion */ mid[0] = 0; mid[1] = 1; - for(i=0; c=a[i]; i++) { + for(i=0; (c=a[i]); i++) { mid[0] = mid[0]*10 + (c-'0'); mid[1] = mid[1]*10; if(i >= 8) diff --git a/libmemdraw/alloc.c b/libmemdraw/alloc.c index fdc0f3c..1f41d2d 100644 --- a/libmemdraw/alloc.c +++ b/libmemdraw/alloc.c @@ -19,7 +19,7 @@ memimagemove(void *from, void *to) md->base = to; /* if allocmemimage changes this must change too */ - md->bdata = (uchar*)&md->base[2]; + md->bdata = (uchar*)md->base+sizeof(Memdata*)+sizeof(ulong); } Memimage* @@ -70,7 +70,8 @@ Memimage* _allocmemimage(Rectangle r, ulong chan) { int d; - ulong l, nw; + u32int l, nw; + uchar *p; Memdata *md; Memimage *i; @@ -86,18 +87,21 @@ _allocmemimage(Rectangle r, ulong chan) return nil; md->ref = 1; - md->base = poolalloc(imagmem, (2+nw)*sizeof(ulong)); + md->base = poolalloc(imagmem, sizeof(Memdata*)+(1+nw)*sizeof(ulong)); if(md->base == nil){ free(md); return nil; } - md->base[0] = (ulong)md; - md->base[1] = getcallerpc(&r); + p = (uchar*)md->base; + *(Memdata**)p = md; + p += sizeof(Memdata*); + + *(ulong*)p = getcallerpc(&r); + p += sizeof(ulong); /* if this changes, memimagemove must change too */ - md->bdata = (uchar*)&md->base[2]; - + md->bdata = p; md->allocd = 1; i = allocmemimaged(r, chan, md, nil); @@ -129,7 +133,7 @@ _freememimage(Memimage *i) ulong* wordaddr(Memimage *i, Point p) { - return (ulong*) ((ulong)byteaddr(i, p) & ~(sizeof(ulong)-1)); + return (ulong*) ((uintptr)byteaddr(i, p) & ~(sizeof(ulong)-1)); } uchar* diff --git a/libmemdraw/defont.c b/libmemdraw/defont.c index d78ab34..3b0805c 100644 --- a/libmemdraw/defont.c +++ b/libmemdraw/defont.c @@ -21,7 +21,7 @@ getmemdefont(void) * declared as char*, not ulong*. */ p = (char*)defontdata; - n = (ulong)p & 3; + n = (uintptr)p & 3; if(n != 0){ memmove(p+(4-n), p, sizeofdefont-n); p += 4-n; diff --git a/libsec/ranlib.core b/libsec/ranlib.core deleted file mode 100644 index 8a0e4c4c1a23e1a05f95f0990c71361107140ae5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430080 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 diff --git a/posix-386/getcallerpc.c b/posix-386/getcallerpc.c index 553c750..3614c59 100644 --- a/posix-386/getcallerpc.c +++ b/posix-386/getcallerpc.c @@ -1,8 +1,8 @@ #include "u.h" #include "libc.h" -ulong +uintptr getcallerpc(void *a) { - return ((ulong*)a)[-1]; + return ((uintptr*)a)[-1]; } diff --git a/posix-power/getcallerpc.c b/posix-power/getcallerpc.c index 553c750..3614c59 100644 --- a/posix-power/getcallerpc.c +++ b/posix-power/getcallerpc.c @@ -1,8 +1,8 @@ #include "u.h" #include "libc.h" -ulong +uintptr getcallerpc(void *a) { - return ((ulong*)a)[-1]; + return ((uintptr*)a)[-1]; } diff --git a/win32-386/getcallerpc.c b/win32-386/getcallerpc.c index 553c750..3614c59 100644 --- a/win32-386/getcallerpc.c +++ b/win32-386/getcallerpc.c @@ -1,8 +1,8 @@ #include "u.h" #include "libc.h" -ulong +uintptr getcallerpc(void *a) { - return ((ulong*)a)[-1]; + return ((uintptr*)a)[-1]; }