Module Name:    src
Committed By:   nisimura
Date:           Sun Jan 23 01:32:08 UTC 2011

Modified Files:
        src/sys/arch/sandpoint/stand/altboot: dsk.c globals.h printf.c
Added Files:
        src/sys/arch/sandpoint/stand/altboot: newvers.sh version

Log Message:
- add "ll" modifier to printf.
- be more conscious about int type propagation.
- add missing version and newvers.sh


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/sandpoint/stand/altboot/dsk.c \
    src/sys/arch/sandpoint/stand/altboot/globals.h \
    src/sys/arch/sandpoint/stand/altboot/printf.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/sandpoint/stand/altboot/newvers.sh \
    src/sys/arch/sandpoint/stand/altboot/version

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/sandpoint/stand/altboot/dsk.c
diff -u src/sys/arch/sandpoint/stand/altboot/dsk.c:1.1 src/sys/arch/sandpoint/stand/altboot/dsk.c:1.2
--- src/sys/arch/sandpoint/stand/altboot/dsk.c:1.1	Sun Jan 23 01:05:30 2011
+++ src/sys/arch/sandpoint/stand/altboot/dsk.c	Sun Jan 23 01:32:08 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: dsk.c,v 1.1 2011/01/23 01:05:30 nisimura Exp $ */
+/* $NetBSD: dsk.c,v 1.2 2011/01/23 01:32:08 nisimura Exp $ */
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -82,9 +82,9 @@
 static char *mkident(char *, int);
 static void set_xfermode(struct dkdev_ata *, int);
 static void decode_dlabel(struct disk *, char *);
-static int lba_read(struct disk *, uint64_t, uint32_t, void *);
-static void issue48(struct dvata_chan *, uint64_t, uint32_t);
-static void issue28(struct dvata_chan *, uint64_t, uint32_t);
+static int lba_read(struct disk *, int64_t, int, void *);
+static void issue48(struct dvata_chan *, int64_t, int);
+static void issue28(struct dvata_chan *, int64_t, int);
 static struct disk *lookup_disk(int);
 
 static struct disk ldisk[4];
@@ -368,11 +368,11 @@
 }
 
 static int
