|
|
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: ! 17: extern inline int ! 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: ! 27: extern inline long ! 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: ! 37: extern inline long ! 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: ! 48: extern inline long ! 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: ! 60: extern inline long ! 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: ! 73: extern inline long ! 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: ! 89: extern inline long ! 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: ! 106: extern inline long ! 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.