home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-v850 / simsyscall.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  4.2 KB  |  100 lines

  1. /*
  2.  * include/asm-v850/simsyscall.h -- `System calls' under the v850e emulator
  3.  *
  4.  *  Copyright (C) 2001  NEC Corporation
  5.  *  Copyright (C) 2001  Miles Bader <miles@gnu.org>
  6.  *
  7.  * This file is subject to the terms and conditions of the GNU General
  8.  * Public License.  See the file COPYING in the main directory of this
  9.  * archive for more details.
  10.  *
  11.  * Written by Miles Bader <miles@gnu.org>
  12.  */
  13.  
  14. #ifndef __V850_SIMSYSCALL_H__
  15. #define __V850_SIMSYSCALL_H__
  16.  
  17. #define V850_SIM_SYS_exit(a...)        V850_SIM_SYSCALL_1 (1    , ##a)
  18. #define V850_SIM_SYS_fork(a...)        V850_SIM_SYSCALL_0 (2    , ##a)
  19. #define V850_SIM_SYS_read(a...)        V850_SIM_SYSCALL_3 (3    , ##a)
  20. #define V850_SIM_SYS_write(a...)    V850_SIM_SYSCALL_3 (4    , ##a)
  21. #define V850_SIM_SYS_open(a...)        V850_SIM_SYSCALL_2 (5    , ##a)
  22. #define V850_SIM_SYS_close(a...)    V850_SIM_SYSCALL_1 (6    , ##a)
  23. #define V850_SIM_SYS_wait4(a...)    V850_SIM_SYSCALL_4 (7    , ##a)
  24. /* #define V850_SIM_SYS_creat(a...)    V850_SIM_SYSCALL_1 (8    , ##a) */
  25. /* #define V850_SIM_SYS_link(a...)    V850_SIM_SYSCALL_1 (9    , ##a) */
  26. /* #define V850_SIM_SYS_unlink(a...)    V850_SIM_SYSCALL_1 (10    , ##a) */
  27. #define V850_SIM_SYS_execv(a...)    V850_SIM_SYSCALL_2 (11    , ##a)
  28. /* #define V850_SIM_SYS_chdir(a...)    V850_SIM_SYSCALL_1 (12    , ##a) */
  29. /* #define V850_SIM_SYS_mknod(a...)    V850_SIM_SYSCALL_1 (14    , ##a) */
  30. #define V850_SIM_SYS_chmod(a...)    V850_SIM_SYSCALL_2 (15    , ##a)
  31. #define V850_SIM_SYS_chown(a...)    V850_SIM_SYSCALL_2 (16    , ##a)
  32. #define V850_SIM_SYS_lseek(a...)    V850_SIM_SYSCALL_3 (19    , ##a)
  33. /* #define V850_SIM_SYS_getpid(a...)    V850_SIM_SYSCALL_1 (20    , ##a) */
  34. /* #define V850_SIM_SYS_isatty(a...)    V850_SIM_SYSCALL_1 (21    , ##a) */
  35. /* #define V850_SIM_SYS_fstat(a...)    V850_SIM_SYSCALL_1 (22    , ##a) */
  36. #define V850_SIM_SYS_time(a...)        V850_SIM_SYSCALL_1 (23    , ##a)
  37. #define V850_SIM_SYS_poll(a...)        V850_SIM_SYSCALL_3 (24    , ##a)
  38. #define V850_SIM_SYS_stat(a...)        V850_SIM_SYSCALL_2 (38    , ##a)
  39. #define V850_SIM_SYS_pipe(a...)        V850_SIM_SYSCALL_1 (42    , ##a)
  40. #define V850_SIM_SYS_times(a...)    V850_SIM_SYSCALL_1 (43    , ##a)
  41. #define V850_SIM_SYS_execve(a...)    V850_SIM_SYSCALL_3 (59    , ##a)
  42. #define V850_SIM_SYS_gettimeofday(a...)    V850_SIM_SYSCALL_2 (116    , ##a)
  43. /* #define V850_SIM_SYS_utime(a...)    V850_SIM_SYSCALL_2 (201    , ##a) */
  44. /* #define V850_SIM_SYS_wait(a...)    V850_SIM_SYSCALL_1 (202    , ##a) */
  45.  
  46. #define V850_SIM_SYS_make_raw(a...)    V850_SIM_SYSCALL_1 (1024 , ##a)
  47.  
  48.  
  49. #define V850_SIM_SYSCALL_0(_call)                          \
  50. ({                                          \
  51.     register int call __asm__ ("r6") = _call;                  \
  52.     register int rval __asm__ ("r10");                      \
  53.     __asm__ __volatile__ ("trap 31"                          \
  54.                   : "=r" (rval)                      \
  55.                   : "r" (call)                      \
  56.                   : "r11", "memory");                  \
  57.     rval;                                      \
  58. })
  59. #define V850_SIM_SYSCALL_1(_call, _arg0)                      \
  60. ({                                          \
  61.     register int call __asm__ ("r6") = _call;                  \
  62.     register long arg0 __asm__ ("r7") = (long)_arg0;              \
  63.     register int rval __asm__ ("r10");                      \
  64.     __asm__ __volatile__ ("trap 31"                          \
  65.                   : "=r" (rval)                      \
  66.                   : "r" (call), "r" (arg0)                  \
  67.                   : "r11", "memory");                  \
  68.     rval;                                      \
  69. })
  70. #define V850_SIM_SYSCALL_2(_call, _arg0, _arg1)                      \
  71. ({                                          \
  72.     register int call __asm__ ("r6") = _call;                  \
  73.     register long arg0 __asm__ ("r7") = (long)_arg0;              \
  74.     register long arg1 __asm__ ("r8") = (long)_arg1;              \
  75.     register int rval __asm__ ("r10");                      \
  76.     __asm__ __volatile__ ("trap 31"                          \
  77.                   : "=r" (rval)                      \
  78.                   : "r" (call), "r" (arg0), "r" (arg1)          \
  79.                   : "r11", "memory");                  \
  80.     rval;                                      \
  81. })
  82. #define V850_SIM_SYSCALL_3(_call, _arg0, _arg1, _arg2)                  \
  83. ({                                          \
  84.     register int call __asm__ ("r6") = _call;                  \
  85.     register long arg0 __asm__ ("r7") = (long)_arg0;              \
  86.     register long arg1 __asm__ ("r8") = (long)_arg1;              \
  87.     register long arg2 __asm__ ("r9") = (long)_arg2;              \
  88.     register int rval __asm__ ("r10");                      \
  89.     __asm__ __volatile__ ("trap 31"                          \
  90.                   : "=r" (rval)                      \
  91.                   : "r" (call), "r" (arg0), "r" (arg1), "r" (arg2)\
  92.                   : "r11", "memory");                  \
  93.     rval;                                      \
  94. })
  95.  
  96. #define V850_SIM_SYSCALL(call, args...) \
  97.    V850_SIM_SYS_##call (args)
  98.  
  99. #endif /* __V850_SIMSYSCALL_H__ */
  100.