-lba_read(struct disk *d, uint64_t bno, uint32_t bcnt, void *buf)
+lba_read(struct disk *d, int64_t bno, int bcnt, void *buf)
 {
 	struct dkdev_ata *l;
 	struct dvata_chan *chan;
-	void (*issue)(struct dvata_chan *, uint64_t, uint32_t);
+	void (*issue)(struct dvata_chan *, int64_t, int);
 	int n, rdcnt, i, k;
 	uint16_t *p;
 	const char *err;
@@ -389,8 +389,7 @@
 		(*issue)(chan, bno, rdcnt);
 		for (k = 0; k < rdcnt; k++) {
 			if (spinwait_unbusy(l, n, 1000, &err) == 0) {
-				printf("%s blk %d %s\n",
-				   d->xname, (int)bno, err);
+				printf("%s blk %lld %s\n", d->xname, bno, err);
 				error = EIO;
 				break;
 			}
@@ -406,7 +405,7 @@
 }
 
 static void
-issue48(struct dvata_chan *chan, uint64_t bno, uint32_t nblk)
+issue48(struct dvata_chan *chan, int64_t bno, int nblk)
 {
 
 	CSR_WRITE_1(chan->cmd + _NSECT, 0); /* always less than 256 */
@@ -422,7 +421,7 @@
 }
 
 static void
-issue28(struct dvata_chan *chan, uint64_t bno, uint32_t nblk)
+issue28(struct dvata_chan *chan, int64_t bno, int nblk)
 {
 
 	CSR_WRITE_1(chan->cmd + _NSECT, nblk);
@@ -511,10 +510,10 @@
 {
 	struct disk *d = devdata;
 	struct disklabel *dlp;
-	uint64_t bno;
+	int64_t bno;
 
 #if 0
-printf("%s %d %d\n", d->xname, (int)dblk, size);
+printf("%s %lld %d\n", d->xname, dblk, size);
 #endif
 	if (size == 0)
 		return 0;
Index: src/sys/arch/sandpoint/stand/altboot/globals.h
diff -u src/sys/arch/sandpoint/stand/altboot/globals.h:1.1 src/sys/arch/sandpoint/stand/altboot/globals.h:1.2
--- src/sys/arch/sandpoint/stand/altboot/globals.h:1.1	Sun Jan 23 01:05:30 2011
+++ src/sys/arch/sandpoint/stand/altboot/globals.h	Sun Jan 23 01:32:08 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: globals.h,v 1.1 2011/01/23 01:05:30 nisimura Exp $ */
+/* $NetBSD: globals.h,v 1.2 2011/01/23 01:32:08 nisimura Exp $ */
 
 /* clock feed */
 #ifndef EXT_CLK_FREQ
@@ -186,7 +186,7 @@
 	void *dlabel;
 	int part;
 	void *fsops;
-	int (*lba_read)(struct disk *, uint64_t, uint32_t, void *);
+	int (*lba_read)(struct disk *, int64_t, int, void *);
 };
 
 int spinwait_unbusy(struct dkdev_ata *, int, int, const char **);
Index: src/sys/arch/sandpoint/stand/altboot/printf.c
diff -u src/sys/arch/sandpoint/stand/altboot/printf.c:1.1 src/sys/arch/sandpoint/stand/altboot/printf.c:1.2
--- src/sys/arch/sandpoint/stand/altboot/printf.c:1.1	Sun Jan 23 01:05:30 2011
+++ src/sys/arch/sandpoint/stand/altboot/printf.c	Sun Jan 23 01:32:08 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: printf.c,v 1.1 2011/01/23 01:05:30 nisimura Exp $ */
+/* $NetBSD: printf.c,v 1.2 2011/01/23 01:32:08 nisimura Exp $ */
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -40,7 +40,7 @@
 #define MAXSTR	80
 
 static int _doprnt(void (*)(int), const char *, va_list);
-static void pr_int(unsigned long, int, char *);
+static void mkdigit(unsigned long long, int, char *);
 static void sputchar(int);
 
 static char *sbuf, *ebuf;
@@ -89,22 +89,14 @@
 }
 
 static int
-_doprnt(func, fmt, ap)
-	void (*func)(int);	/* Function to put a character */
-	const char *fmt;	/* Format string for pr_int/pr_float */
-	va_list ap;		/* Arguments to pr_int/pr_float */
+_doprnt(void (*func)(int), const char *fmt, va_list ap)
 {
-	int i;
-	char *str;
-	char string[20];
-	int length;
-	int leftjust;
-	int longflag;
-	int fmax, fmin;
-	int leading;
-	int outcnt;
-	char fill;
-	char sign;
+	int i, outcnt;
+	char buf[23], *str; /* requires 23 digits in octal at most */
+	int length, fmax, fmin, leading;
+	int leftjust, llflag;
+	char fill, sign;
+	long long v;
 
 	outcnt = 0;
 	while ((i = *fmt++) != '\0') {
@@ -141,15 +133,17 @@
 					fmax = fmax * 10 + *fmt++ - '0';
 			}
 		}
-		longflag = (*fmt == 'l');
-		if (longflag)
-			fmt++;
+		llflag = 0;
+		if (*fmt == 'l' && *++fmt == 'l') {
+			llflag = 1;
+			fmt += 1;
+		}
 		if ((i = *fmt++) == '\0') {
 			(*func)('%');
 			outcnt += 1;
 			break;
 		}
-		str = string;
+		str = buf;
 		sign = ' ';
 		switch (i) {
 		case 'c':
@@ -165,36 +159,52 @@
 			break;
 
 		case 'd':
-		      {
-			long l = va_arg(ap, long);
-			if (l < 0) { sign = '-' ; l = -l; }
-			pr_int((unsigned long)l, 10, str);
-		      }
+			if (llflag)
+				v = va_arg(ap, long long);
+			else
+				v = va_arg(ap, int);
+			if (v < 0) {
+				sign = '-' ; v = -v;
+			}
+			mkdigit((unsigned long long)v, 10, str);
 			break;
 
 		case 'u':
-			pr_int(va_arg(ap, unsigned long), 10, str);
+			if (llflag)
+				v = va_arg(ap, long long);
+			else
+				v = va_arg(ap, int);
+			mkdigit((unsigned long long)v, 10, str);
 			break;
 
 		case 'o':
-			pr_int(va_arg(ap, unsigned long), 8, str);
+			if (llflag)
+				v = va_arg(ap, long long);
+			else
+				v = va_arg(ap, int);
+			mkdigit((unsigned long long)v, 8, str);
 			fmax = 0;
 			break;
 
 		case 'X':
 		case 'x':
-			pr_int(va_arg(ap, unsigned long), 16, str);
+			if (llflag)
+				v = va_arg(ap, long long);
+			else
+				v = va_arg(ap, int);
+			mkdigit((unsigned long long)v, 16, str);
 			fmax = 0;
 			break;
 
 		case 'p':
-			pr_int(va_arg(ap, unsigned long), 16, str);
+			mkdigit(va_arg(ap, unsigned int), 16, str);
 			fill = '0';
 			fmin = 8;
 			fmax = 0;
 			(*func)('0'); (*func)('x');
 			outcnt += 2;
 			break;
+
 		default:
 			(*func)(i);
 			break;
@@ -232,23 +242,24 @@
 	return outcnt;
 }
 
-static void pr_int(lval, base, s)
-	unsigned long lval;
-	int base;
-	char *s;
+
+static void
+mkdigit(unsigned long long llval, int base, char *s)
 {
-	char ptmp[12];	/* unsigned long requires 11 digit in octal form */
-	int i;
-	char *t = ptmp;
+	char ptmp[23], *t;	/* requires 22 digit in octal at most */
+	int n;
 	static const char hexdigit[] = "0123456789abcdef";
 
-	i = 1;
+	n = 1;
+	t = ptmp;
 	*t++ = '\0';
 	do {
-		*t++ = hexdigit[lval % base];
-	} while ((lval /= base) != 0 && ++i < sizeof(ptmp));
+		int d = (int)llval % base;
+		*t++ = hexdigit[d];
+		llval /= base;
+	} while (llval != 0 && ++n < sizeof(ptmp));
 	while ((*s++ = *--t) != '\0')
-		;
+		/* copy reserved digits */ ;
 }
 
 static void

