Line 177: |
Line 177: |
| | 0x58 || Result || [[#DetachDeviceAddressSpace|DetachDeviceAddressSpace]] || DeviceName device_name, Handle das_handle | | | 0x58 || Result || [[#DetachDeviceAddressSpace|DetachDeviceAddressSpace]] || DeviceName device_name, Handle das_handle |
| |- | | |- |
− | | 0x59 || Result || [[#MapDeviceAddressSpaceByForce|MapDeviceAddressSpaceByForce]] || Handle das_handle, Handle process_handle, uint64_t process_address, size_t size, uint64_t device_address, MemoryPermission device_perm | + | | 0x59 || Result || [[#MapDeviceAddressSpaceByForce|MapDeviceAddressSpaceByForce]] || Handle das_handle, Handle process_handle, uint64_t process_address, size_t size, uint64_t device_address, uint32_t option |
| |- | | |- |
− | | 0x5A || Result || [[#MapDeviceAddressSpaceAligned|MapDeviceAddressSpaceAligned]] || Handle das_handle, Handle process_handle, uint64_t process_address, size_t size, uint64_t device_address, MemoryPermission device_perm | + | | 0x5A || Result || [[#MapDeviceAddressSpaceAligned|MapDeviceAddressSpaceAligned]] || Handle das_handle, Handle process_handle, uint64_t process_address, size_t size, uint64_t device_address, uint32_t option |
| |- | | |- |
| | [1.0.0-12.1.0] 0x5B || Result || [[#MapDeviceAddressSpace|MapDeviceAddressSpace]] || size_t *out_mapped_size, Handle das_handle, Handle process_handle, uint64_t process_address, size_t size, uint64_t device_address, MemoryPermission device_perm | | | [1.0.0-12.1.0] 0x5B || Result || [[#MapDeviceAddressSpace|MapDeviceAddressSpace]] || size_t *out_mapped_size, Handle das_handle, Handle process_handle, uint64_t process_address, size_t size, uint64_t device_address, MemoryPermission device_perm |
Line 252: |
Line 252: |
| |- | | |- |
| | 0x7F || void || [[#CallSecureMonitor|CallSecureMonitor]] || SecureMonitorArguments *args | | | 0x7F || void || [[#CallSecureMonitor|CallSecureMonitor]] || SecureMonitorArguments *args |
| + | |- style="border-top: double" |
| + | | [15.0.0+] 0x90 || Result || MapInsecureMemory || uintptr_t address, size_t size |
| + | |- |
| + | | [15.0.0+] 0x91 || Result || UnmapInsecureMemory || uintptr_t address, size_t size |
| |- | | |- |
| |} | | |} |
Line 1,858: |
Line 1,862: |
| | (In) X4 || R5, R6 || uint64_t || DeviceAddressSpaceAddress | | | (In) X4 || R5, R6 || uint64_t || DeviceAddressSpaceAddress |
| |- | | |- |
− | | (In) W5 || R7 || [[#MemoryPermission]] || MemoryPermission | + | | (In) W5 || R7 || uint32_t || Option |
| |- | | |- |
| | (Out) W0 || R0 || [[#Result]] || Result | | | (Out) W0 || R0 || [[#Result]] || Result |
Line 1,869: |
Line 1,873: |
| | | |
| The userspace destination address must have the [[SVC#MemoryState|FlagCanDeviceMap]] bit set. Bit [[SVC#MemoryAttribute|DeviceShared]] will be set after mapping. | | The userspace destination address must have the [[SVC#MemoryState|FlagCanDeviceMap]] bit set. Bit [[SVC#MemoryAttribute|DeviceShared]] will be set after mapping. |
| + | |
| + | The Option encodes a [[#MemoryPermission]] in the low 16 bits, and an indicator of IO mapping in the high bits. |
| | | |
| == MapDeviceAddressSpaceAligned == | | == MapDeviceAddressSpaceAligned == |
Line 1,886: |
Line 1,892: |
| | (In) X4 || R5, R6 || uint64_t || DeviceAddressSpaceAddress | | | (In) X4 || R5, R6 || uint64_t || DeviceAddressSpaceAddress |
| |- | | |- |
− | | (In) W5 || R7 || [[#MemoryPermission]] || MemoryPermission | + | | (In) W5 || R7 || uint32_t || Option |
| |- | | |- |
| | (Out) W0 || R0 || [[#Result]] || Result | | | (Out) W0 || R0 || [[#Result]] || Result |
Line 1,895: |
Line 1,901: |
| | | |
| Same as [[#MapDeviceAddressSpaceByForce]], but the userspace destination address must have the [[SVC#MemoryState|FlagCanAlignedDeviceMap]] bit set instead. | | Same as [[#MapDeviceAddressSpaceByForce]], but the userspace destination address must have the [[SVC#MemoryState|FlagCanAlignedDeviceMap]] bit set instead. |
| + | |
| + | The Option encodes a [[#MemoryPermission]] in the low 16 bits, and an indicator of IO mapping in the high bits. |
| | | |
| == MapDeviceAddressSpace == | | == MapDeviceAddressSpace == |