vexpress64: Add ARMv8R-64 board variant

The ARMv8-R64 architecture introduces optional VMSA (paging based MMU)
support in the EL1/0 translation regime, which makes that part mostly
compatible to ARMv8-A.

Add a new board variant to describe the "BASE-R64" FVP model, which
inherits a lot from the existing v8-A FVP support. One major difference
is that the memory map in "inverted": DRAM starts at 0x0, MMIO is at
2GB [1].

 * Create new TARGET_VEXPRESS64_BASER_FVP target, sharing most of the
   exising configuration.
 * Implement inverted memory map in vexpress_aemv8.h
 * Create vexpress_aemv8r defconfig
 * Provide an MMU memory map for the BASER_FVP
 * Update vexpress64 documentation

At the moment the boot-wrapper is the only supported secure firmware. As
there is no official DT for the board yet, we rely on it being supplied
by the boot-wrapper into U-Boot, so use OF_HAS_PRIOR_STAGE, and go with
a dummy DT for now.

[1] https://developer.arm.com/documentation/100964/1114/Base-Platform/Base---memory/BaseR-Platform-memory-map

Signed-off-by: Peter Hoyes <Peter.Hoyes@arm.com>
[Andre: rebase and add Linux kernel header]
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
[trini: Add MAINTAINERS entry for Peter]
diff --git a/include/configs/vexpress_aemv8.h b/include/configs/vexpress_aemv8.h
index e0f9bbe..efffea9 100644
--- a/include/configs/vexpress_aemv8.h
+++ b/include/configs/vexpress_aemv8.h
@@ -20,8 +20,13 @@
 #define CONFIG_SYS_BOOTM_LEN (64 << 20)      /* Increase max gunzip size */
 
 /* CS register bases for the original memory map. */
+#ifdef CONFIG_TARGET_VEXPRESS64_BASER_FVP
+#define V2M_DRAM_BASE			0x00000000
+#define V2M_PA_BASE			0x80000000
+#else
 #define V2M_DRAM_BASE			0x80000000
 #define V2M_PA_BASE			0x00000000
+#endif
 
 #define V2M_PA_CS0			(V2M_PA_BASE + 0x00000000)
 #define V2M_PA_CS1			(V2M_PA_BASE + 0x14000000)
@@ -229,6 +234,24 @@
 		"boot_name=boot.img\0"					\
 		"boot_addr_r=" __stringify(VEXPRESS_BOOT_ADDR) "\0"
 
+#elif CONFIG_TARGET_VEXPRESS64_BASER_FVP		/* ARMv8-R base model */
+
+#define BOOT_TARGET_DEVICES(func)	\
+	func(MEM, mem, na)		\
+	FUNC_VIRTIO(func)		\
+	func(PXE, pxe, na)		\
+	func(DHCP, dhcp, na)
+
+#define VEXPRESS_KERNEL_ADDR		0x00200000
+#define VEXPRESS_PXEFILE_ADDR		0x0fb00000
+#define VEXPRESS_FDT_ADDR		0x0fc00000
+#define VEXPRESS_SCRIPT_ADDR		0x0fd00000
+#define VEXPRESS_RAMDISK_ADDR		0x0fe00000
+
+#define EXTRA_ENV_NAMES							\
+					"kernel_name=Image\0"		\
+					"ramdisk_name=ramdisk.img\0"	\
+					"fdtfile=board.dtb\0"
 #endif
 
 #include <config_distro_bootcmd.h>