diff options
author | David S. Miller <davem@davemloft.net> | 2010-11-30 20:15:58 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-11-30 20:15:58 -0800 |
commit | 595a251c0740785fd3c0d2156d78578c7479811e (patch) | |
tree | 513cee9d682b12c2c4e490f7e91422e82530c4b8 /arch/sparc/include | |
parent | 12c7a35ee6a1c605e740733f2cbd5b5079f09f0f (diff) | |
download | op-kernel-dev-595a251c0740785fd3c0d2156d78578c7479811e.zip op-kernel-dev-595a251c0740785fd3c0d2156d78578c7479811e.tar.gz |
sparc: Write to prom console using indirect buffer.
sparc64 systems have a restriction in that passing in buffer
addressses above 4GB to prom calls is not reliable.
We end up violating this when we do prom console writes, because we
use an on-stack buffer to translate '\n' into '\r\n'.
So instead, do this translation into an intermediate buffer, which is
in the kernel image and thus below 4GB, then pass that to the PROM
console write calls.
On the 32-bit side we don't have to deal with any of these issues, so
the new prom_console_write_buf() uses the existing prom_nbputchar()
implementation. However we can now mark those routines static.
Since the 64-bit side completely uses new code we can delete the
putchar bits as they are now completely unused.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/include')
-rw-r--r-- | arch/sparc/include/asm/oplib_32.h | 4 | ||||
-rw-r--r-- | arch/sparc/include/asm/oplib_64.h | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/arch/sparc/include/asm/oplib_32.h b/arch/sparc/include/asm/oplib_32.h index 40bc9ef..9e5c640 100644 --- a/arch/sparc/include/asm/oplib_32.h +++ b/arch/sparc/include/asm/oplib_32.h @@ -102,8 +102,8 @@ extern int prom_getrev(void); /* Get the prom firmware revision. */ extern int prom_getprev(void); -/* Blocking put character to console. */ -extern void prom_putchar(const char *buf); +/* Write a buffer of characters to the console. */ +extern void prom_console_write_buf(const char *buf, int len); /* Prom's internal routines, don't use in kernel/boot code. */ extern void prom_printf(const char *fmt, ...); diff --git a/arch/sparc/include/asm/oplib_64.h b/arch/sparc/include/asm/oplib_64.h index d461373..8cd0df3 100644 --- a/arch/sparc/include/asm/oplib_64.h +++ b/arch/sparc/include/asm/oplib_64.h @@ -94,8 +94,8 @@ extern void prom_halt_power_off(void) __attribute__ ((noreturn)); */ extern unsigned char prom_get_idprom(char *idp_buffer, int idpbuf_size); -/* Blocking put character to console. */ -extern void prom_putchar(const char *buf); +/* Write a buffer of characters to the console. */ +extern void prom_console_write_buf(const char *buf, int len); /* Prom's internal routines, don't use in kernel/boot code. */ extern void prom_printf(const char *fmt, ...); |