smol-gilbraltar/nolibc/sysdeps.c
2024-12-20 23:45:12 +01:00

47 lines
927 B
C

#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <stdio.h>
int errno;
extern void gilbraltar_serial_write(const char *, size_t);
extern void gilbraltar_serial_puts(const char *);
static size_t console_write(FILE *f __attribute__((unused)), const char *str, size_t len) {
gilbraltar_serial_write(str, len);
return (len);
}
static FILE console = { .write = console_write };
FILE *stderr = &console;
FILE *stdout = &console;
ssize_t write(int fd, const void *buf, size_t count) {
if (fd == 1 || fd == 2) {
gilbraltar_serial_write(buf, count);
return (count);
}
errno = ENOSYS;
return (-1);
}
void exit(int status) {
while (1)
__asm__ __volatile("wfi");
}
void abort(void) {
gilbraltar_serial_puts("Aborted\r\n");
while (1)
__asm__ __volatile("wfi");
}
#if defined(__aarch64__)
int __getauxval(int unused) {
errno = ENOENT;
return (0);
}
#endif