diff options
author | Wojtek Kosior <kwojtus@protonmail.com> | 2019-12-30 14:36:31 +0100 |
---|---|---|
committer | Wojtek Kosior <kwojtus@protonmail.com> | 2019-12-30 14:36:31 +0100 |
commit | 26685f5203bc38cfa082b96182a406f4f7e6435a (patch) | |
tree | 5566b6812c7cc127da597a08a6824616b2aa5bb5 /PL0_utils.c | |
parent | ee8668f9fcd952e4952706789bdde7fd223dacb5 (diff) | |
download | rpi-MMU-example-26685f5203bc38cfa082b96182a406f4f7e6435a.tar.gz rpi-MMU-example-26685f5203bc38cfa082b96182a406f4f7e6435a.zip |
implement getchar() and putchar() in terms of supervisor call
Diffstat (limited to 'PL0_utils.c')
-rw-r--r-- | PL0_utils.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/PL0_utils.c b/PL0_utils.c new file mode 100644 index 0000000..2cede90 --- /dev/null +++ b/PL0_utils.c @@ -0,0 +1,27 @@ +#include <stddef.h> +#include <stdint.h> + +#include "svc_interface.h" + +// most generic definition possible +// the actual function defined in svc.S +uint32_t svc(enum svc_type, ...); + +void putchar(int character) +{ + svc(UART_PUTCHAR, character); +} + +int getchar(void) +{ + return svc(UART_GETCHAR); +} + +void puts(char *string) +{ + for (size_t i = 0; string[i]; i++) + putchar(string[i]); + + putchar('\n'); + putchar('\r'); +} |