Outstanding issues for 2.0 release:
--------------------
1. Fix multi-level coherence/dma issues
2. Fix O3 CPU bug in SE 40.perlbmk fails
3. Fix O3 processing nacks/coherence messages
4. Better statistics for the caches.
5. Clean up more SimObject parameter stuff
6. Checkpoint/switchover testing
7. FS mode doesn't work under Cygwin
8. memtest regression crashes under Cygwin
9. Make repository public
10. Testing
11. Validation
12. Testing 

May 16, 2007: m5_2.0_beta3
--------------------
New Features
1. Some support for SPARC full-system simulation
2. Reworking of trace facitities (parameter names changed, variadic macros
   removed)
3. Scons script cleanups
4. Some support for compiling with Intel CC

Bug fixes since beta 2:
1. Many SPARC linux syscall emulation support fixes
2. Multiprocessor linux boot using the detailed O3 CPU module
3. Workaround for DMA bug (final solution to be released with 2.0f)
4. Simulator performance and memory leak fixes
5. Fixed issue where console could stop printing in ALPHA_FS
6. Fix issues with remote debugging
7. Several compile fixes, including gcc 4.1
8. Many other minor fixes and enhancements 
		
Nov. 28, 2006: m5_2.0_beta2
--------------------
Bug fixes since beta 1:
1. Many cache issues resolved
2. Uni-coherence fixes in full-system
3. LL/SC Support
4. Draining/Switchover
5. Functional Accesses
6. Bus now has real timing
7. Single config file for all SpecCPU2000 benchmarks
8. Several other minor bug fixes and enhancements

Aug. 25, 2006: m5_2.0_beta patch 1
--------------------
Handful of minor bug fixes for m5_2.0_beta,
along with a few new regression tests.

Aug. 15, 2006: m5_2.0_beta
--------------------
Major update to M5 including:
- New CPU model
- New memory system
- More extensive python integration
- Preliminary syscall emulation support for MIPS and SPARC
This is a *beta* release, meaning that some features are not complete,
and some features from M5 1.X aren't currently supported (e.g., MP
coherence).  We are working to address these limitations and hope to
have a complete 2.0 release soon.

Oct. 8, 2005: m5_1.1
--------------------
Update release for IOSCA workshop mini-tutorial.  New features include:
- Preliminary FreeBSD support
- Integration of regression tests into scons build framework
- Several bug fixes and better compatibility for Cygwin hosts
- Major cleanup of Alpha system code (console, PAL, etc.) to make
  it easier for others to build/modify
- Fixes to enable compilation under g++ 4.0 
- Numerous minor bug fixes

June 10, 2005: m5_1.0_web
-------------------------
The 1.0 release posted on Sourceforge after the ISCA tutorial contains
just a few very minor fixes relative to the CD.

June 5, 2005: m5_1.0_tutorial
-----------------------------
First non-beta release.  This release was on the CD distributed at the
ISCA tutorial.  Major enhancements relative to beta releases include
Linux support and Python-based configuration language.

June 17, 2004: m5_1.0_beta2
---------------------------
Stealth-mode beta bug-fix update, not widely advertised.

Oct. 17, 2003: m5_1.0_beta1
---------------------------
Early beta release.
