- 28 Apr, 2021 2 commits
-
-
Jeffrey Lee authored
LoadAndDecodeL1Entry will now always return the size/alignment of the entry. This allows ConstructCAMfromPageTables to walk over a 2MB long descriptor page table pointer in one go, instead of splitting it into two 1MB chunks (as if short descriptor page tables were in use) and calling LoadAndDecodeL1Entry twice. This has allowed the 1MB result alignment bodge to be removed from the LongDesc version of LoadAndDecodeL1Entry.
-
Jeffrey Lee authored
This changes PhysRamTable to store the address of each RAM bank in terms of (4KB) pages instead of bytes, effectively allowing it to support a 44 bit physical address space. This means that (when the long descriptor page table format is used) the OS can now make use of memory located outside the lower 4GB of the physical address space. However some public APIs still need extending to allow for all operations to be supported on high RAM (e.g. OS_Memory logical to physical address lookups) OS_Memory 12 (RecommendPage) has been extended to allow R4-R7 to be used to specify a (64bit) physical address range which the recommended pages must lie within. For backwards compatibility this defaults to 0-4GB.
-
- 17 Mar, 2021 1 commit
-
-
Jeffrey Lee authored
This adds initial support for the "long descriptor" MMU page table format, which allows the CPU to (flexibly) use a 40-bit physical address space. There are still some features that need fixing (e.g. RISCOS_MapInIO flags), and the OS doesn't yet support RAM above the 32bit limit, but this set of changes is enough to allow for working ROMs to be produced. Also, move MMUControlSoftCopy initialisation out of ClearWkspRAM, since it's unrelated to whether the HAL has cleared the RAM or not.
-