|   OS MemoryOS_Memory calls have been updated. The following lists the reason codes which are allocated : OS_Memory 0     General block operations      See PRM 5a-62 OS_Memory 1-5   Reserved for internal use      See PRM 5a-64 OS_Memory 6     Read size of physical memory arrangement tabl      See PRM 5a-65 and this section OS_Memory 7     Read physical memory arrangement table      See PRM 5a-66 and this section OS_Memory 8     Read memory amounts      See PRM 5a-68 and this section OS_Memory 9     Read controller presence and logical base address      See PRM 5a-69 and this section OS_Memory 10    Lock free pool      See this section OS_Memory 11    Map PCI memory      See this section OS_Memory 12    Recommend page      See this section OS_Memory 13-23 Reserved for future expansionOS_Memory 24    Check memory access      See this section OS_Memory 25    Read controller presence and physical base address      See this section 
 OS_Memory 6 (Read size of physical memory arrangement table)On entry   R0 = 6 (reason code), all flag bits are currently reserved and must be 0 On exit   R1 = table size R2 = page size This SWI is now deprecated. OS_Memory 7 (Read physical memory arrangement table)On entry   R0 = 7 (reason code), all flag bits are currently reserved and must be 0
   R1 = pointer to table to fill in This SWI is now deprecated and may not return reliable information for a given OS version. OS_Memory 8 (Read amount of memory)On entry   R0 = 8 + flags:
                 bits 8-11: type of memory:
                              1 = DRAM
                              2 = VRAM
                              3 = ROM
                              4 = I/O
                              5 = Softload ROM
                              Others reserved
                 bits 12-31 reserved, must be 0This SWI is used to read the amount of various types of memory available within the machine. On modern versions of RISC OS, the amount of VRAM will be returned as 0, as VRAM is now reserved to the video driver, rather than the Kernel. The new type 5 for softload RAM indicates the amount of memory allocated from DRAM (and excluded from the value returned for type 1). OS_Memory 9 (Read controller presence and base logical address)On entry   R0 = 9 (reason code), all flag bits are currently reserved and must be 0
   R1 = controller ID:
         bits 0-7  = controller sequence number
         bits 8-31 = controller type:
                     0 = EASI card access speed control
                             1 = EASI space
                     2 = VIDC1
                     3 = VIDC20
                     Others = reservedOn exit   R0 preserved
   R1 = controller physical address This SWI is used to read the base address of a controller in logical address space. Under modern versions of the OS the correct way to obtain access to a controller is to create a dynamic area with the controller address mapped in to it. The Kernel will not map parts of hardware memory in future versions. This SWI is thus less useful in modern OS versions. Its behaviour has been been changed slightly to correct an oversight in the original design. The original definition stated that 0 could be returned for an absent controller, in addition to an error being reported for an invalid controller. The implementation now returns an error for all controllers which do not exist, and 0 will not be returned. See PRM 5a-69 for the original definition. OS_Memory 10 (Lock free pool)On entry   R0 = 10 + flags:
         bit 8 = call made by Wimp
         bits 9-31 reserved, must be 0This SWI was allocated in RISC OS 4 for locking the free pool in order to implement Wimp_ClaimFreeMemory. The Wimp_ClaimFreeMemory call should not be used and this call is no longer used. OS_Memory 11 (Map PCI memory)On entry   R0 = 11 + flags:
         bit 8 = set to read information, clear to map PCI space
         bits 9-31 reserved, must be 0
   R1-R3 dependent on flagsThis SWI was allocated in RISC OS 4 for mapping PCI memory within the Phoebe hardware. PCI memory allocation should now be performed by clients through the PCI manager module. The PCI manager module will use physical memory areas to provide drivers with memory mappings. This call is no longer used. OS_Memory 12 (Recommend page)On entry   R0 = 12 + flags :
         bit 8 = set if pages should be in DMA-able memory
         bits 9-31 reserved, must be 0
   R1 = size of contiguous region of physical memory required in bytes
   R2 = log base 2 of required alignment of base of region within physical memory, between 12 (4K) and 30 (2G).On exit   R3 = page number of first page which fulfills the requirements specified This SWI is used to recommend pages of physical RAM which are unallocated and may be used for a new dynamic area. It is expected that they will be used to create a dynamic area, or to extend an existing area. An error will be returned if no pages match the required criteria. Prior to Kernel 8.77, bit 8 was not supported. This SWI call is available from RISC OS 4 onward. OS_Memory 13-23 (reserved)On entry   R0 = 13 to 23 These SWI calls are reserved. OS_Memory 24 (Check memory access)On entry    R0 = 24 (reason code), all flag bits are currently reserved and must be 0
   R1 = low address
   R2 = high address On exit   R1 = access flags:
         bit 0 = Range is completely readable in user mode
         bit 1 = Range is completely writable in user mode
         bit 2 = Range is completely readable in privileged modes
         bit 3 = Range is completely writable in privileged modes
         bit 4 = Range is partially readable in user mode
         bit 5 = Range is partially writable in user mode
         bit 6 = Range is partially readable in privileged modes
         bit 7 = Range is partially writable in privileged modes
         bit 8 = Range is completely physically mapped
         bit 9 = Range is completely abortable (aborts handled by code)
         bit 10 = Reserved for future expansion
         bit 11 = Reserved for future expansion
         bit 12 = Range is partially physically mapped
         bit 13 = Range is partially abortable (aborts handled by code)
         bit 14 = Reserved for future expansion
         bit 15 = Reserved for future expansion
         bits 16-31 = Reserved for future expansionThis SWI is used to determine the accessibility of a range of memory. It is similar to the OS_ValidateAddress call in that it uses the Dynamic Area details to determine the availability of memory areas. The region from 'low address' to 'high address'-1 will be considered. The flags returned indicate the access which is available for the range. Because the range may span (multiple) page boundaries the access for the range may vary across its length. Consequently, the two extents of accessibility are returned. Bits are separated into pairs of 4 bits. The lower 4 bits indicate the lowest level of accessibility for the region specified. The upper 4 bits indicate the highest level of accessibility for the region specified. If the bit sets are identical then the accessibility of the region does not change. OS_Memory 25 (Read controller presence and base physical address)On entry   R0 = 25 (reason code), all flag bits are currently reserved and must be 0
   R1 = controller ID:
         bits 0-7  = controller sequence number
         bits 8-31 = controller type:
               0 = EASI card access speed control
               1 = EASI space
               2 = VIDC1
               3 = VIDC20
               4 = Reserved for Pace OS variants
               5 = Expansion ROMs
               6-31 = Reserved for Pace OS variants
               32 = Primary ROM
               33 = IOMD
               34 = FDC37C665 or similar
               Others = Reserved for future hardwareOn exit   R0 preserved
   R1 = controller physical address This call checks for the presence of a given controller and returns its physical address. This allows hardware drivers to provide support for specific controllers which are may exist at different physical locations on other hardware. This call is similar to OS_Memory 9. |