diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2018-11-28 20:18:09 -0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-11-28 20:18:09 -0200 |
| commit | 00579927e43bf55ee06ae02933c1e755fb4120eb (patch) | |
| tree | 0fd06db7b28e0accf87b465ec6f4dc74691febab /Ryujinx.HLE/Memory/DeviceMemory.cs | |
| parent | e7fe7d724778535f8eff390abef54274a343c0b7 (diff) | |
Better process implementation (#491)
* Initial implementation of KProcess
* Some improvements to the memory manager, implement back guest stack trace printing
* Better GetInfo implementation, improve checking in some places with information from process capabilities
* Allow the cpu to read/write from the correct memory locations for accesses crossing a page boundary
* Change long -> ulong for address/size on memory related methods to avoid unnecessary casts
* Attempt at implementing ldr:ro with new KProcess
* Allow BSS with size 0 on ldr:ro
* Add checking for memory block slab heap usage, return errors if full, exit gracefully
* Use KMemoryBlockSize const from KMemoryManager
* Allow all methods to read from non-contiguous locations
* Fix for TransactParcelAuto
* Address PR feedback, additionally fix some small issues related to the KIP loader and implement SVCs GetProcessId, GetProcessList, GetSystemInfo, CreatePort and ManageNamedPort
* Fix wrong check for source pages count from page list on MapPhysicalMemory
* Fix some issues with UnloadNro on ldr:ro
Diffstat (limited to 'Ryujinx.HLE/Memory/DeviceMemory.cs')
| -rw-r--r-- | Ryujinx.HLE/Memory/DeviceMemory.cs | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/Ryujinx.HLE/Memory/DeviceMemory.cs b/Ryujinx.HLE/Memory/DeviceMemory.cs deleted file mode 100644 index 3c5f2e5f..00000000 --- a/Ryujinx.HLE/Memory/DeviceMemory.cs +++ /dev/null @@ -1,130 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace Ryujinx.HLE.Memory -{ - class DeviceMemory : IDisposable - { - public const long RamSize = 4L * 1024 * 1024 * 1024; - - public ArenaAllocator Allocator { get; private set; } - - public IntPtr RamPointer { get; private set; } - - private unsafe byte* RamPtr; - - public unsafe DeviceMemory() - { - Allocator = new ArenaAllocator(RamSize); - - RamPointer = Marshal.AllocHGlobal(new IntPtr(RamSize)); - - RamPtr = (byte*)RamPointer; - } - - public sbyte ReadSByte(long Position) - { - return (sbyte)ReadByte(Position); - } - - public short ReadInt16(long Position) - { - return (short)ReadUInt16(Position); - } - - public int ReadInt32(long Position) - { - return (int)ReadUInt32(Position); - } - - public long ReadInt64(long Position) - { - return (long)ReadUInt64(Position); - } - - public unsafe byte ReadByte(long Position) - { - return *((byte*)(RamPtr + Position)); - } - - public unsafe ushort ReadUInt16(long Position) - { - return *((ushort*)(RamPtr + Position)); - } - - public unsafe uint ReadUInt32(long Position) - { - return *((uint*)(RamPtr + Position)); - } - - public unsafe ulong ReadUInt64(long Position) - { - return *((ulong*)(RamPtr + Position)); - } - - public void WriteSByte(long Position, sbyte Value) - { - WriteByte(Position, (byte)Value); - } - - public void WriteInt16(long Position, short Value) - { - WriteUInt16(Position, (ushort)Value); - } - - public void WriteInt32(long Position, int Value) - { - WriteUInt32(Position, (uint)Value); - } - - public void WriteInt64(long Position, long Value) - { - WriteUInt64(Position, (ulong)Value); - } - - public unsafe void WriteByte(long Position, byte Value) - { - *((byte*)(RamPtr + Position)) = Value; - } - - public unsafe void WriteUInt16(long Position, ushort Value) - { - *((ushort*)(RamPtr + Position)) = Value; - } - - public unsafe void WriteUInt32(long Position, uint Value) - { - *((uint*)(RamPtr + Position)) = Value; - } - - public unsafe void WriteUInt64(long Position, ulong Value) - { - *((ulong*)(RamPtr + Position)) = Value; - } - - public void FillWithZeros(long Position, int Size) - { - int Size8 = Size & ~(8 - 1); - - for (int Offs = 0; Offs < Size8; Offs += 8) - { - WriteInt64(Position + Offs, 0); - } - - for (int Offs = Size8; Offs < (Size - Size8); Offs++) - { - WriteByte(Position + Offs, 0); - } - } - - public void Dispose() - { - Dispose(true); - } - - protected virtual void Dispose(bool Disposing) - { - Marshal.FreeHGlobal(RamPointer); - } - } -}
\ No newline at end of file |
