Commit graph

1681 commits

Author SHA1 Message Date
B3n30
33b0b5163f
Merge pull request #3136 from Subv/mem_aliasing1
Kernel/Memory: Added a function to change the memory state of an address range
2018-01-24 10:17:25 +01:00
Subv
a7a5c5aa0d Kernel/IPC: Partially implement MappedBuffer translation.
Right now only MappedBuffers that only span a single page and are not aligned are implemented.

MappedBuffers are unmapped during the reply part of ReplyAndReceive. Only unmapping of ReadOnly buffers is currently implemented.
2018-01-23 08:27:00 -05:00
Subv
928202f744 Kernel/VMManager: Added a function to map a block of memory into the first available address after a given base. 2018-01-23 08:24:15 -05:00
Subv
e4f35f70ac Memory: Added a function to change the memory state of an address range.
This will be useful when implementing memory aliasing operations.
2018-01-23 08:19:47 -05:00
James Rowe
44d07574b1
Merge pull request #2882 from danzel/movie-squash
Movie (Game Inputs) recording and playback
2018-01-23 01:03:37 -07:00
James Rowe
0e8c25fdfa
Merge pull request #3361 from wwylele/ptm-new-framework
Service/PTM: convert to ServiceFramework
2018-01-22 11:57:44 -07:00
wwylele
f42f7dfcab
Service/Y2R: convert to ServiceFramework 2018-01-12 13:38:20 +02:00
Weiyi Wang
9b647d459b
Merge pull request #3324 from Subv/gspgpu
Services: Keep track of per-session data in GSPGPU
2018-01-11 20:03:46 +02:00
wwylele
9be3ce83db
Service/PTM: convert to ServiceFramework 2018-01-10 14:23:35 +02:00
Subv
34685f48dc GSP: Allow the signaling of the PDC0/1 interrupts even if the GPU right hasn't been acquired.
This was verified with a hwtest.
2018-01-06 13:51:33 -05:00
Weiyi Wang
a66e4585a0
Merge pull request #3304 from wwylele/hid-new-framework
HID: convert to ServiceFramework
2018-01-04 11:04:57 +02:00
Subv
aa90198ec5 Services: Make SessionDataBase's destructor virtual. 2018-01-03 10:52:46 -05:00
Subv
75f68c4860 Services/GSP: Mark the thread ids as unused when a GSP session is destroyed.
This fixes the games that call RegisterInterruptRelayQueue and UnregisterInterruptRelayQueue frequently.
2018-01-02 12:10:58 -05:00
Subv
d17f148e48 Services/GSP: Assign a thread id to each connected session when the session is created.
Most applications call AcquireRight before calling RegisterInterruptRelayQueue so we can't assign the thread id there.
This fixes the bug with LLE applets not launching properly.
2018-01-02 12:07:26 -05:00
Weiyi Wang
3f7f2b42c0
Merge pull request #3257 from tgsm/y2r-ipc
y2r: convert some functions to use IPC helper
2018-01-02 12:55:56 +02:00
tgsm
ee779a5a4d y2r: convert some functions to use IPC helper 2018-01-01 22:46:34 -05:00
wwylele
7daa2a51d7
Kernel/SVC: fix typo in GetResourceLimitLimitValues 2017-12-30 23:42:32 +02:00
Subv
fbef978b98 GSP: Return the correct result code if AcquireRight is called multiple times from the same thread. 2017-12-24 12:15:01 -05:00
Subv
68fc3b36e6 HLE/GSP: Only trigger GSP interrupts for the current active GSP thread.
This is true for all interrupts except PDC0 and PDC1, which should be triggered for all registered threads.

