commit 7e8322572a62ce5678df8b20faf5e3e508f43cb4
parent 3945e86207f2afcbc6a2e0a63e82c417ce210db9
Author: Russ Cox <rsc@swtch.com>
Date:   Mon,  8 Dec 2008 23:35:36 -0800
9vx: Linux/x86-64 works
With any luck, I've broken everyone else.
Diffstat:
51 files changed, 383 insertions(+), 369 deletions(-)
diff --git a/src/9vx/a/a.out.h b/src/9vx/a/a.out.h
@@ -1,14 +1,14 @@
 typedef	struct	Exec	Exec;
 struct	Exec
 {
-	int	magic;		/* magic number */
-	int	text;	 	/* size of text segment */
-	int	data;	 	/* size of initialized data */
-	int	bss;	  	/* size of uninitialized data */
-	int	syms;	 	/* size of symbol table */
-	int	entry;	 	/* entry point */
-	int	spsz;		/* size of pc/sp offset table */
-	int	pcsz;		/* size of pc/line number table */
+	int32	magic;		/* magic number */
+	int32	text;	 	/* size of text segment */
+	int32	data;	 	/* size of initialized data */
+	int32	bss;	  	/* size of uninitialized data */
+	int32	syms;	 	/* size of symbol table */
+	int32	entry;	 	/* entry point32 */
+	int32	spsz;		/* size of pc/sp offset table */
+	int32	pcsz;		/* size of pc/line number table */
 };
 
 #define HDR_MAGIC	0x00008000		/* header expansion */
diff --git a/src/9vx/a/auth.c b/src/9vx/a/auth.c
@@ -20,7 +20,7 @@ iseve(void)
 }
 
 long
-sysfversion(u32int *arg)
+sysfversion(uint32 *arg)
 {
 	char *vers;
 	uint arglen, m, msize;
@@ -46,7 +46,7 @@ sysfversion(u32int *arg)
 }
 
 long
-sys_fsession(u32int *arg)
+sys_fsession(uint32 *arg)
 {
 	/* deprecated; backwards compatibility only */
 
@@ -57,7 +57,7 @@ sys_fsession(u32int *arg)
 }
 
 long
-sysfauth(u32int *arg)
+sysfauth(uint32 *arg)
 {
 	Chan *c, *ac;
 	char *aname;
diff --git a/src/9vx/a/chan.c b/src/9vx/a/chan.c
@@ -1314,7 +1314,7 @@ namec(char *aname, int amode, int omode, ulong perm)
 		nexterror();
 	}
 if(tracesyscalls)
-	print("\tnamec %s\n", aname);
+	iprint("\tnamec %s\n", aname);
 
 	DBG("namec %s %d %d\n", aname, amode, omode);
 	name = aname;
diff --git a/src/9vx/a/dat.h b/src/9vx/a/dat.h
@@ -23,9 +23,6 @@ typedef vlong		Tval;
 typedef struct Ureg	Ureg;
 typedef struct Vctl	Vctl;
 
-typedef unsigned long long uint64;
-
-
 #define MAXSYSARG	5	/* for mount(fd, afd, mpt, flag, arg) */
 
 /*
diff --git a/src/9vx/a/devroot.c b/src/9vx/a/devroot.c
@@ -223,9 +223,9 @@ rootread(Chan *c, void *buf, long n, vlong off)
 #ifdef asdf
 print("[%d] kaddr %.8ulx base %.8ulx offset %ld (%.8ulx), n %d %.8ux %.8ux %.8ux\n", 
 		t, buf, data, offset, offset, n,
-		((u32int*)(data+offset))[0],
-		((u32int*)(data+offset))[1],
-		((u32int*)(data+offset))[2]);
+		((uint32*)(data+offset))[0],
+		((uint32*)(data+offset))[1],
+		((uint32*)(data+offset))[2]);
 #endif
 	memmove(buf, data+offset, n);
 	return n;
diff --git a/src/9vx/a/devtls.c b/src/9vx/a/devtls.c
@@ -222,7 +222,7 @@ static DigestState*nomac(uchar *p, ulong len, uchar *key, ulong klen, uchar *dig
 static void	sslPackMac(Secret *sec, uchar *mackey, uchar *seq, uchar *header, uchar *body, int len, uchar *mac);
 static void	tlsPackMac(Secret *sec, uchar *mackey, uchar *seq, uchar *header, uchar *body, int len, uchar *mac);
 static void	put64(uchar *p, vlong x);
-static void	put32(uchar *p, u32int);
+static void	put32(uchar *p, uint32);
 static void	put24(uchar *p, int);
 static void	put16(uchar *p, int);
 static int	get16(uchar *p);
@@ -2101,7 +2101,7 @@ tlsPackMac(Secret *sec, uchar *mackey, uchar *seq, uchar *header, uchar *body, i
 }
 
 static void
-put32(uchar *p, u32int x)
+put32(uchar *p, uint32 x)
 {
 	p[0] = x>>24;
 	p[1] = x>>16;
@@ -2112,8 +2112,8 @@ put32(uchar *p, u32int x)
 static void
 put64(uchar *p, vlong x)
 {
-	put32(p, (u32int)(x >> 32));
-	put32(p+4, (u32int)x);
+	put32(p, (uint32)(x >> 32));
+	put32(p+4, (uint32)x);
 }
 
 static void
@@ -2132,7 +2132,7 @@ put16(uchar *p, int x)
 }
 
 #if 0
-static u32int
+static uint32
 get32(uchar *p)
 {
 	return (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3];
diff --git a/src/9vx/a/eipfmt.c b/src/9vx/a/eipfmt.c
@@ -27,7 +27,7 @@ eipfmt(Fmt *f)
 	static char *efmt = "%.2ux%.2ux%.2ux%.2ux%.2ux%.2ux";
 	static char *ifmt = "%d.%d.%d.%d";
 	uchar *p, ip[16];
-	u32int *lp;
+	uint32 *lp;
 	ushort s;
 	int i, j, n, eln, eli;
 
@@ -73,7 +73,7 @@ common:
 		return fmtstrcpy(f, buf);
 
 	case 'i':		/* v6 address as 4 longs */
-		lp = va_arg(f->args, u32int*);
+		lp = va_arg(f->args, uint32*);
 		for(i = 0; i < 4; i++)
 			hnputl(ip+4*i, *lp++);
 		p = ip;
diff --git a/src/9vx/a/fcall.h b/src/9vx/a/fcall.h
@@ -7,11 +7,11 @@ typedef
 struct	Fcall
 {
 	uchar	type;
-	u32int	fid;
+	uint32	fid;
 	ushort	tag;
 	union {
 		struct {
-			u32int	msize;		/* Tversion, Rversion */
+			uint32	msize;		/* Tversion, Rversion */
 			char	*version;	/* Tversion, Rversion */
 		};
 		struct {
@@ -22,23 +22,23 @@ struct	Fcall
 		};
 		struct {
 			Qid	qid;		/* Rattach, Ropen, Rcreate */
-			u32int	iounit;		/* Ropen, Rcreate */
+			uint32	iounit;		/* Ropen, Rcreate */
 		};
 		struct {
 			Qid	aqid;		/* Rauth */
 		};
 		struct {
-			u32int	afid;		/* Tauth, Tattach */
+			uint32	afid;		/* Tauth, Tattach */
 			char	*uname;		/* Tauth, Tattach */
 			char	*aname;		/* Tauth, Tattach */
 		};
 		struct {
-			u32int	perm;		/* Tcreate */ 
+			uint32	perm;		/* Tcreate */ 
 			char	*name;		/* Tcreate */
 			uchar	mode;		/* Tcreate, Topen */
 		};
 		struct {
-			u32int	newfid;		/* Twalk */
+			uint32	newfid;		/* Twalk */
 			ushort	nwname;		/* Twalk */
 			char	*wname[MAXWELEM];	/* Twalk */
 		};
@@ -48,7 +48,7 @@ struct	Fcall
 		};
 		struct {
 			vlong	offset;		/* Tread, Twrite */
-			u32int	count;		/* Tread, Twrite, Rread */
+			uint32	count;		/* Tread, Twrite, Rread */
 			char	*data;		/* Twrite, Rread */
 		};
 		struct {
@@ -62,7 +62,7 @@ struct	Fcall
 #define	GBIT8(p)	((p)[0])
 #define	GBIT16(p)	((p)[0]|((p)[1]<<8))
 #define	GBIT32(p)	((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24))
-#define	GBIT64(p)	((u32int)((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24)) |\
+#define	GBIT64(p)	((uint32)((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24)) |\
 				((vlong)((p)[4]|((p)[5]<<8)|((p)[6]<<16)|((p)[7]<<24)) << 32))
 
 #define	PBIT8(p,v)	(p)[0]=(v)
@@ -82,7 +82,7 @@ struct	Fcall
 #define STATFIXLEN	(BIT16SZ+QIDSZ+5*BIT16SZ+4*BIT32SZ+1*BIT64SZ)	/* amount of fixed length data in a stat buffer */
 
 #define	NOTAG		(ushort)~0U	/* Dummy tag */
-#define	NOFID		(u32int)~0U	/* Dummy fid */
+#define	NOFID		(uint32)~0U	/* Dummy fid */
 #define	IOHDRSZ		24	/* ample room for Twrite/Rread header (iounit) */
 
 enum
diff --git a/src/9vx/a/libsec.h b/src/9vx/a/libsec.h
@@ -52,8 +52,8 @@ struct BFstate
 	uchar	key[56];
 	uchar	ivec[8];
 
-	u32int 	pbox[BFrounds+2];
-	u32int	sbox[1024];
+	uint32 	pbox[BFrounds+2];
+	uint32	sbox[1024];
 };
 
 void	setupBFstate(BFstate *s, uchar key[], int keybytes, uchar *ivec);
