summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorTriang3l <triang3l@yandex.ru>2019-08-16 09:26:34 +0300
committerTriang3l <triang3l@yandex.ru>2019-08-16 09:26:34 +0300
commit0faafd738a6d2fdd68942ca8e645f04c3194e612 (patch)
tree9f99f2c6891c7d576cadfc96f8ba7b41c2bb26e0 /docs
parent126978d9604652ee84455c759fb9b3067853888a (diff)
[Docs] Update 0xE0000000 range info
Diffstat (limited to 'docs')
-rw-r--r--docs/cpu.md9
1 files changed, 5 insertions, 4 deletions
diff --git a/docs/cpu.md b/docs/cpu.md
index 1b2794e66..f3d386ee7 100644
--- a/docs/cpu.md
+++ b/docs/cpu.md
@@ -93,10 +93,11 @@ physical pages are usually allocated by MmAllocatePhysicalMemoryEx.
Virtual pages mapped to physical memory are also mapped to the physical membase,
i.e. virtual 0xA0000000 == physical 0x00000000
-Unfortunately, the 0xE0000000-0xFFFFFFFF range is unused in Xenia because
-it maps to physical memory with a single page offset, which is impossible
-to do under the Win32 API. We can't fake this either, as this offset is
-built into games - see the following sequence:
+The 0xE0000000-0xFFFFFFFF range is mapped to physical memory with a single 4 KB
+page offset. On Windows, memory mappings must be aligned to 64 KB, so the offset
+has to be added when guest addresses are converted to host addresses in the
+translated CPU code. This can't be faked other ways because calculations
+involving the offset are built into games - see the following sequence:
```
srwi r9, r10, 20 # r9 = r10 >> 20