|
|
1.1 root 1: /******************************************************************************
2: * Copyright (c) 2004, 2008 IBM Corporation
3: * All rights reserved.
4: * This program and the accompanying materials
5: * are made available under the terms of the BSD License
6: * which accompanies this distribution, and is available at
7: * http://www.opensource.org/licenses/bsd-license.php
8: *
9: * Contributors:
10: * IBM Corporation - initial implementation
11: *****************************************************************************/
12:
13:
14: #ifndef SYSTEMCALL_H
15: #define SYSTEMCALL_H
16:
1.1.1.2 ! root 17: static inline int
1.1 root 18: syscall (int nr)
19: {
20: register unsigned long r0 asm("r0") = nr;
21: register unsigned long r3 asm("r3");
22: asm volatile ("sc" : "=r" (r3)
23: : "r" (r0));
24: return r3;
25: }
26:
1.1.1.2 ! root 27: static inline long
1.1 root 28: syscall_1 (int nr, long arg0)
29: {
30: register unsigned long r0 asm("r0") = nr;
31: register unsigned long r3 asm("r3") = arg0;
32: asm volatile ("sc" : "=r" (r3)
33: : "0" (r3), "r" (r0));
34: return r3;
35: }
36:
1.1.1.2 ! root 37: static inline long
1.1 root 38: syscall_2 (int nr, long arg0, long arg1)
39: {
40: register unsigned long r0 asm("r0") = nr;
41: register unsigned long r3 asm("r3") = arg0;
42: register unsigned long r4 asm("r4") = arg1;
43: asm volatile ("sc" : "=r" (r3)
44: : "0" (r3), "r" (r4), "r" (r0));
45: return r3;
46: }
47:
1.1.1.2 ! root 48: static inline long
1.1 root 49: syscall_3 (int nr, long arg0, long arg1, long arg2)
50: {
51: register unsigned long r0 asm("r0") = nr;
52: register unsigned long r3 asm("r3") = arg0;
53: register unsigned long r4 asm("r4") = arg1;
54: register unsigned long r5 asm("r5") = arg2;
55: asm volatile ("sc" : "=r" (r3)
56: : "0" (r3), "r" (r4), "r" (r5), "r" (r0));
57: return r3;
58: }
59:
1.1.1.2 ! root 60: static inline long
1.1 root 61: syscall_4 (int nr, long arg0, long arg1, long arg2, long arg3)
62: {
63: register unsigned long r0 asm("r0") = nr;
64: register unsigned long r3 asm("r3") = arg0;
65: register unsigned long r4 asm("r4") = arg1;
66: register unsigned long r5 asm("r5") = arg2;
67: register unsigned long r6 asm("r6") = arg3;
68: asm volatile ("sc" : "=r" (r3)
69: : "0" (r3), "r" (r4), "r" (r5), "r" (r6), "r" (r0));
70: return r3;
71: }
72:
1.1.1.2 ! root 73: static inline long
1.1 root 74: syscall_5 (int nr, long arg0, long arg1, long arg2, long arg3,
75: long arg4)
76: {
77: register unsigned long r0 asm("r0") = nr;
78: register unsigned long r3 asm("r3") = arg0;
79: register unsigned long r4 asm("r4") = arg1;
80: register unsigned long r5 asm("r5") = arg2;
81: register unsigned long r6 asm("r6") = arg3;
82: register unsigned long r7 asm("r7") = arg4;
83: asm volatile ("sc" : "=r" (r3)
84: : "0" (r3), "r" (r4), "r" (r5),
85: "r" (r6), "r" (r7), "r" (r0));
86: return r3;
87: }
88:
1.1.1.2 ! root 89: static inline long
1.1 root 90: syscall_6 (int nr, long arg0, long arg1, long arg2, long arg3,
91: long arg4, long arg5)
92: {
93: register unsigned long r0 asm("r0") = nr;
94: register unsigned long r3 asm("r3") = arg0;
95: register unsigned long r4 asm("r4") = arg1;
96: register unsigned long r5 asm("r5") = arg2;
97: register unsigned long r6 asm("r6") = arg3;
98: register unsigned long r7 asm("r7") = arg4;
99: register unsigned long r8 asm("r8") = arg5;
100: asm volatile ("sc" : "=r" (r3)
101: : "0" (r3), "r" (r4), "r" (r5),
102: "r" (r6), "r" (r7), "r" (r8), "r" (r0));
103: return r3;
104: }
105:
1.1.1.2 ! root 106: static inline long
1.1 root 107: syscall_7 (int nr, long arg0, long arg1, long arg2, long arg3,
108: long arg4, long arg5, long arg6)
109: {
110: register unsigned long r0 asm("r0") = nr;
111: register unsigned long r3 asm("r3") = arg0;
112: register unsigned long r4 asm("r4") = arg1;
113: register unsigned long r5 asm("r5") = arg2;
114: register unsigned long r6 asm("r6") = arg3;
115: register unsigned long r7 asm("r7") = arg4;
116: register unsigned long r8 asm("r8") = arg5;
117: register unsigned long r9 asm("r9") = arg6;
118: asm volatile ("sc" : "=r" (r3)
119: : "0" (r3), "r" (r4), "r" (r5),
120: "r" (r6), "r" (r7), "r" (r8),
121: "r" (r9), "r" (r0));
122: return r3;
123: }
124:
125:
126: #define _exit_sc_nr 1
127: #define _read_sc_nr 2
128: #define _write_sc_nr 3
129: #define _open_sc_nr 4
130: #define _close_sc_nr 5
131: #define _getpid_sc_nr 6
132: #define _brk_sc_nr 7
133: #define _ioctl_sc_nr 8
134: #define _socket_sc_nr 9
135: #define _wait4_sc_nr 10
136: #define _sigreturn_sc_nr 11
137: #define _rt_sigaction_sc_nr 12
138: #define _lseek_sc_nr 13
139:
140: #define _sock_sc_nr 1
141: #define _sendto_sc_nr 2
142: #define _send_sc_nr 3
143: #define _recv_sc_nr 4
144:
145:
146: //typedef unsigned long size_t;
147:
148: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.