@@ -138,7 +138,7 @@ typedef struct DigestState DigestState;
 struct DigestState
 {
 	uvlong	len;
-	u32int	state[5];
+	uint32	state[5];
 	uchar	buf[128];
 	int	blen;
 	char	malloced;
diff --git a/src/9vx/a/memdraw.h b/src/9vx/a/memdraw.h
@@ -17,7 +17,7 @@ typedef struct	Memdrawparam	Memdrawparam;
 
 struct Memdata
 {
-	u32int	*base;	/* allocated data pointer */
+	uint32	*base;	/* allocated data pointer */
 	uchar	*bdata;	/* pointer to first byte of actual data; word-aligned */
 	int		ref;		/* number of Memimages using this data */
 	void*	imref;
@@ -39,14 +39,14 @@ struct Memimage
 	Rectangle	clipr;		/* clipping region */
 	int		depth;	/* number of bits of storage per pixel */
 	int		nchan;	/* number of channels */
-	u32int	chan;	/* channel descriptions */
+	uint32	chan;	/* channel descriptions */
 	Memcmap	*cmap;
 
 	Memdata	*data;	/* pointer to data; shared by windows in this image */
 	int		zero;		/* data->bdata+zero==&byte containing (0,0) */
-	u32int	width;	/* width in words of a single scan line */
+	uint32	width;	/* width in words of a single scan line */
 	Memlayer	*layer;	/* nil if not a layer*/
-	u32int	flags;
+	uint32	flags;
 
 	int		shift[NChan];
 	int		mask[NChan];
@@ -103,20 +103,20 @@ struct	Memdrawparam
 	Rectangle mr;
 	int op;
 
-	u32int state;
-	u32int mval;	/* if Simplemask, the mask pixel in mask format */
-	u32int mrgba;	/* mval in rgba */
-	u32int sval;	/* if Simplesrc, the source pixel in src format */
-	u32int srgba;	/* sval in rgba */
-	u32int sdval;	/* sval in dst format */
+	uint32 state;
+	uint32 mval;	/* if Simplemask, the mask pixel in mask format */
+	uint32 mrgba;	/* mval in rgba */
+	uint32 sval;	/* if Simplesrc, the source pixel in src format */
+	uint32 srgba;	/* sval in rgba */
+	uint32 sdval;	/* sval in dst format */
 };
 
 /*
  * Memimage management
  */
 
-extern Memimage*	allocmemimage(Rectangle, u32int);
-extern Memimage*	allocmemimaged(Rectangle, u32int, Memdata*, void*);
+extern Memimage*	allocmemimage(Rectangle, uint32);
+extern Memimage*	allocmemimaged(Rectangle, uint32, Memdata*, void*);
 extern Memimage*	readmemimage(int);
 extern Memimage*	creadmemimage(int);
 extern int	writememimage(int, Memimage*);
@@ -124,11 +124,11 @@ extern void	freememimage(Memimage*);
 extern int		loadmemimage(Memimage*, Rectangle, uchar*, int);
 extern int		cloadmemimage(Memimage*, Rectangle, uchar*, int);
 extern int		unloadmemimage(Memimage*, Rectangle, uchar*, int);
-extern u32int*	wordaddr(Memimage*, Point);
+extern uint32*	wordaddr(Memimage*, Point);
 extern uchar*	byteaddr(Memimage*, Point);
 extern int		drawclip(Memimage*, Rectangle*, Memimage*, Point*, Memimage*, Point*, Rectangle*, Rectangle*);
-extern void	memfillcolor(Memimage*, u32int);
-extern int		memsetchan(Memimage*, u32int);
+extern void	memfillcolor(Memimage*, uint32);
+extern int		memsetchan(Memimage*, uint32);
 
 /*
  * Graphics
@@ -185,19 +185,19 @@ extern int		drawdebug;
  */
 
 
-extern Memimage*	_allocmemimage(Rectangle, u32int);
+extern Memimage*	_allocmemimage(Rectangle, uint32);
 extern void	_freememimage(Memimage*);
-extern void	_memfillcolor(Memimage*, u32int);
+extern void	_memfillcolor(Memimage*, uint32);
 extern int	_loadmemimage(Memimage*, Rectangle, uchar*, int);
 extern int	_cloadmemimage(Memimage*, Rectangle, uchar*, int);
 extern int	_unloadmemimage(Memimage*, Rectangle, uchar*, int);
 extern void _memimageinit(void);
 extern Memdrawparam *_memimagedrawsetup(Memimage*, Rectangle, Memimage*, Point, Memimage*, Point, int);
 extern void _memimagedraw(Memdrawparam*);
-extern u32int _rgbatoimg(Memimage*, u32int);
-extern u32int _pixelbits(Memimage*, Point);
-extern u32int _imgtorgba(Memimage*, u32int);
+extern uint32 _rgbatoimg(Memimage*, uint32);
+extern uint32 _pixelbits(Memimage*, Point);
+extern uint32 _imgtorgba(Memimage*, uint32);
 
-extern u32int rgbatoimg(Memimage*, u32int);
-extern u32int pixelbits(Memimage*, Point);
-extern u32int imgtorgba(Memimage*, u32int);
+extern uint32 rgbatoimg(Memimage*, uint32);
+extern uint32 pixelbits(Memimage*, Point);
+extern uint32 imgtorgba(Memimage*, uint32);
diff --git a/src/9vx/a/portdat.h b/src/9vx/a/portdat.h
@@ -92,7 +92,7 @@ struct Alarms
 
 struct Sargs
 {
-	u32int	args[MAXSYSARG];
+	uint32	args[MAXSYSARG];
 };
 
 /*
diff --git a/src/9vx/a/proc.c b/src/9vx/a/proc.c
@@ -1340,6 +1340,10 @@ kproc(char *name, void (*func)(void *), void *arg)
 	Proc *p;
 	static Pgrp *kpgrp;
 
+	extern int tracekdev;
+	if(tracekdev)
+		iprint("kproc %s\n", name);
+
 	p = newproc();
 	p->psstate = 0;
 	p->procmode = 0640;
diff --git a/src/9vx/a/segment.c b/src/9vx/a/segment.c
@@ -730,7 +730,7 @@ pteflush(Pte *pte, int s, int e)
 }
 
 long
-syssegflush(u32int *arg)
+syssegflush(uint32 *arg)
 {
 	Segment *s;
 	ulong addr, l;
diff --git a/src/9vx/a/sysfile.c b/src/9vx/a/sysfile.c
@@ -171,7 +171,7 @@ openmode(ulong o)
 }
 
 long
-sysfd2path(u32int *arg)
+sysfd2path(uint32 *arg)
 {
 	Chan *c;
 	char *buf;
@@ -185,7 +185,7 @@ sysfd2path(u32int *arg)
 }
 
 long
-syspipe(u32int *arg)
+syspipe(uint32 *arg)
 {
 	int fd[2];
 	Chan *c[2];
@@ -224,7 +224,7 @@ syspipe(u32int *arg)
 }
 
 long
-sysdup(u32int *arg)
+sysdup(uint32 *arg)
 {
 	int fd;
 	Chan *c, *oc;
@@ -265,7 +265,7 @@ sysdup(u32int *arg)
 }
 
 long
-sysopen(u32int *arg)
+sysopen(uint32 *arg)
 {
 	int fd;
 	Chan *c = 0;
@@ -315,7 +315,7 @@ fdclose(int fd, int flag)
 }
 
 long
-sysclose(u32int *arg)
+sysclose(uint32 *arg)
 {
 	fdtochan(arg[0], -1, 0, 0);
 	fdclose(arg[0], 0);
@@ -628,7 +628,7 @@ mountfix(Chan *c, uchar *op, long n, long maxn)
 }
 
 static long
-doread(u32int *arg, vlong *offp)
+doread(uint32 *arg, vlong *offp)
 {
 	int dir;
 	long n, nn, nnn;
@@ -696,13 +696,13 @@ doread(u32int *arg, vlong *offp)
 }
 
 long
-sys_read(u32int *arg)
+sys_read(uint32 *arg)
 {
 	return doread(arg, nil);
 }
 
 long
-syspread(u32int *arg)
+syspread(uint32 *arg)
 {
 	vlong v;
 
@@ -716,7 +716,7 @@ syspread(u32int *arg)
 }
 
 static long
-dowrite(u32int *arg, vlong *offp)
+dowrite(uint32 *arg, vlong *offp)
 {
 	Chan *c;
 	long m, n;
@@ -767,13 +767,13 @@ dowrite(u32int *arg, vlong *offp)
 }
 
 long
-sys_write(u32int *arg)
+sys_write(uint32 *arg)
 {
 	return dowrite(arg, nil);
 }
 
 long
-syspwrite(u32int *arg)
+syspwrite(uint32 *arg)
 {
 	vlong v;
 
@@ -787,7 +787,7 @@ syspwrite(u32int *arg)
 }
 
 static void
-sseek(vlong *ret, u32int *arg)
+sseek(vlong *ret, uint32 *arg)
 {
 	Chan *c;
 	uchar buf[sizeof(Dir)+100];
@@ -796,7 +796,7 @@ sseek(vlong *ret, u32int *arg)
 	vlong off;
 	union {
 		vlong v;
-		u32int u[2];
+		uint32 u[2];
 	} o;
 
 	c = fdtochan(arg[1], -1, 1, 1);
@@ -856,20 +856,20 @@ sseek(vlong *ret, u32int *arg)
 }
 
 long
-sysseek(u32int *arg)
+sysseek(uint32 *arg)
 {
 	sseek(uvalidaddr(arg[0], BY2V, 1), arg);
 	return 0;
 }
 
 long
-sysoseek(u32int *arg)
+sysoseek(uint32 *arg)
 {
 	union {
 		vlong v;
-		u32int u[2];
+		uint32 u[2];
 	} o;
-	u32int a[5];
+	uint32 a[5];
 
 	o.v = (long)arg[1];
 	a[0] = 0;
@@ -924,7 +924,7 @@ pathlast(Path *p)
 }
 
 long
-sysfstat(u32int *arg)
+sysfstat(uint32 *arg)
 {
 	Chan *c;
 	uint l;
@@ -944,7 +944,7 @@ sysfstat(u32int *arg)
 }
 
 long
-sysstat(u32int *arg)
+sysstat(uint32 *arg)
 {
 	char *name;
 	Chan *c;
@@ -970,7 +970,7 @@ sysstat(u32int *arg)
 }
 
 long
-syschdir(u32int *arg)
+syschdir(uint32 *arg)
 {
 	Chan *c;
 	char *name;
@@ -1068,25 +1068,25 @@ bindmount(int ismount, int fd, int afd, char* arg0, char* arg1, ulong flag, char
 }
 
 long
-sysbind(u32int *arg)
+sysbind(uint32 *arg)
 {
 	return bindmount(0, -1, -1, uvalidaddr(arg[0], 1, 0), uvalidaddr(arg[1], 1, 0), arg[2], nil);
 }
 
 long
-sysmount(u32int *arg)
+sysmount(uint32 *arg)
 {
 	return bindmount(1, arg[0], arg[1], nil, uvalidaddr(arg[2], 1, 0), arg[3], uvalidaddr(arg[4], 1, 0));
 }
 
 long
-sys_mount(u32int *arg)
+sys_mount(uint32 *arg)
 {
 	return bindmount(1, arg[0], -1, nil, uvalidaddr(arg[1], 1, 0), arg[2], uvalidaddr(arg[3], 1, 0));
 }
 
 long
-sysunmount(u32int *arg)
+sysunmount(uint32 *arg)
 {
 	Chan *cmount, *cmounted;
 	char *mount, *mounted;
@@ -1128,7 +1128,7 @@ sysunmount(u32int *arg)
 }
 
 long
-syscreate(u32int *arg)
+syscreate(uint32 *arg)
 {
 	int fd;
 	Chan *c = 0;
@@ -1150,7 +1150,7 @@ syscreate(u32int *arg)
 }
 
 long
-sysremove(u32int *arg)
+sysremove(uint32 *arg)
 {
 	Chan *c;
 	char *name;
@@ -1207,7 +1207,7 @@ wstat(Chan *c, uchar *d, int nd)
 }
 
 long
-syswstat(u32int *arg)
+syswstat(uint32 *arg)
 {
 	Chan *c;
 	uint l;
@@ -1223,7 +1223,7 @@ syswstat(u32int *arg)
 }
 
 long
-sysfwstat(u32int *arg)
+sysfwstat(uint32 *arg)
 {
 	Chan *c;
 	uint l;
@@ -1271,7 +1271,7 @@ packoldstat(uchar *buf, Dir *d)
 }
 
 long
-sys_stat(u32int *arg)
+sys_stat(uint32 *arg)
 {
 	Chan *c;
 	uint l;
@@ -1306,7 +1306,7 @@ sys_stat(u32int *arg)
 }
 
 long
-sys_fstat(u32int *arg)
+sys_fstat(uint32 *arg)
 {
 	Chan *c;
 	char *name;
@@ -1341,14 +1341,14 @@ sys_fstat(u32int *arg)
 }
 
 long
-sys_wstat(u32int *u)
+sys_wstat(uint32 *u)
 {
 	error("old wstat system call - recompile");
 	return -1;
 }
 
 long
-sys_fwstat(u32int *u)
+sys_fwstat(uint32 *u)
 {
 	error("old fwstat system call - recompile");
 	return -1;
@@ -1362,7 +1362,7 @@ kbind(char *new, char *old, int flag)
 }
 
 long
-syspassfd(u32int *u)
+syspassfd(uint32 *u)
 {
 	error("passfd unimplemented");
 	return -1;
diff --git a/src/9vx/a/sysproc.c b/src/9vx/a/sysproc.c
@@ -15,14 +15,14 @@ extern void checkpages(void);
 extern void checkpagerefs(void);
 
 long
-sysr1(u32int *x)
+sysr1(uint32 *x)
 {
 	vx32sysr1();
 	return 0;
 }
 
 long
-sysrfork(u32int *arg)
+sysrfork(uint32 *arg)
 {
 	Proc *p;
 	int n, i;
@@ -205,8 +205,8 @@ sysrfork(u32int *arg)
 	return pid;
 }
 
-static u32int
-l2be(u32int l)
+static uint32
+l2be(uint32 l)
 {
 	uchar *cp;
 
@@ -217,7 +217,7 @@ l2be(u32int l)
 static char Echanged[] = "exec arguments changed underfoot";
 
 long
-sysexec(u32int *arg)
+sysexec(uint32 *arg)
 {
 	char *volatile elem, *volatile file, *ufile;
 	Chan *volatile tc;
@@ -238,12 +238,10 @@ sysexec(u32int *arg)
 		nexterror();
 	}
 
-iprint("sysexec %p %p\n", (void*)arg[0], (void*)arg[1]);
 	ufile = uvalidaddr(arg[0], 1, 0);
 	file = validnamedup(ufile, 1);
 	tc = namec(file, Aopen, OEXEC, 0);
 	kstrdup((char**)&elem, up->genbuf);
-iprint("sysexec %s %p\n", file, (void*)arg[1]);
 
 	/*
 	 * Read the header.  If it's a #!, fill in progarg[] with info and repeat.
@@ -285,7 +283,7 @@ iprint("sysexec %s %p\n", file, (void*)arg[1]);
 	/* 
 	 * #! has had its chance, now we need a real binary
 	 */
-	u32int magic, entry, text, etext, data, edata, bss, ebss;
+	uint32 magic, entry, text, etext, data, edata, bss, ebss;
 
 	magic = l2be(exec.magic);
 	if(n != sizeof(Exec) || l2be(exec.magic) != AOUT_MAGIC)
@@ -317,7 +315,7 @@ iprint("sysexec %s %p\n", file, (void*)arg[1]);
 	 * Pass 1: count number of arguments, string bytes.
 	 */
 	int nargv, strbytes;
-	u32int argp, ssize, spage;
+	uint32 argp, ssize, spage;
 
 	strbytes = 0;
 	for(i=0; i<nprogarg; i++)
@@ -325,11 +323,10 @@ iprint("sysexec %s %p\n", file, (void*)arg[1]);
 
 	argp = arg[1];
 	for(nargv=0;; nargv++, argp += BY2WD){
-		u32int a;
+		uint32 a;
 		char *str;
 
-		a = *(u32int*)uvalidaddr(argp, BY2WD, 0);
-iprint("a%d = %p = %p\n", nargv, (void*)argp, (void*)a);
+		a = *(uint32*)uvalidaddr(argp, BY2WD, 0);
 		if(a == 0)
 			break;
 		str = uvalidaddr(a, 1, 0);
@@ -385,7 +382,7 @@ iprint("a%d = %p = %p\n", nargv, (void*)argp, (void*)a);
 	uchar *uzero;
 	uzero = up->pmmu.uzero;
 	Tos *tos;
-	u32int utos;
+	uint32 utos;
 	utos = USTKTOP - sizeof(Tos);
 	tos = (Tos*)(uzero + utos + TSTKTOP - USTKTOP);
 	tos->cyclefreq = m->cyclefreq;
@@ -398,15 +395,15 @@ iprint("a%d = %p = %p\n", nargv, (void*)argp, (void*)a);
 	 * Argument pointers and strings, together.
 	 */
 	char *bp, *ep;
-	u32int *targp;
-	u32int ustrp, uargp;
+	uint32 *targp;
+	uint32 ustrp, uargp;
 
 	ustrp = utos - ROUND(strbytes, BY2WD);
 	uargp = ustrp - BY2WD*((nprogarg+nargv)+1);
 	bp = (char*)(uzero + ustrp + TSTKTOP - USTKTOP);
 	ep = bp + strbytes;
 	p = bp;
-	targp = (u32int*)(uzero + uargp + TSTKTOP - USTKTOP);
+	targp = (uint32*)(uzero + uargp + TSTKTOP - USTKTOP);
 	
 	/* #! args are trusted */
 	for(i=0; i<nprogarg; i++){
@@ -422,10 +419,10 @@ iprint("a%d = %p = %p\n", nargv, (void*)argp, (void*)a);
 	/* the rest are not */
 	argp = arg[1];
 	for(i=0; i<nargv; i++){
-		u32int a;
+		uint32 a;
 		char *str;
 		
-		a = *(u32int*)uvalidaddr(argp, BY2WD, 0);
+		a = *(uint32*)uvalidaddr(argp, BY2WD, 0);
 		argp += BY2WD;
 		
 		str = uvalidaddr(a, 1, 0);
@@ -438,7 +435,7 @@ iprint("a%d = %p = %p\n", nargv, (void*)argp, (void*)a);
 		ustrp += n;
 	}
 
-	if(*(u32int*)uvalidaddr(argp, BY2WD, 0) != 0)
+	if(*(uint32*)uvalidaddr(argp, BY2WD, 0) != 0)
 		error(Echanged);	
 	*targp = 0;
 
@@ -606,7 +603,7 @@ return0(void *v)
 }
 
 long
-syssleep(u32int *arg)
+syssleep(uint32 *arg)
 {
 
 	int n;
@@ -623,13 +620,13 @@ syssleep(u32int *arg)
 }
 
 long
-sysalarm(u32int *arg)
+sysalarm(uint32 *arg)
 {
 	return procalarm(arg[0]);
 }
 
 long
-sysexits(u32int *arg)
+sysexits(uint32 *arg)
 {
 	char *status;
 	char *inval = "invalid exit string";
@@ -654,7 +651,7 @@ sysexits(u32int *arg)
 }
 
 long
-sys_wait(u32int *arg)
+sys_wait(uint32 *arg)
 {
 	int pid;
 	Waitmsg w;
@@ -678,12 +675,12 @@ sys_wait(u32int *arg)
 }
 
 long
-sysawait(u32int *arg)
+sysawait(uint32 *arg)
 {
 	int i;
 	int pid;
 	Waitmsg w;
-	u32int n;
+	uint32 n;
 	char *buf;
 
 	n = arg[1];
@@ -713,7 +710,7 @@ werrstr(char *fmt, ...)
 }
 
 static long
-generrstr(u32int addr, uint nbuf)
+generrstr(uint32 addr, uint nbuf)
 {
 	char tmp[ERRMAX];
 	char *buf;
@@ -734,20 +731,20 @@ generrstr(u32int addr, uint nbuf)
 }
 
 long
-syserrstr(u32int *arg)
+syserrstr(uint32 *arg)
 {
 	return generrstr(arg[0], arg[1]);
 }
 
 /* compatibility for old binaries */
 long
-sys_errstr(u32int *arg)
+sys_errstr(uint32 *arg)
 {
 	return generrstr(arg[0], 64);
 }
 
 long
-sysnotify(u32int *arg)
+sysnotify(uint32 *arg)
 {
 	if(arg[0] != 0)
 		uvalidaddr(arg[0], 1, 0);
@@ -756,7 +753,7 @@ sysnotify(u32int *arg)
 }
 
 long
-sysnoted(u32int *arg)
+sysnoted(uint32 *arg)
 {
 	if(arg[0]!=NRSTR && !up->notified)
 		error(Egreg);
@@ -764,10 +761,10 @@ sysnoted(u32int *arg)
 }
 
 long
-syssegbrk(u32int *arg)
+syssegbrk(uint32 *arg)
 {
 	int i;
-	u32int addr;
+	uint32 addr;
 	Segment *s;
 
 	addr = arg[0];
@@ -790,16 +787,16 @@ syssegbrk(u32int *arg)
 }
 
 long
-syssegattach(u32int *arg)
+syssegattach(uint32 *arg)
 {
 	return segattach(up, arg[0], uvalidaddr(arg[1], 1, 0), arg[2], arg[3]);
 }
 
 long
-syssegdetach(u32int *arg)
+syssegdetach(uint32 *arg)
 {
 	int i;
-	u32int addr;
+	uint32 addr;
 	Segment *s;
 
 	qlock(&up->seglock);
@@ -841,10 +838,10 @@ found:
 }
 
 long
-syssegfree(u32int *arg)
+syssegfree(uint32 *arg)
 {
 	Segment *s;
-	u32int from, to;
+	uint32 from, to;
 
 	from = arg[0];
 	s = seg(up, from, 1);
@@ -867,13 +864,13 @@ syssegfree(u32int *arg)
 
 /* For binary compatibility */
 long
-sysbrk_(u32int *arg)
+sysbrk_(uint32 *arg)
 {
 	return ibrk(arg[0], BSEG);
 }
 
 long
-sysrendezvous(u32int *arg)
+sysrendezvous(uint32 *arg)
 {
 	uintptr tag, val;
 	Proc *p, **l;
@@ -1106,7 +1103,7 @@ semacquire(Segment *s, long *addr, int block)
 }
 
 long
-syssemacquire(u32int *arg)
+syssemacquire(uint32 *arg)
 {
 	int block;
 	long *addr;
@@ -1124,7 +1121,7 @@ syssemacquire(u32int *arg)
 }
 
 long
-syssemrelease(u32int *arg)
+syssemrelease(uint32 *arg)
 {
 	long *addr, delta;
 	Segment *s;
diff --git a/src/9vx/a/systab.h b/src/9vx/a/systab.h
@@ -1,6 +1,6 @@
 #include "sys.h"
 
-typedef long Syscall(u32int*);
+typedef long Syscall(uint32*);
 
 Syscall sysr1;
 Syscall sys_errstr;
diff --git a/src/9vx/a/ureg.h b/src/9vx/a/ureg.h
@@ -1,25 +1,25 @@
 struct Ureg
 {
-	u32int	di;		/* general registers */
-	u32int	si;		/* ... */
-	u32int	bp;		/* ... */
-	u32int	nsp;
-	u32int	bx;		/* ... */
-	u32int	dx;		/* ... */
-	u32int	cx;		/* ... */
-	u32int	ax;		/* ... */
-	u32int	gs;		/* data segments */
-	u32int	fs;		/* ... */
-	u32int	es;		/* ... */
-	u32int	ds;		/* ... */
-	u32int	trap;		/* trap type */
-	u32int	ecode;		/* error code (or zero) */
-	u32int	pc;		/* pc */
-	u32int	cs;		/* old context */
-	u32int	flags;		/* old flags */
+	uint32	di;		/* general registers */
+	uint32	si;		/* ... */
+	uint32	bp;		/* ... */
+	uint32	nsp;
+	uint32	bx;		/* ... */
+	uint32	dx;		/* ... */
+	uint32	cx;		/* ... */
+	uint32	ax;		/* ... */
+	uint32	gs;		/* data segments */
+	uint32	fs;		/* ... */
+	uint32	es;		/* ... */
+	uint32	ds;		/* ... */
+	uint32	trap;		/* trap type */
+	uint32	ecode;		/* error code (or zero) */
+	uint32	pc;		/* pc */
+	uint32	cs;		/* old context */
+	uint32	flags;		/* old flags */
 	union {
-		u32int	usp;
-		u32int	sp;
+		uint32	usp;
+		uint32	sp;
 	};
-	u32int	ss;		/* old stack segment */
+	uint32	ss;		/* old stack segment */
 };
diff --git a/src/9vx/data2s.c b/src/9vx/data2s.c
@@ -36,6 +36,6 @@ main(int argc, char *argv[])
 			printf("\n");
 	}
 	printf("\n\n.p2align 2\n%s%slen:\n", prefix, argv[1]);
-	printf(".long %d\n", len);
+	printf(".long %d\n", (int)len);
 	return 0;
 }
diff --git a/src/9vx/devaudio.c b/src/9vx/devaudio.c
@@ -351,9 +351,9 @@ audiowrite(Chan *c, void *vp, long n, vlong off)
 void
 audioswab(uchar *a, uint n)
 {
-	u32int *p, *ep, b;
+	uint32 *p, *ep, b;
 
-	p = (u32int*)a;
+	p = (uint32*)a;
 	ep = p + (n>>2);
 	while(p < ep) {
 		b = *p;
diff --git a/src/9vx/label.S b/src/9vx/label.S
@@ -57,7 +57,6 @@ EXT(setlabel):
 	movq %r13, 56(%rdi)
 	movq %r14, 64(%rdi)
 	movq %r15, 72(%rdi)
-
 	movq $0, %rax
 	ret
 
@@ -72,8 +71,8 @@ EXT(gotolabel):
 	movq 56(%rdi), %r13
 	movq 64(%rdi), %r14
 	movq 72(%rdi), %r15
-	
 	movq $1, %rax
+	cld
 	ret
 
 #endif
diff --git a/src/9vx/libdraw/bytesperline.c b/src/9vx/libdraw/bytesperline.c
@@ -24,7 +24,7 @@ unitsperline(Rectangle r, int d, int bitsperunit)
 int
 wordsperline(Rectangle r, int d)
 {
-	return unitsperline(r, d, 8*sizeof(u32int));
+	return unitsperline(r, d, 8*sizeof(uint32));
 }
 
 int
diff --git a/src/9vx/libmemdraw/alloc.c b/src/9vx/libmemdraw/alloc.c
@@ -18,14 +18,14 @@ memimagemove(void *from, void *to)
 	md->base = to;
 
 	/* if allocmemimage changes this must change too */
-	md->bdata = (uchar*)md->base+sizeof(Memdata*)+sizeof(u32int);
+	md->bdata = (uchar*)md->base+sizeof(Memdata*)+sizeof(uint32);
 }
 
 Memimage*
-allocmemimaged(Rectangle r, u32int chan, Memdata *md, void *X)
+allocmemimaged(Rectangle r, uint32 chan, Memdata *md, void *X)
 {
 	int d;
-	u32int l;
+	uint32 l;
 	Memimage *i;
 
 	if(Dx(r) <= 0 || Dy(r) <= 0){
@@ -45,7 +45,7 @@ allocmemimaged(Rectangle r, u32int chan, Memdata *md, void *X)
 
 	i->data = md;
 	i->x = X;
-	i->zero = sizeof(u32int)*l*r.min.y;
+	i->zero = sizeof(uint32)*l*r.min.y;
 	
 	if(r.min.x >= 0)
 		i->zero += (r.min.x*d)/8;
@@ -66,11 +66,11 @@ allocmemimaged(Rectangle r, u32int chan, Memdata *md, void *X)
 }
 
 Memimage*
-_allocmemimage(Rectangle r, u32int chan)
+_allocmemimage(Rectangle r, uint32 chan)
 {
 	int d;
 	uchar *p;
-	u32int l, nw;
+	uint32 l, nw;
 	Memdata *md;
 	Memimage *i;
 
@@ -86,7 +86,7 @@ _allocmemimage(Rectangle r, u32int chan)
 		return nil;
 
 	md->ref = 1;
-	md->base = poolalloc(imagmem, sizeof(Memdata*)+(1+nw)*sizeof(u32int));
+	md->base = poolalloc(imagmem, sizeof(Memdata*)+(1+nw)*sizeof(uint32));
 	if(md->base == nil){
 		free(md);
 		return nil;
@@ -96,8 +96,8 @@ _allocmemimage(Rectangle r, u32int chan)
 	*(Memdata**)p = md;
 	p += sizeof(Memdata*);
 
-	*(u32int*)p = getcallerpc(&r);
-	p += sizeof(u32int);
+	*(uint32*)p = getcallerpc(&r);
+	p += sizeof(uint32);
 
 	/* if this changes, memimagemove must change too */
 	md->bdata = p;
@@ -129,10 +129,10 @@ _freememimage(Memimage *i)
 /*
  * Wordaddr is deprecated.
  */
-u32int*
+uint32*
 wordaddr(Memimage *i, Point p)
 {
-	return (u32int*) ((uintptr)byteaddr(i, p) & ~(sizeof(u32int)-1));
+	return (uint32*) ((uintptr)byteaddr(i, p) & ~(sizeof(uint32)-1));
 }
 
 uchar*
@@ -140,7 +140,7 @@ byteaddr(Memimage *i, Point p)
 {
 	uchar *a;
 
-	a = i->data->bdata+i->zero+sizeof(u32int)*p.y*i->width;
+	a = i->data->bdata+i->zero+sizeof(uint32)*p.y*i->width;
 
 	if(i->depth < 8){
 		/*
@@ -159,11 +159,11 @@ byteaddr(Memimage *i, Point p)
 }
 
 int
-memsetchan(Memimage *i, u32int chan)
+memsetchan(Memimage *i, uint32 chan)
 {
 	int d;
 	int t, j, k;
-	u32int cc;
+	uint32 cc;
 	int bytes;
 
 	if((d = chantodepth(chan)) == 0) {
diff --git a/src/9vx/libmemdraw/defont.c b/src/9vx/libmemdraw/defont.c
@@ -18,7 +18,7 @@ getmemdefont(void)
 	/*
 	 * make sure data is word-aligned.  this is true with Plan 9 compilers
 	 * but not in general.  the byte order is right because the data is
-	 * declared as char*, not u32int*.
+	 * declared as char*, not uint32*.
 	 */
 	p = (char*)defontdata;
 	n = (uintptr)p & 3;
@@ -49,7 +49,7 @@ getmemdefont(void)
 		return nil;
 	}
 
-	hdr = p+Dy(r)*i->width*sizeof(u32int);
+	hdr = p+Dy(r)*i->width*sizeof(uint32);
 	n = atoi(hdr);
 	p = hdr+3*12;
 	fc = malloc(sizeof(Fontchar)*(n+1));
diff --git a/src/9vx/libmemdraw/draw.c b/src/9vx/libmemdraw/draw.c
@@ -386,7 +386,7 @@ struct Buffer {
 	uchar	*blu;
 	uchar	*alpha;
 	uchar	*grey;
-	u32int	*rgba;
+	uint32	*rgba;
 	int	delta;	/* number of bytes to add to pointer to get next pixel to the right */
 
 	/* used by boolcalc* for mask data */
@@ -428,7 +428,7 @@ struct Param {
 
 	int	replcache;	/* if set, cache buffers */
 	Buffer	bcache[MAXBCACHE];
-	u32int	bfilled;
+	uint32	bfilled;
 	uchar	*bufbase;
 	int	bufoff;
 	int	bufdelta;
@@ -531,7 +531,7 @@ getparam(Param *p, Memimage *img, Rectangle r, int convgrey, int needbuf, int *n
 	p->bytey0s = byteaddr(img, Pt(img->r.min.x, img->r.min.y));
 	p->bytermin = byteaddr(img, Pt(r.min.x, img->r.min.y));
 	p->bytey0e = byteaddr(img, Pt(img->r.max.x, img->r.min.y));
-	p->bwidth = sizeof(u32int)*img->width;
+	p->bwidth = sizeof(uint32)*img->width;
 
 	assert(p->bytey0s <= p->bytermin && p->bytermin <= p->bytey0e);
 
@@ -809,7 +809,7 @@ alphacalc14(Buffer bdst, Buffer bsrc, Buffer bmask, int dx, int grey, int op)
 	Buffer obdst;
 	int fd, sadelta;
 	int i, sa, ma, q;
-	u32int s, t;
+	uint32 s, t;
 
 	obdst = bdst;
 	sadelta = bsrc.alpha == &ones ? 0 : bsrc.delta;
@@ -861,7 +861,7 @@ alphacalc2810(Buffer bdst, Buffer bsrc, Buffer bmask, int dx, int grey, int op)
 	Buffer obdst;
 	int fs, sadelta;
 	int i, ma, da, q;
-	u32int s, t;
+	uint32 s, t;
 
 	obdst = bdst;
 	sadelta = bsrc.alpha == &ones ? 0 : bsrc.delta;
@@ -915,7 +915,7 @@ alphacalc3679(Buffer bdst, Buffer bsrc, Buffer bmask, int dx, int grey, int op)
 	Buffer obdst;
 	int fs, fd, sadelta;
 	int i, sa, ma, da, q;
-	u32int s, t, u, v;
+	uint32 s, t, u, v;
 
 	obdst = bdst;
 	sadelta = bsrc.alpha == &ones ? 0 : bsrc.delta;
@@ -988,7 +988,7 @@ alphacalc11(Buffer bdst, Buffer bsrc, Buffer bmask, int dx, int grey, int op)
 	Buffer obdst;
 	int fd, sadelta;
 	int i, sa, ma, q;
-	u32int s, t, u, v;
+	uint32 s, t, u, v;
 
 	USED(op);
 	obdst = bdst;
@@ -1080,7 +1080,7 @@ alphacalcS(Buffer bdst, Buffer bsrc, Buffer bmask, int dx, int grey, int op)
 	Buffer obdst;
 	int fd;
 	int i, ma;
-	u32int s, t;
+	uint32 s, t;
 
 	USED(op);
 	obdst = bdst;
@@ -1154,7 +1154,7 @@ boolcalc236789(Buffer bdst, Buffer bsrc, Buffer bmask, int dx, int grey, int op)
 	Buffer obdst;
 	int fs, fd;
 	int i, ma, da, zero;
-	u32int s, t;
+	uint32 s, t;
 
 	obdst = bdst;
 	zero = !(op&1);
@@ -1289,7 +1289,7 @@ readnbit(Param *p, uchar *buf, int y)
 	memset(&b, 0, sizeof b); // shut up gcc
 	int i, n, sh, depth, x, dx, npack, nbits;
 
-	b.rgba = (u32int*)buf;
+	b.rgba = (uint32*)buf;
 	b.grey = w = buf;
 	b.red = b.blu = b.grn = w;
 	b.alpha = &ones;
@@ -1379,7 +1379,7 @@ static void
 writenbit(Param *p, uchar *w, Buffer src)
 {
 	uchar *r;
-	u32int bits;
+	uint32 bits;
 	int i, sh, depth, npack, nbits, x, ex;
 
 	assert(src.grey != nil && src.delta == 1);
@@ -1468,7 +1468,7 @@ readcmap(Param *p, uchar *buf, int y)
 		}
 	}
 
-	b.rgba = (u32int*)(buf-copyalpha);
+	b.rgba = (uint32*)(buf-copyalpha);
 
 	if(convgrey){
 		b.grey = buf;
@@ -1511,7 +1511,7 @@ readbyte(Param *p, uchar *buf, int y)
 	int dx, isgrey, convgrey, alphaonly, copyalpha, i, nb;
 	uchar *begin, *end, *r, *w, *rrepl, *grepl, *brepl, *arepl, *krepl;
 	uchar ured, ugrn, ublu;
-	u32int u;
+	uint32 u;
 
 	img = p->img;
 	begin = p->bytey0s + y*p->bwidth;
@@ -1535,7 +1535,7 @@ DBG print("copyalpha %d alphaonly %d convgrey %d isgrey %d\n", copyalpha, alphao
 			memmove(buf, r, dx*nb);
 			r = buf;
 		}
-		b.rgba = (u32int*)r;
+		b.rgba = (uint32*)r;
 		if(copyalpha)
 			b.alpha = r+img->shift[CAlpha]/8;
 		else
@@ -1588,7 +1588,7 @@ DBG print("%x\n", w[-1]);
 	}
 	
 	b.alpha = copyalpha ? buf : &ones;
-	b.rgba = (u32int*)buf;
+	b.rgba = (uint32*)buf;
 	if(alphaonly){
 		b.red = b.grn = b.blu = b.grey = nil;
 		if(!copyalpha)
@@ -1617,7 +1617,7 @@ writebyte(Param *p, uchar *w, Buffer src)
 	Memimage *img;
 	int i, isalpha, isgrey, nb, delta, dx, adelta;
 	uchar ff, *red, *grn, *blu, *grey, *alpha;
-	u32int u, mask;
+	uint32 u, mask;
 
 	img = p->img;
 
@@ -1722,7 +1722,7 @@ readptr(Param *p, uchar *s, int y)
 	q = p->bytermin + y*p->bwidth;
 	b.red = q;	/* ptr to data */
 	b.grn = b.blu = b.grey = b.alpha = nil;
-	b.rgba = (u32int*)q;
+	b.rgba = (uint32*)q;
 	b.delta = p->img->depth/8;
 	return b;
 }
@@ -1802,13 +1802,13 @@ static Buffer
 boolcopy32(Buffer bdst, Buffer bsrc, Buffer bmask, int dx, int i, int o)
 {
 	uchar *m;
-	u32int *r, *w, *ew;
+	uint32 *r, *w, *ew;
 
 	USED(i);
 	USED(o);
 	m = bmask.grey;
-	w = (u32int*)bdst.red;
-	r = (u32int*)bsrc.red;
+	w = (uint32*)bdst.red;
+	r = (uint32*)bsrc.red;
 	ew = w+dx;
 	for(; w < ew; w++,r++)
 		if(*m++)
@@ -1840,7 +1840,7 @@ genconv(Param *p, uchar *buf, int y)
 
 	b.red = buf;
 	b.blu = b.grn = b.grey = b.alpha = nil;
-	b.rgba = (u32int*)buf;
+	b.rgba = (uint32*)buf;
 	b.delta = 0;
 	
 	return b;
@@ -1877,11 +1877,11 @@ convfn(Memimage *dst, Param *dpar, Memimage *src, Param *spar, int *ndrawbuf)
 	return genconv;
 }
 
-u32int
+uint32
 _pixelbits(Memimage *i, Point pt)
 {
 	uchar *p;
-	u32int val;
+	uint32 val;
 	int off, bpp, npack;
 
 	val = 0;
@@ -1964,9 +1964,9 @@ memsets(void *vp, ushort val, int n)
 }
 
 static void
-memsetl(void *vp, u32int val, int n)
+memsetl(void *vp, uint32 val, int n)
 {
-	u32int *p, *ep;
+	uint32 *p, *ep;
 
 	p = vp;
 	ep = p+n;
@@ -1975,7 +1975,7 @@ memsetl(void *vp, u32int val, int n)
 }
 
 static void
-memset24(void *vp, u32int val, int n)
+memset24(void *vp, uint32 val, int n)
 {
 	uchar *p, *ep;
 	uchar a,b,c;
@@ -1992,12 +1992,12 @@ memset24(void *vp, u32int val, int n)
 	}
 }
 
-u32int
-_imgtorgba(Memimage *img, u32int val)
+uint32
+_imgtorgba(Memimage *img, uint32 val)
 {
 	uchar r, g, b, a;
 	int nb, ov, v;
-	u32int chan;
+	uint32 chan;
 	uchar *p;
 
 	a = 0xFF;
@@ -2040,12 +2040,12 @@ _imgtorgba(Memimage *img, u32int val)
 	return (r<<24)|(g<<16)|(b<<8)|a;	
 }
 
-u32int
-_rgbatoimg(Memimage *img, u32int rgba)
+uint32
+_rgbatoimg(Memimage *img, uint32 rgba)
 {
-	u32int chan;
+	uint32 chan;
 	int d, nb;
-	u32int v;
+	uint32 v;
 	uchar *p, r, g, b, a, m;
 
 	v = 0;
@@ -2090,7 +2090,7 @@ static int
 memoptdraw(Memdrawparam *par)
 {
 	int m, y, dy, dx, op;
-	u32int v;
+	uint32 v;
 	Memimage *src;
 	Memimage *dst;
 
@@ -2112,7 +2112,7 @@ DBG print("state %lux mval %lux dd %d\n", par->state, par->mval, dst->depth);
 		uchar lm, rm;
 
 DBG print("memopt, dst %p, dst->data->bdata %p\n", dst, dst->data->bdata);
-		dwid = dst->width*sizeof(u32int);
+		dwid = dst->width*sizeof(uint32);
 		dp = byteaddr(dst, par->r.min);
 		v = par->sdval;
 DBG print("sdval %lud, depth %d\n", v, dst->depth);
@@ -2195,7 +2195,7 @@ DBG print("dp=%p; dx=%d; for(y=0; y<%d; y++, dp+=%d)\nmemsets(dp, v, dx);\n",
 			p[1] = v>>8;
 			p[2] = v>>16;
 			p[3] = v>>24;
-			v = *(u32int*)p;
+			v = *(uint32*)p;
 			for(y=0; y<dy; y++, dp+=dwid)
 				memsetl(dp, v, dx);
 			return 1;
@@ -2221,8 +2221,8 @@ DBG print("dp=%p; dx=%d; for(y=0; y<%d; y++, dp+=%d)\nmemsets(dp, v, dx);\n",
 		else
 			dir = 1;
 
-		swid = src->width*sizeof(u32int);
-		dwid = dst->width*sizeof(u32int);
+		swid = src->width*sizeof(uint32);
+		dwid = dst->width*sizeof(uint32);
 		sp = byteaddr(src, par->sr.min);
 		dp = byteaddr(dst, par->r.min);
 		if(dir == -1){
@@ -2253,9 +2253,9 @@ DBG print("dp=%p; dx=%d; for(y=0; y<%d; y++, dp+=%d)\nmemsets(dp, v, dx);\n",
 		sp = byteaddr(src, par->sr.min);
 		dp = byteaddr(dst, par->r.min);
 		mp = byteaddr(par->mask, par->mr.min);
-		swid = src->width*sizeof(u32int);
-		dwid = dst->width*sizeof(u32int);
-		mwid = par->mask->width*sizeof(u32int);
+		swid = src->width*sizeof(uint32);
+		dwid = dst->width*sizeof(uint32);
+		mwid = par->mask->width*sizeof(uint32);
 
 		if(src->data == dst->data && byteaddr(dst, par->r.min) > byteaddr(src, par->sr.min)){
 			dir = -1;
@@ -2344,12 +2344,12 @@ DBG print("dp=%p; dx=%d; for(y=0; y<%d; y++, dp+=%d)\nmemsets(dp, v, dx);\n",
 static int
 chardraw(Memdrawparam *par)
 {
-	u32int bits;
+	uint32 bits;
 	int i, ddepth, dy, dx, x, bx, ex, y, npack, bsh, depth, op;
-	u32int v, maskwid, dstwid;
+	uint32 v, maskwid, dstwid;
 	uchar *wp, *rp, *q, *wc;
 	ushort *ws;
-	u32int *wl;
+	uint32 *wl;
 	uchar sp[4];
 	Rectangle r, mr;
 	Memimage *mask, *src, *dst;
@@ -2373,13 +2373,13 @@ if(0) if(drawdebug) iprint("chardraw? mf %lux md %d sf %lux dxs %d dys %d dd %d 
 //if(drawdebug) iprint("chardraw...");
 
 	depth = mask->depth;
-	maskwid = mask->width*sizeof(u32int);
+	maskwid = mask->width*sizeof(uint32);
 	rp = byteaddr(mask, mr.min);
 	npack = 8/depth;
 	bsh = (mr.min.x % npack) * depth;
 
 	wp = byteaddr(dst, r.min);
-	dstwid = dst->width*sizeof(u32int);
+	dstwid = dst->width*sizeof(uint32);
 DBG print("bsh %d\n", bsh);
 	dy = Dy(r);
 	dx = Dx(r);
@@ -2451,8 +2451,8 @@ DBG print("bits %lux sh %d...", bits, i);
 			}
 			break;
 		case 32:
-			wl = (u32int*)wp;
-			v = *(u32int*)sp;
+			wl = (uint32*)wp;
+			v = *(uint32*)sp;
 			for(x=bx; x>ex; x--, wl++){
 				i = x&7;
 				if(i == 8-1)
@@ -2477,7 +2477,7 @@ DBG print("\n");
  *
  * This code is just plain wrong for >8bpp.
  *
-u32int
+uint32
 membyteval(Memimage *src)
 {
 	int i, val, bpp;
@@ -2497,9 +2497,9 @@ membyteval(Memimage *src)
  */
 
 void
-_memfillcolor(Memimage *i, u32int val)
+_memfillcolor(Memimage *i, uint32 val)
 {
-	u32int bits;
+	uint32 bits;
 	int d, y;
 
 	if(val == DNofill)
diff --git a/src/9vx/libmemdraw/fillpoly.c b/src/9vx/libmemdraw/fillpoly.c
@@ -127,7 +127,7 @@ mod(long x, long y)
 	long z;
 
 	z = x%y;
-	if((long)(((u32int)z)^((u32int)y)) > 0 || z == 0)
+	if((long)(((uint32)z)^((uint32)y)) > 0 || z == 0)
 		return z;
 	return z + y;
 }
@@ -135,7 +135,7 @@ mod(long x, long y)
 static long
 sdiv(long x, long y)
 {
-	if((long)(((u32int)x)^((u32int)y)) >= 0 || x == 0)
+	if((long)(((uint32)x)^((uint32)y)) >= 0 || x == 0)
 		return x/y;
 
 	return (x+((y>>30)|1))/y-1;
diff --git a/src/9vx/libmemdraw/line.c b/src/9vx/libmemdraw/line.c
@@ -50,7 +50,7 @@ horline1(Memimage *dst, Point p0, Point p1, int srcval, Rectangle clipr)
 
 	deltax = p1.x - p0.x;
 	deltay = p1.y - p0.y;
-	dd = dst->width*sizeof(u32int);
+	dd = dst->width*sizeof(uint32);
 	dy = 1;
 	if(deltay < 0){
 		dd = -dd;
@@ -117,7 +117,7 @@ verline1(Memimage *dst, Point p0, Point p1, int srcval, Rectangle clipr)
 			e += deltay;
 		}else
 			e += deltax;
-		d += dst->width*sizeof(u32int);
+		d += dst->width*sizeof(uint32);
 		m >>= bpp;
 		if(m == 0)
 			m = m0;
diff --git a/src/9vx/libmemdraw/load.c b/src/9vx/libmemdraw/load.c
@@ -26,7 +26,7 @@ _loadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
 			m ^= 0xFF >> rpart;
 		for(y=r.min.y; y<r.max.y; y++){
 			*q ^= (*data^*q) & m;
-			q += i->width*sizeof(u32int);
+			q += i->width*sizeof(uint32);
 			data++;
 		}
 		return ndata;
@@ -34,7 +34,7 @@ _loadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
 	if(lpart==0 && rpart==0){	/* easy case */
 		for(y=r.min.y; y<r.max.y; y++){
 			memmove(q, data, l);
-			q += i->width*sizeof(u32int);
+			q += i->width*sizeof(uint32);
 			data += l;
 		}
 		return ndata;
@@ -45,7 +45,7 @@ _loadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
 			*q ^= (*data^*q) & m;
 			if(l > 1)
 				memmove(q+1, data+1, l-1);
-			q += i->width*sizeof(u32int);
+			q += i->width*sizeof(uint32);
 			data += l;
 		}
 		return ndata;
@@ -55,7 +55,7 @@ _loadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
 			if(l > 1)
 				memmove(q, data, l-1);
 			q[l-1] ^= (data[l-1]^q[l-1]) & mr;
-			q += i->width*sizeof(u32int);
+			q += i->width*sizeof(uint32);
 			data += l;
 		}
 		return ndata;
@@ -65,7 +65,7 @@ _loadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
 		if(l > 2)
 			memmove(q+1, data+1, l-2);
 		q[l-1] ^= (data[l-1]^q[l-1]) & mr;
-		q += i->width*sizeof(u32int);
+		q += i->width*sizeof(uint32);
 		data += l;
 	}
 	return ndata;
diff --git a/src/9vx/libmemdraw/unload.c b/src/9vx/libmemdraw/unload.c
@@ -18,7 +18,7 @@ _unloadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
 	q = byteaddr(i, r.min);
 	for(y=r.min.y; y<r.max.y; y++){
 		memmove(data, q, l);
-		q += i->width*sizeof(u32int);
+		q += i->width*sizeof(uint32);
 		data += l;
 	}
 	return ndata;
diff --git a/src/9vx/libsec/des.c b/src/9vx/libsec/des.c
@@ -4,7 +4,7 @@
 /*
  * integrated sbox & p perm
  */
-static u32int spbox[] = {
+static uint32 spbox[] = {
 
 0x00808200,0x00000000,0x00008000,0x00808202,0x00808002,0x00008202,0x00000002,0x00008000,
 0x00000200,0x00808200,0x00808202,0x00000200,0x00800202,0x00808002,0x00800000,0x00000002,
@@ -81,7 +81,7 @@ static u32int spbox[] = {
 
 /*
  * for manual index calculation
- * #define fetch(box, i, sh) (*((u32int*)((uchar*)spbox + (box << 8) + ((i >> (sh)) & 0xfc))))
+ * #define fetch(box, i, sh) (*((uint32*)((uchar*)spbox + (box << 8) + ((i >> (sh)) & 0xfc))))
  */
 #define fetch(box, i, sh) ((spbox+(box << 6))[((i >> (sh + 2)) & 0x3f)])
 
@@ -91,14 +91,14 @@ static u32int spbox[] = {
 void
 block_cipher(ulong key[32], uchar text[8], int decrypting)
 {
-	u32int right, left, v0, v1;
+	uint32 right, left, v0, v1;
 	int i, keystep;
 
 	/*
 	 * initial permutation
 	 */
-	v0 = text[0] | ((u32int)text[2]<<8) | ((u32int)text[4]<<16) | ((u32int)text[6]<<24);
-	left = text[1] | ((u32int)text[3]<<8) | ((u32int)text[5]<<16) | ((u32int)text[7]<<24);
+	v0 = text[0] | ((uint32)text[2]<<8) | ((uint32)text[4]<<16) | ((uint32)text[6]<<24);
+	left = text[1] | ((uint32)text[3]<<8) | ((uint32)text[5]<<16) | ((uint32)text[7]<<24);
 	right = (left & 0xaaaaaaaa) | ((v0 >> 1) & 0x55555555);
 	left = ((left << 1) & 0xaaaaaaaa) | (v0 & 0x55555555);
 	left = ((left << 6) & 0x33003300)
@@ -183,14 +183,14 @@ void
 triple_block_cipher(ulong expanded_key[3][32], uchar text[8], int ende)
 {
 	ulong *key;
-	u32int right, left, v0, v1;
+	uint32 right, left, v0, v1;
 	int i, j, keystep;
 
 	/*
 	 * initial permutation
 	 */
-	v0 = text[0] | ((u32int)text[2]<<8) | ((u32int)text[4]<<16) | ((u32int)text[6]<<24);
-	left = text[1] | ((u32int)text[3]<<8) | ((u32int)text[5]<<16) | ((u32int)text[7]<<24);
+	v0 = text[0] | ((uint32)text[2]<<8) | ((uint32)text[4]<<16) | ((uint32)text[6]<<24);
+	left = text[1] | ((uint32)text[3]<<8) | ((uint32)text[5]<<16) | ((uint32)text[7]<<24);
 	right = (left & 0xaaaaaaaa) | ((v0 >> 1) & 0x55555555);
 	left = ((left << 1) & 0xaaaaaaaa) | (v0 & 0x55555555);
 	left = ((left << 6) & 0x33003300)
@@ -281,7 +281,7 @@ triple_block_cipher(ulong expanded_key[3][32], uchar text[8], int ende)
 /*
  * key compression permutation, 4 bits at a time
  */
-static u32int comptab[] = {
+static uint32 comptab[] = {
 
 0x000000,0x010000,0x000008,0x010008,0x000080,0x010080,0x000088,0x010088,
 0x000000,0x010000,0x000008,0x010008,0x000080,0x010080,0x000088,0x010088,
@@ -332,9 +332,9 @@ static int keysh[] =
 };
 
 static void
-keycompperm(u32int left, u32int right, ulong *ek)
+keycompperm(uint32 left, uint32 right, ulong *ek)
 {
-	u32int v0, v1;
+	uint32 v0, v1;
 	int i;
 
 	for(i = 0; i < 16; i++){
@@ -371,10 +371,10 @@ keycompperm(u32int left, u32int right, ulong *ek)
 void
 des_key_setup(uchar key[8], ulong *ek)
 {
-	u32int left, right, v0, v1;
+	uint32 left, right, v0, v1;
 
-	v0 = key[0] | ((u32int)key[2] << 8) | ((u32int)key[4] << 16) | ((u32int)key[6] << 24);
-	v1 = key[1] | ((u32int)key[3] << 8) | ((u32int)key[5] << 16) | ((u32int)key[7] << 24);
+	v0 = key[0] | ((uint32)key[2] << 8) | ((uint32)key[4] << 16) | ((uint32)key[6] << 24);
+	v1 = key[1] | ((uint32)key[3] << 8) | ((uint32)key[5] << 16) | ((uint32)key[7] << 24);
 	left = ((v0 >> 1) & 0x40404040)
 		| ((v0 >> 2) & 0x10101010)
 		| ((v0 >> 3) & 0x04040404)
@@ -433,10 +433,10 @@ static uchar parity[128] =
 void
 des56to64(uchar *k56, uchar *k64)
 {
-	u32int hi, lo;
+	uint32 hi, lo;
 
-	hi = ((u32int)k56[0]<<24)|((u32int)k56[1]<<16)|((u32int)k56[2]<<8)|k56[3];
-	lo = ((u32int)k56[4]<<24)|((u32int)k56[5]<<16)|((u32int)k56[6]<<8);
+	hi = ((uint32)k56[0]<<24)|((uint32)k56[1]<<16)|((uint32)k56[2]<<8)|k56[3];
+	lo = ((uint32)k56[4]<<24)|((uint32)k56[5]<<16)|((uint32)k56[6]<<8);
 
 	k64[0] = parity[(hi>>25)&0x7f];
 	k64[1] = parity[(hi>>18)&0x7f];
@@ -454,12 +454,12 @@ des56to64(uchar *k56, uchar *k64)
 void
 des64to56(uchar *k64, uchar *k56)
 {
-	u32int hi, lo;
+	uint32 hi, lo;
 
-	hi = (((u32int)k64[0]&0xfe)<<24)|(((u32int)k64[1]&0xfe)<<17)|(((u32int)k64[2]&0xfe)<<10)
+	hi = (((uint32)k64[0]&0xfe)<<24)|(((uint32)k64[1]&0xfe)<<17)|(((uint32)k64[2]&0xfe)<<10)
 		|((k64[3]&0xfe)<<3)|(k64[4]>>4);
-	lo = (((u32int)k64[4]&0xfe)<<28)|(((u32int)k64[5]&0xfe)<<21)|(((u32int)k64[6]&0xfe)<<14)
-		|(((u32int)k64[7]&0xfe)<<7);
+	lo = (((uint32)k64[4]&0xfe)<<28)|(((uint32)k64[5]&0xfe)<<21)|(((uint32)k64[6]&0xfe)<<14)
+		|(((uint32)k64[7]&0xfe)<<7);
 
 	k56[0] = hi>>24;
 	k56[1] = hi>>16;
diff --git a/src/9vx/libsec/md4.c b/src/9vx/libsec/md4.c
@@ -91,17 +91,17 @@ static MD4Table tab[] =
 	{ 15,	S34},	
 };
 
-static void encode(uchar*, u32int*, ulong);
-static void decode(u32int*, uchar*, ulong);
+static void encode(uchar*, uint32*, ulong);
+static void decode(uint32*, uchar*, ulong);
 
 static void
 md4block(uchar *p, ulong len, MD4state *s)
 {
 	int i;
-	u32int a, b, c, d, tmp;
+	uint32 a, b, c, d, tmp;
 	MD4Table *t;
 	uchar *end;
-	u32int x[16];
+	uint32 x[16];
 
 	for(end = p+len; p < end; p += 64){
 		a = s->state[0];
@@ -147,7 +147,7 @@ md4block(uchar *p, ulong len, MD4state *s)
 MD4state*
 md4(uchar *p, ulong len, uchar *digest, MD4state *s)
 {
-	u32int x[16];
+	uint32 x[16];
 	uchar buf[128];
 	int i;
 	uchar *e;
@@ -238,13 +238,13 @@ md4(uchar *p, ulong len, uchar *digest, MD4state *s)
 }
 
 /*
- *	encodes input (u32int) into output (uchar). Assumes len is
+ *	encodes input (uint32) into output (uchar). Assumes len is
  *	a multiple of 4.
  */
 static void
-encode(uchar *output, u32int *input, ulong len)
+encode(uchar *output, uint32 *input, ulong len)
 {
-	u32int x;
+	uint32 x;
 	uchar *e;
 
 	for(e = output + len; output < e;) {
@@ -257,11 +257,11 @@ encode(uchar *output, u32int *input, ulong len)
 }
 
 /*
- *	decodes input (uchar) into output (u32int). Assumes len is
+ *	decodes input (uchar) into output (uint32). Assumes len is
  *	a multiple of 4.
  */
 static void
-decode(u32int *output, uchar *input, ulong len)
+decode(uint32 *output, uchar *input, ulong len)
 {
 	uchar *e;
 
diff --git a/src/9vx/libsec/md5.c b/src/9vx/libsec/md5.c
@@ -27,14 +27,14 @@
  *	documentation and/or software.
  */
 
-static void encode(uchar*, u32int*, ulong);
+static void encode(uchar*, uint32*, ulong);
 
-extern void _md5block(uchar*, ulong, u32int*);
+extern void _md5block(uchar*, ulong, uint32*);
 
 MD5state*
 md5(uchar *p, ulong len, uchar *digest, MD5state *s)
 {
-	u32int x[16];
+	uint32 x[16];
 	uchar buf[128];
 	int i;
 	uchar *e;
@@ -128,13 +128,13 @@ md5(uchar *p, ulong len, uchar *digest, MD5state *s)
 }
 
 /*
- *	encodes input (u32int) into output (uchar). Assumes len is
+ *	encodes input (uint32) into output (uchar). Assumes len is
  *	a multiple of 4.
  */
 static void
-encode(uchar *output, u32int *input, ulong len)
+encode(uchar *output, uint32 *input, ulong len)
 {
-	u32int x;
+	uint32 x;
 	uchar *e;
 
 	for(e = output + len; output < e;) {
diff --git a/src/9vx/libsec/md5block.c b/src/9vx/libsec/md5block.c
@@ -53,7 +53,7 @@ enum
 	S44=	21,
 };
 
-static u32int md5tab[] =
+static uint32 md5tab[] =
 {
 	/* round 1 */
 /*[0]*/	0xd76aa478,	
@@ -128,16 +128,16 @@ static u32int md5tab[] =
 	0xeb86d391,	
 };
 
-static void decode(u32int*, uchar*, ulong);
-extern void _md5block(uchar *p, ulong len, u32int *s);
+static void decode(uint32*, uchar*, ulong);
+extern void _md5block(uchar *p, ulong len, uint32 *s);
 
 void
-_md5block(uchar *p, ulong len, u32int *s)
+_md5block(uchar *p, ulong len, uint32 *s)
 {
-	u32int a, b, c, d, sh;
-	u32int *t;
+	uint32 a, b, c, d, sh;
+	uint32 *t;
 	uchar *end;
-	u32int x[16];
+	uint32 x[16];
 
 	for(end = p+len; p < end; p += 64){
 		a = s[0];
@@ -253,11 +253,11 @@ _md5block(uchar *p, ulong len, u32int *s)
 }
 
 /*
- *	decodes input (uchar) into output (u32int). Assumes len is
+ *	decodes input (uchar) into output (uint32). Assumes len is
  *	a multiple of 4.
  */
 static void
-decode(u32int *output, uchar *input, ulong len)
+decode(uint32 *output, uchar *input, ulong len)
 {
 	uchar *e;
 
diff --git a/src/9vx/libsec/sha1.c b/src/9vx/libsec/sha1.c
@@ -1,9 +1,9 @@
 #include "os.h"
 #include "libsec.h"
 
-static void encode(uchar*, u32int*, ulong);
+static void encode(uchar*, uint32*, ulong);
 
-extern void _sha1block(uchar*, ulong, u32int*);
+extern void _sha1block(uchar*, ulong, uint32*);
 
 /*
  *  we require len to be a multiple of 64 for all but
@@ -14,7 +14,7 @@ SHA1state*
 sha1(uchar *p, ulong len, uchar *digest, SHA1state *s)
 {
 	uchar buf[128];
-	u32int x[16];
+	uint32 x[16];
 	int i;
 	uchar *e;
 
@@ -112,9 +112,9 @@ sha1(uchar *p, ulong len, uchar *digest, SHA1state *s)
  *	a multiple of 4.
  */
 static void
-encode(uchar *output, u32int *input, ulong len)
+encode(uchar *output, uint32 *input, ulong len)
 {
-	u32int x;
+	uint32 x;
 	uchar *e;
 
 	for(e = output + len; output < e;) {
diff --git a/src/9vx/libsec/sha1block.c b/src/9vx/libsec/sha1block.c
@@ -1,12 +1,12 @@
 #include "os.h"
 
 void
-_sha1block(uchar *p, ulong len, u32int *s)
+_sha1block(uchar *p, ulong len, uint32 *s)
 {
-	u32int a, b, c, d, e, x;
+	uint32 a, b, c, d, e, x;
 	uchar *end;
-	u32int *wp, *wend;
-	u32int w[80];
+	uint32 *wp, *wend;
+	uint32 w[80];
 
 	/* at this point, we have a multiple of 64 bytes */
 	for(end = p+len; p < end;){
diff --git a/src/9vx/main.c b/src/9vx/main.c
@@ -401,7 +401,7 @@ bootargs(void *base)
 {
  	int i, ac;
 	uchar *av[32];
-	u32int *lsp;
+	uint32 *lsp;
 
 	sp = (uchar*)base + BY2PG - MAXSYSARG*BY2WD - sizeof(Tos);
 
@@ -413,11 +413,11 @@ bootargs(void *base)
 	sp = (uchar*)((uintptr)sp & ~3);
 
 	/* build argc, argv on stack */
-	sp -= (ac+2)*sizeof(u32int);
-	lsp = (u32int*)sp;
+	sp -= (ac+2)*sizeof(uint32);
+	lsp = (uint32*)sp;
 	*lsp++ = ac;
 	for(i = 0; i < ac; i++)
-		*lsp++ = (u32int)(uintptr)(av[i] + ((USTKTOP - BY2PG) - (ulong)base));
+		*lsp++ = (uint32)(uintptr)(av[i] + ((USTKTOP - BY2PG) - (ulong)base));
 	*lsp = 0;
 	sp += (USTKTOP - BY2PG) - (ulong)base;
 }
@@ -425,7 +425,7 @@ bootargs(void *base)
 void
 showexec(ulong sp)
 {
-	u32int *a, *argv;
+	uint32 *a, *argv;
 	int i, n;
 	uchar *uzero;
 	
@@ -433,7 +433,7 @@ showexec(ulong sp)
 	iprint("showexec %p\n", (uintptr)sp);
 	if(sp >= USTKTOP || sp < USTKTOP-USTKSIZE)
 		panic("showexec: bad sp");
-	a = (u32int*)(uzero + sp);
+	a = (uint32*)(uzero + sp);
 	n = *a++;
 	iprint("argc=%d\n", n);
 	argv = a;
diff --git a/src/9vx/mmu.c b/src/9vx/mmu.c
@@ -200,7 +200,7 @@ putmmu(ulong va, ulong pa, Page *p)
 	Uspace *us;
 
 	if(tracemmu || (pa&~(PTEWRITE|PTEVALID)) != p->pa)
-		print("putmmu va %lux pa %lux p->pa %lux\n", va, pa, p->pa);
+		iprint("putmmu va %lux pa %lux p->pa %lux\n", va, pa, p->pa);
 
 	assert(p->pa < MEMSIZE && pa < MEMSIZE);
 	assert(up);
@@ -232,7 +232,7 @@ void
 flushmmu(void)
 {
 	if(tracemmu)
-		print("flushmmu\n");
+		iprint("flushmmu\n");
 
 	if(up){
 		vxproc_flush(up->pmmu.vxproc);
@@ -264,7 +264,7 @@ getspace(Proc *p)
 	us = ulist[nuspace-1];
 	if(us->p){
 		if(tracemmu)
-			print("^^^^^^^^^^ %ld %s [evict %d]\n", us->p->pid, us->p->text, us - uspace);
+			iprint("^^^^^^^^^^ %ld %s [evict %d]\n", us->p->pid, us->p->text, us - uspace);
 		mmapflush(us);
 	}
 	us->p = p;
@@ -283,7 +283,7 @@ takespace(Proc *p, Uspace *us)
 		return;
 	if(tracemmu){
 		if(us->p)
-			print("^^^^^^^^^^ %ld %s [steal %d]\n", us->p->pid, us->p->text, us - uspace);
+			iprint("^^^^^^^^^^ %ld %s [steal %d]\n", us->p->pid, us->p->text, us - uspace);
 	}
 	us->p = p;
 	mmapflush(us);
@@ -324,10 +324,10 @@ mmuswitch(Proc *p)
 		return;
 	
 	if(tracemmu)
-		print("mmuswitch %ld %s\n", p->pid, p->text);
+		iprint("mmuswitch %ld %s\n", p->pid, p->text);
 
 	if(p->pmmu.us && p->pmmu.us->p == p){
-		if(tracemmu) print("---------- %ld %s [%d]\n",
+		if(tracemmu) iprint("---------- %ld %s [%d]\n",
 			p->pid, p->text, p->pmmu.us - uspace);
 		usespace(p->pmmu.us);
 		if(!p->newtlb && !m->flushmmu){
@@ -343,7 +343,7 @@ mmuswitch(Proc *p)
 		getspace(p);
 	else
 		takespace(p, p->pmmu.us);
-	if(tracemmu) print("========== %ld %s [%d]\n",
+	if(tracemmu) iprint("========== %ld %s [%d]\n",
 		p->pid, p->text, p->pmmu.us - uspace);
 }
 
@@ -356,12 +356,12 @@ mmurelease(Proc *p)
 	if(p->kp)
 		return;
 	if(tracemmu)
-		print("mmurelease %ld %s\n", p->pid, p->text);
+		iprint("mmurelease %ld %s\n", p->pid, p->text);
 	if(p->pmmu.vxproc)
 		vxproc_flush(p->pmmu.vxproc);
 	if(p->pmmu.us){
 		if(tracemmu)
-			print("^^^^^^^^^^ %ld %s [release %d]\n", p->pid, p->text, p->pmmu.us - uspace);
+			iprint("^^^^^^^^^^ %ld %s [release %d]\n", p->pid, p->text, p->pmmu.us - uspace);
 		putspace(p->pmmu.us);
 		if(m->flushmmu)
 			mmapflush(p->pmmu.us);
diff --git a/src/9vx/nogui.c b/src/9vx/nogui.c
@@ -17,7 +17,7 @@
  * (They've been underscored.)
  */
 Memimage*
-allocmemimage(Rectangle r, u32int chan)
+allocmemimage(Rectangle r, uint32 chan)
 {
 	return _allocmemimage(r, chan);
 }
@@ -57,7 +57,7 @@ memimagedraw(Memimage *dst, Rectangle r, Memimage *src, Point sp,
 }
 
 void
-memfillcolor(Memimage *m, u32int val)
+memfillcolor(Memimage *m, uint32 val)
 {
 	_memfillcolor(m, val);
 }
diff --git a/src/9vx/stub.c b/src/9vx/stub.c
@@ -147,6 +147,7 @@ fpinit(void)
 	if(tracefp)
 		iprint("fpinit\n");
 
+#ifdef i386
 	asm volatile(
 		"finit\n"
 		"fwait\n"
@@ -154,12 +155,26 @@ fpinit(void)
 		"fldcw 0(%%esp)\n"
 		"popw %%ax\n"
 		"fwait\n" : : : "memory");
+#else
+	asm volatile(
+		"finit\n"
+		"fwait\n"
+		"pushq $0x232\n"
+		"fldcw 0(%%rsp)\n"
+		"popq %%rax\n"
+		"fwait\n" : : : "memory");
+#endif
+
 }
 
 void
 fpsave(FPsave *s)
 {
+#ifdef i386
 	asm volatile("fnsave 0(%%eax)\n" : : "a" (s) : "memory");
+#else
+	asm volatile("fnsave 0(%%rax)\n" : : "a" (s) : "memory");
+#endif
 	if(tracefp)
 		iprint("fpsave: %#x %#x %#x %#ux\n", s->control, s->status, s->tag, s->pc);
 }
@@ -169,7 +184,11 @@ fprestore(FPsave *s)
 {
 	if(tracefp)
 		iprint("fprestore: %#x %#x %#x %#ux\n", s->control, s->status, s->tag, s->pc);
+#ifdef i386
 	asm volatile("frstor 0(%%eax); fwait\n" : : "a" (s) : "memory");
+#else
+	asm volatile("frstor 0(%%rax); fwait\n" : : "a" (s) : "memory");
+#endif
 }
 
 void
@@ -177,7 +196,11 @@ fpenv(FPsave *s)
 {
 	if(tracefp)
 		iprint("fpenv: %#x %#x %#x %#ux\n", s->control, s->status, s->tag, s->pc);
+#ifdef i386
 	asm volatile("fstenv 0(%%eax)\n" : : "a" (s) : "memory");
+#else
+	asm volatile("fstenv 0(%%rax)\n" : : "a" (s) : "memory");
+#endif
 }
 
 void
@@ -481,7 +504,7 @@ iprint(char *fmt, ...)
 	va_start(arg, fmt);
 	n = vseprint(buf, buf+sizeof(buf), fmt, arg) - buf;
 	va_end(arg);
-	USED(write(2, buf, n));
+	write(2, buf, n);
 	return n;
 }
 
@@ -505,7 +528,7 @@ panic(char *fmt, ...)
 	n = vseprint(buf+strlen(buf), buf+sizeof(buf), fmt, arg) - buf;
 	va_end(arg);
 	buf[n] = '\n';
-	USED(write(2, buf, n+1));
+	write(2, buf, n+1);
 	if(doabort){
 #ifdef __APPLE__
 		fprint(2, "sleeping, so you can attach gdb to pid %d\n", (int)getpid());
diff --git a/src/9vx/trap.c b/src/9vx/trap.c
@@ -80,7 +80,7 @@ trap(Ureg *ureg)
 {
 	char buf[ERRMAX];
 	int vno;
-	
+
 	vno = ureg->trap;
 
 	switch(vno){
@@ -90,7 +90,7 @@ trap(Ureg *ureg)
 	
 	case VXTRAP_SOFT+0x40:	/* int $0x40 - system call */
 		if(tracesyscalls){
-			u32int *sp = (u32int*)(up->pmmu.uzero + ureg->usp);
+			uint32 *sp = (uint32*)(up->pmmu.uzero + ureg->usp);
 			iprint("%d [%s] %s %#ux %08ux %08ux %08ux %08ux\n",
 				up->pid, up->text,
 				sysctab[ureg->ax], sp[0], sp[1], sp[2], sp[3]);
@@ -262,7 +262,7 @@ syscall(Ureg *ureg)
 	up->psstate = 0;
 
 	if(scallnr == NOTED)
-		noted(ureg, *(u32int*)(up->pmmu.uzero + sp+BY2WD));
+		noted(ureg, *(uint32*)(up->pmmu.uzero + sp+BY2WD));
 
 	if(scallnr!=RFORK && (up->procctl || up->nnote)){
 		splhi();
@@ -342,14 +342,14 @@ notify(Ureg* ureg)
 	uzero = up->pmmu.uzero;
 	upureg = (void*)(uzero + sp);
 	memmove(upureg, ureg, sizeof(Ureg));
-	*(u32int*)(uzero + sp-BY2WD) = up->ureg;	/* word under Ureg is old up->ureg */
+	*(uint32*)(uzero + sp-BY2WD) = up->ureg;	/* word under Ureg is old up->ureg */
 	up->ureg = sp;
 	sp -= BY2WD+ERRMAX;
 	memmove((char*)(uzero + sp), up->note[0].msg, ERRMAX);
 	sp -= 3*BY2WD;
-	*(u32int*)(uzero + sp+2*BY2WD) = sp+3*BY2WD;		/* arg 2 is string */
-	*(u32int*)(uzero + sp+1*BY2WD) = up->ureg;	/* arg 1 is ureg* */
-	*(u32int*)(uzero + sp+0*BY2WD) = 0;			/* arg 0 is pc */
+	*(uint32*)(uzero + sp+2*BY2WD) = sp+3*BY2WD;		/* arg 2 is string */
+	*(uint32*)(uzero + sp+1*BY2WD) = up->ureg;	/* arg 1 is ureg* */
+	*(uint32*)(uzero + sp+0*BY2WD) = 0;			/* arg 0 is pc */
 	ureg->usp = sp;
 	ureg->pc = up->notify;
 	up->notified = 1;
@@ -406,7 +406,7 @@ noted(Ureg* ureg, ulong arg0)
 			pprint("suicide: trap in noted\n");
 			pexit("Suicide", 0);
 		}
-		up->ureg = *(u32int*)(uzero+oureg-BY2WD);
+		up->ureg = *(uint32*)(uzero+oureg-BY2WD);
 		qunlock(&up->debug);
 		break;
 
@@ -421,8 +421,8 @@ noted(Ureg* ureg, ulong arg0)
 		sp = oureg-4*BY2WD-ERRMAX;
 		splhi();
 		ureg->sp = sp;
-		((u32int*)(uzero+sp))[1] = oureg;	/* arg 1 0(FP) is ureg* */
-		((u32int*)(uzero+sp))[0] = 0;		/* arg 0 is pc */
+		((uint32*)(uzero+sp))[1] = oureg;	/* arg 1 0(FP) is ureg* */
+		((uint32*)(uzero+sp))[0] = 0;		/* arg 0 is pc */
 		break;
 
 	default:
@@ -443,13 +443,13 @@ noted(Ureg* ureg, ulong arg0)
 long
 execregs(ulong entry, ulong ssize, ulong nargs)
 {
-	u32int *sp;
+	uint32 *sp;
 	Ureg *ureg;
 
 	up->fpstate = FPinit;
 	fpoff();
 
-	sp = (u32int*)(up->pmmu.uzero + USTKTOP - ssize);
+	sp = (uint32*)(up->pmmu.uzero + USTKTOP - ssize);
 	*--sp = nargs;
 
 	ureg = up->dbgreg;
@@ -721,4 +721,3 @@ procsave(Proc *p)
 		p->fpstate = FPinactive;
 	}
 }
-
diff --git a/src/9vx/unix.h b/src/9vx/unix.h
@@ -52,14 +52,14 @@ typedef unsigned long ulong;
 typedef unsigned long long uvlong;
 typedef long long vlong;
 typedef ulong uintptr;
-typedef unsigned int u32int;
 typedef signed char schar;
 
 typedef unsigned short Rune;
 
-// gcc 4.3.2 is too smart - it warns about unused return values
-// for functions like write and fchmod, even if you cast
-// the result to (void).
-// #define USED(x) ((void)(x))
-#define USED(x) do{typeof(x) __tmp__ = (x); (void)__tmp__; } while(0)
+typedef unsigned int uint32;
+typedef unsigned long long uint64;
+typedef int int32;
+typedef long long int64;
+
+#define USED(x) ((void)(x))
 
diff --git a/src/9vx/vx32.c b/src/9vx/vx32.c
@@ -255,7 +255,6 @@ touser(void *initsp)
 		if(rc < 0)
 			panic("vxproc_run: %r");
 
-if(rc == 0x240 && vp->cpu->reg[EAX] == 4) { xxclose(); }
 		if(traceprocs)
 			iprint("-vx32 %p %p %s eip=%lux esp=%lux rc=%#x\n",
 				m, up, up->text, vp->cpu->eip, vp->cpu->reg[ESP], rc);
@@ -290,16 +289,9 @@ if(rc == 0x240 && vp->cpu->reg[EAX] == 4) { xxclose(); }
 	}
 }
 
-static void 
-breakme(void)
-{
-}
-
 static void
 proc2ureg(vxproc *vp, Ureg *u)
 {
-XXX this memset runs backward because the direction bit 
-is set wrong on entry!
 	memset(u, 0, sizeof *u);
 	u->pc = vp->cpu->eip;
 	u->ax = vp->cpu->reg[EAX];
diff --git a/src/9vx/x11/x11-draw.c b/src/9vx/x11/x11-draw.c
@@ -16,7 +16,7 @@
  * Allocate a Memimage with an optional pixmap backing on the X server.
  */
 Memimage*
-_xallocmemimage(Rectangle r, u32int chan, int pixmap)
+_xallocmemimage(Rectangle r, uint32 chan, int pixmap)
 {
 	int d, offset;
 	Memimage *m;
@@ -72,7 +72,7 @@ _xallocmemimage(Rectangle r, u32int chan, int pixmap)
 	 */
 	xi = XCreateImage(_x.display, _x.vis, d,
 		ZPixmap, 0, (char*)m->data->bdata, Dx(r), Dy(r),
-		32, m->width*sizeof(u32int));
+		32, m->width*sizeof(uint32));
 	if(xi == nil){
 		iprint("XCreateImage %R %d %d failed\n", r, m->width, m->depth);
 		freememimage(m);
@@ -107,7 +107,7 @@ _xallocmemimage(Rectangle r, u32int chan, int pixmap)
  * (They've been underscored.)
  */
 Memimage*
-allocmemimage(Rectangle r, u32int chan)
+allocmemimage(Rectangle r, uint32 chan)
 {
 	return _xallocmemimage(r, chan, PMundef);
 }
@@ -182,7 +182,7 @@ memimagedraw(Memimage *dst, Rectangle r, Memimage *src, Point sp,
 static int
 xdraw(Memdrawparam *par)
 {
-	u32int sdval;
+	uint32 sdval;
 	uint m, state;
 	Memimage *src, *dst, *mask;
 	Point dp, mp, sp;
@@ -284,7 +284,7 @@ xdraw(Memdrawparam *par)
 
 
 void
-memfillcolor(Memimage *m, u32int val)
+memfillcolor(Memimage *m, uint32 val)
 {
 	_memfillcolor(m, val);
 	if(m->x == nil)
@@ -296,7 +296,7 @@ memfillcolor(Memimage *m, u32int val)
 }
 
 void
-_xfillcolor(Memimage *m, Rectangle r, u32int v)
+_xfillcolor(Memimage *m, Rectangle r, uint32 v)
 {
 	Point p;
 	Xmem *xm;
@@ -454,7 +454,7 @@ unloadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata)
 	return _unloadmemimage(i, r, data, ndata);
 }
 
-u32int
+uint32
 pixelbits(Memimage *m, Point p)
 {
 	if(m->x)
diff --git a/src/9vx/x11/x11-inc.h b/src/9vx/x11/x11-inc.h
@@ -45,7 +45,7 @@ struct Xmem
 
 typedef struct Xprivate Xprivate;
 struct Xprivate {
-	u32int		chan;
+	uint32		chan;
 	XColormap	cmap;
 	XCursor		cursor;
 	XDisplay	*display;
@@ -60,23 +60,23 @@ struct Xprivate {
 	XGC		gccopy;
 	XGC		gccopy0;
 	XGC		gcfill;
-	u32int		gcfillcolor;
+	uint32		gcfillcolor;
 	XGC		gcfill0;
-	u32int		gcfill0color;
+	uint32		gcfill0color;
 	XGC		gcreplsrc;
-	u32int		gcreplsrctile;
+	uint32		gcreplsrctile;
 	XGC		gcreplsrc0;
-	u32int		gcreplsrc0tile;
+	uint32		gcreplsrc0tile;
 	XGC		gcsimplesrc;
-	u32int		gcsimplesrccolor;
-	u32int		gcsimplesrcpixmap;
+	uint32		gcsimplesrccolor;
+	uint32		gcsimplesrcpixmap;
 	XGC		gcsimplesrc0;
-	u32int		gcsimplesrc0color;
-	u32int		gcsimplesrc0pixmap;
+	uint32		gcsimplesrc0color;
+	uint32		gcsimplesrc0pixmap;
 	XGC		gczero;
-	u32int		gczeropixmap;
+	uint32		gczeropixmap;
 	XGC		gczero0;
-	u32int		gczero0pixmap;
+	uint32		gczero0pixmap;
 	Rectangle	newscreenr;
 	Memimage*	screenimage;
 	QLock		screenlock;
@@ -104,10 +104,10 @@ struct Xprivate {
 
 extern Xprivate _x;
 
-extern Memimage *_xallocmemimage(Rectangle, u32int, int);
+extern Memimage *_xallocmemimage(Rectangle, uint32, int);
 extern XImage	*_xallocxdata(Memimage*, Rectangle);
 extern void	_xdirtyxdata(Memimage*, Rectangle);
-extern void	_xfillcolor(Memimage*, Rectangle, u32int);
+extern void	_xfillcolor(Memimage*, Rectangle, uint32);
 extern void	_xfreexdata(Memimage*);
 extern XImage	*_xgetxdata(Memimage*, Rectangle);
 extern void	_xputxdata(Memimage*, Rectangle);
diff --git a/src/9vx/x11/x11-init.c b/src/9vx/x11/x11-init.c
@@ -570,7 +570,7 @@ setupcmap(XWindow w)
 {
 	char buf[30];
 	int i;
-	u32int p, pp;
+	uint32 p, pp;
 	XColor c;
 
 	if(_x.depth <= 1)
diff --git a/src/9vx/x11/x11-itrans.c b/src/9vx/x11/x11-itrans.c
@@ -361,7 +361,7 @@ _xgetsnarffrom(XWindow w, Atom clipboard, Atom target, int timeout0, int timeout
 
 	/* get the property */
 	xdata = nil;
-	XGetWindowProperty(_x.display, _x.drawable, prop, 0, SnarfSize/sizeof(u32int), 0, 
+	XGetWindowProperty(_x.display, _x.drawable, prop, 0, SnarfSize/sizeof(uint32), 0, 
 		AnyPropertyType, &type, &fmt, &len, &dummy, &xdata);
 	if((type != target && type != XA_STRING && type != _x.utf8string) || len == 0){
 		if(xdata)
diff --git a/src/Makefrag b/src/Makefrag
@@ -6,7 +6,7 @@ COMMON_CFLAGS = -g -O3 -MD -std=gnu99 -I. $(CFLAGS)
 COMMON_LDFLAGS = -g -L. $(LDFLAGS)
 
 # Host environment compiler options
-HOST_CC		:= $(CC)
+HOST_CC		:= $(CC) -fno-inline
 HOST_LD		:= $(LD)
 HOST_AR		:= $(AR)
 HOST_LDFLAGS	:= $(COMMON_LDFLAGS)
diff --git a/src/hash/sha2.c b/src/hash/sha2.c
@@ -34,7 +34,9 @@
 #include <assert.h>	/* assert() */
 
 #include "libvx32/words.h"	// XXX
+#ifndef BYTE_ORDER
 #define BYTE_ORDER LITTLE_ENDIAN 	// XXX
+#endif
 
 #include "sha2.h"
 
diff --git a/src/hash/whirlpool.c b/src/hash/whirlpool.c
@@ -1826,7 +1826,7 @@ void testAPI(void) {
                 }
                 NESSIEfinalize(&w, computedDigest);
                 if (memcmp(computedDigest, expectedDigest, DIGESTBYTES) != 0) {
-                    fprintf(stderr, "API error @ pieceLen = %lu\n", pieceLen);
+                    fprintf(stderr, "API error @ pieceLen = %lu\n", (long unsigned)pieceLen);
                     display(computedDigest, DIGESTBYTES); printf("\n\n");
                     display(expectedDigest, DIGESTBYTES); printf("\n\n");
                     return;
diff --git a/src/libvx32/linux.c b/src/libvx32/linux.c
@@ -221,9 +221,9 @@ int vx32_sighandler(int signo, siginfo_t *si, void *v)
 	asm("movw %"VSEGSTR",%0"
 		: "=r" (vs));
 	
-	if(0) vxprint("vx32_sighandler signo=%d eip=%#x esp=%#x vs=%#x\n",
+	if(vx32_debugxlate) vxprint("vx32_sighandler signo=%d eip=%#x esp=%#x vs=%#x\n",
 		signo, ctx->ctxeip, ctx->esp, vs);
-	if(0) dumpsigcontext(ctx);
+	if(vx32_debugxlate) dumpsigcontext(ctx);
 
 	if ((vs & 15) != 15)	// 8 (emu), LDT, RPL=3
 		return 0;
diff --git a/src/libvx32/run64.S b/src/libvx32/run64.S
@@ -108,6 +108,7 @@ vxrun_return:
 	movl	%edx,VXEMU_EFLAGS(%r8)
 
 	// Return to caller
+	cld	// x86-64 ABI says DF must be cleared
 	ret
 
 
diff --git a/src/libvx32/sig.c b/src/libvx32/sig.c
@@ -267,12 +267,12 @@ int vx32_siginit(void)
 	assert(!(ss.ss_flags & SS_ONSTACK));
 	if (ss.ss_flags & SS_DISABLE) {
 		// Allocate an alternate signal stack.
-		stk = malloc(65536);
+		ss.ss_size = 64*1024;
+		stk = malloc(ss.ss_size);
 		if (stk == NULL)
 			return -1;
 		ss.ss_flags = 0;
 		ss.ss_sp = stk;
-		ss.ss_size = 65536;
 		if (sigaltstack(&ss, NULL) < 0) {
 			free(stk);
 			return -1;