summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorGravatar bunnei2019-11-03 18:54:03 -0500
committerGravatar bunnei2019-11-03 22:22:41 -0500
commit1bdae0fe29f87daa81d2aba052a10a709b87485a (patch)
tree16d0f4aa4c4a11222c6950b3ad60e7d1d9905036 /src/core
parentMerge pull request #3059 from FearlessTobi/stub-am-commands (diff)
downloadyuzu-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.cpp39
-rw-r--r--src/core/file_sys/romfs.h19
-rw-r--r--src/core/hle/ipc.h6
-rw-r--r--src/core/hle/service/am/applets/error.cpp11
-rw-r--r--src/core/hle/service/vi/vi.cpp2
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
35struct IVFCLevel {
36 u64_le offset;
37 u64_le size;
38 u32_le block_size;
39 u32_le reserved;
40};
41static_assert(sizeof(IVFCLevel) == 0x18, "IVFCLevel has incorrect size.");
42
43struct 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};
50static_assert(sizeof(IVFCHeader) == 0xE0, "IVFCHeader has incorrect size.");
51
35struct NCASectionHeaderBlock { 52struct 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};
41static_assert(sizeof(NCASectionHeaderBlock) == 0x8, "NCASectionHeaderBlock has incorrect size."); 58static_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};
49static_assert(sizeof(NCASectionRaw) == 0x200, "NCASectionRaw has incorrect size."); 66static_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};
62static_assert(sizeof(PFS0Superblock) == 0x200, "PFS0Superblock has incorrect size."); 79static_assert(sizeof(PFS0Superblock) == 0x200, "PFS0Superblock has incorrect size.");
63 80
64struct RomFSSuperblock { 81struct 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};
69static_assert(sizeof(RomFSSuperblock) == 0x200, "RomFSSuperblock has incorrect size."); 86static_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};
79static_assert(sizeof(BKTRHeader) == 0x20, "BKTRHeader has incorrect size."); 96static_assert(sizeof(BKTRHeader) == 0x20, "BKTRHeader has incorrect size.");
80 97
81struct BKTRSuperblock { 98struct 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};
89static_assert(sizeof(BKTRSuperblock) == 0x200, "BKTRSuperblock has incorrect size."); 106static_assert(sizeof(BKTRSuperblock) == 0x200, "BKTRSuperblock has incorrect size.");
90 107
91union NCASectionHeader { 108union 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
14namespace FileSys { 14namespace FileSys {
15 15
16struct RomFSHeader;
17
18struct IVFCLevel {
19 u64_le offset;
20 u64_le size;
21 u32_le block_size;
22 u32_le reserved;
23};
24static_assert(sizeof(IVFCLevel) == 0x18, "IVFCLevel has incorrect size.");
25
26struct 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};
33static_assert(sizeof(IVFCHeader) == 0xE0, "IVFCHeader has incorrect size.");
34
35enum class RomFSExtractionType { 16enum 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};
178static_assert(sizeof(DomainMessageHeader) == 16, "DomainMessageHeader size is incorrect"); 180static_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 {
20struct ShowError { 20struct 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.");
32struct ShowErrorRecord { 32struct 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
41struct SystemErrorArg { 41struct 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
52struct ApplicationErrorArg { 52struct 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
70namespace { 71namespace {
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.