1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 21b93b3c3SWu Zhangjin /* 31b93b3c3SWu Zhangjin * MIPS-specific debug support for pre-boot environment 41b93b3c3SWu Zhangjin * 51b93b3c3SWu Zhangjin * NOTE: putc() is board specific, if your board have a 16550 compatible uart, 61b93b3c3SWu Zhangjin * please select SYS_SUPPORTS_ZBOOT_UART16550 for your machine. othewise, you 71b93b3c3SWu Zhangjin * need to implement your own putc(). 81b93b3c3SWu Zhangjin */ 9e52dd9fcSWu Zhangjin #include <linux/compiler.h> 101b93b3c3SWu Zhangjin #include <linux/types.h> 111b93b3c3SWu Zhangjin putc(char c)12e52dd9fcSWu Zhangjinvoid __weak putc(char c) 131b93b3c3SWu Zhangjin { 141b93b3c3SWu Zhangjin } 151b93b3c3SWu Zhangjin puts(const char * s)161b93b3c3SWu Zhangjinvoid puts(const char *s) 171b93b3c3SWu Zhangjin { 181b93b3c3SWu Zhangjin char c; 191b93b3c3SWu Zhangjin while ((c = *s++) != '\0') { 201b93b3c3SWu Zhangjin putc(c); 211b93b3c3SWu Zhangjin if (c == '\n') 221b93b3c3SWu Zhangjin putc('\r'); 231b93b3c3SWu Zhangjin } 241b93b3c3SWu Zhangjin } 251b93b3c3SWu Zhangjin puthex(unsigned long long val)261b93b3c3SWu Zhangjinvoid puthex(unsigned long long val) 271b93b3c3SWu Zhangjin { 281b93b3c3SWu Zhangjin 291b93b3c3SWu Zhangjin unsigned char buf[10]; 301b93b3c3SWu Zhangjin int i; 311b93b3c3SWu Zhangjin for (i = 7; i >= 0; i--) { 321b93b3c3SWu Zhangjin buf[i] = "0123456789ABCDEF"[val & 0x0F]; 331b93b3c3SWu Zhangjin val >>= 4; 341b93b3c3SWu Zhangjin } 351b93b3c3SWu Zhangjin buf[8] = '\0'; 361b93b3c3SWu Zhangjin puts(buf); 371b93b3c3SWu Zhangjin } 38