1 // SPDX-License-Identifier: GPL-2.0 << 2 /* 1 /* 3 * Copyright IBM Corp. 2017 !! 2 * This file is subject to the terms and conditions of the GNU General Public >> 3 * License. See the file "COPYING" in the main directory of this archive >> 4 * for more details. >> 5 * >> 6 * Copyright (c) 2014 Finn Thain 4 */ 7 */ 5 8 6 #include <linux/console.h> << 7 #include <linux/kernel.h> 9 #include <linux/kernel.h> >> 10 #include <linux/console.h> 8 #include <linux/init.h> 11 #include <linux/init.h> >> 12 #include <linux/string.h> 9 #include <asm/setup.h> 13 #include <asm/setup.h> 10 #include <asm/sclp.h> << 11 14 12 static void sclp_early_write(struct console *c !! 15 >> 16 #include "../mvme16x/mvme16x.h" >> 17 >> 18 asmlinkage void __init debug_cons_nputs(const char *s, unsigned n); >> 19 >> 20 static void __ref debug_cons_write(struct console *c, >> 21 const char *s, unsigned n) 13 { 22 { 14 __sclp_early_printk(s, len); !! 23 #if !(defined(CONFIG_SUN3) || defined(CONFIG_M68000) || \ >> 24 defined(CONFIG_COLDFIRE)) >> 25 if (MACH_IS_MVME16x) >> 26 mvme16x_cons_write(c, s, n); >> 27 else >> 28 debug_cons_nputs(s, n); >> 29 #endif 15 } 30 } 16 31 17 static struct console sclp_early_console = { !! 32 static struct console early_console_instance = { 18 .name = "earlysclp", !! 33 .name = "debug", 19 .write = sclp_early_write, !! 34 .write = debug_cons_write, 20 .flags = CON_PRINTBUFFER | CON_BOOT, 35 .flags = CON_PRINTBUFFER | CON_BOOT, 21 .index = -1, !! 36 .index = -1 22 }; 37 }; 23 38 24 void __init register_early_console(void) !! 39 static int __init setup_early_printk(char *buf) 25 { 40 { 26 if (early_console) !! 41 if (early_console || buf) 27 return; !! 42 return 0; 28 if (!sclp.has_linemode && !sclp.has_vt !! 43 29 return; !! 44 early_console = &early_console_instance; 30 early_console = &sclp_early_console; << 31 register_console(early_console); 45 register_console(early_console); >> 46 >> 47 return 0; 32 } 48 } >> 49 early_param("earlyprintk", setup_early_printk); 33 50 34 static int __init setup_early_printk(char *buf !! 51 /* >> 52 * debug_cons_nputs() defined in arch/m68k/kernel/head.S cannot be called >> 53 * after init sections are discarded (for platforms that use it). >> 54 */ >> 55 #if !(defined(CONFIG_SUN3) || defined(CONFIG_M68000) || \ >> 56 defined(CONFIG_COLDFIRE)) >> 57 >> 58 static int __init unregister_early_console(void) 35 { 59 { 36 if (early_console) !! 60 if (!early_console || MACH_IS_MVME16x) 37 return 0; 61 return 0; 38 /* Accept only "earlyprintk" and "earl !! 62 39 if (buf && !str_has_prefix(buf, "sclp" !! 63 return unregister_console(early_console); 40 return 0; << 41 register_early_console(); << 42 return 0; << 43 } 64 } 44 early_param("earlyprintk", setup_early_printk) !! 65 late_initcall(unregister_early_console); >> 66 >> 67 #endif 45 68
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.