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/ppc/dat.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 typedef struct Conf     Conf;
    2 typedef struct FPsave   FPsave;
    3 typedef struct ISAConf  ISAConf;
    4 typedef struct Imap     Imap;
    5 typedef struct Label    Label;
    6 typedef struct Lock     Lock;
    7 typedef struct Mach     Mach;
    8 typedef struct Notsave  Notsave;
    9 typedef struct PCArch   PCArch;
   10 typedef struct PMMU     PMMU;
   11 typedef struct Page     Page;
   12 typedef struct Pcidev   Pcidev;
   13 typedef struct Proc     Proc;
   14 typedef struct Sys      Sys;
   15 typedef struct Ureg     Ureg;
   16 typedef struct Vctl     Vctl;
   17 
   18 #pragma incomplete Ureg
   19 #pragma incomplete Imap
   20 
   21 #define MAXSYSARG       5       /* for mount(fd, mpt, flag, arg, srv) */
   22 
   23 /*
   24  *  parameters for sysproc.c
   25  */
   26 #define AOUT_MAGIC      Q_MAGIC
   27 
   28 /*
   29  *  machine dependent definitions used by ../port/dat.h
   30  */
   31 
   32 struct Lock
   33 {
   34         ulong   key;                    /* semaphore (non-zero = locked) */
   35         ulong   sr;
   36         ulong   pc;
   37         Proc    *p;
   38         ulong   pid;
   39         ushort  isilock;
   40 };
   41 
   42 struct Label
   43 {
   44         ulong   sp;
   45         ulong   pc;
   46 };
   47 
   48 /*
   49  * Proc.fpstate
   50  */
   51 enum
   52 {
   53         /* Floating point states */
   54         FPinit = 0,
   55         FPactive = 1,
   56         FPinactive = 2,
   57         /* Bit that's or-ed in during note handling (FP is illegal in note handlers) */
   58         FPillegal = 0x100,
   59 };
   60 
   61 /*
   62  * This structure must agree with fpsave and fprestore asm routines
   63  */
   64 struct FPsave
   65 {
   66         double  fpreg[32];
   67         union {
   68                 double  fpscrd;
   69                 struct {
   70                         ulong   pad;
   71                         ulong   fpscr;
   72                 };
   73         };
   74 };
   75 
   76 struct Conf
   77 {
   78         ulong   nmach;          /* processors */
   79         ulong   nproc;          /* processes */
   80         ulong   npage0;         /* total physical pages of memory */
   81         ulong   npage1;         /* total physical pages of memory */
   82         ulong   npage;          /* total physical pages of memory */
   83         ulong   base0;          /* base of bank 0 */
   84         ulong   base1;          /* base of bank 1 */
   85         ulong   upages;         /* user page pool */
   86         ulong   nimage;         /* number of page cache image headers */
   87         ulong   nswap;          /* number of swap pages */
   88         int     nswppo;         /* max # of pageouts per segment pass */
   89         ulong   copymode;       /* 0 is copy on write, 1 is copy on reference */
   90         int     monitor;        /* has display? */
   91         ulong   ialloc;         /* bytes available for interrupt time allocation */
   92         ulong   pipeqsize;      /* size in bytes of pipe queues */
   93 };
   94 
   95 /*
   96  *  mmu goo in the Proc structure
   97  */
   98 #define NCOLOR 1
   99 struct PMMU
  100 {
  101         int     mmupid;
  102         Ureg    *mmureg;                /* pointer to ureg structure */
  103 };
  104 
  105 /*
  106  *  things saved in the Proc structure during a notify
  107  */
  108 struct Notsave
  109 {
  110         ulong   UNUSED;
  111 };
  112 
  113 #include "../port/portdat.h"
  114 
  115 /*
  116  *  machine dependent definitions not used by ../port/dat.h
  117  */
  118 /*
  119  * Fake kmap
  120  */
  121 typedef void            KMap;
  122 #define VA(k)           ((ulong)(k))
  123 #define kmap(p)         (KMap*)((p)->pa|KZERO)
  124 #define kunmap(k)
  125 
  126 struct Mach
  127 {
  128         /* OFFSETS OF THE FOLLOWING KNOWN BY l.s */
  129 /*0x00*/        int     machno; /* physical id of processor */
  130 /*0x04*/        ulong   splpc;  /* pc that called splhi() */
  131 /*0x08*/        Proc    *proc;  /* current process on this processor */
  132         /* Debugging/statistics for software TLB in l.s (therefore, also known by l.s) */
  133 /*0x0c*/        ulong   tlbfault;       /* type of last miss */
  134 /*0x10*/        ulong   imiss;  /* number of instruction misses */
  135 /*0x14*/        ulong   dmiss;  /* number of data misses */
  136 
  137         /* ordering from here on irrelevant */
  138 
  139         Imap*   imap;
  140 
  141         ulong   ticks;          /* of the clock since boot time */
  142         Label   sched;          /* scheduler wakeup */
  143         Lock    alarmlock;      /* access to alarm list */
  144         void    *alarm;         /* alarms bound to this clock */
  145         int     inclockintr;
  146         int     cputype;
  147         ulong   loopconst;
  148         Perf    perf;           /* performance counters */
  149 
  150         Proc*   readied;        /* for runproc */
  151         ulong   schedticks;     /* next forced context switch */
  152 
  153         ulong   clkin;          /* basic clock frequency */
  154         ulong   vco_out;
  155         vlong   cpuhz;
  156         uvlong  cyclefreq;      /* Frequency of user readable cycle counter */
  157         ulong   bushz;
  158         ulong   dechz;
  159         ulong   tbhz;
  160         ulong   cpmhz;          /* communications processor module frequency */
  161         ulong   brghz;          /* baud rate generator frequency */
  162 
  163         ulong   pcclast;
  164         uvlong  fastclock;
  165 
  166         int     tlbpurge;       /* # of tlb purges */
  167         int     pfault;         /* # of page faults */
  168         int     cs;
  169         int     syscall;
  170         int     load;
  171         int     intr;
  172         int     flushmmu;       /* make current proc flush it's mmu state */
  173         int     ilockdepth;
  174 
  175         ulong   ptabbase;       /* start of page table in kernel virtual space */
  176         int     slotgen;        /* next pte (byte offset) when pteg is full */
  177         int     mmupid;         /* next mmu pid to use */
  178         int     sweepcolor;
  179         int     trigcolor;
  180         Rendez  sweepr;
  181 
  182         ulong   spuriousintr;
  183         int     lastintr;
  184 
  185         /* MUST BE LAST */
  186         int     stack[1];
  187 };
  188 
  189 struct
  190 {
  191         Lock;
  192         short   machs;
  193         short   exiting;
  194         short   ispanic;
  195 }active;
  196 
  197 /*
  198  *  a parsed plan9.ini line
  199  */
  200 #define NISAOPT         8
  201 
  202 struct ISAConf {
  203         char    *type;
  204         ulong   port;
  205         int     irq;
  206         ulong   dma;
  207         ulong   mem;
  208         ulong   size;
  209         ulong   freq;
  210 
  211         int     nopt;
  212         char    *opt[NISAOPT];
  213 };
  214 
  215 struct Vctl {
  216         Vctl*   next;           /* handlers on this vector */
  217 
  218         char    name[KNAMELEN]; /* of driver */
  219         int     isintr;         /* interrupt or fault/trap */
  220         int     irq;
  221 
  222         void    (*f)(Ureg*, void*);     /* handler to call */
  223         void*   a;              /* argument to call it with */
  224 };
  225 
  226 extern Mach mach0;
  227 
  228 extern register Mach *m;
  229 extern register Proc *up;
  230 
  231 extern FPsave initfp;

Cache object: cfd050352bc8bec6af16d24326642114


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