diff options
author | Keith Packard <keithp@keithp.com> | 2018-08-05 12:23:22 +0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2018-10-13 08:21:58 -0700 |
commit | 7c04888cf9809e0c73f0813c74e8dd972facde3a (patch) | |
tree | ebb43ee5aa61cc65ce28595c19b4dd3c19812ead /src/kernel | |
parent | 56629222711ba3ef7853405c9b07ad614fb29b95 (diff) |
altos: Switch to newlib-nano for libc on arm
Stop using pdclib
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/kernel')
-rw-r--r-- | src/kernel/ao.h | 9 | ||||
-rw-r--r-- | src/kernel/ao_stdio.c | 35 |
2 files changed, 42 insertions, 2 deletions
diff --git a/src/kernel/ao.h b/src/kernel/ao.h index 0a3981d7..204eaae7 100644 --- a/src/kernel/ao.h +++ b/src/kernel/ao.h @@ -26,6 +26,15 @@ #include <ao_pins.h> #include <ao_arch.h> +/* replace stdio macros with direct calls to our functions */ +#undef putchar +#undef getchar +#define putchar(c) ao_putchar(c) +#define getchar ao_getchar + +extern int ao_putchar(char c); +extern char ao_getchar(void); + #define TRUE 1 #define FALSE 0 diff --git a/src/kernel/ao_stdio.c b/src/kernel/ao_stdio.c index dc09b5c7..227499c8 100644 --- a/src/kernel/ao_stdio.c +++ b/src/kernel/ao_stdio.c @@ -83,7 +83,7 @@ __pdata int8_t ao_cur_stdio; #define ao_num_stdios 0 #endif -void +int ao_putchar(char c) { #if LOW_LEVEL_DEBUG @@ -92,12 +92,13 @@ ao_putchar(char c) if (c == '\n') ao_debug_out('\r'); ao_debug_out(c); - return; + return 0; } #endif if (c == '\n') (*ao_stdios[ao_cur_stdio].putchar)('\r'); (*ao_stdios[ao_cur_stdio].putchar)(c); + return 0; } void @@ -158,3 +159,33 @@ ao_add_stdio(int (*_pollchar)(void), return 0; #endif } + +/* + * Basic I/O functions to support newlib tinystdio package + */ + +static int +ao_putc(char c, FILE *ignore) +{ + (void) ignore; + return ao_putchar(c); +} + +static int +ao_getc(FILE *ignore) +{ + (void) ignore; + return ao_getchar(); +} + +static int +ao_flushc(FILE *ignore) +{ + (void) ignore; + flush(); + return 0; +} + +static FILE __stdio = FDEV_SETUP_STREAM(ao_putc, ao_getc, ao_flushc, _FDEV_SETUP_RW); + +FILE *const __iob[3] = { &__stdio, &__stdio, &__stdio }; |