Improve support for VMSAv6 cache policies & memory types. Expose raw ARMops...
Jeffrey Lee authored
Improve support for VMSAv6 cache policies & memory types. Expose raw ARMops via OS_MMUControl & cache information via OS_PlatformFeatures.

Detail:
  Docs/HAL/ARMop_API - Document two new ARMops: Cache_Examine and IMB_List
  hdr/KernelWS - Shuffle workspace round a bit to allow space for the two new ARMops. IOSystemType now deleted (has been deprecated and fixed at 0 for some time)
  s/ARM600 - Cosmetic changes to BangCam to make it clearer what's going on. Add OS_MMUControl 2 (get ARMop) implementation.
  s/ARMops - Switch out different ARMop implementations and XCB tables depending on MMU model - helps reduce assembler warnings and make it clearer what code paths are and aren't possible. Add implementations of the two new ARMops. Simplify ARM_Analyse_Fancy by removing some tests which we know will have certain results. Use CCSIDR constants in ARMv7 ARMops instead of magic numbers. Update XCB table comments, and add a new table for VMSAv6
  s/ChangeDyn - Define constant for the new NCB 'idempotent' cache policy (VMSAv6 normal, non-cacheable memory)
  s/HAL - Use CCSIDR constants instead of magic numbers. Extend RISCOS_MapInIO to allow the TEX bits to be specified.
  s/Kernel - OS_PlatformFeatures 33 (read cache information) implementation (actually, just calls through to an ARMop)
  s/MemInfo - Modify VMSAv6 OS_Memory 0 cache/uncache implementation to use the XCB table instead of modifying L2_C directly. This allows the cacheability to be changed without affecting the memory type - important for e.g. unaligned accesses to work correctly. Implement cache policy support for OS_Memory 13.
  s/Middle - Remove IOSystemType from OS_ReadSysInfo 6.
  s/VMSAv6 - Make sure BangCam uses the XCB table for working out the attributes of temp-uncacheable pages instead of manipulating L2_C directly. Add OS_MMUControl 2 implementation.
  s/AMBControl/memmap - Update VMSAv6 page table pokeing to use XCB table
  s/PMF/osinit - Remove IOSystemType reference, and switch out some pre-HAL code that was trying to use IOSystemType.
Admin:
  Tested on Iyonix, ARM11, Cortex-A7, -A8, -A9, -A15
  Note that contrary to the comments in the source the default NCB policy currently maps to VMSAv6 Device memory type (as per previous kernel versions). This is just a temporary measure, and it will be switched over to Normal, non-cacheable once appropriate memory barriers have been added to the affected IO code.


Version 5.35, 4.79.2.273. Tagged as 'Kernel-5_35-4_79_2_273'
afb010f2
Name Last commit Last update
..
5thColumn RISC OS 3.71 kernel changes merged.
HAL Improve support for VMSAv6 cache policies & memory types. Expose raw ARMops via OS_MMUControl & cache information via OS_PlatformFeatures.
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 * Converted to building with ObjAsm (but still a single object file using ORG).
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