From 02fec4701cee79f875c1d02b8b4aee09380dbcb8 Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Thu, 4 Jan 2001 20:04:45 +0000 Subject: integrate dietlibc/stdio per default for cdrom and disk only installs --- mdk-stage1/dietlibc/sparc/mmap.c | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 mdk-stage1/dietlibc/sparc/mmap.c (limited to 'mdk-stage1/dietlibc/sparc/mmap.c') diff --git a/mdk-stage1/dietlibc/sparc/mmap.c b/mdk-stage1/dietlibc/sparc/mmap.c new file mode 100644 index 000000000..25ebdc24e --- /dev/null +++ b/mdk-stage1/dietlibc/sparc/mmap.c @@ -0,0 +1,43 @@ +#include +#include + +#define __SYSCALL_STRING \ + "ta 0x10;" \ + "bcs 2f;" \ + " nop;" \ + "1:" \ + ".subsection 2;" \ + "2:" \ + "save %%sp, -192, %%sp;" \ + "call __errno_location;" \ + " nop;" \ + "st %%i0,[%%o0];" \ + "ba 1b;" \ + " restore %%g0, -1, %%o0;" \ + ".previous;" + +#define __SYSCALL_CLOBBERS "g2", "g3", "g4", "g5", "g7", \ + "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ + "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \ + "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \ + "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \ + "cc", "memory" + +#define inline_syscall6(name,arg1,arg2,arg3,arg4,arg5,arg6) \ +({ \ + register long __o0 __asm__ ("o0") = (long)(arg1); \ + register long __o1 __asm__ ("o1") = (long)(arg2); \ + register long __o2 __asm__ ("o2") = (long)(arg3); \ + register long __o3 __asm__ ("o3") = (long)(arg4); \ + register long __o4 __asm__ ("o4") = (long)(arg5); \ + register long __o5 __asm__ ("o5") = (long)(arg6); \ + register long __g1 __asm__ ("g1") = __NR_##name; \ + __asm__ (__SYSCALL_STRING : "=r" (__g1), "=r" (__o0) : \ + "0" (__g1), "1" (__o0), "r" (__o1), "r" (__o2), \ + "r" (__o3), "r" (__o4), "r" (__o5) : \ + __SYSCALL_CLOBBERS); \ + __o0; \ +}) +int mmap(void*start,size_t length,int prot,int flags,int fd,off_t offset) { + return inline_syscall6(mmap,start,length,prot,flags,fd,offset); +} -- cgit v1.2.1