|
|
1.1 root 1: /*
2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: * Reserved. This file contains Original Code and/or Modifications of
8: * Original Code as defined in and that are subject to the Apple Public
9: * Source License Version 1.1 (the "License"). You may not use this file
10: * except in compliance with the License. Please obtain a copy of the
11: * License at http://www.apple.com/publicsource and read it before using
12: * this file.
13: *
14: * The Original Code and all software distributed under the License are
15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: * License for the specific language governing rights and limitations
20: * under the License.
21: *
22: * @APPLE_LICENSE_HEADER_END@
23: */
24:
25: /* Copyright (c) 1991 NeXT Computer, Inc. All rights reserved.
26: *
27: * File: mach/ppc/syscall_sw.h
28: * Author: Matt Watson, NeXT Computer, Inc.
29: *
30: * This header file defines system call macros
31: * for the PowerPC family processors.
32: *
33: * HISTORY
34: *
35: * 4-Apr-97 Umesh Vaishampayan ([email protected])
36: * Fixed the system call calling convention.
37: *
38: * 28-Mar-97 Matt Watson ([email protected])
39: * Ported to ppc.
40: *
41: * 6-Nov-92 Ben Fathi ([email protected])
42: * Ported to m98k.
43: *
44: * 23-Jan-91 Mike DeMoney ([email protected])
45: * Created.
46: */
47:
48: #ifndef _MACH_PPC_SYSCALL_SW_H_
49: #define _MACH_PPC_SYSCALL_SW_H_
50:
51: #import <architecture/ppc/asm_help.h>
52: #import <architecture/ppc/pseudo_inst.h>
53:
54: /*
55: * Mach system call traps.
56: *
57: * The first 8 system call args are passed by user-code in
58: * a0 - a7. (Should there ever need to be more
59: * than 8 args, those should be passed in s0 - s17.)
60: *
61: * The system call number is in r0.
62: *
63: * NOTE: (Like the C calling convention), the kernel does not
64: * preserve caller-saves across system calls.
65: */
66:
67: /*
68: * kernel_trap_args_N -- Put the arguments in the right places.
69: * Args are passed in a0 - a7, system call number in ep.
70: */
71: #define kernel_trap_args_0
72: #define kernel_trap_args_1
73: #define kernel_trap_args_2
74: #define kernel_trap_args_3
75: #define kernel_trap_args_4
76: #define kernel_trap_args_5
77: #define kernel_trap_args_6
78: #define kernel_trap_args_7
79:
80: /*
81: * simple_kernel_trap -- Mach system calls with 8 or less args
82: * Args are passed in a0 - a7, system call number in r0.
83: * Do a "sc" instruction to enter kernel.
84: */
85: #define simple_kernel_trap(trap_name, trap_number) \
86: .globl _##trap_name @\
87: _##trap_name: @\
88: li r0,trap_number @\
89: sc @\
90: blr @\
91: END(trap_name)
92:
93: #define kernel_trap_0(trap_name,trap_number) \
94: simple_kernel_trap(trap_name,trap_number)
95:
96: #define kernel_trap_1(trap_name,trap_number) \
97: simple_kernel_trap(trap_name,trap_number)
98:
99: #define kernel_trap_2(trap_name,trap_number) \
100: simple_kernel_trap(trap_name,trap_number)
101:
102: #define kernel_trap_3(trap_name,trap_number) \
103: simple_kernel_trap(trap_name,trap_number)
104:
105: #define kernel_trap_4(trap_name,trap_number) \
106: simple_kernel_trap(trap_name,trap_number)
107:
108: #define kernel_trap_5(trap_name,trap_number) \
109: simple_kernel_trap(trap_name,trap_number)
110:
111: #define kernel_trap_6(trap_name,trap_number) \
112: simple_kernel_trap(trap_name,trap_number)
113:
114: #define kernel_trap_7(trap_name,trap_number) \
115: simple_kernel_trap(trap_name,trap_number)
116:
117: #define kernel_trap_8(trap_name,trap_number) \
118: simple_kernel_trap(trap_name,trap_number)
119:
120: #define kernel_trap_9(trap_name,trap_number) \
121: simple_kernel_trap(trap_name,trap_number)
122:
123: #define kernel_trap(trap_name,trap_number,nargs) \
124: kernel_trap_##nargs(trap_name,trap_number)
125:
126: #endif /* _MACH_PPC_SYSCALL_SW_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.