|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1998-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: * Copyright (c) 1997 Apple Computer, Inc. ! 24: * ! 25: * ! 26: * HISTORY ! 27: * ! 28: * sdouglas 22 Oct 97 - first checked in. ! 29: * sdouglas 21 July 98 - start IOKit ! 30: * sdouglas 21 July 98 - start IOKit ! 31: */ ! 32: ! 33: ! 34: #ifndef _IOKIT_IOPEFLOADER_H ! 35: #define _IOKIT_IOPEFLOADER_H ! 36: ! 37: ! 38: #include <IOKit/ndrvsupport/IOMacOSTypes.h> ! 39: ! 40: #ifdef __cplusplus ! 41: extern "C" { ! 42: #endif ! 43: ! 44: ! 45: enum { ! 46: cfragFirstErrCode = -2800, /* The first value in the range of CFM errors.*/ ! 47: cfragContextIDErr = -2800, /* The context ID was not valid.*/ ! 48: cfragConnectionIDErr = -2801, /* The connection ID was not valid.*/ ! 49: cfragNoSymbolErr = -2802, /* The specified symbol was not found.*/ ! 50: cfragNoSectionErr = -2803, /* The specified section was not found.*/ ! 51: cfragNoLibraryErr = -2804, /* The named library was not found.*/ ! 52: cfragDupRegistrationErr = -2805, /* The registration name was already in use.*/ ! 53: cfragFragmentFormatErr = -2806, /* A fragment's container format is unknown.*/ ! 54: cfragUnresolvedErr = -2807, /* A fragment had "hard" unresolved imports.*/ ! 55: cfragNoPositionErr = -2808, /* The registration insertion point was not found.*/ ! 56: cfragNoPrivateMemErr = -2809, /* Out of memory for internal bookkeeping.*/ ! 57: cfragNoClientMemErr = -2810, /* Out of memory for fragment mapping or section instances.*/ ! 58: cfragNoIDsErr = -2811, /* No more CFM IDs for contexts, connections, etc.*/ ! 59: cfragInitOrderErr = -2812, /* */ ! 60: cfragImportTooOldErr = -2813, /* An import library was too old for a client.*/ ! 61: cfragImportTooNewErr = -2814, /* An import library was too new for a client.*/ ! 62: cfragInitLoopErr = -2815, /* Circularity in required initialization order.*/ ! 63: cfragInitAtBootErr = -2816, /* A boot library has an initialization function. (System 7 only)*/ ! 64: cfragLibConnErr = -2817, /* */ ! 65: cfragCFMStartupErr = -2818, /* Internal error during CFM initialization.*/ ! 66: cfragCFMInternalErr = -2819, /* An internal inconstistancy has been detected.*/ ! 67: cfragFragmentCorruptErr = -2820, /* A fragment's container was corrupt (known format).*/ ! 68: cfragInitFunctionErr = -2821, /* A fragment's initialization routine returned an error.*/ ! 69: cfragNoApplicationErr = -2822, /* No application member found in the cfrg resource.*/ ! 70: cfragArchitectureErr = -2823, /* A fragment has an unacceptable architecture.*/ ! 71: cfragFragmentUsageErr = -2824, /* A semantic error in usage of the fragment.*/ ! 72: cfragFileSizeErr = -2825, /* A file was too large to be mapped.*/ ! 73: cfragNotClosureErr = -2826, /* The closure ID was actually a connection ID.*/ ! 74: cfragNoRegistrationErr = -2827, /* The registration name was not found.*/ ! 75: cfragContainerIDErr = -2828, /* The fragment container ID was not valid.*/ ! 76: cfragClosureIDErr = -2829, /* The closure ID was not valid.*/ ! 77: cfragAbortClosureErr = -2830 /* Used by notification handlers to abort a closure.*/ ! 78: }; ! 79: ! 80: enum { ! 81: paramErr = -50, ! 82: unimpErr = -4 ! 83: }; ! 84: ! 85: ! 86: typedef UInt32 CFragVersionNumber; ! 87: enum { ! 88: kNullCFragVersion = 0, ! 89: kWildcardCFragVersion = 0xFFFFFFFF ! 90: }; ! 91: ! 92: typedef UInt8 CFragSymbolClass; ! 93: enum { ! 94: kCodeCFragSymbol = 0, ! 95: kDataCFragSymbol = 1, ! 96: kTVectorCFragSymbol = 2, ! 97: kTOCCFragSymbol = 3, ! 98: kGlueCFragSymbol = 4 ! 99: }; ! 100: ! 101: enum { ! 102: kUnresolvedCFragSymbolAddress = 0 ! 103: }; ! 104: ! 105: typedef UInt32 CFragShortVersionPair; ! 106: #define ComposeCFragShortVersionPair(current,older) (current << 16 | older) ! 107: #define GetCFragShortVersionCurrent(version) (version >> 16) ! 108: #define GetCFragShortVersionOlder(version) (version & 0xFFFF) ! 109: ! 110: ! 111: enum { ! 112: kMainCFragSymbolIndex = -1, ! 113: kInitCFragSymbolIndex = -2, ! 114: kTermCFragSymbolIndex = -3 ! 115: }; ! 116: ! 117: typedef void * PCodeInstance; ! 118: ! 119: OSStatus ! 120: PCodeOpen( LogicalAddress container, ByteCount containerSize, PCodeInstance * instance ); ! 121: OSStatus ! 122: PCodeClose( PCodeInstance instance ); ! 123: OSStatus ! 124: PCodeInstantiate( PCodeInstance instance ); ! 125: OSStatus ! 126: PCodeFindExport( PCodeInstance instance, const char * symbolName, LogicalAddress * address, CFragSymbolClass * symbolClass ); ! 127: OSStatus ! 128: PCodeFindMain( PCodeInstance instance, LogicalAddress * mainAddress ); ! 129: ! 130: ! 131: struct TVector { ! 132: LogicalAddress pc; ! 133: UInt32 toc; ! 134: }; ! 135: typedef struct TVector TVector; ! 136: ! 137: static __inline__ unsigned int get_R2(void) ! 138: { ! 139: unsigned int result; ! 140: __asm__ volatile("mr %0, r2" : "=r" (result)); ! 141: return result; ! 142: } ! 143: ! 144: static __inline__ void set_R2(unsigned int val) ! 145: { ! 146: __asm__ volatile("mr r2,%0" : : "r" (val)); ! 147: return; ! 148: } ! 149: ! 150: #ifdef __cplusplus ! 151: } ! 152: #endif ! 153: ! 154: #endif /* ! _IOKIT_IOPEFLOADER_H */ ! 155:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.