Changes between version 1.2 and xxx
-----------------------------------
  Generic changes:
   * Changed the behavior of the send base in mapping IPC in the case where
     the receive window is smaller than the send flex page (see New Send-Base
     Behavior).
   * default serial port is now COM1
   * existing mappings are flushed on map/grant
   * the timeout queue is now split in 8 different queues,
     to speed up the insertion of timeouts in the average case
   * The kernel can now reclaim unused kernel memory tied up in slab
     allocators.

  IPC monitoring:
   * Added new task-capability feature.  When enabled, monitored tasks
     can only send IPC to (or otherwise manipulate) threads of tasks
     for which they have a capability.  Task capabilities can be
     mapped and revoked like memory or I/O flexpages.

  New mapping database:
   * Mapping and unmapping superpages are now correctly supported.
   * Support for unmapping memory-mapped I/O has been added.
   * Support for unmapping I/O flexpages and task capabilities has been
     added.
   * Support for querying dirty and accessed flags has been added.
   * Support for "directed unmap" has been added.  It allows unmap
     callers to restrict unmaps to one specific task to which rights have
     (originally) been mapped.  To make the mechanism work despite grant,
     mappings keep a "tag" against task comparisons are made.  The tag
     initially is equal to the mappee and does not change upon grant.

  IPC-Path:
   * switch to the new uninterruptible IPC-Path with preemption points
   * the sender queue is now an binary tree, to enforce different
     priorities of senders
   * the shortcut should "support" HANDLE_SEGMENTS and EXCEPTION_IPC now
     by calling an C++ function for these functions. Should be very useful
     for L4Linux 2.6

  New Send-Base Behavior:
   * Up to Fiasco 1.2 sending of a large a flex page to a receiver with a 
     smaller receive window resulted in mapping of the beginning of the send
     flex page into the receive window.
   * The new behavior is as follows: 
     1. The receive window is larger than the send flex page: The behavior is 
        as it used to be, the send flex page is placed at the send base, 
	aligned to the size of the send flex page.
     2. The receive window is smaller than the send flex page: 
        An offset within the send flex page is calculated by taking the 
	send base modulo the size of the send flex page. The receive window
	is populated with the part of the send flex page, where the offset
	points to.
	Example: 
	  send.addr = 0x10000000
	  send.size = 22 (4MB)
	  send_base = 0xa0002350
	  recv.addr = 0x05000
	  recv.size = 12 (4KB)

	  => offset = align_to_recv.size(0xa0002350 % 2**22) = 0x2000
	  => map 4KB from 0x10002000 (within sender) 
	     to 0x5000 (within receiver)

  Architecture-specific changes:

  IA32+AMD64:
   * Support to ignore failing serial port initialization (by Frank)
   * new Sigma0 protocol supporting up to 4GB of physical RAM
   * KIP now linked into the binary and is patched by bootstrap
   * CPU identification updated

  IA32:
   * Support proper FPU handling for user level threading

  ARM:
   * Improved JDB support

  UX:
   * Default resource manager is roottask now (instead of RMGR)
   * Fixed TCB range
   * Added check for proper host address space size on startup
   * Fiasco-UX can now run on hosts with TLS enabled libc's.

Changes between version 1.1 and 1.2
-----------------------------------

  Generic changes:
   * Lots of bug fixes
   * Experimental V4 version available in a branch in CVS (tag name 'v4_branch')
   * The in-kernel debugger jdb has been greatly improved
     see the jdb manual at
       http://os.inf.tu-dresden.de/fiasco/doc/jdb.pdf
   * Scheduling extensions especially usable for real-time applications have
     been added
   * Absolute timeouts have been added
   * Minimal required gcc version increased to 3.3
   * gcc 4.0 is also supported
   * A one-shot timer mode has been added
   * User thread can now have access to their execution times
   * Several extensions have been added:
     * Exception IPC
     * UTCBs
     * The ex-regs system call now supports a "no-cancel" flag to not
       abort ongoing IPC operations
     * Local IPC
     * User accessible kernel feature flags and version information
     * 'Alien' threads

  IA32:
   * The IO protection has been greatly improved
   * The amount of memory handled by Fiasco has been increased and is
     currently limited to 1GB RAM
   * Added extensions specifically for IA32
     * LDT/GDT segment support for user land
   * The kernel is now compiled with regparm=3 (can be switched off)

  ARM:
   * The ARM variant is now as stable as the IA32 variant
   * The jdb support has been improved

  UX:
   * Added extensions
     * LDT/GDT segment support for user land
       - GDT support is only available with Linux-2.6 or later host kernels


Changes between version 1.0 and 1.1
-----------------------------------

  Generic changes:

   * gcc up to version 3.3 is now fully supported
   * Bochs support has been improved
   * System call dispatching is faster due to less indirection levels
   * Some Long-IPC bugs that could lead to endless page faults have been fixed
   * Long-IPC to short-flexpage transfers now work correctly
   * A race condition in the destruction of threads has been eliminated
   * An uncaught exception on an ex_regs'd thread now properly terminates it
   * The kernel debugger now displays symbol and line information in backtraces
   * Support for absolute IPC timeouts has been implemented
   * Support for multiple per-thread timeslices has been added
   * Experimental Preemption-IPC support is now available
   * Multiple scheduler bugs have been ironed out
   * JDB's logging macros are now gcc-3.x-proof

  IA32:

   * JDB's performance counter support has been greatly improved
   * The IPC fastpath is even faster now
   * The tagged TLB emulation (small address spaces) has been revised
     and can now use the IPC fastpath and sysenter.
   * Fast kernel entries via sysenter now properly guard against set NT flag
     and single-step debug interrupt tricks from malicious users.
   * A double-fault handler has been added for better debugging
   * You can now play tetris in the kernel debugger

  ARM:

   * The ARM processor architecture is now supported
   * Support for Intel SA1110 CPUs, with debugging via serial port
   * Preliminary JDB support has been added
   * A preliminary GDB stub has been integrated
   * Fiasco supports the SA1110 UART, the SA1110 interrupt controller, and
     the SA1110 timer
   * X.0 (32-Bit Thread IDs) ABI is fully supported but not well tested

  UX:

   * The Fiasco kernel debugger (JDB) has been ported to Fiasco-UX
   * Hardware-assisted breakpoint support in JDB under UX is experimental
   * Kernel shutdown is now faster
   * Support for hybrid Linux/L4 programs using native host system calls
     has been added
   * Revoking page access rights no longer unmaps the whole page
   * Multiple interrupts are now supported
   * Fiasco-UX now provides an SDL framebuffer console
   * Loading of ELF binaries is now left to rmgr
   * Some bugs in the handling of interrupts on iret have been fixed
