diff options
Diffstat (limited to 'nvdebug.h')
| -rw-r--r-- | nvdebug.h | 11 |
1 files changed, 9 insertions, 2 deletions
| @@ -935,7 +935,6 @@ static inline const char *pd_target_to_text(enum PD_TARGET t) { | |||
| 935 | // | 935 | // |
| 936 | // V3 introduced with Hopper, but Hopper and Blackwell also support V2 | 936 | // V3 introduced with Hopper, but Hopper and Blackwell also support V2 |
| 937 | // | 937 | // |
| 938 | // FIXME: This structure is 32 bits, but PDE/PTEs are actually 64 bits! | ||
| 939 | typedef union { | 938 | typedef union { |
| 940 | // Page Directory Entry (PDE) | 939 | // Page Directory Entry (PDE) |
| 941 | struct { | 940 | struct { |
| @@ -943,6 +942,7 @@ typedef union { | |||
| 943 | bool is_volatile:1; | 942 | bool is_volatile:1; |
| 944 | uint32_t padding1:4; | 943 | uint32_t padding1:4; |
| 945 | uint32_t addr:24; | 944 | uint32_t addr:24; |
| 945 | uint32_t __unused1; | ||
| 946 | } __attribute__((packed)); | 946 | } __attribute__((packed)); |
| 947 | // Page Table Entry (PTE) | 947 | // Page Table Entry (PTE) |
| 948 | struct { | 948 | struct { |
| @@ -954,8 +954,15 @@ typedef union { | |||
| 954 | bool is_readonly:1; | 954 | bool is_readonly:1; |
| 955 | bool atomics_disabled:1; | 955 | bool atomics_disabled:1; |
| 956 | uint32_t __addr:24; | 956 | uint32_t __addr:24; |
| 957 | uint32_t __unused2; | ||
| 957 | } __attribute__((packed)); | 958 | } __attribute__((packed)); |
| 958 | uint32_t raw; | 959 | // For wide addresses in PTEs or PDEs; only used if target is SYS_MEM |
| 960 | struct { | ||
| 961 | uint32_t __overlap:8; | ||
| 962 | uint64_t addr_w:46; | ||
| 963 | uint32_t __unused3:10; | ||
| 964 | } __attribute__((packed)); | ||
| 965 | uint64_t raw_w; | ||
| 959 | } page_dir_entry_t; | 966 | } page_dir_entry_t; |
| 960 | 967 | ||
| 961 | // Page Directory Entry/Page Table Entry V1 type | 968 | // Page Directory Entry/Page Table Entry V1 type |
