OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [newlib-1.18.0/] [newlib-1.18.0-or32-1.0rc1/] [libgloss/] [arm/] [linux-syscalls0.S] - Diff between revs 207 and 345

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 207 Rev 345
/** Linux system call interface for the ARM processor.
/** Linux system call interface for the ARM processor.
 * Written by Shaun Jackman .
 * Written by Shaun Jackman .
 * Copyright 2006 Pathway Connectivity
 * Copyright 2006 Pathway Connectivity
 *
 *
 * Permission to use, copy, modify, and distribute this software
 * Permission to use, copy, modify, and distribute this software
 * is freely granted, provided that this notice is preserved.
 * is freely granted, provided that this notice is preserved.
 */
 */
#include "linux-syscall.h"
#include "linux-syscall.h"
#if __thumb__
#if __thumb__
# define FUNC(name) .type name, %function; .thumb_func; name:
# define FUNC(name) .type name, %function; .thumb_func; name:
# define SET .thumb_set
# define SET .thumb_set
#else
#else
# define FUNC(name) .type name, %function; name:
# define FUNC(name) .type name, %function; name:
# define SET .set
# define SET .set
#endif
#endif
#define GLOBAL(name) .global name; FUNC(name)
#define GLOBAL(name) .global name; FUNC(name)
#define SIZE(name) .size name, .-name
#define SIZE(name) .size name, .-name
# define SYSCALL4(name) \
# define SYSCALL4(name) \
        GLOBAL(_ ## name); \
        GLOBAL(_ ## name); \
        swi #SYS_ ## name; \
        swi #SYS_ ## name; \
        b _set_errno; \
        b _set_errno; \
        SIZE(_ ## name)
        SIZE(_ ## name)
# define SYSCALL6(name) \
# define SYSCALL6(name) \
        GLOBAL(_ ## name); \
        GLOBAL(_ ## name); \
        push { r4 - r5 }; \
        push { r4 - r5 }; \
        ldr r4, [sp, #8]; \
        ldr r4, [sp, #8]; \
        ldr r5, [sp, #12]; \
        ldr r5, [sp, #12]; \
        swi #SYS_ ## name; \
        swi #SYS_ ## name; \
        pop { r4 - r5 }; \
        pop { r4 - r5 }; \
        b _set_errno; \
        b _set_errno; \
        SIZE(_ ## name)
        SIZE(_ ## name)
#define SYSCALL0(name) SYSCALL3(name)
#define SYSCALL0(name) SYSCALL3(name)
#define SYSCALL3(name) SYSCALL4(name)
#define SYSCALL3(name) SYSCALL4(name)
#define SYSCALL1(name) SYSCALL3(name)
#define SYSCALL1(name) SYSCALL3(name)
#define SYSCALL2(name) SYSCALL3(name)
#define SYSCALL2(name) SYSCALL3(name)
#define SYSCALL5(name) SYSCALL6(name)
#define SYSCALL5(name) SYSCALL6(name)
SYSCALL1(alarm)
SYSCALL1(alarm)
SYSCALL1(brk)
SYSCALL1(brk)
SYSCALL1(chdir)
SYSCALL1(chdir)
SYSCALL2(chmod)
SYSCALL2(chmod)
SYSCALL3(chown)
SYSCALL3(chown)
SYSCALL1(close)
SYSCALL1(close)
SYSCALL1(dup)
SYSCALL1(dup)
SYSCALL2(dup2)
SYSCALL2(dup2)
SYSCALL3(execve)
SYSCALL3(execve)
SYSCALL1(exit)
SYSCALL1(exit)
SYSCALL3(fcntl)
SYSCALL3(fcntl)
SYSCALL2(fstat)
SYSCALL2(fstat)
SYSCALL2(ftruncate)
SYSCALL2(ftruncate)
SYSCALL3(getdents)
SYSCALL3(getdents)
SYSCALL0(getegid)
SYSCALL0(getegid)
SYSCALL0(geteuid)
SYSCALL0(geteuid)
SYSCALL0(getgid)
SYSCALL0(getgid)
SYSCALL2(getgroups)
SYSCALL2(getgroups)
SYSCALL1(getpgid)
SYSCALL1(getpgid)
SYSCALL0(getpgrp)
SYSCALL0(getpgrp)
SYSCALL0(getpid)
SYSCALL0(getpid)
SYSCALL0(getuid)
SYSCALL0(getuid)
SYSCALL2(gettimeofday)
SYSCALL2(gettimeofday)
SYSCALL3(ioctl)
SYSCALL3(ioctl)
SYSCALL2(kill)
SYSCALL2(kill)
SYSCALL3(lchown)
SYSCALL3(lchown)
SYSCALL2(link)
SYSCALL2(link)
SYSCALL3(lseek)
SYSCALL3(lseek)
SYSCALL2(lstat)
SYSCALL2(lstat)
SYSCALL2(mkdir)
SYSCALL2(mkdir)
SYSCALL3(mknod)
SYSCALL3(mknod)
SYSCALL2(nanosleep)
SYSCALL2(nanosleep)
SYSCALL3(open)
SYSCALL3(open)
SYSCALL0(pause)
SYSCALL0(pause)
SYSCALL1(pipe)
SYSCALL1(pipe)
SYSCALL3(read)
SYSCALL3(read)
SYSCALL3(readlink)
SYSCALL3(readlink)
SYSCALL4(reboot)
SYSCALL4(reboot)
SYSCALL1(rmdir)
SYSCALL1(rmdir)
SYSCALL5(select)
SYSCALL5(select)
SYSCALL2(setpgid)
SYSCALL2(setpgid)
SYSCALL1(setgid)
SYSCALL1(setgid)
SYSCALL0(setsid)
SYSCALL0(setsid)
SYSCALL1(setuid)
SYSCALL1(setuid)
SYSCALL3(sigprocmask)
SYSCALL3(sigprocmask)
SYSCALL2(socketcall)
SYSCALL2(socketcall)
SYSCALL2(stat)
SYSCALL2(stat)
SYSCALL1(stime)
SYSCALL1(stime)
SYSCALL2(symlink)
SYSCALL2(symlink)
SYSCALL1(sync)
SYSCALL1(sync)
SYSCALL1(sysinfo)
SYSCALL1(sysinfo)
SYSCALL1(times)
SYSCALL1(times)
SYSCALL2(truncate)
SYSCALL2(truncate)
SYSCALL1(umask)
SYSCALL1(umask)
SYSCALL1(uname)
SYSCALL1(uname)
SYSCALL1(unlink)
SYSCALL1(unlink)
SYSCALL2(utime)
SYSCALL2(utime)
SYSCALL0(vfork)
SYSCALL0(vfork)
SYSCALL4(wait4)
SYSCALL4(wait4)
SYSCALL3(write)
SYSCALL3(write)
#define ALIAS(name) .GLOBAL name; SET name, _ ## name
#define ALIAS(name) .GLOBAL name; SET name, _ ## name
ALIAS(alarm)
ALIAS(alarm)
ALIAS(chdir)
ALIAS(chdir)
ALIAS(chmod)
ALIAS(chmod)
ALIAS(chown)
ALIAS(chown)
ALIAS(dup)
ALIAS(dup)
ALIAS(dup2)
ALIAS(dup2)
ALIAS(ftruncate)
ALIAS(ftruncate)
ALIAS(getdents)
ALIAS(getdents)
ALIAS(getegid)
ALIAS(getegid)
ALIAS(geteuid)
ALIAS(geteuid)
ALIAS(getgid)
ALIAS(getgid)
ALIAS(getgroups)
ALIAS(getgroups)
ALIAS(getpgid)
ALIAS(getpgid)
ALIAS(getpgrp)
ALIAS(getpgrp)
ALIAS(getuid)
ALIAS(getuid)
ALIAS(ioctl)
ALIAS(ioctl)
ALIAS(lchown)
ALIAS(lchown)
ALIAS(lstat)
ALIAS(lstat)
ALIAS(mkdir)
ALIAS(mkdir)
ALIAS(mknod)
ALIAS(mknod)
ALIAS(nanosleep)
ALIAS(nanosleep)
ALIAS(pause)
ALIAS(pause)
ALIAS(pipe)
ALIAS(pipe)
ALIAS(readlink)
ALIAS(readlink)
ALIAS(rmdir)
ALIAS(rmdir)
ALIAS(select)
ALIAS(select)
ALIAS(setgid)
ALIAS(setgid)
ALIAS(setpgid)
ALIAS(setpgid)
ALIAS(setsid)
ALIAS(setsid)
ALIAS(setuid)
ALIAS(setuid)
ALIAS(sigprocmask)
ALIAS(sigprocmask)
ALIAS(stime)
ALIAS(stime)
ALIAS(symlink)
ALIAS(symlink)
ALIAS(sync)
ALIAS(sync)
ALIAS(sysinfo)
ALIAS(sysinfo)
ALIAS(truncate)
ALIAS(truncate)
ALIAS(umask)
ALIAS(umask)
ALIAS(uname)
ALIAS(uname)
ALIAS(utime)
ALIAS(utime)
ALIAS(vfork)
ALIAS(vfork)
ALIAS(wait4)
ALIAS(wait4)
# define SOCKETCALL(name, NAME) \
# define SOCKETCALL(name, NAME) \
        GLOBAL(name); \
        GLOBAL(name); \
        push { r0 - r3 }; \
        push { r0 - r3 }; \
        mov r0, #SYS_ ## NAME; \
        mov r0, #SYS_ ## NAME; \
        b _socketcall_tail; \
        b _socketcall_tail; \
        SIZE(name)
        SIZE(name)
FUNC(_socketcall_tail)
FUNC(_socketcall_tail)
        mov r1, sp
        mov r1, sp
        push { lr }
        push { lr }
        bl _socketcall
        bl _socketcall
        pop { r3 }
        pop { r3 }
        add sp, #16
        add sp, #16
#if defined(__ARM_ARCH_2__) || defined(__ARM_ARCH_3__) \
#if defined(__ARM_ARCH_2__) || defined(__ARM_ARCH_3__) \
    || defined(__ARM_ARCH_3M__) || defined(__ARM_ARCH_4__)
    || defined(__ARM_ARCH_3M__) || defined(__ARM_ARCH_4__)
        mov pc, r3
        mov pc, r3
#else
#else
        bx r3
        bx r3
#endif
#endif
        SIZE(_socketcall_tail)
        SIZE(_socketcall_tail)
#define SOCKETCALL2(name, NAME) SOCKETCALL(name, NAME)
#define SOCKETCALL2(name, NAME) SOCKETCALL(name, NAME)
#define SOCKETCALL3(name, NAME) SOCKETCALL(name, NAME)
#define SOCKETCALL3(name, NAME) SOCKETCALL(name, NAME)
#define SOCKETCALL4(name, NAME) SOCKETCALL(name, NAME)
#define SOCKETCALL4(name, NAME) SOCKETCALL(name, NAME)
#define SOCKETCALL5(name, NAME) SOCKETCALL(name, NAME)
#define SOCKETCALL5(name, NAME) SOCKETCALL(name, NAME)
#define SOCKETCALL6(name, NAME) SOCKETCALL(name, NAME)
#define SOCKETCALL6(name, NAME) SOCKETCALL(name, NAME)
SOCKETCALL3(accept, ACCEPT)
SOCKETCALL3(accept, ACCEPT)
SOCKETCALL3(bind, BIND)
SOCKETCALL3(bind, BIND)
SOCKETCALL3(connect, CONNECT)
SOCKETCALL3(connect, CONNECT)
SOCKETCALL3(getpeername, GETPEERNAME)
SOCKETCALL3(getpeername, GETPEERNAME)
SOCKETCALL3(getsockname, GETSOCKNAME)
SOCKETCALL3(getsockname, GETSOCKNAME)
SOCKETCALL5(getsockopt, GETSOCKOPT)
SOCKETCALL5(getsockopt, GETSOCKOPT)
SOCKETCALL2(listen, LISTEN)
SOCKETCALL2(listen, LISTEN)
SOCKETCALL4(recv, RECV)
SOCKETCALL4(recv, RECV)
SOCKETCALL6(recvfrom, RECVFROM)
SOCKETCALL6(recvfrom, RECVFROM)
SOCKETCALL3(recvmsg, RECVMSG)
SOCKETCALL3(recvmsg, RECVMSG)
SOCKETCALL4(send, SEND)
SOCKETCALL4(send, SEND)
SOCKETCALL3(sendmsg, SENDMSG)
SOCKETCALL3(sendmsg, SENDMSG)
SOCKETCALL6(sendto, SENDTO)
SOCKETCALL6(sendto, SENDTO)
SOCKETCALL5(setsockopt, SETSOCKOPT)
SOCKETCALL5(setsockopt, SETSOCKOPT)
SOCKETCALL2(shutdown, SHUTDOWN)
SOCKETCALL2(shutdown, SHUTDOWN)
SOCKETCALL3(socket, SOCKET)
SOCKETCALL3(socket, SOCKET)
SOCKETCALL4(socketpair, SOCKETPAIR)
SOCKETCALL4(socketpair, SOCKETPAIR)
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.