$ NetBSD: TODO,v 1.10 2020/02/03 02:54:23 scole Exp $

What works:
  The ski simulator (pkgsrc/emulators/ski) is known to work on NetBSD
  i386, amd64 and macppc. It "should" work on other archs as well.

  Netbooting may work on some machines, basically you need to boot
  diskless with the loader.efi (from src/sys/arch/ia64/stand/ia64/)
  using dhcpd and put the kernel in a nfs accessible directory.  There
  is info here https://www.netbsd.org/docs/network/netboot/ and
  http://gnats.netbsd.org/49717 about how to setup.

  Also, a successful report of booting off the CD is here
  http://mail-index.netbsd.org/port-ia64/2009/06/18/msg000102.html

Tasks remaining:
- context switching and forking appear unfinished,
  vm_machdep.c::cpu_lwp_fork() appears incomplete
- pmap module, imported from freebsd but still needs more work and testing
- IA64 Stack unwind code: Support remaining unwind descriptor
  types. (See arch/ia64/unwind/TODO). ddb() traces need to print line
  information also.  Seems like there are a few options:
   1) fix and finish current unwind that is minimal, incomplete, and buggy
   2) import FreeBSD/ia64 implementation, may be derived from HP originally:
      http://lists.llvm.org/pipermail/cfe-dev/2016-September/050649.html
   3) import this version
      https://www.nongnu.org/libunwind/man/libunwind-ia64(3).html
      originally written by one of ia64 gurus but still looks maintained
      and portable
   4) something else
- redo _regset.h in netbsd style with __greg_t __gregset_t
- implement ld.elf_so, MK_DYNAMICROOT
- fix memory detection, on real hardware doesn't find all memory
- implement interrupts (sacpi & pci)
- MKGDB for ia64
- implement fp[gs]etsticky, [make|get|set|swap]context
- floating point, fenv functions were imported from freebsd, but only compile tested
- implement core_machdep.c
- implement __cloneS ptrace.S sbrk.S shmat.S
- implement kvm_ia64.c
- implement pmc (performance monitoring counters) for ia64 pmc registers
- implement ia64 md code for cpuctl, intrctl as needed
- optional(?) mutex.h/lock_stubs.S, mutex_enter()/mutex_exit() __HAVE_MUTEX_STUBS
       mutex_spin_enter()/mutex_spin_exit() __HAVE_SPIN_MUTEX_STUBS
- rwlock.h rw_enter(),rw_exit(),rw_tryenter() __HAVE_RW_STUBS, implemented already?
- add efipart_dev to read gpt/ffs disks for bootloader
- sort out bootloader/loader.efi stuff, make it more like netbsd and
  less like freebsd, command to boot nfs from loader.efi instead of
  hack that exists now
- ia64 implement __HAVE_FAST_SOFTINTS?
- want or need __HAVE_CPU_UAREA_ROUTINES, cpu_uarea_alloc,  cpu_uarea_free
- fix all "[Nn]ot yet" and "XXX" functions everywhere
- create/fix sys/arch/ia64/include/pci_machdep.h and implement actual functions,
  need to handle "multiple" pci busses like from http://www.openpa.net/systems/il/rp3400-bus.txt,
  add pchb, looks like one here
   http://mail-index.netbsd.org/port-ia64/2010/06/29/msg000116.html
  and/or could port from freebsd
- Kernel module pre-loading via the bootloader
- SMP
- write console and/or X framebuffer driver.  freebsd has vgapci
  device that may be portable
- add ia32 emulation, port from freebsd
- installation media for EFI/cdrom/usb

ski emulator tasks:
- some commands in ski are not yet implemented. 2 important ones
  are still missing, "cstack" and "pm", which view the stack and
  source code lines respectively 
- create a ski network driver
- create a ski disk driver

Pie in the sky:
- Xen and itanium!
- qemu and itanium
