Permalink
Browse files

Initial commit.

  • Loading branch information...
0 parents commit 67aa07a0e942bb8bd0173d9d574e31e177f92521 @comex committed Sep 18, 2010
Showing with 19,888 additions and 0 deletions.
  1. +367 −0 APPLE_LICENSE
  2. +1,165 −0 EXTERNAL_HEADERS/AssertMacros.h
  3. +22 −0 EXTERNAL_HEADERS/Info.plist
  4. +42 −0 EXTERNAL_HEADERS/Makefile
  5. +96 −0 EXTERNAL_HEADERS/ar.h
  6. +38 −0 EXTERNAL_HEADERS/architecture/Makefile
  7. +371 −0 EXTERNAL_HEADERS/architecture/byte_order.h
  8. +37 −0 EXTERNAL_HEADERS/architecture/i386/Makefile
  9. +322 −0 EXTERNAL_HEADERS/architecture/i386/asm_help.h
  10. +58 −0 EXTERNAL_HEADERS/architecture/i386/cpu.h
  11. +150 −0 EXTERNAL_HEADERS/architecture/i386/desc.h
  12. +40 −0 EXTERNAL_HEADERS/architecture/i386/io.h
  13. +109 −0 EXTERNAL_HEADERS/architecture/i386/pio.h
  14. +110 −0 EXTERNAL_HEADERS/architecture/i386/reg_help.h
  15. +58 −0 EXTERNAL_HEADERS/architecture/i386/sel.h
  16. +98 −0 EXTERNAL_HEADERS/architecture/i386/table.h
  17. +120 −0 EXTERNAL_HEADERS/architecture/i386/tss.h
  18. +33 −0 EXTERNAL_HEADERS/architecture/ppc/Makefile
  19. +456 −0 EXTERNAL_HEADERS/architecture/ppc/asm_help.h
  20. +306 −0 EXTERNAL_HEADERS/architecture/ppc/basic_regs.h
  21. +50 −0 EXTERNAL_HEADERS/architecture/ppc/cframe.h
  22. +153 −0 EXTERNAL_HEADERS/architecture/ppc/fp_regs.h
  23. +64 −0 EXTERNAL_HEADERS/architecture/ppc/macro_help.h
  24. +420 −0 EXTERNAL_HEADERS/architecture/ppc/pseudo_inst.h
  25. +230 −0 EXTERNAL_HEADERS/architecture/ppc/reg_help.h
  26. +30 −0 EXTERNAL_HEADERS/mach-o/Makefile
  27. +42 −0 EXTERNAL_HEADERS/mach-o/arm/reloc.h
  28. +64 −0 EXTERNAL_HEADERS/mach-o/fat.h
  29. +104 −0 EXTERNAL_HEADERS/mach-o/kld.h
  30. +1,343 −0 EXTERNAL_HEADERS/mach-o/loader.h
  31. +302 −0 EXTERNAL_HEADERS/mach-o/nlist.h
  32. +65 −0 EXTERNAL_HEADERS/mach-o/ppc/reloc.h
  33. +202 −0 EXTERNAL_HEADERS/mach-o/reloc.h
  34. +122 −0 EXTERNAL_HEADERS/mach-o/stab.h
  35. +174 −0 EXTERNAL_HEADERS/mach-o/x86_64/reloc.h
  36. +133 −0 EXTERNAL_HEADERS/stdarg.h
  37. +46 −0 EXTERNAL_HEADERS/stdbool.h
  38. +194 −0 EXTERNAL_HEADERS/stdint.h
  39. +90 −0 Makefile
  40. +274 −0 README
  41. +133 −0 SETUP/seed_objroot
  42. +4 −0 SETUP/setup.csh
  43. +4 −0 SETUP/setup.sh
  44. +85 −0 bsd/Makefile
  45. +44 −0 bsd/bsm/Makefile
  46. +327 −0 bsd/bsm/audit.h
  47. +114 −0 bsd/bsm/audit_domain.h
  48. +214 −0 bsd/bsm/audit_errno.h
  49. +140 −0 bsd/bsm/audit_fcntl.h
  50. +117 −0 bsd/bsm/audit_internal.h
  51. +46 −0 bsd/bsm/audit_kernel.h
  52. +793 −0 bsd/bsm/audit_kevents.h
  53. +298 −0 bsd/bsm/audit_record.h
  54. +46 −0 bsd/bsm/audit_socket_type.h
  55. +495 −0 bsd/conf/MASTER
  56. +119 −0 bsd/conf/MASTER.i386
  57. +99 −0 bsd/conf/MASTER.ppc
  58. +119 −0 bsd/conf/MASTER.x86_64
  59. +143 −0 bsd/conf/Makefile
  60. +49 −0 bsd/conf/Makefile.i386
  61. +53 −0 bsd/conf/Makefile.ppc
  62. +131 −0 bsd/conf/Makefile.template
  63. +49 −0 bsd/conf/Makefile.x86_64
  64. +82 −0 bsd/conf/compat_hdrs
  65. +22 −0 bsd/conf/compat_hdrs.awk
  66. +6 −0 bsd/conf/copyright
  67. +587 −0 bsd/conf/files
  68. +31 −0 bsd/conf/files.i386
  69. +34 −0 bsd/conf/files.ppc
  70. +33 −0 bsd/conf/files.x86_64
  71. +18 −0 bsd/conf/machine.awk
  72. +124 −0 bsd/conf/param.c
  73. +32 −0 bsd/conf/tools/Makefile
  74. +49 −0 bsd/conf/tools/doconf/Makefile
  75. +321 −0 bsd/conf/tools/doconf/doconf.csh
  76. +49 −0 bsd/crypto/Makefile
  77. +46 −0 bsd/crypto/aes/Makefile
  78. +211 −0 bsd/crypto/aes/aes.h
  79. +34 −0 bsd/crypto/aes/gen/Makefile
  80. +411 −0 bsd/crypto/aes/gen/aescrypt.c
  81. +455 −0 bsd/crypto/aes/gen/aeskey.c
  82. +753 −0 bsd/crypto/aes/gen/aesopt.h
  83. +384 −0 bsd/crypto/aes/gen/aestab.c
  84. +175 −0 bsd/crypto/aes/gen/aestab.h
  85. +36 −0 bsd/crypto/aes/i386/Makefile
  86. +471 −0 bsd/crypto/aes/i386/aes_modes.c
  87. +1,298 −0 bsd/crypto/aes/i386/aes_x86_v2.s
  88. +719 −0 bsd/crypto/aes/i386/aesopt.h
  89. +130 −0 bsd/crypto/aes/i386/edefs.h
  90. +36 −0 bsd/crypto/aes/ppc/Makefile
  91. +411 −0 bsd/crypto/aes/ppc/aescrypt.c
  92. +455 −0 bsd/crypto/aes/ppc/aeskey.c
  93. +753 −0 bsd/crypto/aes/ppc/aesopt.h
