diff options
author | Palmer Dabbelt <palmer@dabbelt.com> | 2017-11-21 10:22:24 -0800 |
---|---|---|
committer | Palmer Dabbelt <palmer@dabbelt.com> | 2017-11-21 10:53:42 -0800 |
commit | 0f23aeed142a47c74ce4e636bce5260f2d294d2f (patch) | |
tree | c79dd76d79770cd47fee875be8301cc9db741c08 /bsp/libwrap/sys | |
parent | 2f8c6978139ed7f7fd88f88a836dde12aa333961 (diff) |
Implement a smaller puts
The e31's init.c calls puts intsead of printf, which oddly enough is a
lot bigger: since we wrap printf, puts pulls in a lot of newlib. This
adds a wrapped puts so it's very small.
Diffstat (limited to 'bsp/libwrap/sys')
-rw-r--r-- | bsp/libwrap/sys/puts.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/bsp/libwrap/sys/puts.c b/bsp/libwrap/sys/puts.c new file mode 100644 index 0000000..f77f1a3 --- /dev/null +++ b/bsp/libwrap/sys/puts.c @@ -0,0 +1,26 @@ +/* See LICENSE of license details. */ + +#include <stdint.h> +#include <errno.h> +#include <unistd.h> +#include <sys/types.h> + +#include "platform.h" +#include "stub.h" + +int __wrap_puts(const char *s) +{ + while (*s != '\0') { + 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'; + } + + ++s; + } + + return 0; +} |