Make MMU_Changing ARMops perform the sub-operations in a sensible order
Jeffrey Lee authored
Detail:
  For a while we've known that the correct way of doing cache maintenance on ARMv6+ (e.g. when converting a page from cacheable to non-cacheable) is as follows:
  1. Write new page table entry
  2. Flush old entry from TLB
  3. Clean cache + drain write buffer
  The MMU_Changing ARMops (e.g. MMU_ChangingEntry) implement the last two items, but in the wrong order. This has caused the operations to fall out of favour and cease to be used, even in pre-ARMv6 code paths where the effects of improper cache/TLB management perhaps weren't as readily visible.
  This change re-specifies the relevant ARMops so that they perform their sub-operations in the correct order to make them useful on modern ARMs, updates the implementations, and updates the kernel to make use of the ops whereever relevant.
  File changes:
  - Docs/HAL/ARMop_API - Re-specify all the MMU_Changing ARMops to state that they are for use just after a page table entry has been changed (as opposed to before - e.g. 5.00 kernel behaviour). Re-specify the cacheable ones to state that the TLB invalidatation comes first.
  - s/ARM600, s/ChangeDyn, s/HAL, s/MemInfo, s/VMSAv6, s/AMBControl/memmap - Replace MMU_ChangingUncached + Cache_CleanInvalidate pairs with equivalent MMU_Changing op
  - s/ARMops - Update ARMop implementations to do everything in the correct order
  - s/MemMap2 - Update ARMop usage, and get rid of some lingering sledgehammer logic from ShuffleDoublyMappedRegionForGrow
Admin:
  Tested on pretty much everything currently supported


Version 5.70. Tagged as 'Kernel-5_70'
9a96263a
Name Last commit Last update
..
5thColumn RISC OS 3.71 kernel changes merged.
HAL Make MMU_Changing ARMops perform the sub-operations in a sensible order
MemMaps RISC OS 3.71 kernel changes merged.
PrivDoc RISC OS 3.71 kernel changes merged.
!ReadMe Import from cleaned 370 CD
0197276.02 Import from cleaned 370 CD
32bit Delete lots of old switches
32bitAPIs Commit of kernel as featured in release 5.00.
A540Extend Import from cleaned 370 CD
AMBControl Import from cleaned 370 CD
CallbackChange Miscellaneous stuff.
GraphicsV Merged in changes from Castle
HiResTTX Added 256-colour version of the (high-resolution only) teletext code, and support for teletext when hardware scroll is disabled. Both are required for Tungsten.
Kernel Import from cleaned 370 CD
KernlSplit Import from cleaned 370 CD
MMUControl Import from cleaned 370 CD
ModPostServ HAL device support, and a couple of new service calls.
Mode22 Import from cleaned 370 CD
Modes Import from cleaned 370 CD
MonLead Import from cleaned 370 CD
PageFlags Lots of Tungsten work.
PaletteV Import from cleaned 370 CD
RO370 Lots of Tungsten work.
ReadSysInf Lots of Tungsten work.
ReadUnsigned Merge over some changes from the Cortex branch
TVmodesMed,dde