ref: 43734e8f98a5dbe7fd4fe1cca795855e8d74096b
parent: 0d44215be55c15455358d30b7609c7f839afd873
author: glenda <glenda@cirno>
date: Wed May 8 09:26:45 EDT 2024
remove custom dat.h for now remove tcore.c from build stub out actrap and acsyscall
--- a/sys/src/nix/pc64/acore.c
+++ b/sys/src/nix/pc64/acore.c
@@ -9,6 +9,7 @@
#include "ureg.h"
#include "pool.h"
#include "mp.h"
+#include "nix.h"
/*
* NIX code run at the AC.
@@ -98,7 +99,7 @@
// DBG("acmmuswitch mpl4 %#p mach0pml4 %#p m0pml4 %#p\n", m->pml4->pa, mach0pml4.pa, sys->machptr[0]->pml4->pa);
- putcr3(PADDR(m->pml4));
+ //putcr3(PADDR(m->pml4));
}
/*
@@ -132,6 +133,17 @@
print("acsched: all done on core %d\n", core);
}
+void
+actrap(Ureg *u)
+{
+ panic("actrap");
+}
+void
+acsyscall(void)
+{
+ panic("acsyscall");
+}
+#ifdef _NOTNOW__
/*
* Beware: up is not set when this function is called.
*/
@@ -336,3 +348,4 @@
assert((uintptr)&pp->dbgreg == 24);
//assert((uintptr)&mp->stack == 24);
}
+#endif
--- a/sys/src/nix/pc64/dat.h
+++ /dev/null
@@ -1,375 +1,0 @@
-typedef struct BIOS32si BIOS32si;
-typedef struct BIOS32ci BIOS32ci;
-typedef struct Conf Conf;
-typedef struct Confmem Confmem;
-typedef struct FPssestate FPssestate;
-typedef struct FPavxstate FPavxstate;
-typedef struct FPsave FPsave;
-typedef struct PFPU PFPU;
-typedef struct ISAConf ISAConf;
-typedef struct Label Label;
-typedef struct Lock Lock;
-typedef struct MMU MMU;
-typedef struct Mach Mach;
-typedef struct PCArch PCArch;
-typedef struct Pcidev Pcidev;
-typedef struct PCMmap PCMmap;
-typedef struct PCMslot PCMslot;
-typedef struct Page Page;
-typedef struct PMMU PMMU;
-typedef struct Proc Proc;
-typedef struct Segdesc Segdesc;
-typedef vlong Tval;
-typedef struct Ureg Ureg;
-typedef struct Vctl Vctl;
-
-#pragma incomplete BIOS32si
-#pragma incomplete Pcidev
-#pragma incomplete Ureg
-
-#include "nix.h"
-
-#define MAXSYSARG 5 /* for mount(fd, afd, mpt, flag, arg) */
-
-/*
- * parameters for sysproc.c
- */
-#define AOUT_MAGIC (S_MAGIC)
-
-struct Lock
-{
- ulong key;
- ulong sr;
- uintptr pc;
- Proc *p;
- Mach *m;
- ushort isilock;
- long lockcycles;
-};
-
-struct Label
-{
- uintptr sp;
- uintptr pc;
-};
-
-struct FPssestate
-{
- u16int fcw; /* x87 control word */
- u16int fsw; /* x87 status word */
- u8int ftw; /* x87 tag word */
- u8int zero; /* 0 */
- u16int fop; /* last x87 opcode */
- u64int rip; /* last x87 instruction pointer */
- u64int rdp; /* last x87 data pointer */
- u32int mxcsr; /* MMX control and status */
- u32int mxcsrmask; /* supported MMX feature bits */
- uchar st[128]; /* shared 64-bit media and x87 regs */
- uchar xmm[256]; /* 128-bit media regs */
- uchar ign[96]; /* reserved, ignored */
-};
-
-struct FPavxstate
-{
- FPssestate;
- uchar header[64]; /* XSAVE header */
- uchar ymm[256]; /* upper 128-bit regs (AVX) */
-};
-
-struct FPsave
-{
- FPavxstate;
-};
-
-enum
-{
- FPinit,
- FPactive,
- FPinactive,
- FPprotected,
-
- FPillegal= 0x100, /* fp forbidden in note handler */
-};
-
-#define KFPSTATE
-
-struct PFPU
-{
- int fpstate;
- int kfpstate;
- FPsave *fpsave;
- FPsave *kfpsave;
-};
-
-struct Confmem
-{
- uintptr base;
- ulong npage;
- uintptr kbase;
- uintptr klimit;
-};
-
-struct Conf
-{
- ulong nmach; /* processors */
- ulong nproc; /* processes */
- ulong monitor; /* has monitor? */
- ulong npage; /* total physical pages of memory */
- ulong upages; /* user page pool */
- ulong nimage; /* number of page cache image headers */
- ulong nswap; /* number of swap pages */
- int nswppo; /* max # of pageouts per segment pass */
- 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 nuart; /* number of uart devices */
- Confmem mem[64]; /* physical memory */
-};
-
-struct Segdesc
-{
- u32int d0;
- u32int d1;
-};
-
-/*
- * MMU structure for PDP, PD, PT pages.
- */
-struct MMU
-{
- MMU *next;
- uintptr *page;
- int index;
- int level;
-};
-
-/*
- * MMU stuff in proc
- */
-#define NCOLOR 1
-struct PMMU
-{
- MMU* mmuhead;
- MMU* mmutail;
- MMU* kmaphead;
- MMU* kmaptail;
- ulong kmapcount;
- ulong kmapindex;
- ulong mmucount;
-
- u64int dr[8];
- void *vmx;
-};
-
-#define inittxtflush(p)
-#define settxtflush(p,c)
-
-#include "../port/portdat.h"
-
-typedef struct {
- u32int _0_;
- u32int rsp0[2];
- u32int rsp1[2];
- u32int rsp2[2];
- u32int _28_[2];
- u32int ist[14];
- u16int _92_[5];
- u16int iomap;
-} Tss;
-
-struct Mach
-{
- int machno; /* physical id of processor */
- uintptr splpc; /* pc of last caller to splhi */
- Proc* proc; /* current process on this processor */
-
- PMach;
-
- uvlong tscticks;
- ulong spuriousintr;
- int lastintr;
-
- int loopconst;
- int delaylcycles;
- int cpumhz;
- uvlong cpuhz;
-
- int cpuidax;
- int cpuidcx;
- int cpuiddx;
- char cpuidid[16];
- char* cpuidtype;
- uchar cpuidfamily;
- uchar cpuidmodel;
- uchar cpuidstepping;
-
- char havetsc;
- char havepge;
- char havewatchpt8;
- char havenx;
-
- int fpstate; /* FPU state for interrupts */
- FPsave *fpsave;
-
- 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 */
-
- NIX;
- u64int cr2;
-
- uintptr stack[1];
-};
-
-/*
- * KMap the structure
- */
-typedef void KMap;
-#define VA(k) ((void*)k)
-
-extern u32int MemMin;
-
-struct
-{
- char machs[MAXMACH]; /* bitmap of active CPUs */
- int exiting; /* shutdown */
-
- // NIX
- Lock;
- int nonline; /* # of active CPUs */
- int nbooting; /* # of CPUs waiting for the bTC to go */
- int ispanic; /* shutdown in response to a panic */
- int thunderbirdsarego; /* lets the added processors continue */
-}active;
-
-/*
- * routines for things outside the PC model, like power management
- */
-struct PCArch
-{
- char* id;
- int (*ident)(void); /* this should be in the model */
- void (*reset)(void); /* this should be in the model */
-
- void (*intrinit)(void);
- int (*intrassign)(Vctl*);
- int (*intrirqno)(int, int);
- int (*intrvecno)(int);
- int (*intrspurious)(int);
- void (*introff)(void);
- void (*intron)(void);
-
- void (*clockinit)(void);
- void (*clockenable)(void);
- uvlong (*fastclock)(uvlong*);
- void (*timerset)(uvlong);
-};
-
-/* cpuid instruction result register bits */
-enum {
- /* ax */
- Xsaveopt = 1<<0,
- Xsaves = 1<<3,
-
- /* cx */
- Monitor = 1<<3,
- Xsave = 1<<26,
- Avx = 1<<28,
-
- /* dx */
- Fpuonchip = 1<<0,
- Vmex = 1<<1, /* virtual-mode extensions */
- Pse = 1<<3, /* page size extensions */
- Tsc = 1<<4, /* time-stamp counter */
- Cpumsr = 1<<5, /* model-specific registers, rdmsr/wrmsr */
- Pae = 1<<6, /* physical-addr extensions */
- Mce = 1<<7, /* machine-check exception */
- Cmpxchg8b = 1<<8,
- Cpuapic = 1<<9,
- Mtrr = 1<<12, /* memory-type range regs. */
- Pge = 1<<13, /* page global extension */
- Mca = 1<<14, /* machine-check architecture */
- Pat = 1<<16, /* page attribute table */
- Pse2 = 1<<17, /* more page size extensions */
- Clflush = 1<<19,
- Acpif = 1<<22, /* therm control msr */
- Mmx = 1<<23,
- Fxsr = 1<<24, /* have SSE FXSAVE/FXRSTOR */
- Sse = 1<<25, /* thus sfence instr. */
- Sse2 = 1<<26, /* thus mfence & lfence instr.s */
- Rdrnd = 1<<30, /* RDRAND support bit */
-};
-
-enum { /* MSRs */
- PerfEvtbase = 0xc0010000, /* Performance Event Select */
- PerfCtrbase = 0xc0010004, /* Performance Counters */
-
- Efer = 0xc0000080, /* Extended Feature Enable */
- Star = 0xc0000081, /* Legacy Target IP and [CS]S */
- Lstar = 0xc0000082, /* Long Mode Target IP */
- Cstar = 0xc0000083, /* Compatibility Target IP */
- Sfmask = 0xc0000084, /* SYSCALL Flags Mask */
- FSbase = 0xc0000100, /* 64-bit FS Base Address */
- GSbase = 0xc0000101, /* 64-bit GS Base Address */
- KernelGSbase = 0xc0000102, /* SWAPGS instruction */
-};
-
-/*
- * a parsed plan9.ini line
- */
-#define NISAOPT 8
-
-struct ISAConf {
- char *type;
- uvlong port;
- int irq;
- ulong dma;
- ulong mem;
- ulong size;
- ulong freq;
-
- int nopt;
- char *opt[NISAOPT];
-};
-
-extern PCArch *arch; /* PC architecture */
-
-Mach* machp[MAXMACH];
-
-#define MACHP(n) (machp[n])
-
-extern register Mach* m; /* R15 */
-extern register Proc* up; /* R14 */
-
-/*
- * hardware info about a device
- */
-typedef struct {
- ulong port;
- int size;
-} Devport;
-
-struct DevConf
-{
- ulong intnum; /* interrupt number */
- char *type; /* card type, malloced */
- int nports; /* Number of ports */
- Devport *ports; /* The ports themselves */
-};
-
-typedef struct BIOS32ci { /* BIOS32 Calling Interface */
- u32int eax;
- u32int ebx;
- u32int ecx;
- u32int edx;
- u32int esi;
- u32int edi;
-} BIOS32ci;
--- a/sys/src/nix/pc64/devnix.c
+++ b/sys/src/nix/pc64/devnix.c
@@ -12,6 +12,7 @@
#include "fns.h"
#include "../port/error.h"
#include "io.h"
+#include "nix.h"
#define DBGREAD 0x01
#define DBGWRIT 0x02
--- a/sys/src/nix/pc64/nixmkfile
+++ b/sys/src/nix/pc64/nixmkfile
@@ -61,7 +61,6 @@
$DEVS\
$PORT\
acore.$O\
- tcore.$O\
l64acidt.$O\
l64acsyscall.$O\