Added files:

Index: src/sys/arch/sandpoint/stand/altboot/newvers.sh
diff -u /dev/null src/sys/arch/sandpoint/stand/altboot/newvers.sh:1.1
--- /dev/null	Sun Jan 23 01:32:08 2011
+++ src/sys/arch/sandpoint/stand/altboot/newvers.sh	Sun Jan 23 01:32:08 2011
@@ -0,0 +1,16 @@
+#
+# Usage: newvers.sh <historyrecord>
+#
+while read vers comment
+do
+	version=$vers
+done < $1
+developer=${USER:-"releng"}
+[ -f /bin/hostname ] && buildhost=@`/bin/hostname`
+date=`date`
+
+cat <<EoF >vers.c
+const char bootprog_rev[] = "$version";
+const char bootprog_date[] = "$date";
+const char bootprog_maker[] = "$developer$buildhost";
+EoF
Index: src/sys/arch/sandpoint/stand/altboot/version
diff -u /dev/null src/sys/arch/sandpoint/stand/altboot/version:1.1
--- /dev/null	Sun Jan 23 01:32:08 2011
+++ src/sys/arch/sandpoint/stand/altboot/version	Sun Jan 23 01:32:08 2011
@@ -0,0 +1,7 @@
+1.0	initial version
+1.1	PCI autoconf for multiple NIC device drivers
+1.2	Synology-DS support, Marvell-Yukon driver, fixed aligned alloc
+1.3	allow to have boot options, brdsetup.c cleanup to make brdtype
+	maintainance more confortable
+1.4	load kernels from local disk
+1.5	altboot is the new name as this is capable of handling net & dsk.

Reply via email to