Tile has incoherent icaches, so they must be explicitly invalidated
when necessary. Until now we have done so at tlb flush and context
switch time, which means more invalidation than strictly necessary.
The new model for icache flush is:
- When we fault in a page as executable, we set an "Exec" bit in the
"struct page" information; the bit stays set until page free time.
(We use the arch_1 page bit for our "Exec" bit.)
- At page free time, if the Exec bit is set, we do an icache flush.
This should happen relatively rarely: e.g., deleting a binary from disk,
or evicting a binary's pages from the page cache due to memory pressure.
Signed-off-by: Chris Metcalf<cmetcalf@xxxxxxxxxx>