2004-07-20  Dave Brolley  <brolley@redhat.com>

	* cacheutil.cxx (find): Make sure cache line is valid before returning
	it.
	* cache.cxx (write_any): Move call to addr_to_tag to a later point when
	the result is actually needed. Make sure cache line is valid before
	flushing it.
	(read_any): Make sure cache line is valid before flushing it.

2004-07-01  Dave Brolley  <brolley@redhat.com>

	* cache.cxx (write_any): Allow misaligned access. Return
	bus::misaligned for accesses which cross line boundary.
	(read_any): Ditto.

2004-05-10  Dave Brolley  <brolley@redhat.com>

	* cacheutil.cxx (find_any_dirty): Make sure the line is valid before
	checking the dirty bit.
	(vacancy_p): Line is also vacant if it is not valid.

2004-04-29  Dave Brolley  <brolley@redhat.com>

	* cacheutil.cxx (cache_set::expell_line): Don't update the set here.

2004-04-29  Dave Brolley  <brolley@redhat.com>

	* cache.cxx: Update calls to cache::find.
	* cacheutil.cxx (cache_set::allocate_lines): Now takes cache index as
	an argument. Update all callers.
	(cache_set::find): Now returns a pointer to the line, if found. Update
	all callers.
	(cache::find): Ditto.
	(cache_set::expell_line): Update the status of the expelled line.
	* cacheutil.h (cache_line_factory::make_line): Now takes cache index as
	an argument. Update all callers.
	(cache_set::allocate_lines): Now takes cache index as
	an argument. Update all callers.
	(cache_set::find): Now returns a pointer to the line, if found. Update
	all callers.
	(cache::find): Ditto.

2004-04-29  Dave Brolley  <brolley@redhat.com>

	* cacheutil.h (cache_line): Removed copy constructor. Now virtual base
	class.
	(cache_line::operator=): Removed.
	(internal_cache_line): New class implements former cache_line class.
	(cache_set): Now takes cache_line_factory.
	(allocate_lines): New method moves line allocation from the constructor.
	(cache_set::set_line): Now takes reference to cache_line.
	(cache_set::replace_line): Renamed to expell_line. Now returns a pointer
	to the expelled line.
	(cache): Now takes cache_line_factory argument.
	(cache::init): New method moves set allocation from the constructor.
	(cache_set::expell_line): Renamed to expell_line. Now returns a pointer
	to the expelled line.
	(cache_line_factory): New class.
	* cacheutil.cxx (cache_line): Removed copy constructor. Now virtual base
	class.
	(cache_line::operator=): Removed.
	(internal_cache_line): New class implements former cache_line class.
	(cache_set): Now takes cache_line_factory.
	(allocate_lines): New method moves line allocation from the constructor.
	(cache_set::set_line): Now takes reference to cache_line.
	(dummy): Now internal to cache_set::find.
	(cache_set::replace_line): Renamed to expell_line. Now returns a pointer
	to the expelled line.
	(cache): Now takes cache_line_factory argument.
	(cache::init): New method moves set allocation from the constructor.
	(cache_set::expell_line): Renamed to expell_line. Now returns a pointer
	to the expelled line.
	* cache.h (cache_replacement_algorithm::expell): Renamed from 'replace'.
	Returns a pointer to the expelled line. Update specializations.
	(cache_component): Now takes a cache_line_factory as an argument.
	Private data now protected.
	(line_factory): New member of cache_component.
	(~cache_component): Now virtual.
	(CacheCreate): Pass internal_line_factory to cache_component.
	* cache.cxx (line_sizes): Make it static.
	(line_sizes): Ditto.
	(replacement_algorithms): Ditto.
	(internal_line_factory): New static cache_line_factory.
	(cache_component): Now takes a cache_line_factory as an argument. Pass
	the cache line factory to the constructor for acache. Save a reference
	to the line factory. Call acache.init
	(write_any): Rewrite to use cache::expell_line instead of the former
	cache::replace.
	(read_any): Ditto.
	(cache_replacement_algorithm::expell): Renamed from 'replace'. Returns
	a pointer to the expelled line. Update all callers and specializations.
	(CacheCreate): Pass internal_line_factory to cache_component.

2003-01-31  Frank Ch. Eigler  <fche@redhat.com>

	* log2.h: #undef log2, in case a macro collides with the function.

2002-07-16  Dave Brolley  <brolley@redhat.com>

	* cache.h (cache): Add flush_and_invalidate_set_pin and
	flush_and_invalidate_pin.
	* cache.cxx (cache_component): Initialize flush_and_invalidate_set_pin
	and flush_and_invalidate_pin. Add flush-and-invalidate and
	flush-and-invalidate-set pins.
	(flush_set): Don't flush an invalid line.
	(flush_and_invalidate_set): New method.
	(flush_and_invalidate_line): New method.
	* hw-cache.xml, hw-cache.txt: Modified accordingly.

2002-06-08  Ben Elliston  <bje@redhat.com>

	* cacheutil.h (cache_set::expunge): New method.
	(cache_set::operator[]): Likewise.
	(cache::invalidate): Likewise.
	(cache::operator[]): Likewise.
	* cacheutil.cxx (cache::invalidate): Implement.
	* cache.h (cache_component::flush_set_pin): New pin.
	(cache_component::flush_set): New callback method.
	(cache_component::invalidate_set_pin): New pin.
	(cache_component::invalidate_set): New method.
	* cache.cxx (cache_component constructor): Initialise and add
	"flush-set" and "invalidate-set" pins.
	(cache_component::flush_set): Implement.
	(cache_component::invalidate_set): Likewise.
	* hw-cache.xml: Update documentation.

