MEMORY MAP

Circle on Raspberry Pi 1

------------------------------------------------------------------------------
Base		Size		Contents		Remarks
------------------------------------------------------------------------------
00000000	32 Bytes	Exception vector table
...
00000100	variable	ATAGS			unused
...
00008000	max. 2 MByte	Kernel image
				 .init			startup code
				 .text
				 .rodata
				 .init_array		static constructors
				 .ARM.exidx		C++ exception index
				 .eh_frame		unused
				 .data
				 .bss
...
00208000	128 KByte	Kernel stack
00228000	32 KByte	Abort exception stack
00230000	32 KByte	IRQ exception stack
00238000	32 KByte	FIQ exception stack
00240000	16 KByte	Page table 1
...
00400000	1 MByte		Coherent region		for property mailbox, VCHIQ
00500000	variable	Heap allocator		malloc()
????????	4 MByte		Page allocator		palloc()
????????	variable	GPU memory
20000000			Peripherals
...
------------------------------------------------------------------------------

Circle on Raspberry Pi 2 and 3 (AArch32)

------------------------------------------------------------------------------
Base		Size		Contents		Remarks
------------------------------------------------------------------------------
00000000	256 Bytes	ARM stub		Core 1-3 spin here
00000000	32 Bytes	 Exception vector table

00000100	variable	ATAGS			unused
...
00008000	max. 2 MByte	Kernel image
				 .init			startup code
				 .text
				 .rodata
				 .init_array		static constructors
				 .ARM.exidx		C++ exception index
				 .eh_frame		unused
				 .data
				 .bss
...
				Kernel stacks
00208000	128 KByte	 for Core 0
00228000	128 KByte	 for Core 1		may be unused
00248000	128 KByte	 for Core 2		may be unused
00268000	128 KByte	 for Core 3		may be unused

				Abort exception stacks
00288000	32 KByte	 for Core 0
00290000	32 KByte	 for Core 1		may be unused
00298000	32 KByte	 for Core 2		may be unused
002A0000	32 KByte	 for Core 3		may be unused

				IRQ exception stacks
002A8000	32 KByte	 for Core 0
002B0000	32 KByte	 for Core 1		may be unused
002B8000	32 KByte	 for Core 2		may be unused
002C0000	32 KByte	 for Core 3		may be unused

				FIQ exception stacks
002C8000	32 KByte	 for Core 0
002D0000	32 KByte	 for Core 1		may be unused
002D8000	32 KByte	 for Core 2		may be unused
002E0000	32 KByte	 for Core 3		may be unused

002E8000	16 KByte	Page table 1
...
00400000	1 MByte		Coherent region		for property mailbox, VCHIQ
00500000	variable	Heap allocator		malloc()
????????	4 MByte		Page allocator		palloc()

1F000000	variable	rpi_stub		if used for debugging
...
????????	variable	GPU memory
3F000000	16 MByte	Peripherals
40000000			Local peripherals
...
------------------------------------------------------------------------------

Circle on Raspberry Pi 3 (AArch64)

------------------------------------------------------------------------------
Base		Size		Contents		Remarks
------------------------------------------------------------------------------
00000000	256 Bytes	ARM stub		Core 1-3 spin here

00000100	variable	ATAGS			unused
...
00080000	max. 2 MByte	Kernel image
				 .init			startup code
				 .text
				 .rodata
				 .init_array		static constructors
				 .ARM.exidx		unused
				 .eh_frame		C++ exception frames
				 .data
				 .bss
...
				Kernel stacks
00280000	128 KByte	 for Core 0
002A0000	128 KByte	 for Core 1		may be unused
002C0000	128 KByte	 for Core 2		may be unused
002E0000	128 KByte	 for Core 3		may be unused

				Exception stacks
00300000	32 KByte	 for Core 0
00308000	32 KByte	 for Core 1		may be unused
00310000	32 KByte	 for Core 2		may be unused
00318000	32 KByte	 for Core 3		may be unused

00500000	1 MByte		Coherent region		for property mailbox, VCHIQ
00600000	variable	Heap allocator		malloc()
????????	16 MByte	Page allocator		palloc()

????????	variable	GPU memory
3F000000	16 MByte	Peripherals
40000000			Local peripherals
...
------------------------------------------------------------------------------

Circle on Raspberry Pi 4 (AArch32, LPAE)

------------------------------------------------------------------------------
Base		Size		Contents		Remarks
------------------------------------------------------------------------------
00000000	256 Bytes	ARM stub		Core 1-3 spin here
00000000	32 Bytes	 Exception vector table

