Commit Graph

767 Commits

Author SHA1 Message Date
18b517e236 Merge pull request #1689 from Subv/shmem
Kernel: Implemented shared memory.
2016-05-13 15:33:44 -04:00
0d8bd3ba36 Merge pull request #1695 from Subv/tls_alloc
Kernel/Threads: Dynamically allocate the TLS region for threads.
2016-05-12 21:51:35 -04:00
ac2de12ed8 HLE/Applets: Give each applet its own block of heap memory, and use that when creating the framebuffer shared memory block. 2016-05-12 20:01:59 -05:00
d261984f54 Kernel: Account for automatically-allocated shared memories in the amount of used linear heap memory. 2016-05-12 20:01:59 -05:00
5679d066b5 Kernel/SharedMemory: Log an error when Map fails. 2016-05-12 20:01:27 -05:00
0fb6d2a247 Kernel: Implemented shared memory permissions. 2016-05-12 20:01:26 -05:00
f72bd57212 Kernel/Memory: Remove the Shared Memory region from the legacy memory map. 2016-05-12 20:00:33 -05:00
1bd0cf542f Kernel/SharedMemory: Properly implemented shared memory support.
Applications can request the kernel to allocate a piece of the linear heap for them when creating a shared memory object.
Shared memory areas are now properly mapped into the target processes when calling svcMapMemoryBlock.

Removed the APT Shared Font hack as it is no longer needed.
2016-05-12 20:00:32 -05:00
42a50da76b Kernel/SVC: Fixed the register order for svcCreateMemoryBlock.
R0 is used as the last parameter instead of R4.
2016-05-12 20:00:29 -05:00
282a2ad539 Merge pull request #1766 from Subv/log_cpu
Kernel/Threading: Warn when a thread can be scheduled in the Syscore (Core 1)
2016-05-08 15:03:08 -04:00
5b7f86708c Kernel/Threading: Warn when a thread can be scheduled in the Syscore (Core 1).
We do not currently implement any cores other than the AppCore (Core 0).
2016-05-07 10:23:03 -05:00
d192fb066d Kernel/Threads: Dynamically allocate the TLS region for threads in the BASE region of the linear heap.
Each thread gets a 0x200-byte area from the 0x1000-sized page, when all 8 thread slots in a single page are used up, the kernel allocates a new page to hold another 8 entries.

This is consistent with what the real kernel does.
2016-05-07 10:18:47 -05:00
75cbfeee58 Merge pull request #1762 from bunnei/global
hle: Get rid of direct global access to g_reschedule
2016-05-05 21:45:57 -04:00
aa6380e5bc Merge pull request #1643 from MerryMage/make_unique
Common: Remove Common::make_unique, use std::make_unique
2016-04-05 20:10:11 -04:00
a06dcfeb61 Common: Remove Common::make_unique, use std::make_unique 2016-04-05 13:31:17 +01:00
04f8d39a96 session: Make helper functions constexpr 2016-03-21 04:07:03 -04:00
6b7ebb3f82 hle: Get rid of global access to g_reschedule
This shouldn't be directly exposed if there's already a partial API that operates on it.
We can just provide the rest of that API.
2016-03-21 02:57:12 -04:00
856a1d0386 svc: Move ResetType enum to the kernel event header 2016-03-12 21:47:41 -05:00
12e92f17de svc: Make ResetType an enum class 2016-03-12 15:06:31 -05:00
6aa90e13f9 Memory: Do correct Phys->Virt address translation for non-APP linheap 2016-03-05 22:09:59 -08:00
8b00954ec7 AudioCore: Skeleton Implementation
This commit:
* Adds a new subproject, audio_core.
* Defines structures that exist in DSP shared memory.
* Hooks up various other parts of the emulator into audio core.

