Index: radeonfb.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/radeonfb.c,v
retrieving revision 1.34
diff -u -w -r1.34 radeonfb.c
--- radeonfb.c	23 Jul 2009 07:21:45 -0000	1.34
+++ radeonfb.c	27 Apr 2010 19:37:25 -0000
@@ -220,7 +220,7 @@
 	0, 0,		/* ncols, nrows */
 	NULL,		/* textops */
 	8, 16,		/* fontwidth, fontheight */
-	WSSCREEN_WSCOLORS, /* capabilities */
+	WSSCREEN_WSCOLORS | WSSCREEN_REVERSE, /* capabilities */
 	0,		/* modecookie */
 };
 
@@ -2169,7 +2169,7 @@
 	 * XXX: font selection should be based on properties, with some
 	 * normal/reasonable default.
 	 */
-	ri->ri_caps = WSSCREEN_WSCOLORS;
+	ri->ri_caps = WSSCREEN_WSCOLORS | WSSCREEN_REVERSE;
 
 	/* initialize and look for an initial font */
 	rasops_init(ri, dp->rd_virty/8, dp->rd_virtx/8);
@@ -2348,21 +2348,28 @@
 	struct rasops_info	*ri = cookie;
 	struct vcons_screen	*scr = ri->ri_hw;
 	struct radeonfb_display	*dp = scr->scr_cookie;
+	struct wsdisplay_font	*font = PICK_FONT(ri, c);
 	uint32_t		x, y, w, h;
-	uint32_t		bg, fg;
+	uint32_t		bg, fg, flg;
 	uint8_t			*data;
 
 	if (dp->rd_wsmode != WSDISPLAYIO_MODE_EMUL)
 		return;
 
-	if (!CHAR_IN_FONT(c, ri->ri_font))
+	if (!CHAR_IN_FONT(c, font))
 		return;
 
-	w = ri->ri_font->fontwidth;
-	h = ri->ri_font->fontheight;
+	w = font->fontwidth;
+	h = font->fontheight;
 
+	flg = attr & 0xff;
+	if (flg & WSATTR_REVERSE) {
+		fg = ri->ri_devcmap[(attr >> 16) & 0xf];
+		bg = ri->ri_devcmap[(attr >> 24) & 0xf];
+	} else {
 	bg = ri->ri_devcmap[(attr >> 16) & 0xf];
 	fg = ri->ri_devcmap[(attr >> 24) & 0xf];
+	}
 
 	x = ri->ri_xorigin + col * w;
 	y = ri->ri_yorigin + row * h;
@@ -2370,8 +2377,8 @@
 	if (c == 0x20) {
 		radeonfb_rectfill(dp, x, y, w, h, bg);
 	} else {
-		data = (uint8_t *)ri->ri_font->data +
-		    (c - ri->ri_font->firstchar) * ri->ri_fontscale;
+		data = (uint8_t *)font->data +
+		    (c - font->firstchar) * ri->ri_fontscale;
 
 		radeonfb_setup_mono(dp, x, y, w, h, fg, bg);
 		radeonfb_feed_bytes(dp, ri->ri_fontscale, data);
