Plan 9 from Bell Labs’s /usr/web/sources/contrib/uriel/changes/2006/0103/3

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


More 64-bit fixes and cleanups.
 [jmk] --rw-rw-r-- M 208448 glenda sys 61334 Jan  3 16:06 sys/src/libmach/2db.c
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/2db.c:1296,1301 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/2db.c:1296,1303
	  	return 0;
	  }
	  
	+ #pragma	varargck	argpos	bprint		2
	+ 
	  static void
	  bprint(Inst *i, char *fmt, ...)
	  {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/2db.c:1315,1321 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/2db.c:1317,1324
	  static void
	  plocal(Inst *ip, Operand *ap)
	  {
	- 	int ret, offset;
	+ 	int ret;
	+ 	long offset;
	  	uvlong moved;
	  	Symbol s;
	  
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/2db.c:1533,1539 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/2db.c:1536,1542
	  	case ADisp:	/* references off the static base */
	  		if (reg == 6 && mach->sb && ap->disp) {
	  			ip->curr += symoff(ip->curr, left, ap->disp+mach->sb, CANY);
	- 			bprint(ip, "(SB)", reg);
	+ 			bprint(ip, "(SB)");
	  			break;
	  		}
	  			/* reference autos and parameters off the stack */
 [jmk] --rw-rw-r-- M 208448 glenda sys 21586 Jan  3 16:06 sys/src/libmach/5db.c
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/5db.c:212,217 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/5db.c:212,219
	  	return 1;
	  }
	  
	+ #pragma	varargck	argpos	bprint		2
	+ 
	  static void
	  bprint(Instr *i, char *fmt, ...)
	  {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/5db.c:254,260 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/5db.c:256,262
	  			class == CAUTO ? " auto" : "param", offset);
	  		return 0;
	  	}
	- 	bprint(i, "%s%c%d%s", s.name, class == CPARAM ? '+' : '-', s.value, reg);
	+ 	bprint(i, "%s%c%lld%s", s.name, class == CPARAM ? '+' : '-', s.value, reg);
	  	return 1;
	  }
	  
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/5db.c:885,895 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/5db.c:887,897
	  			break;
	  				
	  		case 'M':
	- 			bprint(i, "%d", (i->w>>8) & 0xf);
	+ 			bprint(i, "%lud", (i->w>>8) & 0xf);
	  			break;
	  				
	  		case 'm':
	- 			bprint(i, "%d", (i->w>>7) & 0x1f);
	+ 			bprint(i, "%lud", (i->w>>7) & 0x1f);
	  			break;
	  
	  		case 'h':
 [jmk] --rw-rw-r-- M 208448 glenda sys 17355 Jan  3 16:06 sys/src/libmach/7db.c
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/7db.c:169,174 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/7db.c:169,176
	  	return 1;
	  }
	  
	+ #pragma	varargck	argpos	bprint		2
	+ 
	  static void
	  bprint(Instr *i, char *fmt, ...)
	  {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/7db.c:256,262 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/7db.c:258,264
	  	if (i->rb == 29 && mach->sb) {
	  		bprint(i, "%s\t%c%d,", m, r, i->ra);
	  		i->curr += symoff(i->curr, i->end-i->curr, i->mem+mach->sb, CANY);
	- 		bprint(i, "(SB)", r, i->ra);
	+ 		bprint(i, "(SB)");
	  		return;
	  	}
	  	format(o->mnemonic, i, o->ken);
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/7db.c:769,775 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/7db.c:771,777
	  
	  		case 'v':
	  			if (i->islit)
	- 				bprint(i, "$%lx", i->literal);
	+ 				bprint(i, "$%ux", i->literal);
	  			else
	  				bprint(i, "R%d", i->rb);
	  			break;
 [jmk] --rw-rw-r-- M 208448 glenda sys 50889 Jan  3 16:06 sys/src/libmach/8db.c
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/8db.c:1701,1706 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/8db.c:1701,1708
	  	return op;
	  }
	  
	+ #pragma	varargck	argpos	bprint		2
	+ 
	  static void
	  bprint(Instr *ip, char *fmt, ...)
	  {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/8db.c:1750,1756 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/8db.c:1752,1759
	  static void
	  plocal(Instr *ip)
	  {
	- 	int ret, offset;
	+ 	int ret;
	+ 	long offset;
	  	Symbol s;
	  	char *reg;
	  
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/8db.c:1975,1981 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/8db.c:1978,1984
	  				bprint(ip, "CBW");
	  			break;
	  		case 'd':
	- 			bprint(ip,"%lux:%lux",ip->seg,ip->disp);
	+ 			bprint(ip,"%ux:%lux",ip->seg,ip->disp);
	  			break;
	  		case 'm':
	  			if (ip->mod == 3 && ip->osize != 'B') {
 [jmk] --rw-rw-r-- M 208448 glenda sys 21222 Jan  3 16:06 sys/src/libmach/kdb.c
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:277,282 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:277,302
	  	[0x1F]	"swapa",	loada,	0,
	  };
	  
	+ #pragma	varargck	argpos	bprint	2
	+ #pragma	varargck	type	"T"	char*
	+ 
	+ /* convert to lower case from upper, according to dascase */
	+ static int
	+ Tfmt(Fmt *f)
	+ {
	+ 	char buf[128];
	+ 	char *s, *t, *oa;
	+ 
	+ 	oa = va_arg(f->args, char*);
	+ 	if(dascase){
	+ 		for(s=oa,t=buf; *t = *s; s++,t++)
	+ 			if('A'<=*t && *t<='Z')
	+ 				*t += 'a'-'A';
	+ 		return fmtstrcpy(f, buf);
	+ 	}
	+ 	return fmtstrcpy(f, oa);
	+ }
	+ 
	  static void
	  bprint(Instr *i, char *fmt, ...)
	  {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:375,381 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:395,401
	  		break;
	  
	  	case 1:
	- 		bprint(&instr, "%X", "CALL\t");
	+ 		bprint(&instr, "%T", "CALL\t");
	  		instr.curr += symoff(instr.curr, instr.end-instr.curr,
	  					pc+instr.disp30*4, CTEXT);
	  		if (!dascase)
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:406,429 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:426,432
	  	return instr.size*4;
	  }
	  
	- /* convert to lower case from upper, according to dascase */
	  static int
	- Xfmt(Fmt *f)
	- {
	- 	char buf[128];
	- 	char *s, *t, *oa;
	- 
	- 	oa = va_arg(f->args, char*);
	- 	if(dascase){
	- 		for(s=oa,t=buf; *t = *s; s++,t++)
	- 			if('A'<=*t && *t<='Z')
	- 				*t += 'a'-'A';
	- 		return fmtstrcpy(f, buf);
	- 	}
	- 	return fmtstrcpy(f, oa);
	- }
	- 
	- static int
	  sparcinst(Map *map, uvlong pc, char modifier, char *buf, int n)
	  {
	  	static int fmtinstalled = 0;
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:431,437 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:434,440
	  		/* a modifier of 'I' toggles the dissassembler type */
	  	if (!fmtinstalled) {
	  		fmtinstalled = 1;
	- 		fmtinstall('X', Xfmt);
	+ 		fmtinstall('T', Tfmt);
	  	}
	  	if ((asstype == ASUNSPARC && modifier == 'i')
	  		|| (asstype == ASPARC && modifier == 'I'))
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:483,489 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:486,492
	  		return -1;
	  	if (s.value > i->simm13) {
	  		if(getauto(&s, s.value-i->simm13, CAUTO, &s)) {
	- 			bprint(i, "%s+%d(SP)", s.name, s.value);
	+ 			bprint(i, "%s+%lld(SP)", s.name, s.value);
	  			return 1;
	  		}
	  	} else {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:518,534 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:521,537
	  		}
	  		bprint(i, "%s", s.name);
	  		if (s.value != off)
	- 			bprint(i, "+%lux", s.value-off);
	+ 			bprint(i, "+%llux", s.value-off);
	  		bprint(i, "(SB)");
	  		return;
	  	}
	- 	bprint(i, "%lux(R%d)", i->simm13, i->rs1);
	+ 	bprint(i, "%ux(R%d)", i->simm13, i->rs1);
	  }
	  
	  static void
	  unimp(Instr *i, char *m)
	  {
	- 	bprint(i, "%X", m);
	+ 	bprint(i, "%T", m);
	  }
	  
	  static char	*bratab[16] = {	/* page 91 */
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:595,603 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:598,606
	  
	  	imm = i->simmdisp22;
	  	if(i->a)
	- 		bprint(i, "%X%X.%c\t", m, tab[i->cond], 'A'+dascase);
	+ 		bprint(i, "%T%T.%c\t", m, tab[i->cond], 'A'+dascase);
	  	else
	- 		bprint(i, "%X%X\t", m, tab[i->cond]);
	+ 		bprint(i, "%T%T\t", m, tab[i->cond]);
	  	i->curr += symoff(i->curr, i->end-i->curr, i->addr+4*imm, CTEXT);
	  	if (!dascase)
	  		bprint(i, "(SB)");
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:625,633 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:628,636
	  trap(Instr *i, char *m)			/* page 101 */
	  {
	  	if(i->i == 0)
	- 		bprint(i, "%X%X\tR%d+R%d", m, bratab[i->cond], i->rs2, i->rs1);
	+ 		bprint(i, "%T%T\tR%d+R%d", m, bratab[i->cond], i->rs2, i->rs1);
	  	else
	- 		bprint(i, "%X%X\t$%lux+R%d", m, bratab[i->cond], i->simm13, i->rs1);
	+ 		bprint(i, "%T%T\t$%ux+R%d", m, bratab[i->cond], i->simm13, i->rs1);
	  }
	  
	  static void
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:637,643 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:640,646
	  
	  	imm = i->immdisp22<<10;
	  	if(dascase){
	- 		bprint(i, "%X\t%lux, R%d", m, imm, i->rd);
	+ 		bprint(i, "%T\t%lux, R%d", m, imm, i->rd);
	  		return;
	  	}
	  	if(imm==0 && i->rd==0){
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:733,757 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:736,760
	  	if(i->i == 0){
	  		if(i->rs1 == i->rd)
	  			if(dascase)
	- 				bprint(i, "%X\tR%d, R%d", m, i->rs1, i->rs2);
	+ 				bprint(i, "%T\tR%d, R%d", m, i->rs1, i->rs2);
	  			else
	- 				bprint(i, "%X\tR%d, R%d", m, i->rs2, i->rs1);
	+ 				bprint(i, "%T\tR%d, R%d", m, i->rs2, i->rs1);
	  		else
	  			if(dascase)
	- 				bprint(i, "%X\tR%d, R%d, R%d", m, i->rs1, i->rs2, i->rd);
	+ 				bprint(i, "%T\tR%d, R%d, R%d", m, i->rs1, i->rs2, i->rd);
	  			else
	- 				bprint(i, "%X\tR%d, R%d, R%d", m, i->rs2, i->rs1, i->rd);
	+ 				bprint(i, "%T\tR%d, R%d, R%d", m, i->rs2, i->rs1, i->rd);
	  	}else{
	  		if(i->rs1 == i->rd)
	  			if(dascase)
	- 				bprint(i, "%X\t$%d,R%d", m, i->simm13&0x1F, i->rs1);
	+ 				bprint(i, "%T\t$%d,R%d", m, i->simm13&0x1F, i->rs1);
	  			else
	- 				bprint(i, "%X\tR%d, $%d", m,  i->rs1, i->simm13&0x1F);
	+ 				bprint(i, "%T\tR%d, $%d", m,  i->rs1, i->simm13&0x1F);
	  		else
	  			if(dascase)
	- 				bprint(i, "%X\tR%d, $%d, R%d",m,i->rs1,i->simm13&0x1F,i->rd);
	+ 				bprint(i, "%T\tR%d, $%d, R%d",m,i->rs1,i->simm13&0x1F,i->rd);
	  			else
	- 				bprint(i, "%X\t$%d, R%d, R%d",m,i->simm13&0x1F,i->rs1,i->rd);
	+ 				bprint(i, "%T\t$%d, R%d, R%d",m,i->simm13&0x1F,i->rs1,i->rd);
	  	}
	  }
	  
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:760,783 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:763,786
	  {
	  	if(i->i == 0){
	  		if(dascase)
	- 			bprint(i, "%X\tR%d, R%d", m, i->rs1, i->rs2);
	+ 			bprint(i, "%T\tR%d, R%d", m, i->rs1, i->rs2);
	  		else
	  			if(i->op3==2 && i->rs1==0 && i->rd)  /* OR R2, R0, R1 */
	  				bprint(i, "MOVW\tR%d", i->rs2);
	  			else
	- 				bprint(i, "%X\tR%d, R%d", m, i->rs2, i->rs1);
	+ 				bprint(i, "%T\tR%d, R%d", m, i->rs2, i->rs1);
	  	}else{
	  		if(dascase)
	- 			bprint(i, "%X\tR%d, $%lux", m, i->rs1, i->simm13);
	+ 			bprint(i, "%T\tR%d, $%ux", m, i->rs1, i->simm13);
	  		else
	  			if(i->op3==0 && i->rd && i->rs1==0)	/* ADD $x, R0, R1 */
	- 				bprint(i, "MOVW\t$%lux", i->simm13);
	+ 				bprint(i, "MOVW\t$%ux", i->simm13);
	  			else if(i->op3==0 && i->rd && i->rs1==2){
	  				/* ADD $x, R2, R1 -> MOVW $x(SB), R1 */
	  				bprint(i, "MOVW\t$");
	  				address(i);
	  			} else
	- 				bprint(i, "%X\t$%lux, R%d", m, i->simm13, i->rs1);
	+ 				bprint(i, "%T\t$%ux, R%d", m, i->simm13, i->rs1);
	  	}
	  	if(i->rs1 != i->rd)
	  		bprint(i, ", R%d", i->rd);
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:793,799 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:796,802
	  	if(i->i == 0)
	  		bprint(i, "CMP\tR%d, R%d", i->rs1, i->rs2);
	  	else
	- 		bprint(i, "CMP\tR%d, $%lux", i->rs1, i->simm13);
	+ 		bprint(i, "CMP\tR%d, $%ux", i->rs1, i->simm13);
	  }
	  
	  static char *regtab[4] = {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:810,816 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:813,819
	  		if(i->i == 0)
	  			bprint(i, "%s\tR%d, R%d", m, i->rs1, i->rs2);
	  		else
	- 			bprint(i, "%s\tR%d, $%lux", m, i->rs1, i->simm13);
	+ 			bprint(i, "%s\tR%d, $%ux", m, i->rs1, i->simm13);
	  	}else{
	  		if(i->i && i->simm13==0)
	  			bprint(i, "MOVW\tR%d", i->rs1);
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:817,823 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:820,826
	  		else if(i->i == 0)
	  			bprint(i, "wr\tR%d, R%d", i->rs2, i->rs1);
	  		else
	- 			bprint(i, "wr\t$%lux, R%d", i->simm13, i->rs1);
	+ 			bprint(i, "wr\t$%ux, R%d", i->simm13, i->rs1);
	  	}
	  	bprint(i, ", %s", regtab[i->op3&3]);
	  }
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:842,855 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:845,858
	  {
	  	if(i->i == 0){
	  		if(i->rd == 15)
	- 			bprint(i, "%X\t(R%d+R%d)", "CALL", i->rs2, i->rs1);
	+ 			bprint(i, "%T\t(R%d+R%d)", "CALL", i->rs2, i->rs1);
	  		else
	- 			bprint(i, "%X\t(R%d+R%d), R%d", m, i->rs2, i->rs1, i->rd);
	+ 			bprint(i, "%T\t(R%d+R%d), R%d", m, i->rs2, i->rs1, i->rd);
	  	}else{
	  		if(!dascase && i->simm13==8 && i->rs1==15 && i->rd==0)
	  			bprint(i, "RETURN");
	  		else{
	- 			bprint(i, "%X\t", m);
	+ 			bprint(i, "%T\t", m);
	  			address(i);
	  			bprint(i, ", R%d", i->rd);
	  		}
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/kdb.c:995,1009 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/kdb.c:998,1012
	  	}
	  	for(j=0; fptab1[j].name; j++)
	  		if(fptab1[j].opf == i->opf){
	- 			bprint(i, "%X\tF%d, F%d", fptab1[j].name, i->rs2, i->rd);
	+ 			bprint(i, "%T\tF%d, F%d", fptab1[j].name, i->rs2, i->rd);
	  			return;
	  		}
	  	for(j=0; fptab2[j].name; j++)
	  		if(fptab2[j].opf == i->opf){
	- 			bprint(i, "%X\tF%d, F%d, F%d", fptab2[j].name, i->rs1, i->rs2, i->rd);
	+ 			bprint(i, "%T\tF%d, F%d, F%d", fptab2[j].name, i->rs1, i->rs2, i->rd);
	  			return;
	  		}
	- 	bprint(i, "%X%ux\tF%d, F%d, F%d", m, i->opf, i->rs1, i->rs2, i->rd);
	+ 	bprint(i, "%T%ux\tF%d, F%d, F%d", m, i->opf, i->rs1, i->rs2, i->rd);
	  }
	  
	  static int
 [jmk] --rw-rw-r-- M 208448 glenda sys 27544 Jan  3 16:06 sys/src/libmach/qdb.c
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:157,162 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:157,164
	  #define	IBF(v,a,b) (((ulong)(v)>>(32-(b)-1)) & ~(~0L<<(((b)-(a)+1))))
	  #define	IB(v,b) IBF((v),(b),(b))
	  
	+ #pragma	varargck	argpos	bprint		2
	+ 
	  static void
	  bprint(Instr *i, char *fmt, ...)
	  {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:250,256 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:252,258
	  static int
	  plocal(Instr *i)
	  {
	- 	int offset;
	+ 	long offset;
	  	Symbol s;
	  
	  	if (!findsym(i->addr, CTEXT, &s) || !findlocal(&s, FRAMENAME, &s))
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:258,269 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:260,271
	  	offset = s.value - i->immediate;
	  	if (offset > 0) {
	  		if(getauto(&s, offset, CAUTO, &s)) {
	- 			bprint(i, "%s+%d(SP)", s.name, s.value);
	+ 			bprint(i, "%s+%lld(SP)", s.name, s.value);
	  			return 1;
	  		}
	  	} else {
	  		if (getauto(&s, -offset-4, CPARAM, &s)) {
	- 			bprint(i, "%s+%d(FP)", s.name, -offset);
	+ 			bprint(i, "%s+%ld(FP)", s.name, -offset);
	  			return 1;
	  		}
	  	}
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:289,301 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:291,303
	  		}
	  		bprint(i, "%s", s.name);
	  		if (s.value != off)
	- 			bprint(i, "+%lux", off-s.value);
	+ 			bprint(i, "+%llux", off-s.value);
	  		bprint(i, reg);
	  		return 1;
	  	}
	  	if(!anyoff)
	  		return 0;
	- 	bprint(i, "%lux%s", off, reg);
	+ 	bprint(i, "%llux%s", off, reg);
	  	return 1;
	  }
	  
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:307,313 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:309,315
	  	if (i->ra == REGSB && mach->sb && pglobal(i, mach->sb+i->immediate, 0, "(SB)") >= 0)
	  		return;
	  	if(i->simm < 0)
	- 		bprint(i, "-%lx(R%d)", -i->simm, i->ra);
	+ 		bprint(i, "-%x(R%d)", -i->simm, i->ra);
	  	else
	  		bprint(i, "%lux(R%d)", i->immediate, i->ra);
	  }
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:389,395 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:391,397
	  		address(i);
	  		bprint(i, ",R%d", i->rd);
	  	} else if(i->op==15 && v < 0) {
	- 		bprint(i, "SUB\t$%d,R%d", -v, i->ra);
	+ 		bprint(i, "SUB\t$%ld,R%d", -v, i->ra);
	  		if(i->rd != i->ra)
	  			bprint(i, ",R%d", i->rd);
	  	} else {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:1058,1074 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:1060,1076
	  
	  		case 'l':
	  			if(i->simm < 0)
	- 				bprint(i, "-%lx(R%d)", -i->simm, i->ra);
	+ 				bprint(i, "-%x(R%d)", -i->simm, i->ra);
	  			else
	- 				bprint(i, "%lx(R%d)", i->simm, i->ra);
	+ 				bprint(i, "%x(R%d)", i->simm, i->ra);
	  			break;
	  
	  		case 'i':
	- 			bprint(i, "$%ld", i->simm);
	+ 			bprint(i, "$%d", i->simm);
	  			break;
	  
	  		case 'I':
	- 			bprint(i, "$%lx", i->uimm);
	+ 			bprint(i, "$%ux", i->uimm);
	  			break;
	  
	  		case 'w':
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:1099,1109 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:1101,1111
	  			break;
	  
	  		case 'm':
	- 			bprint(i, "%lx", i->crm);
	+ 			bprint(i, "%ux", i->crm);
	  			break;
	  
	  		case 'M':
	- 			bprint(i, "%lx", i->fm);
	+ 			bprint(i, "%ux", i->fm);
	  			break;
	  
	  		case 'z':

	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:157,162 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:157,164
	  #define	IBF(v,a,b) (((ulong)(v)>>(32-(b)-1)) & ~(~0L<<(((b)-(a)+1))))
	  #define	IB(v,b) IBF((v),(b),(b))
	  
	+ #pragma	varargck	argpos	bprint		2
	+ 
	  static void
	  bprint(Instr *i, char *fmt, ...)
	  {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:250,256 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:252,258
	  static int
	  plocal(Instr *i)
	  {
	- 	int offset;
	+ 	long offset;
	  	Symbol s;
	  
	  	if (!findsym(i->addr, CTEXT, &s) || !findlocal(&s, FRAMENAME, &s))
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:258,269 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:260,271
	  	offset = s.value - i->immediate;
	  	if (offset > 0) {
	  		if(getauto(&s, offset, CAUTO, &s)) {
	- 			bprint(i, "%s+%d(SP)", s.name, s.value);
	+ 			bprint(i, "%s+%lld(SP)", s.name, s.value);
	  			return 1;
	  		}
	  	} else {
	  		if (getauto(&s, -offset-4, CPARAM, &s)) {
	- 			bprint(i, "%s+%d(FP)", s.name, -offset);
	+ 			bprint(i, "%s+%ld(FP)", s.name, -offset);
	  			return 1;
	  		}
	  	}
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:289,301 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:291,303
	  		}
	  		bprint(i, "%s", s.name);
	  		if (s.value != off)
	- 			bprint(i, "+%lux", off-s.value);
	+ 			bprint(i, "+%llux", off-s.value);
	  		bprint(i, reg);
	  		return 1;
	  	}
	  	if(!anyoff)
	  		return 0;
	- 	bprint(i, "%lux%s", off, reg);
	+ 	bprint(i, "%llux%s", off, reg);
	  	return 1;
	  }
	  
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:307,313 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:309,315
	  	if (i->ra == REGSB && mach->sb && pglobal(i, mach->sb+i->immediate, 0, "(SB)") >= 0)
	  		return;
	  	if(i->simm < 0)
	- 		bprint(i, "-%lx(R%d)", -i->simm, i->ra);
	+ 		bprint(i, "-%x(R%d)", -i->simm, i->ra);
	  	else
	  		bprint(i, "%lux(R%d)", i->immediate, i->ra);
	  }
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:389,395 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:391,397
	  		address(i);
	  		bprint(i, ",R%d", i->rd);
	  	} else if(i->op==15 && v < 0) {
	- 		bprint(i, "SUB\t$%d,R%d", -v, i->ra);
	+ 		bprint(i, "SUB\t$%ld,R%d", -v, i->ra);
	  		if(i->rd != i->ra)
	  			bprint(i, ",R%d", i->rd);
	  	} else {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:1058,1074 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:1060,1076
	  
	  		case 'l':
	  			if(i->simm < 0)
	- 				bprint(i, "-%lx(R%d)", -i->simm, i->ra);
	+ 				bprint(i, "-%x(R%d)", -i->simm, i->ra);
	  			else
	- 				bprint(i, "%lx(R%d)", i->simm, i->ra);
	+ 				bprint(i, "%x(R%d)", i->simm, i->ra);
	  			break;
	  
	  		case 'i':
	- 			bprint(i, "$%ld", i->simm);
	+ 			bprint(i, "$%d", i->simm);
	  			break;
	  
	  		case 'I':
	- 			bprint(i, "$%lx", i->uimm);
	+ 			bprint(i, "$%ux", i->uimm);
	  			break;
	  
	  		case 'w':
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/qdb.c:1099,1109 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/qdb.c:1101,1111
	  			break;
	  
	  		case 'm':
	- 			bprint(i, "%lx", i->crm);
	+ 			bprint(i, "%ux", i->crm);
	  			break;
	  
	  		case 'M':
	- 			bprint(i, "%lx", i->fm);
	+ 			bprint(i, "%ux", i->fm);
	  			break;
	  
	  		case 'z':
 [jmk] --rw-rw-r-- M 208448 jmk sys 21967 Jan  3 16:06 sys/src/libmach/udb.c
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:304,309 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:304,329
	  	[0x1F]	"swapa",	loada,	0,
	  };
	  
	+ #pragma	varargck	argpos	bprint	2
	+ #pragma	varargck	type	"T"	char*
	+ 
	+ /* convert to lower case from upper, according to dascase */
	+ static int
	+ Tfmt(Fmt *f)
	+ {
	+ 	char buf[128];
	+ 	char *s, *t, *oa;
	+ 
	+ 	oa = va_arg(f->args, char*);
	+ 	if(dascase){
	+ 		for(s=oa,t=buf; *t = *s; s++,t++)
	+ 			if('A'<=*t && *t<='Z')
	+ 				*t += 'a'-'A';
	+ 		return fmtstrcpy(f, buf);
	+ 	}
	+ 	return fmtstrcpy(f, oa);
	+ }
	+ 
	  static void
	  bprint(Instr *i, char *fmt, ...)
	  {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:402,408 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:422,428
	  		break;
	  
	  	case 1:
	- 		bprint(&instr, "%X", "CALL\t");
	+ 		bprint(&instr, "CALL\t");
	  		instr.curr += symoff(instr.curr, instr.end-instr.curr,
	  					pc+instr.disp30*4, CTEXT);
	  		if (!dascase)
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:433,456 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:453,459
	  	return instr.size*4;
	  }
	  
	- /* convert to lower case from upper, according to dascase */
	  static int
	- Xfmt(Fmt *f)
	- {
	- 	char buf[128];
	- 	char *s, *t, *oa;
	- 
	- 	oa = va_arg(f->args, char*);
	- 	if(dascase){
	- 		for(s=oa,t=buf; *t = *s; s++,t++)
	- 			if('A'<=*t && *t<='Z')
	- 				*t += 'a'-'A';
	- 		return fmtstrcpy(f, buf);
	- 	}
	- 	return fmtstrcpy(f, oa);
	- }
	- 
	- static int
	  sparc64inst(Map *map, uvlong pc, char modifier, char *buf, int n)
	  {
	  	static int fmtinstalled = 0;
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:458,464 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:461,467
	  		/* a modifier of 'I' toggles the dissassembler type */
	  	if (!fmtinstalled) {
	  		fmtinstalled = 1;
	- 		fmtinstall('X', Xfmt);
	+ 		fmtinstall('T', Tfmt);
	  	}
	  	if ((asstype == ASUNSPARC && modifier == 'i')
	  		|| (asstype == ASPARC && modifier == 'I'))
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:503,509 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:506,512
	  static int
	  plocal(Instr *i)
	  {
	- 	int offset;
	+ 	long offset;
	  	Symbol s;
	  
	  	if (!findsym(i->addr, CTEXT, &s) || !findlocal(&s, FRAMENAME, &s))
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:510,522 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:513,525
	  		return -1;
	  	if (s.value > i->simm13) {
	  		if(getauto(&s, s.value-i->simm13, CAUTO, &s)) {
	- 			bprint(i, "%s+%d(SP)", s.name, s.value);
	+ 			bprint(i, "%s+%lld(SP)", s.name, s.value);
	  			return 1;
	  		}
	  	} else {
	  		offset = i->simm13-s.value;
	  		if (getauto(&s, offset-4, CPARAM, &s)) {
	- 			bprint(i, "%s+%d(FP)", s.name, offset);
	+ 			bprint(i, "%s+%ld(FP)", s.name, offset);
	  			return 1;
	  		}
	  	}
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:545,561 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:548,564
	  		}
	  		bprint(i, "%s", s.name);
	  		if (s.value != off)
	- 			bprint(i, "+%lux", s.value-off);
	+ 			bprint(i, "+%llux", s.value-off);
	  		bprint(i, "(SB)");
	  		return;
	  	}
	- 	bprint(i, "%lux(R%d)", i->simm13, i->rs1);
	+ 	bprint(i, "%ux(R%d)", i->simm13, i->rs1);
	  }
	  
	  static void
	  unimp(Instr *i, char *m)
	  {
	- 	bprint(i, "%X", m);
	+ 	bprint(i, "%T", m);
	  }
	  
	  static char	*bratab[16] = {		/* page 91 */
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:622,630 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:625,633
	  
	  	imm = i->simmdisp22;
	  	if(i->a)
	- 		bprint(i, "%X%X.%c\t", m, tab[i->cond], 'A'+dascase);
	+ 		bprint(i, "%T%T.%c\t", m, tab[i->cond], 'A'+dascase);
	  	else
	- 		bprint(i, "%X%X\t", m, tab[i->cond]);
	+ 		bprint(i, "%T%T\t", m, tab[i->cond]);
	  	i->curr += symoff(i->curr, i->end-i->curr, i->addr+4*imm, CTEXT);
	  	if (!dascase)
	  		bprint(i, "(SB)");
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:652,660 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:655,663
	  trap(Instr *i, char *m)			/* page 101 */
	  {
	  	if(i->i == 0)
	- 		bprint(i, "%X%X\tR%d+R%d", m, bratab[i->cond], i->rs2, i->rs1);
	+ 		bprint(i, "%T%T\tR%d+R%d", m, bratab[i->cond], i->rs2, i->rs1);
	  	else
	- 		bprint(i, "%X%X\t$%lux+R%d", m, bratab[i->cond], i->simm13, i->rs1);
	+ 		bprint(i, "%T%T\t$%ux+R%d", m, bratab[i->cond], i->simm13, i->rs1);
	  }
	  
	  static void
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:664,670 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:667,673
	  
	  	imm = i->immdisp22<<10;
	  	if(dascase){
	- 		bprint(i, "%X\t%lux, R%d", m, imm, i->rd);
	+ 		bprint(i, "%T\t%lux, R%d", m, imm, i->rd);
	  		return;
	  	}
	  	if(imm==0 && i->rd==0){
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:760,784 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:763,787
	  	if(i->i == 0){
	  		if(i->rs1 == i->rd)
	  			if(dascase)
	- 				bprint(i, "%X\tR%d, R%d", m, i->rs1, i->rs2);
	+ 				bprint(i, "%T\tR%d, R%d", m, i->rs1, i->rs2);
	  			else
	- 				bprint(i, "%X\tR%d, R%d", m, i->rs2, i->rs1);
	+ 				bprint(i, "%T\tR%d, R%d", m, i->rs2, i->rs1);
	  		else
	  			if(dascase)
	- 				bprint(i, "%X\tR%d, R%d, R%d", m, i->rs1, i->rs2, i->rd);
	+ 				bprint(i, "%T\tR%d, R%d, R%d", m, i->rs1, i->rs2, i->rd);
	  			else
	- 				bprint(i, "%X\tR%d, R%d, R%d", m, i->rs2, i->rs1, i->rd);
	+ 				bprint(i, "%T\tR%d, R%d, R%d", m, i->rs2, i->rs1, i->rd);
	  	}else{
	  		if(i->rs1 == i->rd)
	  			if(dascase)
	- 				bprint(i, "%X\t$%d,R%d", m, i->simm13&0x1F, i->rs1);
	+ 				bprint(i, "%T\t$%d,R%d", m, i->simm13&0x1F, i->rs1);
	  			else
	- 				bprint(i, "%X\tR%d, $%d", m,  i->rs1, i->simm13&0x1F);
	+ 				bprint(i, "%T\tR%d, $%d", m,  i->rs1, i->simm13&0x1F);
	  		else
	  			if(dascase)
	- 				bprint(i, "%X\tR%d, $%d, R%d",m,i->rs1,i->simm13&0x1F,i->rd);
	+ 				bprint(i, "%T\tR%d, $%d, R%d",m,i->rs1,i->simm13&0x1F,i->rd);
	  			else
	- 				bprint(i, "%X\t$%d, R%d, R%d",m,i->simm13&0x1F,i->rs1,i->rd);
	+ 				bprint(i, "%T\t$%d, R%d, R%d",m,i->simm13&0x1F,i->rs1,i->rd);
	  	}
	  }
	  
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:787,810 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:790,813
	  {
	  	if(i->i == 0){
	  		if(dascase)
	- 			bprint(i, "%X\tR%d, R%d", m, i->rs1, i->rs2);
	+ 			bprint(i, "%T\tR%d, R%d", m, i->rs1, i->rs2);
	  		else
	  			if(i->op3==2 && i->rs1==0 && i->rd)  /* OR R2, R0, R1 */
	  				bprint(i, "MOVW\tR%d", i->rs2);
	  			else
	- 				bprint(i, "%X\tR%d, R%d", m, i->rs2, i->rs1);
	+ 				bprint(i, "%T\tR%d, R%d", m, i->rs2, i->rs1);
	  	}else{
	  		if(dascase)
	- 			bprint(i, "%X\tR%d, $%lux", m, i->rs1, i->simm13);
	+ 			bprint(i, "%T\tR%d, $%ux", m, i->rs1, i->simm13);
	  		else
	  			if(i->op3==0 && i->rd && i->rs1==0)	/* ADD $x, R0, R1 */
	- 				bprint(i, "MOVW\t$%lux", i->simm13);
	+ 				bprint(i, "MOVW\t$%ux", i->simm13);
	  			else if(i->op3==0 && i->rd && i->rs1==2){
	  				/* ADD $x, R2, R1 -> MOVW $x(SB), R1 */
	  				bprint(i, "MOVW\t$");
	  				address(i);
	  			} else
	- 				bprint(i, "%X\t$%lux, R%d", m, i->simm13, i->rs1);
	+ 				bprint(i, "%T\t$%ux, R%d", m, i->simm13, i->rs1);
	  	}
	  	if(i->rs1 != i->rd)
	  		bprint(i, ", R%d", i->rd);
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:820,826 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:823,829
	  	if(i->i == 0)
	  		bprint(i, "CMP\tR%d, R%d", i->rs1, i->rs2);
	  	else
	- 		bprint(i, "CMP\tR%d, $%lux", i->rs1, i->simm13);
	+ 		bprint(i, "CMP\tR%d, $%ux", i->rs1, i->simm13);
	  }
	  
	  static char *regtab[4] = {
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:837,843 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:840,846
	  		if(i->i == 0)
	  			bprint(i, "%s\tR%d, R%d", m, i->rs1, i->rs2);
	  		else
	- 			bprint(i, "%s\tR%d, $%lux", m, i->rs1, i->simm13);
	+ 			bprint(i, "%s\tR%d, $%ux", m, i->rs1, i->simm13);
	  	}else{
	  		if(i->i && i->simm13==0)
	  			bprint(i, "MOVW\tR%d", i->rs1);
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:844,850 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:847,853
	  		else if(i->i == 0)
	  			bprint(i, "wr\tR%d, R%d", i->rs2, i->rs1);
	  		else
	- 			bprint(i, "wr\t$%lux, R%d", i->simm13, i->rs1);
	+ 			bprint(i, "wr\t$%ux, R%d", i->simm13, i->rs1);
	  	}
	  	bprint(i, ", %s", regtab[i->op3&3]);
	  }
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:869,882 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:872,885
	  {
	  	if(i->i == 0){
	  		if(i->rd == 15)
	- 			bprint(i, "%X\t(R%d+R%d)", "CALL", i->rs2, i->rs1);
	+ 			bprint(i, "%T\t(R%d+R%d)", "CALL", i->rs2, i->rs1);
	  		else
	- 			bprint(i, "%X\t(R%d+R%d), R%d", m, i->rs2, i->rs1, i->rd);
	+ 			bprint(i, "%T\t(R%d+R%d), R%d", m, i->rs2, i->rs1, i->rd);
	  	}else{
	  		if(!dascase && i->simm13==8 && i->rs1==15 && i->rd==0)
	  			bprint(i, "RETURN");
	  		else{
	- 			bprint(i, "%X\t", m);
	+ 			bprint(i, "%T\t", m);
	  			address(i);
	  			bprint(i, ", R%d", i->rd);
	  		}
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/udb.c:1022,1036 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/udb.c:1025,1039
	  	}
	  	for(j=0; fptab1[j].name; j++)
	  		if(fptab1[j].opf == i->opf){
	- 			bprint(i, "%X\tF%d, F%d", fptab1[j].name, i->rs2, i->rd);
	+ 			bprint(i, "%T\tF%d, F%d", fptab1[j].name, i->rs2, i->rd);
	  			return;
	  		}
	  	for(j=0; fptab2[j].name; j++)
	  		if(fptab2[j].opf == i->opf){
	- 			bprint(i, "%X\tF%d, F%d, F%d", fptab2[j].name, i->rs1, i->rs2, i->rd);
	+ 			bprint(i, "%T\tF%d, F%d, F%d", fptab2[j].name, i->rs1, i->rs2, i->rd);
	  			return;
	  		}
	- 	bprint(i, "%X%ux\tF%d, F%d, F%d", m, i->opf, i->rs1, i->rs2, i->rd);
	+ 	bprint(i, "%T%ux\tF%d, F%d, F%d", m, i->opf, i->rs1, i->rs2, i->rd);
	  }
	  
	  static int
 [jmk] --rw-rw-r-- M 208448 glenda sys 10293 Jan  3 18:02 sys/src/libmach/vcodas.c
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/vcodas.c:306,311 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/vcodas.c:306,313
	  	return 1;
	  }
	  
	+ #pragma	varargck	argpos	bprint		2
	+ 
	  static void
	  bprint(Instr *i, char *fmt, ...)
	  {
 [jmk] --rw-rw-r-- M 208448 glenda sys 22299 Jan  3 18:02 sys/src/libmach/vdb.c
	/n/sourcesdump/2006/0103/plan9/sys/src/libmach/vdb.c:224,229 - 
	/n/sourcesdump/2006/0104/plan9/sys/src/libmach/vdb.c:224,231
	  	return 1;
	  }
	  
	+ #pragma	varargck	argpos	bprint		2
	+ 
	  static void
	  bprint(Instr *i, char *fmt, ...)
	  {


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.