File termios.patch of Package qemu

diff --git a/linux-user/alpha/termbits.h b/linux-user/alpha/termbits.h
index 4a4b1e96f2..d989e71288 100644
--- a/linux-user/alpha/termbits.h
+++ b/linux-user/alpha/termbits.h
@@ -111,6 +111,7 @@ struct target_termios {
 #define TARGET_EXTA B19200
 #define TARGET_EXTB B38400
 #define TARGET_CBAUDEX 0000000
+#define  TARGET_BOTHER   00037
 #define  TARGET_B57600   00020
 #define  TARGET_B115200  00021
 #define  TARGET_B230400  00022
@@ -126,6 +127,9 @@ struct target_termios {
 #define TARGET_B3000000  00034
 #define TARGET_B3500000  00035
 #define TARGET_B4000000  00036
+#define TARGET_CIBAUD  07600000
+
+#define TARGET_IBSHIFT    16            /* Shift from CBAUD to CIBAUD */
 
 #define TARGET_CSIZE	00001400
 #define   TARGET_CS5	00000000
diff --git a/linux-user/hppa/termbits.h b/linux-user/hppa/termbits.h
index 11fd4eed62..a39e231e83 100644
--- a/linux-user/hppa/termbits.h
+++ b/linux-user/hppa/termbits.h
@@ -100,14 +100,28 @@ struct target_termios {
 #define TARGET_HUPCL   0002000
 #define TARGET_CLOCAL  0004000
 #define TARGET_CBAUDEX 0010000
+#define TARGET_BOTHER  0010000
 #define  TARGET_B57600  0010001
 #define  TARGET_B115200 0010002
 #define  TARGET_B230400 0010003
 #define  TARGET_B460800 0010004
+#define  TARGET_B500000 0010005
+#define  TARGET_B576000 0010006
+#define  TARGET_B921600 0010007
+#define  TARGET_B1000000 0010010
+#define  TARGET_B1152000 0010011
+#define  TARGET_B1500000 0010012
+#define  TARGET_B2000000 0010013
+#define  TARGET_B2500000 0010014
+#define  TARGET_B3000000 0010015
+#define  TARGET_B3500000 0010016
+#define  TARGET_B4000000 0010017
 #define TARGET_CIBAUD    002003600000  /* input baud rate (not used) */
 #define TARGET_CMSPAR    010000000000  /* mark or space (stick) parity */
 #define TARGET_CRTSCTS   020000000000  /* flow control */
 
+#define TARGET_IBSHIFT    16            /* Shift from CBAUD to CIBAUD */
+
 /* c_lflag bits */
 #define TARGET_ISIG    0000001
 #define TARGET_ICANON  0000002
diff --git a/linux-user/mips/termbits.h b/linux-user/mips/termbits.h
index bd65afd028..98a75438c8 100644
--- a/linux-user/mips/termbits.h
+++ b/linux-user/mips/termbits.h
@@ -131,6 +131,8 @@ struct target_termios2 {
 #define TARGET_CMSPAR    010000000000  /* mark or space (stick) parity */
 #define TARGET_CRTSCTS   020000000000  /* flow control */
 
+#define TARGET_IBSHIFT    16            /* Shift from CBAUD to CIBAUD */
+
 /* c_lflag bits */
 #define TARGET_ISIG    0000001
 #define TARGET_ICANON  0000002
diff --git a/linux-user/ppc/termbits.h b/linux-user/ppc/termbits.h
index eb226e0999..42be936420 100644
--- a/linux-user/ppc/termbits.h
+++ b/linux-user/ppc/termbits.h
@@ -114,6 +114,7 @@ struct target_termios {
 #define TARGET_EXTA B19200
 #define TARGET_EXTB B38400
 #define TARGET_CBAUDEX 0000000
+#define TARGET_BOTHER  0000037
 #define  TARGET_B57600   00020
 #define  TARGET_B115200  00021
 #define  TARGET_B230400  00022
@@ -129,6 +130,9 @@ struct target_termios {
 #define TARGET_B3000000  00034
 #define TARGET_B3500000  00035
 #define TARGET_B4000000  00036
+#define TARGET_CIBAUD  077600000
+
+#define TARGET_IBSHIFT    16            /* Shift from CBAUD to CIBAUD */
 
 #define TARGET_CSIZE	00001400
 #define   TARGET_CS5	00000000
diff --git a/linux-user/sh4/termbits.h b/linux-user/sh4/termbits.h
index 28e79f2c9a..4b44aa2b4f 100644
--- a/linux-user/sh4/termbits.h
+++ b/linux-user/sh4/termbits.h
@@ -120,6 +120,7 @@ struct target_termios {
 #define TARGET_HUPCL   0002000
 #define TARGET_CLOCAL  0004000
 #define TARGET_CBAUDEX 0010000
+#define TARGET_BOTHER  0010000
 #define TARGET_B57600 0010001
 #define TARGET_B115200 0010002
 #define TARGET_B230400 0010003
@@ -139,6 +140,8 @@ struct target_termios {
 #define TARGET_CMSPAR    010000000000 /* mark or space (stick) parity */
 #define TARGET_CRTSCTS   020000000000 /* flow control */
 
+#define TARGET_IBSHIFT    16            /* Shift from CBAUD to CIBAUD */
+
 /* c_lflag bits */
 #define TARGET_ISIG     0000001
 #define TARGET_ICANON   0000002
diff --git a/linux-user/sparc/termbits.h b/linux-user/sparc/termbits.h
index 704bee1c42..438170f8ac 100644
--- a/linux-user/sparc/termbits.h
+++ b/linux-user/sparc/termbits.h
@@ -128,6 +128,7 @@ struct target_termios {
 #define TARGET_HUPCL	  0x00000400
 #define TARGET_CLOCAL	  0x00000800
 #define TARGET_CBAUDEX   0x00001000
+#define TARGET_BOTHER    0x00001000
 /* We'll never see these speeds with the Zilogs, but for completeness... */
 #define  TARGET_B57600   0x00001001
 #define  TARGET_B115200  0x00001002
@@ -158,6 +159,8 @@ struct target_termios {
 #define TARGET_CMSPAR	  0x40000000  /* mark or space (stick) parity */
 #define TARGET_CRTSCTS	  0x80000000  /* flow control */
 
+#define TARGET_IBSHIFT    16            /* Shift from CBAUD to CIBAUD */
+
 /* c_lflag bits */
 #define TARGET_ISIG	0x00000001
 #define TARGET_ICANON	0x00000002
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index d9335318fa..ec57a2f9d3 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -5783,6 +5783,74 @@ static const bitmask_transtbl cflag_tbl[] = {
 	{ TARGET_CBAUD, TARGET_B115200, CBAUD, B115200 },
 	{ TARGET_CBAUD, TARGET_B230400, CBAUD, B230400 },
 	{ TARGET_CBAUD, TARGET_B460800, CBAUD, B460800 },
+	{ TARGET_CBAUD, TARGET_BOTHER, CBAUD, BOTHER },
+	{ TARGET_CBAUD, TARGET_B57600, CBAUD, B57600 },
+	{ TARGET_CBAUD, TARGET_B115200, CBAUD, B115200 },
+	{ TARGET_CBAUD, TARGET_B230400, CBAUD, B230400 },
+	{ TARGET_CBAUD, TARGET_B460800, CBAUD, B460800 },
+	{ TARGET_CBAUD, TARGET_B500000, CBAUD, B500000 },
+	{ TARGET_CBAUD, TARGET_B576000, CBAUD, B576000 },
+	{ TARGET_CBAUD, TARGET_B921600, CBAUD, B921600 },
+	{ TARGET_CBAUD, TARGET_B1000000, CBAUD, B1000000 },
+	{ TARGET_CBAUD, TARGET_B1152000, CBAUD, B1152000 },
+	{ TARGET_CBAUD, TARGET_B1500000, CBAUD, B1500000 },
+	{ TARGET_CBAUD, TARGET_B2000000, CBAUD, B2000000 },
+#ifdef TARGET_B2500000
+	{ TARGET_CBAUD, TARGET_B2500000, CBAUD, B2500000 },
+#endif
+#ifdef TARGET_B3000000
+	{ TARGET_CBAUD, TARGET_B3000000, CBAUD, B3000000 },
+#endif
+#ifdef TARGET_B3500000
+	{ TARGET_CBAUD, TARGET_B3500000, CBAUD, B3500000 },
+#endif
+#ifdef TARGET_B4000000
+	{ TARGET_CBAUD, TARGET_B4000000, CBAUD, B4000000 },
+#endif
+	{ TARGET_CIBAUD, TARGET_B0 << TARGET_IBSHIFT, CIBAUD, B0 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B50 << TARGET_IBSHIFT, CIBAUD, B50 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B75 << TARGET_IBSHIFT, CIBAUD, B75 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B110 << TARGET_IBSHIFT, CIBAUD, B110 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B134 << TARGET_IBSHIFT, CIBAUD, B134 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B150 << TARGET_IBSHIFT, CIBAUD, B150 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B200 << TARGET_IBSHIFT, CIBAUD, B200 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B300 << TARGET_IBSHIFT, CIBAUD, B300 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B600 << TARGET_IBSHIFT, CIBAUD, B600 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B1200 << TARGET_IBSHIFT, CIBAUD, B1200 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B1800 << TARGET_IBSHIFT, CIBAUD, B1800 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B2400 << TARGET_IBSHIFT, CIBAUD, B2400 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B4800 << TARGET_IBSHIFT, CIBAUD, B4800 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B9600 << TARGET_IBSHIFT, CIBAUD, B9600 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B19200 << TARGET_IBSHIFT, CIBAUD, B19200 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B38400 << TARGET_IBSHIFT, CIBAUD, B38400 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B57600 << TARGET_IBSHIFT, CIBAUD, B57600 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B115200 << TARGET_IBSHIFT, CIBAUD, B115200 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B230400 << TARGET_IBSHIFT, CIBAUD, B230400 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B460800 << TARGET_IBSHIFT, CIBAUD, B460800 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_BOTHER << TARGET_IBSHIFT, CIBAUD, BOTHER << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B57600 << TARGET_IBSHIFT, CIBAUD, B57600 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B115200 << TARGET_IBSHIFT, CIBAUD, B115200 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B230400 << TARGET_IBSHIFT, CIBAUD, B230400 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B460800 << TARGET_IBSHIFT, CIBAUD, B460800 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B500000 << TARGET_IBSHIFT, CIBAUD, B500000 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B576000 << TARGET_IBSHIFT, CIBAUD, B576000 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B921600 << TARGET_IBSHIFT, CIBAUD, B921600 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B1000000 << TARGET_IBSHIFT, CIBAUD, B1000000 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B1152000 << TARGET_IBSHIFT, CIBAUD, B1152000 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B1500000 << TARGET_IBSHIFT, CIBAUD, B1500000 << IBSHIFT },
+	{ TARGET_CIBAUD, TARGET_B2000000 << TARGET_IBSHIFT, CIBAUD, B2000000 << IBSHIFT },
+#ifdef TARGET_B2500000
+	{ TARGET_CIBAUD, TARGET_B2500000 << TARGET_IBSHIFT, CIBAUD, B2500000 << IBSHIFT },
+#endif
+#ifdef TARGET_B3000000
+	{ TARGET_CIBAUD, TARGET_B3000000 << TARGET_IBSHIFT, CIBAUD, B3000000 << IBSHIFT },
+#endif
+#ifdef TARGET_B3500000
+	{ TARGET_CIBAUD, TARGET_B3500000 << TARGET_IBSHIFT, CIBAUD, B3500000 << IBSHIFT },
+#endif
+#ifdef TARGET_B4000000
+	{ TARGET_CIBAUD, TARGET_B4000000 << TARGET_IBSHIFT, CIBAUD, B4000000 << IBSHIFT },
+#endif
 	{ TARGET_CSIZE, TARGET_CS5, CSIZE, CS5 },
 	{ TARGET_CSIZE, TARGET_CS6, CSIZE, CS6 },
 	{ TARGET_CSIZE, TARGET_CS7, CSIZE, CS7 },
openSUSE Build Service is sponsored by