Flute_Hello_World/src/syscalls.c

34 lines
709 B
C

#include <stdint.h>
#include <errno.h>
#include "main.h"
extern int _heap_start;
extern int _heap_end;
static void *_old_heap = &_heap_start;
int _write(int handle, char *data, int size) {
handle = handle;
xilinx_uartlite_send(&soc_uart, (uint8_t *)data, size);
return size;
}
void *_sbrk(int nbytes) {
char *_old = _old_heap;
if(&_heap_start == &_heap_end) {
errno = -ENOMEM;
return (void *)-1;
}
if((_old + nbytes) < (char *)&_heap_end) {
_old += nbytes;
} else {
errno = -ENOMEM;
return (void *)-1;
}
return _old_heap;
}
void _putchar(char character) {
xilinx_uartlite_send(&soc_uart, (uint8_t *)&character, 0x01);
}