diff options
| author | Palmer Dabbelt <palmer@dabbelt.com> | 2017-11-21 11:10:40 -0800 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-11-21 11:10:40 -0800 | 
| commit | 8c43df57d93d25dd69d4fcdbf4b9f2cf28f9789e (patch) | |
| tree | c79dd76d79770cd47fee875be8301cc9db741c08 /bsp/libwrap | |
| parent | 2f8c6978139ed7f7fd88f88a836dde12aa333961 (diff) | |
| parent | 0f23aeed142a47c74ce4e636bce5260f2d294d2f (diff) | |
Merge pull request #79 from sifive/small-puts
Implement a smaller puts
Diffstat (limited to 'bsp/libwrap')
| -rw-r--r-- | bsp/libwrap/libwrap.mk | 3 | ||||
| -rw-r--r-- | bsp/libwrap/sys/puts.c | 26 | 
2 files changed, 28 insertions, 1 deletions
diff --git a/bsp/libwrap/libwrap.mk b/bsp/libwrap/libwrap.mk index 313ed00..ce224ac 100644 --- a/bsp/libwrap/libwrap.mk +++ b/bsp/libwrap/libwrap.mk @@ -26,6 +26,7 @@ LIBWRAP_SRCS := \  	sys/times.c \  	sys/sbrk.c \  	sys/_exit.c \ +	sys/puts.c \  	misc/write_hex.c  LIBWRAP_SRCS := $(foreach f,$(LIBWRAP_SRCS),$(LIBWRAP_DIR)/$(f)) @@ -34,7 +35,7 @@ LIBWRAP_OBJS := $(LIBWRAP_SRCS:.c=.o)  LIBWRAP_SYMS := malloc free \  	open lseek read write fstat stat close link unlink \  	execve fork getpid kill wait \ -	isatty times sbrk _exit +	isatty times sbrk _exit puts  LIBWRAP := libwrap.a 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; +}  | 
