From 5283bc4fca96dc1d66e9e184a58fe315d2e2c7c0 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Sat, 22 May 1999 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1999-05-22 --- alphapc/mem.h | 1 + carrera/mem.h | 1 + ip/udp.c | 3 ++- mpc/mem.h | 1 + pc/devlml.c | 22 ++++++++++++++++++++++ pc/mem.h | 1 + port/qio.c | 18 +++++++++++++----- 7 files changed, 41 insertions(+), 6 deletions(-) diff --git a/alphapc/mem.h b/alphapc/mem.h index 07e785063733b64ae7b5b706e312481fc56644d0..3dc137085252400b19aa7be62119083864167ac3 100644 --- a/alphapc/mem.h +++ b/alphapc/mem.h @@ -15,6 +15,7 @@ #define PGSHIFT 13 /* log(BY2PG) */ #define ROUND(s, sz) (((s)+(sz-1))&~(sz-1)) #define PGROUND(s) ROUND(s, BY2PG) +#define BLOCKALIGN 8 #define BY2PTE 8 /* bytes per pte entry */ #define PTE2PG (BY2PG/BY2PTE) /* pte entries per page */ diff --git a/carrera/mem.h b/carrera/mem.h index c7a5e71d7c14bbaf720cdd4def865515abba2344..db8b3a9cf3a497128c0803429cfa1e12b28ed0b1 100644 --- a/carrera/mem.h +++ b/carrera/mem.h @@ -18,6 +18,7 @@ #define MAXMACH 1 /* max # cpus system can run */ #define KSTACK 4096 /* Size of kernel stack */ +#define BLOCKALIGN 8 /* * Time diff --git a/ip/udp.c b/ip/udp.c index dff93c9ab5210614c155861e48ca0a2985d108ce..6d3fc54ed1991b5db152cfb09ce9484a631d11db 100644 --- a/ip/udp.c +++ b/ip/udp.c @@ -215,7 +215,8 @@ udpkick(Conv *c, int) hnputs(uh->udpdport, c->rport); if(ipcmp(c->laddr, IPnoaddr) == 0) findlocalip(f, c->laddr, c->raddr); - v6tov4(uh->udpsrc, c->laddr); + if(v6tov4(uh->udpsrc, c->laddr) < 0) + memset(uh->udpsrc, 0, sizeof(uh->udpsrc)); break; } hnputs(uh->udpsport, c->lport); diff --git a/mpc/mem.h b/mpc/mem.h index 7594f07668a1f394b33ede2f44f9abbbef8fd69c..bd14fbcce092e7671cf0304d8efc74d298c69342 100644 --- a/mpc/mem.h +++ b/mpc/mem.h @@ -17,6 +17,7 @@ #define PGROUND(s) ROUND(s, BY2PG) #define CACHELINELOG 4 #define CACHELINESZ (1<statCom); lmlmap.codedata = (ulong)codeData; +// LMLSEG + memset(&segbuf, 0, sizeof(segbuf)); + segbuf.attr = SG_PHYSICAL; + segbuf.name = smalloc(NAMELEN); + snprint(segbuf.name, NAMELEN, "lmlmjpg"); + segbuf.pa = PADDR(codeData); + segbuf.size = sizeof(CodeData); + addphysseg(&segbuf); + + memset(&segreg, 0, sizeof(segreg)); + segreg.attr = SG_PHYSICAL; + segreg.name = smalloc(NAMELEN); + snprint(segreg.name, NAMELEN, "lmlregs"); + segreg.pa = (ulong)regpa; + segreg.size = pcidev->mem[0].size; + addphysseg(&segreg); +// + return; } diff --git a/pc/mem.h b/pc/mem.h index 993617b45111427e04ab6ab9621f32ef76a5574c..68cba34ae6c9710b5d8b61a610496c3a6781598f 100644 --- a/pc/mem.h +++ b/pc/mem.h @@ -14,6 +14,7 @@ #define PGSHIFT 12 /* log(BY2PG) */ #define ROUND(s, sz) (((s)+((sz)-1))&~((sz)-1)) #define PGROUND(s) ROUND(s, BY2PG) +#define BLOCKALIGN 8 #define MAXMACH 8 /* max # cpus system can run */ #define KSTACK 4096 /* Size of kernel stack */ diff --git a/port/qio.c b/port/qio.c index aec41e15e3794e7a6722682448ee762b35262fc8..b7d9c66fe7440c635f1d04269a76d34a57d5fef5 100644 --- a/port/qio.c +++ b/port/qio.c @@ -120,19 +120,27 @@ allocb(int size) ulong addr; int n; - n = sizeof(Block) + size + (BY2V-1); + n = sizeof(Block) + size; b = mallocz(n+Hdrspc, 0); if(b == 0) exhausted("Blocks"); memset(b, 0, sizeof(Block)); + /* align start of data portion by rounding up */ addr = (ulong)b; - addr = ROUND(addr + sizeof(Block), BY2V); + addr = ROUND(addr + sizeof(Block), BLOCKALIGN); b->base = (uchar*)addr; + + /* align end of data portion by rounding down */ b->lim = ((uchar*)b) + msize(b); - b->rp = b->base; - n = b->lim - b->base - size; - b->rp += n & ~(BY2V-1); + addr = (ulong)(b->lim); + addr = addr & ~(BLOCKALIGN-1); + b->lim = (uchar*)addr; + + /* leave sluff at beginning for added headers */ + b->rp = b->lim - ROUND(size, BLOCKALIGN); + if(b->rp < b->base) + panic("allocb"); b->wp = b->rp; return b;