TODO: The real GSP module seems to only trigger PDC0 after updating the screens (both top and bottom). PDC1 doesn't seem to be triggered at all.
2017-12-24 12:15:00 -05:00
Subv
05a44ed353 HLE/GSP: Keep track of the thread that currently has the GPU right.
This thread is the only one for which the GSP interrupts should be signaled, except for the PDC0/1 interrupts.
2017-12-24 12:14:59 -05:00
Subv
aabb07cca4 HLE/GSP: Make RegisterInterruptRelayQueue work in a per-session basis.
The registered interrupt event is unique to each session that calls RegisterInterruptRelayQueue, and only that event should be reset when UnregisterInterruptRelayQueue is called.
2017-12-24 12:14:58 -05:00
Sebastian Valle
c3c684cd2b
Merge pull request #3301 from Subv/exitprocess2
Kernel/SVC: Partially implemented svcExitProcess.
2017-12-23 10:49:36 -05:00
wwylele
bf23f8d542 HID: convert to ServiceFramework 2017-12-22 12:41:41 +02:00
Sebastian Valle
ae42267cc7
Merge pull request #3307 from Subv/gsp_new_frame
HLE: Convert GSP_GPU to ServiceFramework.
2017-12-21 10:31:41 -05:00
Subv
3652809408 HLE: Convert GSP_GPU to ServiceFramework.
The only functional change is the error handling of GSP_GPU::ReadHWRegs function. We previously didn't return error codes (not even for success). The new returns were found by reverse engineering the GSP module.
2017-12-21 10:30:22 -05:00
Merry
3f37976fd3
Merge pull request #3309 from wwylele/cro-session-slot
ldr_ro: use ServiceFramework's session slot for client slot
2017-12-18 18:22:39 +00:00
Merry
32b2d5bdfe
Merge pull request #3253 from lioncash/mic-ipc
mic_u: Migrate to the new service framework
2017-12-18 14:34:47 +00:00
danzel
0238e0c5e7 Convert Movie to a class with a static instance, and other fixes based on B3n30 feedback. 2017-12-17 17:55:56 +13:00
danzel
04541150b1 Movie (recorded inputs) playback and recording. SDL has command lines to control it. 2017-12-17 16:43:09 +13:00
wwylele
eeec04fcaa ldr_ro: use ServiceFramework's session slot for client slot 2017-12-17 01:43:12 +02:00
Subv
f4b595331f GSP/GPU: Make FrameBufferInfo::active_fb use the entire u32 instead of just one bit.
The GSP module reads the entire 32 bit word from this field to determine the framebuffer.
2017-12-16 13:33:42 -05:00
Sebastian Valle
125f5d1e68
Merge pull request #3284 from Subv/session_data
HLE/Services: Allow specifying a SessionData template parameter to ServiceFramework.
2017-12-16 09:14:34 -05:00
Lioncash
d613c6f74f mic_u: Migrate to the new service framework 2017-12-15 19:22:58 -05:00
Subv
1856aa7b32 Kernel/SVC: Partially implemented svcExitProcess.
Terminating processes with ready threads is not currently implemented and will assert. It is currently unknown how the 3DS kernel stops ready threads or threads running in another core.
2017-12-15 15:47:33 -05:00
Sebastian Valle
4fd28e715e
Merge pull request #3252 from Subv/fs_user
HLE/FS: Converted some functions to use IPCHelpers
2017-12-15 15:40:36 -05:00
Sebastian Valle
4b4e1861c7
Merge pull request #3265 from Subv/getappletinfo
HLE/APT: Implement GetAppletInfo for LLE applets.
2017-12-15 10:29:53 -05:00
Subv
9a22e8d9ed HLE/APT: Implement GetAppletInfo for LLE applets.
Calling this function for AppletId::Application is not yet implemented because we don't support launching applications from APT.
2017-12-14 19:30:12 -05:00
Subv
674bd550a4 HLE/APT: Stubbed FinishPreloadingLibraryApplet.
An applet is considered "loaded" when the parent application calls this function.
2017-12-14 19:30:11 -05:00
Subv
b5bfaaae29 HLE/FS: Use the SessionData parameter of ServiceFramework in the File class. 2017-12-14 18:24:03 -05:00
Subv
daecd812b0 HLE/Services: Allow specifying a SessionData template parameter to ServiceFramework.
Some services can have multiple clients at the same time, and they identify the different clients using the server session as a key.
This parameter (if present) should be a structure that contains the per-session data for each service.
The data can be retrieved using ServiceFramework::GetSessionData(session)
2017-12-14 18:24:02 -05:00
bunnei
4b8a7eb1ca
Merge pull request #3192 from wwylele/cro-new-frame
ldr_ro: convert to ServiceFramework
2017-12-13 22:30:03 -05:00
bunnei
c23c39132a
Merge pull request #3239 from wwylele/cam-new-frame
cam: convert to ServiceFramework
2017-12-13 22:27:58 -05:00
bunnei
9b598d936d
Merge pull request #3248 from wwylele/ir-new-frame
ir: convert to ServiceFramework
2017-12-13 22:24:51 -05:00
Subv
2552efac01 HLE/FS: Use PopEnum in OpenFile. 2017-12-13 19:51:36 -05:00
Subv
d790ac465c HLE/FS: Use IPCHelper in CreateFile. 2017-12-13 19:51:21 -05:00
Subv
92e71aff57 HLE/FS: Use IPCHelper in DeleteDirectoryRecursively. 2017-12-12 17:48:15 -05:00
Subv
67382e46c0 HLE/FS: Use IPCHelper in DeleteDirectory. 2017-12-12 17:48:12 -05:00
Subv
b631f77d11 HLE/FS: Use IPCHelper in RenameFile. 2017-12-12 17:48:10 -05:00
Subv
a6c69bfca0 HLE/FS: Use IPCHelper in DeleteFile. 2017-12-12 17:48:07 -05:00
Subv
e9a70ce2fc HLE/FS: Use IPCHelper in OpenFileDirectly. 2017-12-12 17:48:03 -05:00
Sebastian Valle
6afd091c37
Merge pull request #3235 from Subv/dlp3
HLE/FS: Implemented FSFile::OpenSubFile.
2017-12-12 17:01:18 -05:00
MerryMage
fb2d34997e core/arm: Backend-specific context implementations 2017-12-12 19:12:03 +00:00
Subv
c9ddd5b0ae HLE/FS: Implemented FSFile::OpenSubFile.
The File class now holds a list of connected sessions along with data unique to each session.

