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 */ 81b93b3c3SWu Zhangjin 91b93b3c3SWu Zhangjin #include <linux/init.h> 101b93b3c3SWu Zhangjin #include <linux/types.h> 111b93b3c3SWu Zhangjin 121b93b3c3SWu Zhangjin void __attribute__ ((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