57 lines
		
	
	
		
			959 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			959 B
		
	
	
	
		
			C
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0
 | |
| /*
 | |
|  * 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) {
 | |
| 		pr_info("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;
 | |
| }
 |