A subfile is a window into an existing file. They have a few limitations compared to normal files:

* They can't be written to.
* They can't be flushed.
* Their size can not be changed.
* New subfiles can't be created from another subfile.
2017-12-12 13:34:02 -05:00
Sebastian Valle
b4bb74a101
Merge pull request #3268 from lioncash/ipc-enum
ipc_helpers: Add member functions for pushing and popping strongly typed enums
2017-12-12 12:52:02 -05:00
Merry
5c802d35ef
Merge pull request #3262 from lioncash/warn
common/core: Silence initialization order warnings
2017-12-11 19:52:53 +00:00
Sebastian Valle
1e3113b1b2
Merge pull request #3251 from Subv/fs_numseeds
HLE/FS: Stubbed GetNumSeeds to always return 0 seeds.
2017-12-11 14:13:10 -05:00
Sebastian Valle
4a3d7863fa
Merge pull request #3250 from Subv/news_notifications
HLE/News: Stubbed GetTotalNotifications to always return 0 notifications.
2017-12-11 14:12:22 -05:00
Lioncash
91a804707b ipc_helpers: Add member functions for pushing and popping strongly typed enums
Alleviates the need to static_cast to an enum type at the call sites of the Push and Pop calls.

We only allow strongly typed enums, as they have a defined type of int
by default if an underlying type isn't explicitly specified, whereas
with regular enums, if an underlying type isn't specified, an
implementation-defined  type is used that can fit all the enumeration
values.
2017-12-10 23:10:00 -05:00
Lioncash
c31f932afe common/core: Silence initialization order warnings 2017-12-10 19:50:45 -05:00
B3n30
2146311ad1
Merge pull request #3091 from Subv/hle_request_delat
Kernel/IPC: Add a small delay after each SyncRequest to prevent thread starvation.
2017-12-10 19:59:19 +01:00
Subv
0ac82af50f HLE/FS: Stubbed GetNumSeeds to always return 0 seeds.
We don't yet implement the SEEDDB store.
This number is supposed to be modified by the AddSeed function (0x087A0180) but there's too little info about it on 3dbrew.
2017-12-10 13:08:04 -05:00
Subv
98e3872353 Kernel/IPC: Use 39 microseconds for the SendSyncRequest delay approximation.
As measured by the time it takes for to return when performing the SetLcdForceBlack IPC request to the GSP:GPU service in a n3DS with firmware 11.6

