Changes

525 bytes added ,  18:02, 7 September 2019
Line 766: Line 766:  
| 0x40284109 || In || 40 || [[#NVGPU_AS_IOCTL_INITIALIZE_EX]]
 
| 0x40284109 || In || 40 || [[#NVGPU_AS_IOCTL_INITIALIZE_EX]]
 
|-
 
|-
| 0xC038410A || Inout || 56 || NVGPU_AS_IOCTL_MAP_BUFFER_EX
+
| 0xC038410A || Inout || 56 || [[#NVGPU_AS_IOCTL_MAP_BUFFER_EX]]
 
|-
 
|-
 
| 0xC0??4114 || Inout || Variable || [[#NVGPU_AS_IOCTL_REMAP]]
 
| 0xC0??4114 || Inout || Variable || [[#NVGPU_AS_IOCTL_REMAP]]
Line 779: Line 779:     
=== NVGPU_AS_IOCTL_ALLOC_SPACE ===
 
=== NVGPU_AS_IOCTL_ALLOC_SPACE ===
This one reserves pages in the device address space.
+
Reserves pages in the device address space.
    
   struct {
 
   struct {
Line 793: Line 793:     
=== NVGPU_AS_IOCTL_FREE_SPACE ===
 
=== NVGPU_AS_IOCTL_FREE_SPACE ===
This one frees pages from the device address space.
+
Frees pages from the device address space.
    
   struct {
 
   struct {
Line 802: Line 802:     
=== NVGPU_AS_IOCTL_MAP_BUFFER ===
 
=== NVGPU_AS_IOCTL_MAP_BUFFER ===
Map a memory region in the device address space. Identical to Linux driver pretty much.
+
Maps a memory region in the device address space. Identical to Linux driver pretty much.
    
On success, the mapped memory region is locked by having [[SVC#MemoryState]] bit34 set.
 
On success, the mapped memory region is locked by having [[SVC#MemoryState]] bit34 set.
Line 818: Line 818:     
=== NVGPU_AS_IOCTL_MODIFY ===
 
=== NVGPU_AS_IOCTL_MODIFY ===
Modify a memory region in the device address space.
+
Modifies a memory region in the device address space.
    
Unaligned size will cause a [[#Panic]].
 
Unaligned size will cause a [[#Panic]].
Line 825: Line 825:     
   struct {
 
   struct {
     __in   u32 flags;          // bit0: fixed_offset, bit2: cacheable
+
     __in     u32 flags;          // bit0: fixed_offset, bit2: cacheable
     __in   u32 kind;          // -1 is default
+
     __in     u32 kind;          // -1 is default
     __in   u32 nvmap_handle;
+
     __in     u32 nvmap_handle;
     __inout u32 page_size;      // 0 means don't care
+
     __inout   u32 page_size;      // 0 means don't care
     __in   u64 buffer_offset;
+
     __in     u64 buffer_offset;
     __in   u64 mapping_size;
+
     __in     u64 mapping_size;
 
     __inout  u64 offset;
 
     __inout  u64 offset;
 
   };
 
   };
    
=== NVGPU_AS_IOCTL_UNMAP_BUFFER ===
 
=== NVGPU_AS_IOCTL_UNMAP_BUFFER ===
Unmap a memory region from the device address space.
+
Unmaps a memory region from the device address space.
    
  struct {
 
  struct {
Line 852: Line 852:     
=== NVGPU_AS_IOCTL_GET_VA_REGIONS ===
 
=== NVGPU_AS_IOCTL_GET_VA_REGIONS ===
Nintendo modified to get rid of pointer in struct.
+
Nintendo's custom implementation to get rid of pointer in struct.
    
   struct va_region {
 
   struct va_region {
Line 862: Line 862:  
    
 
    
 
   struct {
 
   struct {
     u64         not_used;  // (contained output user ptr on linux, ignored)
+
     u64           not_used;  // (contained output user ptr on linux, ignored)
     __inout u32 bufsize;    // forced to 2*sizeof(struct va_region)
+
     __inout u32   bufsize;    // forced to 2*sizeof(struct va_region)
     u32         pad;
+
     u32           pad;
     __out struct va_region regions[2];
+
     __out struct va_region regions[2];
 
   };
 
   };
   Line 879: Line 879:  
     __in u64 unk1;
 
     __in u64 unk1;
 
     __in u64 unk2;
 
     __in u64 unk2;
 +
  };
 +
 +
=== NVGPU_AS_IOCTL_MAP_BUFFER_EX ===
 +
Maps a memory region in the device address space with extra params.
 +
 +
    struct {
 +
    __in      u32 flags;          // bit0: fixed_offset, bit2: cacheable
 +
    __in      u32 kind;          // -1 is default
 +
    __in      u32 nvmap_handle;
 +
    __inout  u32 page_size;      // 0 means don't care
 +
    __in      u64 buffer_offset;
 +
    __in      u64 mapping_size;
 +
    __inout  u64 offset;
 +
    __in      u64 unk0;
 +
    __in      u32 unk1;
 +
    u32            pad;
 
   };
 
   };