xref: /OK3568_Linux_fs/kernel/arch/mips/boot/compressed/dbg.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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*4882a593Smuzhiyun void __weak putc(char c)
13*4882a593Smuzhiyun {
14*4882a593Smuzhiyun }
15*4882a593Smuzhiyun 
puts(const char * s)16*4882a593Smuzhiyun void 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*4882a593Smuzhiyun void 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