summaryrefslogtreecommitdiff
path: root/src/syscalls.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/syscalls.c')
-rw-r--r--src/syscalls.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/syscalls.c b/src/syscalls.c
index 443c9cd..5c5d577 100644
--- a/src/syscalls.c
+++ b/src/syscalls.c
@@ -44,17 +44,21 @@ int _lseek(int file, int ptr, int dir) { return 0; }
int _open(const char *name, int flags, int mode) { return -1; }
int _read(int file, char *buf, int len) {
- while (!uart_rx_ready())
- ;
+ uint32_t uart_data;
+ do {
+ uart_data = UART_RXDATA;
+ } while (uart_data & UART_RXDATA_EMPTY);
int i;
for (i = 0; i < len; i++) {
- if (!uart_rx_ready()) {
+ buf[i] = (char)uart_data;
+ uart_data = UART_RXDATA;
+ if (uart_data & UART_RXDATA_EMPTY) {
break;
}
- buf[i] = uart_getc_nonblocking();
}
- return i;
+ // *(volatile int *)1 = i;
+ return i + 1;
}
void *_sbrk(int incr) {
@@ -91,9 +95,11 @@ int _wait(int *status) {
}
int _write(int file, char *buf, int len) {
+ // uart_puts("_write called\n");
for (int i = 0; i < len; i++) {
uart_putc(buf[i]);
}
+ // *(volatile int *)0 = len;
return len;
}