summaryrefslogtreecommitdiff
path: root/sys/src/9/pc64
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2021-04-25 17:41:34 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2021-04-25 17:41:34 +0200
commitc0d4498ab8a4e564156f49e5b6633a6335b91fc4 (patch)
treeb35786376285707481ad2c9b5a7fcd636b6a2a3b /sys/src/9/pc64
parent9f54c2831717bc656df6e5a2fde2bf7be8e29fef (diff)
kernel: clean up Mach structure
Remove unused fields and factor common fields into a new PMach struct in port/portdat.h. The fields machno, splpc and proc are not moved to PMach as they are part of the known offsets from assembly (l.s).
Diffstat (limited to 'sys/src/9/pc64')
-rw-r--r--sys/src/9/pc64/dat.h58
1 files changed, 19 insertions, 39 deletions
diff --git a/sys/src/9/pc64/dat.h b/sys/src/9/pc64/dat.h
index 1d581f371..b8628db9d 100644
--- a/sys/src/9/pc64/dat.h
+++ b/sys/src/9/pc64/dat.h
@@ -184,48 +184,21 @@ typedef struct {
struct Mach
{
- int machno; /* physical id of processor (KNOWN TO ASSEMBLY) */
- uintptr splpc; /* pc of last caller to splhi (KNOWN TO ASSEMBLY) */
+ int machno; /* physical id of processor */
+ uintptr splpc; /* pc of last caller to splhi */
+ Proc* proc; /* current process on this processor */
- Proc* proc; /* current process on this processor (KNOWN TO ASSEMBLY) */
-
- u64int* pml4; /* pml4 base for this processor (va) */
- Tss* tss; /* tss for this processor */
- Segdesc *gdt; /* gdt for this processor */
-
- u64int mmumap[4]; /* bitmap of pml4 entries for zapping */
- MMU* mmufree; /* freelist for MMU structures */
- ulong mmucount; /* number of MMU structures in freelist */
-
- 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 */
-
- int tlbfault;
- int tlbpurge;
- int pfault;
- int cs;
- int syscall;
- int load;
- int intr;
- int flushmmu; /* make current proc flush it's mmu state */
- int ilockdepth;
- Perf perf; /* performance counters */
+ PMach;
+ uvlong tscticks;
ulong spuriousintr;
int lastintr;
int loopconst;
int aalcycles;
-
int cpumhz;
- uvlong cyclefreq; /* Frequency of user readable cycle counter */
uvlong cpuhz;
+
int cpuidax;
int cpuidcx;
int cpuiddx;
@@ -234,17 +207,24 @@ struct Mach
uchar cpuidfamily;
uchar cpuidmodel;
uchar cpuidstepping;
- int havetsc;
- int havepge;
- int havewatchpt8;
- int havenx;
- uvlong tscticks;
+
+ char havetsc;
+ char havepge;
+ char havewatchpt8;
+ char havenx;
+
+ u64int* pml4; /* pml4 base for this processor (va) */
+ Tss* tss; /* tss for this processor */
+ Segdesc*gdt; /* gdt for this processor */
u64int dr7; /* shadow copy of dr7 */
u64int xcr0;
-
void* vmx;
+ MMU* mmufree; /* freelist for MMU structures */
+ ulong mmucount; /* number of MMU structures in freelist */
+ u64int mmumap[4]; /* bitmap of pml4 entries for zapping */
+
uintptr stack[1];
};