Fork us on GitHub Follow us on Facebook Follow us on Twitter

Version 6 (modified by Jakub Jermář, 8 years ago) (diff)

Virtual address spaces per architecture

Below are the various situations as dictated by the design of each supported architecture. The identity / non-identity here correspond to hardware limitations rather than to how HelenOS currently operates.


amd64

48-bit VAS

0xffff800000000000 128TiB kernel non-identity
0x0000800000000000 16776960TiB VA hole (1)
0x0000000000000000 128TiB uspace non-identity
  1. depends on implementation, but in practice current implementations use 48 bits

arm32

TBD


ia32

0x80000000 2GiB kernel non-identity
0x00000000 2GiB uspace non-identity

ia64

TBD


mips32

0xe0000000 512MiB kernel non-identity kseg3
0xc0000000 512MiB kernel non-identity ksseg
0xa0000000 512MiB spec kseg1 (1)
0x80000000 512MiB kernel identity kseg0 (2)
0x00000000 2GiB uspace non-identity kuseg
  1. maps to physical 0, uncached, bypasses TLB
  2. maps to physical 0, cacheable, bypasses TLB

ppc32

TBD


sparc64

UltraSPARC I, II, IIi

44-bit VAS

0xfffff80000000000 8TiB kernel non-identity
0x0000080000000000 16777200TiB VA hole (1)
0x0000000000000000 8TiB kernel non-identity
  1. no code within 4GiB reach of the VA hole on UltraSPARC I and II

UltraSPARC III, IIIi, IV and IV+

64-bit VAS

0x0000000000000000 16EiB kernel non-identity

UltraSPARC T1, T2

48-bit VAS

0xffff800000000000 128TiB kernel non-identity
0x0000800000000000 16776960TiB VA hole (1), (2)
0x0000000000000000 128TiB kernel non-identity
  1. no code within 4GiB reach of the VA hole on T1
  2. no code within 8KiB below VA hole on T2