Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2021-01-01 | memory: Remove MemoryHook | MerryMage | 1 | -34/+0 | |
2020-06-27 | ARM/Memory: Correct Exclusive Monitor and Implement Exclusive Memory Writes. | Fernando Sahmkow | 1 | -0/+65 | |
2020-06-27 | General: Recover Prometheus project from harddrive failure | Fernando Sahmkow | 1 | -1/+1 | |
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: Updates for new VMM. | bunnei | 1 | -14/+1 | |
2020-04-17 | core: memory: Move to Core::Memory namespace. | bunnei | 1 | -2/+2 | |
- helpful to disambiguate Kernel::Memory namespace. | |||||
2020-04-08 | Memory: Address Feedback. | Fernando Sahmkow | 1 | -0/+68 | |
2020-04-06 | Buffer Cache: Use vAddr instead of physical memory. | Fernando Sahmkow | 1 | -0/+10 | |
2020-01-18 | core/memory: Create a special MapMemoryRegion for physical memory. | Markus Wick | 1 | -1/+15 | |
This allows us to create a fastmem arena within the memory.cpp helpers. | |||||
2019-11-27 | core/memory; Migrate over SetCurrentPageTable() to the Memory class | Lioncash | 1 | -4/+7 | |
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 Write{8, 16, 32, 64, Block} to the Memory class | Lioncash | 1 | -9/+88 | |
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 | -7/+78 | |
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 | -2/+51 | |
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 | -5/+10 | |
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 | -2/+17 | |
This only had one usage spot, so this is fairly straightforward to convert over. | |||||
2019-11-27 | core/memory: Migrate over GetPointer() | Lioncash | 1 | -2/+20 | |
With all of the interfaces ready for migration, it's trivial to migrate over GetPointer(). | |||||
2019-11-27 | core/memory: Migrate over address checking functions to the new Memory class | Lioncash | 1 | -3/+21 | |
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 | -0/+59 | |
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/+21 | |
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-07-06 | memory: Remove unused PageTable forward declaration | Lioncash | 1 | -4/+0 | |
This isn't used by anything in the header file, so it can be removed. | |||||
2019-05-07 | core/memory: Remove unused FlushMode enum | Lioncash | 1 | -9/+0 | |
Recent changes to memory-related code resulted in this being unused, so we can remove it. | |||||
2019-04-12 | core/cpu_core_manager: Create threads separately from initialization. | Lioncash | 1 | -2/+3 | |
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 unused enum constants | Lioncash | 1 | -10/+0 | |
These are holdovers from Citra and can be removed. | |||||
2019-04-07 | core/memory: Remove GetCurrentPageTable() | Lioncash | 1 | -2/+1 | |
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 | core/memory: Remove unnecessary includes | Lioncash | 1 | -3/+0 | |
In 93da8e0abfcdcc6e3cb5488a0db12373429f1377, the page table construct was moved to the common library (which utilized these inclusions). Since the move, nothing requires these headers to be included within the memory header. | |||||
2019-03-17 | core: Move PageTable struct into Common. | bunnei | 1 | -68/+6 | |
2019-03-16 | memory: Simplify rasterizer cache operations. | bunnei | 1 | -6/+0 | |
2018-09-25 | memory: Dehardcode the use of fixed memory range constants | Lioncash | 1 | -30/+1 | |
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 | -11/+21 | |
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 | -9/+9 | |
2018-08-31 | gl_renderer: Cache textures, framebuffers, and shaders based on CPU address. | bunnei | 1 | -2/+1 | |
2018-08-06 | memory: Make prototype parameter names match their definitions | Lioncash | 1 | -5/+5 | |
Keeps the code consistent. | |||||
2018-08-06 | memory: Correct prototype of ZeroBlock | Lioncash | 1 | -1/+1 | |
Previously, the prototype wasn't matching the definition, which has a Processor parameter before the destination address. | |||||
2018-08-06 | memory: Remove unnecessary const qualifiers in prototypes | Lioncash | 1 | -9/+8 | |
These aren't necessary, as value-wise const only matters in the definition. | |||||
2018-08-03 | core/memory: Get rid of 3DS leftovers | Lioncash | 1 | -87/+1 | |
Removes leftover code from citra that isn't needed. | |||||
2018-06-22 | Kernel/Arbiters: Fix casts, cleanup comments/magic numbers | Michael Scire | 1 | -0/+7 | |
2018-04-25 | gl_rasterizer_cache: Update to be based on GPU addresses, not CPU addresses. | bunnei | 1 | -1/+2 | |
2018-03-31 | memory: Fix stack region. | bunnei | 1 | -4/+5 | |
2018-03-27 | memory: Add RasterizerMarkRegionCached code and cleanup. | bunnei | 1 | -0/+5 | |
2018-03-23 | rasterizer: Flush and invalidate regions should be 64-bit. | bunnei | 1 | -1/+1 | |
2018-03-23 | memory: Port RasterizerFlushVirtualRegion from Citra. | bunnei | 1 | -1/+19 | |
2018-03-22 | Remove more N3DS References | N00byKing | 1 | -11/+0 | |
2018-03-16 | memory: Add regions for map region, "new" map region, etc. | bunnei | 1 | -19/+29 | |
2018-02-12 | arm_dynarmic: Support direct page table access | MerryMage | 1 | -4/+5 | |
2018-01-27 | memory: Replace all memory hooking with Special regions | MerryMage | 1 | -51/+21 | |
2018-01-17 | Update memory.h | David | 1 | -2/+2 | |
2018-01-16 | Increased heap size and changed tls area vaddr | David Marcec | 1 | -2/+2 | |
2018-01-01 | core/video_core: Fix a bunch of u64 -> u32 warnings. | bunnei | 1 | -5/+5 | |
2017-12-29 | svc: Implement MapMemory. | bunnei | 1 | -1/+1 | |
2017-10-23 | memory: Support 32-bit paging, move heap address space up. | bunnei | 1 | -2/+2 | |
2017-10-10 | loader: Various improvements for NSO/NRO loaders. | bunnei | 1 | -2/+2 | |
2017-10-01 | Memory: Make WriteBlock take a Process parameter on which to operate | Subv | 1 | -0/+2 | |
2017-10-01 | Memory: Make ReadBlock take a Process parameter on which to operate | Subv | 1 | -0/+2 | |
2017-09-30 | core: Various changes to support 64-bit addressing. | bunnei | 1 | -8/+8 | |
2017-09-27 | Memory: Allow IsValidVirtualAddress to be called with a specific process parameter. | Subv | 1 | -0/+7 | |
There is still an overload of IsValidVirtualAddress that only takes the VAddr and will default to the current process. | |||||
2017-09-24 | memory: Remove GetCurrentPageTablePointers | MerryMage | 1 | -6/+0 | |
2017-09-24 | memory: Add GetCurrentPageTable/SetCurrentPageTable | MerryMage | 1 | -1/+2 | |
Don't expose Memory::current_page_table as a global. | |||||
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 | -2/+0 | |
2017-09-10 | Kernel/Memory: Give each Process its own page table. | Subv | 1 | -1/+59 | |
The loader is in charge of setting the newly created process's page table as the main one during the loading process. | |||||
2017-06-22 | Memory: Add function to flush a virtual range from the rasterizer cache | Yuri Kunde Schlesner | 1 | -0/+13 | |
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: Add TryVirtualToPhysicalAddress, returning a boost::optional | Yuri Kunde Schlesner | 1 | -3/+11 | |
2017-06-22 | Memory: Make PhysicalToVirtualAddress return a boost::optional | Yuri Kunde Schlesner | 1 | -3/+4 | |
And fix a few places in the code to take advantage of that. | |||||
2017-06-21 | Memory: Add enum definitions for the n3DS FCRAM size | Yuri Kunde Schlesner | 1 | -1/+3 | |
2017-05-10 | Memory: Add constants for the n3DS additional RAM | Yuri Kunde Schlesner | 1 | -0/+10 | |
This is 4MB of extra, separate memory that was added on the New 3DS. | |||||
2016-11-25 | Expose page table to dynarmic for optimized reads and writes to the JIT | James Rowe | 1 | -0/+9 | |
2016-09-21 | Remove empty newlines in #include blocks. | Emmanuel Gil Peyrot | 1 | -1/+0 | |
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/+35 | |
2016-08-27 | Memory: add ReadCString function | wwylele | 1 | -0/+3 | |
2016-05-28 | Memory: Make ReadBlock and WriteBlock accept void pointers. | Subv | 1 | -2/+2 | |
2016-05-28 | Memory: CopyBlock | MerryMage | 1 | -2/+2 | |
2016-05-21 | Memory: ZeroBlock | MerryMage | 1 | -0/+1 | |
2016-05-21 | Memory: ReadBlock/WriteBlock | MerryMage | 1 | -1/+3 | |
2016-05-21 | Memory: IsValidVirtualAddress/IsValidPhysicalAddress | MerryMage | 1 | -0/+3 | |
2016-05-07 | Kernel/Threads: Dynamically allocate the TLS region for threads in the BASE region of the linear heap. | Subv | 1 | -6/+0 | |
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-04-21 | HWRasterizer: Texture forwarding | tfarley | 1 | -0/+16 | |
2015-08-22 | Fix broken boot introduced by last-minute change in #1025 | Yuri Kunde Schlesner | 1 | -1/+1 | |
2015-08-16 | Kernel: Implement svcGetProcessInfo in a basic way | Yuri Kunde Schlesner | 1 | -1/+3 | |
This also adds some basic memory usage accounting. These two types are used by Super Smash Bros. during startup. | |||||
2015-08-16 | Kernel: Add more infrastructure to support different memory layouts | Yuri Kunde Schlesner | 1 | -0/+5 | |
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 | -0/+11 | |
These helpers aren't really part of the kernel, and mem_map.cpp/h is going to be moved there next. | |||||
2015-08-16 | Memory: Move PAGE_MASK and PAGE_BITS to memory.h | Yuri Kunde Schlesner | 1 | -0/+2 | |
2015-06-28 | Common: Cleanup memory and misc includes. | Emmanuel Gil Peyrot | 1 | -0/+2 | |
2015-05-29 | Remove every trailing whitespace from the project (but externals). | Emmanuel Gil Peyrot | 1 | -1/+1 | |
2015-05-15 | Memory: Use a table based lookup scheme to read from memory regions | Yuri Kunde Schlesner | 1 | -0/+4 | |
2015-05-15 | Memmap: Re-organize memory function in two files | Yuri Kunde Schlesner | 1 | -74/+2 | |
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 | -9/+0 | |
2015-05-12 | Core/Memory: Add TLS support for creating up to 300 threads | Subv | 1 | -3/+5 | |
2015-05-09 | Memory: Add GetPhysicalPointer helper function | Yuri Kunde Schlesner | 1 | -0/+9 | |
2015-05-09 | Memory: Support more regions in the VAddr-PAddr translation functions | Yuri Kunde Schlesner | 1 | -4/+9 | |
Also adds better documentation and removes the one-off reimplementation of the function in pica.h. | |||||
2015-05-09 | Memory: Sort memory region variables by VAddr | Yuri Kunde Schlesner | 1 | -7/+7 | |
2015-05-09 | Memory: Re-organize and rename memory area address constants | Yuri Kunde Schlesner | 1 | -75/+88 | |
2015-05-09 | Process: Support parsing of exheader kernel caps | Yuri Kunde Schlesner | 1 | -0/+2 | |
2015-05-08 | Common: Remove mem_arena.cpp/h | Yuri Kunde Schlesner | 1 | -12/+0 | |
It is superfluous for Citra. (It's only really necessary if you're doing JIT. We were using it but not taking any advantage from it.) This should make 32-bit builds work again. | |||||
2015-05-07 | Clean-up includes | Yuri Kunde Schlesner | 1 | -3/+0 | |
2015-05-02 | Memory: Properly cleanup & shutdown. | bunnei | 1 | -0/+6 | |
2015-04-06 | Clean-up mem_map constants and fix framebuffer translation errors | Yuri Kunde Schlesner | 1 | -16/+10 | |
2015-03-17 | dyncom: Make Load/Store instructions support big endian | Lioncash | 1 | -0/+1 | |
2015-01-30 | Move VAddr/PAddr typedefs to kernel.h | Yuri Kunde Schlesner | 1 | -9/+2 | |
2014-12-30 | MemMap: Add support for DSP Read & Writes in the memory map | purpasmart96 | 1 | -0/+1 | |
2014-12-21 | License change | purpasmart96 | 1 | -1/+1 | |
2014-12-14 | MemMap: Added AXI_WRAM & SHARED_PAGE along with other stuff | purpasmart96 | 1 | -59/+76 | |
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-12 | MemMap: Renamed "GSP" heap to "linear", as this is not specific to GSP. | bunnei | 1 | -7/+7 | |
- 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-04 | mem_map: Make enum for addresses use u32 as the underlying type | Lioncash | 1 | -1/+1 | |
2014-12-04 | Add stub for ConvertProcessFromDspDram | archshift | 1 | -1/+3 | |
Should theoretically push retail stuff further along | |||||
2014-12-03 | MemMap: Updated memory map to subtract base address instead of mask. | bunnei | 1 | -10/+0 | |
- More readable, a little less error prone. Conflicts: src/core/mem_map.h src/core/mem_map_funcs.cpp | |||||
2014-11-18 | Fix documentation of parameters | Lioncash | 1 | -1/+1 | |
2014-11-17 | mem_map: Add missing prototype for Write64 | Lioncash | 1 | -0/+1 | |
2014-08-31 | Introduce VAddr and PAddr typedefs for ARM addresses. | Yuri Kunde Schlesner | 1 | -15/+24 | |
2014-08-12 | Pica/GPU: Change hardware registers to use physical addresses rather than virtual ones. | Tony Wasserka | 1 | -15/+7 | |
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-07-05 | Memory: Removed deprecated MapBlock_Shared function. | bunnei | 1 | -8/+0 | |
2014-07-05 | mem_map: Updated interface to expose template functions to other modules. | bunnei | 1 | -0/+6 | |
2014-06-25 | MemMap: Added a WriteBlock function to write a buffer of data to memory. | bunnei | 1 | -0/+2 | |
2014-05-16 | added memory mapped region for system mem - sdk demos load a segment here on ELF load | bunnei | 1 | -0/+7 | |
2014-05-08 | added kernel memory to mem_map | bunnei | 1 | -0/+6 | |
2014-05-07 | added mem_map read for config_mem | bunnei | 1 | -0/+5 | |
2014-05-01 | fixed a bug where ExeFs code was being incorrectly masked | bunnei | 1 | -1/+1 | |
2014-05-01 | added virtual memory map for ExeFS (where ARM11 code is supposed to be loaded) | bunnei | 1 | -0/+1 | |
2014-05-01 | reorganized memory regions enum, added regions for ExeFS code | bunnei | 1 | -20/+25 | |
2014-04-28 | added virtual address conversion for firmware FW0B | bunnei | 1 | -0/+2 | |
2014-04-27 | added helper functions to mem_map to convert physical addresses to virtual addresses | bunnei | 1 | -0/+14 | |
2014-04-26 | - changed HW IO map to use virtual addresses | bunnei | 1 | -1/+3 | |
- added hooks to catch LCD IO read/writes | |||||
2014-04-26 | added vram to memory_map | bunnei | 1 | -1/+2 | |
2014-04-25 | - added preliminary support for svc_MapMemoryBlock | bunnei | 1 | -0/+9 | |
- added shared memory region - moarrrr cleanups to memory_map | |||||
2014-04-25 | added functions to map Heap and Shared memory space | bunnei | 1 | -4/+23 | |
2014-04-18 | added GSP heap memory allocation | bunnei | 1 | -0/+25 | |
2014-04-18 | moved enums into Memory:: namespace | bunnei | 1 | -4/+2 | |
2014-04-18 | added memory read/write to GSP heap | bunnei | 1 | -1/+3 | |
2014-04-18 | more various refactors to memory interface | bunnei | 1 | -20/+33 | |
2014-04-18 | cleaned up memory interfaces a lot, removed some hackish stuff | bunnei | 1 | -3/+1 | |
2014-04-13 | replace tabs with spaces | bunnei | 1 | -3/+3 | |
2014-04-13 | added OS memory read/write for thread command buffer | bunnei | 1 | -4/+0 | |
2014-04-13 | - added HLE to connect to "srv:" service | bunnei | 1 | -1/+2 | |
- 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-12 | added a memory mapped option for HLE | bunnei | 1 | -5/+8 | |
2014-04-11 | added Memory::GetCharPointer to read strings from HLE functions | bunnei | 1 | -0/+4 | |
2014-04-09 | fixed project includes to use new directory structure | bunnei | 1 | -2/+2 | |
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 | -30/+5 | |
2014-04-04 | made memory #define's enum to make debugging easier | bunnei | 1 | -15/+21 | |
2014-04-01 | added support for reading/writing to stack mem | bunnei | 1 | -2/+10 | |
2014-03-30 | added ARM11 MMU from skyeye | bunnei | 1 | -2/+2 | |
2014-03-25 | added a GetPointer function to Memory for use with ELF loading | bunnei | 1 | -1/+4 | |
2013-09-20 | added mem_map hardware writing | ShizZy | 1 | -0/+3 | |
2013-09-19 | added hw R/W/ memory functions | ShizZy | 1 | -2/+1 | |
2013-09-19 | refactored some mem_map stuff | ShizZy | 1 | -1/+1 | |
2013-09-14 | renamed project to 'citrus' | ShizZy | 1 | -1/+1 | |
2013-09-06 | start of 3DS memory map | ShizZy | 1 | -4/+25 | |
2013-09-06 | added core and mem_map files to the project | ShizZy | 1 | -0/+58 | |