Author: nyan
Date: Mon Nov  3 11:58:32 2014
New Revision: 274041
URL: https://svnweb.freebsd.org/changeset/base/274041

Log:
  MFC: r268475 (by imp)
  
    Make SERIAL support optional again. Enable it for i386 because a huge
    percentage of machines has a 16550. Disable it for pc98 since only a
    tiny fraction of them have one.

Modified:
  stable/10/sys/boot/i386/boot2/boot2.c
  stable/10/sys/boot/pc98/boot2/boot2.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/boot/i386/boot2/boot2.c
==============================================================================
--- stable/10/sys/boot/i386/boot2/boot2.c       Mon Nov  3 11:49:35 2014        
(r274040)
+++ stable/10/sys/boot/i386/boot2/boot2.c       Mon Nov  3 11:58:32 2014        
(r274041)
@@ -34,9 +34,22 @@ __FBSDID("$FreeBSD$");
 #include "boot2.h"
 #include "lib.h"
 
+/* Define to 0 to omit serial support */
+#ifndef SERIAL
+#define SERIAL 1
+#endif
+
 #define IO_KEYBOARD    1
 #define IO_SERIAL      2
 
+#if SERIAL
+#define DO_KBD (ioctrl & IO_KEYBOARD)
+#define DO_SIO (ioctrl & IO_SERIAL)
+#else
+#define DO_KBD (1)
+#define DO_SIO (0)
+#endif
+
 #define SECOND         18      /* Circa that many ticks in a second. */
 
 #define RBX_ASKNAME    0x0     /* -a */
@@ -131,9 +144,11 @@ static struct dsk {
 static char cmd[512], cmddup[512], knamebuf[1024];
 static const char *kname;
 static uint32_t opts;
-static int comspeed = SIOSPD;
 static struct bootinfo bootinfo;
+#if SERIAL
+static int comspeed = SIOSPD;
 static uint8_t ioctrl = IO_KEYBOARD;
+#endif
 
 void exit(int);
 static void load(void);
@@ -276,7 +291,7 @@ main(void)
                   "boot: ",
                   dsk.drive & DRV_MASK, dev_nm[dsk.type], dsk.unit,
                   'a' + dsk.part, kname);
-       if (ioctrl & IO_SERIAL)
+       if (DO_SIO)
            sio_flush();
        if (!autoboot || keyhit(3*SECOND))
            getstr();
@@ -398,6 +413,7 @@ parse()
                    }
                    printf("Keyboard: %s\n", cp);
                    continue;
+#if SERIAL
                } else if (c == 'S') {
                    j = 0;
                    while ((unsigned int)(i = *arg++ - '0') <= 9)
@@ -407,18 +423,21 @@ parse()
                        break;
                    }
                    /* Fall through to error below ('S' not in optstr[]). */
+#endif
                }
                for (i = 0; c != optstr[i]; i++)
                    if (i == NOPT - 1)
                        return -1;
                opts ^= OPT_SET(flags[i]);
            }
+#if SERIAL
            ioctrl = OPT_CHECK(RBX_DUAL) ? (IO_SERIAL|IO_KEYBOARD) :
                     OPT_CHECK(RBX_SERIAL) ? IO_SERIAL : IO_KEYBOARD;
