diff options
author | Joern Rennecke <joern.rennecke@arc.com> | 2009-09-10 01:55:02 +0000 |
---|---|---|
committer | Joern Rennecke <joern.rennecke@arc.com> | 2009-09-10 01:55:02 +0000 |
commit | 82340939ad6244dad6c692a52defff1b536abe8a (patch) | |
tree | 9b9671ef64f37c743c16987e818fd96cae92bbb9 | |
parent | 923028e34d0982fd4045b3a2ac25bfef94973c3b (diff) | |
download | gdb-82340939ad6244dad6c692a52defff1b536abe8a.tar.gz |
Remove stray comment matter.newlib-1_17_0-arc
-rw-r--r-- | newlib/libc/machine/arc/asm.h | 37 | ||||
-rw-r--r-- | newlib/libc/sys/arc/sys/syscall.h | 375 |
2 files changed, 412 insertions, 0 deletions
diff --git a/newlib/libc/machine/arc/asm.h b/newlib/libc/machine/arc/asm.h new file mode 100644 index 00000000000..224c3410964 --- /dev/null +++ b/newlib/libc/machine/arc/asm.h @@ -0,0 +1,37 @@ +#ifndef ARC_NEWLIB_ASM_H +#define ARC_NEWLIB_ASM_H + +/* Copyright (C) 2007, 2008 Free Software Foundation, Inc. + This file is free software; you can redistribute it and/or modify + it under the same terms as a file of your choice in + newlib/libc/string/{memcmp,memcpy,memset}.c or + {strchr,strcmp,strcpy,strlen,strncpy}.c . */ + +#define _ENTRY(name) \ + .text ` .balign 4 ` .globl name ` name: +#define FUNC(name) .type name,@function +#define ENDFUNC0(name) .Lfe_##X: .size name,.Lfe_##name-name +#define ENDFUNC(name) ENDFUNC0(name) +#define ENTRY(name) _ENTRY(name) ` FUNC(name) + +#define add_l add +#define bcc_l bcc +#define bclr_l bclr +#define beq_l beq +#define bic_l bic +#define b_l b +#define bne_l bne +#define breq_l breq +#define brne_l brne +#define j_l j +#define ldb_l ldb +#define ld_l ld +#define mov_l mov +#define or_l or +#define stb_l stb +#define sub_l sub +#define tst_l tst + +#define bcc_s bhs_s + +#endif /* ARC_NEWLIB_ASM_H */ diff --git a/newlib/libc/sys/arc/sys/syscall.h b/newlib/libc/sys/arc/sys/syscall.h new file mode 100644 index 00000000000..9e72b79bc06 --- /dev/null +++ b/newlib/libc/sys/arc/sys/syscall.h @@ -0,0 +1,375 @@ +/* Copyright (C) 2004, 2007 Free Software Foundation, Inc. + This program is free software; you can redistribute it and/or modify + it under the same terms as libgloss/syscall.h . + + Authors: Amit Bhor, Joern Rennecke . */ + +#ifndef _ASM_ARC_UNISTD_H +#define _ASM_ARC_UNISTD_H + +#ifndef __ASSEMBLY__ +/* + * This file contains the system call numbers. + */ +/* __NR<fun> names from linux have been replaced with SYS<fun> names for sim. + */ + +#define SYS_exit 1 +#define SYS__exit SYS_exit +#define SYS_fork 2 +#define SYS_read 3 +#define SYS_write 4 +#define SYS_open 5 +#define SYS_close 6 +#define SYS_waitpid 7 +#define SYS_creat 8 +#define SYS_link 9 +#define SYS_unlink 10 +#define SYS_execve 11 +#define SYS_chdir 12 +#define SYS_time 13 +#define SYS_mknod 14 +#define SYS_chmod 15 +#define SYS_chown 16 +#define SYS_break 17 +#define SYS_oldstat 18 +#define SYS_lseek 19 +#define SYS_getpid 20 +#define SYS_mount 21 +#define SYS_umount 22 +#define SYS_setuid 23 +#define SYS_getuid 24 +#define SYS_stime 25 +#define SYS_ptrace 26 +#define SYS_alarm 27 +#define SYS_oldfstat 28 +#define SYS_pause 29 +#define SYS_utime 30 +#define SYS_stty 31 +#define SYS_gtty 32 +#define SYS_access 33 +#define SYS_nice 34 +#define SYS_ftime 35 +#define SYS_sync 36 +#define SYS_kill 37 +#define SYS_rename 38 +#define SYS_mkdir 39 +#define SYS_rmdir 40 +#define SYS_dup 41 +#define SYS_pipe 42 +#define SYS_times 43 +#define SYS_prof 44 +#define SYS_brk 45 +#define SYS_setgid 46 +#define SYS_getgid 47 +#define SYS_signal 48 +#define SYS_geteuid 49 +#define SYS_getegid 50 +#define SYS_acct 51 +#define SYS_umount2 52 +#define SYS_lock 53 +#define SYS_ioctl 54 +#define SYS_fcntl 55 +#define SYS_mpx 56 +#define SYS_setpgid 57 +#define SYS_ulimit 58 +#define SYS_oldolduname 59 +#define SYS_umask 60 +#define SYS_chroot 61 +#define SYS_ustat 62 +#define SYS_dup2 63 +#define SYS_getppid 64 +#define SYS_getpgrp 65 +#define SYS_setsid 66 +#define SYS_sigaction 67 +#define SYS_sgetmask 68 +#define SYS_ssetmask 69 +#define SYS_setreuid 70 +#define SYS_setregid 71 +#define SYS_sigsuspend 72 +#define SYS_sigpending 73 +#define SYS_sethostname 74 +#define SYS_setrlimit 75 +#define SYS_old_getrlimit 76 +#define SYS_getrusage 77 +#define SYS_gettimeofday 78 +#define SYS_settimeofday 79 +#define SYS_getgroups 80 +#define SYS_setgroups 81 +#define SYS_select 82 +#define SYS_symlink 83 +#define SYS_oldlstat 84 +#define SYS_readlink 85 +#define SYS_uselib 86 +#define SYS_swapon 87 +#define SYS_reboot 88 +#define SYS_readdir 89 +#define SYS_mmap 90 +#define SYS_munmap 91 +#define SYS_truncate 92 +#define SYS_ftruncate 93 +#define SYS_fchmod 94 +#define SYS_fchown 95 +#define SYS_getpriority 96 +#define SYS_setpriority 97 +#define SYS_profil 98 +#define SYS_statfs 99 +#define SYS_fstatfs 100 +#define SYS_ioperm 101 +#define SYS_socketcall 102 +#define SYS_syslog 103 +#define SYS_setitimer 104 +#define SYS_getitimer 105 +#define SYS_stat 106 +#define SYS_lstat 107 +#define SYS_fstat 108 +#define SYS_olduname 109 +#define SYS_iopl 110 /* not supported */ +#define SYS_vhangup 111 +#define SYS_idle 112 /* Obsolete */ +#define SYS_vm86 113 /* not supported */ +#define SYS_wait4 114 +#define SYS_swapoff 115 +#define SYS_sysinfo 116 +#define SYS_ipc 117 +#define SYS_fsync 118 +#define SYS_sigreturn 119 +#define SYS_clone 120 +#define SYS_setdomainname 121 +#define SYS_uname 122 +#define SYS_cacheflush 123 +#define SYS_adjtimex 124 +#define SYS_mprotect 125 +#define SYS_sigprocmask 126 +#define SYS_create_module 127 +#define SYS_init_module 128 +#define SYS_delete_module 129 +#define SYS_get_kernel_syms 130 +#define SYS_quotactl 131 +#define SYS_getpgid 132 +#define SYS_fchdir 133 +#define SYS_bdflush 134 +#define SYS_sysfs 135 +#define SYS_personality 136 +#define SYS_afs_syscall 137 /* Syscall for Andrew File System */ +#define SYS_setfsuid 138 +#define SYS_setfsgid 139 +#define SYS__llseek 140 +#define SYS_getdents 141 +#define SYS__newselect 142 +#define SYS_flock 143 +#define SYS_msync 144 +#define SYS_readv 145 +#define SYS_writev 146 +#define SYS_getsid 147 +#define SYS_fdatasync 148 +#define SYS__sysctl 149 +#define SYS_mlock 150 +#define SYS_munlock 151 +#define SYS_mlockall 152 +#define SYS_munlockall 153 +#define SYS_sched_setparam 154 +#define SYS_sched_getparam 155 +#define SYS_sched_setscheduler 156 +#define SYS_sched_getscheduler 157 +#define SYS_sched_yield 158 +#define SYS_sched_get_priority_max 159 +#define SYS_sched_get_priority_min 160 +#define SYS_sched_rr_get_interval 161 +#define SYS_nanosleep 162 +#define SYS_mremap 163 +#define SYS_setresuid 164 +#define SYS_getresuid 165 +#define SYS_query_module 167 +#define SYS_poll 168 +#define SYS_nfsservctl 169 +#define SYS_setresgid 170 +#define SYS_getresgid 171 +#define SYS_prctl 172 +#define SYS_rt_sigreturn 173 +#define SYS_rt_sigaction 174 +#define SYS_rt_sigprocmask 175 +#define SYS_rt_sigpending 176 +#define SYS_rt_sigtimedwait 177 +#define SYS_rt_sigqueueinfo 178 +#define SYS_rt_sigsuspend 179 +#define SYS_pread 180 +#define SYS_pwrite 181 +#define SYS_lchown 182 +#define SYS_getcwd 183 +#define SYS_capget 184 +#define SYS_capset 185 +#define SYS_sigaltstack 186 +#define SYS_sendfile 187 +#define SYS_getpmsg 188 /* some people actually want streams */ +#define SYS_putpmsg 189 /* some people actually want streams */ +#define SYS_vfork 190 +#define SYS_getrlimit 191 +#define SYS_mmap2 192 +#define SYS_truncate64 193 +#define SYS_ftruncate64 194 +#define SYS_stat64 195 +#define SYS_lstat64 196 +#define SYS_fstat64 197 +#define SYS_chown32 198 +#define SYS_getuid32 199 +#define SYS_getgid32 200 +#define SYS_geteuid32 201 +#define SYS_getegid32 202 +#define SYS_setreuid32 203 +#define SYS_setregid32 204 +#define SYS_getgroups32 205 +#define SYS_setgroups32 206 +#define SYS_fchown32 207 +#define SYS_setresuid32 208 +#define SYS_getresuid32 209 +#define SYS_setresgid32 210 +#define SYS_getresgid32 211 +#define SYS_lchown32 212 +#define SYS_setuid32 213 +#define SYS_setgid32 214 +#define SYS_setfsuid32 215 +#define SYS_setfsgid32 216 +#define SYS_pivot_root 217 +#define SYS_getdents64 220 +#define SYS_fcntl64 221 +#define SYS_gettid 224 + +#endif /* ! __ASSEMBLY__ */ +#ifdef __ARC700__ +#if 0 + "trap_s 1 \n\t" +#endif +#define SYSCALL \ + "trap0 \n\t" +#else +#define SYSCALL \ + "swi \n\t"\ + "nop \n\t"\ + "nop \n\t" +#endif /* __ARC700__ */ +#define _syscall0(type, name) \ +type _##name##_r (struct _reent *_r) \ +{ \ + long __res; \ + __asm__ __volatile__ ("mov r8, %1\n\t" \ + SYSCALL \ + "mov %0, r0" \ + : "=r" (__res) \ + : "i" (SYS_##name) \ + : "cc", "r0", "r8"); \ + if ((unsigned long)(__res) >= (unsigned long)(-125)) {\ + __errno_r (_r) = -__res; \ + __res = -1; \ + } \ + return (type)__res; \ +} + +#define _syscall1(type, name, atype, a) \ +type _##name##_r (struct _reent *_r, atype a) \ +{ \ + long __res; \ + __asm__ __volatile__ ("mov r0, %2\n\t" \ + "mov r8, %1\n\t" \ + SYSCALL \ + "mov %0, r0" \ + : "=r" (__res) \ + : "i" (SYS_##name), \ + "r" ((long)a) \ + : "cc", "r0", "r8"); \ + if ((unsigned long)(__res) >= (unsigned long)(-125)) { \ + __errno_r (_r)= -__res; \ + __res = -1; \ + } \ + return (type)__res; \ +} + +#define _syscall2(type, name, atype, a, btype, b) \ +type _##name##_r (struct _reent *_r, atype a, btype b) \ +{ \ + long __res; \ + __asm__ __volatile__ ("mov r1, %3\n\t" \ + "mov r0, %2\n\t" \ + "mov r8, %1\n\t" \ + SYSCALL \ + "mov %0, r0" \ + : "=r" (__res) \ + : "i" (SYS_##name), \ + "r" ((long)a), \ + "r" ((long)b) \ + : "cc", "r0", "r1", "r8"); \ + if ((unsigned long)(__res) >= (unsigned long)(-125)) { \ + __errno_r (_r) = -__res; \ + __res = -1; \ + } \ + return (type)__res; \ +} +#define _syscall3(type, name, atype, a, btype, b, ctype, c) \ +type _##name##_r (struct _reent *_r, atype a, btype b, ctype c) \ +{ \ + long __res; \ + __asm__ __volatile__ ( \ + "mov r2, %4\n\t" \ + "mov r1, %3\n\t" \ + "mov r0, %2\n\t" \ + "mov r8, %1\n\t" \ + SYSCALL \ + "mov %0, r0" \ + : "=r" (__res) \ + : "i" (SYS_##name), \ + "r" ((long)a), \ + "r" ((long)b), \ + "r" ((long)c) \ + : "cc", "r0", "r1", "r2", "r8"); \ + if ((unsigned long)(__res) >= (unsigned long)(-125)) { \ + __errno_r (_r) = -__res; \ + __res = -1; \ + } \ + return (type)__res; \ +} + +#ifdef __KERNEL_SYSCALLS__ + +/* + * we need this inline - forking from kernel space will result + * in NO COPY ON WRITE (!!!), until an execve is executed. This + * is no problem, but for the stack. This is handled by not letting + * main() use the stack at all after fork(). Thus, no function + * calls - which means inline code for fork too, as otherwise we + * would use the stack upon exit from 'fork()'. + * + * Actually only pause and fork are needed inline, so that there + * won't be any messing with the stack from main(), but we define + * some others too. + */ +static inline _syscall0(int,pause) +static inline _syscall0(int,sync) +static inline _syscall0(pid_t,setsid) +static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count) +static inline _syscall3(int,read,int,fd,char *,buf,off_t,count) +static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) +static inline _syscall1(int,dup,int,fd) +//static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) +static inline _syscall3(int,open,const char *,file,int,flag,int,mode) +static inline _syscall1(int,close,int,fd) +static inline _syscall1(int,_exit,int,exitcode) +static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) +static inline _syscall1(int,delete_module,const char *,name) + +static inline pid_t wait(int * wait_stat) +{ + return waitpid(-1,wait_stat,0); +} + +static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) + +/* + * The following two can't be eliminated yet - they rely on + * specific conditions. + */ + +#endif + + + +#endif /* _ASM_ARC_UNISTD_H */ |