00000100	variable	ATAGS			unused
...
00008000	max. 2 MByte	Kernel image
				 .init			startup code
				 .text
				 .rodata
				 .init_array		static constructors
				 .ARM.exidx		C++ exception index
				 .eh_frame		unused
				 .data
				 .bss
...
				Kernel stacks
00208000	128 KByte	 for Core 0
00228000	128 KByte	 for Core 1		may be unused
00248000	128 KByte	 for Core 2		may be unused
00268000	128 KByte	 for Core 3		may be unused

				Abort exception stacks
00288000	32 KByte	 for Core 0
00290000	32 KByte	 for Core 1		may be unused
00298000	32 KByte	 for Core 2		may be unused
002A0000	32 KByte	 for Core 3		may be unused

				IRQ exception stacks
002A8000	32 KByte	 for Core 0
002B0000	32 KByte	 for Core 1		may be unused
002B8000	32 KByte	 for Core 2		may be unused
002C0000	32 KByte	 for Core 3		may be unused

				FIQ exception stacks
002C8000	32 KByte	 for Core 0
002D0000	32 KByte	 for Core 1		may be unused
002D8000	32 KByte	 for Core 2		may be unused
002E0000	32 KByte	 for Core 3		may be unused

002E8000	16 KByte	Page table 1
...
00400000	4 MByte		Coherent region		for property mailbox, VCHIQ, xHCI
00800000	variable	Heap allocator		"new" and malloc()
????????	4 MByte		Page allocator		palloc()

????????	variable	GPU memory
40000000	variable	High heap allocator	unused above 0xC0000000
...
FA000000	2 MByte		xHCI controller		mapped from 0x600000000
...
FC000000	64 MByte	Peripherals
------------------------------------------------------------------------------

Circle on Raspberry Pi 4 (AArch64)

------------------------------------------------------------------------------
Base		Size		Contents		Remarks
------------------------------------------------------------------------------
00000000	256 Bytes	ARM stub		Core 1-3 spin here

00000100	variable	ATAGS			unused
...
0006F000	4 KByte		EL3 stack
00070000	2 KByte		Exception vector table EL3
...
00080000	max. 2 MByte	Kernel image
				 .init			startup code
				 .text
				 .rodata
				 .init_array		static constructors
				 .ARM.exidx		unused
				 .eh_frame		C++ exception frames
				 .data
				 .bss
...
				Kernel stacks
00280000	128 KByte	 for Core 0
002A0000	128 KByte	 for Core 1		may be unused
002C0000	128 KByte	 for Core 2		may be unused
002E0000	128 KByte	 for Core 3		may be unused

				Exception stacks
00300000	32 KByte	 for Core 0
00308000	32 KByte	 for Core 1		may be unused
00310000	32 KByte	 for Core 2		may be unused
00318000	32 KByte	 for Core 3		may be unused

00500000	4 MByte		Coherent region		for property mailbox, VCHIQ, xHCI
00900000	variable	Heap allocator		"new" and malloc()
????????	16 MByte	Page allocator		palloc()

????????	variable	GPU memory
40000000	variable	High heap allocator	unused above 0xC0000000
...
FC000000	64 MByte	Peripherals
...
600000000	64 MByte	xHCI controller
...
------------------------------------------------------------------------------

Circle on Raspberry Pi 5 (AArch64)

------------------------------------------------------------------------------
Base		Size		Contents		Remarks
------------------------------------------------------------------------------
00000000	32 KByte	ARM Trusted Firmware	BL31
...
00080000	max. 2 MByte	Kernel image
				 .init			startup code
				 .text
				 .rodata
				 .init_array		static constructors
				 .ARM.exidx		unused
				 .eh_frame		C++ exception frames
				 .data
				 .bss
...
				Kernel stacks
00280000	128 KByte	 for Core 0
002A0000	128 KByte	 for Core 1		may be unused
002C0000	128 KByte	 for Core 2		may be unused
002E0000	128 KByte	 for Core 3		may be unused

				Exception stacks
00300000	32 KByte	 for Core 0
00308000	32 KByte	 for Core 1		may be unused
00310000	32 KByte	 for Core 2		may be unused
00318000	32 KByte	 for Core 3		may be unused

00500000	4 MByte		Coherent region		for property mailbox, MACB, xHCI
00900000	variable	Heap allocator		"new" and malloc()
????????	16 MByte	Page allocator		palloc()

????????	variable	GPU memory
40000000	variable	High heap allocator
...
1000000000	16 MByte	AXI peripherals
...
107C000000	16 MByte	SoC peripherals
...
10F0000000	4 MByte		RP1 peripherals		PCI Bus 0000:01
...
------------------------------------------------------------------------------
