xref: /openbmc/linux/arch/mips/boot/compressed/dbg.c (revision b2441318)
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 Zhangjin void __weak putc(char c)
131b93b3c3SWu Zhangjin {
141b93b3c3SWu Zhangjin }
151b93b3c3SWu Zhangjin 
puts(const char * s)161b93b3c3SWu Zhangjin void 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 Zhangjin void 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