Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/sandpoint/stand/altboot - add "ll" modifier to printf.
details: https://anonhg.NetBSD.org/src/rev/9259bebffd14
branches: trunk
changeset: 761292:9259bebffd14
user: nisimura <nisimura%NetBSD.org@localhost>
date: Sun Jan 23 01:32:08 2011 +0000
description:
- add "ll" modifier to printf.
- be more conscious about int type propagation.
- add missing version and newvers.sh
diffstat:
sys/arch/sandpoint/stand/altboot/dsk.c | 23 +++---
sys/arch/sandpoint/stand/altboot/globals.h | 4 +-
sys/arch/sandpoint/stand/altboot/newvers.sh | 16 ++++
sys/arch/sandpoint/stand/altboot/printf.c | 93 ++++++++++++++++------------
sys/arch/sandpoint/stand/altboot/version | 7 ++
5 files changed, 88 insertions(+), 55 deletions(-)
diffs (294 lines):
diff -r fb1a476f0bd2 -r 9259bebffd14 sys/arch/sandpoint/stand/altboot/dsk.c
--- a/sys/arch/sandpoint/stand/altboot/dsk.c Sun Jan 23 01:05:29 2011 +0000
+++ b/sys/arch/sandpoint/stand/altboot/dsk.c Sun Jan 23 01:32:08 2011 +0000
@@ -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;
diff -r fb1a476f0bd2 -r 9259bebffd14 sys/arch/sandpoint/stand/altboot/globals.h
--- a/sys/arch/sandpoint/stand/altboot/globals.h Sun Jan 23 01:05:29 2011 +0000
+++ b/sys/arch/sandpoint/stand/altboot/globals.h Sun Jan 23 01:32:08 2011 +0000
@@ -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 **);
diff -r fb1a476f0bd2 -r 9259bebffd14 sys/arch/sandpoint/stand/altboot/newvers.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/sandpoint/stand/altboot/newvers.sh Sun Jan 23 01:32:08 2011 +0000
@@ -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
diff -r fb1a476f0bd2 -r 9259bebffd14 sys/arch/sandpoint/stand/altboot/printf.c
--- a/sys/arch/sandpoint/stand/altboot/printf.c Sun Jan 23 01:05:29 2011 +0000
+++ b/sys/arch/sandpoint/stand/altboot/printf.c Sun Jan 23 01:32:08 2011 +0000
@@ -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
diff -r fb1a476f0bd2 -r 9259bebffd14 sys/arch/sandpoint/stand/altboot/version
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/sandpoint/stand/altboot/version Sun Jan 23 01:32:08 2011 +0000
@@ -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.
Home |
Main Index |
Thread Index |
Old Index