Sorry, we could not display the entire diff because too many files (3,388) changed.
367 APPLE_LICENSE
@@ -0,0 +1,367 @@
+APPLE PUBLIC SOURCE LICENSE
+Version 2.0 - August 6, 2003
+
+Please read this License carefully before downloading this software.
+By downloading or using this software, you are agreeing to be bound by
+the terms of this License. If you do not or cannot agree to the terms
+of this License, please do not download or use the software.
+
+1. General; Definitions. This License applies to any program or other
+work which Apple Computer, Inc. ("Apple") makes publicly available and
+which contains a notice placed by Apple identifying such program or
+work as "Original Code" and stating that it is subject to the terms of
+this Apple Public Source License version 2.0 ("License"). As used in
+this License:
+
+1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is
+the grantor of rights, (i) claims of patents that are now or hereafter
+acquired, owned by or assigned to Apple and (ii) that cover subject
+matter contained in the Original Code, but only to the extent
+necessary to use, reproduce and/or distribute the Original Code
+without infringement; and (b) in the case where You are the grantor of
+rights, (i) claims of patents that are now or hereafter acquired,
+owned by or assigned to You and (ii) that cover subject matter in Your
+Modifications, taken alone or in combination with Original Code.
+
+1.2 "Contributor" means any person or entity that creates or
+contributes to the creation of Modifications.
+
+1.3 "Covered Code" means the Original Code, Modifications, the
+combination of Original Code and any Modifications, and/or any
+respective portions thereof.
+
+1.4 "Externally Deploy" means: (a) to sublicense, distribute or
+otherwise make Covered Code available, directly or indirectly, to
+anyone other than You; and/or (b) to use Covered Code, alone or as
+part of a Larger Work, in any way to provide a service, including but
+not limited to delivery of content, through electronic communication
+with a client other than You.
+
+1.5 "Larger Work" means a work which combines Covered Code or portions
+thereof with code not governed by the terms of this License.
+
+1.6 "Modifications" mean any addition to, deletion from, and/or change
+to, the substance and/or structure of the Original Code, any previous
+Modifications, the combination of Original Code and any previous
+Modifications, and/or any respective portions thereof. When code is
+released as a series of files, a Modification is: (a) any addition to
+or deletion from the contents of a file containing Covered Code;
+and/or (b) any new file or other representation of computer program
+statements that contains any part of Covered Code.
+
+1.7 "Original Code" means (a) the Source Code of a program or other
+work as originally made available by Apple under this License,
+including the Source Code of any updates or upgrades to such programs
+or works made available by Apple under this License, and that has been
+expressly identified by Apple as such in the header file(s) of such
+work; and (b) the object code compiled from such Source Code and
+originally made available by Apple under this License.
+
+1.8 "Source Code" means the human readable form of a program or other
+work that is suitable for making modifications to it, including all
+modules it contains, plus any associated interface definition files,
+scripts used to control compilation and installation of an executable
+(object code).
+
+1.9 "You" or "Your" means an individual or a legal entity exercising
+rights under this License. For legal entities, "You" or "Your"
+includes any entity which controls, is controlled by, or is under
+common control with, You, where "control" means (a) the power, direct
+or indirect, to cause the direction or management of such entity,
+whether by contract or otherwise, or (b) ownership of fifty percent
+(50%) or more of the outstanding shares or beneficial ownership of
+such entity.
+
+2. Permitted Uses; Conditions & Restrictions. Subject to the terms
+and conditions of this License, Apple hereby grants You, effective on
+the date You accept this License and download the Original Code, a
+world-wide, royalty-free, non-exclusive license, to the extent of
+Apple's Applicable Patent Rights and copyrights covering the Original
+Code, to do the following:
+
+2.1 Unmodified Code. You may use, reproduce, display, perform,
+internally distribute within Your organization, and Externally Deploy
+verbatim, unmodified copies of the Original Code, for commercial or
+non-commercial purposes, provided that in each instance:
+
+(a) You must retain and reproduce in all copies of Original Code the
+copyright and other proprietary notices and disclaimers of Apple as
+they appear in the Original Code, and keep intact all notices in the
+Original Code that refer to this License; and
+
+(b) You must include a copy of this License with every copy of Source
+Code of Covered Code and documentation You distribute or Externally
+Deploy, and You may not offer or impose any terms on such Source Code
+that alter or restrict this License or the recipients' rights
+hereunder, except as permitted under Section 6.
+
+2.2 Modified Code. You may modify Covered Code and use, reproduce,
+display, perform, internally distribute within Your organization, and
+Externally Deploy Your Modifications and Covered Code, for commercial
+or non-commercial purposes, provided that in each instance You also
+meet all of these conditions:
+
+(a) You must satisfy all the conditions of Section 2.1 with respect to
+the Source Code of the Covered Code;
+
+(b) You must duplicate, to the extent it does not already exist, the
+notice in Exhibit A in each file of the Source Code of all Your
+Modifications, and cause the modified files to carry prominent notices
+stating that You changed the files and the date of any change; and
+
+(c) If You Externally Deploy Your Modifications, You must make
+Source Code of all Your Externally Deployed Modifications either
+available to those to whom You have Externally Deployed Your
+Modifications, or publicly available. Source Code of Your Externally
+Deployed Modifications must be released under the terms set forth in
+this License, including the license grants set forth in Section 3
+below, for as long as you Externally Deploy the Covered Code or twelve
+(12) months from the date of initial External Deployment, whichever is
+longer. You should preferably distribute the Source Code of Your
+Externally Deployed Modifications electronically (e.g. download from a
+web site).
+
+2.3 Distribution of Executable Versions. In addition, if You
+Externally Deploy Covered Code (Original Code and/or Modifications) in
+object code, executable form only, You must include a prominent
+notice, in the code itself as well as in related documentation,
+stating that Source Code of the Covered Code is available under the
+terms of this License with information on how and where to obtain such
+Source Code.
+
+2.4 Third Party Rights. You expressly acknowledge and agree that
+although Apple and each Contributor grants the licenses to their
+respective portions of the Covered Code set forth herein, no
+assurances are provided by Apple or any Contributor that the Covered
+Code does not infringe the patent or other intellectual property
+rights of any other entity. Apple and each Contributor disclaim any
+liability to You for claims brought by any other entity based on
+infringement of intellectual property rights or otherwise. As a
+condition to exercising the rights and licenses granted hereunder, You
+hereby assume sole responsibility to secure any other intellectual
+property rights needed, if any. For example, if a third party patent
+license is required to allow You to distribute the Covered Code, it is
+Your responsibility to acquire that license before distributing the
+Covered Code.
+
+3. Your Grants. In consideration of, and as a condition to, the
+licenses granted to You under this License, You hereby grant to any
+person or entity receiving or distributing Covered Code under this
+License a non-exclusive, royalty-free, perpetual, irrevocable license,
+under Your Applicable Patent Rights and other intellectual property
+rights (other than patent) owned or controlled by You, to use,
+reproduce, display, perform, modify, sublicense, distribute and
+Externally Deploy Your Modifications of the same scope and extent as
+Apple's licenses under Sections 2.1 and 2.2 above.
+
+4. Larger Works. You may create a Larger Work by combining Covered
+Code with other code not governed by the terms of this License and
+distribute the Larger Work as a single product. In each such instance,
+You must make sure the requirements of this License are fulfilled for
+the Covered Code or any portion thereof.
+
+5. Limitations on Patent License. Except as expressly stated in
+Section 2, no other patent rights, express or implied, are granted by
+Apple herein. Modifications and/or Larger Works may require additional
+patent licenses from Apple which Apple may grant in its sole
+discretion.
+
+6. Additional Terms. You may choose to offer, and to charge a fee for,
+warranty, support, indemnity or liability obligations and/or other
+rights consistent with the scope of the license granted herein
+("Additional Terms") to one or more recipients of Covered Code.
+However, You may do so only on Your own behalf and as Your sole
+responsibility, and not on behalf of Apple or any Contributor. You
+must obtain the recipient's agreement that any such Additional Terms
+are offered by You alone, and You hereby agree to indemnify, defend
+and hold Apple and every Contributor harmless for any liability
+incurred by or claims asserted against Apple or such Contributor by
+reason of any such Additional Terms.
+
+7. Versions of the License. Apple may publish revised and/or new
+versions of this License from time to time. Each version will be given
+a distinguishing version number. Once Original Code has been published
+under a particular version of this License, You may continue to use it
+under the terms of that version. You may also choose to use such
+Original Code under the terms of any subsequent version of this
+License published by Apple. No one other than Apple has the right to
+modify the terms applicable to Covered Code created under this
+License.
+
+8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in
+part pre-release, untested, or not fully tested works. The Covered
+Code may contain errors that could cause failures or loss of data, and
+may be incomplete or contain inaccuracies. You expressly acknowledge
+and agree that use of the Covered Code, or any portion thereof, is at
+Your sole and entire risk. THE COVERED CODE IS PROVIDED "AS IS" AND
+WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND
+APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE
+PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM
+ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT
+NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF
+MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR
+PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD
+PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT WARRANT AGAINST
+INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE
+FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS,
+THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
+ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO
+ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE
+AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY.
+You acknowledge that the Covered Code is not intended for use in the
+operation of nuclear facilities, aircraft navigation, communication
+systems, or air traffic control machines in which case the failure of
+the Covered Code could lead to death, personal injury, or severe
+physical or environmental damage.
+
+9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO
+EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL,
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING
+TO THIS LICENSE OR YOUR USE OR INABILITY TO USE THE COVERED CODE, OR
+ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY,
+TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF
+APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY
+REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF
+INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY
+TO YOU. In no event shall Apple's total liability to You for all
+damages (other than as may be required by applicable law) under this
+License exceed the amount of fifty dollars ($50.00).
+
+10. Trademarks. This License does not grant any rights to use the
+trademarks or trade names "Apple", "Apple Computer", "Mac", "Mac OS",
+"QuickTime", "QuickTime Streaming Server" or any other trademarks,
+service marks, logos or trade names belonging to Apple (collectively
+"Apple Marks") or to any trademark, service mark, logo or trade name
+belonging to any Contributor. You agree not to use any Apple Marks in
+or as part of the name of products derived from the Original Code or
+to endorse or promote products derived from the Original Code other
+than as expressly permitted by and in strict compliance at all times
+with Apple's third party trademark usage guidelines which are posted
+at http://www.apple.com/legal/guidelinesfor3rdparties.html.
+
+11. Ownership. Subject to the licenses granted under this License,
+each Contributor retains all rights, title and interest in and to any
+Modifications made by such Contributor. Apple retains all rights,
+title and interest in and to the Original Code and any Modifications
+made by or on behalf of Apple ("Apple Modifications"), and such Apple
+Modifications will not be automatically subject to this License. Apple
+may, at its sole discretion, choose to license such Apple
+Modifications under this License, or on different terms from those
+contained in this License or may choose not to license them at all.
+
+12. Termination.
+
+12.1 Termination. This License and the rights granted hereunder will
+terminate:
+
+(a) automatically without notice from Apple if You fail to comply with
+any term(s) of this License and fail to cure such breach within 30
+days of becoming aware of such breach;
+
+(b) immediately in the event of the circumstances described in Section
+13.5(b); or
+
+(c) automatically without notice from Apple if You, at any time during
+the term of this License, commence an action for patent infringement
+against Apple; provided that Apple did not first commence
+an action for patent infringement against You in that instance.
+
+12.2 Effect of Termination. Upon termination, You agree to immediately
+stop any further use, reproduction, modification, sublicensing and
+distribution of the Covered Code. All sublicenses to the Covered Code
+which have been properly granted prior to termination shall survive
+any termination of this License. Provisions which, by their nature,
+should remain in effect beyond the termination of this License shall
+survive, including but not limited to Sections 3, 5, 8, 9, 10, 11,
+12.2 and 13. No party will be liable to any other for compensation,
+indemnity or damages of any sort solely as a result of terminating
+this License in accordance with its terms, and termination of this
+License will be without prejudice to any other right or remedy of
+any party.
+
+13. Miscellaneous.
+
+13.1 Government End Users. The Covered Code is a "commercial item" as
+defined in FAR 2.101. Government software and technical data rights in
+the Covered Code include only those rights customarily provided to the
+public as defined in this License. This customary commercial license
+in technical data and software is provided in accordance with FAR
+12.211 (Technical Data) and 12.212 (Computer Software) and, for
+Department of Defense purchases, DFAR 252.227-7015 (Technical Data --
+Commercial Items) and 227.7202-3 (Rights in Commercial Computer
+Software or Computer Software Documentation). Accordingly, all U.S.
+Government End Users acquire Covered Code with only those rights set
+forth herein.
+
+13.2 Relationship of Parties. This License will not be construed as
+creating an agency, partnership, joint venture or any other form of
+legal association between or among You, Apple or any Contributor, and
+You will not represent to the contrary, whether expressly, by
+implication, appearance or otherwise.
+
+13.3 Independent Development. Nothing in this License will impair
+Apple's right to acquire, license, develop, have others develop for
+it, market and/or distribute technology or products that perform the
+same or similar functions as, or otherwise compete with,
+Modifications, Larger Works, technology or products that You may
+develop, produce, market or distribute.
+
+13.4 Waiver; Construction. Failure by Apple or any Contributor to
+enforce any provision of this License will not be deemed a waiver of
+future enforcement of that or any other provision. Any law or
+regulation which provides that the language of a contract shall be
+construed against the drafter will not apply to this License.
+
+13.5 Severability. (a) If for any reason a court of competent
+jurisdiction finds any provision of this License, or portion thereof,
+to be unenforceable, that provision of the License will be enforced to
+the maximum extent permissible so as to effect the economic benefits
+and intent of the parties, and the remainder of this License will
+continue in full force and effect. (b) Notwithstanding the foregoing,
+if applicable law prohibits or restricts You from fully and/or
+specifically complying with Sections 2 and/or 3 or prevents the
+enforceability of either of those Sections, this License will
+immediately terminate and You must immediately discontinue any use of
+the Covered Code and destroy all copies of it that are in your
+possession or control.
+
+13.6 Dispute Resolution. Any litigation or other dispute resolution
+between You and Apple relating to this License shall take place in the
+Northern District of California, and You and Apple hereby consent to
+the personal jurisdiction of, and venue in, the state and federal
+courts within that District with respect to this License. The
+application of the United Nations Convention on Contracts for the
+International Sale of Goods is expressly excluded.
+
+13.7 Entire Agreement; Governing Law. This License constitutes the
+entire agreement between the parties with respect to the subject
+matter hereof. This License shall be governed by the laws of the
+United States and the State of California, except that body of
+California law concerning conflicts of law.
+
+Where You are located in the province of Quebec, Canada, the following
+clause applies: The parties hereby confirm that they have requested
+that this License and all related documents be drafted in English. Les
+parties ont exige que le present contrat et tous les documents
+connexes soient rediges en anglais.
+
+EXHIBIT A.
+
+"Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights
+Reserved.
+
+This file contains Original Code and/or Modifications of Original Code
+as defined in and that are subject to the Apple Public Source License
+Version 2.0 (the 'License'). You may not use this file except in
+compliance with the License. Please obtain a copy of the License at
+http://www.opensource.apple.com/apsl/ and read it before using this
+file.
+
+The Original Code and all software distributed under the License are
+distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+Please see the License for the specific language governing rights and
+limitations under the License."
1,165 EXTERNAL_HEADERS/AssertMacros.h
@@ -0,0 +1,1165 @@
+/*
+ File: AssertMacros.h
+
+ Contains: This file defines structured error handling and assertion macros for
+ programming in C. Originally used in QuickDraw GX and later enhanced.
+ These macros are used throughout Apple's software.
+
+ See "Living In an Exceptional World" by Sean Parent
+ (develop, The Apple Technical Journal, Issue 11, August/September 1992)
+ <http://developer.apple.com/dev/techsupport/develop/issue11toc.shtml>
+ for the methodology behind these error handling and assertion macros.
+
+ Copyright: © 2002-2007 by Apple Inc., all rights reserved.
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://developer.apple.com/bugreporter/
+*/
+#ifndef __ASSERTMACROS__
+#define __ASSERTMACROS__
+
+
+/*
+ * Macro overview:
+ *
+ * check(assertion)
+ * In production builds, pre-processed away
+ * In debug builds, if assertion evaluates to false, calls DEBUG_ASSERT_MESSAGE
+ *
+ * verify(assertion)
+ * In production builds, evaluates assertion and does nothing
+ * In debug builds, if assertion evaluates to false, calls DEBUG_ASSERT_MESSAGE
+ *
+ * require(assertion, exceptionLabel)
+ * In production builds, if the assertion expression evaluates to false, goto exceptionLabel
+ * In debug builds, if the assertion expression evaluates to false, calls DEBUG_ASSERT_MESSAGE
+ * and jumps to exceptionLabel
+ *
+ * In addition the following suffixes are available:
+ *
+ * _noerr Adds "!= 0" to assertion. Useful for asserting and OSStatus or OSErr is noErr (zero)
+ * _action Adds statement to be executued if assertion fails
+ * _quiet Suppress call to DEBUG_ASSERT_MESSAGE
+ * _string Allows you to add explanitory message to DEBUG_ASSERT_MESSAGE
+ *
+ * For instance, require_noerr_string(resultCode, label, msg) will do nothing if
+ * resultCode is zero, otherwise it will call DEBUG_ASSERT_MESSAGE with msg
+ * and jump to label.
+ *
+ * Configuration:
+ *
+ * By default all macros generate "production code" (i.e non-debug). If
+ * DEBUG_ASSERT_PRODUCTION_CODE is defined to zero or DEBUG is defined to non-zero
+ * while this header is included, the macros will generated debug code.
+ *
+ * If DEBUG_ASSERT_COMPONENT_NAME_STRING is defined, all debug messages will
+ * be prefixed with it.
+ *
+ * By default, all messages write to stderr. If you would like to write a custom
+ * error message formater, defined DEBUG_ASSERT_MESSAGE to your function name.
+ *
+ */
+
+
+/*
+ * Before including this file, #define DEBUG_ASSERT_COMPONENT_NAME_STRING to
+ * a C-string containing the name of your client. This string will be passed to
+ * the DEBUG_ASSERT_MESSAGE macro for inclusion in any assertion messages.
+ *
+ * If you do not define DEBUG_ASSERT_COMPONENT_NAME_STRING, the default
+ * DEBUG_ASSERT_COMPONENT_NAME_STRING value, an empty string, will be used by
+ * the assertion macros.
+ */
+#ifndef DEBUG_ASSERT_COMPONENT_NAME_STRING
+ #define DEBUG_ASSERT_COMPONENT_NAME_STRING ""
+#endif
+
+
+/*
+ * To activate the additional assertion code and messages for non-production builds,
+ * #define DEBUG_ASSERT_PRODUCTION_CODE to zero before including this file.
+ *
+ * If you do not define DEBUG_ASSERT_PRODUCTION_CODE, the default value 1 will be used
+ * (production code = no assertion code and no messages).
+ */
+#ifndef DEBUG_ASSERT_PRODUCTION_CODE
+ #define DEBUG_ASSERT_PRODUCTION_CODE !DEBUG
+#endif
+
+
+/*
+ * DEBUG_ASSERT_MESSAGE(component, assertion, label, error, file, line, errorCode)
+ *
+ * Summary:
+ * All assertion messages are routed through this macro. If you wish to use your
+ * own routine to display assertion messages, you can override DEBUG_ASSERT_MESSAGE
+ * by #defining DEBUG_ASSERT_MESSAGE before including this file.
+ *
+ * Parameters:
+ *
+ * componentNameString:
+ * A pointer to a string constant containing the name of the
+ * component this code is part of. This must be a string constant
+ * (and not a string variable or NULL) because the preprocessor
+ * concatenates it with other string constants.
+ *
+ * assertionString:
+ * A pointer to a string constant containing the assertion.
+ * This must be a string constant (and not a string variable or
+ * NULL) because the Preprocessor concatenates it with other
+ * string constants.
+ *
+ * exceptionLabelString:
+ * A pointer to a string containing the exceptionLabel, or NULL.
+ *
+ * errorString:
+ * A pointer to the error string, or NULL. DEBUG_ASSERT_MESSAGE macros
+ * must not attempt to concatenate this string with constant
+ * character strings.
+ *
+ * fileName:
+ * A pointer to the fileName or pathname (generated by the
+ * preprocessor __FILE__ identifier), or NULL.
+ *
+ * lineNumber:
+ * The line number in the file (generated by the preprocessor
+ * __LINE__ identifier), or 0 (zero).
+ *
+ * errorCode:
+ * A value associated with the assertion, or 0.
+ *
+ * Here is an example of a DEBUG_ASSERT_MESSAGE macro and a routine which displays
+ * assertion messsages:
+ *
+ * #define DEBUG_ASSERT_COMPONENT_NAME_STRING "MyCoolProgram"
+ *
+ * #define DEBUG_ASSERT_MESSAGE(componentNameString, assertionString, \
+ * exceptionLabelString, errorString, fileName, lineNumber, errorCode) \
+ * MyProgramDebugAssert(componentNameString, assertionString, \
+ * exceptionLabelString, errorString, fileName, lineNumber, errorCode)
+ *
+ * static void
+ * MyProgramDebugAssert(const char *componentNameString, const char *assertionString,
+ * const char *exceptionLabelString, const char *errorString,
+ * const char *fileName, long lineNumber, int errorCode)
+ * {
+ * if ( (assertionString != NULL) && (*assertionString != '\0') )
+ * fprintf(stderr, "Assertion failed: %s: %s\n", componentNameString, assertionString);
+ * else
+ * fprintf(stderr, "Check failed: %s:\n", componentNameString);
+ * if ( exceptionLabelString != NULL )
+ * fprintf(stderr, " %s\n", exceptionLabelString);
+ * if ( errorString != NULL )
+ * fprintf(stderr, " %s\n", errorString);
+ * if ( fileName != NULL )
+ * fprintf(stderr, " file: %s\n", fileName);
+ * if ( lineNumber != 0 )
+ * fprintf(stderr, " line: %ld\n", lineNumber);
+ * if ( errorCode != 0 )
+ * fprintf(stderr, " error: %d\n", errorCode);
+ * }
+ *
+ * If you do not define DEBUG_ASSERT_MESSAGE, a simple printf to stderr will be used.
+ */
+#ifndef DEBUG_ASSERT_MESSAGE
+ #ifdef KERNEL
+ #include <libkern/libkern.h>
+ #define DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \
+ printf( "AssertMacros: %s, %s file: %s, line: %d\n", assertion, (message!=0) ? message : "", file, line);
+ #else
+ #include <stdio.h>
+ #define DEBUG_ASSERT_MESSAGE(name, assertion, label, message, file, line, value) \
+ fprintf(stderr, "AssertMacros: %s, %s file: %s, line: %d\n", assertion, (message!=0) ? message : "", file, line);
+ #endif
+#endif
+
+
+
+
+
+/*
+ * debug_string(message)
+ *
+ * Summary:
+ * Production builds: does nothing and produces no code.
+ *
+ * Non-production builds: call DEBUG_ASSERT_MESSAGE.
+ *
+ * Parameters:
+ *
+ * message:
+ * The C string to display.
+ *
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define debug_string(message)
+#else
+ #define debug_string(message) \
+ do \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ "", \
+ 0, \
+ message, \
+ __FILE__, \
+ __LINE__, \
+ 0); \
+ } while ( 0 )
+#endif
+
+
+/*
+ * check(assertion)
+ *
+ * Summary:
+ * Production builds: does nothing and produces no code.
+ *
+ * Non-production builds: if the assertion expression evaluates to false,
+ * call DEBUG_ASSERT_MESSAGE.
+ *
+ * Parameters:
+ *
+ * assertion:
+ * The assertion expression.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define check(assertion)
+#else
+ #define check(assertion) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #assertion, \
+ 0, \
+ 0, \
+ __FILE__, \
+ __LINE__, \
+ 0); \
+ } \
+ } while ( 0 )
+#endif
+
+#define ncheck(assertion) \
+ check(!(assertion))
+
+
+/*
+ * check_string(assertion, message)
+ *
+ * Summary:
+ * Production builds: does nothing and produces no code.
+ *
+ * Non-production builds: if the assertion expression evaluates to false,
+ * call DEBUG_ASSERT_MESSAGE.
+ *
+ * Parameters:
+ *
+ * assertion:
+ * The assertion expression.
+ *
+ * message:
+ * The C string to display.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define check_string(assertion, message)
+#else
+ #define check_string(assertion, message) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #assertion, \
+ 0, \
+ message, \
+ __FILE__, \
+ __LINE__, \
+ 0); \
+ } \
+ } while ( 0 )
+#endif
+
+#define ncheck_string(assertion, message) \
+ check_string(!(assertion), message)
+
+
+/*
+ * check_noerr(errorCode)
+ *
+ * Summary:
+ * Production builds: does nothing and produces no code.
+ *
+ * Non-production builds: if the errorCode expression does not equal 0 (noErr),
+ * call DEBUG_ASSERT_MESSAGE.
+ *
+ * Parameters:
+ *
+ * errorCode:
+ * The errorCode expression to compare with 0.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define check_noerr(errorCode)
+#else
+ #define check_noerr(errorCode) \
+ do \
+ { \
+ long evalOnceErrorCode = (errorCode); \
+ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #errorCode " == 0 ", \
+ 0, \
+ 0, \
+ __FILE__, \
+ __LINE__, \
+ evalOnceErrorCode); \
+ } \
+ } while ( 0 )
+#endif
+
+
+/*
+ * check_noerr_string(errorCode, message)
+ *
+ * Summary:
+ * Production builds: check_noerr_string() does nothing and produces
+ * no code.
+ *
+ * Non-production builds: if the errorCode expression does not equal 0 (noErr),
+ * call DEBUG_ASSERT_MESSAGE.
+ *
+ * Parameters:
+ *
+ * errorCode:
+ * The errorCode expression to compare to 0.
+ *
+ * message:
+ * The C string to display.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define check_noerr_string(errorCode, message)
+#else
+ #define check_noerr_string(errorCode, message) \
+ do \
+ { \
+ long evalOnceErrorCode = (errorCode); \
+ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #errorCode " == 0 ", \
+ 0, \
+ message, \
+ __FILE__, \
+ __LINE__, \
+ evalOnceErrorCode); \
+ } \
+ } while ( 0 )
+#endif
+
+
+/*
+ * verify(assertion)
+ *
+ * Summary:
+ * Production builds: evaluate the assertion expression, but ignore
+ * the result.
+ *
+ * Non-production builds: if the assertion expression evaluates to false,
+ * call DEBUG_ASSERT_MESSAGE.
+ *
+ * Parameters:
+ *
+ * assertion:
+ * The assertion expression.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define verify(assertion) \
+ do \
+ { \
+ if ( !(assertion) ) \
+ { \
+ } \
+ } while ( 0 )
+#else
+ #define verify(assertion) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #assertion, \
+ 0, \
+ 0, \
+ __FILE__, \
+ __LINE__, \
+ 0); \
+ } \
+ } while ( 0 )
+#endif
+
+#define nverify(assertion) \
+ verify(!(assertion))
+
+
+/*
+ * verify_string(assertion, message)
+ *
+ * Summary:
+ * Production builds: evaluate the assertion expression, but ignore
+ * the result.
+ *
+ * Non-production builds: if the assertion expression evaluates to false,
+ * call DEBUG_ASSERT_MESSAGE.
+ *
+ * Parameters:
+ *
+ * assertion:
+ * The assertion expression.
+ *
+ * message:
+ * The C string to display.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define verify_string(assertion, message) \
+ do \
+ { \
+ if ( !(assertion) ) \
+ { \
+ } \
+ } while ( 0 )
+#else
+ #define verify_string(assertion, message) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #assertion, \
+ 0, \
+ message, \
+ __FILE__, \
+ __LINE__, \
+ 0); \
+ } \
+ } while ( 0 )
+#endif
+
+#define nverify_string(assertion, message) \
+ verify_string(!(assertion), message)
+
+
+/*
+ * verify_noerr(errorCode)
+ *
+ * Summary:
+ * Production builds: evaluate the errorCode expression, but ignore
+ * the result.
+ *
+ * Non-production builds: if the errorCode expression does not equal 0 (noErr),
+ * call DEBUG_ASSERT_MESSAGE.
+ *
+ * Parameters:
+ *
+ * errorCode:
+ * The expression to compare to 0.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define verify_noerr(errorCode) \
+ do \
+ { \
+ if ( 0 != (errorCode) ) \
+ { \
+ } \
+ } while ( 0 )
+#else
+ #define verify_noerr(errorCode) \
+ do \
+ { \
+ long evalOnceErrorCode = (errorCode); \
+ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #errorCode " == 0 ", \
+ 0, \
+ 0, \
+ __FILE__, \
+ __LINE__, \
+ evalOnceErrorCode); \
+ } \
+ } while ( 0 )
+#endif
+
+
+/*
+ * verify_noerr_string(errorCode, message)
+ *
+ * Summary:
+ * Production builds: evaluate the errorCode expression, but ignore
+ * the result.
+ *
+ * Non-production builds: if the errorCode expression does not equal 0 (noErr),
+ * call DEBUG_ASSERT_MESSAGE.
+ *
+ * Parameters:
+ *
+ * errorCode:
+ * The expression to compare to 0.
+ *
+ * message:
+ * The C string to display.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define verify_noerr_string(errorCode, message) \
+ do \
+ { \
+ if ( 0 != (errorCode) ) \
+ { \
+ } \
+ } while ( 0 )
+#else
+ #define verify_noerr_string(errorCode, message) \
+ do \
+ { \
+ long evalOnceErrorCode = (errorCode); \
+ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #errorCode " == 0 ", \
+ 0, \
+ message, \
+ __FILE__, \
+ __LINE__, \
+ evalOnceErrorCode); \
+ } \
+ } while ( 0 )
+#endif
+
+
+/*
+ * verify_action(assertion, action)
+ *
+ * Summary:
+ * Production builds: if the assertion expression evaluates to false,
+ * then execute the action statement or compound statement (block).
+ *
+ * Non-production builds: if the assertion expression evaluates to false,
+ * call DEBUG_ASSERT_MESSAGE and then execute the action statement or compound
+ * statement (block).
+ *
+ * Parameters:
+ *
+ * assertion:
+ * The assertion expression.
+ *
+ * action:
+ * The statement or compound statement (block).
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define verify_action(assertion, action) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ action; \
+ } \
+ } while ( 0 )
+#else
+ #define verify_action(assertion, action) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #assertion, \
+ 0, \
+ 0, \
+ __FILE__, \
+ __LINE__, \
+ 0); \
+ { action; } \
+ } \
+ } while ( 0 )
+#endif
+
+
+/*
+ * require(assertion, exceptionLabel)
+ *
+ * Summary:
+ * Production builds: if the assertion expression evaluates to false,
+ * goto exceptionLabel.
+ *
+ * Non-production builds: if the assertion expression evaluates to false,
+ * call DEBUG_ASSERT_MESSAGE and then goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * assertion:
+ * The assertion expression.
+ *
+ * exceptionLabel:
+ * The label.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define require(assertion, exceptionLabel) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#else
+ #define require(assertion, exceptionLabel) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #assertion, \
+ #exceptionLabel, \
+ 0, \
+ __FILE__, \
+ __LINE__, \
+ 0); \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#endif
+
+#define nrequire(assertion, exceptionLabel) \
+ require(!(assertion), exceptionLabel)
+
+
+/*
+ * require_action(assertion, exceptionLabel, action)
+ *
+ * Summary:
+ * Production builds: if the assertion expression evaluates to false,
+ * execute the action statement or compound statement (block) and then
+ * goto exceptionLabel.
+ *
+ * Non-production builds: if the assertion expression evaluates to false,
+ * call DEBUG_ASSERT_MESSAGE, execute the action statement or compound
+ * statement (block), and then goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * assertion:
+ * The assertion expression.
+ *
+ * exceptionLabel:
+ * The label.
+ *
+ * action:
+ * The statement or compound statement (block).
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define require_action(assertion, exceptionLabel, action) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ { \
+ action; \
+ } \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#else
+ #define require_action(assertion, exceptionLabel, action) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #assertion, \
+ #exceptionLabel, \
+ 0, \
+ __FILE__, \
+ __LINE__, \
+ 0); \
+ { \
+ action; \
+ } \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#endif
+
+#define nrequire_action(assertion, exceptionLabel, action) \
+ require_action(!(assertion), exceptionLabel, action)
+
+
+/*
+ * require_quiet(assertion, exceptionLabel)
+ *
+ * Summary:
+ * If the assertion expression evaluates to false, goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * assertion:
+ * The assertion expression.
+ *
+ * exceptionLabel:
+ * The label.
+ */
+#define require_quiet(assertion, exceptionLabel) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+
+#define nrequire_quiet(assertion, exceptionLabel) \
+ require_quiet(!(assertion), exceptionLabel)
+
+
+/*
+ * require_action_quiet(assertion, exceptionLabel, action)
+ *
+ * Summary:
+ * If the assertion expression evaluates to false, execute the action
+ * statement or compound statement (block), and goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * assertion:
+ * The assertion expression.
+ *
+ * exceptionLabel:
+ * The label.
+ *
+ * action:
+ * The statement or compound statement (block).
+ */
+#define require_action_quiet(assertion, exceptionLabel, action) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ { \
+ action; \
+ } \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+
+#define nrequire_action_quiet(assertion, exceptionLabel, action) \
+ require_action_quiet(!(assertion), exceptionLabel, action)
+
+
+/*
+ * require_string(assertion, exceptionLabel, message)
+ *
+ * Summary:
+ * Production builds: if the assertion expression evaluates to false,
+ * goto exceptionLabel.
+ *
+ * Non-production builds: if the assertion expression evaluates to false,
+ * call DEBUG_ASSERT_MESSAGE, and then goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * assertion:
+ * The assertion expression.
+ *
+ * exceptionLabel:
+ * The label.
+ *
+ * message:
+ * The C string to display.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define require_string(assertion, exceptionLabel, message) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#else
+ #define require_string(assertion, exceptionLabel, message) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #assertion, \
+ #exceptionLabel, \
+ message, \
+ __FILE__, \
+ __LINE__, \
+ 0); \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#endif
+
+#define nrequire_string(assertion, exceptionLabel, string) \
+ require_string(!(assertion), exceptionLabel, string)
+
+
+/*
+ * require_action_string(assertion, exceptionLabel, action, message)
+ *
+ * Summary:
+ * Production builds: if the assertion expression evaluates to false,
+ * execute the action statement or compound statement (block), and then
+ * goto exceptionLabel.
+ *
+ * Non-production builds: if the assertion expression evaluates to false,
+ * call DEBUG_ASSERT_MESSAGE, execute the action statement or compound
+ * statement (block), and then goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * assertion:
+ * The assertion expression.
+ *
+ * exceptionLabel:
+ * The label.
+ *
+ * action:
+ * The statement or compound statement (block).
+ *
+ * message:
+ * The C string to display.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define require_action_string(assertion, exceptionLabel, action, message) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ { \
+ action; \
+ } \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#else
+ #define require_action_string(assertion, exceptionLabel, action, message) \
+ do \
+ { \
+ if ( __builtin_expect(!(assertion), 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #assertion, \
+ #exceptionLabel, \
+ message, \
+ __FILE__, \
+ __LINE__, \
+ 0); \
+ { \
+ action; \
+ } \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#endif
+
+#define nrequire_action_string(assertion, exceptionLabel, action, message) \
+ require_action_string(!(assertion), exceptionLabel, action, message)
+
+
+/*
+ * require_noerr(errorCode, exceptionLabel)
+ *
+ * Summary:
+ * Production builds: if the errorCode expression does not equal 0 (noErr),
+ * goto exceptionLabel.
+ *
+ * Non-production builds: if the errorCode expression does not equal 0 (noErr),
+ * call DEBUG_ASSERT_MESSAGE and then goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * errorCode:
+ * The expression to compare to 0.
+ *
+ * exceptionLabel:
+ * The label.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define require_noerr(errorCode, exceptionLabel) \
+ do \
+ { \
+ if ( __builtin_expect(0 != (errorCode), 0) ) \
+ { \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#else
+ #define require_noerr(errorCode, exceptionLabel) \
+ do \
+ { \
+ long evalOnceErrorCode = (errorCode); \
+ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #errorCode " == 0 ", \
+ #exceptionLabel, \
+ 0, \
+ __FILE__, \
+ __LINE__, \
+ evalOnceErrorCode); \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#endif
+
+/*
+ * require_noerr_action(errorCode, exceptionLabel, action)
+ *
+ * Summary:
+ * Production builds: if the errorCode expression does not equal 0 (noErr),
+ * execute the action statement or compound statement (block) and
+ * goto exceptionLabel.
+ *
+ * Non-production builds: if the errorCode expression does not equal 0 (noErr),
+ * call DEBUG_ASSERT_MESSAGE, execute the action statement or
+ * compound statement (block), and then goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * errorCode:
+ * The expression to compare to 0.
+ *
+ * exceptionLabel:
+ * The label.
+ *
+ * action:
+ * The statement or compound statement (block).
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define require_noerr_action(errorCode, exceptionLabel, action) \
+ do \
+ { \
+ if ( __builtin_expect(0 != (errorCode), 0) ) \
+ { \
+ { \
+ action; \
+ } \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#else
+ #define require_noerr_action(errorCode, exceptionLabel, action) \
+ do \
+ { \
+ long evalOnceErrorCode = (errorCode); \
+ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #errorCode " == 0 ", \
+ #exceptionLabel, \
+ 0, \
+ __FILE__, \
+ __LINE__, \
+ evalOnceErrorCode); \
+ { \
+ action; \
+ } \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#endif
+
+
+/*
+ * require_noerr_quiet(errorCode, exceptionLabel)
+ *
+ * Summary:
+ * If the errorCode expression does not equal 0 (noErr),
+ * goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * errorCode:
+ * The expression to compare to 0.
+ *
+ * exceptionLabel:
+ * The label.
+ */
+#define require_noerr_quiet(errorCode, exceptionLabel) \
+ do \
+ { \
+ if ( __builtin_expect(0 != (errorCode), 0) ) \
+ { \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+
+
+/*
+ * require_noerr_action_quiet(errorCode, exceptionLabel, action)
+ *
+ * Summary:
+ * If the errorCode expression does not equal 0 (noErr),
+ * execute the action statement or compound statement (block) and
+ * goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * errorCode:
+ * The expression to compare to 0.
+ *
+ * exceptionLabel:
+ * The label.
+ *
+ * action:
+ * The statement or compound statement (block).
+ */
+#define require_noerr_action_quiet(errorCode, exceptionLabel, action) \
+ do \
+ { \
+ if ( __builtin_expect(0 != (errorCode), 0) ) \
+ { \
+ { \
+ action; \
+ } \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+
+
+/*
+ * require_noerr_string(errorCode, exceptionLabel, message)
+ *
+ * Summary:
+ * Production builds: if the errorCode expression does not equal 0 (noErr),
+ * goto exceptionLabel.
+ *
+ * Non-production builds: if the errorCode expression does not equal 0 (noErr),
+ * call DEBUG_ASSERT_MESSAGE, and then goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * errorCode:
+ * The expression to compare to 0.
+ *
+ * exceptionLabel:
+ * The label.
+ *
+ * message:
+ * The C string to display.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define require_noerr_string(errorCode, exceptionLabel, message) \
+ do \
+ { \
+ if ( __builtin_expect(0 != (errorCode), 0) ) \
+ { \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#else
+ #define require_noerr_string(errorCode, exceptionLabel, message) \
+ do \
+ { \
+ long evalOnceErrorCode = (errorCode); \
+ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #errorCode " == 0 ", \
+ #exceptionLabel, \
+ message, \
+ __FILE__, \
+ __LINE__, \
+ evalOnceErrorCode); \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#endif
+
+
+/*
+ * require_noerr_action_string(errorCode, exceptionLabel, action, message)
+ *
+ * Summary:
+ * Production builds: if the errorCode expression does not equal 0 (noErr),
+ * execute the action statement or compound statement (block) and
+ * goto exceptionLabel.
+ *
+ * Non-production builds: if the errorCode expression does not equal 0 (noErr),
+ * call DEBUG_ASSERT_MESSAGE, execute the action statement or compound
+ * statement (block), and then goto exceptionLabel.
+ *
+ * Parameters:
+ *
+ * errorCode:
+ * The expression to compare to 0.
+ *
+ * exceptionLabel:
+ * The label.
+ *
+ * action:
+ * The statement or compound statement (block).
+ *
+ * message:
+ * The C string to display.
+ */
+#if DEBUG_ASSERT_PRODUCTION_CODE
+ #define require_noerr_action_string(errorCode, exceptionLabel, action, message)\
+ do \
+ { \
+ if ( __builtin_expect(0 != (errorCode), 0) ) \
+ { \
+ { \
+ action; \
+ } \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#else
+ #define require_noerr_action_string(errorCode, exceptionLabel, action, message) \
+ do \
+ { \
+ long evalOnceErrorCode = (errorCode); \
+ if ( __builtin_expect(0 != evalOnceErrorCode, 0) ) \
+ { \
+ DEBUG_ASSERT_MESSAGE( \
+ DEBUG_ASSERT_COMPONENT_NAME_STRING, \
+ #errorCode " == 0 ", \
+ #exceptionLabel, \
+ message, \
+ __FILE__, \
+ __LINE__, \
+ evalOnceErrorCode); \
+ { \
+ action; \
+ } \
+ goto exceptionLabel; \
+ } \
+ } while ( 0 )
+#endif
+
+
+#endif /* __ASSERTMACROS__ */
+
22 EXTERNAL_HEADERS/Info.plist
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.apple.framework.kernel</string>
+ <key>CFBundleName</key>
+ <string>Kernel</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>FMWK</string>
+ <key>CFBundleShortVersionString</key>
+ <string>###KERNEL_VERSION_SHORT###</string>
+ <key>CFBundleVersion</key>
+ <string>###KERNEL_VERSION_LONG###</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+</dict>
+</plist>
42 EXTERNAL_HEADERS/Makefile
@@ -0,0 +1,42 @@
+export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd
+export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def
+export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule
+export MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir
+
+
+include $(MakeInc_cmd)
+include $(MakeInc_def)
+
+INSTINC_SUBDIRS = \
+ architecture \
+ mach-o
+
+INSTINC_SUBDIRS_PPC = \
+ architecture
+
+INSTINC_SUBDIRS_I386 = \
+ architecture
+
+INSTINC_SUBDIRS_X86_64 = \
+ architecture
+
+INSTINC_SUBDIRS_ARM = \
+ architecture
+
+EXPORT_FILES = \
+ AppleSecureBootEpoch.h \
+ ar.h \
+ stdarg.h \
+ stdbool.h \
+ stdint.h
+
+INSTALL_MI_LIST =
+
+INSTALL_MI_DIR = .
+
+EXPORT_MI_LIST = ${EXPORT_FILES}
+
+EXPORT_MI_DIR = .
+
+include $(MakeInc_rule)
+include $(MakeInc_dir)
96 EXTERNAL_HEADERS/ar.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*-
+ * Copyright (c) 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Hugh Smith at The University of Guelph.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)ar.h 8.2 (Berkeley) 1/21/94
+ */
+#ifdef KERNEL_PRIVATE
+
+#ifndef _AR_H_
+#define _AR_H_
+
+/* Pre-4BSD archives had these magic numbers in them. */
+#define OARMAG1 0177555
+#define OARMAG2 0177545
+
+#define ARMAG "!<arch>\n" /* ar "magic number" */
+#define SARMAG 8 /* strlen(ARMAG); */
+
+#define AR_EFMT1 "#1/" /* extended format #1 */
+
+struct ar_hdr {
+ char ar_name[16]; /* name */
+ char ar_date[12]; /* modification time */
+ char ar_uid[6]; /* user id */
+ char ar_gid[6]; /* group id */
+ char ar_mode[8]; /* octal file permissions */
+ char ar_size[10]; /* size in bytes */
+#define ARFMAG "`\n"
+ char ar_fmag[2]; /* consistency check */
+};
+
+#endif /* !_AR_H_ */
+#endif /* KERNEL_PRIVATE */
38 EXTERNAL_HEADERS/architecture/Makefile
@@ -0,0 +1,38 @@
+export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd
+export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def
+export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule
+export MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir
+
+
+include $(MakeInc_cmd)
+include $(MakeInc_def)
+
+INSTINC_SUBDIRS =
+
+INSTINC_SUBDIRS_PPC = \
+ ppc
+
+INSTINC_SUBDIRS_I386 = \
+ i386
+
+INSTINC_SUBDIRS_X86_64 = \
+ i386
+
+INSTINC_SUBDIRS_ARM = \
+ arm
+
+EXPORT_FILES =
+
+INSTALL_MI_LIST =
+
+INSTALL_MI_DIR = architecture
+
+INSTALL_KF_MI_LIST = byte_order.h
+
+EXPORT_MI_LIST = ${EXPORT_FILES}
+
+EXPORT_MI_DIR = architecture
+
+include $(MakeInc_rule)
+include $(MakeInc_dir)
+
371 EXTERNAL_HEADERS/architecture/byte_order.h
@@ -0,0 +1,371 @@
+/*
+ * Copyright (c) 1999-2002 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * "Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
+ * Reserved. This file contains Original Code and/or Modifications of
+ * Original Code as defined in and that are subject to the Apple Public
+ * Source License Version 1.0 (the 'License'). You may not use this file
+ * except in compliance with the License. Please obtain a copy of the
+ * License at http://www.apple.com/publicsource and read it before using
+ * this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
+ * License for the specific language governing rights and limitations
+ * under the License."
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright (c) 1992 NeXT Computer, Inc.
+ *
+ * Byte ordering conversion.
+ *
+ */
+
+#ifndef _ARCHITECTURE_BYTE_ORDER_H_
+#define _ARCHITECTURE_BYTE_ORDER_H_
+
+#include <libkern/OSByteOrder.h>
+
+typedef unsigned long NXSwappedFloat;
+typedef unsigned long long NXSwappedDouble;
+
+static __inline__
+unsigned short
+NXSwapShort(
+ unsigned short inv
+)
+{
+ return (unsigned short)OSSwapInt16((uint16_t)inv);
+}
+
+static __inline__
+unsigned int
+NXSwapInt(
+ unsigned int inv
+)
+{
+ return (unsigned int)OSSwapInt32((uint32_t)inv);
+}
+
+static __inline__
+unsigned long
+NXSwapLong(
+ unsigned long inv
+)
+{
+ return (unsigned long)OSSwapInt32((uint32_t)inv);
+}
+
+static __inline__
+unsigned long long
+NXSwapLongLong(
+ unsigned long long inv
+)
+{
+ return (unsigned long long)OSSwapInt64((uint64_t)inv);
+}
+
+static __inline__ NXSwappedFloat
+NXConvertHostFloatToSwapped(float x)
+{
+ union fconv {
+ float number;
+ NXSwappedFloat sf;
+ } u;
+ u.number = x;
+ return u.sf;
+}
+
+static __inline__ float
+NXConvertSwappedFloatToHost(NXSwappedFloat x)
+{
+ union fconv {
+ float number;
+ NXSwappedFloat sf;
+ } u;
+ u.sf = x;
+ return u.number;
+}
+
+static __inline__ NXSwappedDouble
+NXConvertHostDoubleToSwapped(double x)
+{
+ union dconv {
+ double number;
+ NXSwappedDouble sd;
+ } u;
+ u.number = x;
+ return u.sd;
+}
+
+static __inline__ double
+NXConvertSwappedDoubleToHost(NXSwappedDouble x)
+{
+ union dconv {
+ double number;
+ NXSwappedDouble sd;
+ } u;
+ u.sd = x;
+ return u.number;
+}
+
+static __inline__ NXSwappedFloat
+NXSwapFloat(NXSwappedFloat x)
+{
+ return (NXSwappedFloat)OSSwapInt32((uint32_t)x);
+}
+
+static __inline__ NXSwappedDouble
+NXSwapDouble(NXSwappedDouble x)
+{
+ return (NXSwappedDouble)OSSwapInt64((uint64_t)x);
+}
+
+/*
+ * Identify the byte order
+ * of the current host.
+ */
+
+enum NXByteOrder {
+ NX_UnknownByteOrder,
+ NX_LittleEndian,
+ NX_BigEndian
+};
+
+static __inline__
+enum NXByteOrder
+NXHostByteOrder(void)
+{
+#if defined(__LITTLE_ENDIAN__)
+ return NX_LittleEndian;
+#elif defined(__BIG_ENDIAN__)
+ return NX_BigEndian;
+#else
+ return NX_UnknownByteOrder;
+#endif
+}
+
+static __inline__
+unsigned short
+NXSwapBigShortToHost(
+ unsigned short x
+)
+{
+ return (unsigned short)OSSwapBigToHostInt16((uint16_t)x);
+}
+
+static __inline__
+unsigned int
+NXSwapBigIntToHost(
+ unsigned int x
+)
+{
+ return (unsigned int)OSSwapBigToHostInt32((uint32_t)x);
+}
+
+static __inline__
+unsigned long
+NXSwapBigLongToHost(
+ unsigned long x
+)
+{
+ return (unsigned long)OSSwapBigToHostInt32((uint32_t)x);
+}
+
+static __inline__
+unsigned long long
+NXSwapBigLongLongToHost(
+ unsigned long long x
+)
+{
+ return (unsigned long long)OSSwapBigToHostInt64((uint64_t)x);
+}
+
+static __inline__
+double
+NXSwapBigDoubleToHost(
+ NXSwappedDouble x
+)
+{
+ return NXConvertSwappedDoubleToHost((NXSwappedDouble)OSSwapBigToHostInt64((uint64_t)x));
+}
+
+static __inline__
+float
+NXSwapBigFloatToHost(
+ NXSwappedFloat x
+)
+{
+ return NXConvertSwappedFloatToHost((NXSwappedFloat)OSSwapBigToHostInt32((uint32_t)x));
+}
+
+static __inline__
+unsigned short
+NXSwapHostShortToBig(
+ unsigned short x
+)
+{
+ return (unsigned short)OSSwapHostToBigInt16((uint16_t)x);
+}
+
+static __inline__
+unsigned int
+NXSwapHostIntToBig(
+ unsigned int x
+)
+{
+ return (unsigned int)OSSwapHostToBigInt32((uint32_t)x);
+}
+
+static __inline__
+unsigned long
+NXSwapHostLongToBig(
+ unsigned long x
+)
+{
+ return (unsigned long)OSSwapHostToBigInt32((uint32_t)x);
+}
+
+static __inline__
+unsigned long long
+NXSwapHostLongLongToBig(
+ unsigned long long x
+)
+{
+ return (unsigned long long)OSSwapHostToBigInt64((uint64_t)x);
+}
+
+static __inline__
+NXSwappedDouble
+NXSwapHostDoubleToBig(
+ double x
+)
+{
+ return (NXSwappedDouble)OSSwapHostToBigInt64((uint64_t)NXConvertHostDoubleToSwapped(x));
+}
+
+static __inline__
+NXSwappedFloat
+NXSwapHostFloatToBig(
+ float x
+)
+{
+ return (NXSwappedFloat)OSSwapHostToBigInt32((uint32_t)NXConvertHostFloatToSwapped(x));
+}
+
+static __inline__
+unsigned short
+NXSwapLittleShortToHost(
+ unsigned short x
+)
+{
+ return (unsigned short)OSSwapLittleToHostInt16((uint16_t)x);
+}
+
+static __inline__
+unsigned int
+NXSwapLittleIntToHost(
+ unsigned int x
+)
+{
+ return (unsigned int)OSSwapLittleToHostInt32((uint32_t)x);
+}
+
+static __inline__
+unsigned long
+NXSwapLittleLongToHost(
+ unsigned long x
+)
+{
+ return (unsigned long)OSSwapLittleToHostInt32((uint32_t)x);
+}
+
+static __inline__
+unsigned long long
+NXSwapLittleLongLongToHost(
+ unsigned long long x
+)
+{
+ return (unsigned long long)OSSwapLittleToHostInt64((uint64_t)x);
+}
+
+static __inline__
+double
+NXSwapLittleDoubleToHost(
+ NXSwappedDouble x
+)
+{
+ return NXConvertSwappedDoubleToHost((NXSwappedDouble)OSSwapLittleToHostInt64((uint64_t)x));
+}
+
+static __inline__
+float
+NXSwapLittleFloatToHost(
+ NXSwappedFloat x
+)
+{
+ return NXConvertSwappedFloatToHost((NXSwappedFloat)OSSwapLittleToHostInt32((uint32_t)x));
+}
+
+static __inline__
+unsigned short
+NXSwapHostShortToLittle(
+ unsigned short x
+)
+{
+ return (unsigned short)OSSwapHostToLittleInt16((uint16_t)x);
+}
+
+static __inline__
+unsigned int
+NXSwapHostIntToLittle(
+ unsigned int x
+)
+{
+ return (unsigned int)OSSwapHostToLittleInt32((uint32_t)x);
+}
+
+static __inline__
+unsigned long
+NXSwapHostLongToLittle(
+ unsigned long x
+)
+{
+ return (unsigned long)OSSwapHostToLittleInt32((uint32_t)x);
+}
+
+static __inline__
+unsigned long long
+NXSwapHostLongLongToLittle(
+ unsigned long long x
+)
+{
+ return (unsigned long long)OSSwapHostToLittleInt64((uint64_t)x);
+}
+
+static __inline__
+NXSwappedDouble
+NXSwapHostDoubleToLittle(
+ double x
+)
+{
+ return (NXSwappedDouble)OSSwapHostToLittleInt64((uint64_t)NXConvertHostDoubleToSwapped(x));
+}
+
+static __inline__
+NXSwappedFloat
+NXSwapHostFloatToLittle(
+ float x
+)
+{
+ return (NXSwappedFloat)OSSwapHostToLittleInt32((uint32_t)NXConvertHostFloatToSwapped(x));
+}
+
+#endif /* _ARCHITECTURE_BYTE_ORDER_H_ */
37 EXTERNAL_HEADERS/architecture/i386/Makefile
@@ -0,0 +1,37 @@
+export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd
+export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def
+export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule
+export MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir
+
+
+include $(MakeInc_cmd)
+include $(MakeInc_def)
+
+INSTINC_SUBDIRS_I386 =
+
+INSTINC_SUBDIRS_X86_64 =
+
+EXPORT_FILES = \
+ asm_help.h \
+ cpu.h \
+ io.h \
+ pio.h \
+ sel.h \
+ tss.h \
+ desc.h \
+ reg_help.h \
+ table.h
+
+
+INSTALL_MD_LIST =
+
+INSTALL_MD_DIR =
+
+EXPORT_MD_LIST = ${EXPORT_FILES}
+
+EXPORT_MD_DIR = architecture/i386
+
+include $(MakeInc_rule)
+include $(MakeInc_dir)
+
+
322 EXTERNAL_HEADERS/architecture/i386/asm_help.h
@@ -0,0 +1,322 @@
+/*
+ * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1991 NeXT Computer, Inc. All rights reserved.
+ *
+ * File: architecture/i386/asm_help.h
+ * Author: Mike DeMoney, NeXT Computer, Inc.
+ * Modified for i386 by: Bruce Martin, NeXT Computer, Inc.
+ *
+ * This header file defines macros useful when writing assembly code
+ * for the Intel i386 family processors.
+ *
+ * HISTORY
+ * 10-Mar-92 Bruce Martin (bmartin@next.com)
+ * Adapted to i386
+ * 23-Jan-91 Mike DeMoney (mike@next.com)
+ * Created.
+ */
+
+#ifndef _ARCH_I386_ASM_HELP_H_
+#define _ARCH_I386_ASM_HELP_H_
+
+#include <architecture/i386/reg_help.h>
+
+
+#ifdef __ASSEMBLER__
+
+#define ALIGN \
+ .align 2, 0x90
+
+#define ROUND_TO_STACK(len) \
+ (((len) + STACK_INCR - 1) / STACK_INCR * STACK_INCR)
+
+#ifdef notdef
+#define CALL_MCOUNT \
+ pushl %ebp ;\
+ movl %esp, %ebp ;\
+ .data ;\
+ 1: .long 0 ;\
+ .text ;\
+ lea 9b,%edx ;\
+ call mcount ;\
+ popl %ebp ;
+#else
+#define CALL_MCOUNT
+#endif
+
+/*
+ * Prologue for functions that may call other functions. Saves
+ * registers and sets up a C frame.
+ */
+#define NESTED_FUNCTION_PROLOGUE(localvarsize) \
+ .set __framesize,ROUND_TO_STACK(localvarsize) ;\
+ .set __nested_function, 1 ;\
+ CALL_MCOUNT \
+ .if __framesize ;\
+ pushl %ebp ;\
+ movl %esp, %ebp ;\
+ subl $__framesize, %esp ;\
+ .endif ;\
+ pushl %edi ;\
+ pushl %esi ;\
+ pushl %ebx
+
+/*
+ * Prologue for functions that do not call other functions. Does not
+ * save registers (this is the functions responsibility). Does set
+ * up a C frame.
+ */
+#define LEAF_FUNCTION_PROLOGUE(localvarsize) \
+ .set __framesize,ROUND_TO_STACK(localvarsize) ;\
+ .set __nested_function, 0 ;\
+ CALL_MCOUNT \
+ .if __framesize ;\
+ pushl %ebp ;\
+ movl %esp, %ebp ;\
+ subl $__framesize, %esp ;\
+ .endif
+
+/*
+ * Prologue for any function.
+ *
+ * We assume that all Leaf functions will be responsible for saving any
+ * local registers they clobber.
+ */
+#define FUNCTION_EPILOGUE \
+ .if __nested_function ;\
+ popl %ebx ;\
+ popl %esi ;\
+ popl %edi ;\
+ .endif ;\
+ .if __framesize ;\
+ movl %ebp, %esp ;\
+ popl %ebp ;\
+ .endif ;\
+ ret
+
+
+/*
+ * Macros for declaring procedures
+ *
+ * Use of these macros allows ctags to have a predictable way
+ * to find various types of declarations. They also simplify
+ * inserting appropriate symbol table information.
+ *
+ * NOTE: these simple stubs will be replaced with more
+ * complicated versions once we know what the linker and gdb
+ * will require as far as register use masks and frame declarations.
+ * These macros may also be ifdef'ed in the future to contain profiling
+ * code.
+ *
+ */
+
+/*
+ * TEXT -- declare start of text segment
+ */
+#define TEXT \
+ .text
+
+/*
+ * DATA -- declare start of data segment
+ */
+#define DATA \
+ .data
+
+/*
+ * LEAF -- declare global leaf procedure
+ * NOTE: Control SHOULD NOT FLOW into a LEAF! A LEAF should only
+ * be jumped to. (A leaf may do an align.) Use a LABEL() if you
+ * need control to flow into the label.
+ */
+#define LEAF(name, localvarsize) \
+ .globl name ;\
+ ALIGN ;\
+name: ;\
+ LEAF_FUNCTION_PROLOGUE(localvarsize)
+
+/*
+ * X_LEAF -- declare alternate global label for leaf
+ */
+#define X_LEAF(name, value) \
+ .globl name ;\
+ .set name,value
+
+/*
+ * P_LEAF -- declare private leaf procedure
+ */
+#define P_LEAF(name, localvarsize) \
+ ALIGN ;\
+name: ;\
+ LEAF_FUNCTION_PROLOGUE(localvarsize)
+
+/*
+ * LABEL -- declare a global code label
+ * MUST be used (rather than LEAF, NESTED, etc) if control
+ * "flows into" the label.
+ */
+#define LABEL(name) \
+ .globl name ;\
+name:
+
+/*
+ * NESTED -- declare procedure that invokes other procedures
+ */
+#define NESTED(name, localvarsize) \
+ .globl name ;\
+ ALIGN ;\
+name: ;\
+ NESTED_FUNCTION_PROLOGUE(localvarsize)
+
+/*
+ * X_NESTED -- declare alternate global label for nested proc
+ */
+#define X_NESTED(name, value) \
+ .globl name ;\
+ .set name,value
+
+/*
+ * P_NESTED -- declare private nested procedure
+ */
+#define P_NESTED(name, localvarsize) \
+ ALIGN ;\
+name: ;\
+ NESTED_FUNCTION_PROLOGUE(localvarsize)
+
+/*
+ * END -- mark end of procedure
+ */
+#define END(name) \
+ FUNCTION_EPILOGUE
+
+
+/*
+ * Storage definition macros
+ * The main purpose of these is to allow an easy handle for ctags
+ */
+
+/*
+ * IMPORT -- import symbol
+ */
+#define IMPORT(name) \
+ .reference name
+
+/*
+ * ABS -- declare global absolute symbol
+ */
+#define ABS(name, value) \
+ .globl name ;\
+ .set name,value
+
+/*
+ * P_ABS -- declare private absolute symbol
+ */
+#define P_ABS(name, value) \
+ .set name,value
+
+/*
+ * EXPORT -- declare global label for data
+ */
+#define EXPORT(name) \
+ .globl name ;\
+name:
+
+/*
+ * BSS -- declare global zero'ed storage