Add patch to support serial terminals under Solaris.
[pintos-anon] / src / misc / bochs-2.2.6-solaris-tty.patch
diff --git a/src/misc/bochs-2.2.6-solaris-tty.patch b/src/misc/bochs-2.2.6-solaris-tty.patch
new file mode 100644 (file)
index 0000000..a9725dc
--- /dev/null
@@ -0,0 +1,31 @@
+--- bochs-2.2.6/iodev/serial.cc        2005-07-11 09:24:47.000000000 -0700
++++ bochs-2.2.6.patch/iodev/serial.cc  2006-05-28 16:41:33.278938000 -0700
+@@ -245,8 +245,13 @@
+             BX_SER_THIS s[i].io_mode = BX_SER_MODE_TERM;
+             BX_DEBUG(("com%d tty_id: %d", i+1, BX_SER_THIS s[i].tty_id));
+             tcgetattr(BX_SER_THIS s[i].tty_id, &BX_SER_THIS s[i].term_orig);
+-            bcopy((caddr_t) &BX_SER_THIS s[i].term_orig, (caddr_t) &BX_SER_THIS s[i].term_new, sizeof(struct termios));
+-            cfmakeraw(&BX_SER_THIS s[i].term_new);
++            memcpy((caddr_t) &BX_SER_THIS s[i].term_new, (caddr_t) &BX_SER_THIS s[i].term_orig, sizeof(struct termios));
++            BX_SER_THIS s[i].term_new.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP
++                                          |INLCR|IGNCR|ICRNL|IXON);
++            BX_SER_THIS s[i].term_new.c_oflag &= ~OPOST;
++            BX_SER_THIS s[i].term_new.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
++            BX_SER_THIS s[i].term_new.c_cflag &= ~(CSIZE|PARENB);
++            BX_SER_THIS s[i].term_new.c_cflag |= CS8;
+             BX_SER_THIS s[i].term_new.c_oflag |= OPOST | ONLCR;  // Enable NL to CR-NL translation
+ #ifndef TRUE_CTLC
+             // ctl-C will exit Bochs, or trap to the debugger
+
+
+--- bochs-2.2.6/iodev/serial.h 2005-07-10 09:51:09.000000000 -0700
++++ bochs-2.2.6.patch/iodev/serial.h   2006-05-28 16:39:03.757839000 -0700
+@@ -40,7 +40,7 @@
+ #define SERIAL_ENABLE
+ #endif
+-#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__) || defined(__APPLE__)
++#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__) || defined(__APPLE__) || defined(__sun__)
+ #define SERIAL_ENABLE
+ extern "C" {
+ #include <termios.h>