See https://gist.github.com/ds84182/ecdbbd25b56a29bd4e5b32a7544b8e92 for the source code of the test.
2017-12-10 13:00:05 -05:00
Sebastian Valle
c72262d7e3
Merge pull request #3246 from Steveice10/pxidev
HLE: Add pxi:dev stub.
2017-12-10 12:21:35 -05:00
Sebastian Valle
2859b98884
Merge pull request #3234 from Subv/dlp2
HLE/FS: Implemented FS::GetProgramLaunchInfo.
2017-12-10 08:58:08 -05:00
Sebastian Valle
951b023a3d
Merge pull request #3259 from lioncash/init-order
ac: Correct constructor initialization order
2017-12-10 08:46:11 -05:00
Yuri Kunde Schlesner
312281fd61
Merge pull request #3256 from yuriks/move-svc
HLE: Move svc.cpp to kernel/
2017-12-10 01:13:46 -05:00
Lioncash
bca58546b1 ac: Correct constructor initialization order
The parent class constructor will always run before the
class' initializers for member variables.
2017-12-09 23:48:40 -05:00
Yuri Kunde Schlesner
21188f5683 HLE: Move SVC handlers to the Kernel namespace 2017-12-09 20:32:58 -08:00
Yuri Kunde Schlesner
ad71e23f23 HLE: Move svc.{cpp,h} to kernel/ 2017-12-09 18:10:47 -08:00
Subv
7d038b9bd8 HLE/FS: Implemented FS::GetProgramLaunchInfo.
This function is used by the DLP system module during the DLPSRVR initialization.
2017-12-09 18:46:34 -05:00
Dragios
8b864a74e9 Add new AppID (eShop) 2017-12-10 07:38:56 +08:00
Dragios
ebb731b9a1 Fill up the rest of Applet IDs 2017-12-10 07:38:23 +08:00
Steveice10
16b26e73c9 HLE: Add pxi:dev stub. 2017-12-09 14:45:56 -08:00
Subv
dd0bd5520d HLE/News: Stubbed GetTotalNotifications to always return 0 notifications.
This prevents an invalid read loop on games that call it.
2017-12-09 11:28:57 -05:00
wwylele
35b1306941 ir_user: convert to ServiceFramework 2017-12-09 18:14:51 +02:00
wwylele
4812e98e05 ir_rst: convert to ServiceFramework
also fix the wrong header in Shutdown
2017-12-09 18:14:51 +02:00
wwylele
f3e41fe941 ir_u: convert to ServiceFramework 2017-12-09 12:34:23 +02:00
wwylele
5026480b36 svc: correct GetProcessInfo(20) 2017-12-08 21:28:48 +02:00
Sebastian Valle
69caf8c5dc
Merge pull request #3236 from Tilka/block_name
cfg: refer to ConsoleModelBlockID by name
2017-12-08 09:01:22 -05:00
wwylele
07acc6ceab cam: convert to ServiceFramework 2017-12-08 11:20:48 +02:00
Tillmann Karras
6752576de9 cfg: refer to ConsoleModelBlockID by name 2017-12-08 06:56:00 +00:00
Subv
e90daa6a4f Kernel/IPC: Add a small delay after each SyncRequest to prevent thread starvation.
In a real 3DS, threads that call svcSyncRequest are put to sleep until the server responds via svcReplyAndReceive. Our HLE services don't implement this mechanism and are effectively immediate from the 3DS's point of view. This commit makes it so that we at least simulate the IPC delay.

