The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/osfmk/ppc/atomic_switch.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    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 typedef unsigned char   UInt8;
   23 typedef unsigned short  UInt16;
   24 typedef unsigned long   UInt32;
   25 
   26 
   27 /* Support firmware CallPseudoKernel architectural extension */
   28 
   29 struct CallPseudoKernelDescriptor {
   30         UInt32                          pc;
   31         UInt32                          gpr0;
   32         UInt32                          intControlAddr;
   33         UInt32                          newState;
   34         UInt32                          intStateMask;
   35         UInt32                          intCR2Mask;
   36         UInt32                          intCR2Shift;
   37         UInt32                          sysContextState;
   38 };
   39 typedef struct CallPseudoKernelDescriptor CallPseudoKernelDescriptor;
   40 typedef CallPseudoKernelDescriptor * CallPseudoKernelDescriptorPtr;
   41 typedef CallPseudoKernelDescriptor CPKD_t;
   42 
   43 
   44 
   45 /* Support firmware ExitPseudoKernel architectural extension */
   46 
   47 struct ExitPseudoKernelDescriptor {
   48         UInt32                          pc;
   49         UInt32                          sp;
   50         UInt32                          gpr0;
   51         UInt32                          gpr3;
   52         UInt32                          cr;
   53         UInt32                          intControlAddr;
   54         UInt32                          newState;
   55         UInt32                          intStateMask;
   56         UInt32                          intCR2Mask;
   57         UInt32                          intCR2Shift;
   58         UInt32                          sysContextState;
   59         UInt32                          intPendingMask;
   60         UInt32                          intPendingPC;
   61         UInt32                          msrUpdate;
   62 };
   63 typedef struct ExitPseudoKernelDescriptor ExitPseudoKernelDescriptor;
   64 typedef ExitPseudoKernelDescriptor * ExitPseudoKernelDescriptorPtr;
   65 typedef ExitPseudoKernelDescriptor EPKD_t;
   66 
   67 
   68 struct EmulatorDescriptor {
   69         UInt8           regMap[16];             // table mapping 68K D0..D7, A0..A7 register to PowerPC registers
   70         UInt32          bootstrapVersionOffset; // offset within emulator data page of the bootstrap version string
   71         UInt32          ecbOffset;              // offset within emulator data page of the ECB
   72         UInt32          intModeLevelOffset;     // offset within emulator data page of the interrupt mode level
   73         UInt32          entryAddress;           // offset within text of the emulator's main entry point
   74         UInt32          kcallTrapTableOffset;   // offset within text of the nanokernel(!) call trap table
   75         UInt32          postIntMask;            // post interrupt mask
   76         UInt32          clearIntMask;           // clear interrupt mask
   77         UInt32          testIntMask;            // test interrupt mask
   78         UInt32          codeSize;               // total size of emulator object code (interpretive + DR)
   79         UInt32          hashTableSize;          // size of DR emulator's hash table
   80         UInt32          drCodeStartOffset;      // offset within text of the DR emulator's object code
   81         UInt32          drInitOffset;           // offset within DR emulator of its initialization entry point
   82         UInt32          drAllocateCache;        // offset within DR emulator of its cache allocation entry point
   83         UInt32          dispatchTableOffset;    // offset within text of the encoded instruction dispatch table 
   84 };
   85 typedef struct EmulatorDescriptor EmulatorDescriptor;
   86 typedef EmulatorDescriptor *EmulatorDescriptorPtr;
   87 
   88         
   89 enum {
   90                                                                                         // The following define the UInt32 gInterruptState
   91         kInUninitialized        =       0,                      // State not yet initialized
   92         kInPseudoKernel         =       1,                      // Currently executing within pseudo kernel
   93         kInSystemContext        =       2,                      // Currently executing within the system (emulator) context
   94         kInAlternateContext     =       3,                      // Currently executing within an alternate (native) context
   95         kInExceptionHandler     =       4,                      // Currently executing an exception handler
   96         kOutsideMain            =       5,                      // Currently executing outside of the main thread
   97         kNotifyPending          =       6,                      // Pending Notify Interrupt
   98 
   99         kInterruptStateMask     =       0x000F0000,     // Mask to extract interrupt state from gInterruptState
  100         kInterruptStateShift    =       16,                     // Shift count to align interrupt state
  101 
  102         kBackupCR2Mask          =       0x0000000F,     // Mask to extract backup CR2 from gInterruptState
  103         kCR2ToBackupShift       =       31-11,          // Shift count to align CR2 into the backup CR2 of gInterruptState
  104                                                                                         //  (and vice versa)
  105         kCR2Mask                =       0x00F00000  // Mask to extract CR2 from the PPC CR register 
  106 };
  107 
  108 
  109 enum {
  110         kcReturnFromException           = 0,    
  111         kcRunAlternateContext           = 1,
  112         kcResetSystem                           = 2,
  113         kcVMDispatch                            = 3,
  114         kcPrioritizeInterrupts          = 4,
  115         kcPowerDispatch                         = 5,
  116         kcRTASDispatch                          = 6,
  117         kcGetAdapterProcPtrsPPC         = 12,
  118         kcGetAdapterProcPtrs            = 13,
  119         kcCallAdapterProc                       = 14,
  120         kcSystemCrash                           = 15
  121 };
  122 
  123 #define bbMaxCode 16
  124 

Cache object: 6db1d869e68b2648f65ef84ec171c44d


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.