| 124 | } |
| 125 | |
| 126 | void load(uptr ppf) |
| 127 | { |
| 128 | pxAssertMsg(!tag.isDirtyAndValid(), "Loaded a value into cache without writing back the old one!"); |
| 129 | |
| 130 | tag.setAddr(ppf); |
| 131 | if (!tag.isValidPFN()) |
| 132 | { |
| 133 | // Reading from invalid physical addresses seems to return 0 on hardware |
| 134 | std::memset(&data, 0, sizeof(data)); |
| 135 | } |
| 136 | else |
| 137 | { |
| 138 | std::memcpy(&data, reinterpret_cast<void*>(ppf & ~0x3FULL), sizeof(data)); |
| 139 | } |
| 140 | |
| 141 | tag.setValid(); |
| 142 | tag.clearDirty(); |
| 143 | } |
| 144 | |
| 145 | void clear() |
| 146 | { |
no test coverage detected