1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * MIPS-specific debug support for pre-boot environment 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * NOTE: putc() is board specific, if your board have a 16550 compatible uart, 6*4882a593Smuzhiyun * please select SYS_SUPPORTS_ZBOOT_UART16550 for your machine. othewise, you 7*4882a593Smuzhiyun * need to implement your own putc(). 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun #include <linux/compiler.h> 10*4882a593Smuzhiyun #include <linux/types.h> 11*4882a593Smuzhiyun putc(char c)12*4882a593Smuzhiyunvoid __weak putc(char c) 13*4882a593Smuzhiyun { 14*4882a593Smuzhiyun } 15*4882a593Smuzhiyun puts(const char * s)16*4882a593Smuzhiyunvoid puts(const char *s) 17*4882a593Smuzhiyun { 18*4882a593Smuzhiyun char c; 19*4882a593Smuzhiyun while ((c = *s++) != '\0') { 20*4882a593Smuzhiyun putc(c); 21*4882a593Smuzhiyun if (c == '\n') 22*4882a593Smuzhiyun putc('\r'); 23*4882a593Smuzhiyun } 24*4882a593Smuzhiyun } 25*4882a593Smuzhiyun puthex(unsigned long long val)26*4882a593Smuzhiyunvoid puthex(unsigned long long val) 27*4882a593Smuzhiyun { 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun unsigned char buf[10]; 30*4882a593Smuzhiyun int i; 31*4882a593Smuzhiyun for (i = 7; i >= 0; i--) { 32*4882a593Smuzhiyun buf[i] = "0123456789ABCDEF"[val & 0x0F]; 33*4882a593Smuzhiyun val >>= 4; 34*4882a593Smuzhiyun } 35*4882a593Smuzhiyun buf[8] = '\0'; 36*4882a593Smuzhiyun puts(buf); 37*4882a593Smuzhiyun } 38