<feed xmlns='http://www.w3.org/2005/Atom'>
<title>eglantine-cirakg/src/common/page_table.h, branch nx2</title>
<subtitle>Mirror of github.com/cira0100/Eglantine-public nx2, a fork of Djihads80/Eglantine.</subtitle>
<id>https://git.cirakg.xyz/eglantine-cirakg/atom?h=nx2</id>
<link rel='self' href='https://git.cirakg.xyz/eglantine-cirakg/atom?h=nx2'/>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/'/>
<updated>2026-09-17T03:51:23+00:00</updated>
<entry>
<title>[common/page_table] unmark non-constexpr functions (#4433)</title>
<updated>2026-09-17T03:51:23+00:00</updated>
<author>
<name>lizzie</name>
<email>lizzie@eden-emu.dev</email>
</author>
<published>2026-09-17T03:51:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=73e004de6eb530567b3022531c11b92f55f265a6'/>
<id>urn:sha1:73e004de6eb530567b3022531c11b92f55f265a6</id>
<content type='text'>
`std::atomic` member functions don't translate unto `constexpr`.

Trivial change, fixes CI warning.

Signed-off-by: lizzie &lt;lizzie@eden-emu.dev&gt;

- [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions).
- [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md)
- [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability.

-------------------

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4433
Reviewed-by: MaranBr &lt;maranbr@eden-emu.dev&gt;
Reviewed-by: CamilleLaVey &lt;camillelavey99@gmail.com&gt;
</content>
</entry>
<entry>
<title>[common/core/dynarmic] Optimize page table allocations (#4219)</title>
<updated>2026-09-09T19:35:49+00:00</updated>
<author>
<name>Exverge</name>
<email>exverge@exverge.xyz</email>
</author>
<published>2026-09-09T19:35:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=5f142c7926d0c7fcbbd0ce30794d72f638a43b2a'/>
<id>urn:sha1:5f142c7926d0c7fcbbd0ce30794d72f638a43b2a</id>
<content type='text'>
Reduces the page entries from 32 bytes to 8 and rewrites `VirtualBuffer` to be more efficient in memory usage and specifically for large zero regions.

The page table will now only reserve 1GiB instead of 4GiB and of this memory it should only use at most ~8MiB.

This PR has the side effect of using Eden on Windows on low memory systems much more plausible since it would previously require ~10GiB of committable memory at front (despite using ~5-6 at most, inadvertently stalling other processes) where as now it should only require around the amount that it'll actually use.

Co-authored-by: Lizzie &lt;lizzie@eden-emu.dev&gt;
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4219
Reviewed-by: Maufeat &lt;sahyno1996@gmail.com&gt;
Reviewed-by: lizzie &lt;lizzie@eden-emu.dev&gt;
Reviewed-by: CamilleLaVey &lt;camillelavey99@gmail.com&gt;
</content>
</entry>
<entry>
<title>[hle] reuse previous pagetable when initializing new processes on the same KProcessPageTable (#3891)</title>
<updated>2026-04-27T23:15:21+00:00</updated>
<author>
<name>lizzie</name>
<email>lizzie@eden-emu.dev</email>
</author>
<published>2026-04-27T23:15:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=c172abfb53e664b1f1e2cd11c6dfb99e6202553e'/>
<id>urn:sha1:c172abfb53e664b1f1e2cd11c6dfb99e6202553e</id>
<content type='text'>
VirtualBuffer&lt;&gt; would be recreated each time due to the `operator=()` from the unique_ptr&lt;&gt; when initializing a new process, this change makes it so said thing doesn't happen (instead it resizes the existing buffer)

this means that consecutive launches of the same process that happen to have the same process page table (or reuse it) will no longer incur a ctor/dtor path for VirtualBuffer and instead just resize the existing one

Signed-off-by: lizzie &lt;lizzie@eden-emu.dev&gt;

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3891
Reviewed-by: crueter &lt;crueter@eden-emu.dev&gt;
Reviewed-by: CamilleLaVey &lt;camillelavey99@gmail.com&gt;
</content>
</entry>
<entry>
<title>[dynarmic, common] pagetable clustering (#3215)</title>
<updated>2026-01-12T23:27:31+00:00</updated>
<author>
<name>lizzie</name>
<email>lizzie@eden-emu.dev</email>
</author>
<published>2026-01-12T23:27:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=dceeccd04bb11bf4f719a7d403f43f6ebf153f49'/>
<id>urn:sha1:dceeccd04bb11bf4f719a7d403f43f6ebf153f49</id>
<content type='text'>
Raises the size of each page entry to 32 bytes, however, it merges them into a single structure
THEORETICALLY this is better since the access pattern observed corresponds to the program wanting backing_addr/pointers/blocks immediately after one another.
This may improve performance at the cost of some extra memory.
Another implementation would be to structure only backing_addr/blocks within the same virtual buffer.
Alas spamming virtual buffers is evil since each of them is a cache trasher (imagine jumping from wildly different block to wildly different block immediately).

Signed-off-by: lizzie lizzie@eden-emu.dev

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3215
Reviewed-by: DraVee &lt;dravee@eden-emu.dev&gt;
Reviewed-by: CamilleLaVey &lt;camillelavey99@gmail.com&gt;
Co-authored-by: lizzie &lt;lizzie@eden-emu.dev&gt;
Co-committed-by: lizzie &lt;lizzie@eden-emu.dev&gt;
</content>
</entry>
<entry>
<title>kernel: add KPageTableBase</title>
<updated>2023-11-10T17:01:35+00:00</updated>
<author>
<name>Liam</name>
<email>byteslice@airmail.cc</email>
</author>
<published>2023-10-23T01:16:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=713f292a25a98901694370708a01aa17cfd26c54'/>
<id>urn:sha1:713f292a25a98901694370708a01aa17cfd26c54</id>
<content type='text'>
Co-authored-by: Kelebek1 &lt;eeeedddccc@hotmail.co.uk&gt;
</content>
</entry>
<entry>
<title>Fixes and workarounds to make UBSan happier on macOS</title>
<updated>2023-07-15T19:00:28+00:00</updated>
<author>
<name>comex</name>
<email>comexk@gmail.com</email>
</author>
<published>2023-07-01T22:00:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=85d77f636c7ab28ea67c4c303f5d85b063ceed73'/>
<id>urn:sha1:85d77f636c7ab28ea67c4c303f5d85b063ceed73</id>
<content type='text'>
There are still some other issues not addressed here, but it's a start.

Workarounds for false-positive reports:

- `RasterizerAccelerated`: Put a gigantic array behind a `unique_ptr`,
  because UBSan has a [hardcoded limit](https://stackoverflow.com/questions/64531383/c-runtime-error-using-fsanitize-undefined-object-has-a-possibly-invalid-vp)
  of how big it thinks objects can be, specifically when dealing with
  offset-to-top values used with multiple inheritance.  Hopefully this
  doesn't have a performance impact.

- `QueryCacheBase::QueryCacheBase`: Avoid an operation that UBSan thinks
  is UB even though it at least arguably isn't.  See the link in the
  comment for more information.

Fixes for correct reports:

- `PageTable`, `Memory`: Use `uintptr_t` values instead of pointers to
  avoid UB from pointer overflow (when pointer arithmetic wraps around
  the address space).

- `KScheduler::Reload`: `thread-&gt;GetOwnerProcess()` can be `nullptr`;
  avoid calling methods on it in this case.  (The existing code returns
  a garbage reference to a field, which is then passed into
  `LoadWatchpointArray`, and apparently it's never used, so it's
  harmless in practice but still triggers UBSan.)

- `KAutoObject::Close`: This function calls `this-&gt;Destroy()`, which
  overwrites the beginning of the object with junk (specifically a free
  list pointer).  Then it calls `this-&gt;UnregisterWithKernel()`.  UBSan
  complains about a type mismatch because the vtable has been
  overwritten, and I believe this is indeed UB.  `UnregisterWithKernel`
  also loads `m_kernel` from the 'freed' object, which seems to be
  technically safe (the overwriting doesn't extend as far as that
  field), but seems dubious.  Switch to a `static` method and load
  `m_kernel` in advance.
</content>
</entry>
<entry>
<title>Use spans over guest memory where possible instead of copying data.</title>
<updated>2023-07-02T22:09:48+00:00</updated>
<author>
<name>Kelebek1</name>
<email>eeeedddccc@hotmail.co.uk</email>
</author>
<published>2023-05-28T23:35:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=42638691b541a29e0362c8aba6da3e2e873457c2'/>
<id>urn:sha1:42638691b541a29e0362c8aba6da3e2e873457c2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>core/debugger: memory breakpoint support</title>
<updated>2022-06-16T17:18:07+00:00</updated>
<author>
<name>Liam</name>
<email>byteslice@airmail.cc</email>
</author>
<published>2022-06-06T16:56:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=8d2abc710cbcf98f0e2e5ed4645bb6f53301dfb1'/>
<id>urn:sha1:8d2abc710cbcf98f0e2e5ed4645bb6f53301dfb1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>general: Convert source file copyright comments over to SPDX</title>
<updated>2022-04-23T09:55:32+00:00</updated>
<author>
<name>Morph</name>
<email>39850852+Morph1984@users.noreply.github.com</email>
</author>
<published>2022-04-23T08:59:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=2b87305d319f0bd04da36fb96314934f37b12637'/>
<id>urn:sha1:2b87305d319f0bd04da36fb96314934f37b12637</id>
<content type='text'>
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
</content>
</entry>
<entry>
<title>common: Reduce unused includes</title>
<updated>2022-03-19T19:01:31+00:00</updated>
<author>
<name>ameerj</name>
<email>52414509+ameerj@users.noreply.github.com</email>
</author>
<published>2022-03-19T04:23:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=e70b4f3fc52c2d4315ded26979cee67d81a07099'/>
<id>urn:sha1:e70b4f3fc52c2d4315ded26979cee67d81a07099</id>
<content type='text'>
</content>
</entry>
</feed>