2002-06-04  Graydon Hoare  <graydon@redhat.com>

	* cache.h (cache_component::set_refill_latency): New method.
	(cache_component::get_refill_latency): New method.
	(cache_component::refill_latency_specified): New flag.
	(cache_component): Virtualize "refill-latency" attribute,
	note when it is set in "refill_latency_specified".
	* cache.cxx (read_line): Return either refill latency or
	downstream latencies, depending on whether explicit refill
	latency has been specified, not sum of both.

2002-05-17  Ben Elliston  <bje@redhat.com>

	* Makefile.am (DEJAGNUTESTS): Add refill.exp.
	* cache.h (cache_component::refill_latency): New member.
	* cache.cxx (cache_component::read_line): Add refill latency.
	(cache_component::cache_component): Initialise it and add a
	corresponding "refill-latency" attribute.
	* hw-cache.xml (memory latency) : Document refill latency.

2002-04-09  Ben Elliston  <bje@redhat.com>

	* cache.cxx (cache_component::read_line): Set the overall latency
	for a cache line fill to the latency of the first downstream read,
	not the last.

2001-12-27  Frank Ch. Eigler  <fche@redhat.com>

	* cache.cxx (CacheListTypes, CacheCreate): Support hw-cache-buffer-8
	component type.
	* hw-cache.xml, hw-cache.txt: Modified accordingly.

2001-12-27  Frank Ch. Eigler  <fche@redhat.com>

	* cache.cxx (cache_sizes): Add "1" and "2" kb support.
	* hw-cache.xml, hw-cache.txt: Modified accordingly.

2001-12-04  Frank Ch. Eigler  <fche@redhat.com>
 
 	* cache.cxx (cache_sizes): Add "4" for "4kb".
 	* hw-cache.xml, hw-cache.txt: Modified accordingly.

2001-11-30  Frank Ch. Eigler  <fche@redhat.com>

	* cacheutil.cxx (hash_fn): Fix std:: namespace reference.

2001-10-22  Frank Ch. Eigler  <fche@redhat.com>

	* cache.cxx (flush_all): New function.  Associate with "flush-all" pin.
	* cacheutil.cxx (find_any_dirty): New functions.
	* cache.h, cacheutil.h: Relevant changes.
	Warning cleanups throughout.
	* hw-cache.xml (flush-all): Document new pin.
	* hw-cache-txt: Regenerated.

2001-09-27  Frank Ch. Eigler  <fche@redhat.com>

	* cache.cxx (emit_report): Remove extra blank line.
	(set_hash_mask, set_hash_shift): Exchange names to match functionality.
	* cacheutil.cxx (cache ctor): Compute good default hash_params.

2001-09-26  Frank Ch. Eigler  <fche@redhat.com>

	* cacheutil.cxx (hash_fn): Detect index overflow.  Complain loudly.
	* cacheutil.h: Include some more headers.

2001-08-04  Frank Ch. Eigler  <fche@redhat.com>

	* cache.cxx (~cache_component): Define.

2001-08-03  matthew green  <mrg@redhat.com>

	* cache.h (~cache_component): Add prototype.
	* cacheutil.cxx (std::operator==, operator==): Move this into the
	global name space.
	(std::cerr, std::hex, std::setw, std::setfill, std::endl, std::dec):
	Use these.
	* cacheutil.h (std::operator==, operator==): Move this into the
	global name space.

2001-07-13  Dave Brolley  <brolley@redhat.com>

        * cache.h (cache:bus::DEFN_METHOD): Generate function prototypes only.
	(::DEFN_METHOD): Generate actual inline function bodies after
	cache_component is defined.

2001-07-13  Ben Elliston  <bje@redhat.com>

	* Makefile.am (check-local): Rename target from "checkme".

2001-07-11  Frank Ch. Eigler  <fche@redhat.com>

	* hw-cache.xml: Add <?xml ... ?> prefix.

2001-07-10  matthew green  <mrg@redhat.com>

	* Makefile.in: Regenerate.

2001-07-10  Ben Elliston  <bje@redhat.com>

	* cacheutil.h (class cache_line): Use std::vector, not vector.
	(class cache_set): Likewise.
	(class cache): Likewise.

2001-07-09  Ben Elliston  <bje@redhat.com>

	* cache.cxx: Use std::cout and std::endl for C++ conformance.

2001-07-04  Ben Elliston  <bje@redhat.com>

	* hw-cache.txt: Generate.

2001-07-02  Ben Elliston  <bje@redhat.com>

	* hw-cache.xml: New file.

2001-06-24  Ben Elliston  <bje@redhat.com>

	* cache.cxx (set_hash_mask): Validate parse_attribute result.
	(set_hash_shift): Ditto.

2001-06-21  Ben Elliston  <bje@redhat.com>

	* cache.h (cache_component::hit_latency): New member.
	(cache_component::miss_latency): Likewise.
	* cache.cxx (cache_component ctor): Add attributes for these.
	(cache_component::write_any): Add miss latency for misaligned
	accesses. Set latency correctly for return.
	(cache_component::read_any): Add miss latency for misaligned
	accesses. Set latency correctly for return.
	(cache_component::read_line): Return the true result of reads.
	(cache_component::write_line): Likewise for writes.
	* hw-cache.txt: Document latency extensions.

2001-06-19  Ben Elliston  <bje@redhat.com>

	* cache.cxx (CacheCreate): Re-work using sidutil::tokenize.

2001-06-15  Ben Elliston  <bje@redhat.com>

	* cache.cxx: New file. 
	* cache.h: Likewise.
	* cacheutil.cxx: Likewise.
	* cacheutil.h: Likewise.
	* log2.h: Likewise.
	* hw-cache.txt: Likewise.

2001-06-05  Ben Elliston  <bje@redhat.com>

	* Makefile.am: New file.
	* Makefile.in: Generate.
