TODO
----

[ ] ask jbe about:
    ./commands/Makefile:40:obj-$(CONFIG_SIMPLE_PARSER)      += setenv.o
[ ] bark on partition not ending on flash sector boundaries
[ ] distclean doesn't work without a config
[ ] Every driver should have a remove function.
    (It must have. Currently there is no provision to given to remove my
    interrupt handlers and to reset all hardware in use, before the target
    OS is called. csc 21.03.2008 19:50:34)
[ ] Global shutdown_drivers() function is needed to carefully clean up all
    interrupt handlers and reset hardware to initial post reset or otherwise
    save state.
    (Ideally the hardware is set back to post-reset state after this call.
    Run-up and run-down should be reentrant, so if bootm is failing the system
    can re-initialize devices. csc 21.03.2008 19:48:49)
[ ] Clean up make system. Currently I think there are many things from the
    Linux make system which are not needed for barebox.
    (Please retain definitions and related for module loading and relocation, so
    that special barebox modules containing an ELF object can be linked to the
    running barebox. csc 21.03.2008 19:52:49)
[ ] get/set for nonextisting parameters crashes
[ ] There is a xmalloc function which panics when out of memory. Use this
    function where we don't want to check for oom. Same applies to
    strdup/xstrdup.
[ ] cleanup common.h. There are far too many things in it where we better have
    a seperate header file.
    (Use doxygen to track header file hierarchy)
[ ] Rewrite network stack. The one-loop-for-all-protocols stack is just too
    ugly and big and uses thousands of global variables. Identify common
    functions and make a loop per network protocol
[-] Cleanup cpu/*. Many functions there are not cpu specific. For example the
    cache functions for arm are common for most arm processors. (done for ARM)
    (I will check this for m68k arch - csc 21.03.2008 19:56:24)
[ ] Move SoC specific header files from include/ to include/asm/arch/
[ ] Several .c/.h files do not have GNU/copyright headers.
[ ] The cramfs driver currently uses direct memory accesses instead of read().
    This disqualifies it for real block devices.
[ ] Add documentation for:
	[ ] driver model
	[ ] device parameter
	[ ] big picture
[ ] Add example driver and filesystem for reference purposes. Or denote a driver
    and a filesystem to be the reference.
[ ] realloc seems to crash without further notice when out of memory.
[ ] implement a mmap() function. Of course we cannot really mmap without mmu,
    but for memory mapped devices like nor flash we could provide a pointer to
    it. With this we would not have to copy uimages to memory.
[ ] command line editing is somewhat broken
[ ] how to select a ethernet channel for tftp when more than one interface
    of this type exists in the system?
[ ] Cleanup headers. I propose to rearrange the files in a way to reflect the
    organisation of the source tree. This requires changing the include paths
    in nearly all files, therefore a merge window for this change must be
    opened and merge in of all other topic branches must happen before.
    Week 23 or 42 issue? csc, 21.03.2008 19:36:06
[ ] Merge similiar information into a single common and a single arch dependant
    file. E.g. all those general typedefs should be located in include types.h
    and arch/asm/types.h. csc 21.03.2008 19:38:57
[ ] Get rid of the current linux include dir. It should only contain information
    required to boot linux. csc 21.03.2008 19:39:02
[ ] Unify source headers to show up the GPL lic stuff followed by a doxygen file
    description.
[ ] Enhance and complete doxygen comments.
[ ] Eliminate all #ifdef CONFIG_??? in C code. Disabled APIs should be defined
    as empty macros, so that code is removed by the compiler, not the
    preprocessor.
    The #ifdefs should be located in their related header files only.
[ ] Create an example board, which implements all functions stubs required
    to compile a full barebox build. Functions are just stubs containing a
    panic() call - Real code must be filled in accordingly.
    Can be copied as starting point for a new target board.
[ ] Add generic PCI bios code and a PCI bus driver model. The driver should
    be configured by an appropriate platformconfig. Detected PCI buses and
    devices should be represented as a hierarchical tree in /dev
[ ] Work out, how to mount driver on PCI devices. The mechanism should be
    transparent to the driver code.

DONE
----

[x] Rename vmlinux -> barebox
[x] Implement current work directory
[x] ARCH=linux should catch ctrl-c
[x] Implement 'rm'
[x] the mount command currently does not accept a full path (i.e. /dev/nor0) but
    only a device id string (nor0). This sucks.
[x] FS support is not optional eventhough the Kconfig system claims it.
[x] barebox used to have support for different consoles. The old code was huge and
    ineffective, so I removed it. Reimplement it using the driver model.
[x] Mount without options should show mounted filesystems
[x] Add/fix help texts for commands
[x] mw is broken. Add common option parsing for mm/md
[x] Implement a info command for malloced space. Use it to find memory holes.
[x] patch hush.c so that you can get/set device parameters with dev.param= and remove
    get/set applets
[x] rsc: switching on CONFIG_AUTO_COMPLETE fails, because env_complete()
    isn't there
[x] The header files in include/asm-linux/ are i386 specific. Make it work on
    your i-Book (bigendian...)
[x] Globbing support? Might be too expensive, but on the other hand, if you
    have the space, why not?
[x] Implement protect/unprotect support for cfi devices.
[x] Implement a command 'countdown' or similar. It should delay the boot
    process and interrupt it if a certain string is received. The string could
    be any key, ctrl-c or a certain string. Maybe like this:
    countdown -m msg -t timeout -x [ctrl-c|anykey|string]
    If done, remove the corresponding stuff from common/main.c
[X] Board support should go to arch/*/boards/*
