aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle
AgeCommit message (Collapse)Author
2018-10-16Implement VI ConvertScalingMode (#1475)David
* Implement VI ConvertScalingMode * Fixed push enum * Scale mode now uses Nintendo scale mode as an enum as well
2018-10-16Merge pull request #1502 from lioncash/uniquebunnei
core: Convert shared_ptr instances into unique_ptr instances where applicable for System and Cpu
2018-10-16file_sys/registered_cache: Use unique_ptr and regular pointers instead of ↵Lioncash
shared_ptrs where applicable The data retrieved in these cases are ultimately chiefly owned by either the RegisteredCache instance itself, or the filesystem factories. Both these should live throughout the use of their contained data. If they don't, it should be considered an interface/design issue, and using shared_ptr instances here would mask that, as the data would always be prolonged after the main owner's lifetime ended. This makes the lifetime of the data explicit and makes it harder to accidentally create cyclic references. It also makes the interface slightly more flexible than the previous API, as a shared_ptr can be created from a unique_ptr, but not the other way around, so this allows for that use-case if it ever becomes necessary in some form.
2018-10-15Merge pull request #1494 from DarkLordZach/aoc-signature-fixesbunnei
aoc: Fix various bugs in current AOC implementation
2018-10-15core_cpu: Make Cpu scheduler instances unique_ptrs instead of shared_ptrsLioncash
2018-10-14aoc: Read DLC base title ID from RegisteredCacheZach Hilman
Falls back to title ID + 0x1000, which is what HOS does.
2018-10-14Merge pull request #1491 from lioncash/referencebunnei
filesystem: Make CreateFactories() and InstallInterface() take a VfsFilesystem by reference
2018-10-14Merge pull request #1492 from lioncash/procbunnei
svc: Implement svcGetProcessInfo
2018-10-14Stop all threads on svcBreakDavid Marcec
This should help diagnose crashes easier and prevent many users thinking that a game is still running when in fact it's just an audio thread still running(this is typically not killed when svcBreak is hit since the game expects us to do this)
2018-10-13aoc: Return size in ListAddOnContentZach Hilman
2018-10-13svc: Implement svcGetProcessInfoLioncash
A fairly basic service function, which only appears to currently support retrieving the process state. This also alters the ProcessStatus enum to contain all of the values that a kernel process seems to be able of reporting with regards to state.
2018-10-13filesystem: Make CreateFactories() and InstallInterface() take a ↵Lioncash
VfsFilesystem instance by reference Neither of these functions alter the ownership of the provided pointer, so we can simply make the parameters a reference rather than a direct shared pointer alias. This way we also disallow passing incorrect memory values like nullptr.
2018-10-12Merge pull request #1483 from lioncash/codesetbunnei
kernel/process: Make CodeSet a regular non-inherited object
2018-10-12Merge pull request #1481 from lioncash/typobunnei
svc: Fix typos in sanitizing checks for MapMemory/UnmapMemory
2018-10-12Merge pull request #1467 from ogniK5377/svcbreak-type-fixbunnei
Fixed incorrect types for svcBreak
2018-10-12kernel/process: Make CodeSet a regular non-inherited objectLioncash
These only exist to ferry data into a Process instance and end up going out of scope quite early. Because of this, we can just make it a plain struct for holding things and just std::move it into the relevant function. There's no need to make this inherit from the kernel's Object type.
2018-10-12Merge pull request #1478 from ogniK5377/remap-invalidhandle-remapbunnei
Passing an invalid nmap handle to Remap should throw an error
2018-10-12Merge pull request #1482 from lioncash/initbunnei
thread: Remove unnecessary memset from ResetThreadContext()
2018-10-12Merge pull request #1479 from ogniK5377/nmap-revampedbunnei
Added error codes for nvmap
2018-10-12thread: Remove unnecessary memset from ResetThreadContext()Lioncash
Regular value initialization is adequate here for zeroing out data. It also has the benefit of not invoking undefined behavior if a non-trivial type is ever added to the struct for whatever reason.
2018-10-12Returned an error before processing other remapsDavid Marcec
2018-10-12Made the minimum alignment more clearDavid Marcec
2018-10-12svc: Fix typos in sanitizing checks for MapMemory/UnmapMemoryLioncash
2018-10-11Merge pull request #1474 from ogniK5377/hwopus-decodeinterleavedwithperformancebunnei
HwOpus, Implemented DecodeInterleavedWithPerformance
2018-10-11Merge pull request #1472 from lioncash/sanbunnei
svc: Add missing address range sanitizing checks to MapMemory/UnmapMemory
2018-10-11Added error codes for nvmapDavid Marcec
2018-10-11Passing an invalid nmap handle to Remap should throw an errorDavid Marcec
Added error for invalid nmap handles
2018-10-11nvhost_as_gpu: Flush CPU VAddr on UnmapBuffer.bunnei
2018-10-11HwOpus, Implemented DecodeInterleavedWithPerformanceDavid Marcec
Used by sonic ages
2018-10-10svc: Add missing address range sanitizing checks to MapMemory/UnmapMemoryLioncash
This adds the missing address range checking that the service functions do before attempting to map or unmap memory. Given that both service functions perform the same set of checks in the same order, we can wrap these into a function and just call it from both functions, which deduplicates a little bit of code.
2018-10-10kernel/thread: Use a regular pointer for the owner/current processLioncash
There's no real need to use a shared pointer in these cases, and only makes object management more fragile in terms of how easy it would be to introduce cycles. Instead, just do the simple thing of using a regular pointer. Much of this is just a hold-over from citra anyways. It also doesn't make sense from a behavioral point of view for a process' thread to prolong the lifetime of the process itself (the process is supposed to own the thread, not the other way around).
2018-10-10Changed all casts in svc_wrap.h to be static_cast insteadDavid Marcec
2018-10-10Use a better name than "dont_kill_application"David Marcec
signal_debugger seems like a more fitting name
2018-10-10Fixed incorrect types for svcBreakDavid Marcec
svcBreak reason should be a u32, not a u64.
2018-10-09Added bitfield instead of manually checking if the bit is setDavid Marcec
2018-10-09Actual kill execution when the bit isn't set, not the other way aroundDavid Marcec
2018-10-09svcBreak, Signalling to the debugger should not kill executionDavid Marcec
When loading NROs, svcBreak is called to signal to the debugger that a new "module" is loaded. As no debugger is technically attached we shouldn't be killing the programs execution.
2018-10-08Merge pull request #1456 from ogniK5377/aoc-u-fixupsbunnei
Fixed assertion due to CountAddOnContent & Casting warnings
2018-10-08Unmapping an unmapped buffer should succeedDavid Marcec
Hardware tests show that trying to unmap an unmapped buffer already should always succeed. Hardware test was tested up to 32 iterations of attempting to unmap
2018-10-08Fixed assertion due to CountAddOnContentDavid Marcec
Word count should be 3 since we're pushing a result code and a u32. Also fixed up compiler warnings due to casting
2018-10-06Merge pull request #1396 from DarkLordZach/packed-updatesbunnei
loader: Add support for packed updates
2018-10-06Added forward define for ServerPortDavid Marcec
2018-10-06Ported #4296 from citraDavid Marcec
This will allow us to easily remove the use of "NFC" in "System"
2018-10-06kernel/mutex: Amend behavior of TransferMutexOwnership()Lioncash
This was the result of a typo accidentally introduced in e51d715700a35a8f14e5b804b6f7553c9a40888b. This restores the previous correct behavior. The behavior with the reference was incorrect and would cause some games to fail to boot.
2018-10-05thread: Make the scheduler pointer a regular pointerbalika011
Conceptually, it doesn't make sense for a thread to be able to persist the lifetime of a scheduler. A scheduler should be taking care of the threads; the threads should not be taking care of the scheduler. If the threads outlive the scheduler (or we simply don't actually terminate/shutdown the threads), then it should be considered a bug that we need to fix. Attributing this to balika011, as they opened #1317 to attempt to fix this in a similar way, but my refactoring of the kernel code caused quite a few conflicts.
2018-10-05Merge pull request #1439 from lioncash/threadbunnei
kernel/thread: Make all instance variables private
2018-10-05romfs_factory: Extract packed update setter to new functionZach Hilman
2018-10-04kernel/thread: Make all instance variables privateLioncash
Many of the member variables of the thread class aren't even used outside of the class itself, so there's no need to make those variables public. This change follows in the steps of the previous changes that made other kernel types' members private. The main motivation behind this is that the Thread class will likely change in the future as emulation becomes more accurate, and letting random bits of the emulator access data members of the Thread class directly makes it a pain to shuffle around and/or modify internals. Having all data members public like this also makes it difficult to reason about certain bits of behavior without first verifying what parts of the core actually use them. Everything being public also generally follows the tendency for changes to be introduced in completely different translation units that would otherwise be better introduced as an addition to the Thread class' public interface.
2018-10-03Merge pull request #1434 from DarkLordZach/dlc-edge-casebunnei
aoc_u: Fix edge case with DLC that causes breaks
2018-10-03Merge pull request #1433 from lioncash/fsbunnei
services/fsp_srv: Amend service function table