xref: /openbmc/linux/arch/mips/boot/compressed/dbg.c (revision e52dd9fc)
11b93b3c3SWu Zhangjin /*
21b93b3c3SWu Zhangjin  * MIPS-specific debug support for pre-boot environment
31b93b3c3SWu Zhangjin  *
41b93b3c3SWu Zhangjin  * NOTE: putc() is board specific, if your board have a 16550 compatible uart,
51b93b3c3SWu Zhangjin  * please select SYS_SUPPORTS_ZBOOT_UART16550 for your machine. othewise, you
61b93b3c3SWu Zhangjin  * need to implement your own putc().
71b93b3c3SWu Zhangjin  */
8e52dd9fcSWu Zhangjin #include <linux/compiler.h>
91b93b3c3SWu Zhangjin #include <linux/init.h>
101b93b3c3SWu Zhangjin #include <linux/types.h>
111b93b3c3SWu Zhangjin 
12e52dd9fcSWu Zhangjin void __weak putc(char c)
131b93b3c3SWu Zhangjin {
141b93b3c3SWu Zhangjin }
151b93b3c3SWu Zhangjin 
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 
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