/* See LICENSE of license details. */ #include #include #include #include #include "platform.h" #include "semihosting.h" #include "stub.h" #include "weak_under_alias.h" int __wrap_puts(const char *s) { #if defined(SEMIHOSTING) sh_write0(s); return 0; #endif while (*s != '\0') { #if defined(BOARD_ehrenberg) || defined(BOARD_tgc_vp) while (get_uart_rx_tx_reg_tx_free(uart) == 0) ; uart_write(uart, *s); #elif defined(BOARD_iss) *((uint32_t *)0xFFFF0000) = *s; #elif defined(BOARD_TGCP) // TODO: implement #else while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ; UART0_REG(UART_REG_TXFIFO) = *s; if (*s == '\n') { while (UART0_REG(UART_REG_TXFIFO) & 0x80000000) ; UART0_REG(UART_REG_TXFIFO) = '\r'; } #endif ++s; } return 0; } weak_under_alias(puts);