exosphere, storage requirements:

Nonvolatile memory:
0xE000

Volatile memory: 0x2000

Physical Address Space:
-0x7C010000-0x7C012000 - boot code/volatile memory
-0x7C012000-0x7C01E000 - program region
-0x7C01E000-0x7C01F000 - global data/context
-0x7C01F000-0x7C020000 - L2/L3 page table

-0x7C020000-0x7C040000 - Mariko-only program region
-0x7C040000-0x7C048000 - Mariko-only program stack
-0x7C048000-0x7C050000 - Reserved Mariko TZRAM (SE context carveouts, etc)

Virtual Address Space:

L1: 0x40 bytes.

L1 Entries:
    -0 (0x000000000-0x040000000): Empty
    -1 (0x040000000-0x080000000): Identity Mapping/Empty
    -2 (0x080000000-0x0C0000000): DRAM Mapping/Empty
    -3 (0x0C0000000-0x100000000): DRAM Mapping/Empty
    -4 (0x100000000-0x140000000): Empty
    -5 (0x140000000-0x180000000): Empty
    -6 (0x180000000-0x1C0000000): Empty
    -7 (0x1C0000000-0x200000000): Virtual Region

L2 Page and L3 page are both0x7C01F000

L2 Entries:
    -0x040000000 (Identity IRAM Table)
        - Entry Used: 0x000
    -0x07C000000 (Identity TZRAM Table)
        - Entry Used: 0x1E0
    -0x1F0000000 (Virtual Region Table)
        - Entry Used: 0x180

L3 Entries:
    - Identity TZRAM mapping (0x7C010000-0x7C020000)
        - Entry Used: 0x010-0x01F
    - Identity IRAM mapping  (0x40020000-0x40040000)
        - Entry Used: 0x020-0x03F
    - Virtual Device region (0x1F0040000-0x1F0080000)
        - Entry Used: 0x040-0x07F
    - Read Only TZRAM Alias (0x1F00A0000-0x1F00B0000)
        - Entry Used: 0x0A0-0x0AF
    - Program region        (0x1F00C0000-0x1F00CC000)
        - Entry Used: 0x0C0-0x0CB
    - Mariko Program region (0x1F00D0000-0x1F00F0000)
        - Entry Used: 0x0D0-0x0EF
    - Mariko Program stack  (0x1F00F4000-0x1F00FC000)
        - Entry Used: 0x0F4-0x0FB
    - Secure DRAM Storage   (0x1F0100000-0x1F0110000)
        - Entry Used: 0x100-0x10F
    - Debug DRAM Storage    (0x1F0110000-0x1F0114000)
        - Entry Used: 0x110-0x113
    - SC7 IRAM Work Space   (0x1F0120000-0x1F0130000)
        - Entry Used: 0x120-0x12F
    - SC7 IRAM Firmware     (0x1F0140000-0x1F0141000)
        - Entry Used: 0x140-0x140
    - Debug Code            (0x1F0150000-0x1F0154000)
        - Entry Used: 0x150-0x153
    - Reserved For Debug    (0x1F0160000-0x1F0170000)
        - Entry Used: 0x160-0x16F
    - Boot Code             (0x1F01C0000-0x1F01C2000)
        - Entry Used: 0x1C0-0x1C1
    - AMS IRAM Page         (0x1F01F2000-0x1F01F2000)
        - Entry Used: 0x1F2-0x1F2
    - AMS User Page         (0x1F01F4000-0x1F01F4000)
        - Entry Used: 0x1F4-0x1F4
    - SMC User Page         (0x1F01F6000-0x1F01F6000)
        - Entry Used: 0x1F6-0x1F6
    - Volatile (Data)       (0x1F01F8000-0x1F01F9000)
        - Entry Used: 0x1F8-0x1F8
    - Volatile (Stacks)     (0x1F01FA000-0x1F01FB000)
        - Entry Used: 0x1FA-0x1FA
    - Global Data           (0x1F01FC000-0x1F01FD000)


NV Global Data needs:
    Exosphere + Emummc Config (<=0x200)
    Boot Config[0x400]
    RSA Context(0x100)
    Old Device Keys[0x20][0x10];
    Old Master Keys[0x20][0x10];
    Imported Rsa Keys[4][0x200];
    CPU Ctx[4][0x100];

Total: 0x1700

Global Data Page (accessible via X18):
    0x000-0x200: Exosphere Config
    0x200-0x400: Emummc Config
    0x400-0x800: Sealed AES Keys
    0x800-0xC00: Boot Config
    0xC00-0xFFF: CPU contexts. Can be replaced, but this fits exactly so minimizes program space waste.

Volatile Global Data needs:
    Random Cache 0x400 bytes
