This is release m5_1.0 of the M5 simulator.

This file contains brief "getting started" information and release
notes.  For more information, see http://m5.eecs.umich.edu.  If you
have questions, please send mail to m5sim-users@lists.sourceforge.net.

WHAT'S INCLUDED (AND NOT)
-------------------------

Since you're reading this file, presumably you've managed to untar the
distribution.  The archive you've unpacked has three subdirectories:
 - m5: the simulator itself
 - m5-test: regression tests and scripts to run them
 - ext: less-common external packages needed to build m5
   (currently ply and libelf)

M5 is a capable, full-system simulator that current supports both Linux
2.4/2.6 and the proprietary Compaq/HP Tru64 version of Unix. We are able 
to distribute Linux bootdisks, but we are unable to distribute bootable
disk images of Tru64 Unix. If you have a Tru64 license and are interested 
in obtaining disk images, contact us at m5-dev@eecs.umich.edu.

WHAT'S NEEDED
-------------
-GCC(3.X)
-Python(2.4+)

WHAT'S RECOMMENDED
------------------
-MySQL (for statistics complex statistics storage/retrieval)
-Python-MysqlDB (for statistics analysis) 

GETTING STARTED
---------------

The following steps will build and test the simulator.  The variable
"$top" refers to the top directory where you've unpacked the files,
i.e., the one containing the m5, m5-test, and ext directories.

There are three different build targets and three optimizations in each level:
Target:
-------
ALPHA_SE - Syscall emulation simulation
ALPHA_FS - Linux full system simulation
ALPHA_FS_TL - Tru64 (Turbolaser) Unix full system simulation

Optimization:
-------------
m5.debug - debug version of the code with tracing and without optimization
m5.opt   - optimized version of code with tracing
m5.fast  - optimized version of the code without tracing and asserts

cd $top/m5/build
scons TARGET/OPTLEVL  # e.g. ALPHA_FS/m5.opt, use -j N if you have a MP system
cd $top/m5-test
./do-tests.pl -B ALPHA_SE	# test what you just built
./do-tests.pl -B ALPHA_FS	# test what you just built
# wait for tests to run...
# should end with "finished do-tests successfully!"
