SVC: Difference between revisions
m →SetHeapSize: Fix register size W1 -> X1 |
Update SVCs to reflect 15.0.0 |
||
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, | | 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, | | 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 || | | (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 || | | (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 == |