diff options
| author | Triang3l <triang3l@yandex.ru> | 2019-08-16 09:26:34 +0300 |
|---|---|---|
| committer | Triang3l <triang3l@yandex.ru> | 2019-08-16 09:26:34 +0300 |
| commit | 0faafd738a6d2fdd68942ca8e645f04c3194e612 (patch) | |
| tree | 9f99f2c6891c7d576cadfc96f8ba7b41c2bb26e0 /docs/cpu.md | |
| parent | 126978d9604652ee84455c759fb9b3067853888a (diff) | |
[Docs] Update 0xE0000000 range info
Diffstat (limited to 'docs/cpu.md')
| -rw-r--r-- | docs/cpu.md | 9 |
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 |
