aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle
AgeCommit message (Collapse)Author
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
2018-10-02aoc_u: Fix edge case with DLC that causes breaksZach Hilman
In some games (Splatoon 2 and Splatoon 2 Splatfest World Premiere, notably), pass offset=0 and count=2047 into the ListAddOnContent method which should return all DLCs for the current title. The (presumably) intended behavior is to successfully return a empty array but because of a < v. <= in an if statement, a failure error code was returned causing these games to svcBreak. This fixes that if statement.
2018-10-02services/fsp_srv: Amend service function tableLioncash
Adds new functions that have been given names to the table. Information is based off what is provided on Switchbrew.
2018-10-02service/lbl: Update service function tableLioncash
Amends the lbl service table to include new names of functions that were added to Switchbrew.
2018-09-30aoc_u: Extract AccumulateAOCTitleIDs to separate functionZach Hilman
2018-09-30aoc_u: Implement GetAddOnContentBaseIdZach Hilman
Command #5
2018-09-30aoc_u: Implement Count, List and Prepare AddOnContentZach Hilman
Commands #2, #3, and #7
2018-09-30Merge pull request #1338 from raven02/service_vibunnei
Implement ISystemDisplayService::GetDisplayMode
2018-09-30kernel/svc: Implement svcGetThreadContext()Lioncash
Now that we have all of the rearranging and proper structure sizes in place, it's fairly trivial to implement svcGetThreadContext(). In the 64-bit case we can more or less just write out the context as is, minus some minor value sanitizing. In the 32-bit case we'll need to clear out the registers that wouldn't normally be accessible from a 32-bit AArch32 exectuable (or process).
2018-09-30kernel/process: Add a data member to determine if a process is 64-bit or not.Lioncash
This will be necessary for the implementation of svcGetThreadContext(), as the kernel checks whether or not the process that owns the thread that has it context being retrieved is a 64-bit or 32-bit process. If the process is 32-bit, then the upper 15 general-purpose registers and upper 16 vector registers are cleared to zero (as AArch32 only has 15 GPRs and 16 128-bit vector registers. not 31 general-purpose registers and 32 128-bit vector registers like AArch64).
2018-09-30kernel/process: Make data member variables privateLioncash
Makes the public interface consistent in terms of how accesses are done on a process object. It also makes it slightly nicer to reason about the logic of the process class, as we don't want to expose everything to external code.
2018-09-30Implement ISystemDisplayService::GetDisplayModeraven02
2018-09-29Merge pull request #1412 from lioncash/movebunnei
kernel/object: Remove unnecessary std::move from DynamicObjectCast()