Entry | |
---|---|
R0 | 0, and flags, |
R1 | Pointer to page block list |
R2 | Number of entries in page block list |
Exit | |
---|---|
R0 | Preserved |
R1 | Preserved |
R2 | Preserved |
The purpose of this call is to convert between different memory spaces used to specify addresses in a page block, and alter their cache-ability.
The addresses must be in RAM; specifically, they must all correspond to pages which the OS has assigned a valid physical page number to. E.g. I/O memory which has been mapped by OS_Memory 13 will not be recognised.
Addresses need not be page aligned. If a page is made uncacheable, the relevant portion of the CPU cache will be flushed. If there is an error processing any page in the block, the call has no effect on any pages.
Because the page block format is restricted to 32 bit addresses, attempting to look up the physical address of a page which has a physical address of 2^32 or higher will cause the call to fail with an error. To avoid this, OS_Memory 64 should be used instead.