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:
Nicolas Pitre 2017-10-06 19:49:19 +01:00 committed by Russell King
parent e11d1314d8
commit de880632fc
1 changed files with 10 additions and 6 deletions

View File

@ -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);
} }
} }