typedef struct Conf Conf;
+typedef struct Confmem Confmem;
typedef struct FPsave FPsave;
+typedef struct PFPU PFPU;
typedef struct ISAConf ISAConf;
typedef struct Imap Imap;
typedef struct Label Label;
typedef struct Lock Lock;
typedef struct Mach Mach;
-typedef struct Notsave Notsave;
typedef struct PCArch PCArch;
typedef struct PMMU PMMU;
typedef struct Page Page;
typedef struct Sys Sys;
typedef struct Ureg Ureg;
typedef struct Vctl Vctl;
+typedef long Tval;
#pragma incomplete Ureg
#pragma incomplete Imap
ulong pc;
};
-/*
- * Proc.fpstate
- */
-enum
-{
- /* Floating point states */
- FPinit = 0,
- FPactive = 1,
- FPinactive = 2,
- /* Bit that's or-ed in during note handling (FP is illegal in note handlers) */
- FPillegal = 0x100,
-};
-
/*
* This structure must agree with fpsave and fprestore asm routines
*/
};
};
+struct PFPU
+{
+ int fpstate;
+ FPsave fpsave[1];
+};
+
+enum
+{
+ /* Floating point states */
+ FPinit = 0,
+ FPactive = 1,
+ FPinactive = 2,
+ /* Bit that's or-ed in during note handling (FP is illegal in note handlers) */
+ FPillegal = 0x100,
+};
+
+struct Confmem
+{
+ ulong base;
+ ulong npage;
+ ulong kbase;
+ ulong klimit;
+};
+
struct Conf
{
ulong nmach; /* processors */
ulong nproc; /* processes */
- ulong npage0; /* total physical pages of memory */
- ulong npage1; /* total physical pages of memory */
+ Confmem mem[2];
ulong npage; /* total physical pages of memory */
- ulong base0; /* base of bank 0 */
- ulong base1; /* base of bank 1 */
ulong upages; /* user page pool */
ulong nimage; /* number of page cache image headers */
ulong nswap; /* number of swap pages */
Ureg *mmureg; /* pointer to ureg structure */
};
-/*
- * things saved in the Proc structure during a notify
- */
-struct Notsave
-{
- ulong UNUSED;
-};
-
#include "../port/portdat.h"
/*
/*0x14*/ ulong dmiss; /* number of data misses */
/* ordering from here on irrelevant */
+ PMach;
Imap* imap;
- ulong ticks; /* of the clock since boot time */
- Label sched; /* scheduler wakeup */
- Lock alarmlock; /* access to alarm list */
- void *alarm; /* alarms bound to this clock */
- int inclockintr;
+ uintptr ptabbase; /* start of page table in kernel virtual space */
+ int slotgen; /* next pte (byte offset) when pteg is full */
+ int mmupid; /* next mmu pid to use */
+ int sweepcolor;
+ int trigcolor;
+ Rendez sweepr;
+
int cputype;
ulong loopconst;
- Perf perf; /* performance counters */
-
- Proc* readied; /* for runproc */
- ulong schedticks; /* next forced context switch */
ulong clkin; /* basic clock frequency */
ulong vco_out;
vlong cpuhz;
- uvlong cyclefreq; /* Frequency of user readable cycle counter */
ulong bushz;
ulong dechz;
ulong tbhz;
ulong cpmhz; /* communications processor module frequency */
ulong brghz; /* baud rate generator frequency */
- ulong pcclast;
- uvlong fastclock;
-
- int tlbpurge; /* # of tlb purges */
- int pfault; /* # of page faults */
- int cs;
- int syscall;
- int load;
- int intr;
- int flushmmu; /* make current proc flush it's mmu state */
- int ilockdepth;
-
- ulong ptabbase; /* start of page table in kernel virtual space */
- int slotgen; /* next pte (byte offset) when pteg is full */
- int mmupid; /* next mmu pid to use */
- int sweepcolor;
- int trigcolor;
- Rendez sweepr;
-
- ulong spuriousintr;
- int lastintr;
-
/* MUST BE LAST */
- int stack[1];
+ uintptr stack[1];
};
struct
{
- Lock;
- short machs;
- short exiting;
- short ispanic;
+ char machs[MAXMACH];
+ int exiting;
}active;
/*