ibex_demo/src/syscalls.c

29 lines
589 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) {
int count;
handle = handle;
xilinx_uartlite_send(&soc_uart, 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;
}
}