typedef struct Conf Conf;
typedef struct Confmem Confmem;
typedef struct FPsave FPsave;
+typedef struct PFPU PFPU;
typedef struct L1 L1;
typedef struct Label Label;
typedef struct Lock Lock;
typedef struct KMap KMap;
typedef struct MMMU MMMU;
typedef struct Mach Mach;
-typedef struct Notsave Notsave;
typedef struct Page Page;
typedef struct Proc Proc;
typedef struct PMMU PMMU;
uchar regs[256];
};
-/*
- * FPsave.status
- */
+struct PFPU
+{
+ int fpstate;
+ FPsave fpsave[1];
+};
+
enum
{
FPinit,
struct Confmem
{
uintptr base;
- uintptr limit;
- usize npage;
+ ulong npage;
uintptr kbase;
uintptr klimit;
};
{
ulong nmach; /* processors */
ulong nproc; /* processes */
- Confmem mem[1]; /* physical memory */
+ Confmem mem[2]; /* physical memory */
ulong npage; /* total physical pages of memory */
- usize upages; /* user page pool */
+ ulong upages; /* user page pool */
ulong copymode; /* 0 is copy on write, 1 is copy on reference */
ulong ialloc; /* max interrupt time allocation in bytes */
ulong pipeqsize; /* size in bytes of pipe queues */
int monitor;
};
-/*
- * things saved in the Proc structure during a notify
- */
-struct Notsave {
- int emptiness;
-};
-
/*
* MMU stuff in proc
*/
struct Mach
{
- /* known to assembly */
int machno; /* physical id of processor */
uintptr splpc; /* pc of last caller to splhi */
Proc* proc; /* current process */
ulong cycleshi;
/* end of known to assembly */
- int flushmmu; /* flush current proc mmu state */
-
- 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;
-
- Proc* readied; /* for runproc */
- ulong schedticks; /* next forced context switch */
+ MMMU;
- ulong delayloop;
+ PMach;
- /* stats */
- int tlbfault;
- int tlbpurge;
- int pfault;
- int cs;
- int syscall;
- int load;
- int intr;
int lastintr;
- int ilockdepth;
- Perf perf; /* performance counters */
-
int cpumhz;
uvlong cpuhz; /* speed of cpu */
- uvlong cyclefreq; /* Frequency of user readable cycle counter */
-
- MMMU;
- int stack[1];
+ uintptr stack[1];
};
+#define NISAOPT 8
struct ISAConf
{
- int dummy;
- char *type;
- ulong port;
- int irq;
+ char *type;
+ ulong port;
+ int irq;
+ int nopt;
+ char *opt[NISAOPT];
};
#define BUSUNKNOWN -1
struct
{
- Lock;
char machs[MAXMACH]; /* active CPUs */
int exiting; /* shutdown */
}active;