This patch adds a simple btext_prinkf, so I can use it as a printk replacement
for rivafb debugging.
 -- Guido

--- ../linux-2.6.7.orig/arch/ppc/syslib/btext.c	2004-06-16 07:18:52.000000000 +0200
+++ arch/ppc/syslib/btext.c	2004-06-29 09:46:46.000000000 +0200
@@ -390,6 +390,15 @@
 }
 
 void BTEXT
+btext_drawlstring(const char *c, int l)
+{
+	if (!boot_text_mapped)
+		return;
+	while (*c && l--)
+		btext_drawchar(*c++);
+}
+
+void BTEXT
 btext_drawhex(unsigned long v)
 {
 	static char hex_table[] = "0123456789abcdef";
@@ -407,6 +416,81 @@
 	btext_drawchar(' ');
 }
 
+/* simple vprintf */
+int BTEXT
+btext_vprintf(const char* format, va_list ap)
+{
+	int count = 0;
+	const char *str;
+	unsigned int uint;
+
+	if (format != NULL) {
+		while (*format != '\0') {
+			str = strchr(format, '%');
+			if (str == NULL) {
+				count += strlen(format);
+				btext_drawstring(format);
+				break;
+			} else {
+				if (format < str) {
+					unsigned long count;
+					unsigned long len = str - format;
+
+					btext_drawlstring((char *) format, len);
+					count += len;
+				}
+
+				format = str + 1;
+				if(*format == 'l')
+					format = str + 2;
+
+				switch (*format) {
+				case 'p':
+				case 'x':
+					uint = va_arg(ap, unsigned int);
+					btext_drawhex(uint);
+					count += strlen(str);
+					break;
+
+				case 's':
+					str = va_arg(ap, const char *);
+					if( !str )
+						str = "(NULL)";
+					btext_drawstring(str);
+					count += strlen(str);
+					break;
+
+				case '%':
+					btext_drawchar('%');
+					count += 1;
+					break;
+
+				case '\0': /* format error */
+				default:
+					return -1;
+				}
+
+				format += 1;
+			}
+		}
+	}
+	return count;
+}
+
+/* simple printf */
+int BTEXT
+btext_printf(const char *format, ...)
+{
+	va_list ap;
+	int result;
+
+	va_start(ap, format);
+	result = btext_vprintf(format, ap);
+	va_end(ap);
+
+	return result;
+}
+
 static void BTEXT
 draw_byte(unsigned char c, long locX, long locY)
 {
