|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * The contents of this file constitute Original Code as defined in and ! 7: * are subject to the Apple Public Source License Version 1.1 (the ! 8: * "License"). You may not use this file except in compliance with the ! 9: * License. Please obtain a copy of the License at ! 10: * http://www.apple.com/publicsource and read it before using this file. ! 11: * ! 12: * This Original Code and all software distributed under the License are ! 13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 17: * License for the specific language governing rights and limitations ! 18: * under the License. ! 19: * ! 20: * @APPLE_LICENSE_HEADER_END@ ! 21: */ ! 22: /* ! 23: * @OSF_COPYRIGHT@ ! 24: */ ! 25: /* ! 26: * HISTORY ! 27: * ! 28: * Revision 1.1.1.1 1998/09/22 21:05:49 wsanchez ! 29: * Import of Mac OS X kernel (~semeria) ! 30: * ! 31: * Revision 1.1.1.1 1998/03/07 02:25:59 wsanchez ! 32: * Import of OSF Mach kernel (~mburg) ! 33: * ! 34: * Revision 1.2.28.1 1996/11/29 16:59:53 stephen ! 35: * nmklinux_1.0b3_shared into pmk1.1 ! 36: * Added powerpc special case ! 37: * [1996/11/29 16:34:18 stephen] ! 38: * ! 39: * Revision 1.2.15.2 1996/01/09 19:23:16 devrcs ! 40: * Added alpha varargs.h ! 41: * [1995/12/01 20:39:10 jfraser] ! 42: * ! 43: * Merged '64-bit safe' changes from DEC alpha port. ! 44: * [1995/11/21 18:10:39 jfraser] ! 45: * ! 46: * Revision 1.2.15.1 1994/09/23 03:13:46 ezf ! 47: * change marker to not FREE ! 48: * [1994/09/22 21:59:07 ezf] ! 49: * ! 50: * Revision 1.2.4.3 1993/08/03 18:30:40 gm ! 51: * CR9596: Change KERNEL to MACH_KERNEL. ! 52: * [1993/08/02 19:03:10 gm] ! 53: * ! 54: * Revision 1.2.4.2 1993/06/09 02:55:42 gm ! 55: * Added to OSF/1 R1.3 from NMK15.0. ! 56: * [1993/06/02 21:31:11 jeffc] ! 57: * ! 58: * Revision 1.2 1993/04/19 17:17:26 devrcs ! 59: * correct endif tags for ansi ! 60: * [1993/02/25 17:56:02 david] ! 61: * ! 62: * Revision 1.1 1992/09/30 02:37:05 robert ! 63: * Initial revision ! 64: * ! 65: * $EndLog$ ! 66: */ ! 67: /* CMU_HIST */ ! 68: /* ! 69: * Revision 2.10 91/12/10 16:32:53 jsb ! 70: * Fixes from Intel ! 71: * [91/12/10 15:52:01 jsb] ! 72: * ! 73: * Revision 2.9 91/09/12 16:54:22 bohman ! 74: * Added mac2. ! 75: * [91/09/11 17:22:52 bohman] ! 76: * ! 77: * Revision 2.8 91/07/09 23:23:50 danner ! 78: * Added luna88k support. ! 79: * [91/06/24 danner] ! 80: * ! 81: * Revision 2.7 91/06/18 20:53:02 jsb ! 82: * Moved i860 varargs code here from i860/i860_varargs.h, thanks to ! 83: * new copyright from Intel. ! 84: * [91/06/18 19:15:02 jsb] ! 85: * ! 86: * Revision 2.6 91/05/14 17:40:46 mrt ! 87: * Correcting copyright ! 88: * ! 89: * Revision 2.5 91/02/05 17:57:12 mrt ! 90: * Changed to new Mach copyright ! 91: * [91/02/01 17:49:51 mrt] ! 92: * ! 93: * Revision 2.4 90/11/25 17:48:50 jsb ! 94: * Added i860 support. ! 95: * [90/11/25 16:54:09 jsb] ! 96: * ! 97: * Revision 2.3 90/05/03 15:51:29 dbg ! 98: * Added i386. ! 99: * [90/02/08 dbg] ! 100: * ! 101: * Revision 2.2 89/11/29 14:16:44 af ! 102: * RCS-ed, added mips case. Mips also needs it in Mach standalone ! 103: * programs. ! 104: * [89/10/28 10:39:14 af] ! 105: * ! 106: */ ! 107: /* CMU_ENDHIST */ ! 108: /* ! 109: * Mach Operating System ! 110: * Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University ! 111: * All Rights Reserved. ! 112: * ! 113: * Permission to use, copy, modify and distribute this software and its ! 114: * documentation is hereby granted, provided that both the copyright ! 115: * notice and this permission notice appear in all copies of the ! 116: * software, derivative works or modified versions, and any portions ! 117: * thereof, and that both notices appear in supporting documentation. ! 118: * ! 119: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" ! 120: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR ! 121: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. ! 122: * ! 123: * Carnegie Mellon requests users of this software to return to ! 124: * ! 125: * Software Distribution Coordinator or [email protected] ! 126: * School of Computer Science ! 127: * Carnegie Mellon University ! 128: * Pittsburgh PA 15213-3890 ! 129: * ! 130: * any improvements or extensions that they make and grant Carnegie Mellon rights ! 131: * to redistribute these changes. ! 132: */ ! 133: /* ! 134: */ ! 135: ! 136: #ifndef _SYS_VARARGS_H_ ! 137: #define _SYS_VARARGS_H_ ! 138: ! 139: #if defined(vax) || defined(sun3) || defined(mips) || defined(i386) || defined(mac2) ! 140: #define va_dcl int va_alist; ! 141: typedef char * va_list; ! 142: ! 143: #define va_start(pvar) (pvar) = (va_list)&va_alist ! 144: #define va_end(pvar) ! 145: #ifdef mips ! 146: # define va_arg(pvar, type) ((type *)(pvar = \ ! 147: (va_list) (sizeof(type) > 4 ? ((int)pvar + 2*8 - 1) & -8 \ ! 148: : ((int)pvar + 2*4 - 1) & -4)))[-1] ! 149: #else /* mips */ ! 150: #define va_arg(pvar,type) ( \ ! 151: (pvar) += ((sizeof(type)+3) & ~0x3), \ ! 152: *((type *)((pvar) - ((sizeof(type)+3) & ~0x3))) ) ! 153: #endif /* mips */ ! 154: #endif /* vax */ ! 155: ! 156: /* ! 157: * Try to make varargs work for the Multimax so that _doprnt can be ! 158: * declared as ! 159: * _doprnt(file, fmt, list) ! 160: * FILE *file; ! 161: * char *fmt; ! 162: * va_list *list; ! 163: * and use ! 164: * ! 165: * n = va_arg(*list, type) ! 166: * ! 167: * without needing to drag in extra declarations ! 168: * ! 169: * and printf becomes ! 170: * ! 171: * printf(fmt, va_alist) ! 172: * char *fmt; ! 173: * va_dcl ! 174: * { ! 175: * va_list listp; ! 176: * va_start(listp); ! 177: * _doprnt((FILE *)0, fmt, &listp); ! 178: * va_end(listp); ! 179: * } ! 180: */ ! 181: ! 182: #if defined(multimax) && defined(MACH_KERNEL) ! 183: ! 184: /* ! 185: * the vararglist pointer is an elaborate structure (ecch) ! 186: */ ! 187: typedef struct va_list { ! 188: char *va_item; /* current item */ ! 189: int *va_ptr1, /* arglist pointers for 1, 2, n */ ! 190: *va_ptr2, ! 191: *va_ptrn; ! 192: int va_ct; /* current argument number */ ! 193: } va_list; ! 194: ! 195: #define va_alist va_arg1, va_arg2, va_argn ! 196: #define va_dcl int va_arg1, va_arg2, va_argn; ! 197: ! 198: #define va_start(pvar) ( \ ! 199: (pvar).va_ptr1 = &va_arg1, \ ! 200: (pvar).va_ptr2 = &va_arg2, \ ! 201: (pvar).va_ptrn = &va_argn, \ ! 202: (pvar).va_ct = 0 ) ! 203: ! 204: #define va_end(pvar) ! 205: ! 206: #define va_arg(pvar, type) ( \ ! 207: (pvar).va_ct++, \ ! 208: (pvar).va_item = (char *) \ ! 209: ( ((pvar).va_ct == 1) \ ! 210: ? (pvar).va_ptr1 \ ! 211: : ((pvar).va_ct == 2) \ ! 212: ? (pvar).va_ptr2 \ ! 213: : (pvar).va_ptrn++ ) , \ ! 214: *((type *)((pvar).va_item)) ) ! 215: ! 216: /* what a mess! */ ! 217: #endif /* defined(multimax) && defined(MACH_KERNEL) */ ! 218: ! 219: #if i860 ! 220: #include <i860/varargs.h> /* PGI vs. Greenhills */ ! 221: #endif ! 222: ! 223: #ifdef luna88k ! 224: #include <luna88k/varargs.h> /* How nice */ ! 225: #endif ! 226: ! 227: #if defined (__PPC__) && defined (_CALL_SYSV) ! 228: #include <ppc/va-ppc.h> /* care of gcc compiler - TEMPORARY 2.7.1 TODO NMGS*/ ! 229: #endif ! 230: ! 231: #if defined(__alpha) ! 232: # include <varargs.h> ! 233: #endif /* defined(__alpha) */ ! 234: ! 235: #endif /* _SYS_VARARGS_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.