
* Sep 25 2005

1) Added Version for gcc 4.0.1
2) Moved most of the IP28-specific code from final.c to config/mips/mips.c
   for gcc 3.4.2 and 4.0.1

* Apr  6 2005

1) Refined scan for memory operands in "(set(..." instructions.
2) Protect load instructions too by cache barriers.
   (While speculative loads do not cause harmful write-backs, they too
   can initiate accesses to invalid memory bus addresses)
3) Avoid cache barriers before loads/stores from/to constant addresses
   ("symbol_ref", ...)
4) Treat inline assembly as containing potentially harmful loads/stores.
   (To keep header files and the like (mostly) free from cache barriers)

Now all potentially harmful load/store instructions should be caught,
and much fewer unnecessary cache barriers will be generated.


* Nov 18 2004

With respect to cache barriers, it's advisable to handle calls like
conditional branches.

* Sep 18 2004

Added patches for gcc 3.4.2.
Some cleanup (`config/mips/mips.[ch], final.c' instead of `toplev.c, final.c'
...).
Switch on cache-barrier generation with `-mip28-cache-barrier' now.
Additional kernel patch inserts this option into Makefiles (requires
that IP28 kernel-patches are already appplied).

* Sep  8 2004

Improved by taking `set .reorder/.noreorder' into account.

* Sep  1 2004

Here you find a little patch to make gcc (2.95.4) generate appropriate cache
barriers to 0(sp) at the start of each basic block, which contains critical
store instructions.
If you wonder, what this is all about, read:

- MIPS R10000 Microprocessor User's Manual, Version 2.0,
  "Side Effects of Speculative Execution"

- http://mail-index.netbsd.org/port-sgimips/2000/06/29/0006.html

- The README file accompaning the kernel patches at this site.

This patch is not a especially proper modification to gcc (local machine-
dependent definitions in final.c, ... instead of using machine-definition-,
header-files, etc.), but it does what is needed and affects two files only:

- final.c, where all modifications to code generation are done.

- toplev.c, to turn generation of these cache-barriers on/off with the
  `-fip28-cache-barrier/-fno-ip28-cache-barrier' option.
  Default is `off' (`-fno-ip28-cache-barrier').

Reports on success (or bugs :-() are welcome.

