shithub: nix

Download patch

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\