feat(runtime): for each CPU only map their own stack respectively

This commit changes the memory mapping of the stack area. Instead of
flat-mapping the whole stack area for each CPU, only map the stack
area for that particular CPU in the High region.

For this to work, the following changes are made:
 - move the mapping of the high region out from the realm lib to the
   xlat library
 - move the build time config option RMM_NUM_PAGES_PER_STACK to the xlat
   library.
 - add a new mm region to the high VA space for the stack of that CPU.
 - reorder segments in the linker script so that `.percpu` segment is
   the last. Change flat-mapping configurations so that the `.percpu`
   segment is not added.

Change-Id: I997c1b5ff2b972807d75692b5efc9075c5a29a30
Signed-off-by: Mate Toth-Pal <mate.toth-pal@arm.com>
diff --git a/plat/common/src/plat_common_init.c b/plat/common/src/plat_common_init.c
index 2a2afa1..2e51d7b 100644
--- a/plat/common/src/plat_common_init.c
+++ b/plat/common/src/plat_common_init.c
@@ -16,6 +16,7 @@
 #include <stdint.h>
 #include <string.h>
 #include <xlat_contexts.h>
+#include <xlat_high_va.h>
 #include <xlat_tables.h>
 
 
@@ -179,8 +180,7 @@
 	/* Read supported GIC virtualization features and init GIC variables */
 	gic_get_virt_features();
 
-	/* Perform coold boot initialization of the slot buffer mechanism */
-	return slot_buf_coldboot_init();
+	return 0;
 }
 
 /*
@@ -202,8 +202,13 @@
 		return ret;
 	}
 
-	/* Setup the MMU cfg for the slot buffer context (high region) */
-	slot_buf_setup_xlat();
+	/* Perform warm boot initialization of the high VA region */
+	ret = xlat_high_va_setup();
+	if (ret != 0) {
+		ERROR("%s (%u): Failed to setup high VA for CPU[%u]\n",
+			__func__, __LINE__, my_cpuid());
+		return ret;
+	}
 
 	VERBOSE("xlat tables configured for CPU[%u]\n", my_cpuid());
 	return 0;