Subject: TODO
To: None <port-sun3>
From: Adam Glass <glass>
List: port-sun3
Date: 03/11/1994 22:55:58
THINGS TO BE DONE:	(NetBSD/Sun3 version)		<$Revision: 1.1 $>

This is a list of things that need to be done for NetBSD/Sun3.  Some
of these tasks are small, others are large.  Some are extremely
critical, others would be useful to do, and some are fluff.  Included
in each description, is a notation of its importance.  Please note
however that this is a list of things to do above and beyond fixing
bugs in the existing code base.

In general there are some guidelines for work to be included in
NetBSD.  Chief among these are:

	   (1) Keep GPLed stuff out of the kernel.
	   (2) Only clean code, that lends itself to further enhancement
	   (3) Keep architecture dependent code out of architecture independent
	       directories

The important part of this is that the sun3 stuff better stay in
sys/arch/sun3.

Bootstrapping:

	make it easy to do nfs diskless (CRITICAL).  currently you have to
	hack up the nfs_diskless sturcture.  this should be fixed by finishing
	porting sys/lib/libnetboot.

	native boot blocks (HIGH)

	nfs diskless boot blocks (HIGH).

Kernel core tasks (arch/sun3/sun3):

	make pmap module modifications necessary so that we can turn
	on MACHINE_NONCONTIG,a kernel config option that allows for
	non-contiguous physical memory.  This work is necessitated by the
	the frame buffer on the 3/50 which is plop in the middle of physical
	ram. (CRITICAL)

	kernel text is not protected. (CRITICAL..for debugging)

	find out why kernel has to be linked with such wierd options. (HIGH)

	test virtual addressed cache support on non-desktop machines. (HIGH)

	need support for the sun eeprom, including a non-sun
		copyrighted header file describing its structure.  Needed
		at least for console handling. (MEDIUM)

	ddb support (MEDIUM) (mycroft is working on this, for 68ks in general,
		and it may actually work some now)

	locore.s got split into many pieces as part of a bit of research
	by the author into how much of it was truly sun-dependent vs
	68k-dependent.  Needs to be re-integrated into a standard
	locore.s so that we can benefit from changes to the hp300, and
	amiga ports, and vice-versa. (MEDIUM)

	FPUCOPROC support needs to be better integrated and triggered
	by something other than this awful define.  Also need
	FPU emulation code (see briggs). (MEDIUM)

	msgbuf should be allocated later, using the pmap stuff, same with
	       high_segment crud.  see the dvma_alloc code for an example of
	       how much cleaner this is. (LOW..it works now)

	compute idprom checksum, and check it (was lazy) (LOW)

	HPUX compatibility support (make it hang off p_emul like our
		COMPAT_SUNOS support).  (LOW) 

	pmap module should keep a 3-level cache of ptes instead of 2. (LOW)

	need /dev/eeprom driver functionality added to mem.c (LOW)

	support for sun3x architecture (LOW, but we have the 030 code)

Device-driver related tasks:

	scsi driver - use the scsi infrastructure in sys/scsi.
		See config-file component in sys/arch/i386/conf
		For host-adapter driver examples look
			in sys/arch/{386/isa,mac68k/dev}
		host adapter chip is NCR 5380.
		dma chip is amd 9516.
		secondary sources in:  mac port, sprite, mach3
			(SUPER_DUPER_CRITICAL)

	prom console can accept input, though it does so lamely

	make zs, ms, kbd driver as incorporated from torek's code actually
	work.  Then re-engineer such that it isn't so ugly. (CRITICAL)
	
	intel ether - driver for 'ie' intel 82586-based ethernet.
		see mach3, sprite, and i386 port (CRITICAL)

	VME support (CRITICAL)

	console handling (choice, detection, etc.)	 (MEDIUM)
	
	OBIO probe support needed.  support for handling the traps is
	already present	in the form of pcb_onfault. 	 (MEDIUM)

	Better OBIO configuration architecture, less re-computation of
	default parameters.  device-conflict notification. Requires
	mycroft's autoconfig fix. (MEDIUM)
					
	bw?, cg*,fb - must have same external interface as sun's to
			keep X happy.
		see sparc, and sprite code. (MEDIUM)

	lance - switch to sparc code as a base instead of hp300. (LOW)

------------------------------------------------------------------------------