ARM: 8705/1: early_printk: use printascii() rather than printch()
With printch() the console messages are sent out one character at a time which is agonizingly slow especially with semihosting as the whole trap intercept, remote byte access, and system resume danse is performed for every single character across a relatively slow remote debug connection. Let's use printascii() to send a whole string at once. This is also going to be more efficient, albeit to a quite lesser extent, with serial ports as well. Signed-off-by: Nicolas Pitre <nico@linaro.org> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
This commit is contained in:
parent
e11d1314d8
commit
de880632fc
|
@ -11,16 +11,20 @@
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/console.h>
|
#include <linux/console.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
|
||||||
extern void printch(int);
|
extern void printascii(const char *);
|
||||||
|
|
||||||
static void early_write(const char *s, unsigned n)
|
static void early_write(const char *s, unsigned n)
|
||||||
{
|
{
|
||||||
while (n-- > 0) {
|
char buf[128];
|
||||||
if (*s == '\n')
|
while (n) {
|
||||||
printch('\r');
|
unsigned l = min(n, sizeof(buf)-1);
|
||||||
printch(*s);
|
memcpy(buf, s, l);
|
||||||
s++;
|
buf[l] = 0;
|
||||||
|
s += l;
|
||||||
|
n -= l;
|
||||||
|
printascii(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue