diff options
| author | 2019-11-03 18:54:03 -0500 | |
|---|---|---|
| committer | 2019-11-03 22:22:41 -0500 | |
| commit | 1bdae0fe29f87daa81d2aba052a10a709b87485a (patch) | |
| tree | 16d0f4aa4c4a11222c6950b3ad60e7d1d9905036 /src/core | |
| parent | Merge pull request #3059 from FearlessTobi/stub-am-commands (diff) | |
| download | yuzu-1bdae0fe29f87daa81d2aba052a10a709b87485a.tar.gz yuzu-1bdae0fe29f87daa81d2aba052a10a709b87485a.tar.xz yuzu-1bdae0fe29f87daa81d2aba052a10a709b87485a.zip | |
common_func: Use std::array for INSERT_PADDING_* macros.
- Zero initialization here is useful for determinism.
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/file_sys/content_archive.cpp | 39 | ||||
| -rw-r--r-- | src/core/file_sys/romfs.h | 19 | ||||
| -rw-r--r-- | src/core/hle/ipc.h | 6 | ||||
| -rw-r--r-- | src/core/hle/service/am/applets/error.cpp | 11 | ||||
| -rw-r--r-- | src/core/hle/service/vi/vi.cpp | 2 |
5 files changed, 39 insertions, 38 deletions
diff --git a/src/core/file_sys/content_archive.cpp b/src/core/file_sys/content_archive.cpp index ea5c92f61..b8bbdd1ef 100644 --- a/src/core/file_sys/content_archive.cpp +++ b/src/core/file_sys/content_archive.cpp | |||
| @@ -32,11 +32,28 @@ enum class NCASectionFilesystemType : u8 { | |||
| 32 | ROMFS = 0x3, | 32 | ROMFS = 0x3, |
| 33 | }; | 33 | }; |
| 34 | 34 | ||
| 35 | struct IVFCLevel { | ||
| 36 | u64_le offset; | ||
| 37 | u64_le size; | ||
| 38 | u32_le block_size; | ||
| 39 | u32_le reserved; | ||
| 40 | }; | ||
| 41 | static_assert(sizeof(IVFCLevel) == 0x18, "IVFCLevel has incorrect size."); | ||
| 42 | |||
| 43 | struct IVFCHeader { | ||
| 44 | u32_le magic; | ||
| 45 | u32_le magic_number; | ||
| 46 | INSERT_UNION_PADDING_BYTES(8); | ||
| 47 | std::array<IVFCLevel, 6> levels; | ||
| 48 | INSERT_UNION_PADDING_BYTES(64); | ||
| 49 | }; | ||
| 50 | static_assert(sizeof(IVFCHeader) == 0xE0, "IVFCHeader has incorrect size."); | ||
| 51 | |||
| 35 | struct NCASectionHeaderBlock { | 52 | struct NCASectionHeaderBlock { |
| 36 | INSERT_PADDING_BYTES(3); | 53 | INSERT_UNION_PADDING_BYTES(3); |
| 37 | NCASectionFilesystemType filesystem_type; | 54 | NCASectionFilesystemType filesystem_type; |
| 38 | NCASectionCryptoType crypto_type; | 55 | NCASectionCryptoType crypto_type; |
| 39 | INSERT_PADDING_BYTES(3); | 56 | INSERT_UNION_PADDING_BYTES(3); |
| 40 | }; | 57 | }; |
| 41 | static_assert(sizeof(NCASectionHeaderBlock) == 0x8, "NCASectionHeaderBlock has incorrect size."); | 58 | static_assert(sizeof(NCASectionHeaderBlock) == 0x8, "NCASectionHeaderBlock has incorrect size."); |
| 42 | 59 | ||
| @@ -44,7 +61,7 @@ struct NCASectionRaw { | |||
| 44 | NCASectionHeaderBlock header; | 61 | NCASectionHeaderBlock header; |
| 45 | std::array<u8, 0x138> block_data; | 62 | std::array<u8, 0x138> block_data; |
| 46 | std::array<u8, 0x8> section_ctr; | 63 | std::array<u8, 0x8> section_ctr; |
| 47 | INSERT_PADDING_BYTES(0xB8); | 64 | INSERT_UNION_PADDING_BYTES(0xB8); |
| 48 | }; | 65 | }; |
| 49 | static_assert(sizeof(NCASectionRaw) == 0x200, "NCASectionRaw has incorrect size."); | 66 | static_assert(sizeof(NCASectionRaw) == 0x200, "NCASectionRaw has incorrect size."); |
| 50 | 67 | ||
| @@ -52,19 +69,19 @@ struct PFS0Superblock { | |||
| 52 | NCASectionHeaderBlock header_block; | 69 | NCASectionHeaderBlock header_block; |
| 53 | std::array<u8, 0x20> hash; | 70 | std::array<u8, 0x20> hash; |
| 54 | u32_le size; | 71 | u32_le size; |
| 55 | INSERT_PADDING_BYTES(4); | 72 | INSERT_UNION_PADDING_BYTES(4); |
| 56 | u64_le hash_table_offset; | 73 | u64_le hash_table_offset; |
| 57 | u64_le hash_table_size; | 74 | u64_le hash_table_size; |
| 58 | u64_le pfs0_header_offset; | 75 | u64_le pfs0_header_offset; |
| 59 | u64_le pfs0_size; | 76 | u64_le pfs0_size; |
| 60 | INSERT_PADDING_BYTES(0x1B0); | 77 | INSERT_UNION_PADDING_BYTES(0x1B0); |
| 61 | }; | 78 | }; |
| 62 | static_assert(sizeof(PFS0Superblock) == 0x200, "PFS0Superblock has incorrect size."); | 79 | static_assert(sizeof(PFS0Superblock) == 0x200, "PFS0Superblock has incorrect size."); |
| 63 | 80 | ||
| 64 | struct RomFSSuperblock { | 81 | struct RomFSSuperblock { |
| 65 | NCASectionHeaderBlock header_block; | 82 | NCASectionHeaderBlock header_block; |
| 66 | IVFCHeader ivfc; | 83 | IVFCHeader ivfc; |
| 67 | INSERT_PADDING_BYTES(0x118); | 84 | INSERT_UNION_PADDING_BYTES(0x118); |
| 68 | }; | 85 | }; |
| 69 | static_assert(sizeof(RomFSSuperblock) == 0x200, "RomFSSuperblock has incorrect size."); | 86 | static_assert(sizeof(RomFSSuperblock) == 0x200, "RomFSSuperblock has incorrect size."); |
| 70 | 87 | ||
| @@ -72,24 +89,24 @@ struct BKTRHeader { | |||
| 72 | u64_le offset; | 89 | u64_le offset; |
| 73 | u64_le size; | 90 | u64_le size; |
| 74 | u32_le magic; | 91 | u32_le magic; |
| 75 | INSERT_PADDING_BYTES(0x4); | 92 | INSERT_UNION_PADDING_BYTES(0x4); |
| 76 | u32_le number_entries; | 93 | u32_le number_entries; |
| 77 | INSERT_PADDING_BYTES(0x4); | 94 | INSERT_UNION_PADDING_BYTES(0x4); |
| 78 | }; | 95 | }; |
| 79 | static_assert(sizeof(BKTRHeader) == 0x20, "BKTRHeader has incorrect size."); | 96 | static_assert(sizeof(BKTRHeader) == 0x20, "BKTRHeader has incorrect size."); |
| 80 | 97 | ||
| 81 | struct BKTRSuperblock { | 98 | struct BKTRSuperblock { |
| 82 | NCASectionHeaderBlock header_block; | 99 | NCASectionHeaderBlock header_block; |
| 83 | IVFCHeader ivfc; | 100 | IVFCHeader ivfc; |
| 84 | INSERT_PADDING_BYTES(0x18); | 101 | INSERT_UNION_PADDING_BYTES(0x18); |
| 85 | BKTRHeader relocation; | 102 | BKTRHeader relocation; |
| 86 | BKTRHeader subsection; | 103 | BKTRHeader subsection; |
| 87 | INSERT_PADDING_BYTES(0xC0); | 104 | INSERT_UNION_PADDING_BYTES(0xC0); |
| 88 | }; | 105 | }; |
| 89 | static_assert(sizeof(BKTRSuperblock) == 0x200, "BKTRSuperblock has incorrect size."); | 106 | static_assert(sizeof(BKTRSuperblock) == 0x200, "BKTRSuperblock has incorrect size."); |
| 90 | 107 | ||
| 91 | union NCASectionHeader { | 108 | union NCASectionHeader { |
| 92 | NCASectionRaw raw; | 109 | NCASectionRaw raw{}; |
| 93 | PFS0Superblock pfs0; | 110 | PFS0Superblock pfs0; |
| 94 | RomFSSuperblock romfs; | 111 | RomFSSuperblock romfs; |
| 95 | BKTRSuperblock bktr; | 112 | BKTRSuperblock bktr; |
diff --git a/src/core/file_sys/romfs.h b/src/core/file_sys/romfs.h index 0f35639bc..1c89be8a4 100644 --- a/src/core/file_sys/romfs.h +++ b/src/core/file_sys/romfs.h | |||
| @@ -13,25 +13,6 @@ | |||
| 13 | 13 | ||
| 14 | namespace FileSys { | 14 | namespace FileSys { |
| 15 | 15 | ||
| 16 | struct RomFSHeader; | ||
| 17 | |||
| 18 | struct IVFCLevel { | ||
| 19 | u64_le offset; | ||
| 20 | u64_le size; | ||
| 21 | u32_le block_size; | ||
| 22 | u32_le reserved; | ||
| 23 | }; | ||
| 24 | static_assert(sizeof(IVFCLevel) == 0x18, "IVFCLevel has incorrect size."); | ||
| 25 | |||
| 26 | struct IVFCHeader { | ||
| 27 | u32_le magic; | ||
| 28 | u32_le magic_number; | ||
| 29 | INSERT_PADDING_BYTES(8); | ||
| 30 | std::array<IVFCLevel, 6> levels; | ||
| 31 | INSERT_PADDING_BYTES(64); | ||
| 32 | }; | ||
| 33 | static_assert(sizeof(IVFCHeader) == 0xE0, "IVFCHeader has incorrect size."); | ||
| 34 | |||
| 35 | enum class RomFSExtractionType { | 16 | enum class RomFSExtractionType { |
| 36 | Full, // Includes data directory | 17 | Full, // Includes data directory |
| 37 | Truncated, // Traverses into data directory | 18 | Truncated, // Traverses into data directory |
diff --git a/src/core/hle/ipc.h b/src/core/hle/ipc.h index fae54bcc7..7ce313190 100644 --- a/src/core/hle/ipc.h +++ b/src/core/hle/ipc.h | |||
| @@ -160,7 +160,7 @@ struct DomainMessageHeader { | |||
| 160 | // Used when responding to an IPC request, Server -> Client. | 160 | // Used when responding to an IPC request, Server -> Client. |
| 161 | struct { | 161 | struct { |
| 162 | u32_le num_objects; | 162 | u32_le num_objects; |
| 163 | INSERT_PADDING_WORDS(3); | 163 | INSERT_UNION_PADDING_WORDS(3); |
| 164 | }; | 164 | }; |
| 165 | 165 | ||
| 166 | // Used when performing an IPC request, Client -> Server. | 166 | // Used when performing an IPC request, Client -> Server. |
| @@ -171,8 +171,10 @@ struct DomainMessageHeader { | |||
| 171 | BitField<16, 16, u32> size; | 171 | BitField<16, 16, u32> size; |
| 172 | }; | 172 | }; |
| 173 | u32_le object_id; | 173 | u32_le object_id; |
| 174 | INSERT_PADDING_WORDS(2); | 174 | INSERT_UNION_PADDING_WORDS(2); |
| 175 | }; | 175 | }; |
| 176 | |||
| 177 | std::array<u32, 4> raw{}; | ||
| 176 | }; | 178 | }; |
| 177 | }; | 179 | }; |
| 178 | static_assert(sizeof(DomainMessageHeader) == 16, "DomainMessageHeader size is incorrect"); | 180 | static_assert(sizeof(DomainMessageHeader) == 16, "DomainMessageHeader size is incorrect"); |
diff --git a/src/core/hle/service/am/applets/error.cpp b/src/core/hle/service/am/applets/error.cpp index a7db26725..eab0d42c9 100644 --- a/src/core/hle/service/am/applets/error.cpp +++ b/src/core/hle/service/am/applets/error.cpp | |||
| @@ -20,9 +20,9 @@ namespace Service::AM::Applets { | |||
| 20 | struct ShowError { | 20 | struct ShowError { |
| 21 | u8 mode; | 21 | u8 mode; |
| 22 | bool jump; | 22 | bool jump; |
| 23 | INSERT_PADDING_BYTES(4); | 23 | INSERT_UNION_PADDING_BYTES(4); |
| 24 | bool use_64bit_error_code; | 24 | bool use_64bit_error_code; |
| 25 | INSERT_PADDING_BYTES(1); | 25 | INSERT_UNION_PADDING_BYTES(1); |
| 26 | u64 error_code_64; | 26 | u64 error_code_64; |
| 27 | u32 error_code_32; | 27 | u32 error_code_32; |
| 28 | }; | 28 | }; |
| @@ -32,7 +32,7 @@ static_assert(sizeof(ShowError) == 0x14, "ShowError has incorrect size."); | |||
| 32 | struct ShowErrorRecord { | 32 | struct ShowErrorRecord { |
| 33 | u8 mode; | 33 | u8 mode; |
| 34 | bool jump; | 34 | bool jump; |
| 35 | INSERT_PADDING_BYTES(6); | 35 | INSERT_UNION_PADDING_BYTES(6); |
| 36 | u64 error_code_64; | 36 | u64 error_code_64; |
| 37 | u64 posix_time; | 37 | u64 posix_time; |
| 38 | }; | 38 | }; |
| @@ -41,7 +41,7 @@ static_assert(sizeof(ShowErrorRecord) == 0x18, "ShowErrorRecord has incorrect si | |||
| 41 | struct SystemErrorArg { | 41 | struct SystemErrorArg { |
| 42 | u8 mode; | 42 | u8 mode; |
| 43 | bool jump; | 43 | bool jump; |
| 44 | INSERT_PADDING_BYTES(6); | 44 | INSERT_UNION_PADDING_BYTES(6); |
| 45 | u64 error_code_64; | 45 | u64 error_code_64; |
| 46 | std::array<char, 8> language_code; | 46 | std::array<char, 8> language_code; |
| 47 | std::array<char, 0x800> main_text; | 47 | std::array<char, 0x800> main_text; |
| @@ -52,7 +52,7 @@ static_assert(sizeof(SystemErrorArg) == 0x1018, "SystemErrorArg has incorrect si | |||
| 52 | struct ApplicationErrorArg { | 52 | struct ApplicationErrorArg { |
| 53 | u8 mode; | 53 | u8 mode; |
| 54 | bool jump; | 54 | bool jump; |
| 55 | INSERT_PADDING_BYTES(6); | 55 | INSERT_UNION_PADDING_BYTES(6); |
| 56 | u32 error_code; | 56 | u32 error_code; |
| 57 | std::array<char, 8> language_code; | 57 | std::array<char, 8> language_code; |
| 58 | std::array<char, 0x800> main_text; | 58 | std::array<char, 0x800> main_text; |
| @@ -65,6 +65,7 @@ union Error::ErrorArguments { | |||
| 65 | ShowErrorRecord error_record; | 65 | ShowErrorRecord error_record; |
| 66 | SystemErrorArg system_error; | 66 | SystemErrorArg system_error; |
| 67 | ApplicationErrorArg application_error; | 67 | ApplicationErrorArg application_error; |
| 68 | std::array<u8, 0x1018> raw{}; | ||
| 68 | }; | 69 | }; |
| 69 | 70 | ||
| 70 | namespace { | 71 | namespace { |
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp index 199b30635..611cecc20 100644 --- a/src/core/hle/service/vi/vi.cpp +++ b/src/core/hle/service/vi/vi.cpp | |||
| @@ -45,7 +45,7 @@ struct DisplayInfo { | |||
| 45 | 45 | ||
| 46 | /// Whether or not the display has a limited number of layers. | 46 | /// Whether or not the display has a limited number of layers. |
| 47 | u8 has_limited_layers{1}; | 47 | u8 has_limited_layers{1}; |
| 48 | INSERT_PADDING_BYTES(7){}; | 48 | INSERT_PADDING_BYTES(7); |
| 49 | 49 | ||
| 50 | /// Indicates the total amount of layers supported by the display. | 50 | /// Indicates the total amount of layers supported by the display. |
| 51 | /// @note This is only valid if has_limited_layers is set. | 51 | /// @note This is only valid if has_limited_layers is set. |