Plan 9 from Bell Labs’s /usr/web/sources/contrib/uriel/changes/2005/1106/3

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


64-bit fixes.
 [rsc] --rw-rw-r-- M 451989 glenda sys 4080 Nov  6 10:02 sys/src/libmach/0.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/0.c:130,137 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/0.c:130,138
	  	"setR30",	/* static base register name */
	  	0,		/* SB value */
	  	0x1000,		/* page size */
	- 	0xC0000000,	/* kernel base */
	- 	0x40000000,	/* kernel text mask */
	+ 	0xC0000000ULL,	/* kernel base */
	+ 	0x40000000ULL,	/* kernel text mask */
	+ 	0x7FFFFFFFULL,	/* user stack top */
	  	4,		/* quantization of pc */
	  	4,		/* szaddr */
	  	8,		/* szreg */
 [rsc] --rw-rw-r-- M 451989 glenda sys 2074 Nov  6 10:02 sys/src/libmach/2.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2.c:75,82 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2.c:75,83
	  	"a6base",	/* static base register name */
	  	0,		/* value */
	  	0x2000,		/* page size */
	- 	0x80000000,	/* kernel base */
	+ 	0x80000000ULL,	/* kernel base */
	  	0,		/* kernel text mask */
	+ 	0x7FFFFFFFULL,	/* user stack top */
	  	2,		/* quantization of pc */
	  	4,		/* szaddr */
	  	4,		/* szreg */
 [rsc] --rw-rw-r-- M 451989 glenda sys 61298 Nov  6 10:03 sys/src/libmach/2db.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:9,18 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:9,18
	  
	  static	char	*m68020excep(Map*, Rgetter);
	  
	- static	int	m68020foll(Map*, ulong, Rgetter, ulong*);
	- static	int	m68020inst(Map*, ulong, char, char*, int);
	- static	int	m68020das(Map*, ulong, char*, int);
	- static	int	m68020instlen(Map*, ulong);
	+ static	int	m68020foll(Map*, uvlong, Rgetter, uvlong*);
	+ static	int	m68020inst(Map*, uvlong, char, char*, int);
	+ static	int	m68020das(Map*, uvlong, char*, int);
	+ static	int	m68020instlen(Map*, uvlong);
	  
	  Machdata m68020mach =
	  {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:95,103 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:95,104
	  {
	  	struct ftype *ft;
	  	int i, size, vec;
	- 	ulong efl[2], stktop;
	+ 	ulong efl[2];
	  	uchar *ef=(uchar*)efl;
	- 	long l;
	+ 	ulong l;
	+ 	uvlong stktop;
	  	short fvo;
	  
	  		/* The kernel proc pointer on a 68020 is always
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:112,118 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:113,120
	  	if ((l&0xfc000000) == 0x04000000)	/* if NeXT */
	  		size = 30*2;
	  	else
	- 		size = 46*2;		/* 68020 */
	+ 		size = 46*2;			/* 68020 */
	+ 	USED(size);
	  
	  	stktop = mach->kbase+mach->pgsize;
	  	for(i=3; i<100; i++){
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:145,151 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:147,153
	  static char *
	  m68020excep(Map *map, Rgetter rget)
	  {
	- 	ulong pc;
	+ 	uvlong pc;
	  	uchar buf[4];
	  
	  	if (m68020ufix(map) < 0)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:381,387 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:383,389
	  struct	inst
	  {
	  	int	n;		/* # bytes in instruction */
	- 	ulong	addr;		/* addr of start of instruction */
	+ 	uvlong	addr;		/* addr of start of instruction */
	  	ushort	raw[4+12];	/* longest instruction: 24 byte packed immediate */
	  	Operand	and[2];
	  	char	*end;		/* end of print buffer */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:906,912 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:908,914
	  }
	  
	  static int
	- getword(Inst *ip, long offset)
	+ getword(Inst *ip, uvlong offset)
	  {
	  	if (ip->n < nelem(ip->raw)) {
	  		if (get2(mymap, offset, &ip->raw[ip->n++]) > 0)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:1314,1320 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:1316,1322
	  plocal(Inst *ip, Operand *ap)
	  {
	  	int ret, offset;
	- 	long moved;
	+ 	uvlong moved;
	  	Symbol s;
	  
	  	offset = ap->disp;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:1979,1985 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:1981,1987
	  }
	  
	  static int
	- m68020instlen(Map *map, ulong pc)
	+ m68020instlen(Map *map, uvlong pc)
	  {
	  	Inst i;
	  	Optable *op;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:1994,2003 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:1996,2006
	  }
	  
	  static int
	- m68020foll(Map *map, ulong pc, Rgetter rget, ulong *foll)
	+ m68020foll(Map *map, uvlong pc, Rgetter rget, uvlong *foll)
	  {
	  	int j;
	  	Inst i;
	+ 	ulong l;
	  	Optable *op;
	  
	  	mymap = map;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:2019,2026 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:2022,2030
	  			foll[1] = pc+2+i.and[j].immediate;
	  			return 2;
	  		case STACK:	/* RTR, RTS, RTD */
	- 			if (get4(map, (*rget)(map, mach->sp), (long*) foll) < 0)
	+ 			if (get4(map, (*rget)(map, mach->sp), &l) < 0)
	  				return -1;
	+ 			*foll = l;
	  			return 1;
	  		default:
	  			break;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:2031,2037 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:2035,2041
	  }
	  
	  static int
	- m68020inst(Map *map, ulong pc, char modifier, char *buf, int n)
	+ m68020inst(Map *map, uvlong pc, char modifier, char *buf, int n)
	  {
	  	Inst i;
	  	Optable *op;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/2db.c:2057,2063 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/2db.c:2061,2067
	  }
	  
	  static int
	- m68020das(Map *map, ulong pc, char *buf, int n)
	+ m68020das(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Inst i;
	  	Optable *op;
 [rsc] --rw-rw-r-- M 451989 glenda sys 1553 Nov  6 10:03 sys/src/libmach/5.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5.c:53,60 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5.c:53,61
	  	"setR12",	/* static base register name */
	  	0,		/* static base register value */
	  	0x1000,		/* page size */
	- 	0xC0000000,	/* kernel base */
	+ 	0xC0000000ULL,	/* kernel base */
	  	0,		/* kernel text mask */
	+ 	0x7FFFFFFFULL,	/* user stack top */
	  	4,		/* quantization of pc */
	  	4,		/* szaddr */
	  	4,		/* szreg */
 [rsc] --rw-rw-r-- M 451989 glenda sys 21545 Nov  6 10:03 sys/src/libmach/5db.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:18,24 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:18,24
	  {
	  	Map	*map;
	  	ulong	w;
	- 	ulong	addr;
	+ 	uvlong	addr;
	  	uchar	op;			/* super opcode */
	  
	  	uchar	cond;			/* bits 28-31 */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:39,45 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:39,45
	  {
	  	char*	o;
	  	void	(*fmt)(Opcode*, Instr*);
	- 	ulong	(*foll)(Map*, Rgetter, Instr*, ulong);
	+ 	uvlong	(*foll)(Map*, Rgetter, Instr*, uvlong);
	  	char*	a;
	  };
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:51,60 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:51,60
	   */
	  
	  static	char	*armexcep(Map*, Rgetter);
	- static	int	armfoll(Map*, ulong, Rgetter, ulong*);
	- static	int	arminst(Map*, ulong, char, char*, int);
	- static	int	armdas(Map*, ulong, char*, int);
	- static	int	arminstlen(Map*, ulong);
	+ static	int	armfoll(Map*, uvlong, Rgetter, uvlong*);
	+ static	int	arminst(Map*, uvlong, char, char*, int);
	+ static	int	armdas(Map*, uvlong, char*, int);
	+ static	int	arminstlen(Map*, uvlong);
	  
	  /*
	   *	Debugger interface
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:82,91 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:82,91
	  static char*
	  armexcep(Map *map, Rgetter rget)
	  {
	- 	long c;
	+ 	uvlong c;
	  
	  	c = (*rget)(map, "TYPE");
	- 	switch (c&0x1f) {
	+ 	switch ((int)c&0x1f) {
	  	case 0x11:
	  		return "Fiq interrupt";
	  	case 0x12:
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:196,204 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:196,204
	  }
	  
	  static int
	- decode(Map *map, ulong pc, Instr *i)
	+ decode(Map *map, uvlong pc, Instr *i)
	  {
	- 	long w;
	+ 	ulong w;
	  
	  	if(get4(map, pc, &w) < 0) {
	  		werrstr("can't read instruction: %r");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:232,238 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:232,238
	  	int offset;
	  
	  	if(!findsym(i->addr, CTEXT, &s)) {
	- 		if(debug)fprint(2,"fn not found @%lux: %r\n", i->addr);
	+ 		if(debug)fprint(2,"fn not found @%llux: %r\n", i->addr);
	  		return 0;
	  	}
	  	fn = s.name;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:460,466 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:460,466
	  static int
	  armcondpass(Map *map, Rgetter rget, uchar cond)
	  {
	- 	ulong psr;
	+ 	uvlong psr;
	  	uchar n;
	  	uchar z;
	  	uchar c;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:591,597 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:591,597
	  	}
	  }
	  
	- static ulong
	+ static uvlong
	  armaddr(Map *map, Rgetter rget, Instr *i)
	  {
	  	char buf[8];
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:637,644 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:637,644
	  	}
	  }
	  
	- static ulong
	- armfadd(Map *map, Rgetter rget, Instr *i, ulong pc)
	+ static uvlong
	+ armfadd(Map *map, Rgetter rget, Instr *i, uvlong pc)
	  {
	  	char buf[8];
	  	int r;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:653,660 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:653,660
	  	return rget(map, buf) + armshiftval(map, rget, i);
	  }
	  
	- static ulong
	- armfmovm(Map *map, Rgetter rget, Instr *i, ulong pc)
	+ static uvlong
	+ armfmovm(Map *map, Rgetter rget, Instr *i, uvlong pc)
	  {
	  	ulong v;
	  	ulong addr;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:664,670 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:664,670
	  		return pc+4;
	  
	  	addr = armmaddr(map, rget, i) + nbits(i->w & BITS(0,15));
	- 	if(get4(map, addr, (long*)&v) < 0) {
	+ 	if(get4(map, addr, &v) < 0) {
	  		werrstr("can't read addr: %r");
	  		return -1;
	  	}
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:671,678 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:671,678
	  	return v;
	  }
	  
	- static ulong
	- armfbranch(Map *map, Rgetter rget, Instr *i, ulong pc)
	+ static uvlong
	+ armfbranch(Map *map, Rgetter rget, Instr *i, uvlong pc)
	  {
	  	if(!armcondpass(map, rget, (i->w >> 28) & 0xf))
	  		return pc+4;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:680,690 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:680,689
	  	return pc + (((signed long)i->w << 8) >> 6) + 8;
	  }
	  
	- static ulong
	- armfmov(Map *map, Rgetter rget, Instr *i, ulong pc)
	+ static uvlong
	+ armfmov(Map *map, Rgetter rget, Instr *i, uvlong pc)
	  {
	- 	ulong rd;
	- 	ulong v;
	+ 	ulong rd, v;
	  
	  	rd = (i->w >> 12) & 0xf;
	  	if(rd != 15 || !armcondpass(map, rget, (i->w>>28)&0xf))
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:693,699 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:692,698
	  	 /* LDR */
	  	/* BUG: Needs LDH/B, too */
	  	if((i->w>>26)&0x3 == 1) {
	- 		if(get4(map, armaddr(map, rget, i), (long*)&v) < 0) {
	+ 		if(get4(map, armaddr(map, rget, i), &v) < 0) {
	  			werrstr("can't read instruction: %r");
	  			return pc+4;
	  		}
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:910,916 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:909,915
	  			fmt = "#%lx(R%d)";
	  			if (i->rn == 15) {
	  				/* convert load of offset(PC) to a load immediate */
	- 				if (get4(i->map, i->addr+i->imm+8, &i->imm) > 0)
	+ 				if (get4(i->map, i->addr+i->imm+8, (ulong*)&i->imm) > 0)
	  				{
	  					g = 1;
	  					fmt = "";
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:921,927 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:920,926
	  				if (i->rd == 11) {
	  					ulong nxti;
	  
	- 					if (get4(i->map, i->addr+4, (long*)&nxti) > 0) {
	+ 					if (get4(i->map, i->addr+4, &nxti) > 0) {
	  						if ((nxti & 0x0e0f0fff) == 0x060c000b) {
	  							i->imm += mach->sb;
	  							g = 1;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:1007,1013 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:1006,1012
	  }
	  
	  static int
	- printins(Map *map, ulong pc, char *buf, int n)
	+ printins(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:1021,1027 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:1020,1026
	  }
	  
	  static int
	- arminst(Map *map, ulong pc, char modifier, char *buf, int n)
	+ arminst(Map *map, uvlong pc, char modifier, char *buf, int n)
	  {
	  	USED(modifier);
	  	return printins(map, pc, buf, n);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:1028,1034 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:1027,1033
	  }
	  
	  static int
	- armdas(Map *map, ulong pc, char *buf, int n)
	+ armdas(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:1043,1049 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:1042,1048
	  }
	  
	  static int
	- arminstlen(Map *map, ulong pc)
	+ arminstlen(Map *map, uvlong pc)
	  {
	  	Instr i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/5db.c:1053,1061 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/5db.c:1052,1060
	  }
	  
	  static int
	- armfoll(Map *map, ulong pc, Rgetter rget, ulong *foll)
	+ armfoll(Map *map, uvlong pc, Rgetter rget, uvlong *foll)
	  {
	- 	ulong d;
	+ 	uvlong d;
	  	Instr i;
	  
	  	if(decode(map, pc, &i) < 0)
 [rsc] --rw-rw-r-- M 451989 jmk sys 3464 Nov  6 10:03 sys/src/libmach/6.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/6.c:2,17 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/6.c:2,14
	   * amd64 definition
	   */
	  #include <u.h>
	+ #include <libc.h>
	  #include <bio.h>
	  #include "/amd64/include/ureg.h"
	  #include <mach.h>
	  
	- #define	REGOFF(x)	(uvlong)(&((struct Ureg *) 0)->x)
	+ #define	REGOFF(x)	offsetof(struct Ureg, x)
	  
	- #define PC		REGOFF(ip)
	- #define SP		REGOFF(sp)
	- #define	AX		REGOFF(ax)
	- 
	  #define	REGSIZE		sizeof(struct Ureg)
	  #define FP_CTLS(x)	(REGSIZE+2*(x))
	  #define FP_CTL(x)	(REGSIZE+4*(x))
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/6.c:26,32 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/6.c:23,29
	  	{"CX",		REGOFF(cx),	RINT, 'Y'},
	  	{"DX",		REGOFF(dx),	RINT, 'Y'},
	  	{"SI",		REGOFF(si),	RINT, 'Y'},
	- 	{"DI",		REGOFF(di),	RINT, 'X'},
	+ 	{"DI",		REGOFF(di),	RINT, 'Y'},
	  	{"BP",		REGOFF(bp),	RINT, 'Y'},
	  	{"R8",		REGOFF(r8),	RINT, 'Y'},
	  	{"R9",		REGOFF(r9),	RINT, 'Y'},
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/6.c:41,61 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/6.c:38,60
	  	{"FS",		REGOFF(fs),	RINT, 'x'},
	  	{"GS",		REGOFF(gs),	RINT, 'x'},
	  	{"TYPE",	REGOFF(type), 	RINT, 'Y'},
	+ 	{"TRAP",	REGOFF(type), 	RINT, 'Y'},	/* alias for acid */
	  	{"ERROR",	REGOFF(error),	RINT, 'Y'},
	- 	{"PC",		PC,		RINT, 'Y'},
	+ 	{"IP",		REGOFF(ip),	RINT, 'Y'},
	+ 	{"PC",		REGOFF(ip),	RINT, 'Y'},	/* alias for acid */
	  	{"CS",		REGOFF(cs),	RINT, 'Y'},
	  	{"FLAGS",	REGOFF(flags),	RINT, 'Y'},
	- 	{"SP",		SP,		RINT, 'Y'},
	+ 	{"SP",		REGOFF(sp),	RINT, 'Y'},
	  	{"SS",		REGOFF(ss),	RINT, 'Y'},
	  
	  	{"FCW",		FP_CTLS(0),	RFLT, 'x'},
	  	{"FSW",		FP_CTLS(1),	RFLT, 'x'},
	- 	{"FTW",		FP_CTLS(2),	RFLT, 'x'},
	+ 	{"FTW",		FP_CTLS(2),	RFLT, 'b'},
	  	{"FOP",		FP_CTLS(3),	RFLT, 'x'},
	- 	{"FPC",		FP_CTL(2),	RFLT, 'Y'},
	+ 	{"RIP",		FP_CTL(2),	RFLT, 'Y'},
	  	{"RDP",		FP_CTL(4),	RFLT, 'Y'},
	  	{"MXCSR",	FP_CTL(6),	RFLT, 'X'},
	- 	{"MXCSRMSK",	FP_CTL(7),	RFLT, 'X'},
	+ 	{"MXCSRMASK",	FP_CTL(7),	RFLT, 'X'},
	  	{"M0",		FP_REG(0),	RFLT, 'F'},	/* assumes double */
	  	{"M1",		FP_REG(1),	RFLT, 'F'},
	  	{"M2",		FP_REG(2),	RFLT, 'F'},
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/6.c:97,117 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/6.c:96,117
	  Mach mamd64=
	  {
	  	"amd64",
	- 	MI386,		/* machine type */	/* TO DO */
	- 	amd64reglist,	/* register list */
	- 	REGSIZE,	/* size of registers in bytes */
	- 	FPREGSIZE,	/* size of fp registers in bytes */
	- 	"PC",		/* name of PC */
	- 	"SP",		/* name of SP */
	- 	0,		/* link register */
	- 	"setSB",	/* static base register name (bogus anyways) */
	- 	0,		/* static base register value */
	- 	0x1000,		/* page size */
	- 	0x80110000,	/* kernel base */	/* TO DO: uvlong or vlong */
	- 	0,		/* kernel text mask */
	- 	1,		/* quantization of pc */
	- 	8,		/* szaddr */
	- 	4,		/* szreg */
	- 	4,		/* szfloat */
	- 	8,		/* szdouble */
	+ 	MAMD64,			/* machine type */
	+ 	amd64reglist,		/* register list */
	+ 	REGSIZE,		/* size of registers in bytes */
	+ 	FPREGSIZE,		/* size of fp registers in bytes */
	+ 	"PC",			/* name of PC */
	+ 	"SP",			/* name of SP */
	+ 	0,			/* link register */
	+ 	"setSB",		/* static base register name (bogus anyways) */
	+ 	0,			/* static base register value */
	+ 	0x1000,			/* page size */
	+ 	0xFFFFFFFF80110000ULL,	/* kernel base */
	+ 	0,			/* kernel text mask */
	+ 	0x00007FFFFFFFF000ULL,	/* user stack top */
	+ 	1,			/* quantization of pc */
	+ 	8,			/* szaddr */
	+ 	4,			/* szreg */
	+ 	4,			/* szfloat */
	+ 	8,			/* szdouble */
	  };
 [rsc] --rw-rw-r-- M 451989 glenda sys 3299 Nov  6 10:03 sys/src/libmach/7.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7.c:103,110 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7.c:103,111
	  	"setSB",	/* static base register name */
	  	0,		/* static base register value */
	  	0x2000,		/* page size */
	- 	0x80000000,	/* kernel base */
	- 	0x00000000,	/* kernel text mask */
	+ 	0x80000000ULL,	/* kernel base */
	+ 	0,		/* kernel text mask */
	+ 	0x7FFFFFFFULL,	/* user stack top */
	  	4,		/* quantization of pc */
	  	4,		/* szaddr */
	  	8,		/* szreg (not used?) */
 [rsc] --rw-rw-r-- M 451989 glenda sys 17330 Nov  6 10:03 sys/src/libmach/7db.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7db.c:7,16 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7db.c:7,16
	   */
	  
	  static 	char	*alphaexcep(Map*, Rgetter);
	- static	int	alphafoll(Map*, ulong, Rgetter, ulong*);
	- static	int	alphainst(Map*, ulong, char, char*, int);
	- static	int	alphadas(Map*, ulong, char*, int);
	- static	int	alphainstlen(Map*, ulong);
	+ static	int	alphafoll(Map*, uvlong, Rgetter, uvlong*);
	+ static	int	alphainst(Map*, uvlong, char, char*, int);
	+ static	int	alphadas(Map*, uvlong, char*, int);
	+ static	int	alphainstlen(Map*, uvlong);
	  /*
	   *	Debugger interface
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7db.c:86,92 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7db.c:86,92
	  static	char FRAMENAME[] = ".frame";
	  
	  typedef struct {
	- 	ulong addr;
	+ 	uvlong addr;
	  	uchar op;			/* bits 31-26 */
	  	uchar ra;			/* bits 25-21 */
	  	uchar rb;			/* bits 20-16 */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7db.c:109,117 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7db.c:109,117
	  static Map *mymap;
	  
	  static int
	- decode(ulong pc, Instr *i)
	+ decode(uvlong pc, Instr *i)
	  {
	- 	long w;
	+ 	ulong w;
	  
	  	if (get4(mymap, pc, &w) < 0) {
	  		werrstr("can't read instruction: %r");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7db.c:140,146 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7db.c:140,146
	  }
	  
	  static int
	- mkinstr(ulong pc, Instr *i)
	+ mkinstr(uvlong pc, Instr *i)
	  {
	  /*	Instr x; */
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7db.c:397,406 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7db.c:397,406
	  	"OPC07",	0,	alphaxxx,
	  	"MOVQA",	load,	alphaload,
	  	"MOVQAH",	load,	alphaload,
	- 	"MOVBU",	load,	alphaload,			/* v 3 */
	+ 	"MOVBU",	load,	alphaload,		/* v 3 */
	  	"MOVQU",	load,	alphaload,
	  	"MOVWU",	load,	alphaload,		/* v 3 */
	- 	"MOVWU",	store,	alphastore,	/* v 3 */
	+ 	"MOVWU",	store,	alphastore,		/* v 3 */
	  	"MOVBU",	store,	alphastore,		/* v 3 */
	  	"MOVQU",	store,	alphastore,
	  	0,		0,	0,			/* int arith */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7db.c:412,424 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7db.c:412,424
	  	0,		0,	0,			/* ieee */
	  	0,		0,	0,			/* fp */
	  	0,		misc,	alphaxxx,
	- 	"PAL19 [HW_MFPR]",	0,	alphaxxx,
	+ 	"PAL19 [HW_MFPR]",0,	alphaxxx,
	  	"JSR",		jmp,	0,
	- 	"PAL1B [HW_LD]",	0,	alphaxxx,
	+ 	"PAL1B [HW_LD]",0,	alphaxxx,
	  	"OPC1C",	0,	alphaxxx,
	- 	"PAL1D [HW_MTPR]",	0,	alphaxxx,
	- 	"PAL1E [HW_REI]",	0,	alphaxxx,
	- 	"PAL1F [HW_ST]",	0,	alphaxxx,
	+ 	"PAL1D [HW_MTPR]",0,	alphaxxx,
	+ 	"PAL1E [HW_REI]",0,	alphaxxx,
	+ 	"PAL1F [HW_ST]",0,	alphaxxx,
	  	"MOVF",		loadf,	alphafload,
	  	"MOVG",		loadf,	alphafload,
	  	"MOVS",		loadf,	alphafload,
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7db.c:804,810 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7db.c:804,810
	  }
	  
	  static int
	- printins(Map *map, ulong pc, char *buf, int n)
	+ printins(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr i;
	  	Opcode *o;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7db.c:855,861 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7db.c:855,861
	  }
	  
	  static int
	- alphainst(Map *map, ulong pc, char modifier, char *buf, int n)
	+ alphainst(Map *map, uvlong pc, char modifier, char *buf, int n)
	  {
	  	USED(modifier);
	  	return printins(map, pc, buf, n);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7db.c:862,868 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7db.c:862,868
	  }
	  
	  static int
	- alphadas(Map *map, ulong pc, char *buf, int n)
	+ alphadas(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7db.c:882,888 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7db.c:882,888
	  }
	  
	  static int
	- alphainstlen(Map *map, ulong pc)
	+ alphainstlen(Map *map, uvlong pc)
	  {
	  	Instr i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/7db.c:893,899 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/7db.c:893,899
	  }
	  
	  static int
	- alphafoll(Map *map, ulong pc, Rgetter rget, ulong *foll)
	+ alphafoll(Map *map, uvlong pc, Rgetter rget, uvlong *foll)
	  {
	  	char buf[8];
	  	Instr i;
 [rsc] --rw-rw-r-- M 451989 glenda sys 2060 Nov  6 10:03 sys/src/libmach/8.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8.c:68,75 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8.c:68,76
	  	"setSB",	/* static base register name (bogus anyways) */
	  	0,		/* static base register value */
	  	0x1000,		/* page size */
	- 	0x80100000,	/* kernel base */
	+ 	0x80100000ULL,	/* kernel base */
	  	0,		/* kernel text mask */
	+ 	0x7FFFFFFFULL,	/* user stack top */
	  	1,		/* quantization of pc */
	  	4,		/* szaddr */
	  	4,		/* szreg */
 [rsc] --rw-rw-r-- M 451989 glenda sys 50612 Nov  6 10:03 sys/src/libmach/8db.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:10,21 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:10,21
	  
	  static	char	*i386excep(Map*, Rgetter);
	  
	- static	int	i386trace(Map*, ulong, ulong, ulong, Tracer);
	- static	ulong	i386frame(Map*, ulong, ulong, ulong, ulong);
	- static	int	i386foll(Map*, ulong, Rgetter, ulong*);
	- static	int	i386inst(Map*, ulong, char, char*, int);
	- static	int	i386das(Map*, ulong, char*, int);
	- static	int	i386instlen(Map*, ulong);
	+ static	int	i386trace(Map*, uvlong, uvlong, uvlong, Tracer);
	+ static	uvlong	i386frame(Map*, uvlong, uvlong, uvlong, uvlong);
	+ static	int	i386foll(Map*, uvlong, Rgetter, uvlong*);
	+ static	int	i386inst(Map*, uvlong, char, char*, int);
	+ static	int	i386das(Map*, uvlong, char*, int);
	+ static	int	i386instlen(Map*, uvlong);
	  
	  static	char	STARTSYM[] =	"_main";
	  static	char	PROFSYM[] =	"_mainp";
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:74,80 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:74,80
	  i386excep(Map *map, Rgetter rget)
	  {
	  	ulong c;
	- 	ulong pc;
	+ 	uvlong pc;
	  	static char buf[16];
	  
	  	c = (*rget)(map, "TRAP");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:85,91 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:85,91
	  			if (memcmp(buf, machdata->bpinst, machdata->bpsize) == 0)
	  				return "breakpoint";
	  		}
	- 		sprint(buf, "exception %ld", c);
	+ 		snprint(buf, sizeof(buf), "exception %ld", c);
	  		return buf;
	  	} else
	  		return excname[c];
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:92,101 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:92,101
	  }
	  
	  static int
	- i386trace(Map *map, ulong pc, ulong sp, ulong link, Tracer trace)
	+ i386trace(Map *map, uvlong pc, uvlong sp, uvlong link, Tracer trace)
	  {
	  	int i;
	- 	ulong osp;
	+ 	uvlong osp;
	  	Symbol s, f;
	  
	  	USED(link);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:115,121 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:115,121
	  			sp += f.value-mach->szaddr;
	  		}
	  
	- 		if (get4(map, sp, (long *) &pc) < 0)
	+ 		if (geta(map, sp, &pc) < 0)
	  			break;
	  
	  		if(pc == 0)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:130,137 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:130,137
	  	return i;
	  }
	  
	- static ulong
	- i386frame(Map *map, ulong addr, ulong pc, ulong sp, ulong link)
	+ static uvlong
	+ i386frame(Map *map, uvlong addr, uvlong pc, uvlong sp, uvlong link)
	  {
	  	Symbol s, f;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:149,155 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:149,155
	  		if (s.value == addr)
	  			return sp;
	  
	- 		if (get4(map, sp, (long *)&pc) < 0)
	+ 		if (geta(map, sp, &pc) < 0)
	  			break;
	  		sp += mach->szaddr;
	  	}
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:165,177 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:165,177
	  struct	Instr
	  {
	  	uchar	mem[1+1+1+1+2+1+1+4+4];		/* raw instruction */
	- 	ulong	addr;		/* address of start of instruction */
	+ 	uvlong	addr;		/* address of start of instruction */
	  	int	n;		/* number of bytes in instruction */
	  	char	*prefix;	/* instr prefix */
	  	char	*segment;	/* segment override */
	  	uchar	jumptype;	/* set to the operand type for jump/ret/call */
	  	uchar	amd64;
	- 	uchar	rex;	/* REX prefix (or zero) */
	+ 	uchar	rex;		/* REX prefix (or zero) */
	  	char	osize;		/* 'W' or 'L' (or 'Q' on amd64) */
	  	char	asize;		/* address size 'W' or 'L' (or 'Q' or amd64) */
	  	uchar	mod;		/* bits 6-7 of mod r/m field */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:179,191 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:179,191
	  	char	ss;		/* bits 6-7 of SIB */
	  	char	index;		/* bits 3-5 of SIB */
	  	char	base;		/* bits 0-2 of SIB */
	- 	char	rip;	/* RIP-relative in amd64 mode */
	- 	uchar	opre;	/* f2/f3 could introduce media */
	+ 	char	rip;		/* RIP-relative in amd64 mode */
	+ 	uchar	opre;		/* f2/f3 could introduce media */
	  	short	seg;		/* segment of far address */
	  	ulong	disp;		/* displacement */
	  	ulong 	imm;		/* immediate */
	  	ulong 	imm2;		/* second immediate operand */
	- 	uvlong	imm64;	/* big immediate */
	+ 	uvlong	imm64;		/* big immediate */
	  	char	*curr;		/* fill level in output buffer */
	  	char	*end;		/* end of output buffer */
	  	char	*err;		/* error message */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:215,221 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:215,221
	  
	  	/* amd64 rex extension byte */
	  enum{
	- 	REXW	= 1<<3,	/* =1, 64-bit operand size */
	+ 	REXW		= 1<<3,	/* =1, 64-bit operand size */
	  	REXR		= 1<<2,	/* extend modrm reg */
	  	REXX		= 1<<1,	/* extend sib index */
	  	REXB		= 1<<0	/* extend modrm r/m, sib base, or opcode reg */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:255,261 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:255,261
	  	Iw,			/* 16-bit immediate -> imm */
	  	Iw2,			/* 16-bit immediate -> imm2 */
	  	Iwd,			/* Operand-sized immediate (no sign extension)*/
	- 	Iwdq,		/* Operand-sized immediate, possibly 64 bits */
	+ 	Iwdq,			/* Operand-sized immediate, possibly 64 bits */
	  	Awd,			/* Address offset */
	  	Iwds,			/* Operand-sized immediate (sign extended) */
	  	RM,			/* Word or long R/M field with register (/r) */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:273,281 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:273,281
	  	OA,			/* literal 0x0a byte */
	  	PTR,			/* Seg:Displacement addr (ptr16:16 or ptr16:32) */
	  	AUX,			/* Multi-byte op code - Auxiliary table */
	- 	AUXMM,		/* multi-byte op code - auxiliary table chosen by prefix */
	+ 	AUXMM,			/* multi-byte op code - auxiliary table chosen by prefix */
	  	PRE,			/* Instr Prefix */
	- 	OPRE,		/* Instr Prefix or media op extension */
	+ 	OPRE,			/* Instr Prefix or media op extension */
	  	SEG,			/* Segment Prefix */
	  	OPOVER,			/* Operand size override */
	  	ADDOVER,		/* Address size override */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:299,305 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:299,305
	  [0x03]	0,0,		"MOVL	%e,IDTR",
	  [0x04]	0,0,		"MOVW	MSW,%e",	/* word */
	  [0x06]	0,0,		"MOVW	%e,MSW",	/* word */
	- [0x07]	0,0,		"INVLPG	%e",	/* TO DO: distinguish SWAPGS? */
	+ [0x07]	0,0,		"INVLPG	%e",		/* TO DO: distinguish SWAPGS? */
	  };
	  
	  /* 0F71 */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:330,358 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:330,358
	  
	  static Optable optab0F0F[256]=
	  {
	- [0x0c]	0,0,	"PI2FW	%m,%M",
	- [0x0d]	0,0,	"PI2L	%m,%M",
	- [0x1c]	0,0,	"PF2IW	%m,%M",
	- [0x1d]	0,0,	"PF2IL	%m,%M",
	- [0x8a]	0,0,	"PFNACC	%m,%M",
	- [0x8e]	0,0,	"PFPNACC	%m,%M",
	- [0x90]	0,0,	"PFCMPGE	%m,%M",
	- [0x94]	0,0,	"PFMIN	%m,%M",
	- [0x96]	0,0,	"PFRCP	%m,%M",
	- [0x97]	0,0,	"PFRSQRT	%m,%M",
	- [0x9a]	0,0,	"PFSUB	%m,%M",
	- [0x9e]	0,0,	"PFADD	%m,%M",
	- [0xa0]	0,0,	"PFCMPGT	%m,%M",
	- [0xa4]	0,0,	"PFMAX	%m,%M",
	- [0xa6]	0,0,	"PFRCPIT1	%m,%M",
	- [0xa7]	0,0,	"PFRSQIT1	%m,%M",
	- [0xaa]	0,0,	"PFSUBR	%m,%M",
	- [0xae]	0,0,	"PFACC	%m,%M",
	- [0xb0]	0,0,	"PFCMPEQ	%m,%M",
	- [0xb4]	0,0,	"PFMUL	%m,%M",
	- [0xb6]	0,0,	"PFRCPI2T	%m,%M",
	- [0xb7]	0,0,	"PMULHRW	%m,%M",
	- [0xbb]	0,0,	"PSWAPL	%m,%M",
	+ [0x0c]	0,0,		"PI2FW	%m,%M",
	+ [0x0d]	0,0,		"PI2L	%m,%M",
	+ [0x1c]	0,0,		"PF2IW	%m,%M",
	+ [0x1d]	0,0,		"PF2IL	%m,%M",
	+ [0x8a]	0,0,		"PFNACC	%m,%M",
	+ [0x8e]	0,0,		"PFPNACC	%m,%M",
	+ [0x90]	0,0,		"PFCMPGE	%m,%M",
	+ [0x94]	0,0,		"PFMIN	%m,%M",
	+ [0x96]	0,0,		"PFRCP	%m,%M",
	+ [0x97]	0,0,		"PFRSQRT	%m,%M",
	+ [0x9a]	0,0,		"PFSUB	%m,%M",
	+ [0x9e]	0,0,		"PFADD	%m,%M",
	+ [0xa0]	0,0,		"PFCMPGT	%m,%M",
	+ [0xa4]	0,0,		"PFMAX	%m,%M",
	+ [0xa6]	0,0,		"PFRCPIT1	%m,%M",
	+ [0xa7]	0,0,		"PFRSQIT1	%m,%M",
	+ [0xaa]	0,0,		"PFSUBR	%m,%M",
	+ [0xae]	0,0,		"PFACC	%m,%M",
	+ [0xb0]	0,0,		"PFCMPEQ	%m,%M",
	+ [0xb4]	0,0,		"PFMUL	%m,%M",
	+ [0xb6]	0,0,		"PFRCPI2T	%m,%M",
	+ [0xb7]	0,0,		"PMULHRW	%m,%M",
	+ [0xbb]	0,0,		"PSWAPL	%m,%M",
	  };
	  
	  static Optable optab0FC7[8]=
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:385,392 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:385,392
	  static Optable optab660F[256]=
	  {
	  [0x2B]	RM,0,		"MOVNTPD	%x,%e",
	- [0x2E]	RM,0,	"UCOMISD	%x,%X",
	- [0x2F]	RM,0,	"COMISD	%x,%X",
	+ [0x2E]	RM,0,		"UCOMISD	%x,%X",
	+ [0x2F]	RM,0,		"COMISD	%x,%X",
	  [0x5A]	RM,0,		"CVTPD2PS	%x,%X",
	  [0x5B]	RM,0,		"CVTPS2PL	%x,%X",
	  [0x6A]	RM,0,		"PUNPCKHLQ %x,%X",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:394,400 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:394,400
	  [0x6C]	RM,0,		"PUNPCKLQDQ %x,%X",
	  [0x6D]	RM,0,		"PUNPCKHQDQ %x,%X",
	  [0x6E]	RM,0,		"MOV%S	%e,%X",
	- [0x6F]	RM,0,		"MOVO	%x,%X",	/* MOVDQA */
	+ [0x6F]	RM,0,		"MOVO	%x,%X",		/* MOVDQA */
	  [0x70]	RM,Ib,		"PSHUFL	%i,%x,%X",
	  [0x71]	RMOP,0,		optab660F71,
	  [0x72]	RMOP,0,		optab660F72,
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:413,420 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:413,420
	  
	  static Optable optabF20F[256]=
	  {
	- [0x10]	RM,0,	"MOVSD	%x,%X",
	- [0x11]	RM,0,	"MOVSD	%X,%x",
	+ [0x10]	RM,0,		"MOVSD	%x,%X",
	+ [0x11]	RM,0,		"MOVSD	%X,%x",
	  [0x2A]	RM,0,		"CVTS%S2SD	%e,%X",
	  [0x2C]	RM,0,		"CVTTSD2S%S	%x,%r",
	  [0x2D]	RM,0,		"CVTSD2S%S	%x,%r",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:428,435 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:428,435
	  
	  static Optable optabF30F[256]=
	  {
	- [0x10]	RM,0,	"MOVSS	%x,%X",
	- [0x11]	RM,0,	"MOVSS	%X,%x",
	+ [0x10]	RM,0,		"MOVSS	%x,%X",
	+ [0x11]	RM,0,		"MOVSS	%X,%x",
	  [0x2A]	RM,0,		"CVTS%S2SS	%e,%X",
	  [0x2C]	RM,0,		"CVTTSS2S%S	%x,%r",
	  [0x2D]	RM,0,		"CVTSS2S%S	%x,%r",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:449,467 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:449,469
	  [0x01]	RMOP,0,		optab0F01,
	  [0x02]	RM,0,		"LAR	%e,%r",
	  [0x03]	RM,0,		"LSL	%e,%r",
	+ [0x05]	0,0,		"SYSCALL",
	  [0x06]	0,0,		"CLTS",
	  [0x07]	0,0,		"SYSRET",
	  [0x08]	0,0,		"INVD",
	  [0x09]	0,0,		"WBINVD",
	- [0x0F]	RM,AUX,	optab0F0F,	/* 3DNow! */
	- [0x10]	RM,0,	"MOVU%s	%x,%X",
	- [0x11]	RM,0,	"MOVU%s	%X,%x",
	- [0x12]	RM,0,	"MOV[H]L%s	%x,%X",	/* TO DO: H if source is XMM */
	- [0x13]	RM,0,	"MOVL%s	%X,%e",
	- [0x14]	RM,0,	"UNPCKL%s	%x,%X",
	- [0x15]	RM,0,	"UNPCKH%s	%x,%X",
	- [0x16]	RM,0,	"MOV[L]H%s	%x,%X",	/* TO DO: L if source is XMM */
	- [0x17]	RM,0,	"MOVH%s	%X,%x",
	+ [0x0B]	0,0,		"UD2",
	+ [0x0F]	RM,AUX,		optab0F0F,		/* 3DNow! */
	+ [0x10]	RM,0,		"MOVU%s	%x,%X",
	+ [0x11]	RM,0,		"MOVU%s	%X,%x",
	+ [0x12]	RM,0,		"MOV[H]L%s	%x,%X",	/* TO DO: H if source is XMM */
	+ [0x13]	RM,0,		"MOVL%s	%X,%e",
	+ [0x14]	RM,0,		"UNPCKL%s	%x,%X",
	+ [0x15]	RM,0,		"UNPCKH%s	%x,%X",
	+ [0x16]	RM,0,		"MOV[L]H%s	%x,%X",	/* TO DO: L if source is XMM */
	+ [0x17]	RM,0,		"MOVH%s	%X,%x",
	  [0x20]	RMR,0,		"MOVL	%C,%e",
	  [0x21]	RMR,0,		"MOVL	%D,%e",
	  [0x22]	RMR,0,		"MOVL	%e,%C",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:468,481 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:470,483
	  [0x23]	RMR,0,		"MOVL	%e,%D",
	  [0x24]	RMR,0,		"MOVL	%T,%e",
	  [0x26]	RMR,0,		"MOVL	%e,%T",
	- [0x28]	RM,0,	"MOVA%s	%x,%X",
	- [0x29]	RM,0,	"MOVA%s	%X,%x",
	- [0x2A]	RM,0,	"CVTPL2%s	%m*,%X",
	- [0x2B]	RM,0,	"MOVNT%s	%X,%e",
	- [0x2C]	RM,0,	"CVTT%s2PL	%x,%M",
	- [0x2D]	RM,0,	"CVT%s2PL	%x,%M",
	- [0x2E]	RM,0,	"UCOMISS	%x,%X",
	- [0x2F]	RM,0,	"COMISS	%x,%X",
	+ [0x28]	RM,0,		"MOVA%s	%x,%X",
	+ [0x29]	RM,0,		"MOVA%s	%X,%x",
	+ [0x2A]	RM,0,		"CVTPL2%s	%m*,%X",
	+ [0x2B]	RM,0,		"MOVNT%s	%X,%e",
	+ [0x2C]	RM,0,		"CVTT%s2PL	%x,%M",
	+ [0x2D]	RM,0,		"CVT%s2PL	%x,%M",
	+ [0x2E]	RM,0,		"UCOMISS	%x,%X",
	+ [0x2F]	RM,0,		"COMISS	%x,%X",
	  [0x30]	0,0,		"WRMSR",
	  [0x31]	0,0,		"RDTSC",
	  [0x32]	0,0,		"RDMSR",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:500,514 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:502,516
	  [0x53]	RM,0,		"RCP%s	%x,%X",
	  [0x54]	RM,0,		"AND%s	%x,%X",
	  [0x55]	RM,0,		"ANDN%s	%x,%X",
	- [0x56]	RM,0,		"OR%s	%x,%X",	/* TO DO: S/D */
	- [0x57]	RM,0,		"XOR%s	%x,%X",	/* S/D */
	- [0x58]	RM,0,		"ADD%s	%x,%X",	/* S/P S/D */
	+ [0x56]	RM,0,		"OR%s	%x,%X",		/* TO DO: S/D */
	+ [0x57]	RM,0,		"XOR%s	%x,%X",		/* S/D */
	+ [0x58]	RM,0,		"ADD%s	%x,%X",		/* S/P S/D */
	  [0x59]	RM,0,		"MUL%s	%x,%X",
	  [0x5A]	RM,0,		"CVTPS2PD	%x,%X",
	  [0x5B]	RM,0,		"CVTPL2PS	%x,%X",
	  [0x5C]	RM,0,		"SUB%s	%x,%X",
	  [0x5D]	RM,0,		"MIN%s	%x,%X",
	- [0x5E]	RM,0,		"DIV%s	%x,%X",	/* TO DO: S/P S/D */
	+ [0x5E]	RM,0,		"DIV%s	%x,%X",		/* TO DO: S/P S/D */
	  [0x5F]	RM,0,		"MAX%s	%x,%X",
	  [0x60]	RM,0,		"PUNPCKLBW %m,%M",
	  [0x61]	RM,0,		"PUNPCKLWL %m,%M",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:531,537 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:533,539
	  [0x7E]	RM,0,		"MOV%S %M,%e",
	  [0x7F]	RM,0,		"MOVQ %M,%m",
	  [0xAE]	RMOP,0,		optab0FAE,
	- [0xAA]	0,0,			"RSM",
	+ [0xAA]	0,0,		"RSM",
	  [0xB0]	RM,0,		"CMPXCHGB	%r,%e",
	  [0xB1]	RM,0,		"CMPXCHG%S	%r,%e",
	  [0xC0]	RMB,0,		"XADDB	%r,%e",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:539,544 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:541,554
	  [0xC2]	RM,Ib,		"CMP%s	%i,%x,%X",
	  [0xC3]	RM,0,		"MOVNTI%S	%r,%e",
	  [0xC6]	RM,Ib,		"SHUF%s	%i,%x,%X",
	+ [0xC8]	0,0,		"BSWAP	AX",
	+ [0xC9]	0,0,		"BSWAP	CX",
	+ [0xCA]	0,0,		"BSWAP	DX",
	+ [0xCB]	0,0,		"BSWAP	BX",
	+ [0xCC]	0,0,		"BSWAP	SP",
	+ [0xCD]	0,0,		"BSWAP	BP",
	+ [0xCE]	0,0,		"BSWAP	SI",
	+ [0xCF]	0,0,		"BSWAP	DI",
	  [0xD1]	RM,0,		"PSRLW %m,%M",
	  [0xD2]	RM,0,		"PSRLL %m,%M",
	  [0xD3]	RM,0,		"PSRLQ %m,%M",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:969,975 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:979,985
	  [0x0c]	Ib,0,		"ORB	%i,AL",
	  [0x0d]	Iwd,0,		"OR%S	%i,%OAX",
	  [0x0e]	0,0,		"PUSHL	CS",
	- [0x0f]	AUXMM,0,		optab0F,
	+ [0x0f]	AUXMM,0,	optab0F,
	  [0x10]	RMB,0,		"ADCB	%r,%e",
	  [0x11]	RM,0,		"ADC%S	%r,%e",
	  [0x12]	RMB,0,		"ADCB	%e,%r",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:1094,1100 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:1104,1110
	  [0x8a]	RMB,0,		"MOVB	%e,%r",
	  [0x8b]	RM,0,		"MOV%S	%e,%r",
	  [0x8c]	RM,0,		"MOVW	%g,%e",
	- [0x8d]	RM,0,		"LEA	%e,%r",
	+ [0x8d]	RM,0,		"LEA%S	%e,%r",
	  [0x8e]	RM,0,		"MOVW	%e,%g",
	  [0x8f]	RM,0,		"POP%S	%e",
	  [0x90]	0,0,		"NOP",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:1214,1220 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:1224,1230
	   *  get a byte of the instruction
	   */
	  static int
	- igetc(Map * map, Instr *ip, uchar *c)
	+ igetc(Map *map, Instr *ip, uchar *c)
	  {
	  	if(ip->n+1 > sizeof(ip->mem)){
	  		werrstr("instruction too long");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:1234,1240 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:1244,1250
	  static int
	  igets(Map *map, Instr *ip, ushort *sp)
	  {
	- 	uchar	c;
	+ 	uchar c;
	  	ushort s;
	  
	  	if (igetc(map, ip, &c) < 0)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:1378,1384 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:1388,1394
	  }
	  
	  static Optable *
	- mkinstr(Map *map, Instr *ip, ulong pc)
	+ mkinstr(Map *map, Instr *ip, uvlong pc)
	  {
	  	int i, n, norex;
	  	uchar c;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:1451,1456 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:1461,1467
	  					ip->imm = c|0xff00;
	  			else
	  				ip->imm = c&0xff;
	+ 			ip->imm64 = (long)ip->imm;
	  			break;
	  		case Iw:	/* 16-bit immediate -> imm */
	  			if (igets(map, ip, &s) < 0)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:1819,1825 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:1830,1836
	  	Symbol s;
	  	long w;
	  
	- 	if (findsym((long)val, CANY, &s)) {	/* TO DO */
	+ 	if (findsym(val, CANY, &s)) {		/* TO DO */
	  		w = val - s.value;
	  		if (w < 0)
	  			w = -w;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:1981,1987 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:1992,2002
	  				bprint(ip,"???");
	  			break;
	  		case 'p':
	- 			immediate(ip, ip->imm+ip->addr+ip->n);
	+ 			/*
	+ 			 * signed immediate in the ulong ip->imm.
	+ 			 */
	+ 			v = (long)ip->imm;
	+ 			immediate(ip, v+ip->addr+ip->n);
	  			break;
	  		case 'r':
	  			if (ip->osize == 'B')
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:2022,2030 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:2037,2045
	  }
	  
	  static int
	- i386inst(Map *map, ulong pc, char modifier, char *buf, int n)
	+ i386inst(Map *map, uvlong pc, char modifier, char *buf, int n)
	  {
	- 	Instr	instr;
	+ 	Instr instr;
	  	Optable *op;
	  
	  	USED(modifier);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:2040,2048 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:2055,2063
	  }
	  
	  static int
	- i386das(Map *map, ulong pc, char *buf, int n)
	+ i386das(Map *map, uvlong pc, char *buf, int n)
	  {
	- 	Instr	instr;
	+ 	Instr instr;
	  	int i;
	  
	  	if (mkinstr(map, &instr, pc) == 0) {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:2059,2065 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:2074,2080
	  }
	  
	  static int
	- i386instlen(Map *map, ulong pc)
	+ i386instlen(Map *map, uvlong pc)
	  {
	  	Instr i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:2069,2080 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:2084,2096
	  }
	  
	  static int
	- i386foll(Map *map, ulong pc, Rgetter rget, ulong *foll)
	+ i386foll(Map *map, uvlong pc, Rgetter rget, uvlong *foll)
	  {
	  	Instr i;
	  	Optable *op;
	  	ushort s;
	- 	ulong l, addr;
	+ 	uvlong l, addr;
	+ 	vlong v;
	  	int n;
	  
	  	op = mkinstr(map, &i, pc);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:2087,2101 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:2103,2118
	  	case RET:		/* RETURN or LEAVE */
	  	case Iw:		/* RETURN */
	  		if (strcmp(op->proto, "LEAVE") == 0) {
	- 			if (get4(map, (*rget)(map, "BP"), (long*)&l) < 0)
	+ 			if (geta(map, (*rget)(map, "BP"), &l) < 0)
	  				return -1;
	- 		} else if (get4(map, (*rget)(map, mach->sp), (long*)&l) < 0)
	+ 		} else if (geta(map, (*rget)(map, mach->sp), &l) < 0)
	  			return -1;
	  		foll[0] = l;
	  		return 1;
	  	case Iwds:		/* pc relative JUMP or CALL*/
	  	case Jbs:		/* pc relative JUMP or CALL */
	- 		foll[0] = pc+i.imm+i.n;
	+ 		v = (long)i.imm;
	+ 		foll[0] = pc+v+i.n;
	  		n = 1;
	  		break;
	  	case PTR:		/* seg:displacement JUMP or CALL */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/8db.c:2110,2131 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/8db.c:2127,2148
	  			/* calculate the effective address */
	  		addr = i.disp;
	  		if (i.base >= 0) {
	- 			if (get4(map, (*rget)(map, reg[i.rex&REXB? i.base+8: i.base]), (long*)&l) < 0)
	+ 			if (geta(map, (*rget)(map, reg[i.rex&REXB? i.base+8: i.base]), &l) < 0)
	  				return -1;
	  			addr += l;
	  		}
	  		if (i.index >= 0) {
	- 			if (get4(map, (*rget)(map, reg[i.rex&REXX? i.index+8: i.index]), (long*)&l) < 0)
	+ 			if (geta(map, (*rget)(map, reg[i.rex&REXX? i.index+8: i.index]), &l) < 0)
	  				return -1;
	  			addr += l*(1<<i.ss);
	  		}
	  			/* now retrieve a seg:disp value at that address */
	- 		if (get2(map, addr, &s) < 0)		/* seg */
	+ 		if (get2(map, addr, &s) < 0)			/* seg */
	  			return -1;
	  		foll[0] = s<<4;
	  		addr += 2;
	  		if (i.asize == 'L') {
	- 			if (get4(map, addr, (long*)&l) < 0)	/* disp32 */
	+ 			if (geta(map, addr, &l) < 0)		/* disp32 */
	  				return -1;
	  			foll[0] += l;
	  		} else {					/* disp16 */
 [rsc] --rw-rw-r-- M 451989 glenda sys 4588 Nov  6 10:02 sys/src/libmach/access.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:7,22 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:7,41
	  #include <bio.h>
	  #include <mach.h>
	  
	- static	int	mget(Map*, ulong, char*, int);
	- static	int	mput(Map*, ulong, char*, int);
	- static	struct	segment*	reloc(Map*, ulong, long*);
	+ static	int	mget(Map*, uvlong, void*, int);
	+ static	int	mput(Map*, uvlong, void*, int);
	+ static	struct	segment*	reloc(Map*, uvlong, vlong*);
	  
	  /*
	   * routines to get/put various types
	   */
	+ int
	+ geta(Map *map, uvlong addr, uvlong *x)
	+ {
	+ 	ulong l;
	+ 	uvlong vl;
	  
	+ 	if (mach->szaddr == 8){
	+ 		if (get8(map, addr, &vl) < 0)
	+ 			return -1;
	+ 		*x = vl;
	+ 		return 1;
	+ 	}
	+ 
	+ 	if (get4(map, addr, &l) < 0)
	+ 		return -1;
	+ 	*x = l;
	+ 
	+ 	return 1;
	+ }
	+ 
	  int
	- get8(Map *map, ulong addr, vlong *x)
	+ get8(Map *map, uvlong addr, uvlong *x)
	  {
	  	if (!map) {
	  		werrstr("get8: invalid map");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:24,40 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:43,59
	  	}
	  
	  	if (map->nsegs == 1 && map->seg[0].fd < 0) {
	- 		*x = (vlong)addr;
	+ 		*x = addr;
	  		return 1;
	  	}
	- 	if (mget(map, addr, (char *)x, 8) < 0)
	+ 	if (mget(map, addr, x, 8) < 0)
	  		return -1;
	  	*x = machdata->swav(*x);
	- 	return (1);
	+ 	return 1;
	  }
	  
	  int
	- get4(Map *map, ulong addr, long *x)
	+ get4(Map *map, uvlong addr, ulong *x)
	  {
	  	if (!map) {
	  		werrstr("get4: invalid map");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:45,58 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:64,77
	  		*x = addr;
	  		return 1;
	  	}
	- 	if (mget(map, addr, (char *)x, 4) < 0)
	+ 	if (mget(map, addr, x, 4) < 0)
	  		return -1;
	  	*x = machdata->swal(*x);
	- 	return (1);
	+ 	return 1;
	  }
	  
	  int
	- get2(Map *map, ulong addr, ushort *x)
	+ get2(Map *map, uvlong addr, ushort *x)
	  {
	  	if (!map) {
	  		werrstr("get2: invalid map");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:63,76 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:82,95
	  		*x = addr;
	  		return 1;
	  	}
	- 	if (mget(map, addr, (char *)x, 2) < 0)
	+ 	if (mget(map, addr, x, 2) < 0)
	  		return -1;
	  	*x = machdata->swab(*x);
	- 	return (1);
	+ 	return 1;
	  }
	  
	  int
	- get1(Map *map, ulong addr, uchar *x, int size)
	+ get1(Map *map, uvlong addr, uchar *x, int size)
	  {
	  	uchar *cp;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:86,108 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:105,136
	  		while (size-- > 0)
	  			*x++ = 0;
	  	} else
	- 		return mget(map, addr, (char*)x, size);
	+ 		return mget(map, addr, x, size);
	  	return 1;
	  }
	  
	  int
	- put8(Map *map, ulong addr, vlong v)
	+ puta(Map *map, uvlong addr, uvlong v)
	  {
	+ 	if (mach->szaddr == 8)
	+ 		return put8(map, addr, v);
	+ 
	+ 	return put4(map, addr, v);
	+ }
	+ 
	+ int
	+ put8(Map *map, uvlong addr, uvlong v)
	+ {
	  	if (!map) {
	  		werrstr("put8: invalid map");
	  		return -1;
	  	}
	  	v = machdata->swav(v);
	- 	return mput(map, addr, (char *)&v, 8);
	+ 	return mput(map, addr, &v, 8);
	  }
	  
	  int
	- put4(Map *map, ulong addr, long v)
	+ put4(Map *map, uvlong addr, ulong v)
	  {
	  	if (!map) {
	  		werrstr("put4: invalid map");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:109,119 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:137,147
	  		return -1;
	  	}
	  	v = machdata->swal(v);
	- 	return mput(map, addr, (char *)&v, 4);
	+ 	return mput(map, addr, &v, 4);
	  }
	  
	  int
	- put2(Map *map, ulong addr, ushort v)
	+ put2(Map *map, uvlong addr, ushort v)
	  {
	  	if (!map) {
	  		werrstr("put2: invalid map");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:120,147 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:148,175
	  		return -1;
	  	}
	  	v = machdata->swab(v);
	- 	return mput(map, addr, (char *)&v, 2);
	+ 	return mput(map, addr, &v, 2);
	  }
	  
	  int
	- put1(Map *map, ulong addr, uchar *v, int size)
	+ put1(Map *map, uvlong addr, uchar *v, int size)
	  {
	  	if (!map) {
	  		werrstr("put1: invalid map");
	  		return -1;
	  	}
	- 	return mput(map, addr, (char *)v, size);
	+ 	return mput(map, addr, v, size);
	  }
	  
	  static int
	- spread(struct segment *s, char *buf, int n, ulong off)
	+ spread(struct segment *s, void *buf, int n, uvlong off)
	  {
	- 	ulong base;
	+ 	uvlong base;
	  
	  	static struct {
	  		struct segment *s;
	  		char a[8192];
	- 		ulong off;
	+ 		uvlong off;
	  	} cache;
	  
	  	if(s->cache){
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:167,180 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:195,207
	  }
	  
	  static int
	- mget(Map *map, ulong addr, char *buf, int size)
	+ mget(Map *map, uvlong addr, void *buf, int size)
	  {
	- 	long off;
	- 	uvlong voff;
	+ 	uvlong off;
	  	int i, j, k;
	  	struct segment *s;
	  
	- 	s = reloc(map, addr, &off);
	+ 	s = reloc(map, addr, (vlong*)&off);
	  	if (!s)
	  		return -1;
	  	if (s->fd < 0) {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:181,191 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:208,217
	  		werrstr("unreadable map");
	  		return -1;
	  	}
	- 	voff = (ulong)off;
	  	for (i = j = 0; i < 2; i++) {	/* in case read crosses page */
	- 		k = spread(s, buf, size-j, voff+j);
	+ 		k = spread(s, buf, size-j, off+j);
	  		if (k < 0) {
	- 			werrstr("can't read address %lux: %r", addr);
	+ 			werrstr("can't read address %llux: %r", addr);
	  			return -1;
	  		}
	  		j += k;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:192,206 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:218,231
	  		if (j == size)
	  			return j;
	  	}
	- 	werrstr("partial read at address %lux", addr);
	+ 	werrstr("partial read at address %llux (size %d j %d)", addr, size, j);
	  	return -1;
	  }
	  
	  static int
	- mput(Map *map, ulong addr, char *buf, int size)
	+ mput(Map *map, uvlong addr, void *buf, int size)
	  {
	- 	long off;
	- 	vlong voff;
	+ 	vlong off;
	  	int i, j, k;
	  	struct segment *s;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:212,223 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:237,247
	  		return -1;
	  	}
	  
	- 	voff = (ulong)off;
	- 	seek(s->fd, voff, 0);
	+ 	seek(s->fd, off, 0);
	  	for (i = j = 0; i < 2; i++) {	/* in case read crosses page */
	  		k = write(s->fd, buf, size-j);
	  		if (k < 0) {
	- 			werrstr("can't write address %lux: %r", addr);
	+ 			werrstr("can't write address %llux: %r", addr);
	  			return -1;
	  		}
	  		j += k;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:224,230 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:248,254
	  		if (j == size)
	  			return j;
	  	}
	- 	werrstr("partial write at address %lux", addr);
	+ 	werrstr("partial write at address %llux", addr);
	  	return -1;
	  }
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:232,238 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:256,262
	   *	convert address to file offset; returns nonzero if ok
	   */
	  static struct segment*
	- reloc(Map *map, ulong addr, long *offp)
	+ reloc(Map *map, uvlong addr, vlong *offp)
	  {
	  	int i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/access.c:243,248 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/access.c:267,272
	  			return &map->seg[i];
	  		}
	  	}
	- 	werrstr("can't translate address %lux", addr);
	+ 	werrstr("can't translate address %llux", addr);
	  	return 0;
	  }
 [rsc] --rw-rw-r-- M 451989 glenda sys 16128 Nov  6 10:02 sys/src/libmach/executable.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:12,25 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:12,28
	  
	  typedef struct {
	  	union{
	- 		Exec;			/* in a.out.h */
	- 		Ehdr;			/* in elf.h */
	- 		struct mipsexec;
	- 		struct mips4kexec;
	- 		struct sparcexec;
	- 		struct nextexec;
	+ 		struct {
	+ 			Exec;		/* a.out.h */
	+ 			uvlong hdr[1];
	+ 		};
	+ 		Ehdr;			/* elf.h */
	+ 		struct mipsexec;	/* bootexec.h */
	+ 		struct mips4kexec;	/* bootexec.h */
	+ 		struct sparcexec;	/* bootexec.h */
	+ 		struct nextexec;	/* bootexec.h */
	  	} e;
	- 	long dummy;		/* padding to ensure extra long */
	+ 	long dummy;			/* padding to ensure extra long */
	  } ExecHdr;
	  
	  static	int	nextboot(int, Fhdr*, ExecHdr*);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:27,42 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:30,45
	  static	int	mipsboot(int, Fhdr*, ExecHdr*);
	  static	int	mips4kboot(int, Fhdr*, ExecHdr*);
	  static	int	common(int, Fhdr*, ExecHdr*);
	+ static	int	commonllp64(int, Fhdr*, ExecHdr*);
	  static	int	adotout(int, Fhdr*, ExecHdr*);
	  static	int	elfdotout(int, Fhdr*, ExecHdr*);
	  static	int	armdotout(int, Fhdr*, ExecHdr*);
	  static	int	alphadotout(int, Fhdr*, ExecHdr*);
	- static	void	setsym(Fhdr*, long, long, long, long);
	- static	void	setdata(Fhdr*, long, long, long, long);
	- static	void	settext(Fhdr*, long, long, long, long);
	- static	void	hswal(long*, int, long(*)(long));
	- static	long	noswal(long);
	- static	ulong	_round(ulong, ulong);
	+ static	void	setsym(Fhdr*, long, long, long, vlong);
	+ static	void	setdata(Fhdr*, uvlong, long, vlong, long);
	+ static	void	settext(Fhdr*, uvlong, uvlong, long, vlong);
	+ static	void	hswal(void*, int, ulong(*)(ulong));
	+ static	uvlong	_round(uvlong, ulong);
	  
	  /*
	   *	definition of per-executable file type structures
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:48,55 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:51,58
	  	char	*dlmname;		/* dynamically loadable module identifier */
	  	int	type;			/* Internal code */
	  	Mach	*mach;			/* Per-machine data */
	- 	ulong	hsize;			/* header size */
	- 	long	(*swal)(long);		/* beswal or leswal */
	+ 	long	hsize;			/* header size */
	+ 	ulong	(*swal)(ulong);		/* beswal or leswal */
	  	int	(*hparse)(int, Fhdr*, ExecHdr*);
	  } ExecTable;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:160,168 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:163,171
	  		"amd64 plan 9 dlm",
	  		FAMD64,
	  		&mamd64,
	- 		sizeof(Exec),
	- 		beswal,
	- 		common },
	+ 		sizeof(Exec)+8,
	+ 		nil,
	+ 		commonllp64 },
	  	{ Q_MAGIC,			/* PowerPC q.out & boot image */
	  		"power plan 9 executable",
	  		"power plan 9 dlm",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:177,183 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:180,186
	  		FNONE,
	  		&mi386,
	  		sizeof(Ehdr),
	- 		noswal,
	+ 		nil,
	  		elfdotout },
	  	{ E_MAGIC,			/* Arm 5.out */
	  		"arm plan 9 executable",
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:242,248 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:245,252
	  {
	  	ExecTable *mp;
	  	ExecHdr d;
	- 	int nb, magic, ret;
	+ 	int nb, ret;
	+ 	ulong magic;
	  
	  	fp->type = FNONE;
	  	nb = read(fd, (char *)&d.e, sizeof(d.e));
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:258,264 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:262,267
	  			if(mp->magic == V_MAGIC)
	  				mp = couldbe4k(mp);
	  
	- 			hswal((long *) &d, sizeof(d.e)/sizeof(long), mp->swal);
	  			fp->type = mp->type;
	  			if ((magic & DYN_MAGIC) && mp->dlmname != nil)
	  				fp->name = mp->dlmname;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:266,272 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:269,277
	  				fp->name = mp->name;
	  			fp->hdrsz = mp->hsize;		/* zero on bootables */
	  			mach = mp->mach;
	- 			ret  = mp->hparse(fd, fp, &d);
	+ 			if(mp->swal != nil)
	+ 				hswal(&d, sizeof(d.e)/sizeof(ulong), mp->swal);
	+ 			ret = mp->hparse(fd, fp, &d);
	  			seek(fd, mp->hsize, 0);		/* seek to end of header */
	  			break;
	  		}
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:275,300 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:280,299
	  		werrstr("unknown header type");
	  	return ret;
	  }
	+ 
	  /*
	   * Convert header to canonical form
	   */
	  static void
	- hswal(long *lp, int n, long (*swap) (long))
	+ hswal(void *v, int n, ulong (*swap)(ulong))
	  {
	- 	while (n--) {
	- 		*lp = (*swap) (*lp);
	- 		lp++;
	- 	}
	+ 	ulong *ulp;
	+ 
	+ 	for(ulp = v; n--; ulp++)
	+ 		*ulp = (*swap)(*ulp);
	  }
	+ 
	  /*
	-  * noop
	-  */
	- static long
	- noswal(long x)
	- {
	- 	return x;
	- }
	- /*
	   *	Crack a normal a.out-type header
	   */
	  static int
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:312,317 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:311,365
	  	return 1;
	  }
	  
	+ static void
	+ commonboot(Fhdr *fp)
	+ {
	+ 	uvlong kbase;
	+ 
	+ 	kbase = mach->kbase;
	+ 	if ((fp->entry & kbase) != kbase)
	+ 		return;
	+ 
	+ 	switch(fp->type) {				/* boot image */
	+ 	case F68020:
	+ 		fp->type = F68020B;
	+ 		fp->name = "68020 plan 9 boot image";
	+ 		break;
	+ 	case FI386:
	+ 		fp->type = FI386B;
	+ 		fp->txtaddr = (u32int)fp->entry;
	+ 		fp->name = "386 plan 9 boot image";
	+ 		fp->dataddr = _round(fp->txtaddr+fp->txtsz, mach->pgsize);
	+ 		break;
	+ 	case FARM:
	+ 		fp->txtaddr = kbase+0x8010;
	+ 		fp->name = "ARM plan 9 boot image";
	+ 		fp->dataddr = fp->txtaddr+fp->txtsz;
	+ 		return;
	+ 	case FALPHA:
	+ 		fp->type = FALPHAB;
	+ 		fp->txtaddr = (u32int)fp->entry;
	+ 		fp->name = "alpha plan 9 boot image?";
	+ 		fp->dataddr = fp->txtaddr+fp->txtsz;
	+ 		break;
	+ 	case FPOWER:
	+ 		fp->type = FPOWERB;
	+ 		fp->txtaddr = (u32int)fp->entry;
	+ 		fp->name = "power plan 9 boot image";
	+ 		fp->dataddr = fp->txtaddr+fp->txtsz;
	+ 		break;
	+ 	case FAMD64:
	+ 		fp->type = FAMD64B;
	+ 		fp->txtaddr = fp->entry;
	+ 		fp->name = "amd64 plan 9 boot image";
	+ 		fp->dataddr = _round(fp->txtaddr+fp->txtsz, mach->pgsize);
	+ 		break;
	+ 	default:
	+ 		return;
	+ 	}
	+ 	fp->hdrsz = 0;					/* header stripped */
	+ }
	+ 
	  /*
	   *	68020 2.out and 68020 bootable images
	   *	386I 8.out and 386I bootable images
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:321,328 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:369,374
	  static int
	  common(int fd, Fhdr *fp, ExecHdr *hp)
	  {
	- 	long kbase;
	- 
	  	adotout(fd, fp, hp);
	  	if(hp->e.magic & DYN_MAGIC) {
	  		fp->txtaddr = 0;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:329,383 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:375,416
	  		fp->dataddr = fp->txtsz;
	  		return 1;
	  	}
	- 	kbase = mach->kbase;
	- 	if ((fp->entry & kbase) == kbase) {		/* Boot image */
	- 		switch(fp->type) {
	- 		case F68020:
	- 			fp->type = F68020B;
	- 			fp->name = "68020 plan 9 boot image";
	- 			fp->hdrsz = 0;		/* header stripped */
	- 			break;
	- 		case FI386:
	- 			fp->type = FI386B;
	- 			fp->txtaddr = sizeof(Exec);
	- 			fp->name = "386 plan 9 boot image";
	- 			fp->hdrsz = 0;		/* header stripped */
	- 			fp->dataddr = _round(fp->txtaddr+fp->txtsz, mach->pgsize);
	- 			break;
	- 		case FARM:
	- 			fp->txtaddr = kbase+0x8010;
	- 			fp->name = "ARM plan 9 boot image";
	- 			fp->hdrsz = 0;		/* header stripped */
	- 			fp->dataddr = fp->txtaddr+fp->txtsz;
	- 			return 1;
	- 		case FALPHA:
	- 			fp->type = FALPHAB;
	- 			fp->txtaddr = fp->entry;
	- 			fp->name = "alpha plan 9 boot image?";
	- 			fp->hdrsz = 0;		/* header stripped */
	- 			fp->dataddr = fp->txtaddr+fp->txtsz;
	- 			break;
	- 		case FPOWER:
	- 			fp->type = FPOWERB;
	- 			fp->txtaddr = fp->entry;
	- 			fp->name = "power plan 9 boot image";
	- 			fp->hdrsz = 0;		/* header stripped */
	- 			fp->dataddr = fp->txtaddr+fp->txtsz;
	- 			break;
	- 		case FAMD64:
	- 			fp->type = FAMD64B;
	- 			fp->txtaddr = sizeof(Exec);
	- 			fp->name = "amd64 plan 9 boot image";
	- 			fp->hdrsz = 0;		/* header stripped */
	- 			fp->dataddr = _round(fp->txtaddr+fp->txtsz, mach->pgsize);
	- 			break;
	- 		default:
	- 			break;
	- 		}
	- 		fp->txtaddr |= kbase;
	- 		fp->entry |= kbase;
	- 		fp->dataddr |= kbase;
	+ 	commonboot(fp);
	+ 	return 1;
	+ }
	+ 
	+ static int
	+ commonllp64(int, Fhdr *fp, ExecHdr *hp)
	+ {
	+ 	long pgsize;
	+ 	uvlong entry;
	+ 
	+ 	hswal(&hp->e, sizeof(Exec)/sizeof(long), beswal);
	+ 	if(!(hp->e.magic & HDR_MAGIC))
	+ 		return 0;
	+ 
	+ 	/*
	+ 	 * There can be more magic here if the
	+ 	 * header ever needs more expansion.
	+ 	 * For now just catch use of any of the
	+ 	 * unused bits.
	+ 	 */
	+ 	if((hp->e.magic & ~DYN_MAGIC)>>16)
	+ 		return 0;
	+ 	entry = beswav(hp->e.hdr[0]);
	+ 
	+ 	pgsize = mach->pgsize;
	+ 	settext(fp, entry, pgsize+fp->hdrsz, hp->e.text, fp->hdrsz);
	+ 	setdata(fp, _round(pgsize+fp->txtsz+fp->hdrsz, pgsize),
	+ 		hp->e.data, fp->txtsz+fp->hdrsz, hp->e.bss);
	+ 	setsym(fp, hp->e.syms, hp->e.spsz, hp->e.pcsz, fp->datoff+fp->datsz);
	+ 
	+ 	if(hp->e.magic & DYN_MAGIC) {
	+ 		fp->txtaddr = 0;
	+ 		fp->dataddr = fp->txtsz;
	+ 		return 1;
	  	}
	+ 	commonboot(fp);
	  	return 1;
	  }
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:472,478 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:505,510
	  	return 1;
	  }
	  
	- 
	  /*
	   * Elf32 binaries.
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:480,486 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:512,518
	  elfdotout(int fd, Fhdr *fp, ExecHdr *hp)
	  {
	  
	- 	long (*swal)(long);
	+ 	ulong (*swal)(ulong);
	  	ushort (*swab)(ushort);
	  	Ehdr *ep;
	  	Phdr *ph;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:560,574 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:592,606
	  		free(ph);
	  		return 0;
	  	}
	- 	hswal((long*)ph, phsz/sizeof(long), swal);
	+ 	hswal(ph, phsz/sizeof(ulong), swal);
	  
	  	/* find text, data and symbols and install them */
	  	it = id = is = -1;
	  	for(i = 0; i < ep->phnum; i++) {
	- 		if(ph[i].type == LOAD 
	+ 		if(ph[i].type == LOAD
	  		&& (ph[i].flags & (R|X)) == (R|X) && it == -1)
	  			it = i;
	- 		else if(ph[i].type == LOAD 
	+ 		else if(ph[i].type == LOAD
	  		&& (ph[i].flags & (R|W)) == (R|W) && id == -1)
	  			id = i;
	  		else if(ph[i].type == NOPTYPE && is == -1)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:575,587 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:607,619
	  			is = i;
	  	}
	  	if(it == -1 || id == -1) {
	- 		/* 
	+ 		/*
	  		 * The SPARC64 boot image is something of an ELF hack.
	  		 * Text+Data+BSS are represented by ph[0].  Symbols
	  		 * are represented by ph[1]:
	  		 *
	  		 *		filesz, memsz, vaddr, paddr, off
	- 		 * ph[0] : txtsz+datsz, txtsz+datsz+bsssz, txtaddr-KZERO, datasize,  txtoff
	+ 		 * ph[0] : txtsz+datsz, txtsz+datsz+bsssz, txtaddr-KZERO, datasize, txtoff
	  		 * ph[1] : symsz, lcsz, 0, 0, symoff
	  		 */
	  		if(ep->machine == SPARC64 && ep->phnum == 2) {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:617,623 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:649,655
	  static int
	  alphadotout(int fd, Fhdr *fp, ExecHdr *hp)
	  {
	- 	long kbase;
	+ 	uvlong kbase;
	  
	  	USED(fd);
	  	settext(fp, hp->e.entry, sizeof(Exec), hp->e.text, sizeof(Exec));
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:645,651 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:677,683
	  static int
	  armdotout(int fd, Fhdr *fp, ExecHdr *hp)
	  {
	- 	long kbase;
	+ 	uvlong kbase;
	  
	  	USED(fd);
	  	settext(fp, hp->e.entry, sizeof(Exec), hp->e.text, sizeof(Exec));
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:663,669 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:695,701
	  }
	  
	  static void
	- settext(Fhdr *fp, long e, long a, long s, long off)
	+ settext(Fhdr *fp, uvlong e, uvlong a, long s, vlong off)
	  {
	  	fp->txtaddr = a;
	  	fp->entry = e;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:670,677 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:702,710
	  	fp->txtsz = s;
	  	fp->txtoff = off;
	  }
	+ 
	  static void
	- setdata(Fhdr *fp, long a, long s, long off, long bss)
	+ setdata(Fhdr *fp, uvlong a, long s, vlong off, long bss)
	  {
	  	fp->dataddr = a;
	  	fp->datsz = s;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/executable.c:678,699 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/executable.c:711,733
	  	fp->datoff = off;
	  	fp->bsssz = bss;
	  }
	+ 
	  static void
	- setsym(Fhdr *fp, long sy, long sppc, long lnpc, long symoff)
	+ setsym(Fhdr *fp, long symsz, long sppcsz, long lnpcsz, vlong symoff)
	  {
	- 	fp->symsz = sy;
	+ 	fp->symsz = symsz;
	  	fp->symoff = symoff;
	- 	fp->sppcsz = sppc;
	+ 	fp->sppcsz = sppcsz;
	  	fp->sppcoff = fp->symoff+fp->symsz;
	- 	fp->lnpcsz = lnpc;
	+ 	fp->lnpcsz = lnpcsz;
	  	fp->lnpcoff = fp->sppcoff+fp->sppcsz;
	  }
	  
	  
	- static ulong
	- _round(ulong a, ulong b)
	+ static uvlong
	+ _round(uvlong a, ulong b)
	  {
	- 	ulong w;
	+ 	uvlong w;
	  
	  	w = (a/b)*b;
	  	if (a!=w)
 [rsc] --rw-rw-r-- M 451989 glenda sys 3370 Nov  6 10:02 sys/src/libmach/k.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/k.c:107,114 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/k.c:107,115
	  	"setSB",	/* static base register name */
	  	0,		/* value */
	  	0x1000,		/* page size */
	- 	0xE0000000,	/* kernel base */
	+ 	0xE0000000ULL,	/* kernel base */
	  	0,		/* kernel text mask */
	+ 	0x7FFFFFFFULL,	/* user stack top */
	  	4,		/* quantization of pc */
	  	4,		/* szaddr */
	  	4,		/* szreg */
 [rsc] --rw-rw-r-- M 451989 glenda sys 21161 Nov  6 10:03 sys/src/libmach/kdb.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:8,17 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:8,17
	   */
	  
	  static	char	*sparcexcep(Map*, Rgetter);
	- static	int	sparcfoll(Map*, ulong, Rgetter, ulong*);
	- static	int	sparcinst(Map*, ulong, char, char*, int);
	- static	int	sparcdas(Map*, ulong, char*, int);
	- static	int	sparcinstlen(Map*, ulong);
	+ static	int	sparcfoll(Map*, uvlong, Rgetter, uvlong*);
	+ static	int	sparcinst(Map*, uvlong, char, char*, int);
	+ static	int	sparcdas(Map*, uvlong, char*, int);
	+ static	int	sparcinstlen(Map*, uvlong);
	  
	  Machdata sparcmach =
	  {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:116,122 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:116,122
	  	int	target;		/* SETHI+ADD dest reg */
	  	long	w0;
	  	long	w1;
	- 	ulong	addr;		/* pc of instruction */
	+ 	uvlong	addr;		/* pc of instruction */
	  	char	*curr;		/* current fill level in output buffer */
	  	char	*end;		/* end of buffer */
	  	int 	size;		/* number of longs in instr */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:126,132 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:126,132
	  static	Map	*mymap;		/* disassembler context */
	  static	int	dascase;
	  
	- static int	mkinstr(ulong, Instr*);
	+ static int	mkinstr(uvlong, Instr*);
	  static void	bra1(Instr*, char*, char*[]);
	  static void	bra(Instr*, char*);
	  static void	fbra(Instr*, char*);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:288,296 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:288,296
	  }
	  
	  static int
	- decode(ulong pc, Instr *i)
	+ decode(uvlong pc, Instr *i)
	  {
	- 	long w;
	+ 	ulong w;
	  
	  	if (get4(mymap, pc, &w) < 0) {
	  		werrstr("can't read instruction: %r");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:323,329 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:323,329
	  }
	  
	  static int
	- mkinstr(ulong pc, Instr *i)
	+ mkinstr(uvlong pc, Instr *i)
	  {
	  	Instr xi;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:354,360 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:354,360
	  }
	  
	  static int
	- printins(Map *map, ulong pc, char *buf, int n)
	+ printins(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr instr;
	  	void (*f)(Instr*, char*);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:424,430 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:424,430
	  }
	  
	  static int
	- sparcinst(Map *map, ulong pc, char modifier, char *buf, int n)
	+ sparcinst(Map *map, uvlong pc, char modifier, char *buf, int n)
	  {
	  	static int fmtinstalled = 0;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:442,448 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:442,448
	  }
	  
	  static int
	- sparcdas(Map *map, ulong pc, char *buf, int n)
	+ sparcdas(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr instr;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:463,469 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:463,469
	  }
	  
	  static int
	- sparcinstlen(Map *map, ulong pc)
	+ sparcinstlen(Map *map, uvlong pc)
	  {
	  	Instr i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:500,506 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:500,506
	  address(Instr *i)
	  {
	  	Symbol s, s2;
	- 	long off, off1;
	+ 	uvlong off, off1;
	  
	  	if (i->rs1 == 1 && plocal(i) >= 0)
	  		return;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:510,516 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:510,516
	  			&& (s.class == CDATA || s.class == CTEXT)) {
	  		if(off==s.value && s.name[0]=='$'){
	  			off1 = 0;
	- 			get4(mymap, s.value, &off1);
	+ 			geta(mymap, s.value, &off1);
	  			if(off1 && findsym(off1, CANY, &s2) && s2.value == off1){
	  				bprint(i, "$%s(SB)", s2.name);
	  				return;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:878,885 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:878,885
	  		bprint(i, ", R%d", i->rd);
	  }
	  
	- static
	- void storef(Instr *i, char *m)		/* page 70 */
	+ static void
	+ storef(Instr *i, char *m)		/* page 70 */
	  {
	  	if(!dascase){
	  		m = "FMOVD";
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:901,908 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:901,908
	  		address(i);
	  }
	  
	- static
	- void loadc(Instr *i, char *m)			/* page 72 */
	+ static void
	+ loadc(Instr *i, char *m)			/* page 72 */
	  {
	  	if(i->i == 0)
	  		bprint(i, "%s\t(R%d+R%d), C%d", m, i->rs1, i->rs2, i->rd);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:913,920 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:913,920
	  	}
	  }
	  
	- static
	- void loadcsr(Instr *i, char *m)			/* page 72 */
	+ static void
	+ loadcsr(Instr *i, char *m)			/* page 72 */
	  {
	  	if(i->i == 0)
	  		bprint(i, "%s\t(R%d+R%d), CSR", m, i->rs1, i->rs2);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/kdb.c:1007,1013 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/kdb.c:1007,1013
	  }
	  
	  static int
	- sparcfoll(Map *map, ulong pc, Rgetter rget, ulong *foll)
	+ sparcfoll(Map *map, uvlong pc, Rgetter rget, uvlong *foll)
	  {
	  	ulong w, r1, r2;
	  	char buf[8];
 [rsc] --rw-rw-r-- M 451989 glenda sys 8799 Nov  6 10:02 sys/src/libmach/machdata.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/machdata.c:17,27 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/machdata.c:17,26
	  Machdata *machdata;		/* machine-dependent functions */
	  
	  int
	- localaddr(Map *map, char *fn, char *var, long *r, Rgetter rget)
	+ localaddr(Map *map, char *fn, char *var, uvlong *r, Rgetter rget)
	  {
	  	Symbol s;
	- 	ulong fp;
	- 	ulong pc, sp, link;
	+ 	uvlong fp, pc, sp, link;
	  
	  	if (!lookup(fn, 0, &s)) {
	  		werrstr("function not found");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/machdata.c:64,73 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/machdata.c:63,72
	  }
	  
	  /*
	-  * Print value v as name[+offset] and then the string s.
	+  * Print value v as s.name[+offset] if possible, or just v.
	   */
	  int
	- symoff(char *buf, int n, long v, int space)
	+ symoff(char *buf, int n, uvlong v, int space)
	  {
	  	Symbol s;
	  	int r;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/machdata.c:82,95 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/machdata.c:81,95
	  			delta = -delta;
	  	}
	  	if (v == 0 || r == 0)
	- 		return snprint(buf, n, "%lux", v);
	+ 		return snprint(buf, n, "%llux", v);
	  	if (s.type != 't' && s.type != 'T' && delta >= 4096)
	- 		return snprint(buf, n, "%lux", v);
	+ 		return snprint(buf, n, "%llux", v);
	  	else if (delta)
	  		return snprint(buf, n, "%s+%lux", s.name, delta);
	  	else
	  		return snprint(buf, n, "%s", s.name);
	  }
	+ 
	  /*
	   *	Format floating point registers
	   *
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/machdata.c:104,110 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/machdata.c:104,110
	  fpformat(Map *map, Reglist *rp, char *buf, int n, int modif)
	  {
	  	char reg[12];
	- 	long r;
	+ 	ulong r;
	  
	  	switch(rp->rformat)
	  	{
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/machdata.c:317,323 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/machdata.c:317,322
	  	return beieeedftos(buf, n, (void*)ieee);
	  }
	  
	- 
	  int
	  leieee80ftos(char *buf, int n, void *s)
	  {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/machdata.c:332,350 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/machdata.c:331,348
	  }
	  
	  int
	- cisctrace(Map *map, ulong pc, ulong sp, ulong link, Tracer trace)
	+ cisctrace(Map *map, uvlong pc, uvlong sp, uvlong link, Tracer trace)
	  {
	  	Symbol s;
	- 	int found;
	- 	ulong opc;
	- 	long moved, j;
	+ 	int found, i;
	+ 	uvlong opc, moved;
	  
	  	USED(link);
	- 	j = 0;
	+ 	i = 0;
	  	opc = 0;
	  	while(pc && opc != pc) {
	  		moved = pc2sp(pc);
	- 		if (moved == -1)
	+ 		if (moved == ~0)
	  			break;
	  		found = findsym(pc, CTEXT, &s);
	  		if (!found)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/machdata.c:354,375 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/machdata.c:352,373
	  
	  		sp += moved;
	  		opc = pc;
	- 		if (get4(map, sp, (long *)&pc) < 0)
	+ 		if (geta(map, sp, &pc) < 0)
	  			break;
	  		(*trace)(map, pc, sp, &s);
	  		sp += mach->szaddr;	/*assumes address size = stack width*/
	- 		if(++j > 40)
	+ 		if(++i > 40)
	  			break;
	  	}
	- 	return j;
	+ 	return i;
	  }
	  
	  int
	- risctrace(Map *map, ulong pc, ulong sp, ulong link, Tracer trace)
	+ risctrace(Map *map, uvlong pc, uvlong sp, uvlong link, Tracer trace)
	  {
	  	int i;
	  	Symbol s, f;
	- 	ulong oldpc;
	+ 	uvlong oldpc;
	  
	  	i = 0;
	  	while(findsym(pc, CTEXT, &s)) {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/machdata.c:385,391 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/machdata.c:383,389
	  		if(s.type == 'L' || s.type == 'l' || pc <= s.value+mach->pcquant)
	  			pc = link;
	  		else
	- 			if (get4(map, sp, (long *) &pc) < 0)
	+ 			if (geta(map, sp, &pc) < 0)
	  				break;
	  
	  		if(pc == 0 || (pc == oldpc && f.value == 0))
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/machdata.c:400,421 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/machdata.c:398,419
	  	return i;
	  }
	  
	- ulong
	- ciscframe(Map *map, ulong addr, ulong pc, ulong sp, ulong link)
	+ uvlong
	+ ciscframe(Map *map, uvlong addr, uvlong pc, uvlong sp, uvlong link)
	  {
	  	Symbol s;
	- 	int moved;
	+ 	uvlong moved;
	  
	  	USED(link);
	  	for(;;) {
	  		moved = pc2sp(pc);
	- 		if (moved  == -1)
	+ 		if (moved  == ~0)
	  			break;
	  		sp += moved;
	  		findsym(pc, CTEXT, &s);
	  		if (addr == s.value)
	  			return sp;
	- 		if (get4(map, sp, (long *) &pc) < 0)
	+ 		if (geta(map, sp, &pc) < 0)
	  			break;
	  		sp += mach->szaddr;	/*assumes sizeof(addr) = stack width*/
	  	}
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/machdata.c:422,429 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/machdata.c:420,427
	  	return 0;
	  }
	  
	- ulong
	- riscframe(Map *map, ulong addr, ulong pc, ulong sp, ulong link)
	+ uvlong
	+ riscframe(Map *map, uvlong addr, uvlong pc, uvlong sp, uvlong link)
	  {
	  	Symbol s, f;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/machdata.c:444,450 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/machdata.c:442,448
	  		if (s.type == 'L' || s.type == 'l' || pc-s.value <= mach->szaddr*2)
	  			pc = link;
	  		else
	- 		if (get4(map, sp-f.value, (long *)&pc) < 0)
	+ 		if (geta(map, sp-f.value, &pc) < 0)
	  			break;
	  	}
	  	return 0;
 [rsc] --rw-rw-r-- M 451989 glenda sys 3056 Nov  6 10:02 sys/src/libmach/map.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/map.c:26,32 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/map.c:26,32
	  }
	  
	  int
	- setmap(Map *map, int fd, ulong b, ulong e, ulong f, char *name)
	+ setmap(Map *map, int fd, uvlong b, uvlong e, vlong f, char *name)
	  {
	  	int i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/map.c:46,52 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/map.c:46,52
	  	return 1;
	  }
	  
	- static ulong
	+ static uvlong
	  stacktop(int pid)
	  {
	  	char buf[64];
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/map.c:54,60 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/map.c:54,60
	  	int n;
	  	char *cp;
	  
	- 	sprint(buf, "/proc/%d/segment", pid);
	+ 	snprint(buf, sizeof(buf), "/proc/%d/segment", pid);
	  	fd = open(buf, 0);
	  	if (fd < 0)
	  		return 0;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/map.c:74,80 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/map.c:74,80
	  		cp++;
	  	if (!*cp)
	  		return 0;
	- 	return strtoul(cp, 0, 16);
	+ 	return strtoull(cp, 0, 16);
	  }
	  
	  Map*
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/map.c:83,89 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/map.c:83,89
	  	char buf[64], *regs;
	  	int fd;
	  	Map *map;
	- 	ulong n;
	+ 	uvlong n;
	  	int mode;
	  
	  	map = newmap(0, 4);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/map.c:116,128 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/map.c:116,128
	  		setmap(map, fd, mach->regsize, mach->regsize+mach->fpregsize, 0, "fpregs");
	  	}
	  	setmap(map, corefd, fp->txtaddr, fp->txtaddr+fp->txtsz, fp->txtaddr, "text");
	- 	if(kflag || (ulong) fp->dataddr >= 0x7fffffff) {
	- 		setmap(map, corefd, fp->dataddr, 0xffffffff, fp->dataddr, "data");
	+ 	if(kflag || fp->dataddr >= mach->utop) {
	+ 		setmap(map, corefd, fp->dataddr, ~0, fp->dataddr, "data");
	  		return map;
	  	}
	  	n = stacktop(pid);
	  	if (n == 0) {
	- 		setmap(map, corefd, fp->dataddr, 0x7fffffff, fp->dataddr, "data");
	+ 		setmap(map, corefd, fp->dataddr, mach->utop, fp->dataddr, "data");
	  		return map;
	  	}
	  	setmap(map, corefd, fp->dataddr, n, fp->dataddr, "data");
 [rsc] --rw-rw-r-- M 451989 glenda sys 5929 Nov  6 10:02 sys/src/libmach/obj.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/obj.c:127,133 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/obj.c:127,133
	  }
	  
	  int
	- readar(Biobuf *bp, int objtype, int end, int doautos)
	+ readar(Biobuf *bp, int objtype, vlong end, int doautos)
	  {
	  	Prog p;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/obj.c:253,259 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/obj.c:253,259
	   * update the offset information for a 'a' or 'p' symbol in an intermediate file
	   */
	  void
	- _offset(int id, long off)
	+ _offset(int id, vlong off)
	  {
	  	Sym *s;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/obj.c:299,305 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/obj.c:299,305
	  	for(i=0; i<sizeof(a.name) && i<SARNAME && a.name[i] != ' '; i++)
	  		buf[i] = a.name[i];
	  	buf[i] = 0;
	- 	arsize = atol(a.size);
	+ 	arsize = strtol(a.size, 0, 0);
	  	if (arsize&1)
	  		arsize++;
	  	return arsize + SAR_HDR;
 [rsc] --rw-rw-r-- M 451989 glenda sys 3630 Nov  6 10:02 sys/src/libmach/q.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/q.c:112,119 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/q.c:112,120
	  	"setSB",	/* static base register name */
	  	0,		/* value */
	  	0x1000,		/* page size */
	- 	0x80000000,	/* kernel base */
	+ 	0x80000000ULL,	/* kernel base */
	  	0,		/* kernel text mask */
	+ 	0x7FFFFFFFULL,	/* user stack top */
	  	4,		/* quantization of pc */
	  	4,		/* szaddr */
	  	4,		/* szreg */
 [rsc] --rw-rw-r-- M 451989 glenda sys 27506 Nov  6 10:03 sys/src/libmach/qdb.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:9,18 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:9,18
	   */
	  
	  static	char	*powerexcep(Map*, Rgetter);
	- static	int	powerfoll(Map*, ulong, Rgetter, ulong*);
	- static	int	powerinst(Map*, ulong, char, char*, int);
	- static	int	powerinstlen(Map*, ulong);
	- static	int	powerdas(Map*, ulong, char*, int);
	+ static	int	powerfoll(Map*, uvlong, Rgetter, uvlong*);
	+ static	int	powerinst(Map*, uvlong, char, char*, int);
	+ static	int	powerinstlen(Map*, uvlong);
	+ static	int	powerdas(Map*, uvlong, char*, int);
	  
	  /*
	   *	Machine description
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:146,152 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:146,152
	  	long	immediate;
	  	long w0;
	  	long w1;
	- 	ulong	addr;		/* pc of instruction */
	+ 	uvlong	addr;		/* pc of instruction */
	  	short	target;
	  	char	*curr;		/* current fill level in output buffer */
	  	char	*end;		/* end of buffer */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:168,176 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:168,176
	  }
	  
	  static int
	- decode(ulong pc, Instr *i)
	+ decode(uvlong pc, Instr *i)
	  {
	- 	long w;
	+ 	ulong w;
	  
	  	if (get4(mymap, pc, &w) < 0) {
	  		werrstr("can't read instruction: %r");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:224,230 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:224,230
	  }
	  
	  static int
	- mkinstr(ulong pc, Instr *i)
	+ mkinstr(uvlong pc, Instr *i)
	  {
	  	Instr x;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:271,280 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:271,280
	  }
	  
	  static int
	- pglobal(Instr *i, long off, int anyoff, char *reg)
	+ pglobal(Instr *i, uvlong off, int anyoff, char *reg)
	  {
	  	Symbol s, s2;
	- 	long off1;
	+ 	uvlong off1;
	  
	  	if(findsym(off, CANY, &s) &&
	  	   s.value-off < 4096 &&
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:281,287 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:281,287
	  	   (s.class == CDATA || s.class == CTEXT)) {
	  		if(off==s.value && s.name[0]=='$'){
	  			off1 = 0;
	- 			get4(mymap, s.value, &off1);
	+ 			geta(mymap, s.value, &off1);
	  			if(off1 && findsym(off1, CANY, &s2) && s2.value == off1){
	  				bprint(i, "$%s%s", s2.name, reg);
	  				return 1;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:696,703 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:696,703
	  
	  	{31,	28,	ALL,	"AND%C",	and,	il3},
	  	{31,	60,	ALL,	"ANDN%C",	and,	il3},
	- 	{28,	0,	0,	"ANDCC",		andi,	il2u},
	- 	{29,	0,	0,	"ANDCC",		shifted, 0},
	+ 	{28,	0,	0,	"ANDCC",	andi,	il2u},
	+ 	{29,	0,	0,	"ANDCC",	shifted, 0},
	  
	  	{18,	0,	0,	"B%L",		gencc,	"%j"},
	  	{16,	0,	0,	"BC%L",		branch,	"%d,%a,%J"},
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:798,809 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:798,809
	  	{41,	0,	0,	"MOVHZU",	load,	ldop},
	  	{31,	311,	ALL,	"MOVHZU",	ldx,	0},
	  	{31,	279,	ALL,	"MOVHZ",	ldx,	0},
	- 	{46,	0,	0,	"MOVMW",		load,	ldop},
	+ 	{46,	0,	0,	"MOVMW",	load,	ldop},
	  	{31,	277,	ALL,	"LSCBX%C",	ldx,	0},	/* POWER */
	  	{31,	597,	ALL,	"LSW",		gen,	"(R%a),$%n,R%d"},
	  	{31,	533,	ALL,	"LSW",		ldx,	0},
	  	{31,	20,	ALL,	"LWAR",		ldx,	0},
	- 	{31,	534,	ALL,	"MOVWBR",		ldx,	0},
	+ 	{31,	534,	ALL,	"MOVWBR",	ldx,	0},
	  	{32,	0,	0,	"MOVW",		load,	ldop},
	  	{33,	0,	0,	"MOVWU",	load,	ldop},
	  	{31,	55,	ALL,	"MOVWU",	ldx,	0},
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:814,821 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:814,821
	  
	  	{19,	0,	ALL,	"MOVFL",	gen,	"%S,%D"},
	  	{63,	64,	ALL,	"MOVCRFS",	gen,	"%S,%D"},
	- 	{31,	512,	ALL,	"MOVW",	gen,	"XER,%D"},
	- 	{31,	19,	ALL,	"MOVW",	gen,	"CR,R%d"},
	+ 	{31,	512,	ALL,	"MOVW",		gen,	"XER,%D"},
	+ 	{31,	19,	ALL,	"MOVW",		gen,	"CR,R%d"},
	  
	  	{63,	583,	ALL,	"MOVW%C",	gen,	"FPSCR, F%d"},	/* mffs */
	  	{31,	83,	ALL,	"MOVW",		gen,	"MSR,R%d"},
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:822,828 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:822,828
	  	{31,	339,	ALL,	"MOVW",		gen,	"%P,R%d"},
	  	{31,	595,	ALL,	"MOVW",		gen,	"SEG(%a),R%d"},
	  	{31,	659,	ALL,	"MOVW",		gen,	"SEG(R%b),R%d"},
	- 	{31,	323,	ALL,	"MOVW",		gen, "DCR(%Q),R%d"},
	+ 	{31,	323,	ALL,	"MOVW",		gen,	"DCR(%Q),R%d"},
	  	{31,	451,	ALL,	"MOVW",		gen,	"R%s,DCR(%Q)"},
	  	{31,	144,	ALL,	"MOVFL",	gen,	"R%s,%m,CR"},
	  	{63,	70,	ALL,	"MTFSB0%C",	gencc,	"%D"},
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:846,852 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:846,852
	  	{31,	476,	ALL,	"NAND%C",	gencc,	il3},
	  	{31,	104,	OEM,	"NEG%V%C",	neg,	ir2},
	  	{31,	124,	ALL,	"NOR%C",	gencc,	il3},
	- 	{31,	444,	ALL,	"OR%C",	or,	il3},
	+ 	{31,	444,	ALL,	"OR%C",		or,	il3},
	  	{31,	412,	ALL,	"ORN%C",	or,	il3},
	  	{24,	0,	0,	"OR",		and,	"%I,R%d,R%a"},
	  	{25,	0,	0,	"OR",		shifted, 0},
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:905,916 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:905,916
	  	{45,	0,	0,	"MOVHU",	store,	stop},
	  	{31,	439,	ALL,	"MOVHU",	stx,	0},
	  	{31,	407,	ALL,	"MOVH",		stx,	0},
	- 	{47,	0,	0,	"MOVMW",		store,	stop},
	+ 	{47,	0,	0,	"MOVMW",	store,	stop},
	  	{31,	725,	ALL,	"STSW",		gen,	"R%d,$%n,(R%a)"},
	  	{31,	661,	ALL,	"STSW",		stx,	0},
	  	{36,	0,	0,	"MOVW",		store,	stop},
	  	{31,	662,	ALL,	"MOVWBR",	stx,	0},
	- 	{31,	150,	ALL,	"STWCCC",		stx,	0},
	+ 	{31,	150,	ALL,	"STWCCC",	stx,	0},
	  	{37,	0,	0,	"MOVWU",	store,	stop},
	  	{31,	183,	ALL,	"MOVWU",	stx,	0},
	  	{31,	151,	ALL,	"MOVW",		stx,	0},
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:1153,1159 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:1153,1159
	  }
	  
	  static int
	- printins(Map *map, ulong pc, char *buf, int n)
	+ printins(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr i;
	  	Opcode *o;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:1177,1183 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:1177,1183
	  }
	  
	  static int
	- powerinst(Map *map, ulong pc, char modifier, char *buf, int n)
	+ powerinst(Map *map, uvlong pc, char modifier, char *buf, int n)
	  {
	  	USED(modifier);
	  	return printins(map, pc, buf, n);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:1184,1190 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:1184,1190
	  }
	  
	  static int
	- powerdas(Map *map, ulong pc, char *buf, int n)
	+ powerdas(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr instr;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:1205,1211 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:1205,1211
	  }
	  
	  static int
	- powerinstlen(Map *map, ulong pc)
	+ powerinstlen(Map *map, uvlong pc)
	  {
	  	Instr i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/qdb.c:1216,1222 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/qdb.c:1216,1222
	  }
	  
	  static int
	- powerfoll(Map *map, ulong pc, Rgetter rget, ulong *foll)
	+ powerfoll(Map *map, uvlong pc, Rgetter rget, uvlong *foll)
	  {
	  	char *reg;
	  	Instr i;
 [rsc] --rw-rw-r-- M 451989 glenda sys 1056 Nov  6 10:02 sys/src/libmach/swap.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/swap.c:15,22 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/swap.c:15,22
	  /*
	   * big-endian long
	   */
	- long
	- beswal(long l)
	+ ulong
	+ beswal(ulong l)
	  {
	  	uchar *p;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/swap.c:27,42 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/swap.c:27,42
	  /*
	   * big-endian vlong
	   */
	- vlong
	- beswav(vlong v)
	+ uvlong
	+ beswav(uvlong v)
	  {
	  	uchar *p;
	  
	  	p = (uchar*)&v;
	- 	return ((vlong)p[0]<<56) | ((vlong)p[1]<<48) | ((vlong)p[2]<<40)
	- 				 | ((vlong)p[3]<<32) | ((vlong)p[4]<<24)
	- 				 | ((vlong)p[5]<<16) | ((vlong)p[6]<<8)
	- 				 | (vlong)p[7];
	+ 	return ((uvlong)p[0]<<56) | ((uvlong)p[1]<<48) | ((uvlong)p[2]<<40)
	+ 				  | ((uvlong)p[3]<<32) | ((uvlong)p[4]<<24)
	+ 				  | ((uvlong)p[5]<<16) | ((uvlong)p[6]<<8)
	+ 				  | (uvlong)p[7];
	  }
	  
	  /*
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/swap.c:54,61 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/swap.c:54,61
	  /*
	   * little-endian long
	   */
	- long
	- leswal(long l)
	+ ulong
	+ leswal(ulong l)
	  {
	  	uchar *p;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/swap.c:66,79 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/swap.c:66,79
	  /*
	   * little-endian vlong
	   */
	- vlong
	- leswav(vlong v)
	+ uvlong
	+ leswav(uvlong v)
	  {
	  	uchar *p;
	  
	  	p = (uchar*)&v;
	- 	return ((vlong)p[7]<<56) | ((vlong)p[6]<<48) | ((vlong)p[5]<<40)
	- 				 | ((vlong)p[4]<<32) | ((vlong)p[3]<<24)
	- 				 | ((vlong)p[2]<<16) | ((vlong)p[1]<<8)
	- 				 | (vlong)p[0];
	+ 	return ((uvlong)p[7]<<56) | ((uvlong)p[6]<<48) | ((uvlong)p[5]<<40)
	+ 				  | ((uvlong)p[4]<<32) | ((uvlong)p[3]<<24)
	+ 				  | ((uvlong)p[2]<<16) | ((uvlong)p[1]<<8)
	+ 				  | (uvlong)p[0];
	  }
 [rsc] --rw-rw-r-- M 451989 glenda sys 26729 Nov  6 10:02 sys/src/libmach/sym.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:16,22 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:16,22
	  	Sym	*sym;			/* function symbol entry */
	  };
	  
	- struct hist {		/* Stack of include files & #line directives */
	+ struct hist {				/* Stack of include files & #line directives */
	  	char	*name;			/* Assumes names Null terminated in file */
	  	long	line;			/* line # where it was included */
	  	long	offset;			/* line # of #line directive */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:23,35 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:23,35
	  };
	  
	  struct file {				/* Per input file header to history stack */
	- 	long		addr;		/* address of first text sym */
	+ 	uvlong	addr;			/* address of first text sym */
	  	union {
	- 		Txtsym		*txt;	/* first text symbol */
	- 		Sym		*sym;	/* only during initilization */
	+ 		Txtsym	*txt;		/* first text symbol */
	+ 		Sym	*sym;		/* only during initilization */
	  	};
	- 	int		n;		/* size of history stack */
	- 	Hist		*hist;		/* history stack */
	+ 	int	n;			/* size of history stack */
	+ 	Hist	*hist;			/* history stack */
	  };
	  
	  static	int	debug = 0;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:53,63 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:53,63
	  static	uchar	*spoffend;		/* end of pc-sp offset table */
	  static	Sym	*symbols;		/* symbol table */
	  static	Txtsym	*txt;			/* Base of text symbol table */
	- static	long	txtstart;		/* start of text segment */
	- static	long	txtend;			/* end of text segment */
	+ static	uvlong	txtstart;		/* start of text segment */
	+ static	uvlong	txtend;			/* end of text segment */
	  
	  static void	cleansyms(void);
	- static int	decodename(Biobuf*, Sym*);
	+ static long	decodename(Biobuf*, Sym*);
	  static short	*encfname(char*);
	  static int 	fline(char*, int, long, Hist*, Hist**);
	  static void	fillsym(Sym*, Symbol*);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:65,71 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:65,71
	  static int	findlocvar(Symbol*, char *, Symbol*);
	  static int	findtext(char*, Symbol*);
	  static int	hcomp(Hist*, short*);
	- static int	hline(File*, short*, ulong*);
	+ static int	hline(File*, short*, long*);
	  static void	printhist(char*, Hist*, int);
	  static int	buildtbls(void);
	  static int	symcomp(void*, void*);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:80,87 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:80,89
	  syminit(int fd, Fhdr *fp)
	  {
	  	Sym *p;
	- 	int i, size;
	+ 	long i, l, size;
	+ 	vlong vl;
	  	Biobuf b;
	+ 	int svalsz;
	  
	  	if(fp->symsz == 0)
	  		return 0;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:101,109 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:103,120
	  	nsym = 0;
	  	size = 0;
	  	for(p = symbols; size < fp->symsz; p++, nsym++) {
	- 		if(Bread(&b, &p->value, sizeof(p->value)) != sizeof(p->value))
	- 			return symerrmsg(sizeof(p->value), "symbol");
	- 		p->value = beswal(p->value);
	+ 		if(fp->magic & HDR_MAGIC){
	+ 			svalsz = 8;
	+ 			if(Bread(&b, &vl, 8) != 8)
	+ 				return symerrmsg(8, "symbol");
	+ 			p->value = beswav(vl);
	+ 		}
	+ 		else{
	+ 			svalsz = 4;
	+ 			if(Bread(&b, &l, 4) != 4)
	+ 				return symerrmsg(4, "symbol");
	+ 			p->value = (u32int)beswal(l);
	+ 		}
	  		if(Bread(&b, &p->type, sizeof(p->type)) != sizeof(p->type))
	  			return symerrmsg(sizeof(p->value), "symbol");
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:110,116 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:121,127
	  		i = decodename(&b, p);
	  		if(i < 0)
	  			return -1;
	- 		size += i+sizeof(p->value)+sizeof(p->type);
	+ 		size += i+svalsz+sizeof(p->type);
	  
	  		/* count global & auto vars, text symbols, and file names */
	  		switch (p->type) {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:159,166 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:170,176
	  			return -1;
	  		}
	  		Bseek(&b, fp->sppcoff, 0);
	- 		i = Bread(&b, spoff, fp->sppcsz);
	- 		if(i != fp->sppcsz){
	+ 		if(Bread(&b, spoff, fp->sppcsz) != fp->sppcsz){
	  			spoff = 0;
	  			return symerrmsg(fp->sppcsz, "sp-pc");
	  		}
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:173,180 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:183,189
	  			return -1;
	  		}
	  		Bseek(&b, fp->lnpcoff, 0);
	- 		i = Bread(&b, pcline, fp->lnpcsz);
	- 		if(i != fp->lnpcsz){
	+ 		if(Bread(&b, pcline, fp->lnpcsz) != fp->lnpcsz){
	  			pcline = 0;
	  			return symerrmsg(fp->lnpcsz, "pc-line");
	  		}
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:190,201 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:199,211
	  	return -1;
	  }
	  
	- static int
	+ static long
	  decodename(Biobuf *bp, Sym *p)
	  {
	  	char *cp;
	  	int c1, c2;
	- 	int n;
	+ 	long n;
	+ 	vlong o;
	  
	  	if((p->type & 0x80) == 0) {		/* old-style, fixed length names */
	  		p->name = malloc(NNAME);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:211,217 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:221,227
	  
	  	p->type &= ~0x80;
	  	if(p->type == 'z' || p->type == 'Z') {
	- 		n = Bseek(bp, 0, 1);
	+ 		o = Bseek(bp, 0, 1);
	  		if(Bgetc(bp) < 0) {
	  			werrstr("can't read symbol name");
	  			return -1;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:226,240 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:236,250
	  			if(c1 == 0 && c2 == 0)
	  				break;
	  		}
	- 		n = Bseek(bp, 0, 1)-n;
	+ 		n = Bseek(bp, 0, 1)-o;
	  		p->name = malloc(n);
	  		if(p->name == 0) {
	- 			werrstr("can't malloc %d bytes", n);
	+ 			werrstr("can't malloc %ld bytes", n);
	  			return -1;
	  		}
	  		Bseek(bp, -n, 1);
	  		if(Bread(bp, p->name, n) != n) {
	- 			werrstr("can't read %d bytes of symbol name", n);
	+ 			werrstr("can't read %ld bytes of symbol name", n);
	  			return -1;
	  		}
	  	} else {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:246,252 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:256,262
	  		n = Blinelen(bp);
	  		p->name = malloc(n);
	  		if(p->name == 0) {
	- 			werrstr("can't malloc %d bytes", n);
	+ 			werrstr("can't malloc %ld bytes", n);
	  			return -1;
	  		}
	  		strcpy(p->name, cp);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:253,258 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:263,269
	  	}
	  	return n;
	  }
	+ 
	  /*
	   *	free any previously loaded symbol tables
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:296,310 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:307,323
	  		free(pcline);
	  	pcline = 0;
	  }
	+ 
	  /*
	   *	delimit the text segment
	   */
	  void
	- textseg(ulong base, Fhdr *fp)
	+ textseg(uvlong base, Fhdr *fp)
	  {
	  	txtstart = base;
	  	txtend = base+fp->txtsz;
	  }
	+ 
	  /*
	   *	symbase: return base and size of raw symbol table
	   *		(special hack for high access rate operations)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:315,320 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:328,334
	  	*n = nsym;
	  	return symbols;
	  }
	+ 
	  /*
	   *	Get the ith symbol table entry
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:332,338 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:346,353
	  static int
	  buildtbls(void)
	  {
	- 	int i, j, nh, ng, nt;
	+ 	long i;
	+ 	int j, nh, ng, nt;
	  	File *f;
	  	Txtsym *tp;
	  	Hist *hp;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:391,397 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:406,412
	  		case 'B':
	  		case 'b':
	  			if(debug)
	- 				print("Global: %s %lux\n", p->name, p->value);
	+ 				print("Global: %s %llux\n", p->name, p->value);
	  			globals[ng++] = p;
	  			break;
	  		case 'z':
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:430,436 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:445,451
	  			tp->sym = p;
	  			tp->locals = ap;
	  			if(debug)
	- 				print("TEXT: %s at %lux\n", p->name, p->value);
	+ 				print("TEXT: %s at %llux\n", p->name, p->value);
	  			if(f && !f->sym) {			/* first  */
	  				f->sym = p;
	  				f->addr = p->value;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:444,450 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:459,465
	  					p->name);
	  			else {
	  				if(debug)
	- 					print("Local: %s %lux\n", p->name, p->value);
	+ 					print("Local: %s %llux\n", p->name, p->value);
	  				tp->locals[tp->n] = p;
	  				tp->n++;
	  				ap++;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:468,474 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:483,489
	  		for(j = 0; j < ntxt; j++) {
	  			if(f->sym == tp->sym) {
	  				if(debug) {
	- 					print("LINK: %s to at %lux", f->sym->name, f->addr);
	+ 					print("LINK: %s to at %llux", f->sym->name, f->addr);
	  					printhist("... ", f->hist, 1);
	  				}
	  				f->txt = tp++;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:511,516 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:526,532
	  	return findglobal(var, s);		/* case 3: var not found */
	  
	  }
	+ 
	  /*
	   * find a function by name
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:535,541 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:551,557
	  static int
	  findglobal(char *name, Symbol *s)
	  {
	- 	int i;
	+ 	long i;
	  
	  	for(i = 0; i < nglob; i++) {
	  		if(strcmp(globals[i]->name, name) == 0) {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:546,551 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:562,568
	  	}
	  	return 0;
	  }
	+ 
	  /*
	   *	find the local variable by name within a given function
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:558,563 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:575,581
	  		return 0;
	  	return findlocvar(s1, name, s2);
	  }
	+ 
	  /*
	   *	find the local variable by name within a given function
	   *		(internal function - does no parameter validation)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:580,585 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:598,604
	  	}
	  	return 0;
	  }
	+ 
	  /*
	   *	Get ith text symbol
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:596,601 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:615,621
	  	s->index = index;
	  	return 1;
	  }
	+ 
	  /*	
	   *	Get ith file name
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:613,618 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:633,639
	  		return 0;
	  	return fileelem(fnames, (uchar*)hp->name, buf, n);
	  }
	+ 
	  /*
	   *	Lookup name of local variable located at an offset into the frame.
	   *	The type selects either a parameter or automatic.
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:653,661 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:674,682
	   * Find text symbol containing addr; binary search assumes text array is sorted by addr
	   */
	  static int
	- srchtext(long addr)
	+ srchtext(uvlong addr)
	  {
	- 	ulong val;
	+ 	uvlong val;
	  	int top, bot, mid;
	  	Sym *sp;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:664,672 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:685,693
	  	top = ntxt;
	  	for (mid = (bot+top)/2; mid < top; mid = (bot+top)/2) {
	  		sp = txt[mid].sym;
	- 		if(val < (ulong)sp->value)
	+ 		if(val < sp->value)
	  			top = mid;
	- 		else if(mid != ntxt-1 && val >= (ulong)txt[mid+1].sym->value)
	+ 		else if(mid != ntxt-1 && val >= txt[mid+1].sym->value)
	  			bot = mid;
	  		else
	  			return mid;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:677,686 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:698,707
	  /*
	   * Find data symbol containing addr; binary search assumes data array is sorted by addr
	   */
	- static
	- int srchdata(long addr)
	+ static int
	+ srchdata(uvlong addr)
	  {
	- 	ulong val;
	+ 	uvlong val;
	  	int top, bot, mid;
	  	Sym *sp;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:689,697 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:710,718
	  	val = addr;
	  	for(mid = (bot+top)/2; mid < top; mid = (bot+top)/2) {
	  		sp = globals[mid];
	- 		if(val < (ulong)sp->value)
	+ 		if(val < sp->value)
	  			top = mid;
	- 		else if(mid < nglob-1 && val >= (ulong)globals[mid+1]->value)
	+ 		else if(mid < nglob-1 && val >= globals[mid+1]->value)
	  			bot = mid;
	  		else
	  			return mid;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:698,703 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:719,725
	  	}
	  	return -1;
	  }
	+ 
	  /*
	   * Find symbol containing val in specified search space
	   * There is a special case when a value falls beyond the end
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:706,712 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:728,734
	   * data space are searched for a match.
	   */
	  int
	- findsym(long w, int type, Symbol *s)
	+ findsym(uvlong val, int type, Symbol *s)
	  {
	  	int i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:714,720 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:736,742
	  		return 0;
	  
	  	if(type == CTEXT || type == CANY) {
	- 		i = srchtext(w);
	+ 		i = srchtext(val);
	  		if(i >= 0) {
	  			if(type == CTEXT || i != ntxt-1) {
	  				fillsym(txt[i].sym, s);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:725,731 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:747,753
	  		}
	  	}
	  	if(type == CDATA || type == CANY) {
	- 		i = srchdata(w);
	+ 		i = srchdata(val);
	  		if(i >= 0) {
	  			fillsym(globals[i], s);
	  			s->index = i;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:739,745 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:761,767
	   *	Find the start and end address of the function containing addr
	   */
	  int
	- fnbound(long addr, ulong *bounds)
	+ fnbound(uvlong addr, uvlong *bounds)
	  {
	  	int i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:779,784 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:801,807
	  	}
	  	return 0;
	  }
	+ 
	  /*
	   * get the ith global symbol
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:797,820 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:820,843
	  	}
	  	return 0;
	  }
	+ 
	  /*
	   *	find the pc given a file name and line offset into it.
	   */
	- long
	- file2pc(char *file, ulong line)
	+ uvlong
	+ file2pc(char *file, long line)
	  {
	  	File *fp;
	- 	int i;
	- 	long pc;
	- 	ulong start, end;
	+ 	long i;
	+ 	uvlong pc, start, end;
	  	short *name;
	  
	  	if(buildtbls() == 0 || files == 0)
	- 		return -1;
	+ 		return ~0;
	  	name = encfname(file);
	  	if(name == 0) {			/* encode the file name */
	  		werrstr("file %s not found", file);
	- 		return -1;
	+ 		return ~0;
	  	} 
	  		/* find this history stack */
	  	for(i = 0, fp = files; i < nfiles; i++, fp++)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:823,829 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:846,852
	  	free(name);
	  	if(i >= nfiles) {
	  		werrstr("line %ld in file %s not found", line, file);
	- 		return -1;
	+ 		return ~0;
	  	}
	  	start = fp->addr;		/* first text addr this file */
	  	if(i < nfiles-1)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:835,848 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:858,872
	  	 * run the state machine to locate the pc closest to that value.
	  	 */
	  	if(debug)
	- 		print("find pc for %ld - between: %lux and %lux\n", line, start, end);
	+ 		print("find pc for %ld - between: %llux and %llux\n", line, start, end);
	  	pc = line2addr(line, start, end);
	- 	if(pc == -1) {
	+ 	if(pc == ~0) {
	  		werrstr("line %ld not in file %s", line, file);
	- 		return -1;
	+ 		return ~0;
	  	}
	  	return pc;
	  }
	+ 
	  /*
	   *	search for a path component index
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:856,861 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:880,886
	  			return i;
	  	return -1;
	  }
	+ 
	  /*
	   *	Encode a char file name as a sequence of short indices
	   *	into the file name dictionary.
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:893,904 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:918,930
	  	dest[i] = 0;
	  	return dest;
	  }
	+ 
	  /*
	   *	Search a history stack for a matching file name accumulating
	   *	the size of intervening files in the stack.
	   */
	  static int
	- hline(File *fp, short *name, ulong *line)
	+ hline(File *fp, short *name, long *line)
	  {
	  	Hist *hp;
	  	int offset, depth;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:942,947 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:968,974
	  	*line = ln+offset;
	  	return 1;
	  }
	+ 
	  /*
	   *	compare two encoded file names
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:966,979 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:993,1006
	  	}
	  	return *s == 0;
	  }
	+ 
	  /*
	   *	Convert a pc to a "file:line {file:line}" string.
	   */
	- int
	- fileline(char *str, int n, ulong dot)
	+ long
	+ fileline(char *str, int n, uvlong dot)
	  {
	- 	long line;
	- 	int top, bot, mid;
	+ 	long line, top, bot, mid;
	  	File *f;
	  
	  	*str = 0;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1008,1014 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1035,1041
	  {
	  	Hist *start;			/* start of current level */
	  	Hist *h;			/* current entry */
	- 	int delta;			/* sum of size of files this level */
	+ 	long delta;			/* sum of size of files this level */
	  	int k;
	  
	  	start = base;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1067,1072 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1094,1100
	   ********************/
	  	return 0;
	  }
	+ 
	  /*
	   *	convert an encoded file name to a string.
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1093,1098 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1121,1127
	  	}
	  	return i;
	  }
	+ 
	  /*
	   *	compare the values of two symbol table entries.
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1106,1111 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1135,1141
	  		return i;
	  	return strcmp((*(Sym**)a)->name, (*(Sym**)b)->name);
	  }
	+ 
	  /*
	   *	compare the values of the symbols referenced by two text table entries
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1114,1119 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1144,1150
	  {
	  	return ((Txtsym*)a)->sym->value - ((Txtsym*)b)->sym->value;
	  }
	+ 
	  /*
	   *	compare the values of the symbols referenced by two file table entries
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1122,1127 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1153,1159
	  {
	  	return ((File*)a)->addr - ((File*)b)->addr;
	  }
	+ 
	  /*
	   *	fill an interface Symbol structure from a symbol table entry
	   */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1160,1183 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1192,1214
	  	}
	  	s->handle = 0;
	  }
	+ 
	  /*
	   *	find the stack frame, given the pc
	   */
	- long
	- pc2sp(ulong pc)
	+ uvlong
	+ pc2sp(uvlong pc)
	  {
	- 	uchar *c;
	- 	uchar u;
	- 	ulong currpc;
	- 	long currsp;
	+ 	uchar *c, u;
	+ 	uvlong currpc, currsp;
	  
	  	if(spoff == 0)
	- 		return -1;
	+ 		return ~0;
	  	currsp = 0;
	  	currpc = txtstart - mach->pcquant;
	  
	  	if(pc<currpc || pc>txtend)
	- 		return -1;
	+ 		return ~0;
	  	for(c = spoff; c < spoffend; c++) {
	  		if (currpc >= pc)
	  			return currsp;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1194,1210 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1225,1241
	  			currpc += mach->pcquant*(u-129);
	  		currpc += mach->pcquant;
	  	}
	- 	return -1;
	+ 	return ~0;
	  }
	+ 
	  /*
	   *	find the source file line number for a given value of the pc
	   */
	  long
	- pc2line(ulong pc)
	+ pc2line(uvlong pc)
	  {
	- 	uchar *c;
	- 	uchar u;
	- 	ulong currpc;
	+ 	uchar *c, u;
	+ 	uvlong currpc;
	  	long currline;
	  
	  	if(pcline == 0)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1212,1218 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1243,1249
	  	currline = 0;
	  	currpc = txtstart-mach->pcquant;
	  	if(pc<currpc || pc>txtend)
	- 		return -1;
	+ 		return ~0;
	  
	  	for(c = pcline; c < pclineend; c++) {
	  		if(currpc >= pc)
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1230,1237 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1261,1269
	  			currpc += mach->pcquant*(u-129);
	  		currpc += mach->pcquant;
	  	}
	- 	return -1;
	+ 	return ~0;
	  }
	+ 
	  /*
	   *	find the pc associated with a line number
	   *	basepc and endpc are text addresses bounding the search.
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1239,1260 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1271,1291
	   *	usually, basepc and endpc contain the first text address in
	   *	a file and the first text address in the following file, respectively.
	   */
	- long
	- line2addr(ulong line, ulong basepc, ulong endpc)
	+ uvlong
	+ line2addr(long line, uvlong basepc, uvlong endpc)
	  {
	- 	uchar *c;
	- 	uchar u;
	- 	ulong currpc;
	+ 	uchar *c,  u;
	+ 	uvlong currpc, pc;
	  	long currline;
	  	long delta, d;
	- 	long pc, found;
	+ 	int found;
	  
	  	if(pcline == 0 || line == 0)
	- 		return -1;
	+ 		return ~0;
	  
	  	currline = 0;
	  	currpc = txtstart-mach->pcquant;
	- 	pc = -1;
	+ 	pc = ~0;
	  	found = 0;
	  	delta = HUGEINT;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/sym.c:1287,1294 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/sym.c:1318,1326
	  	}
	  	if(found)
	  		return pc;
	- 	return -1;
	+ 	return ~0;
	  }
	+ 
	  /*
	   *	Print a history stack (debug). if count is 0, prints the whole stack
	   */
 [rsc] --rw-rw-r-- M 451989 jmk sys 3436 Nov  6 10:02 sys/src/libmach/u.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/u.c:108,115 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/u.c:108,116
	  	"setSB",	/* static base register name */
	  	0,		/* value */
	  	0x2000,		/* page size */
	- 	0x80000000,	/* kernel base */
	+ 	0x80000000ULL,	/* kernel base */
	  	0,		/* kernel text mask */
	+ 	0x7FFFFFFFULL,	/* user stack top */
	  	4,		/* quantization of pc */
	  	4,		/* szaddr */
	  	4,		/* szreg */
 [rsc] --rw-rw-r-- M 451989 jmk sys 21910 Nov  6 10:03 sys/src/libmach/udb.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:8,17 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:8,17
	   */
	  
	  static	char	*sparc64excep(Map*, Rgetter);
	- static	int	sparc64foll(Map*, ulong, Rgetter, ulong*);
	- static	int	sparc64inst(Map*, ulong, char, char*, int);
	- static	int	sparc64das(Map*, ulong, char*, int);
	- static	int	sparc64instlen(Map*, ulong);
	+ static	int	sparc64foll(Map*, uvlong, Rgetter, uvlong*);
	+ static	int	sparc64inst(Map*, uvlong, char, char*, int);
	+ static	int	sparc64das(Map*, uvlong, char*, int);
	+ static	int	sparc64instlen(Map*, uvlong);
	  
	  Machdata sparc64mach =
	  {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:143,149 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:143,149
	  	int	target;		/* SETHI+ADD dest reg */
	  	long	w0;
	  	long	w1;
	- 	ulong	addr;		/* pc of instruction */
	+ 	uvlong	addr;		/* pc of instruction */
	  	char	*curr;		/* current fill level in output buffer */
	  	char	*end;		/* end of buffer */
	  	int 	size;		/* number of longs in instr */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:153,159 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:153,159
	  static	Map	*mymap;		/* disassembler context */
	  static	int	dascase;
	  
	- static int	mkinstr(ulong, Instr*);
	+ static int	mkinstr(uvlong, Instr*);
	  static void	bra1(Instr*, char*, char*[]);
	  static void	bra(Instr*, char*);
	  static void	fbra(Instr*, char*);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:317,323 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:317,323
	  static int
	  decode(ulong pc, Instr *i)
	  {
	- 	long w;
	+ 	ulong w;
	  
	  	if (get4(mymap, pc, &w) < 0) {
	  		werrstr("can't read instruction: %r");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:350,356 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:350,356
	  }
	  
	  static int
	- mkinstr(ulong pc, Instr *i)
	+ mkinstr(uvlong pc, Instr *i)
	  {
	  	Instr xi;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:381,387 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:381,387
	  }
	  
	  static int
	- printins(Map *map, ulong pc, char *buf, int n)
	+ printins(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr instr;
	  	void (*f)(Instr*, char*);
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:451,457 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:451,457
	  }
	  
	  static int
	- sparc64inst(Map *map, ulong pc, char modifier, char *buf, int n)
	+ sparc64inst(Map *map, uvlong pc, char modifier, char *buf, int n)
	  {
	  	static int fmtinstalled = 0;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:469,475 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:469,475
	  }
	  
	  static int
	- sparc64das(Map *map, ulong pc, char *buf, int n)
	+ sparc64das(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr instr;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:490,496 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:490,496
	  }
	  
	  static int
	- sparc64instlen(Map *map, ulong pc)
	+ sparc64instlen(Map *map, uvlong pc)
	  {
	  	Instr i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:527,533 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:527,533
	  address(Instr *i)
	  {
	  	Symbol s, s2;
	- 	long off, off1;
	+ 	uvlong off, off1;
	  
	  	if (i->rs1 == 1 && plocal(i) >= 0)
	  		return;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:537,543 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:537,543
	  			&& (s.class == CDATA || s.class == CTEXT)) {
	  		if(off==s.value && s.name[0]=='$'){
	  			off1 = 0;
	- 			get4(mymap, s.value, &off1);
	+ 			geta(mymap, s.value, &off1);
	  			if(off1 && findsym(off1, CANY, &s2) && s2.value == off1){
	  				bprint(i, "$%s(SB)", s2.name);
	  				return;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/udb.c:1034,1040 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/udb.c:1034,1040
	  }
	  
	  static int
	- sparc64foll(Map *map, ulong pc, Rgetter rget, ulong *foll)
	+ sparc64foll(Map *map, uvlong pc, Rgetter rget, uvlong *foll)
	  {
	  	ulong w, r1, r2;
	  	char buf[8];
 [rsc] --rw-rw-r-- M 451989 glenda sys 3446 Nov  6 10:02 sys/src/libmach/v.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/v.c:106,113 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/v.c:106,114
	  	"setR30",	/* static base register name */
	  	0,		/* value */
	  	0x1000,		/* page size */
	- 	0xC0000000,	/* kernel base */
	- 	0x40000000,	/* kernel text mask */
	+ 	0xC0000000ULL,	/* kernel base */
	+ 	0x40000000ULL,	/* kernel text mask */
	+ 	0x7FFFFFFFULL,	/* user stack top */
	  	4,		/* quantization of pc */
	  	4,		/* szaddr */
	  	4,		/* szreg */
 [rsc] --rw-rw-r-- M 451989 glenda sys 10258 Nov  6 10:03 sys/src/libmach/vcodas.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vcodas.c:6,12 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vcodas.c:6,12
	  	/* mips native disassembler */
	  
	  typedef struct {
	- 	long addr;			/* pc of instr */
	+ 	uvlong addr;			/* pc of instr */
	  	uchar op;			/* bits 31-26 */
	  	uchar rs;			/* bits 25-21 */
	  	uchar rt;			/* bits 20-16 */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vcodas.c:282,290 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vcodas.c:282,290
	  
	  
	  static int
	- mkinstr(Instr *i, Map *map, ulong pc)
	+ mkinstr(Instr *i, Map *map, uvlong pc)
	  {
	- 	long w;
	+ 	ulong w;
	  
	  	if (get4(map, pc, &w) < 0) {
	  		werrstr("can't read instruction: %r");
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vcodas.c:506,512 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vcodas.c:506,512
	  }
	  
	  int
	- _mipscoinst(Map *map, ulong pc, char *buf, int n)
	+ _mipscoinst(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr i;
	  	Opcode *o;
 [rsc] --rw-rw-r-- M 451989 glenda sys 22264 Nov  6 10:03 sys/src/libmach/vdb.c
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vdb.c:7,16 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vdb.c:7,16
	   */
	  
	  static	char	*mipsexcep(Map*, Rgetter);
	- static	int	mipsfoll(Map*, ulong, Rgetter, ulong*);
	- static	int	mipsinst(Map*, ulong, char, char*, int);
	- static	int	mipsdas(Map*, ulong, char*, int);
	- static	int	mipsinstlen(Map*, ulong);
	+ static	int	mipsfoll(Map*, uvlong, Rgetter, uvlong*);
	+ static	int	mipsinst(Map*, uvlong, char, char*, int);
	+ static	int	mipsdas(Map*, uvlong, char*, int);
	+ static	int	mipsinstlen(Map*, uvlong);
	  
	  /*
	   *	Debugger interface
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vdb.c:123,129 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vdb.c:123,129
	  static	char FRAMENAME[] = ".frame";
	  
	  typedef struct {
	- 	ulong addr;
	+ 	uvlong addr;
	  	uchar op;			/* bits 31-26 */
	  	uchar rs;			/* bits 25-21 */
	  	uchar rt;			/* bits 20-16 */
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vdb.c:144,152 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vdb.c:144,152
	  static Map *mymap;
	  
	  static int
	- decode(ulong pc, Instr *i)
	+ decode(uvlong pc, Instr *i)
	  {
	- 	long w;
	+ 	ulong w;
	  	extern Mach mmips2le;
	  
	  	if (get4(mymap, pc, &w) < 0) {
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vdb.c:172,178 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vdb.c:172,178
	  }
	  
	  static int
	- mkinstr(ulong pc, Instr *i)
	+ mkinstr(uvlong pc, Instr *i)
	  {
	  	Instr x;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vdb.c:993,999 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vdb.c:993,999
	  }
	  
	  static int
	- printins(Map *map, ulong pc, char *buf, int n)
	+ printins(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr i;
	  	Opcode *o;
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vdb.c:1046,1056 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vdb.c:1046,1056
	  	return i.size*4;
	  }
	  
	- extern	int	_mipscoinst(Map *, ulong, char*, int);
	+ extern	int	_mipscoinst(Map *, uvlong, char*, int);
	  
	  	/* modifier 'I' toggles the default disassembler type */
	  static int
	- mipsinst(Map *map, ulong pc, char modifier, char *buf, int n)
	+ mipsinst(Map *map, uvlong pc, char modifier, char *buf, int n)
	  {
	  	if ((asstype == AMIPSCO && modifier == 'i')
	  		|| (asstype == AMIPS && modifier == 'I'))
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vdb.c:1060,1066 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vdb.c:1060,1066
	  }
	  
	  static int
	- mipsdas(Map *map, ulong pc, char *buf, int n)
	+ mipsdas(Map *map, uvlong pc, char *buf, int n)
	  {
	  	Instr i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vdb.c:1080,1086 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vdb.c:1080,1086
	  }
	  
	  static int
	- mipsinstlen(Map *map, ulong pc)
	+ mipsinstlen(Map *map, uvlong pc)
	  {
	  	Instr i;
	  
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/vdb.c:1091,1097 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/vdb.c:1091,1097
	  }
	  
	  static int
	- mipsfoll(Map *map, ulong pc, Rgetter rget, ulong *foll)
	+ mipsfoll(Map *map, uvlong pc, Rgetter rget, uvlong *foll)
	  {
	  	ulong w, l;
	  	char buf[8];
 [rsc] --rw-rw-r-- M 451989 glenda sys 2301 Nov  6 11:01 sys/src/libmach/elf.h
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/elf.h:1,22 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/elf.h:1,21
	- 
	  /*
	   *	Definitions needed for  accessing Irix ELF headers
	   */
	  typedef struct {
	- 	unsigned char	ident[16];	/* ident bytes */
	- 	ushort		type;		/* file type */
	- 	ushort		machine;	/* target machine */
	- 	int		version;	/* file version */
	- 	ulong		elfentry;	/* start address */
	- 	ulong		phoff;		/* phdr file offset */
	- 	ulong		shoff;		/* shdr file offset */
	- 	int		flags;		/* file flags */
	- 	ushort		ehsize;		/* sizeof ehdr */
	- 	ushort		phentsize;	/* sizeof phdr */
	- 	ushort		phnum;		/* number phdrs */
	- 	ushort		shentsize;	/* sizeof shdr */
	- 	ushort		shnum;		/* number shdrs */
	- 	ushort		shstrndx;	/* shdr string index */
	+ 	uchar	ident[16];	/* ident bytes */
	+ 	ushort	type;		/* file type */
	+ 	ushort	machine;	/* target machine */
	+ 	int	version;	/* file version */
	+ 	ulong	elfentry;	/* start address */
	+ 	ulong	phoff;		/* phdr file offset */
	+ 	ulong	shoff;		/* shdr file offset */
	+ 	int	flags;		/* file flags */
	+ 	ushort	ehsize;		/* sizeof ehdr */
	+ 	ushort	phentsize;	/* sizeof phdr */
	+ 	ushort	phnum;		/* number phdrs */
	+ 	ushort	shentsize;	/* sizeof shdr */
	+ 	ushort	shnum;		/* number shdrs */
	+ 	ushort	shstrndx;	/* shdr string index */
	  } Ehdr;
	  
	  typedef struct {
 [rsc] --rw-rw-r-- M 451989 glenda sys 604 Nov  6 11:01 sys/src/libmach/obj.h
	/n/sourcesdump/2005/1106/plan9/sys/src/libmach/obj.h:21,24 - 
	/n/sourcesdump/2005/1107/plan9/sys/src/libmach/obj.h:21,24
	  };
	  
	  #define UNKNOWN	'?'
	- void		_offset(int, long);
	+ void		_offset(int, vlong);


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].