| 
									
										
										
										
											2008-07-17 21:16:08 +02:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |  * printf.c:  Internal prom library printf facility. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* This routine is internal to the prom library, no one else should know
 | 
					
						
							|  |  |  |  * about or use it!  It's simple and smelly anyway.... | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/kernel.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <asm/openprom.h>
 | 
					
						
							|  |  |  | #include <asm/oplib.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_KGDB
 | 
					
						
							|  |  |  | extern int kgdb_initialized; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static char ppbuf[1024]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void | 
					
						
							|  |  |  | prom_printf(char *fmt, ...) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	va_list args; | 
					
						
							|  |  |  | 	char ch, *bptr; | 
					
						
							|  |  |  | 	int i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	va_start(args, fmt); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_KGDB
 | 
					
						
							|  |  |  | 	ppbuf[0] = 'O'; | 
					
						
							|  |  |  | 	i = vsprintf(ppbuf + 1, fmt, args) + 1; | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | 	i = vsprintf(ppbuf, fmt, args); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	bptr = ppbuf; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_KGDB
 | 
					
						
							|  |  |  | 	if (kgdb_initialized) { | 
					
						
							|  |  |  | 		printk("kgdb_initialized = %d\n", kgdb_initialized); | 
					
						
							|  |  |  | 		putpacket(bptr, 1); | 
					
						
							|  |  |  | 	} else | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | 	while((ch = *(bptr++)) != 0) { | 
					
						
							|  |  |  | 		if(ch == '\n') | 
					
						
							|  |  |  | 			prom_putchar('\r'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		prom_putchar(ch); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 	va_end(args); | 
					
						
							|  |  |  | 	return; | 
					
						
							|  |  |  | } |