Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2021-02-19 | hle: kernel: Migrate PageHeap/PageTable to KPageHeap/KPageTable. | bunnei | 1 | -1/+1 | |
2021-01-01 | memory: Remove MemoryHook | MerryMage | 1 | -30/+0 | |
2020-12-30 | core/memory: Read and write page table atomically | ReinUsesLisp | 1 | -123/+64 | |
Squash attributes into the pointer's integer, making them an uintptr_t pair containing 2 bits at the bottom and then the pointer. These bits are currently unused thanks to alignment requirements. Configure Dynarmic to mask out these bits on pointer reads. While we are at it, remove some unused attributes carried over from Citra. Read/Write and other hot functions use a two step unpacking process that is less readable to stop MSVC from emitting an extra AND instruction in the hot path: mov rdi,rcx shr rdx,0Ch mov r8,qword ptr [rax+8] mov rax,qword ptr [r8+rdx*8] mov rdx,rax -and al,3 and rdx,0FFFFFFFFFFFFFFFCh je Core::Memory::Memory::Impl::Read<unsigned char> mov rax,qword ptr [vaddr] movzx eax,byte ptr [rdx+rax] | |||||
2020-12-25 | core: memory: Ensure thread safe access when pages are rasterizer cached (#5206) | bunnei | 1 | -12/+40 | |
* core: memory: Ensure thread safe access when pages are rasterizer cached. | |||||
2020-12-08 | memory: Resolve -Wdocumentation warning for Write() | Lioncash | 1 | -2/+0 | |
Write() doesn't return anything, so the @returns tag shouldn't be present. | |||||
2020-10-21 | Revert "core: Fix clang build" | bunnei | 1 | -1/+1 | |
2020-10-18 | core: Fix clang build | Lioncash | 1 | -1/+1 | |
Recent changes to the build system that made more warnings be flagged as errors caused building via clang to break. Fixes #4795 | |||||
2020-10-13 | core/CMakeLists: Make some warnings errors | Lioncash | 1 | -6/+6 | |
Makes our error coverage a little more consistent across the board by applying it to Linux side of things as well. This also makes it more consistent with the warning settings in other libraries in the project. This also updates httplib to 0.7.9, as there are several warning cleanups made that allow us to enable several warnings as errors. | |||||
2020-09-23 | memory: Resolve a -Wdocumentation warning | Lioncash | 1 | -1/+1 | |
memory doesn't exist as a parameter any more. | |||||
2020-07-28 | common/atomic_ops: Don't cast away volatile from pointers | Lioncash | 1 | -6/+4 | |
Preserves the volatility of the pointers being casted. | |||||
2020-07-05 | memory: Set page-table pointers before setting attribute = Memory | MerryMage | 1 | -2/+5 | |
2020-06-27 | General: Initial Setup for Single Core. | Fernando Sahmkow | 1 | -4/+4 | |
2020-06-27 | ARM/Memory: Correct Exclusive Monitor and Implement Exclusive Memory Writes. | Fernando Sahmkow | 1 | -0/+98 | |
2020-06-27 | General: Recover Prometheus project from harddrive failure | Fernando Sahmkow | 1 | -7/+4 | |
This commit: Implements CPU Interrupts, Replaces Cycle Timing for Host Timing, Reworks the Kernel's Scheduler, Introduce Idle State and Suspended State, Recreates the bootmanager, Initializes Multicore system. | |||||
2020-04-17 | core: memory: Fix memory access on page boundaries. | bunnei | 1 | -6/+39 | |
- Fixes Super Smash Bros. Ultimate. | |||||
2020-04-17 | core: memory: Updates for new VMM. | bunnei | 1 | -100/+52 | |
2020-04-17 | core: memory: Move to Core::Memory namespace. | bunnei | 1 | -2/+2 | |
- helpful to disambiguate Kernel::Memory namespace. | |||||
2020-04-06 | Buffer Cache: Use vAddr instead of physical memory. | Fernando Sahmkow | 1 | -0/+115 | |
2020-04-06 | GPU: Setup Flush/Invalidate to use VAddr instead of CacheAddr | Fernando Sahmkow | 1 | -6/+6 | |
2020-01-18 | core/memory: Create a special MapMemoryRegion for physical memory. | Markus Wick | 1 | -0/+11 | |
This allows us to create a fastmem arena within the memory.cpp helpers. | |||||
2020-01-01 | core/memory + arm/dynarmic: Use a global offset within our arm page table. | Markus Wick | 1 | -9/+16 | |
This saves us two x64 instructions per load/store instruction. TODO: Clean up our memory code. We can use this optimization here as well. | |||||
2019-11-27 | core/memory; Migrate over SetCurrentPageTable() to the Memory class | Lioncash | 1 | -15/+16 | |
Now that literally every other API function is converted over to the Memory class, we can just move the file-local page table into the Memory implementation class, finally getting rid of global state within the memory code. | |||||
2019-11-27 | core/memory: Migrate over GetPointerFromVMA() to the Memory class | Lioncash | 1 | -36/+36 | |
Now that everything else is migrated over, this is essentially just code relocation and conversion of a global accessor to the class member variable. All that remains is to migrate over the page table. | |||||
2019-11-27 | core/memory: Migrate over Write{8, 16, 32, 64, Block} to the Memory class | Lioncash | 1 | -92/+128 | |
The Write functions are used slightly less than the Read functions, which make these a bit nicer to move over. The only adjustments we really need to make here are to Dynarmic's exclusive monitor instance. We need to keep a reference to the currently active memory instance to perform exclusive read/write operations. | |||||
2019-11-27 | core/memory: Migrate over Read{8, 16, 32, 64, Block} to the Memory class | Lioncash | 1 | -96/+132 | |
With all of the trivial parts of the memory interface moved over, we can get right into moving over the bits that are used. Note that this does require the use of GetInstance from the global system instance to be used within hle_ipc.cpp and the gdbstub. This is fine for the time being, as they both already rely on the global system instance in other functions. These will be removed in a change directed at both of these respectively. For now, it's sufficient, as it still accomplishes the goal of de-globalizing the memory code. | |||||
2019-11-27 | core/memory: Migrate over ZeroBlock() and CopyBlock() to the Memory class | Lioncash | 1 | -89/+110 | |
These currently aren't used anywhere in the codebase, so these are very trivial to move over to the Memory class. | |||||
2019-11-27 | core/memory: Migrate over RasterizerMarkRegionCached() to the Memory class | Lioncash | 1 | -63/+67 | |
This is only used within the accelerated rasterizer in two places, so this is also a very trivial migration. | |||||
2019-11-27 | core/memory: Migrate over ReadCString() to the Memory class | Lioncash | 1 | -14/+19 | |
This only had one usage spot, so this is fairly straightforward to convert over. | |||||
2019-11-27 | core/memory: Migrate over GetPointer() | Lioncash | 1 | -15/+23 | |
With all of the interfaces ready for migration, it's trivial to migrate over GetPointer(). | |||||
2019-11-27 | core/memory: Move memory read/write implementation functions into an anonymous namespace | Lioncash | 1 | -97/+98 | |
These will eventually be migrated into the main Memory class, but for now, we put them in an anonymous namespace, so that the other functions that use them, can be migrated over separately. | |||||
2019-11-27 | core/memory: Migrate over address checking functions to the new Memory class | Lioncash | 1 | -20/+31 | |
A fairly straightforward migration. These member functions can just be mostly moved verbatim with minor changes. We already have the necessary plumbing in places that they're used. IsKernelVirtualAddress() can remain a non-member function, since it doesn't rely on class state in any form. | |||||
2019-11-27 | core/memory: Migrate over memory mapping functions to the new Memory class | Lioncash | 1 | -71/+106 | |
Migrates all of the direct mapping facilities over to the new memory class. In the process, this also obsoletes the need for memory_setup.h, so we can remove it entirely from the project. | |||||
2019-11-27 | core/memory: Introduce skeleton of Memory class | Lioncash | 1 | -0/+12 | |
Currently, the main memory management code is one of the remaining places where we have global state. The next series of changes will aim to rectify this. This change simply introduces the main skeleton of the class that will contain all the necessary state. | |||||
2019-10-06 | core: Remove Core::CurrentProcess() | Lioncash | 1 | -5/+5 | |
This only encourages the use of the global system instance (which will be phased out long-term). Instead, we use the direct system function call directly to remove the appealing but discouraged short-hand. | |||||
2019-09-19 | Core/Memory: Only FlushAndInvalidate GPU if the page is marked as RasterizerCachedMemory | Fernando Sahmkow | 1 | -2/+7 | |
This commit avoids Invalidating and Flushing the GPU if the page is not marked as a RasterizerCache Page. | |||||
2019-07-06 | memory: Remove unused includes | Lioncash | 1 | -2/+0 | |
These aren't used within the central memory management code, so they can be removed. | |||||
2019-04-12 | core/cpu_core_manager: Create threads separately from initialization. | Lioncash | 1 | -8/+8 | |
Our initialization process is a little wonky than one would expect when it comes to code flow. We initialize the CPU last, as opposed to hardware, where the CPU obviously needs to be first, otherwise nothing else would work, and we have code that adds checks to get around this. For example, in the page table setting code, we check to see if the system is turned on before we even notify the CPU instances of a page table switch. This results in dead code (at the moment), because the only time a page table switch will occur is when the system is *not* running, preventing the emulated CPU instances from being notified of a page table switch in a convenient manner (technically the code path could be taken, but we don't emulate the process creation svc handlers yet). This moves the threads creation into its own member function of the core manager and restores a little order (and predictability) to our initialization process. Previously, in the multi-threaded cases, we'd kick off several threads before even the main kernel process was created and ready to execute (gross!). Now the initialization process is like so: Initialization: 1. Timers 2. CPU 3. Kernel 4. Filesystem stuff (kind of gross, but can be amended trivially) 5. Applet stuff (ditto in terms of being kind of gross) 6. Main process (will be moved into the loading step in a following change) 7. Telemetry (this should be initialized last in the future). 8. Services (4 and 5 should ideally be alongside this). 9. GDB (gross. Uses namespace scope state. Needs to be refactored into a class or booted altogether). 10. Renderer 11. GPU (will also have its threads created in a separate step in a following change). Which... isn't *ideal* per-se, however getting rid of the wonky intertwining of CPU state initialization out of this mix gets rid of most of the footguns when it comes to our initialization process. | |||||
2019-04-07 | core/memory: Remove GetCurrentPageTable() | Lioncash | 1 | -4/+0 | |
Now that nothing actually touches the internal page table aside from the memory subsystem itself, we can remove the accessor to it. | |||||
2019-03-21 | memory: Check that core is powered on before attempting to use GPU. | bunnei | 1 | -1/+1 | |
- GPU will be released on shutdown, before pages are unmapped. - On subsequent runs, current_page_table will be not nullptr, but GPU might not be valid yet. | |||||
2019-03-17 | core: Move PageTable struct into Common. | bunnei | 1 | -74/+60 | |
2019-03-16 | memory: Simplify rasterizer cache operations. | bunnei | 1 | -60/+21 | |
2019-03-15 | gpu: Use host address for caching instead of guest address. | bunnei | 1 | -5/+8 | |
2019-03-07 | gpu: Move command processing to another thread. | bunnei | 1 | -4/+4 | |
2019-03-02 | Memory: don't lock hle mutex in memory read/write | Weiyi Wang | 1 | -6/+0 | |
The comment already invalidates itself: neither MMIO nor rasterizer cache belongsHLE kernel state. This mutex has a too large scope if MMIO or cache is included, which is prone to dead lock when multiple thread acquires these resource at the same time. If necessary, each MMIO component or rasterizer should have their own lock. | |||||
2019-02-27 | Speed up memory page mapping (#2141) | Annomatg | 1 | -6/+11 | |
- Memory::MapPages total samplecount was reduced from 4.6% to 1.06%. - From main menu into the game from 1.03% to 0.35% | |||||
2018-12-19 | Fixed uninitialized memory due to missing returns in canary | David Marcec | 1 | -0/+1 | |
Functions which are suppose to crash on non canary builds usually don't return anything which lead to uninitialized memory being used. | |||||
2018-12-06 | memory: Convert ASSERT into a DEBUG_ASSERT within GetPointerFromVMA() | Lioncash | 1 | -1/+1 | |
Given memory should always be expected to be valid during normal execution, this should be a debug assertion, rather than a check in regular builds. | |||||
2018-12-06 | vm_manager: Make vma_map private | Lioncash | 1 | -6/+5 | |
This was only ever public so that code could check whether or not a handle was valid or not. Instead of exposing the object directly and allowing external code to potentially mess with the map contents, we just provide a member function that allows checking whether or not a handle is valid. This makes all member variables of the VMManager class private except for the page table. | |||||
2018-12-05 | Call shrink_to_fit after page-table vector resizing to cause crt to actually lower vector capacity. For 36-bit titles saves 800MB of commit. | heapo | 1 | -0/+8 | |
2018-10-30 | global: Use std::optional instead of boost::optional (#1578) | Frederic L | 1 | -1/+1 | |
* get rid of boost::optional * Remove optional references * Use std::reference_wrapper for optional references * Fix clang format * Fix clang format part 2 * Adressed feedback * Fix clang format and MacOS build | |||||
2018-09-30 | kernel/process: Make data member variables private | Lioncash | 1 | -7/+7 | |
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-25 | memory: Dehardcode the use of fixed memory range constants | Lioncash | 1 | -5/+7 | |
The locations of these can actually vary depending on the address space layout, so we shouldn't be using these when determining where to map memory or be using them as offsets for calculations. This keeps all the memory ranges flexible and malleable based off of the virtual memory manager instance state. | |||||
2018-09-25 | memory: Dehardcode the use of a 36-bit address space | Lioncash | 1 | -2/+16 | |
Given games can also request a 32-bit or 39-bit address space, we shouldn't be hardcoding the address space range as 36-bit. | |||||
2018-09-15 | Port #4182 from Citra: "Prefix all size_t with std::" | fearlessTobi | 1 | -27/+28 | |
2018-08-31 | gl_renderer: Cache textures, framebuffers, and shaders based on CPU address. | bunnei | 1 | -36/+15 | |
2018-08-28 | gpu: Make memory_manager private | Lioncash | 1 | -2/+2 | |
Makes the class interface consistent and provides accessors for obtaining a reference to the memory manager instance. Given we also return references, this makes our more flimsy uses of const apparent, given const doesn't propagate through pointers in the way one would typically expect. This makes our mutable state more apparent in some places. | |||||
2018-08-04 | renderer_base: Make Rasterizer() return the rasterizer by reference | Lioncash | 1 | -4/+4 | |
All calling code assumes that the rasterizer will be in a valid state, which is a totally fine assumption. The only way the rasterizer wouldn't be is if initialization is done incorrectly or fails, which is checked against in System::Init(). | |||||
2018-08-04 | video_core: Eliminate the g_renderer global variable | Lioncash | 1 | -8/+10 | |
We move the initialization of the renderer to the core class, while keeping the creation of it and any other specifics in video_core. This way we can ensure that the renderer is initialized and doesn't give unfettered access to the renderer. This also makes dependencies on types more explicit. For example, the GPU class doesn't need to depend on the existence of a renderer, it only needs to care about whether or not it has a rasterizer, but since it was accessing the global variable, it was also making the renderer a part of its dependency chain. By adjusting the interface, we can get rid of this dependency. | |||||
2018-08-03 | memory: Remove unused GetSpecialHandlers() function | Lioncash | 1 | -16/+0 | |
This is just unused code, so we may as well get rid of it. | |||||
2018-08-03 | core/memory: Get rid of 3DS leftovers | Lioncash | 1 | -106/+0 | |
Removes leftover code from citra that isn't needed. | |||||
2018-07-19 | core/memory: Remove unused function GetSpecialHandlers() and an unused variable in ZeroBlock() | Lioncash | 1 | -7/+0 | |
2018-07-19 | core/memory, core/hle/kernel: Use std::move where applicable | Lioncash | 1 | -3/+5 | |
Avoids pointless copies | |||||
2018-07-03 | Update clang format | James Rowe | 1 | -12/+12 | |
2018-07-03 | Rename logging macro back to LOG_* | James Rowe | 1 | -12/+12 | |
2018-06-22 | Kernel/Arbiters: Fix casts, cleanup comments/magic numbers | Michael Scire | 1 | -0/+4 | |
2018-05-11 | core: Implement multicore support. | bunnei | 1 | -2/+7 | |
2018-05-02 | general: Make formatting of logged hex values more straightforward | Lioncash | 1 | -11/+11 | |
This makes the formatting expectations more obvious (e.g. any zero padding specified is padding that's entirely dedicated to the value being printed, not any pretty-printing that also gets tacked on). | |||||
2018-04-27 | general: Convert assertion macros over to be fmt-compatible | Lioncash | 1 | -10/+9 | |
2018-04-25 | Memory: Added a missing shortcut for Memory::CopyBlock for the current process. | Subv | 1 | -0/+4 | |
2018-04-25 | core/memory: Amend address widths in asserts | Lioncash | 1 | -2/+2 | |
Addresses are 64-bit, these formatting specifiers are simply holdovers from citra. Adjust them to be the correct width. | |||||
2018-04-25 | core/memory: Move logging macros over to new fmt-capable ones | Lioncash | 1 | -22/+24 | |
While we're at it, correct addresses to print all 64 bits where applicable, which were holdovers from citra. | |||||
2018-04-25 | gl_rasterizer_cache: Update to be based on GPU addresses, not CPU addresses. | bunnei | 1 | -16/+48 | |
2018-03-27 | memory: Fix cast for ReadBlock/WriteBlock/ZeroBlock/CopyBlock. | bunnei | 1 | -4/+8 | |
2018-03-27 | memory: Add RasterizerMarkRegionCached code and cleanup. | bunnei | 1 | -200/+190 | |
2018-03-23 | memory: Fix typo in RasterizerFlushVirtualRegion. | bunnei | 1 | -3/+3 | |
2018-03-23 | memory: RasterizerFlushVirtualRegion should also check process image region. | bunnei | 1 | -0/+1 | |
2018-03-23 | rasterizer: Flush and invalidate regions should be 64-bit. | bunnei | 1 | -2/+2 | |
2018-03-23 | memory: Port RasterizerFlushVirtualRegion from Citra. | bunnei | 1 | -0/+39 | |
2018-03-22 | Remove more N3DS References | N00byKing | 1 | -9/+0 | |
2018-03-14 | core: Move process creation out of global state. | bunnei | 1 | -15/+15 | |
2018-02-21 | memory: LOG_ERROR when falling off end of page table | MerryMage | 1 | -0/+11 | |
2018-02-14 | memory: Silence formatting sepecifier warnings | Lioncash | 1 | -21/+30 | |
2018-01-27 | memory: Replace all memory hooking with Special regions | MerryMage | 1 | -317/+163 | |
2018-01-20 | memory: Return false for large VAddr in IsValidVirtualAddress | Rozlette | 1 | -0/+3 | |
2018-01-13 | Remove gpu debugger and get yuzu qt to compile | James Rowe | 1 | -40/+1 | |
2018-01-09 | fix macos build | MerryMage | 1 | -4/+4 | |
2018-01-01 | core/video_core: Fix a bunch of u64 -> u32 warnings. | bunnei | 1 | -8/+8 | |
2017-10-19 | memory: Print addresses as 64-bit. | bunnei | 1 | -2/+2 | |
2017-10-01 | Memory: Make WriteBlock take a Process parameter on which to operate | Subv | 1 | -10/+17 | |
2017-10-01 | Memory: Make ReadBlock take a Process parameter on which to operate | Subv | 1 | -12/+28 | |
2017-09-30 | memory: Log with 64-bit values. | bunnei | 1 | -8/+8 | |
2017-09-30 | core: Various changes to support 64-bit addressing. | bunnei | 1 | -22/+22 | |
2017-09-30 | Fixed type conversion ambiguity | Huw Pascoe | 1 | -14/+22 | |
2017-09-27 | Memory: Allow IsValidVirtualAddress to be called with a specific process parameter. | Subv | 1 | -7/+18 | |
There is still an overload of IsValidVirtualAddress that only takes the VAddr and will default to the current process. | |||||
2017-09-26 | Memory/RasterizerCache: Ignore unmapped memory regions when caching physical regions. | Subv | 1 | -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. | |||||
2017-09-25 | ARM_Interface: Implement PageTableChanged | MerryMage | 1 | -0/+5 | |
2017-09-24 | memory: Remove GetCurrentPageTablePointers | MerryMage | 1 | -4/+0 | |
2017-09-24 | memory: Add GetCurrentPageTable/SetCurrentPageTable | MerryMage | 1 | -1/+9 | |
Don't expose Memory::current_page_table as a global. | |||||
2017-09-15 | Kernel/Memory: Make IsValidPhysicalAddress not go through the current process' virtual memory mapping. | Subv | 1 | -2/+1 | |
2017-09-15 | Kernel/Memory: Changed GetPhysicalPointer so that it doesn't go through the current process' page table to obtain a pointer. | Subv | 1 | -3/+62 | |
2017-09-10 | Kernel/Memory: Give each Process its own page table. | Subv | 1 | -75/+12 | |
The loader is in charge of setting the newly created process's page table as the main one during the loading process. | |||||
2017-08-29 | Use recursive_mutex instead of mutex to fix #2902 | danzel | 1 | -2/+2 | |
2017-08-22 | 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. | Subv | 1 | -1/+8 | |
2017-06-22 | Memory: Add function to flush a virtual range from the rasterizer cache | Yuri Kunde Schlesner | 1 | -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. | |||||
2017-06-22 | Memory: Fix crash when unmapping a VMA covering cached surfaces | Yuri Kunde Schlesner | 1 | -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. | |||||
2017-06-22 | Memory: Add TryVirtualToPhysicalAddress, returning a boost::optional | Yuri Kunde Schlesner | 1 | -4/+12 | |
2017-06-22 | Memory: Make PhysicalToVirtualAddress return a boost::optional | Yuri Kunde Schlesner | 1 | -9/+12 | |
And fix a few places in the code to take advantage of that. | |||||
2017-05-10 | Memory: Add constants for the n3DS additional RAM | Yuri Kunde Schlesner | 1 | -2/+6 | |
This is 4MB of extra, separate memory that was added on the New 3DS. | |||||
2016-12-18 | Revert "Memory: Always flush whole pages from surface cache" | bunnei | 1 | -10/+0 | |
2016-12-15 | Memory: Always flush whole pages from surface cache | Yuri Kunde Schlesner | 1 | -0/+10 | |
This prevents individual writes touching a cached page, but which don't overlap the surface, from constantly hitting the surface cache lookup. | |||||
2016-11-25 | Expose page table to dynarmic for optimized reads and writes to the JIT | James Rowe | 1 | -6/+8 | |
2016-09-29 | memory: fix IsValidVirtualAddress for RasterizerCachedMemory | wwylele | 1 | -0/+3 | |
RasterizerCachedMemory doesn't has pointer but should be considered as valid | |||||
2016-09-21 | Use negative priorities to avoid special-casing the self-include | Yuri Kunde Schlesner | 1 | -1/+1 | |
2016-09-21 | Remove empty newlines in #include blocks. | Emmanuel Gil Peyrot | 1 | -4/+1 | |
This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation. | |||||
2016-09-18 | Sources: Run clang-format on everything. | Emmanuel Gil Peyrot | 1 | -35/+49 | |
2016-08-27 | Memory: add ReadCString function | wwylele | 1 | -0/+14 | |
2016-05-28 | Memory: Handle RasterizerCachedMemory and RasterizerCachedSpecial page types in the memory block manipulation functions. | Subv | 1 | -1/+60 | |
2016-05-28 | Memory: Make ReadBlock and WriteBlock accept void pointers. | Subv | 1 | -4/+4 | |
2016-05-28 | Memory: CopyBlock | MerryMage | 1 | -0/+41 | |
2016-05-21 | Memory: ZeroBlock | MerryMage | 1 | -0/+38 | |
2016-05-21 | Memory: ReadBlock/WriteBlock | MerryMage | 1 | -3/+74 | |
2016-05-21 | Memory: IsValidVirtualAddress/IsValidPhysicalAddress | MerryMage | 1 | -0/+21 | |
2016-04-21 | HWRasterizer: Texture forwarding | tfarley | 1 | -0/+140 | |
2016-03-06 | Memory: Do correct Phys->Virt address translation for non-APP linheap | Yuri Kunde Schlesner | 1 | -1/+1 | |
2016-01-30 | Memory: Implement MMIO | MerryMage | 1 | -6/+80 | |
2015-10-09 | Fixed spelling errors | Gareth Poole | 1 | -2/+2 | |
2015-09-10 | memory: Get rid of pointer casts | Lioncash | 1 | -14/+7 | |
2015-08-16 | Kernel: Add more infrastructure to support different memory layouts | Yuri Kunde Schlesner | 1 | -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. | |||||
2015-08-16 | Memory: Move address type conversion routines to memory.cpp/h | Yuri Kunde Schlesner | 1 | -1/+36 | |
These helpers aren't really part of the kernel, and mem_map.cpp/h is going to be moved there next. | |||||
2015-07-12 | Memory: Fix unmapping of pages | Yuri Kunde Schlesner | 1 | -4/+2 | |
2015-06-28 | Common: Cleanup memory and misc includes. | Emmanuel Gil Peyrot | 1 | -3/+0 | |
2015-05-27 | Kernel: Add VMManager to manage process address spaces | Yuri Kunde Schlesner | 1 | -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. | |||||
2015-05-15 | Memory: Use a table based lookup scheme to read from memory regions | Yuri Kunde Schlesner | 1 | -120/+123 | |
2015-05-15 | Memory: Read SharedPage directly from Memory::Read | Yuri Kunde Schlesner | 1 | -1/+2 | |
2015-05-15 | Memory: Read ConfigMem directly from Memory::Read | Yuri Kunde Schlesner | 1 | -1/+2 | |
2015-05-15 | Memmap: Re-organize memory function in two files | Yuri Kunde Schlesner | 1 | -84/+6 | |
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. | |||||
2015-05-15 | Memmap: Remove unused declarations | Yuri Kunde Schlesner | 1 | -11/+3 | |
2015-05-09 | Memory: Support more regions in the VAddr-PAddr translation functions | Yuri Kunde Schlesner | 1 | -24/+24 | |
Also adds better documentation and removes the one-off reimplementation of the function in pica.h. | |||||
2015-05-09 | Memory: Re-organize and rename memory area address constants | Yuri Kunde Schlesner | 1 | -38/+26 | |
2015-05-07 | Common: Remove common.h | Yuri Kunde Schlesner | 1 | -1/+3 | |
2015-05-02 | Memory: Properly cleanup & shutdown. | bunnei | 1 | -13/+8 | |
2015-04-06 | Clean-up mem_map constants and fix framebuffer translation errors | Yuri Kunde Schlesner | 1 | -7/+11 | |
2015-03-17 | dyncom: Make Load/Store instructions support big endian | Lioncash | 1 | -0/+6 | |
2015-02-22 | Cleaned up unaligned access. | Kevin Hartman | 1 | -18/+0 | |
2015-02-11 | Asserts: break/crash program, fit to style guide; log.h->assert.h | archshift | 1 | -2/+2 | |
Involves making asserts use printf instead of the log functions (log functions are asynchronous and, as such, the log won't be printed in time) As such, the log type argument was removed (printf obviously can't use it, and it's made obsolete by the file and line printing) Also removed some GEKKO cruft. | |||||
2015-01-16 | Add some support for the shared page (currently 3d slider is implemented) | Zhuowei Zhang | 1 | -0/+5 | |
2014-12-30 | MemMap: Add support for DSP Read & Writes in the memory map | purpasmart96 | 1 | -2/+8 | |
2014-12-21 | License change | purpasmart96 | 1 | -1/+1 | |
2014-12-14 | MemMap: Added AXI_WRAM & SHARED_PAGE along with other stuff | purpasmart96 | 1 | -10/+0 | |
Got rid of I/O address's since the I/O addresses range's overlap with other address's types such as vram, these I/O addresses need to be done in an different way. | |||||
2014-12-13 | Convert old logging calls to new logging macros | Yuri Kunde Schlesner | 1 | -6/+6 | |
2014-12-12 | MemMap: Renamed "GSP" heap to "linear", as this is not specific to GSP. | bunnei | 1 | -16/+16 | |
- Linear simply indicates that the mapped physical address is always MappedVAddr+0x0C000000, thus this memory can be used for hardware devices' DMA (such as the GPU). | |||||
2014-12-03 | MemMap: Updated memory map to subtract base address instead of mask. | bunnei | 1 | -21/+21 | |
- More readable, a little less error prone. Conflicts: src/core/mem_map.h src/core/mem_map_funcs.cpp | |||||
2014-11-27 | Fixed formatting and switch statement warnings | vaguilar | 1 | -2/+2 | |
2014-11-19 | Add static to some variables | Lioncash | 1 | -9/+9 | |
2014-09-28 | Fix warnings in core and common | Lioncash | 1 | -1/+1 | |
2014-09-09 | core: Prune redundant includes | archshift | 1 | -1/+0 | |
2014-08-31 | Introduce VAddr and PAddr typedefs for ARM addresses. | Yuri Kunde Schlesner | 1 | -16/+16 | |
2014-08-17 | Core: Fix undefined behavior in mem_map_funcs' WriteBlock function | Lioncash | 1 | -4/+8 | |
2014-08-12 | Pica/GPU: Change hardware registers to use physical addresses rather than virtual ones. | Tony Wasserka | 1 | -32/+36 | |
This cleans up the mess that address reading/writing had become and makes the code a *lot* more sensible. This adds a physical<->virtual address converter to mem_map.h. For further accuracy, we will want to properly extend this to support a wider range of address regions. For now, this makes simply homebrew applications work in a good manner though. | |||||
2014-08-06 | MemMap: Fixed typo with GetPointer to VRAM address. | bunnei | 1 | -1/+1 | |
2014-08-06 | MemMap: Added an error for unaligned 16-bit memory reads. | bunnei | 1 | -0/+7 | |
2014-08-06 | MemMap: Removed Read64 function. | bunnei | 1 | -6/+0 | |
- Unused code - Was not correct for unaligned memory reads | |||||
2014-08-06 | MemMap: Fix Read32 for unaligned memory reads. | bunnei | 1 | -12/+23 | |
MemMap: Cleaned up Read32 unaligned memory access. | |||||
2014-07-05 | Memory: Removed deprecated MapBlock_Shared function. | bunnei | 1 | -22/+0 | |
2014-07-05 | mem_map: Updated interface to expose template functions to other modules. | bunnei | 1 | -10/+10 | |
2014-06-25 | MemMap: Added a WriteBlock function to write a buffer of data to memory. | bunnei | 1 | -0/+12 | |
2014-05-30 | hle: cleaned up log messages | bunnei | 1 | -3/+2 | |
2014-05-16 | added memory mapped region for system mem - sdk demos load a segment here on ELF load | bunnei | 1 | -1/+13 | |
2014-05-08 | - removed HLE mem "hack" and replaced with kernel mem region | bunnei | 1 | -11/+11 | |
- added a helper function for getting command buffer for services - fixed bug where GSP DMA was incorrectly being done in DataSynchronizationBarrier (instead of gsp_TriggerCmdReqQueue) | |||||
2014-05-07 | added mem_map read for config_mem | bunnei | 1 | -7/+12 | |
2014-05-01 | added virtual memory map for ExeFS (where ARM11 code is supposed to be loaded) | bunnei | 1 | -1/+13 | |
2014-05-01 | reorganized memory regions enum, added regions for ExeFS code | bunnei | 1 | -1/+1 | |
2014-04-28 | added virtual address conversion for firmware FW0B | bunnei | 1 | -5/+9 | |
2014-04-27 | added helper functions to mem_map to convert physical addresses to virtual addresses | bunnei | 1 | -1/+1 | |
2014-04-26 | - changed HW IO map to use virtual addresses | bunnei | 1 | -2/+10 | |
- added hooks to catch LCD IO read/writes | |||||
2014-04-26 | added vram to memory_map | bunnei | 1 | -7/+13 | |
2014-04-25 | removed some cruft | bunnei | 1 | -7/+1 | |
2014-04-25 | - added preliminary support for svc_MapMemoryBlock | bunnei | 1 | -6/+21 | |
- added shared memory region - moarrrr cleanups to memory_map | |||||
2014-04-25 | added functions to map Heap and Shared memory space | bunnei | 1 | -3/+51 | |
2014-04-18 | added GSP heap memory allocation | bunnei | 1 | -0/+26 | |
2014-04-18 | fixed bug in Memory::GetPointer | bunnei | 1 | -2/+2 | |
2014-04-18 | added memory read/write to GSP heap | bunnei | 1 | -3/+11 | |
2014-04-18 | more various refactors to memory interface | bunnei | 1 | -23/+17 | |
2014-04-18 | cleaned up memory interfaces a lot, removed some hackish stuff | bunnei | 1 | -96/+48 | |
2014-04-17 | changed unknown memory read/write to report the size | bunnei | 1 | -2/+3 | |
2014-04-13 | added OS memory read/write for thread command buffer | bunnei | 1 | -5/+5 | |
2014-04-13 | - added HLE to connect to "srv:" service | bunnei | 1 | -2/+16 | |
- added a manager for keeping track of services/ports - added a memory mapped region for memory accessed by HLE - added HLE for GetThreadCommandBuffer function | |||||
2014-04-11 | cleaned up some logging messages | bunnei | 1 | -1/+1 | |
2014-04-09 | fixed project includes to use new directory structure | bunnei | 1 | -3/+3 | |
2014-04-09 | got rid of 'src' folders in each sub-project | bunnei | 1 | -0/+0 | |
2014-04-09 | fixed all license file headers in core | bunnei | 1 | -23/+3 | |
2014-04-07 | added hack physical memory reads with Memory::GetPointer | bunnei | 1 | -2/+9 | |
2014-04-05 | added initial support for hw.cpp module | bunnei | 1 | -3/+15 | |
2014-04-05 | added hw module to interface h/w register reads/writes | bunnei | 1 | -3/+2 | |
2014-04-05 | renamed some functions | bunnei | 1 | -11/+11 | |
2014-04-04 | added hack to allow physical mem read/writes | bunnei | 1 | -2/+20 | |
2014-04-04 | removed some useless log messages | bunnei | 1 | -2/+0 | |
2014-04-02 | -converted tabs to spaces | bunnei | 1 | -100/+99 | |
-moved scratchpad memory out of MemArena | |||||
2014-04-01 | added support for reading/writing to stack mem | bunnei | 1 | -1/+10 | |
2014-03-25 | added a GetPointer function to Memory for use with ELF loading | bunnei | 1 | -28/+28 | |
2013-09-20 | added mem_map hardware writing | ShizZy | 1 | -52/+71 | |
2013-09-19 | added hw R/W/ memory functions | ShizZy | 1 | -0/+157 | |