34 lines
709 B
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);
|
||
|
}
|