summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2018-12-12svc: Enable svcQueryProcessMemoryLioncash
svcQueryProcessMemory is trivial to implement, given all the behavior necessary for it is present, it just needs a handler for it.
2018-12-12svc: Write out the complete MemoryInfo structure in QueryProcessMemoryLioncash
In the previous change, the memory writing was moved into the service function itself, however it still had a problem, in that the entire MemoryInfo structure wasn't being written out, only the first 32 bytes of it were being written out. We still need to write out the trailing two reference count members and zero out the padding bits. Not doing this can result in wrong behavior in userland code in the following scenario: MemoryInfo info; // Put on the stack, not quaranteed to be zeroed out. svcQueryMemory(&info, ...); if (info.device_refcount == ...) // Whoops, uninitialized read. This can also cause the wrong thing to happen if the user code uses std::memcmp to compare the struct, with another one (questionable, but allowed), as the padding bits are not guaranteed to be a deterministic value. Note that the kernel itself also fully zeroes out the structure before writing it out including the padding bits.
2018-12-12svc: Handle memory writing explicitly within QueryProcessMemoryLioncash
Moves the memory writes directly into QueryProcessMemory instead of letting the wrapper function do it. It would be inaccurate to allow the handler to do it because there's cases where memory shouldn't even be written to. For example, if the given process handle is invalid. HOWEVER, if the memory writing is within the wrapper, then we have no control over if these memory writes occur, meaning in an error case, 68 bytes of memory randomly get trashed with zeroes, 64 of those being written to wherever the memory info address points to, and the remaining 4 being written wherever the page info address points to. One solution in this case would be to just conditionally check within the handler itself, but this is kind of smelly, given the handler shouldn't be performing conditional behavior itself, it's a behavior of the managed function. In other words, if you remove the handler from the equation entirely, does the function still retain its proper behavior? In this case, no. Now, we don't potentially trash memory from this function if an invalid query is performed.
2018-12-12vm_manager: Correct ordering of last two struct members of MemoryInfoLioncash
These should be swapped.
2018-12-12vm_manager: Amend the returned values for invalid memory queries in ↵Lioncash
QueryMemory() The kernel returns a memory info instance with the base address set to the end of the address space, and the size of said block as 0 - address_space_end, it doesn't set both of said members to zero.
2018-12-12vm_manager: Migrate memory querying to the VMManager interfaceLioncash
Gets rid of the need to directly access the managed VMAs outside of the memory manager itself just for querying memory.
2018-12-12vm_manager: Migrate MemoryInfo and PageInfo to vm_manager.hLioncash
Gets the two structures out of an unrelated header and places them with the rest of the memory management code. This also corrects the structures. PageInfo appears to only contain a 32-bit flags member, and the extra padding word in MemoryInfo isn't necessary.
2018-12-12vm_manager: Amend MemoryState enum membersLioncash
Amends the MemoryState enum to use the same values like the actual kernel does. Also provides the necessary operators to operate on them. This will be necessary in the future for implementing svcSetMemoryAttribute, as memory block state is checked before applying the attribute.
2018-12-10Merge pull request #1846 from lioncash/dirbunnei
file_sys/directory: Amend path buffer size for directory entries
2018-12-10Merge pull request #1819 from DarkLordZach/disable-addonsbunnei
patch_manager: Add support for disabling patches
2018-12-10Merge pull request #1887 from FearlessTobi/port-4476bunnei
Port citra-emu/citra#4476: "web_service: move telemetry condition from TelemetrySession constructor to destructor"
2018-12-10Merge pull request #1883 from lioncash/log-fspbunnei
service/fsp_srv: Correct returned value in GetGlobalAccessLogMode()
2018-12-10Merge pull request #1885 from lioncash/data_idbunnei
file_sys/save_data_factory: Update SaveDataSpaceId enum
2018-12-10Merge pull request #1740 from FernandoS27/shader_propsbunnei
Implemented Shader Unique Identifiers
2018-12-10Merge pull request #1872 from lioncash/proc-infoHexagon12
kernel/process: Set ideal core from metadata
2018-12-10Merge pull request #1880 from DarkLordZach/cache-storageHexagon12
savedata_factory: Add CacheStorage and delete TemporaryStorage on boot
2018-12-10Merge pull request #1876 from lioncash/vmabunnei
vm_manager: Make vma_map private
2018-12-10Merge pull request #1862 from marcosvitali/tldsbunnei
gl_shader_decompiler: TLDS/TLD4/TLD4S Reworked reflecting the source registers, bugs fixed and modularize.
2018-12-09service/fsp_srv: Correct returned value in GetGlobalAccessLogMode()Lioncash
Based off RE, the backing code only ever seems to use 0-2 as the range of values 1 being a generic log enable, with 2 indicating logging should go to the SD card. These are used as a set of flags internally. Given we only care about receiving the log in general, we can just always signify that we want logging in general.
2018-12-09Implemented a shader unique identifier.Fernando Sahmkow
2018-12-08 web_service: move telemetry condition from TelemetrySession constructor to ↵fearlessTobi
destructor Fixes an issue where Testcases couldn't be sent when Telemetry was disabled, because both things are tied closely together in the backend.
2018-12-07Merge pull request #1864 from lioncash/nrrbunnei
service/ldr: Amend layouts of NRO and NRR headers
2018-12-07file_sys/save_data_factory: Update SaveDataSpaceId enumLioncash
Amends it with missing values deduced from RE (ProperSystem being from SwitchBrew for naming) (SdCardUser wasn't that difficult to discern given it's used alongside SdCardSystem when creating the save data indexer, based off the usage of the string "saveDataIxrDbSd" nearby).
2018-12-07Merge pull request #1874 from lioncash/bindingsbunnei
hle/service, hle/sm: Minor cleanup
2018-12-07Merge pull request #1882 from FearlessTobi/backport-4418-fixbunnei
Backport review comment from citra-emu/citra#4418
2018-12-07Merge pull request #1873 from lioncash/constbunnei
loaders: Make GetFileType() a const qualified member function
2018-12-07gl_shader_decompiler: TLDS/TLD4/TLD4S Reworked reflecting the source ↵Marcos Vitali
registers, bugs fixed and modularize.
2018-12-07Backport review comment from citra-emu/citra#4418Tobias
Original reason: As Windows multi-byte character codec is unspecified while we always assume std::string uses UTF-8 in our code base, this can output gibberish when the string contains non-ASCII characters. ::OutputDebugStringW combined with Common::UTF8ToUTF16W is preferred here.
2018-12-07savedata_factory: Add support for CacheStorageZach Hilman
2018-12-06savedata_factory: Delete TemporaryStorage on startupZach Hilman
Mimics hardware behavior.
2018-12-06Merge pull request #1868 from lioncash/configbunnei
configuration/config: Use an intermediary variable for accessing players
2018-12-06Merge pull request #1875 from DarkLordZach/oss-ngword2bunnei
system_archive: Implement open source NgWord2
2018-12-06memory: Convert ASSERT into a DEBUG_ASSERT within GetPointerFromVMA()Lioncash
Given memory should always be expected to be valid during normal execution, this should be a debug assertion, rather than a check in regular builds.
2018-12-06vm_manager: Make vma_map privateLioncash
This was only ever public so that code could check whether or not a handle was valid or not. Instead of exposing the object directly and allowing external code to potentially mess with the map contents, we just provide a member function that allows checking whether or not a handle is valid. This makes all member variables of the VMManager class private except for the page table.
2018-12-06Merge pull request #1861 from lioncash/resetbunnei
kernel/svc: Correct behavior of svcResetSignal()
2018-12-06Merge pull request #1824 from ReinUsesLisp/fbcachebunnei
gl_rasterizer: Implement a framebuffer cache
2018-12-06Merge pull request #1863 from ReinUsesLisp/texs-f16bunnei
gl_shader_decompiler: Implement TEXS.F16
2018-12-06system_archive: Implement open source NgWord2Zach Hilman
2018-12-06hle/service: Replace log + UNIMPLEMENTED with UNIMPLEMENTED_MSGLioncash
Combines the two into one, shortening the amount of code here.
2018-12-06hle/service: Remove unnecessary using declarationsLioncash
Only one usage of the specified objects made use of the lack of namespacing. Given the low usage, we can just remove these.
2018-12-06hle/service, hle/sm: Compress usages of MakeResult()Lioncash
These auto-deduce the result based off its arguments, so there's no need to do that work for the compiler, plus, the function return value itself already indicates what we're returning.
2018-12-06hle/service, hle/sm: Use structured bindings where applicableLioncash
Gets rid of the need to keep the variables separate from their actual initialization spots.
2018-12-05Merge pull request #1867 from lioncash/allocbunnei
system_archive: Use a regular function pointer instead of std::function for the file-scope system archive array
2018-12-05Merge pull request #1866 from lioncash/cachebunnei
service/ldr: Deduplicate instruction cache clearing code in LoadNro()
2018-12-05yuzu/game_list_worker: Don't retrieve the file type twice in ↵Lioncash
AddFstEntriesToGameList() Similarly, here we can avoid doing unnecessary work twice by retrieving the file type only once and comparing it against relevant operands, avoiding potential unnecessary object construction/destruction.
2018-12-05yuzu/game_list_worker: Don't retrieve file type and file type strings twice ↵Lioncash
in MakeGameListEntry() While GetFileType() is indeed a getter function, that doesn't mean it's a trivial function, given some case require reading from the data or constructing other objects in the background. Instead, only do necessary work once.
2018-12-05loaders: Make GetFileType() a const qualified member functionLioncash
No implementations actually modify instance state (and it would be questionable to do that in the first place given the name), so we can make this a const member function.
2018-12-05Call shrink_to_fit after page-table vector resizing to cause crt to actually ↵heapo
lower vector capacity. For 36-bit titles saves 800MB of commit.
2018-12-05kernel/process: Set ideal core from metadataLioncash
A very trivial change. If metadata is available, the process should use it to retrieve the desired core for the process to run on.
2018-12-05configuration/config: Use an intermediary variable for accessing playersLioncash
Avoids typing the same long accessor just to retrieve player attributes.