Date: Wed, 3 Sep 2008 18:32:18 GMT From: Julian Elischer <julian@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 149139 for review Message-ID: <200809031832.m83IWIZ3092010@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=149139 Change 149139 by julian@julian_trafmon1 on 2008/09/03 18:31:55 Loop back ng_pipe and a few nits. @149137 Affected files ... .. //depot/projects/vimage-commit2/src/sys/boot/common/dev_net.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/boot/common/devopen.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/boot/powerpc/uboot/start.S#2 integrate .. //depot/projects/vimage-commit2/src/sys/boot/uboot/common/main.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/boot/uboot/lib/glue.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/boot/uboot/lib/glue.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/conf/files.sun4v#2 integrate .. //depot/projects/vimage-commit2/src/sys/netgraph/ng_pipe.c#1 branch .. //depot/projects/vimage-commit2/src/sys/netgraph/ng_pipe.h#1 branch .. //depot/projects/vimage-commit2/src/sys/netinet/ip_fw2.c#17 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/include/clock.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/include/cpufunc.h#4 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/include/pcpu.h#5 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/include/smp.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/include/tick.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/include/ver.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/clock.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/genassym.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/locore.S#4 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/machdep.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/mp_locore.S#3 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/mp_machdep.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/tick.c#3 integrate Differences ... ==== //depot/projects/vimage-commit2/src/sys/boot/common/dev_net.c#4 (text+ko) ==== @@ -1,4 +1,4 @@ -/* +/* * $NetBSD: dev_net.c,v 1.12 1997/12/10 20:38:37 gwr Exp $ */ @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/common/dev_net.c,v 1.16 2008/03/12 16:01:33 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/common/dev_net.c,v 1.17 2008/09/03 17:41:44 raj Exp $"); /*- * This module implements a "raw device" interface suitable for @@ -90,20 +90,21 @@ static int net_getparams(int sock); struct devsw netdev = { - "net", - DEVT_NET, - net_init, - net_strategy, - net_open, - net_close, - noioctl, - net_print + "net", + DEVT_NET, + net_init, + net_strategy, + net_open, + net_close, + noioctl, + net_print }; int net_init(void) { - return 0; + + return (0); } /* @@ -114,75 +115,74 @@ int net_open(struct open_file *f, ...) { - va_list args; - char *devname; /* Device part of file name (or NULL). */ - int error = 0; + va_list args; + char *devname; /* Device part of file name (or NULL). */ + int error = 0; - va_start(args, f); - devname = va_arg(args, char*); - va_end(args); + va_start(args, f); + devname = va_arg(args, char*); + va_end(args); - /* On first open, do netif open, mount, etc. */ - if (netdev_opens == 0) { - /* Find network interface. */ - if (netdev_sock < 0) { - netdev_sock = netif_open(devname); - if (netdev_sock < 0) { - printf("net_open: netif_open() failed\n"); - return (ENXIO); - } - if (debug) - printf("net_open: netif_open() succeeded\n"); - } - if (rootip.s_addr == 0) { - /* Get root IP address, and path, etc. */ - error = net_getparams(netdev_sock); - if (error) { + /* On first open, do netif open, mount, etc. */ + if (netdev_opens == 0) { + /* Find network interface. */ + if (netdev_sock < 0) { + netdev_sock = netif_open(devname); + if (netdev_sock < 0) { + printf("net_open: netif_open() failed\n"); + return (ENXIO); + } + if (debug) + printf("net_open: netif_open() succeeded\n"); + } + if (rootip.s_addr == 0) { + /* Get root IP address, and path, etc. */ + error = net_getparams(netdev_sock); + if (error) { /* getparams makes its own noise */ - netif_close(netdev_sock); - netdev_sock = -1; - return (error); - } + netif_close(netdev_sock); + netdev_sock = -1; + return (error); + } + } } - } - netdev_opens++; - f->f_devdata = &netdev_sock; - return (error); + netdev_opens++; + f->f_devdata = &netdev_sock; + return (error); } int -net_close(f) - struct open_file *f; +net_close(struct open_file *f) { - #ifdef NETIF_DEBUG - if (debug) - printf("net_close: opens=%d\n", netdev_opens); + if (debug) + printf("net_close: opens=%d\n", netdev_opens); #endif - /* On last close, do netif close, etc. */ - f->f_devdata = NULL; - /* Extra close call? */ - if (netdev_opens <= 0) + /* On last close, do netif close, etc. */ + f->f_devdata = NULL; + /* Extra close call? */ + if (netdev_opens <= 0) + return (0); + netdev_opens--; + /* Not last close? */ + if (netdev_opens > 0) + return(0); + rootip.s_addr = 0; + if (netdev_sock >= 0) { + if (debug) + printf("net_close: calling netif_close()\n"); + netif_close(netdev_sock); + netdev_sock = -1; + } return (0); - netdev_opens--; - /* Not last close? */ - if (netdev_opens > 0) - return(0); - rootip.s_addr = 0; - if (netdev_sock >= 0) { - if (debug) - printf("net_close: calling netif_close()\n"); - netif_close(netdev_sock); - netdev_sock = -1; - } - return (0); } int net_strategy() { - return EIO; + + return (EIO); } #define SUPPORT_BOOTP @@ -205,106 +205,118 @@ extern n_long ip_convertaddr(char *p); static int -net_getparams(sock) - int sock; +net_getparams(int sock) { - char buf[MAXHOSTNAMELEN]; - char temp[FNAME_SIZE]; - struct iodesc *d; - int i; - n_long smask; + char buf[MAXHOSTNAMELEN]; + char temp[FNAME_SIZE]; + struct iodesc *d; + int i; + n_long smask; #ifdef SUPPORT_BOOTP - /* - * Try to get boot info using BOOTP. If we succeed, then - * the server IP address, gateway, and root path will all - * be initialized. If any remain uninitialized, we will - * use RARP and RPC/bootparam (the Sun way) to get them. - */ - if (try_bootp) - bootp(sock, BOOTP_NONE); - if (myip.s_addr != 0) - goto exit; - if (debug) - printf("net_open: BOOTP failed, trying RARP/RPC...\n"); + /* + * Try to get boot info using BOOTP. If we succeed, then + * the server IP address, gateway, and root path will all + * be initialized. If any remain uninitialized, we will + * use RARP and RPC/bootparam (the Sun way) to get them. + */ + if (try_bootp) + bootp(sock, BOOTP_NONE); + if (myip.s_addr != 0) + goto exit; + if (debug) + printf("net_open: BOOTP failed, trying RARP/RPC...\n"); #endif - /* - * Use RARP to get our IP address. This also sets our - * netmask to the "natural" default for our address. - */ - if (rarp_getipaddress(sock)) { - printf("net_open: RARP failed\n"); - return (EIO); - } - printf("net_open: client addr: %s\n", inet_ntoa(myip)); + /* + * Use RARP to get our IP address. This also sets our + * netmask to the "natural" default for our address. + */ + if (rarp_getipaddress(sock)) { + printf("net_open: RARP failed\n"); + return (EIO); + } + printf("net_open: client addr: %s\n", inet_ntoa(myip)); - /* Get our hostname, server IP address, gateway. */ - if (bp_whoami(sock)) { - printf("net_open: bootparam/whoami RPC failed\n"); - return (EIO); - } - if (debug) - printf("net_open: client name: %s\n", hostname); + /* Get our hostname, server IP address, gateway. */ + if (bp_whoami(sock)) { + printf("net_open: bootparam/whoami RPC failed\n"); + return (EIO); + } + if (debug) + printf("net_open: client name: %s\n", hostname); - /* - * Ignore the gateway from whoami (unreliable). - * Use the "gateway" parameter instead. - */ - smask = 0; - gateip.s_addr = 0; - if (bp_getfile(sock, "gateway", &gateip, buf) == 0) { - /* Got it! Parse the netmask. */ - smask = ip_convertaddr(buf); - } - if (smask) { - netmask = smask; - if (debug) - printf("net_open: subnet mask: %s\n", intoa(netmask)); - } - if (gateip.s_addr && debug) - printf("net_open: net gateway: %s\n", inet_ntoa(gateip)); + /* + * Ignore the gateway from whoami (unreliable). + * Use the "gateway" parameter instead. + */ + smask = 0; + gateip.s_addr = 0; + if (bp_getfile(sock, "gateway", &gateip, buf) == 0) { + /* Got it! Parse the netmask. */ + smask = ip_convertaddr(buf); + } + if (smask) { + netmask = smask; + if (debug) + printf("net_open: subnet mask: %s\n", intoa(netmask)); + } + if (gateip.s_addr && debug) + printf("net_open: net gateway: %s\n", inet_ntoa(gateip)); - /* Get the root server and pathname. */ - if (bp_getfile(sock, "root", &rootip, rootpath)) { - printf("net_open: bootparam/getfile RPC failed\n"); - return (EIO); - } - exit: - /* - * If present, strip the server's address off of the rootpath - * before passing it along. This allows us to be compatible with - * the kernel's diskless (BOOTP_NFSROOT) booting conventions - */ - for (i = 0; rootpath[i] != '\0' && i < FNAME_SIZE; i++) - if (rootpath[i] == ':') - break; - if (i && i != FNAME_SIZE && rootpath[i] == ':') { - rootpath[i++] = '\0'; - if (inet_addr(&rootpath[0]) != INADDR_NONE) - rootip.s_addr = inet_addr(&rootpath[0]); - bcopy(&rootpath[i], &temp[0], strlen(&rootpath[i])+1); - bcopy(&temp[0], &rootpath[0], strlen(&rootpath[i])+1); - } - if (debug) { - printf("net_open: server addr: %s\n", inet_ntoa(rootip)); - printf("net_open: server path: %s\n", rootpath); - } + /* Get the root server and pathname. */ + if (bp_getfile(sock, "root", &rootip, rootpath)) { + printf("net_open: bootparam/getfile RPC failed\n"); + return (EIO); + } +exit: + /* + * If present, strip the server's address off of the rootpath + * before passing it along. This allows us to be compatible with + * the kernel's diskless (BOOTP_NFSROOT) booting conventions + */ + for (i = 0; rootpath[i] != '\0' && i < FNAME_SIZE; i++) + if (rootpath[i] == ':') + break; + if (i && i != FNAME_SIZE && rootpath[i] == ':') { + rootpath[i++] = '\0'; + if (inet_addr(&rootpath[0]) != INADDR_NONE) + rootip.s_addr = inet_addr(&rootpath[0]); + bcopy(&rootpath[i], &temp[0], strlen(&rootpath[i])+1); + bcopy(&temp[0], &rootpath[0], strlen(&rootpath[i])+1); + } + if (debug) { + printf("net_open: server addr: %s\n", inet_ntoa(rootip)); + printf("net_open: server path: %s\n", rootpath); + } - d = socktodesc(sock); - sprintf(temp, "%6D", d->myea, ":"); - setenv("boot.netif.ip", inet_ntoa(myip), 1); - setenv("boot.netif.netmask", intoa(netmask), 1); - setenv("boot.netif.gateway", inet_ntoa(gateip), 1); - setenv("boot.netif.hwaddr", temp, 1); - setenv("boot.nfsroot.server", inet_ntoa(rootip), 1); - setenv("boot.nfsroot.path", rootpath, 1); + d = socktodesc(sock); + sprintf(temp, "%6D", d->myea, ":"); + setenv("boot.netif.ip", inet_ntoa(myip), 1); + setenv("boot.netif.netmask", intoa(netmask), 1); + setenv("boot.netif.gateway", inet_ntoa(gateip), 1); + setenv("boot.netif.hwaddr", temp, 1); + setenv("boot.nfsroot.server", inet_ntoa(rootip), 1); + setenv("boot.nfsroot.path", rootpath, 1); - return (0); + return (0); } static void net_print(int verbose) { - return; + struct netif_driver *drv; + int i, d, cnt; + + cnt = 0; + for (d = 0; netif_drivers[d]; d++) { + drv = netif_drivers[d]; + for (i = 0; i < drv->netif_nifs; i++) { + printf("\t%s%d:", "net", cnt++); + if (verbose) + printf(" (%s%d)", drv->netif_bname, + drv->netif_ifs[i].dif_unit); + } + } + printf("\n"); } ==== //depot/projects/vimage-commit2/src/sys/boot/common/devopen.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/common/devopen.c,v 1.5 2006/11/02 00:02:22 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/common/devopen.c,v 1.6 2008/09/03 17:41:44 raj Exp $"); #include <stand.h> #include <string.h> @@ -35,32 +35,33 @@ int devopen(struct open_file *f, const char *fname, const char **file) { - struct devdesc *dev; - int result; + struct devdesc *dev; + int result; - result = archsw.arch_getdev((void **)&dev, fname, file); - if (result) - return (result); + result = archsw.arch_getdev((void **)&dev, fname, file); + if (result) + return (result); - /* point to device-specific data so that device open can use it */ - f->f_devdata = dev; - result = dev->d_dev->dv_open(f, dev); - if (result != 0) { - f->f_devdata = NULL; - free(dev); - return (result); - } + /* point to device-specific data so that device open can use it */ + f->f_devdata = dev; + result = dev->d_dev->dv_open(f, dev); + if (result != 0) { + f->f_devdata = NULL; + free(dev); + return (result); + } - /* reference the devsw entry from the open_file structure */ - f->f_dev = dev->d_dev; - return (0); + /* reference the devsw entry from the open_file structure */ + f->f_dev = dev->d_dev; + return (0); } int devclose(struct open_file *f) { - if (f->f_devdata != NULL) { - free(f->f_devdata); - } - return(0); + + if (f->f_devdata != NULL) { + free(f->f_devdata); + } + return (0); } ==== //depot/projects/vimage-commit2/src/sys/boot/powerpc/uboot/start.S#2 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/boot/powerpc/uboot/start.S,v 1.3 2008/02/23 18:42:53 marcel Exp $ + * $FreeBSD: src/sys/boot/powerpc/uboot/start.S,v 1.4 2008/09/03 16:38:27 raj Exp $ */ #include <machine/asm.h> @@ -37,7 +37,7 @@ /* Hint where to look for the API signature */ lis %r11, uboot_address@ha addi %r11, %r11, uboot_address@l - stw %r2, 0(%r11) + stw %r1, 0(%r11) /* Save U-Boot's r14 */ lis %r11, saved_regs@ha addi %r11, %r11, saved_regs@l ==== //depot/projects/vimage-commit2/src/sys/boot/uboot/common/main.c#3 (text+ko) ==== @@ -1,7 +1,7 @@ /*- * Copyright (c) 2000 Benno Rice <benno@jeamland.net> * Copyright (c) 2000 Stephane Potvin <sepotvin@videotron.ca> - * Copyright (c) 2007 Semihalf, Rafal Jaworowski <raj@semihalf.com> + * Copyright (c) 2007-2008 Semihalf, Rafal Jaworowski <raj@semihalf.com> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/uboot/common/main.c,v 1.4 2008/09/03 15:39:50 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/uboot/common/main.c,v 1.5 2008/09/03 17:48:41 raj Exp $"); #include <stand.h> @@ -36,9 +36,9 @@ #include "glue.h" #include "libuboot.h" -struct uboot_devdesc currdev; -struct arch_switch archsw; /* MI/MD interface boundary */ -int devs_no; +struct uboot_devdesc currdev; +struct arch_switch archsw; /* MI/MD interface boundary */ +int devs_no; extern char end[]; extern char bootprog_name[]; @@ -53,49 +53,37 @@ extern unsigned char __sbss_end[]; extern unsigned char _end[]; -void dump_si(struct sys_info *si) +static void +dump_sig(struct api_signature *sig) { #ifdef DEBUG - printf("sys info:\n"); - printf(" clkbus\t= 0x%08x\n", si->clk_bus); - printf(" clkcpu\t= 0x%08x\n", si->clk_cpu); - printf(" bar\t\t= 0x%08x\n", si->bar); -#endif -} - -static void dump_sig(struct api_signature *sig) -{ -#ifdef DEBUG printf("signature:\n"); printf(" version\t= %d\n", sig->version); printf(" checksum\t= 0x%08x\n", sig->checksum); printf(" sc entry\t= 0x%08x\n", sig->syscall); #endif } + static void dump_addr_info(void) { #ifdef DEBUG printf("\naddresses info:\n"); - printf(" _etext (sdata) = 0x%08x\n", (u_int32_t)_etext); - printf(" _edata = 0x%08x\n", (u_int32_t)_edata); - printf(" __sbss_start = 0x%08x\n", (u_int32_t)__sbss_start); - printf(" __sbss_end = 0x%08x\n", (u_int32_t)__sbss_end); - printf(" __sbss_start = 0x%08x\n", (u_int32_t)__bss_start); - printf(" _end = 0x%08x\n", (u_int32_t)_end); - printf(" syscall entry = 0x%08x\n", (u_int32_t)syscall_ptr); + printf(" _etext (sdata) = 0x%08x\n", (uint32_t)_etext); + printf(" _edata = 0x%08x\n", (uint32_t)_edata); + printf(" __sbss_start = 0x%08x\n", (uint32_t)__sbss_start); + printf(" __sbss_end = 0x%08x\n", (uint32_t)__sbss_end); + printf(" __sbss_start = 0x%08x\n", (uint32_t)__bss_start); + printf(" _end = 0x%08x\n", (uint32_t)_end); + printf(" syscall entry = 0x%08x\n", (uint32_t)syscall_ptr); #endif } static uint64_t -memsize(int flags) +memsize(struct sys_info *si, int flags) { - int i; - struct sys_info *si; - uint64_t size; - - if ((si = ub_get_sys_info()) == NULL) - return 0; + uint64_t size; + int i; size = 0; for (i = 0; i < si->mr_no; i++) @@ -105,6 +93,25 @@ return (size); } +static void +meminfo(void) +{ + uint64_t size; + struct sys_info *si; + int t[3] = { MR_ATTR_DRAM, MR_ATTR_FLASH, MR_ATTR_SRAM }; + int i; + + if ((si = ub_get_sys_info()) == NULL) + panic("could not retrieve system info"); + + for (i = 0; i < 3; i++) { + size = memsize(si, t[i]); + if (size > 0) + printf("%s:\t %lldMB\n", ub_mem_type(t[i]), + size / 1024 / 1024); + } +} + int main(void) { @@ -112,14 +119,14 @@ int i; if (!api_search_sig(&sig)) - return -1; + return (-1); syscall_ptr = sig->syscall; if (syscall_ptr == NULL) - return -2; + return (-2); if (sig->version > API_SIG_VERSION) - return -3; + return (-3); /* Clear BSS sections */ bzero(__sbss_start, __sbss_end - __sbss_start); @@ -146,10 +153,9 @@ * Enumerate U-Boot devices */ if ((devs_no = ub_dev_enum()) == 0) - panic("no devices found"); - printf("Number of U-Boot devices found %d\n", devs_no); + panic("no U-Boot devices found"); + printf("Number of U-Boot devices: %d\n", devs_no); - /* XXX all our dv_init()s currently don't do anything... */ /* * March through the device switch probing for things. */ @@ -160,9 +166,7 @@ printf("\n"); printf("%s, Revision %s\n", bootprog_name, bootprog_rev); printf("(%s, %s)\n", bootprog_maker, bootprog_date); - printf("Memory: %lldMB\n", memsize(MR_ATTR_DRAM) / 1024 / 1024); - printf("FLASH: %lldMB\n", memsize(MR_ATTR_FLASH) / 1024 / 1024); -// printf("SRAM: %lldMB\n", memsize(MR_ATTR_SRAM) / 1024 / 1024); + meminfo(); /* XXX only support netbooting for now */ for (i = 0; devsw[i] != NULL; i++) @@ -193,7 +197,7 @@ interact(); /* doesn't return */ - return 0; + return (0); } @@ -205,7 +209,7 @@ printf("heap base at %p, top at %p, used %d\n", end, sbrk(0), sbrk(0) - end); - return(CMD_OK); + return (CMD_OK); } COMMAND_SET(reboot, "reboot", "reboot the system", command_reboot); @@ -218,3 +222,38 @@ printf("Reset failed!\n"); while(1); } + +COMMAND_SET(devinfo, "devinfo", "show U-Boot devices", command_devinfo); +static int +command_devinfo(int argc, char *argv[]) +{ + int i; + + if ((devs_no = ub_dev_enum()) == 0) { + command_errmsg = "no U-Boot devices found!?"; + return (CMD_ERROR); + } + + printf("U-Boot devices:\n"); + for (i = 0; i < devs_no; i++) { + ub_dump_di(i); + printf("\n"); + } + return (CMD_OK); +} + +COMMAND_SET(sysinfo, "sysinfo", "show U-Boot system info", command_sysinfo); +static int +command_sysinfo(int argc, char *argv[]) +{ + struct sys_info *si; + + if ((si = ub_get_sys_info()) == NULL) { + command_errmsg = "could not retrieve U-Boot sys info!?"; + return (CMD_ERROR); + } + + printf("U-Boot system info:\n"); + ub_dump_si(si); + return (CMD_OK); +} ==== //depot/projects/vimage-commit2/src/sys/boot/uboot/lib/glue.c#2 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2007 Semihalf, Rafal Jaworowski <raj@semihalf.com> + * Copyright (c) 2007-2008 Semihalf, Rafal Jaworowski <raj@semihalf.com> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/uboot/lib/glue.c,v 1.4 2008/03/13 17:54:21 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/uboot/lib/glue.c,v 1.5 2008/09/03 17:48:41 raj Exp $"); #include <stand.h> #include "api_public.h" @@ -41,7 +41,7 @@ #endif /* Some random address used by U-Boot. */ -extern long uboot_address; +extern long uboot_address; /* crc32 stuff stolen from lib/libdisk/write_ia64_disk.c */ static uint32_t crc32_tab[] = { @@ -138,7 +138,6 @@ int api_search_sig(struct api_signature **sig) { - unsigned char *sp, *spend; if (sig == NULL) @@ -176,7 +175,7 @@ if (!syscall(API_GETC, NULL, (uint32_t)&c)) return (-1); - return c; + return (c); } int @@ -187,7 +186,7 @@ if (!syscall(API_TSTC, NULL, (uint32_t)&t)) return (-1); - return t; + return (t); } void @@ -313,7 +312,7 @@ di->cookie = devices[n - 1].cookie; if (!syscall(API_DEV_ENUM, NULL, di)) - return 0; + return (0); } return (n); @@ -461,6 +460,87 @@ return (err); } +static char * +ub_stor_type(int type) +{ + + if (type & DT_STOR_IDE) + return ("IDE"); + + if (type & DT_STOR_SCSI) + return ("SCSI"); + + if (type & DT_STOR_USB) + return ("USB"); + + if (type & DT_STOR_MMC); + return ("MMC"); + + return ("Unknown"); +} + +char * +ub_mem_type(int flags) +{ + + switch(flags & 0x000F) { + case MR_ATTR_FLASH: + return ("FLASH"); + case MR_ATTR_DRAM: + return ("DRAM"); + case MR_ATTR_SRAM: + return ("SRAM"); + default: + return ("Unknown"); + } +} + +void +ub_dump_di(int handle) +{ + struct device_info *di = ub_dev_get(handle); + int i; + + printf("device info (%d):\n", handle); + printf(" cookie\t= 0x%08x\n", (uint32_t)di->cookie); + printf(" type\t\t= 0x%08x\n", di->type); + + if (di->type == DEV_TYP_NET) { + printf(" hwaddr\t= "); + for (i = 0; i < 6; i++) + printf("%02x ", di->di_net.hwaddr[i]); + + printf("\n"); + + } else if (di->type & DEV_TYP_STOR) { + printf(" type\t\t= %s\n", ub_stor_type(di->type)); + printf(" blk size\t\t= %ld\n", di->di_stor.block_size); + printf(" blk count\t\t= %ld\n", di->di_stor.block_count); + } +} + +void +ub_dump_si(struct sys_info *si) +{ + int i; + + printf("sys info:\n"); + printf(" clkbus\t= %ld MHz\n", si->clk_bus / 1000 / 1000); + printf(" clkcpu\t= %ld MHz\n", si->clk_cpu / 1000 / 1000); + printf(" bar\t\t= 0x%08lx\n", si->bar); + + printf("---\n"); + for (i = 0; i < si->mr_no; i++) { + if (si->mr[i].flags == 0) + break; + + printf(" start\t= 0x%08lx\n", si->mr[i].start); + printf(" size\t= 0x%08lx\n", si->mr[i].size); + printf(" type\t= %s\n", ub_mem_type(si->mr[i].flags)); + printf("---\n"); + } +} + /**************************************** * * env vars ==== //depot/projects/vimage-commit2/src/sys/boot/uboot/lib/glue.h#3 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/boot/uboot/lib/glue.h,v 1.3 2008/09/03 15:39:50 raj Exp $ + * $FreeBSD: src/sys/boot/uboot/lib/glue.h,v 1.4 2008/09/03 17:48:41 raj Exp $ */ /* @@ -35,10 +35,10 @@ #include "api_public.h" -int syscall(int, int *, ...); -void *syscall_ptr; +int syscall(int, int *, ...); +void *syscall_ptr; -int api_search_sig(struct api_signature **sig); +int api_search_sig(struct api_signature **sig); /* * The ub_ library calls are part of the application, not U-Boot code! They @@ -48,32 +48,36 @@ */ /* console */ -int ub_getc(void); -int ub_tstc(void); -void ub_putc(char c); -void ub_puts(const char *s); +int ub_getc(void); +int ub_tstc(void); +void ub_putc(char c); +void ub_puts(const char *s); /* system */ -void ub_reset(void); +void ub_reset(void); struct sys_info *ub_get_sys_info(void); /* time */ -void ub_udelay(unsigned long); -unsigned long ub_get_timer(unsigned long); +void ub_udelay(unsigned long); +unsigned long ub_get_timer(unsigned long); /* env vars */ -char *ub_env_get(const char *name); -void ub_env_set(const char *name, char *value); -const char *ub_env_enum(const char *last); +char *ub_env_get(const char *name); +void ub_env_set(const char *name, char *value); +const char *ub_env_enum(const char *last); /* devices */ -int ub_dev_enum(void); -int ub_dev_open(int handle); -int ub_dev_close(int handle); -int ub_dev_read(int handle, void *buf, lbasize_t len, lbastart_t start); -int ub_dev_send(int handle, void *buf, int len); -int ub_dev_recv(int handle, void *buf, int len); +int ub_dev_enum(void); +int ub_dev_open(int handle); +int ub_dev_close(int handle); +int ub_dev_read(int handle, void *buf, lbasize_t len, lbastart_t start); +int ub_dev_send(int handle, void *buf, int len); +int ub_dev_recv(int handle, void *buf, int len); struct device_info * ub_dev_get(int); +void ub_dump_di(int); +void ub_dump_si(struct sys_info *); +char *ub_mem_type(int); + #endif /* _API_GLUE_H_ */ ==== //depot/projects/vimage-commit2/src/sys/conf/files.sun4v#2 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.sun4v,v 1.15 2008/05/02 17:41:52 marius Exp $ +# $FreeBSD: src/sys/conf/files.sun4v,v 1.16 2008/09/03 17:31:13 marius Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -34,7 +34,7 @@ libkern/flsl.c standard sparc64/sparc64/autoconf.c standard sun4v/sun4v/bus_machdep.c standard -sparc64/sparc64/clock.c standard +sun4v/sun4v/clock.c standard sparc64/sparc64/db_disasm.c optional ddb sun4v/sun4v/db_interface.c optional ddb sun4v/sun4v/db_trace.c optional ddb ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_fw2.c#17 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/netinet/ip_fw2.c,v 1.190 2008/08/25 05:38:18 julian Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/ip_fw2.c,v 1.191 2008/09/03 18:09:15 julian Exp $"); #define DEB(x) #define DDB(x) x @@ -4484,7 +4484,7 @@ continue; if ( (q->state & BOTH_SYN) != BOTH_SYN) continue; - if (TIME_LEQ( time_uptime + V_dyn_keepalive_interval, + if (TIME_LEQ(time_uptime + V_dyn_keepalive_interval, q->expire)) continue; /* too early */ if (TIME_LEQ(q->expire, time_uptime)) ==== //depot/projects/vimage-commit2/src/sys/sparc64/include/clock.h#2 (text+ko) ==== @@ -23,14 +23,16 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809031832.m83IWIZ3092010>