Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Jul 2011 13:26:51 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
Subject:   svn commit: r224439 - in stable/7/sys/boot: common i386/boot2
Message-ID:  <201107261326.p6QDQp5K010581@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marius
Date: Tue Jul 26 13:26:51 2011
New Revision: 224439
URL: http://svn.freebsd.org/changeset/base/224439

Log:
  MFC: r219452
  
  Some more shrinking.
  
     o    bunch of variables are turned into uint8_t
  
     o    initial setting of namep[] in lookup() is removed
          as it's only overwritten a few lines down
  
     o    kname is explicitly initialized in main() as BSS
          in boot2 is not zeroed
  
     o    the setting and reading of "fmt" in load() is removed
  
     o    buf in printf() is made static to save space
  
  Reviewed by:    jhb
  Tested by:      me and Fabian Keil <freebsd-listen fabiankeil de>

Modified:
  stable/7/sys/boot/common/ufsread.c
  stable/7/sys/boot/i386/boot2/boot2.c
Directory Properties:
  stable/7/sys/   (props changed)
  stable/7/sys/cddl/contrib/opensolaris/   (props changed)
  stable/7/sys/contrib/dev/acpica/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)

Modified: stable/7/sys/boot/common/ufsread.c
==============================================================================
--- stable/7/sys/boot/common/ufsread.c	Tue Jul 26 13:26:46 2011	(r224438)
+++ stable/7/sys/boot/common/ufsread.c	Tue Jul 26 13:26:51 2011	(r224439)
@@ -88,7 +88,7 @@ static struct dmadat *dmadat;
 static ino_t lookup(const char *);
 static ssize_t fsread(ino_t, void *, size_t);
 
-static int ls, dsk_meta;
+static uint8_t ls, dsk_meta;
 static uint32_t fs_off;
 
 static __inline uint8_t
@@ -127,8 +127,6 @@ lookup(const char *path)
 
 	ino = ROOTINO;
 	dt = DT_DIR;
-	name[0] = '/';
-	name[1] = '\0';
 	for (;;) {
 		if (*path == '/')
 			path++;

Modified: stable/7/sys/boot/i386/boot2/boot2.c
==============================================================================
--- stable/7/sys/boot/i386/boot2/boot2.c	Tue Jul 26 13:26:46 2011	(r224438)
+++ stable/7/sys/boot/i386/boot2/boot2.c	Tue Jul 26 13:26:51 2011	(r224439)
@@ -125,17 +125,17 @@ static struct dsk {
     unsigned drive;
     unsigned type;
     unsigned unit;
-    unsigned slice;
-    unsigned part;
+    uint8_t slice;
+    uint8_t part;
     unsigned start;
     int init;
 } dsk;
 static char cmd[512], cmddup[512];
-static const char *kname = NULL;
+static const char *kname;
 static uint32_t opts;
 static int comspeed = SIOSPD;
 static struct bootinfo bootinfo;
-static unsigned ioctrl = IO_KEYBOARD;
+static uint8_t ioctrl = IO_KEYBOARD;
 
 void exit(int);
 static void load(void);
@@ -226,6 +226,7 @@ main(void)
     uint8_t autoboot;
     ino_t ino;
 
+    kname = NULL;
     dmadat = (void *)(roundup2(__base + (int32_t)&_end, 0x10000) - __base);
     v86.ctl = V86_FLAGS;
     v86.efl = PSL_RESERVED_DEFAULT | PSL_I;
@@ -306,9 +307,8 @@ load(void)
     static Elf32_Shdr es[2];
     caddr_t p;
     ino_t ino;
-    uint32_t addr, x;
+    uint32_t addr;
     int i, j;
-    uint8_t fmt;
 
     if (!(ino = lookup(kname))) {
 	if (!ls)
@@ -317,15 +317,8 @@ load(void)
     }
     if (xfsread(ino, &hdr, sizeof(hdr)))
 	return;
-    if (N_GETMAGIC(hdr.ex) == ZMAGIC)
-	fmt = 0;
-    else if (IS_ELF(hdr.eh))
-	fmt = 1;
-    else {
-	printf("Invalid %s\n", "format");
-	return;
-    }
-    if (fmt == 0) {
+
+    if (N_GETMAGIC(hdr.ex) == ZMAGIC) {
 	addr = hdr.ex.a_entry & 0xffffff;
 	p = PTOV(addr);
 	fs_off = PAGE_SIZE;
@@ -334,7 +327,7 @@ load(void)
 	p += roundup2(hdr.ex.a_text, PAGE_SIZE);
 	if (xfsread(ino, p, hdr.ex.a_data))
 	    return;
-    } else {
+    } else if (IS_ELF(hdr.eh)) {
 	fs_off = hdr.eh.e_phoff;
 	for (j = i = 0; i < hdr.eh.e_phnum && j < 2; i++) {
 	    if (xfsread(ino, ep + j, sizeof(ep[0])))
@@ -366,7 +359,11 @@ load(void)
 	}
 	addr = hdr.eh.e_entry & 0xffffff;
 	bootinfo.bi_esymtab = VTOP(p);
+    } else {
+	printf("Invalid %s\n", "format");
+	return;
     }
+
     bootinfo.bi_kernelname = VTOP(kname);
     bootinfo.bi_bios_dev = dsk.drive;
     __exec((caddr_t)addr, RB_BOOTINFO | (opts & RBX_MASK),
@@ -474,7 +471,8 @@ dskread(void *buf, unsigned lba, unsigne
     struct dos_partition *dp;
     struct disklabel *d;
     char *sec;
-    unsigned sl, i;
+    unsigned i;
+    uint8_t sl;
 
     if (!dsk_meta) {
 	sec = dmadat->secbuf;
@@ -534,7 +532,7 @@ static void
 printf(const char *fmt,...)
 {
     va_list ap;
-    char buf[10];
+    static char buf[10];
     char *s;
     unsigned u;
     int c;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201107261326.p6QDQp5K010581>