This sets the foundation for a later HLE DSP implementation.
2016-02-21 13:13:52 +00:00
6c71858c5c BitField: Make trivially copyable and remove assignment operator 2016-02-12 19:51:16 +00:00
2b93313348 Memory: Implement MMIO 2016-01-30 18:41:04 +00:00
d90d5a0ee6 HLE/SVC: Implement UnmapMemoryBlock.
This implementation will need to be (almost completely) changed when we implement multiprocess support.
2016-01-14 11:29:19 -05:00
6cccc36505 HLE/Timers: Reset OneShot timers when they are acquired instead of when they're triggered.
Closes #1139
2015-12-29 20:35:25 -05:00
29032ce9b6 SVC: Fixed ArbitrateAddress to behave as it does on hardware.
This was verified with hwtests that i plan to upload later on.
2015-12-27 18:44:42 -05:00
84a22cb594 Kernel: Implement svcGetSystemInfo
This makes smealum/ctrulib@b96dd51d33 work
with Citra.
2015-11-30 19:49:44 -08:00
32391cffdd Silence -Wsign-compare warnings. 2015-10-06 22:16:15 -05:00
751fbfdcc3 general: Silence some warnings when using clang 2015-09-16 08:51:53 -04:00
d3efa637b4 General: Fix up doxygen comments 2015-09-10 11:20:21 -04:00
0ee3e2c25e Kernel: Fix wrong linear heap base on titles using newer kernels
Typo which sneaked in through review on #1025
2015-08-27 23:52:40 -03:00
12390eb155 Kernel: Fix assertion failure when ControlMemory is called with size=0 2015-08-26 21:29:05 -03:00
687d973980 Core: Improve APT Shared Font hack
Should fix invalid read loops in some games
2015-08-26 21:28:58 -03:00
840b85690b Kernel: Remove unused legacy heap MapBlock_* functions 2015-08-16 01:03:49 -03:00
14eca982f4 Kernel: Implement svcGetProcessInfo in a basic way
This also adds some basic memory usage accounting. These two types are
used by Super Smash Bros. during startup.
2015-08-16 01:03:48 -03:00
74d4bc0af1 Kernel: Add more infrastructure to support different memory layouts
This adds some structures necessary to support multiple memory regions
in the future. It also adds support for different system memory types
and the new linear heap mapping at 0x30000000.
2015-08-16 01:03:47 -03:00
69c3021a8d Move core/mem_map.{cpp,h} => core/hle/kernel/memory.{cpp,h} 2015-08-16 01:03:46 -03:00
e2c7954be5 Memory: Move address type conversion routines to memory.cpp/h
These helpers aren't really part of the kernel, and mem_map.cpp/h is
going to be moved there next.
2015-08-16 01:03:46 -03:00
a12a30c9e0 Process: Store kernel compatibility version during loading 2015-08-16 01:03:45 -03:00
cdeeecf080 Kernel: Properly implement ControlMemory FREE and COMMIT 2015-08-16 01:03:45 -03:00
306408d174 VMManager: Introduce names for used ResultCodes 2015-08-16 01:03:44 -03:00
b9a9ad9742 VMManager: Make LogLayout log level configurable as a parameter 2015-08-16 01:03:43 -03:00
785407d06f VMManager: Change block offsets to size_t 2015-08-16 01:03:43 -03:00
dfb424b6d1 dyncom: Rename armdefs.h to armstate.h 2015-07-25 22:10:44 -04:00
275aaeef9c Kernel/Scheduling: Clean up a thread's wait_objects when its scheduled.
They'll be reset if needed during the next svcWaitSynchronization call (if there's any pending)
2015-07-20 17:15:54 -05:00
dc39d06950 Ensure all kernel objects are released during shutdown
This commit fixes several kernel object leaks. The most severe of them
was threads not being removed from the private handle table used for
CoreTiming events. This resulted in Threads never being released, which
in turn held references to Process, causing CodeSets to never be freed
when loading other applications.
2015-07-17 02:24:13 -03:00
b6719ec922 Merge pull request #921 from linkmauve/fix-applet
Fix applet includes using iwyu
2015-07-12 17:25:55 -04:00
d4f35fd989 Kernel: Add CodeSet case to Object::IsWaitable 2015-07-12 18:15:16 -03:00
fe909b3b5a Core: Fix applet includes using iwyu. 2015-07-12 22:10:37 +01:00
5c5cf2f8e0 Core: Properly configure address space when loading a binary
The code now properly configures the process image to match the loaded
binary segments (code, rodata, data) instead of just blindly allocating
a large chunk of dummy memory.
2015-07-11 23:54:42 -03:00