diff options
author | Robert Reif <reif@earthlink.net> | 2008-12-08 03:59:17 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-08 04:00:14 -0500 |
commit | efe6c3dd8b7df809d46fb521eb9af471c47ed608 (patch) | |
tree | 300fa5d19b6add2e54a0b7e8810b532505c26de8 /arch/sparc/prom/printf.c | |
parent | 89b409f77017171c55e79628eefc557126c8fd7f (diff) |
sparc: Use sparc64 version of prom/printf.c
Use sparc64 version of prom/printf.c.
The only differences for sparc32 is that prom_printf is no longer
exported for modules which should be OK.
Signed-off-by: Robert Reif <reif@earthlink.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/prom/printf.c')
-rw-r--r-- | arch/sparc/prom/printf.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/arch/sparc/prom/printf.c b/arch/sparc/prom/printf.c new file mode 100644 index 000000000000..660943ee4c2a --- /dev/null +++ b/arch/sparc/prom/printf.c | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * printf.c: Internal prom library printf facility. | ||
3 | * | ||
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | ||
5 | * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | ||
6 | * Copyright (c) 2002 Pete Zaitcev (zaitcev@yahoo.com) | ||
7 | * | ||
8 | * We used to warn all over the code: DO NOT USE prom_printf(), | ||
9 | * and yet people do. Anton's banking code was outputting banks | ||
10 | * with prom_printf for most of the 2.4 lifetime. Since an effective | ||
11 | * stick is not available, we deployed a carrot: an early printk | ||
12 | * through PROM by means of -p boot option. This ought to fix it. | ||
13 | * USE printk; if you need, deploy -p. | ||
14 | */ | ||
15 | |||
16 | #include <linux/kernel.h> | ||
17 | |||
18 | #include <asm/openprom.h> | ||
19 | #include <asm/oplib.h> | ||
20 | |||
21 | static char ppbuf[1024]; | ||
22 | |||
23 | void | ||
24 | prom_write(const char *buf, unsigned int n) | ||
25 | { | ||
26 | char ch; | ||
27 | |||
28 | while (n != 0) { | ||
29 | --n; | ||
30 | if ((ch = *buf++) == '\n') | ||
31 | prom_putchar('\r'); | ||
32 | prom_putchar(ch); | ||
33 | } | ||
34 | } | ||
35 | |||
36 | void | ||
37 | prom_printf(const char *fmt, ...) | ||
38 | { | ||
39 | va_list args; | ||
40 | int i; | ||
41 | |||
42 | va_start(args, fmt); | ||
43 | i = vscnprintf(ppbuf, sizeof(ppbuf), fmt, args); | ||
44 | va_end(args); | ||
45 | |||
46 | prom_write(ppbuf, i); | ||
47 | } | ||