summaryrefslogtreecommitdiffstats
path: root/src/core/memory.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Fixed type conversion ambiguityHuw Pascoe2017-09-301-14/+22
|
* Merge pull request #2961 from Subv/load_titlesbunnei2017-09-291-7/+18
|\ | | | | Loaders: Don't automatically set the current process every time we load an application.
| * Memory: Allow IsValidVirtualAddress to be called with a specific process parameter.Subv2017-09-271-7/+18
| | | | | | | | There is still an overload of IsValidVirtualAddress that only takes the VAddr and will default to the current process.
* | Merge pull request #2954 from Subv/cache_unmapped_memJames Rowe2017-09-271-1/+16
|\ \ | |/ |/| Memory/RasterizerCache: Ignore unmapped memory regions when caching physical regions
| * Memory/RasterizerCache: Ignore unmapped memory regions when caching physical regions.Subv2017-09-261-1/+16
| | | | | | | | | | | | 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.
* | ARM_Interface: Implement PageTableChangedMerryMage2017-09-251-0/+5
| |
* | memory: Remove GetCurrentPageTablePointersMerryMage2017-09-241-4/+0
| |
* | memory: Add GetCurrentPageTable/SetCurrentPageTableMerryMage2017-09-241-1/+9
|/ | | | Don't expose Memory::current_page_table as a global.
* Merge pull request #2842 from Subv/switchable_page_tableB3n302017-09-151-79/+74
|\ | | | | Kernel/Memory: Give each process its own page table and allow switching the current page table upon reschedule
| * Kernel/Memory: Make IsValidPhysicalAddress not go through the current process' virtual memory mapping.Subv2017-09-151-2/+1
| |
| * Kernel/Memory: Changed GetPhysicalPointer so that it doesn't go through the current process' page table to obtain a pointer.Subv2017-09-151-3/+62
| |
| * Kernel/Memory: Give each Process its own page table.Subv2017-09-101-75/+12
| | | | | | | | The loader is in charge of setting the newly created process's page table as the main one during the loading process.
* | Use recursive_mutex instead of mutex to fix #2902danzel2017-08-291-2/+2
| |
* | Merge pull request #2839 from Subv/global_kernel_lockJames Rowe2017-08-241-1/+8
|\ \ | |/ |/| Kernel/HLE: Use a mutex to synchronize access to the HLE kernel state between the cpu thread and any other possible threads that might touch the kernel (network thread, etc).
| * Kernel/Memory: Acquire the global HLE lock when a memory read/write operation falls outside of the fast path, for it might perform an MMIO operation.Subv2017-08-221-1/+8
| |
* | Merge pull request #2799 from yuriks/virtual-cached-range-flushWeiyi Wang2017-07-221-52/+76
|\ \ | |/ |/| Add address conversion functions returning optional, Add function to flush virtual region from rasterizer cache
| * Memory: Add function to flush a virtual range from the rasterizer cacheYuri Kunde Schlesner2017-06-221-39/+52
| | | | | | | | | | | | This is slightly more ergonomic to use, correctly handles virtual regions which are disjoint in physical addressing space, and checks only regions which can be cached by the rasterizer.
| * Memory: Add TryVirtualToPhysicalAddress, returning a boost::optionalYuri Kunde Schlesner2017-06-221-4/+12
| |
| * Memory: Make PhysicalToVirtualAddress return a boost::optionalYuri Kunde Schlesner2017-06-221-9/+12
| | | | | | | | And fix a few places in the code to take advantage of that.
* | Memory: Fix crash when unmapping a VMA covering cached surfacesYuri Kunde Schlesner2017-06-221-5/+20
|/ | | | | | | | | | Unmapping pages tries to flush any cached GPU surfaces touching that region. When a cached page is invalidated, GetPointerFromVMA() is used to restore the original pagetable pointer. However, since that VMA has already been deleted, this hits an UNREACHABLE case in that function. Now when this happens, just set the page type to Unmapped and continue, which arrives at the correct end result.
* Memory: Add constants for the n3DS additional RAMYuri Kunde Schlesner2017-05-101-2/+6
| | | | This is 4MB of extra, separate memory that was added on the New 3DS.
* Revert "Memory: Always flush whole pages from surface cache"bunnei2016-12-181-10/+0
|
* Memory: Always flush whole pages from surface cacheYuri Kunde Schlesner2016-12-151-0/+10
| | | | | This prevents individual writes touching a cached page, but which don't overlap the surface, from constantly hitting the surface cache lookup.
* Expose page table to dynarmic for optimized reads and writes to the JITJames Rowe2016-11-251-6/+8
|
* memory: fix IsValidVirtualAddress for RasterizerCachedMemorywwylele2016-09-291-0/+3
| | | | RasterizerCachedMemory doesn't has pointer but should be considered as valid
* Use negative priorities to avoid special-casing the self-includeYuri Kunde Schlesner2016-09-211-1/+1
|
* Remove empty newlines in #include blocks.Emmanuel Gil Peyrot2016-09-211-4/+1
| | | | | | | This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
* Sources: Run clang-format on everything.Emmanuel Gil Peyrot2016-09-181-35/+49
|
* Memory: add ReadCString functionwwylele2016-08-271-0/+14
|
* Memory: Handle RasterizerCachedMemory and RasterizerCachedSpecial page types in the memory block manipulation functions.Subv2016-05-281-1/+60
|
* Memory: Make ReadBlock and WriteBlock accept void pointers.Subv2016-05-281-4/+4
|
* Memory: CopyBlockMerryMage2016-05-281-0/+41
|
* Memory: ZeroBlockMerryMage2016-05-211-0/+38
|
* Memory: ReadBlock/WriteBlockMerryMage2016-05-211-3/+74
|
* Memory: IsValidVirtualAddress/IsValidPhysicalAddressMerryMage2016-05-211-0/+21
|
* HWRasterizer: Texture forwardingtfarley2016-04-211-0/+140
|
* Memory: Do correct Phys->Virt address translation for non-APP linheapYuri Kunde Schlesner2016-03-061-1/+1
|
* Memory: Implement MMIOMerryMage2016-01-301-6/+80
|
* Fixed spelling errorsGareth Poole2015-10-091-2/+2
|
* memory: Get rid of pointer castsLioncash2015-09-101-14/+7
|
* Kernel: Add more infrastructure to support different memory layoutsYuri Kunde Schlesner2015-08-161-1/+4
| | | | | | 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.
* Memory: Move address type conversion routines to memory.cpp/hYuri Kunde Schlesner2015-08-161-1/+36
| | | | | These helpers aren't really part of the kernel, and mem_map.cpp/h is going to be moved there next.
* Memory: Fix unmapping of pagesYuri Kunde Schlesner2015-07-121-4/+2
|
* Common: Cleanup memory and misc includes.Emmanuel Gil Peyrot2015-06-281-3/+0
|
* Kernel: Add VMManager to manage process address spacesYuri Kunde Schlesner2015-05-271-4/+8
| | | | | | | | This enables more dynamic management of the process address space, compared to just directly configuring the page table for major areas. This will serve as the foundation upon which the rest of the Kernel memory management functions will be built.
* Memory: Use a table based lookup scheme to read from memory regionsYuri Kunde Schlesner2015-05-151-120/+123
|
* Memory: Read SharedPage directly from Memory::ReadYuri Kunde Schlesner2015-05-151-1/+2
|
* Memory: Read ConfigMem directly from Memory::ReadYuri Kunde Schlesner2015-05-151-1/+2
|
* Memmap: Re-organize memory function in two filesYuri Kunde Schlesner2015-05-151-0/+197
memory.cpp/h contains definitions related to acessing memory and configuring the address space mem_map.cpp/h contains higher-level definitions related to configuring the address space accoording to the kernel and allocating memory.