From owner-p4-projects@FreeBSD.ORG Thu Sep 14 23:32:08 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6908416A412; Thu, 14 Sep 2006 23:32:08 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 21A9B16A407 for ; Thu, 14 Sep 2006 23:32:08 +0000 (UTC) (envelope-from imp@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id DC67E43D45 for ; Thu, 14 Sep 2006 23:32:07 +0000 (GMT) (envelope-from imp@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k8ENW7ah093241 for ; Thu, 14 Sep 2006 23:32:07 GMT (envelope-from imp@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k8ENW2El093238 for perforce@freebsd.org; Thu, 14 Sep 2006 23:32:02 GMT (envelope-from imp@freebsd.org) Date: Thu, 14 Sep 2006 23:32:02 GMT Message-Id: <200609142332.k8ENW2El093238@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to imp@freebsd.org using -f From: Warner Losh To: Perforce Change Reviews Cc: Subject: PERFORCE change 106125 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Sep 2006 23:32:08 -0000 http://perforce.freebsd.org/chv.cgi?CH=106125 Change 106125 by imp@imp_lighthouse on 2006/09/14 23:31:13 o Remove some unneeded printfs, shorten strings. o kill unneeded read the symbols code. o fix a couple of bugs with reading in chars. o read mac directly into mac rather than reading all of euid64 and copying. This fixes a few bugs, and saves another 164 bytes. boot2 now has > 1k (1056) free. Almost, but not quite, enough to allow both MMC and SD support with FPGA loading... Affected files ... .. //depot/projects/arm/src/sys/boot/arm/at91/boot2/boot2.c#18 edit Differences ... ==== //depot/projects/arm/src/sys/boot/arm/at91/boot2/boot2.c#18 (text+ko) ==== @@ -68,7 +68,7 @@ //#define PATH_KERNEL "/boot/kernel/kernel" #define PATH_KERNEL "/kernel.gz.tramp" -#define NOPT 6 +#define NOPT 5 #define OPT_SET(opt) (1 << (opt)) #define OPT_CHECK(opt) ((opts) & OPT_SET(opt)) @@ -105,20 +105,19 @@ { ssize_t rv; - if ((size_t)(rv = fsread(inode, buf, nbyte)) != nbyte) { - printf("Invalid %s\n", "sector"); + if ((size_t)(rv = fsread(inode, buf, nbyte)) != nbyte) return -1; - } return 0; } static inline void -getstr(void) +getstr(int c) { char *s; - int c; s = cmd; + if (c) + *s++ = c; for (;;) { switch (c = getc(10000)) { case 0: @@ -190,8 +189,6 @@ #if 0 uint8_t euid64[8] = { 0x00, 0x30, 0x96, 0x20, 0x00, 0x00, 0x00, 0x05 }; -#else - uint8_t euid64[8]; #endif #if 0 @@ -202,25 +199,18 @@ #endif sig = 0; EERead(0, (uint8_t *)&sig, sizeof(sig)); - if (sig != 0xaa55aa55) { - printf("Bad signature %x\n", sig); + if (sig != 0xaa55aa55) return; - } - EERead(48, euid64, sizeof(euid64)); - mac[0] = euid64[0]; - mac[1] = euid64[1]; - mac[2] = euid64[2]; - mac[3] = euid64[5]; - mac[4] = euid64[6]; - mac[5] = euid64[7]; - printf("MAC Address %x:%x:%x:%x:%x:%x\n", mac[0], + EERead(48, mac, 3); + EERead(48+5, mac+3, 3); + printf("MAC %x:%x:%x:%x:%x:%x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); } int main(void) { - int autoboot; + int autoboot, c = 0; ino_t ino; #ifdef TSC_FPGA @@ -253,14 +243,13 @@ p_strcpy(kname, PATH_KERNEL); for (;;) { - printf("\nFreeBSD/arm boot\n" - "Default: %s\n" - "boot: ", kname); - if (!autoboot || getc(5) == -1) - getstr(); + printf("\nDefault: %s\nboot: ", kname); + if (!autoboot || (c = getc(2)) != -1) + getstr(c); else if (!autoboot) xputchar('\n'); autoboot = 0; + c = 0; if (parse()) xputchar('\a'); else @@ -273,9 +262,6 @@ { Elf32_Ehdr eh; static Elf32_Phdr ep[2]; -#if 0 - static Elf32_Shdr es[2]; -#endif caddr_t p; ino_t ino; uint32_t addr; @@ -305,30 +291,6 @@ if (xfsread(ino, p, ep[i].p_filesz)) return; } -#if 0 - printf("3\n"); - p += roundup2(ep[1].p_memsz, PAGE_SIZE); - if (eh.e_shnum == eh.e_shstrndx + 3) { - printf("4\n"); - fs_off = eh.e_shoff + sizeof(es[0]) * - (eh.e_shstrndx + 1); - printf("5\n"); - if (xfsread(ino, &es, sizeof(es))) { - printf("5a\n"); - return; - } - printf("6\n"); - for (i = 0; i < 2; i++) { - printf("6.%d\n", i); - memcpy(p, &es[i].sh_size, sizeof(es[i].sh_size)); - p += sizeof(es[i].sh_size); - fs_off = es[i].sh_offset; - if (xfsread(ino, p, es[i].sh_size)) - return; - p += es[i].sh_size; - } - } -#endif addr = eh.e_entry; ((void(*)(int))addr)(RB_BOOTINFO | (opts & RBX_MASK)); } @@ -384,10 +346,8 @@ if (dp[i].dp_typ == DOSPTYP_386BSD) break; } - if (i == NDOSPART) { - printf("No BSD partition found\n"); + if (i == NDOSPART) return -1; - } // Although dp_start is aligned within the disk partition structure, // DOSPARTOFF is 446, which is only word (2) aligned, not longword (4) // aligned. Cope by using memcpy to fetch the start of this partition.