1 /* 2 * linux/arch/arm/kernel/early_printk.c 3 * 4 * Copyright (C) 2009 Sascha Hauer <s.hauer@pengutronix.de> 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 */ 10 11 #include <linux/kernel.h> 12 #include <linux/console.h> 13 #include <linux/init.h> 14 #include <linux/string.h> 15 16 extern void printascii(const char *); 17 18 static void early_write(const char *s, unsigned n) 19 { 20 char buf[128]; 21 while (n) { 22 unsigned l = min(n, sizeof(buf)-1); 23 memcpy(buf, s, l); 24 buf[l] = 0; 25 s += l; 26 n -= l; 27 printascii(buf); 28 } 29 } 30 31 static void early_console_write(struct console *con, const char *s, unsigned n) 32 { 33 early_write(s, n); 34 } 35 36 static struct console early_console_dev = { 37 .name = "earlycon", 38 .write = early_console_write, 39 .flags = CON_PRINTBUFFER | CON_BOOT, 40 .index = -1, 41 }; 42 43 static int __init setup_early_printk(char *buf) 44 { 45 early_console = &early_console_dev; 46 register_console(&early_console_dev); 47 return 0; 48 } 49 50 early_param("earlyprintk", setup_early_printk); 51