-           if (ioctrl & IO_SERIAL) {
+           if (DO_SIO) {
                if (sio_init(115200 / comspeed) != 0)
                    ioctrl &= ~IO_SERIAL;
            }
+#endif
        } else {
            for (q = arg--; *q && *q != '('; q++);
            if (*q) {
@@ -626,9 +645,9 @@ keyhit(unsigned ticks)
 static int
 xputc(int c)
 {
-    if (ioctrl & IO_KEYBOARD)
+    if (DO_KBD)
        putc(c);
-    if (ioctrl & IO_SERIAL)
+    if (DO_SIO)
        sio_putc(c);
     return c;
 }
@@ -648,9 +667,9 @@ xgetc(int fn)
     if (OPT_CHECK(RBX_NOINTR))
        return 0;
     for (;;) {
-       if (ioctrl & IO_KEYBOARD && getc(1))
+       if (DO_KBD && getc(1))
            return fn ? 1 : getc(0);
-       if (ioctrl & IO_SERIAL && sio_ischar())
+       if (DO_SIO && sio_ischar())
            return fn ? 1 : sio_getc();
        if (fn)
            return 0;

Modified: stable/10/sys/boot/pc98/boot2/boot2.c
==============================================================================
--- stable/10/sys/boot/pc98/boot2/boot2.c       Mon Nov  3 11:49:35 2014        
(r274040)
+++ stable/10/sys/boot/pc98/boot2/boot2.c       Mon Nov  3 11:58:32 2014        
(r274041)
@@ -36,9 +36,22 @@ __FBSDID("$FreeBSD$");
 #include "boot2.h"
 #include "lib.h"
 
+/* Define to 0 to omit serial support */
+#ifndef SERIAL
+#define SERIAL 0
+#endif
+
 #define IO_KEYBOARD    1
 #define IO_SERIAL      2
 
+#if SERIAL
+#define DO_KBD (ioctrl & IO_KEYBOARD)
+#define DO_SIO (ioctrl & IO_SERIAL)
+#else
+#define DO_KBD (1)
+#define DO_SIO (0)
+#endif
+
 #define SECOND         1       /* Circa that many ticks in a second. */
 
 #define RBX_ASKNAME    0x0     /* -a */
@@ -133,9 +146,11 @@ static struct dsk {
 static char cmd[512], cmddup[512], knamebuf[1024];
 static const char *kname;
 static uint32_t opts;
-static int comspeed = SIOSPD;
 static struct bootinfo bootinfo;
+#if SERIAL
+static int comspeed = SIOSPD;
 static uint8_t ioctrl = IO_KEYBOARD;
+#endif
 
 void exit(int);
 static void load(void);
@@ -415,7 +430,7 @@ main(void)
                   "boot: ",
                   dsk.unit, dev_nm[dsk.type], dsk.unit,
                   'a' + dsk.part, kname);
-       if (ioctrl & IO_SERIAL)
+       if (DO_SIO)
            sio_flush();
        if (!autoboot || keyhit(3*SECOND))
            getstr();
@@ -537,6 +552,7 @@ parse()
                    }
                    printf("Keyboard: %s\n", cp);
                    continue;
+#if SERIAL
                } else if (c == 'S') {
                    j = 0;
                    while ((unsigned int)(i = *arg++ - '0') <= 9)
@@ -546,18 +562,21 @@ parse()
                        break;
                    }
                    /* Fall through to error below ('S' not in optstr[]). */
+#endif
                }
                for (i = 0; c != optstr[i]; i++)
                    if (i == NOPT - 1)
                        return -1;
                opts ^= OPT_SET(flags[i]);
            }
+#if SERIAL
            ioctrl = OPT_CHECK(RBX_DUAL) ? (IO_SERIAL|IO_KEYBOARD) :
                     OPT_CHECK(RBX_SERIAL) ? IO_SERIAL : IO_KEYBOARD;
-           if (ioctrl & IO_SERIAL) {
+           if (DO_SIO) {
                if (sio_init(115200 / comspeed) != 0)
                    ioctrl &= ~IO_SERIAL;
            }
+#endif
        } else {
            for (q = arg--; *q && *q != '('; q++);
            if (*q) {
@@ -780,9 +799,9 @@ keyhit(unsigned sec)
 static int
 xputc(int c)
 {
-    if (ioctrl & IO_KEYBOARD)
+    if (DO_KBD)
        putc(c);
-    if (ioctrl & IO_SERIAL)
+    if (DO_SIO)
        sio_putc(c);
     return c;
 }
@@ -805,9 +824,9 @@ xgetc(int fn)
     if (OPT_CHECK(RBX_NOINTR))
        return 0;
     for (;;) {
-       if (ioctrl & IO_KEYBOARD && getc(1))
+       if (DO_KBD && getc(1))
            return fn ? 1 : getc(0);
-       if (ioctrl & IO_SERIAL && sio_ischar())
+       if (DO_SIO && sio_ischar())
            return fn ? 1 : sio_getc();
        if (fn)
            return 0;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to