diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-03 17:39:24 -0700 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-03 17:39:24 -0700 |
commit | a6c1ed4716cf02626ea035beb6dd4a921642ba80 (patch) | |
tree | ef582c1b52819e27bdd16097ec03b69799d04ede /newlib/libc/sys/z8ksim/glue.c | |
parent | f6c9a624fa8a6878a7fb2b02f55e4990a20feb59 (diff) |
Use libc from agbcc instead of standalone newlib\nYou must have AGBCC commit 80d029caec189587f8b9294b6c8a5a489b8f5f88 in order to compile pmd_red.gbalibc
Diffstat (limited to 'newlib/libc/sys/z8ksim/glue.c')
-rw-r--r-- | newlib/libc/sys/z8ksim/glue.c | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/newlib/libc/sys/z8ksim/glue.c b/newlib/libc/sys/z8ksim/glue.c deleted file mode 100644 index b3b0bab..0000000 --- a/newlib/libc/sys/z8ksim/glue.c +++ /dev/null @@ -1,156 +0,0 @@ -#include "sys/syscall.h" -#include <sys/types.h> -#include <sys/stat.h> -#include <_ansi.h> -#include <errno.h> - -extern char _start_heap; -extern char _end_heap; -extern char _start_bss; -extern char _end_bss; - - -static int argl(long value) -{ - asm("ld r0,%H0" : : "r" (value)); - asm("ld r1,%I0" : : "r" (value)); - asm("sc %0" : : "i" (SYS_ARG)); -} - - -static int argw(value) -{ - asm("ld r1,%H0" : : "r" ( value)); - asm("ld r0,#0"); - asm("sc %0" : : "i" (SYS_ARG)); -} - -static int argp(void *value) -{ -#ifdef __Z8001__ - asm("ld r0,%H0" : : "r" (value)); - asm("ld r1,%I0" : : "r" (value)); -#else - asm("ld r1,%H0" : : "r" ( value)); - asm("ld r0,#0"); -#endif - asm("sc %0" : : "i" (SYS_ARG)); - -} - - - -#define ARGL(n, value) argl(value) -#define ARGW(n, value) argw(value) -#define ARGP(n, value) argp(value) - -#define MACRO(n) asm("sc %0" : : "i" (n)); - -int _read (int fd, char *buf,size_t nbytes) -{ - ARGW(0,fd); - ARGP(1,buf); - ARGP(2,(void *)(nbytes)); - MACRO(SYS_read); -} - -int _write (int fd, char *buf, size_t nbytes) -{ - ARGW(0,fd); - ARGP(1,buf); - ARGP(2,(void *)(nbytes)); - MACRO(SYS_write); -} - -int _open (const char *buf, int flags, int mode) -{ - ARGP(0, buf); - ARGW(1, flags); - ARGW(2, mode); - MACRO(SYS_open); -} - -int _close (int fd) -{ - ARGW(0,fd); - MACRO(SYS_close ); -} - -/* - * sbrk -- changes heap size size. Get nbytes more - * RAM. We just increment a pointer in what's - * left of memory on the board. - */ -caddr_t _sbrk (size_t nbytes) -{ - static char* heap_ptr = NULL; - caddr_t base; - - if (heap_ptr == NULL) { - heap_ptr = (caddr_t)&_start_heap; - } - - if (heap_ptr + nbytes < &_end_heap) { - base = heap_ptr; - heap_ptr += nbytes; - return (heap_ptr); - } else { - errno = ENOMEM; - return ((caddr_t)-1); - } -} - -int isatty (int fd) -{ - ARGW(0,fd); - MACRO(SYS_isatty); -} - -off_t _lseek (int fd, off_t offset, int whence) -{ - ARGW(0,fd); - ARGL(1,offset); - ARGW(2, whence); - MACRO(SYS_lseek); -} - -int _fstat (int fd, struct stat *buf) -{ - ARGW(0,fd); - ARGP(1,buf); - MACRO(SYS_fstat); -} - - - - -int -_exit(int val) -{ - ARGW(0,val); - MACRO(SYS_exit); -} - -time_t _time(time_t *timer) -{ - ARGP(0,timer); - MACRO(SYS_time); -} - -int -_creat (const char *path, int mode) -{ - ARGP(0, path); - ARGW(1, mode); - MACRO(SYS_creat); -} - -_kill(int pid, int val) -{ - _exit(val); -} - -_getpid() -{ - return 1; -} |