Showing changes from revision #7 to #8:
Added | Removed | Changed
The page access flags used below are used by the OS_DynamicArea, OS_Memory, and the OS_SetMemMapEntries group of SWIs. However, when using calls to modify the access of pages, be aware that not all APIs support all types of flags. Specifying an unsupported flag can lead to malfunction. Also note that this page only lists the flags supported by RISC OS 5 and its predecessors; for information on RISC OS 4 and 6, please see ROL’s documentation.
Bit | Meaning | OS version | Notes |
---|---|---|---|
0-3 | Access privileges to be given to each page in the area | Arthur | |
4 | Set if area is not bufferable by chips | 3.50 | 1 |
5 | Set if area is not cacheable by chips | 3.50 | 1 |
6 | If set, area is doubly mapped (reserved, OS use only), otherwise area is singly mapped | 3.50 | 2 |
5.27 | 3 | ||
8-11 | Reserved (must be zero) | ||
12-14 | Cache policy | 5.00 | |
15-31 | Reserved (must be zero) |
Prior to RISC OS 5.00, OS_ReadMemMapEntries and OS_FindMemMapEntries would return all of the flags for a given page, but OS_SetMemMapEntries would only pay attention to the bottom two bits and clear the rest to zero. With RISC OS 5.00 this behaviour was fixed so that the full set of flags are used.
1 Advice on bits 4 & 5
Setting flags such that r4 bit 4 is 1 and bit 5 is 0 (area is cacheable but not bufferable) has different meanings depending on the operating system version. On RISC OS 5 it selects a non-merging write-through or write-back cache policy. On other operating system versions it is unsupported and must not be used.
2 Doubly mapped regions
Using OS_SetMemMapEntries to set a page as doubly mapped is not supported and will result in the page tables being incorrectly modified.
3 Reserved pages
This flag is read-only via OS_SetMemMapEntries. The only API which can modify its state is OS_Memory 23. See the OS_Memory 23 documentation for more details on the behaviour of reserved pages.