struct ao_stdio ao_stdios[AO_NUM_STDIOS];
#if AO_NUM_STDIOS > 1
-int8_t ao_cur_stdio;
-int8_t ao_num_stdios;
+uint8_t ao_cur_stdio;
+uint8_t ao_num_stdios;
#else
-int8_t ao_cur_stdio;
+uint8_t ao_cur_stdio;
#define ao_cur_stdio 0
#define ao_num_stdios 0
#endif
ao_getchar(void)
{
int c;
- int8_t stdio;
+ uint8_t stdio;
ao_arch_block_interrupts();
stdio = ao_cur_stdio;
ao_cur_stdio = stdio;
#endif
ao_arch_release_interrupts();
- return c;
+ return (char) c;
}
uint8_t
return ao_stdios[ao_cur_stdio].echo;
}
-int8_t
+uint8_t
ao_add_stdio(int (*_pollchar)(void),
void (*putchar)(char),
void (*_flush)(void))
static FILE __stdio = FDEV_SETUP_STREAM(ao_putc, ao_getc, ao_flushc, _FDEV_SETUP_RW);
+#ifdef PICOLIBC_STDIO_GLOBALS
+
+#ifdef __strong_reference
+#define STDIO_ALIAS(x) __strong_reference(stdin, x);
+#else
+#define STDIO_ALIAS(x) FILE *const x = &__stdio;
+#endif
+
+FILE *const stdin = &__stdio;
+STDIO_ALIAS(stdout);
+STDIO_ALIAS(stderr);
+
+#else
+
FILE *const __iob[3] = { &__stdio, &__stdio, &__stdio };
+
+#endif