|
|
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.