Specific HLE handlers might need to put their callers to sleep for a longer period of time to simulate IO timings. This is their responsibility but doing so is currently not implemented.

See https://gist.github.com/ds84182/4a7690c5376e045cab9129ca4185bbeb for a test that was not passing before this commit.
2017-12-07 22:40:15 -05:00
Lioncash
ff96c5dba0 svc: Provide names for svc 0x59 and 0x5A
Updated according to 3dbrew.
2017-12-07 22:14:55 -05:00
wwylele
2b907dadf4 cro_helper: add todo about process handle 2017-12-07 16:20:15 +02:00
wwylele
9749a43cc4 ldr_ro: create per-client storage; pass process where needed 2017-12-07 16:01:01 +02:00
wwylele
de8dbbf0b6 ldr_ro: convert to ServiceFramework 2017-12-07 15:59:54 +02:00
MerryMage
a9af4be363 ldr_ro: Use ranged instruction cache invalidation 2017-12-06 20:59:09 +00:00
Sebastian Valle
4b1253b51a
Merge pull request #3226 from Subv/arbiter_timeout
HLE/AddressArbiter: Remove threads that were awoken by timeout from an Arbiter's waitlist
2017-12-06 12:11:23 -05:00
Subv
8c16b90eae HLE/AddressArbiter: Remove threads that were awoken by timeout from the arbiter's waitlist when using WaitIfLessThanWithTimeout and DecrementAndWaitIfLessThanWithTimeout.
Fixes a regression introduced in #3096
2017-12-06 09:06:45 -05:00
B3n30
b9db9af9e8 fixup! Applet: Print unknown AppletId on ASSERT 2017-12-06 13:52:21 +01:00
B3n30
ddc59e3881 Applet: Print unknown AppletId on ASSERT 2017-12-06 12:41:46 +01:00
CDAGaming
2052a201c0 Fix Clang Format Error 2017-12-05 14:21:59 -05:00
Subv
3d000c834b Kernel/Threads: Implement an SleepClientThread function for HLERequestContext-based services to make performing async tasks on the host while in an HLE service function easier.
An HLE service function that wants to perform an async operation should put the caller guest thread to sleep using SleepClientThread, passing in a callback to execute when the thread is resumed.
SleepClientThread returns a Kernel::Event that should be signaled to resume the guest thread when the host async operation completes.
2017-12-05 14:21:59 -05:00
wwylele
6050d000fa fs: correct header code; remove dead code 2017-12-05 16:34:01 +02:00
Yuri Kunde Schlesner
9f806384f5
Merge pull request #3190 from Subv/errf_srv_framework
HLE/Services: Convert err:f to the new ServiceFramework.
2017-12-05 00:49:44 -05:00
bunnei
56db8e0858
Merge pull request #3173 from shinyquagsire23/nfc-o3ds-stub
Services/NFC: Stub StartTagScanning as it should be for o3DS
2017-12-04 16:11:54 -05:00
Subv
30bffb1964 HLE/Services: Convert err:f to the new ServiceFramework. 2017-12-04 14:03:11 -05:00
B3n30
3249187ad6
Merge pull request #3181 from wwylele/ipc-handle-split
ipc_helper: split PushMoveObjects and PushCopyObjects
2017-12-04 18:49:42 +01:00
wwylele
fda023c9fa ipc_helper: split PushMoveObjects and PushCopyObjects 2017-12-04 19:46:44 +02:00
wwylele
ff00cb391a service/ptm: add missing % in logging 2017-12-03 11:52:42 +02:00