Commit Graph

4539 Commits

Author SHA1 Message Date
bunnei
91f10a1460 semaphore: Updates for Switch. 2018-01-06 15:55:40 -05:00
bunnei
6f6d9af408 lm: Assert on unsupported multi-message. 2018-01-06 14:41:56 -05:00
bunnei
0e978bdd50 svc: Implement WaitSynchronization for a single handle. 2018-01-06 14:34:32 -05:00
bunnei
57f42e5887 svc: Refactor LockMutex code to use WaitSynchronization1. 2018-01-06 14:19:28 -05:00
bunnei
d083c07c46 lm: Improve Log() to format a useful string. 2018-01-05 00:45:13 -05:00
bunnei
0dbc8f3577 svc: Add missing string_util include. 2018-01-04 19:45:15 -05:00
bunnei
dcfbad2129 cmake: Don't compile Dynarmic as it's unused. 2018-01-04 17:01:02 -05:00
bunnei
24f10a20e7 core: Increase tight_loop 100x for speed. 2018-01-04 16:52:16 -05:00
bunnei
5e262a4a68 citra_qt: Remove VFP registers, since this isn't used anyways and caused an assert. 2018-01-04 13:52:29 -05:00
bunnei
b38223f662 arm_unicorn: Load/release unicorn DLL. 2018-01-04 13:40:01 -05:00
bunnei
738845cc0e externals: Use unicorn DLL instead of static lib. 2018-01-04 13:15:29 -05:00
bunnei
3f8b9181b5 unicorn: Use for arm interface on Windows. 2018-01-04 00:13:23 -05:00
bunnei
6e9d66fd3a arm_dynarmic: More cleanup. 2018-01-04 00:09:12 -05:00
bunnei
914ebee67a core: Remove unicorn_dynload. 2018-01-03 22:10:31 -05:00
bunnei
aa7e061e71 arm_dynarmic: Gut interface until dynarmic is ready for general use. 2018-01-03 22:10:11 -05:00
bunnei
b172f0d770 arm: Remove SkyEye/Dyncom code that is ARMv6-only. 2018-01-02 22:24:12 -05:00
bunnei
f0eab802e8 vm_manager: Use a more reasonable MAX_ADDRESS size. 2018-01-02 21:37:56 -05:00
bunnei
81a8a57ce2 svc: Remove unnecessary "svc" prefix to naming scheme. 2018-01-02 20:47:26 -05:00
bunnei
fe11b51545 pctl: Remove duplicate InstallInterfaces function. 2018-01-02 20:41:20 -05:00
bunnei
480906fe1b hle: Move SVC code to kernel namespace. 2018-01-02 20:40:30 -05:00
bunnei
72f671fd7a svc: Improve svcGetInfo. 2018-01-01 16:01:06 -05:00
bunnei
e9710a2cf7 vm_manager: Stub out a bunch of interfaces used by svcGetInfo. 2018-01-01 15:59:31 -05:00
bunnei
dc4fe2fbd5 svc: Fix string formatting for CreateThread. 2018-01-01 15:48:08 -05:00
bunnei
dd3a237981 cmake: Add missing object_address_table. 2018-01-01 15:41:05 -05:00
bunnei
93480b10ef core/video_core: Fix a bunch of u64 -> u32 warnings. 2018-01-01 15:40:35 -05:00
bunnei
9e8608e8b1 svc: Stub out svcWaitSynchronization.
- This does not matter until we implement other kernel objects, mutexes use svcLockMutex for waiting.
2018-01-01 14:47:57 -05:00
bunnei
aa7c824ea4 svc: Implement svcExitProcess. 2018-01-01 14:38:34 -05:00
bunnei
9b8afed5f7 svc: Implement svcUnlockMutex. 2018-01-01 14:04:36 -05:00
bunnei
b9950cd4b0 svc: Implement svcLockMutex. 2018-01-01 14:02:26 -05:00
bunnei
d0046b120a kernel: Add ObjectAddressTable class. 2018-01-01 13:25:37 -05:00
bunnei
1cb978eb82 thread: Keep track of the initially created handle.
This is kinda crufty, but we need it for now to update guest state variables.
2017-12-31 17:23:36 -05:00
bunnei
45debfe4fd svc: Implement svcExitThread. 2017-12-31 16:11:27 -05:00
bunnei
9d0c3bda7f svc: Implement svcCreateThread. 2017-12-31 16:10:01 -05:00
bunnei
001091fa72 svc: Cleanup svcGetThreadPriority. 2017-12-31 16:06:11 -05:00
bunnei
283c63645d svc: Stub out svcGetCurrentProcessorNumber. 2017-12-31 16:01:04 -05:00
bunnei
c7983e970c errors: Define missing kernel error codes. 2017-12-31 15:59:00 -05:00
bunnei
8a7f8f3e2c svc: Implement svcSetThreadPriority. 2017-12-31 15:58:16 -05:00
bunnei
960e8dc5e5 svc: Change SignalProcessWideKey to a stub. 2017-12-31 15:55:11 -05:00
bunnei
f24531b1a2 function_wrappers: Cleanup, fix warnings, remove unused code. 2017-12-31 15:46:30 -05:00
bunnei
3a91a62b8f svc: Implement svcUnmapMemory. 2017-12-31 15:22:49 -05:00
bunnei
a3228d9b77 svc: Minor cleanups. 2017-12-30 13:40:28 -05:00
bunnei
8ab33616ac svc: Implement svcStartThread. 2017-12-30 13:37:07 -05:00
bunnei
b6087e35b5 thread: Main thread should set thread handle to reg 1. 2017-12-30 12:10:58 -05:00
bunnei
7ccd8de863 thread: Remove THUMB mode flag. 2017-12-30 12:08:26 -05:00
bunnei
eed4f2e229 thread: Main thread should be ready by default, all others dormant. 2017-12-30 12:05:10 -05:00
bunnei
ebd4b1422d kernel: Various 64-bit fixes in memory/process/thread 2017-12-29 13:27:58 -05:00
bunnei
1d01ffccb8 applet_oe: Stub out a bunch of interfaces necessary for boot. 2017-12-29 00:44:46 -05:00
bunnei
30e98fae3f controller: Implement DuplicateSession. 2017-12-29 00:39:34 -05:00
bunnei
dcdaac8a0b kernel: Fix implementation of ConvertSessionToDomain. 2017-12-29 00:36:22 -05:00
bunnei
b67cbb8d92 ap, aoc_u: Minor cleanup. 2017-12-28 23:45:44 -05:00
bunnei
fcd4c1a0dc service: Add empty interface for pctl:a. 2017-12-28 23:44:39 -05:00
bunnei
e17c0019c5 kernel: Add basic support for Domain object. 2017-12-28 23:30:21 -05:00
bunnei
834fa5db65 kernel: Add SyncObject primitive, use it for ClientSession. 2017-12-28 23:12:28 -05:00
bunnei
6e021f22b8 svc: Implement MapMemory. 2017-12-28 21:38:38 -05:00
bunnei
3421e1617e process: Add method to mirror a memory region. 2017-12-28 21:35:49 -05:00
bunnei
7618b5237d svc: Implement SetHeapSize. 2017-12-28 15:29:52 -05:00
bunnei
ad073846bc service: Clean up apm/lm/applet_oe/controller/sm ctor/dtor. 2017-12-28 15:27:30 -05:00
bunnei
16fb1c8fe7 service: Halt on ReportUnimplementedFunction and improve output log. 2017-12-28 15:24:59 -05:00
bunnei
d5995fd30f service: Add empty interface for aoc:u. 2017-12-28 15:24:05 -05:00
bunnei
3597650f22 service: Return proper result code for IPC::CommandType::Close. 2017-10-31 19:30:05 -04:00
bunnei
34571f4d2e hle: Use Switch formatted result codes. 2017-10-31 19:26:11 -04:00
bunnei
266c1c8020 svc: Implement GetThreadId and GetProcessId. 2017-10-23 00:15:45 -04:00
bunnei
45db4bb3ea logging: Rename category "Core_ARM11" to "Core_ARM". 2017-10-23 00:13:12 -04:00
bunnei
3f0caefdf5 nso: Load more common submodules. 2017-10-22 23:50:26 -04:00
bunnei
9ceb0d9381 memory: Support 32-bit paging, move heap address space up. 2017-10-22 23:17:59 -04:00
bunnei
dcd6bb82f7 hle: Fix QueryMemory response for MemoryInfo. 2017-10-19 23:00:46 -04:00
bunnei
716e5cf070 lm: Implement lm::Initialize and Logger::log. 2017-10-18 21:41:24 -04:00
bunnei
654fae29c1 hle_ipc: Only copy necessary fields for outgoing command buffer. 2017-10-18 21:39:48 -04:00
bunnei
b283cf7348 hle_ipc: Parse out buffer X/A/B/B descriptors from incoming command buffer. 2017-10-18 21:38:01 -04:00
bunnei
03bf0739a4 service: Add CreatePort function (that does not register/install). 2017-10-18 21:34:19 -04:00
bunnei
97d52b9f89 memory: Print addresses as 64-bit. 2017-10-18 21:29:23 -04:00
bunnei
3f2a738d34 ipc_helpers: Fix alignment (was wrong as a result of a dynarmic bug). 2017-10-17 18:03:47 -04:00
bunnei
d3cc369618 service: Print correct command ID on unimplemented function. 2017-10-17 18:02:08 -04:00
bunnei
4fb1b24d68 hle: Implement ConvertSessionToDomain, various cleanups. 2017-10-15 01:24:22 -04:00
bunnei
746c2a3ae7 core: Refactor MakeMagic usage and remove dead code. 2017-10-15 00:11:38 -04:00
bunnei
72eeca1f03 hle: Add service stubs for apm and appletOE. 2017-10-14 22:50:04 -04:00
bunnei
960a1416de hle: Initial implementation of NX service framework and IPC. 2017-10-14 22:18:42 -04:00
bunnei
12c7469d81 nso: Add a log for loading submodules. 2017-10-14 17:37:51 -04:00
bunnei
78bc2b70bb svc: Some logging cleanup. 2017-10-14 17:35:21 -04:00
bunnei
e98a3ca171 svc: Update MemoryInfo flags for 64-bit. 2017-10-14 17:31:25 -04:00
bunnei
cb889f9220 svc: Initial nx impl. for QueryMemory, ConnectToPort, SendSyncRequest, etc. 2017-10-14 17:30:07 -04:00
bunnei
d62750c46d Remove more 3DS-specific code. 2017-10-13 17:56:42 -04:00
bunnei
15983dcfdc Remove more 3DS-specific code. 2017-10-12 21:45:06 -04:00
bunnei
dbd15b0d10 Remove more 3DS-specific code. 2017-10-12 21:29:53 -04:00
bunnei
72b03025ac Remove lots more 3DS-specific code. 2017-10-12 21:21:49 -04:00
bunnei
0906de9a14 hle: Remove a large amount of 3ds-specific service code. 2017-10-10 17:32:14 -04:00
bunnei
b1d5db1cf6 Merge remote-tracking branch 'upstream/master' into nx
# Conflicts:
#	src/core/CMakeLists.txt
#	src/core/arm/dynarmic/arm_dynarmic.cpp
#	src/core/arm/dyncom/arm_dyncom.cpp
#	src/core/hle/kernel/process.cpp
#	src/core/hle/kernel/thread.cpp
#	src/core/hle/kernel/thread.h
#	src/core/hle/kernel/vm_manager.cpp
#	src/core/loader/3dsx.cpp
#	src/core/loader/elf.cpp
#	src/core/loader/ncch.cpp
#	src/core/memory.cpp
#	src/core/memory.h
#	src/core/memory_setup.h
2017-10-09 23:56:20 -04:00
bunnei
23ce4f5afc loader: Various improvements for NSO/NRO loaders. 2017-10-09 21:39:32 -04:00
Dragios
83e5f639e6 Change command header in nwm::UDS Initialize function 2017-10-09 09:10:48 +08:00
Sebastian Valle
20e19a340c Merge pull request #2991 from Subv/getpointer
Remove more usages of GetPointer.
2017-10-08 10:11:12 -05:00
Sebastian Valle
74d4050924 Merge pull request #2975 from shinyquagsire23/archive-ncch-container-and-override
file_sys/archive_ncch: use NCCHs/.apps instead of .romfs files, NCCH section override
2017-10-06 12:19:20 -05:00
bunnei
33ea53094c loader: Add support for NRO, as well as various fixes and shared linker. 2017-10-05 23:30:08 -04:00
Sebastian Valle
84c344b9b1 Merge pull request #2953 from Subv/applet_launch
HLE/APT: Always set up the APT parameter when starting a library applet.
2017-10-04 15:01:58 -05:00
Subv
97f262c1f5 SVC: Removed GetPointer usage in the GetResourceLimit functions. 2017-10-04 14:04:27 -05:00
Subv
46fc7595b4 SVC: Remove GetPointer usage in CreatePort. 2017-10-04 14:04:03 -05:00
Subv
7b09b30ef1 SVC: Replace GetPointer usage with ReadCString in ConnectToPort. 2017-10-04 14:03:59 -05:00
Subv
3c0113632d SVC: Replace GetPointer usage with ReadBlock in OutputDebugString. 2017-10-04 12:30:33 -05:00
Subv
0cfb231e00 SVC: Replace GetPointer usage with Read32 in ReplyAndReceive. 2017-10-04 12:30:33 -05:00
Subv
b863d6c860 SVC: Replace GetPointer usage with Read32 in WaitSynchronizationN. 2017-10-04 12:30:32 -05:00
Subv
7772fc0731 Memory: Remove all GetPointer usages from the GDB stub. 2017-10-04 11:33:32 -05:00
Huw Pascoe
b3b34a1e76 Extracted the attribute setup and draw commands into their own functions 2017-10-04 01:08:29 +01:00
bunnei
d454364bca nso: Fixes to support homebrew NSOs without a MOD header. 2017-10-03 18:30:02 -04:00
bunnei
15c7641bef Merge pull request #2977 from Subv/shmem_create
SharedMemory: Don't take over and unmap the source memory block when creating a shared memory, just reference it
2017-10-03 16:21:49 -04:00
Subv
b18589ecf7 Kernel/SharedMemory: Don't take over and unmap the source memory block when creating a shared memory, just reference it.
Also reference the right offset into the backing block for the requested address.
2017-10-02 15:16:16 -05:00
Sebastian Valle
30fabc41c6 Merge pull request #2971 from Subv/per_process_memops
Memory: Add overloads for ReadBlock and WriteBlock that operate on a specific process.
2017-10-01 14:44:06 -05:00
Subv
1f2de7501b Memory: Make WriteBlock take a Process parameter on which to operate 2017-10-01 14:18:36 -05:00
Subv
811c01e5fe Memory: Make ReadBlock take a Process parameter on which to operate 2017-10-01 14:18:36 -05:00
Subv
8217ed7acb Kernel/Thread: Added a helper function to get a thread's command buffer VAddr. 2017-10-01 14:18:35 -05:00
Sebastian Valle
9c123c29a6 Merge pull request #2974 from Subv/nim_event
Services/NIM: Implement CheckForSysUpdateEvent.
2017-10-01 14:16:14 -05:00
shinyquagsire23
4887d18591 file_sys, loader: add support for reading TMDs to determine app paths 2017-10-01 10:54:02 -06:00
shinyquagsire23
8e10c9bb2e file_sys: add class for Title Metadata (TMD) 2017-10-01 10:53:45 -06:00
shinyquagsire23
e21f2348e7 file_sys/ncch_container: add RomFS, ExeFS override to allow for backward compatibility with existing .romfs system archive dumps 2017-10-01 10:53:18 -06:00
shinyquagsire23
c93e5ecfe6 file_sys/archive_ncch: use NCCHContainer instead of loading .romfs files 2017-10-01 10:53:04 -06:00
bunnei
6377585edb arm_interface: Set TLS address for dynarmic core. 2017-09-30 14:34:03 -04:00
bunnei
8c92435ded nso: Refactor and allocate .bss section. 2017-09-30 14:33:58 -04:00
bunnei
fa1c7c7ee1 process: Support loading multiple codesets. 2017-09-30 14:33:11 -04:00
bunnei
6bafd3f4f7 loader: Add support for loading an NSO. 2017-09-30 14:32:53 -04:00
bunnei
9eb4888df7 externals: Add lz4. 2017-09-30 14:30:04 -04:00
bunnei
46297c9653 memory: Log with 64-bit values. 2017-09-30 14:28:54 -04:00
bunnei
c5ce5c06e4 kernel: Various threading fixes to support 64-bit addressing. 2017-09-30 14:28:54 -04:00
bunnei
f01472a5ff core: Various changes to support 64-bit addressing. 2017-09-30 14:28:54 -04:00
bunnei
3411883fe3 arm: Use 64-bit addressing in a bunch of places. 2017-09-30 14:28:53 -04:00
bunnei
1c4f9e822c elf: Check if machine is ARM. 2017-09-30 14:28:53 -04:00
Subv
5bae5a48b9 Services/NIM: Implement CheckForSysUpdateEvent.
Implementation verified by reverse engineering.
This lets the Home Menu boot without crashing on startup.
2017-09-30 13:21:45 -05:00
Huw Pascoe
529f4a0131 Moved down_count to CoreTiming 2017-09-30 17:38:14 +01:00
B3n30
afb1012bcd Services/UDS: Handle the rest of the connection sequence. (#2963)
Services/UDS: Handle the rest of the connection sequence.
2017-09-30 18:18:45 +02:00
Sebastian Valle
7056b9c46a Merge pull request #2946 from Subv/home_menu_apt
Implement PrepareToStartNewestHomeMenu and fixed an APT regression.
2017-09-30 10:47:42 -05:00
Sebastian Valle
db752b52e8 Merge pull request #2967 from Subv/thread_wakeup_callbacks
Kernel/Threads: When putting a thread to wait, specify a function to execute when it is awoken
2017-09-30 09:12:18 -05:00
Huw Pascoe
a13ab958cb Fixed type conversion ambiguity 2017-09-30 09:34:35 +01:00
bunnei
b07af7dda8 Merge pull request #2961 from Subv/load_titles
Loaders: Don't automatically set the current process every time we load an application.
2017-09-29 14:58:42 -04:00
Subv
8432749db7 Kernel/Threads: When putting a thread to wait, specify a function to execute when it is awoken.
This change makes for a clearer (less confusing) path of execution in the scheduler, now the code to execute when a thread awakes is closer to the code that puts the thread to sleep (WaitSynch1, WaitSynchN). It also allows us to implement the special wake up behavior of ReplyAndReceive without hacking up WaitObject::WakeupAllWaitingThreads.

If savestates are desired in the future, we can change this implementation to one similar to the CoreTiming event system, where we first register the callback functions at startup and assign their identifiers to the Thread callback variable instead of directly assigning a lambda to the wake up callback variable.
2017-09-28 11:53:32 -05:00
Sebastian Valle
0d42706a7b Merge pull request #2907 from Subv/warnings3
Disable unary operator- on Math::Vec2/Vec3/Vec4 for unsigned types.
2017-09-27 15:45:38 -05:00
Subv
a321bce378 Disable unary operator- on Math::Vec2/Vec3/Vec4 for unsigned types.
It is unlikely we will ever use this without first doing a Cast to a signed type.
Fixes 9 "unary minus operator applied to unsigned type, result still unsigned" warnings on MSVC2017.3
2017-09-27 09:06:41 -05:00
Subv
7f48aa8d25 Loaders: Don't automatically set the current process every time we load an application.
The loaders will now just create a Kernel::Process, construct it and return it to the caller, which is responsible for setting it as the current process and configuring the global page table.
2017-09-26 18:17:47 -05:00
James Rowe
5620327e03 Merge pull request #2954 from Subv/cache_unmapped_mem
Memory/RasterizerCache: Ignore unmapped memory regions when caching physical regions
2017-09-26 16:55:47 -06:00
Subv
3165466b66 Kernel/Thread: Allow specifying which process a thread belongs to when creating it.
Don't automatically assume that Thread::Create will only be called when the parent process is currently scheduled. This assumption will be broken when applets or system modules are loaded.
2017-09-26 17:40:49 -05:00
Subv
a8d2f5787f Tests: Added Memory::IsValidVirtualAddress tests. 2017-09-26 17:31:50 -05:00
Subv
c102e3ae28 Tests: Fixed ARM VFP tests 2017-09-26 17:29:06 -05:00
Subv
35da7f57ef Memory: Allow IsValidVirtualAddress to be called with a specific process parameter.
There is still an overload of IsValidVirtualAddress that only takes the VAddr and will default to the current process.
2017-09-26 17:27:44 -05:00
Merry
0c20da7fde Merge pull request #2958 from Subv/audio_buffer_datatype
Audio: Use std::deque instead of std::vector for the audio buffer type (StereoBuffer16)
2017-09-26 08:47:37 +01:00
Subv
e27ae04696 HLE/APT: Always set up the APT parameter when starting a library applet.
Only use the HLE interface if an HLE applet with the desired id was started.

This commit reorganizes the APT code surrounding parameter creation and delivery to make it easier to support LLE applets in the future.

As future work, the HLE applet interface can be reworked to utilize the same facilities as the LLE interface.
2017-09-25 23:47:50 -05:00
Subv
41f6c9f87f Memory/RasterizerCache: Ignore unmapped memory regions when caching physical regions.
Not all physical regions need to be mapped into the address space of every process, for example, system modules do not have a VRAM mapping.

This fixes a crash when loading applets and system modules.
2017-09-25 19:37:45 -05:00
Subv
d7459354f5 Audio: Use std::deque instead of std::vector for the audio buffer type (StereoBuffer16).
The current code inserts and deletes elements from the beginning of the audio buffer, which is very inefficient in an std::vector.

Profiling was done using VisualStudio2017's Performance Analyzer in Super Mario 3D Land.

Before this change: AudioInterp::Linear had 14.14% of the runtime (inclusive) and most of that time was spent in std::vector's insert implementation.
After this change: AudioInterp::Linear has 0.36% of the runtime (inclusive)
2017-09-25 18:31:37 -05:00
Subv
774e7deae8 HLE/Archives: Allow multiple loaded applications to access their SelfNCCH archive independently.
The loaders now register each loaded ROM with the SelfNCCH factory, which keeps the data around for the duration of the emulation session.

When opening the SelfNCCH archive, the factory queries the current program's programid and uses that as a key to the map that contains the NCCHData structure (RomFS, Icon, Banner, etc).

3dsx files do not have a programid and will use a default of 0 for this value, thus, only 1 3dsx file with RomFS is loadable at the same time.
2017-09-25 09:45:02 -05:00
B3n30
d881dee818 Merge pull request #2952 from MerryMage/page-tables
Switchable Page Tables
2017-09-25 08:29:32 +02:00
B3n30
dc6a365337 Merge pull request #2951 from huwpascoe/perf-4
Optimized Morton
2017-09-25 08:28:55 +02:00
B3n30
78022b5a79 Merge pull request #2949 from wwylele/fix-tr
citra-qt: fix some untranslated strings
2017-09-25 08:23:04 +02:00
B3n30
a21b9deb98 Merge pull request #2948 from Subv/register_service
HLE/SRV: Implemented RegisterService.
2017-09-25 08:22:05 +02:00
Max Thomas
c91ccbd0ba Loader/NCCH: Add support for loading application updates (#2927)
* loader/ncch: split NCCH parsing into its own file

* loader/ncch: add support for loading update NCCHs from the SD card

* loader/ncch: fix formatting

* file_sys/ncch_container: Return a value for OpenFile

* loader/ncch: cleanup, always instantiate overlay_ncch to base_ncch

* file_sys/ncch_container: better encryption checks, allow non-app NCCHs to load properly and for the existence of NCCH structures to be checked

* file_sys/ncch_container: pass filepath as a const reference
2017-09-25 08:17:38 +02:00
B3n30
d673d508dd Services/UDS: Added a function to send EAPoL-Start packets (#2920)
* Services/UDS: Added a function to generate the EAPoL-Start packet body.

* Services/UDS: Added filter for beacons.

* Services/UDS: Lock a mutex when accessing connection_status from both the emulation and network thread.

* Services/UDS: Handle the Association Response frame and respond with the EAPoL-Start frame.

* fixup: make use of current_node, changed received_beacons into a list, mutex and assert corrections

* fixup: fix damn clang-format
2017-09-25 08:16:27 +02:00