Index: sys/dev/wscons/wsdisplayvar.h
===================================================================
RCS file: /cvsroot/src/sys/dev/wscons/wsdisplayvar.h,v
retrieving revision 1.53
diff -p -u -r1.53 wsdisplayvar.h
--- sys/dev/wscons/wsdisplayvar.h	26 Sep 2018 09:04:12 -0000	1.53
+++ sys/dev/wscons/wsdisplayvar.h	4 Dec 2018 09:14:05 -0000
@@ -83,6 +83,12 @@ struct wsdisplay_emulops {
 #define WSATTR_BLINK	4
 #define WSATTR_UNDERLINE 8
 #define WSATTR_WSCOLORS 16
+#define WSATTR_USERMASK 0x0fff
+/* private flags used by the driver */
+#define WSATTR_PRIVATE1  4096
+#define WSATTR_PRIVATE2  8192
+#define WSATTR_PRIVATE3 16384
+#define WSATTR_PRIVATE4 32768
 	/* XXX need a free_attr() ??? */
 	void	(*replaceattr)(void *, long, long);
 };
Index: sys/dev/rasops/rasops.c
===================================================================
RCS file: /cvsroot/src/sys/dev/rasops/rasops.c,v
retrieving revision 1.78
diff -p -u -r1.78 rasops.c
--- sys/dev/rasops/rasops.c	29 Nov 2018 23:44:50 -0000	1.78
+++ sys/dev/rasops/rasops.c	4 Dec 2018 09:14:05 -0000
@@ -570,13 +570,13 @@ rasops_allocattr_color(void *cookie, int
 	if ((flg & WSATTR_HILIT) != 0)
 		fg += 8;
 
-	flg = ((flg & WSATTR_UNDERLINE) ? 1 : 0);
+	flg = flg & WSATTR_USERMASK;
 
 	if (rasops_isgray[fg])
-		flg |= 2;
+		flg |= WSATTR_PRIVATE1;
 
 	if (rasops_isgray[bg])
-		flg |= 4;
+		flg |= WSATTR_PRIVATE2;
 
 	*attr = (bg << 16) | (fg << 24) | flg;
 	return (0);
@@ -903,7 +903,7 @@ rasops_unpack_attr(long attr, int *fg, i
 	*fg = ((u_int)attr >> 24) & 0xf;
 	*bg = ((u_int)attr >> 16) & 0xf;
 	if (underline != NULL)
-		*underline = (u_int)attr & 1;
+		*underline = (u_int)attr & WSATTR_UNDERLINE;
 }
 
 /*
@@ -1366,7 +1366,7 @@ rasops_putchar_rotated_cw(void *cookie, 
 
 	/* Do rotated char sans (side)underline */
 	ri->ri_real_ops.putchar(cookie, col, ri->ri_rows - row - 1, uc,
-	    attr & ~1);
+	    attr & ~WSATTR_UNDERLINE);
 
 	/* Do rotated underline */
 	rp = ri->ri_bits + col * ri->ri_yscale + (ri->ri_rows - row - 1) * 
