h6. [[Hardware Abstraction Layer]] h6(. [[HAL entry points from RISC OS]] h6((. » HAL_PhysInfo h2. HAL_PhysInfo h5. (HAL entry #105) <pre> bool HAL_PhysInfo(enum op, void *table, physinfo_range_t *range) </pre> |_<. Entry | | |op | Operation to perform | |table | As required by the operation | |range | As required by the operation | |_<. Exit | | |- |Returns TRUE if supported, otherwise FALSE | h4. Use This call is used to the physical memory arrangement table of the machine, as per SWI [[OS_Memory]] reason codes 6, 7, and 8. User software should always use the [[OS_Memory]] SWI instead of making this call directly. Where required, physinfo_range_t is a structure defined as: <pre> typedef struct physinfo_range_t { uintptr_t start; /* Start physical address (inclusive) */ uintptr_t end; /* End physical address (inclusive) */ } </pre> If _op_ is 0, _table_ is taken to point to a size_t variable and is filled with the size of the physical arrangement table in bytes. The _range_ parameter is unused. If _op_ is 1, _table_ is table to point to an array of uint8_t at least as big as reported by operation 0. It is filled with the physical memory arrangement table, as per [[OS_Memory 7]]. However, it is the kernel's responsibility to fill in information about the available RAM, so all RAM pages should be marked as (NotPresent OR NotAvailable). To aid the kernel in filling in the RAM map, the _range_ structure is populated with the region of the physical memory map which might contain RAM. The kernel will then update the relevant areas of the table to indicate how much RAM is actually available. If _op_ is 2, the _range_ structure is populated with the region containing hard ROM as required by [[OS_Memory 8]]. The _table_ parameter is unused. h6. Information sources: Kernel.s.MemInfo, HAL.Tungsten.s.Boot in CVS