TODO revision 1.6
11.1Sscole$ NetBSD: TODO,v 1.1 2018/04/14 12:06:03 scole Exp $
21.1Sscole
31.1SscoleWhat works:
41.6Sscole  The ski simulator (pkgsrc/emulators/ski) works on NetBSD/i386, can run
51.1Sscole  and step through in assembly.
61.1Sscole
71.1Sscole  Netbooting may work on some machines, basically you need to boot
81.1Sscole  diskless with the loader.efi (from src/sys/arch/ia64/stand/ia64/)
91.1Sscole  using dhcpd and put the kernel in a nfs accessible directory.  There
101.1Sscole  is info here https://www.netbsd.org/docs/network/netboot/ and
111.1Sscole  http://gnats.netbsd.org/49717 about how to setup.
121.1Sscole
131.1Sscole  Also, a successful report of booting off the CD is here
141.1Sscole  http://mail-index.netbsd.org/port-ia64/2009/06/18/msg000102.html
151.1Sscole
161.6SscoleTasks remaining:
171.1Sscole- context switching and forking appear unfinished,
181.1Sscole  vm_machdep.c::cpu_lwp_fork() appears incomplete
191.6Sscole- pmap module, imported from freebsd but still needs more work and testing
201.1Sscole- IA64 Stack unwind code: Support remaining unwind descriptor
211.1Sscole  types. (See arch/ia64/unwind/TODO). ddb() traces need to print line
221.6Sscole  information also.  Seems like there are a few options:
231.6Sscole   1) fix and finish current unwind that is minimal, incomplete, and buggy
241.6Sscole   2) import FreeBSD/ia64 implementation, may be derived from HP originally:
251.6Sscole      http://lists.llvm.org/pipermail/cfe-dev/2016-September/050649.html
261.6Sscole   3) import this version
271.6Sscole      https://www.nongnu.org/libunwind/man/libunwind-ia64(3).html
281.6Sscole      originally written by one of ia64 gurus but still looks maintained
291.6Sscole      and portable
301.6Sscole   4) something else
311.6Sscole- kernel with LOCKDEBUG option crashes in pmap startup somewhere
321.1Sscole- redo _regset.h in netbsd style with __greg_t __gregset_t
331.1Sscole- implement ld.elf_so, MK_DYNAMICROOT
341.1Sscole- fix memory detection, on real hardware doesn't find all memory
351.6Sscole- implement interrupts (sacpi & pci)
361.3Sscole- MKGDB for ia64
371.1Sscole- implement fp[gs]etsticky, [make|get|set|swap]context
381.6Sscole- floating point, fenv functions were imported from freebsd, but only compile tested
391.1Sscole- implement core_machdep.c
401.1Sscole- implement __cloneS ptrace.S sbrk.S shmat.S
411.1Sscole- implement kvm_ia64.c
421.1Sscole- implement pmc (performance monitoring counters) for ia64 pmc registers
431.3Sscole- implement ia64 md code for cpuctl, intrctl as needed
441.1Sscole- optional(?) mutex.h/lock_stubs.S, mutex_enter()/mutex_exit() __HAVE_MUTEX_STUBS
451.1Sscole       mutex_spin_enter()/mutex_spin_exit() __HAVE_SPIN_MUTEX_STUBS
461.1Sscole- rwlock.h rw_enter(),rw_exit(),rw_tryenter() __HAVE_RW_STUBS, implemented already?
471.1Sscole- add efipart_dev to read gpt/ffs disks for bootloader
481.6Sscole- sort out bootloader/loader.efi stuff, make it more like netbsd and
491.6Sscole  less like freebsd, command to boot nfs from loader.efi instead of
501.6Sscole  hack that exists now
511.1Sscole- ia64 implement __HAVE_FAST_SOFTINTS?
521.2Sscole- want or need __HAVE_CPU_UAREA_ROUTINES, cpu_uarea_alloc,  cpu_uarea_free
531.1Sscole- fix all "[Nn]ot yet" and "XXX" functions everywhere
541.1Sscole- create/fix sys/arch/ia64/include/pci_machdep.h and implement actual functions,
551.1Sscole  need to handle "multiple" pci busses like from http://www.openpa.net/systems/il/rp3400-bus.txt,
561.1Sscole  add pchb, looks like one here
571.1Sscole   http://mail-index.netbsd.org/port-ia64/2010/06/29/msg000116.html
581.1Sscole  and/or could port from freebsd
591.1Sscole- Kernel module pre-loading via the bootloader
601.1Sscole- SMP
611.1Sscole- write console and/or X framebuffer driver.  freebsd has vgapci
621.1Sscole  device that may be portable
631.1Sscole- add ia32 emulation, port from freebsd
641.6Sscole- installation media for EFI/cdrom/usb
651.6Sscole
661.6Sscoleski emulator tasks:
671.6Sscole- some commands in ski are not yet implemented. 2 important ones
681.6Sscole  are still missing, "cstack" and "pm", which view the stack and
691.6Sscole  source code lines respectively 
701.6Sscole- create a ski network driver
711.6Sscole- create a ski disk driver
721.3Sscole- fix ski to run on other archs beside i386, or at least amd64
731.2Sscole
741.6SscolePie in the sky:
751.2Sscole- Xen and itanium!
761.2Sscole- qemu and itanium
77