@@ -1374,7 +1374,7 @@ rasops_putchar_rotated_cw(void *cookie, 
 	height = ri->ri_font->fontheight;
 
 	/* XXX this assumes 16-bit color depth */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		int16_t c = (int16_t)ri->ri_devcmap[((u_int)attr >> 24) & 0xf];
 
 		while (height--) {
@@ -1493,7 +1493,7 @@ rasops_putchar_rotated_ccw(void *cookie,
 
 	/* Do rotated char sans (side)underline */
 	ri->ri_real_ops.putchar(cookie, ri->ri_cols - col - 1, row, uc,
-	    attr & ~1);
+	    attr & ~WSATTR_UNDERLINE);
 
 	/* Do rotated underline */
 	rp = ri->ri_bits + (ri->ri_cols - col - 1) * ri->ri_yscale +
@@ -1502,7 +1502,7 @@ rasops_putchar_rotated_ccw(void *cookie,
 	height = ri->ri_font->fontheight;
 
 	/* XXX this assumes 16-bit color depth */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		int16_t c = (int16_t)ri->ri_devcmap[((u_int)attr >> 24) & 0xf];
 
 		while (height--) {
Index: sys/dev/rasops/rasops1.c
===================================================================
RCS file: /cvsroot/src/sys/dev/rasops/rasops1.c,v
retrieving revision 1.23
diff -p -u -r1.23 rasops1.c
--- sys/dev/rasops/rasops1.c	4 May 2010 04:57:34 -0000	1.23
+++ sys/dev/rasops/rasops1.c	4 Dec 2018 09:14:05 -0000
@@ -180,7 +180,7 @@ rasops1_putchar(void *cookie, int row, i
 		}
 
 		/* Do underline */
-		if ((attr & 1) != 0) {
+		if ((attr & WSATTR_UNDERLINE) != 0) {
 			DELTA(rp, -(ri->ri_stride << 1), int32_t *);
 			tmp = (*rp & lmask) | (fg & rmask);
 			*rp = tmp;
@@ -257,7 +257,7 @@ rasops1_putchar(void *cookie, int row, i
 		}
 
 		/* Do underline */
-		if ((attr & 1) != 0) {
+		if ((attr & WSATTR_UNDERLINE) != 0) {
 			DELTA(rp, -(ri->ri_stride << 1), int32_t *);
 			tmp = (rp[0] & lmask) | (fg & ~lmask);
 			tmp2 = (rp[1] & rmask) | (fg & ~rmask);
@@ -344,7 +344,7 @@ rasops1_putchar8(void *cookie, int row, 
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		rp[-(ri->ri_stride << 1)] = fg;
 		if (ri->ri_hwbits) {
 			hrp[-(ri->ri_stride << 1)] = fg;
@@ -426,7 +426,7 @@ rasops1_putchar16(void *cookie, int row,
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		/* XXX alignment?! */
 		*(int16_t *)(rp - (ri->ri_stride << 1)) = fg;
 		if (ri->ri_hwbits) {
Index: sys/dev/rasops/rasops15.c
===================================================================
RCS file: /cvsroot/src/sys/dev/rasops/rasops15.c,v
retrieving revision 1.21
diff -p -u -r1.21 rasops15.c
--- sys/dev/rasops/rasops15.c	25 Jan 2017 14:53:43 -0000	1.21
+++ sys/dev/rasops/rasops15.c	4 Dec 2018 09:14:05 -0000
@@ -191,7 +191,7 @@ rasops15_putchar(void *cookie, int row, 
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		int16_t c = (int16_t)clr[1];
 		rp -= ri->ri_stride << 1;
 		if (ri->ri_hwbits)
@@ -292,7 +292,7 @@ rasops15_putchar_aa(void *cookie, int ro
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 	        rp = (uint16_t *)rrp;
 		DELTA(rp, (ri->ri_stride * (height - 2)), int16_t *);
 		while (width--)
@@ -412,7 +412,7 @@ rasops15_putchar8(void *cookie, int row,
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		int32_t c = STAMP_READ(28);
 
 		DELTA(rp, -(ri->ri_stride << 1), int32_t *);
@@ -518,7 +518,7 @@ rasops15_putchar12(void *cookie, int row
 	}
 
 	/* Do underline */
-	if (attr & 1) {
+	if (attr & WSATTR_UNDERLINE) {
 		int32_t c = STAMP_READ(28);
 
 		DELTA(rp, -(ri->ri_stride << 1), int32_t *);
@@ -633,7 +633,7 @@ rasops15_putchar16(void *cookie, int row
 	}
 
 	/* Do underline */
-	if (attr & 1) {
+	if (attr & WSATTR_UNDERLINE) {
 		int32_t c = STAMP_READ(28);
 
 		DELTA(rp, -(ri->ri_stride << 1), int32_t *);
Index: sys/dev/rasops/rasops2.c
===================================================================
RCS file: /cvsroot/src/sys/dev/rasops/rasops2.c,v
retrieving revision 1.18
diff -p -u -r1.18 rasops2.c
--- sys/dev/rasops/rasops2.c	21 Apr 2013 04:28:05 -0000	1.18
+++ sys/dev/rasops/rasops2.c	4 Dec 2018 09:14:05 -0000
@@ -159,7 +159,7 @@ rasops2_putchar(void *cookie, int row, i
 		}
 
 		/* Do underline */
-		if (attr & 1) {
+		if (attr & WSATTR_UNDERLINE) {
 			DELTA(rp, -(ri->ri_stride << 1), int32_t *);
 			*rp = (*rp & lmask) | (fg & rmask);
 		}
@@ -196,7 +196,7 @@ rasops2_putchar(void *cookie, int row, i
 		}
 
 		/* Do underline */
-		if (attr & 1) {
+		if (attr & WSATTR_UNDERLINE) {
 			DELTA(rp, -(ri->ri_stride << 1), int32_t *);
 			rp[0] = (rp[0] & lmask) | (fg & ~lmask);
 			rp[1] = (rp[1] & rmask) | (fg & ~rmask);
@@ -309,7 +309,7 @@ rasops2_putchar8(void *cookie, int row, 
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0)
+	if ((attr & WSATTR_UNDERLINE) != 0)
 		*(int16_t *)(rp - (ri->ri_stride << 1)) = stamp[15];
 
 	stamp_mutex--;
@@ -375,7 +375,7 @@ rasops2_putchar12(void *cookie, int row,
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		rp -= ri->ri_stride << 1;
 		rp[0] = rp[1] = rp[2] = stamp[15];
 	}
@@ -444,7 +444,7 @@ rasops2_putchar16(void *cookie, int row,
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0)
+	if ((attr & WSATTR_UNDERLINE) != 0)
 		*(int32_t *)(rp - (ri->ri_stride << 1)) = stamp[15];
 
 	stamp_mutex--;
Index: sys/dev/rasops/rasops24.c
===================================================================
RCS file: /cvsroot/src/sys/dev/rasops/rasops24.c,v
retrieving revision 1.29
diff -p -u -r1.29 rasops24.c
--- sys/dev/rasops/rasops24.c	25 Jul 2011 18:02:47 -0000	1.29
+++ sys/dev/rasops/rasops24.c	4 Dec 2018 09:14:05 -0000
@@ -178,7 +178,7 @@ rasops24_putchar(void *cookie, int row, 
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		u_char c = clr[1];
 
 		rp -= ri->ri_stride << 1;
@@ -299,7 +299,7 @@ rasops24_putchar8(void *cookie, int row,
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		int32_t c = STAMP_READ(52);
 
 		DELTA(rp, -(ri->ri_stride << 1), int32_t *);
@@ -381,7 +381,7 @@ rasops24_putchar12(void *cookie, int row
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		int32_t c = STAMP_READ(52);
 
 		DELTA(rp, -(ri->ri_stride << 1), int32_t *);
@@ -470,7 +470,7 @@ rasops24_putchar16(void *cookie, int row
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		int32_t c = STAMP_READ(52);
 
 		DELTA(rp, -(ri->ri_stride << 1), int32_t *);
@@ -497,7 +497,7 @@ rasops24_eraserows(void *cookie, int row
 	 * If the color is gray, we can cheat and use the generic routines
 	 * (which are faster, hopefully) since the r,g,b values are the same.
 	 */
-	if ((attr & 4) != 0) {
+	if ((attr & WSATTR_PRIVATE2) != 0) {
 		rasops_eraserows(cookie, row, num, attr);
 		return;
 	}
@@ -599,7 +599,7 @@ rasops24_erasecols(void *cookie, int row
 	 * If the color is gray, we can cheat and use the generic routines
 	 * (which are faster, hopefully) since the r,g,b values are the same.
 	 */
-	if ((attr & 4) != 0) {
+	if ((attr & WSATTR_PRIVATE2) != 0) {
 		rasops_erasecols(cookie, row, col, num, attr);
 		return;
 	}
Index: sys/dev/rasops/rasops4.c
===================================================================
RCS file: /cvsroot/src/sys/dev/rasops/rasops4.c,v
retrieving revision 1.11
diff -p -u -r1.11 rasops4.c
--- sys/dev/rasops/rasops4.c	21 Apr 2013 04:28:05 -0000	1.11
+++ sys/dev/rasops/rasops4.c	4 Dec 2018 09:14:05 -0000
@@ -159,7 +159,7 @@ rasops4_putchar(void *cookie, int row, i
 		}
 
 		/* Do underline */
-		if (attr & 1) {
+		if (attr & WS_UNDERLINE) {
 			DELTA(rp, -(ri->ri_stride << 1), int32_t *);
 			*rp = (*rp & lmask) | (fg & rmask);
 		}
@@ -196,7 +196,7 @@ rasops4_putchar(void *cookie, int row, i
 		}
 
 		/* Do underline */
-		if (attr & 1) {
+		if (attr & WS_UNDERLINE) {
 			DELTA(rp, -(ri->ri_stride << 1), int32_t *);
 			rp[0] = (rp[0] & lmask) | (fg & ~lmask);
 			rp[1] = (rp[1] & rmask) | (fg & ~rmask);
@@ -311,7 +311,7 @@ rasops4_putchar8(void *cookie, int row, 
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WS_UNDERLINE) != 0) {
 		rp -= (rs << 1);
 		rp[0] = stamp[15];
 		rp[1] = stamp[15];
@@ -383,7 +383,7 @@ rasops4_putchar12(void *cookie, int row,
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WS_UNDERLINE) != 0) {
 		rp -= (rs << 1);
 		rp[0] = stamp[15];
 		rp[1] = stamp[15];
@@ -458,7 +458,7 @@ rasops4_putchar16(void *cookie, int row,
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WS_UNDERLINE) != 0) {
 		rp -= (rs << 1);
 		rp[0] = stamp[15];
 		rp[1] = stamp[15];
Index: sys/dev/rasops/rasops8.c
===================================================================
RCS file: /cvsroot/src/sys/dev/rasops/rasops8.c,v
retrieving revision 1.34
diff -p -u -r1.34 rasops8.c
--- sys/dev/rasops/rasops8.c	15 Sep 2013 09:41:55 -0000	1.34
+++ sys/dev/rasops/rasops8.c	4 Dec 2018 09:14:05 -0000
@@ -175,7 +175,7 @@ rasops8_putchar(void *cookie, int row, i
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		u_char c = clr[1];
 
 		rp -= (ri->ri_stride << 1);
@@ -278,7 +278,7 @@ rasops8_putchar_aa(void *cookie, int row
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 
 		rp -= (ri->ri_stride << 1);
 		if (ri->ri_hwbits)
@@ -406,7 +406,7 @@ rasops8_putchar8(void *cookie, int row, 
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		DELTA(rp, -(ri->ri_stride << 1), int32_t *);
 		rp[0] = rp[1] = stamp[15];
 		if (ri->ri_hwbits) {
@@ -500,7 +500,7 @@ rasops8_putchar12(void *cookie, int row,
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		DELTA(rp, -(ri->ri_stride << 1), int32_t *);
 		rp[0] = rp[1] = rp[2] = stamp[15];
 		if (ri->ri_hwbits) {
@@ -595,7 +595,7 @@ rasops8_putchar16(void *cookie, int row,
 	}
 
 	/* Do underline */
-	if ((attr & 1) != 0) {
+	if ((attr & WSATTR_UNDERLINE) != 0) {
 		DELTA(rp, -(ri->ri_stride << 1), int32_t *);
 		rp[0] = rp[1] = rp[2] = rp[3] = stamp[15];
 		if (ri->ri_hwbits) {
