refactor(manifest): extract `pages-count` parsing to function

Extract the code for parsing `pages-count` and validating that it is
greater than 0 to a separate function.

Change-Id: I4b722df9338815b36f9e5eb9696cfab95a34a522
Signed-off-by: Karl Meakin <karl.meakin@arm.com>
diff --git a/src/manifest.c b/src/manifest.c
index 6648254..e9fdd01 100644
--- a/src/manifest.c
+++ b/src/manifest.c
@@ -597,14 +597,6 @@
 {
 	bool overlap_of_regions;
 
-	if (page_count == 0U) {
-		dlog_error(
-			"Empty memory region defined with base address: "
-			"%#lx.\n",
-			base_address);
-		return MANIFEST_ERROR_MEM_REGION_EMPTY;
-	}
-
 	if (!is_aligned(base_address, PAGE_SIZE)) {
 		dlog_error("base_address (%#lx) is not aligned to page size.\n",
 			   base_address);
@@ -761,6 +753,18 @@
 	return MANIFEST_SUCCESS;
 }
 
+static enum manifest_return_code parse_page_count(struct fdt_node *node,
+						  uint32_t *page_count)
+{
+	TRY(read_uint32(node, "pages-count", page_count));
+
+	if (*page_count == 0) {
+		return MANIFEST_ERROR_MEM_REGION_EMPTY;
+	}
+
+	return MANIFEST_SUCCESS;
+}
+
 static enum manifest_return_code parse_ffa_memory_region_node(
 	struct fdt_node *mem_node, uintptr_t load_address,
 	struct memory_region *mem_regions, uint16_t *count, struct rx_tx *rxtx,
@@ -792,8 +796,7 @@
 		TRY(parse_base_address(mem_node, load_address,
 				       &mem_regions[i]));
 
-		TRY(read_uint32(mem_node, "pages-count",
-				&mem_regions[i].page_count));
+		TRY(parse_page_count(mem_node, &mem_regions[i].page_count));
 		dlog_verbose("      Pages_count: %u\n",
 			     mem_regions[i].page_count);
 
@@ -932,8 +935,7 @@
 		dlog_verbose("      Base address: %#lx\n",
 			     dev_regions[i].base_address);
 
-		TRY(read_uint32(dev_node, "pages-count",
-				&dev_regions[i].page_count));
+		TRY(parse_page_count(dev_node, &dev_regions[i].page_count));
 		dlog_verbose("      Pages_count: %u\n",
 			     dev_regions[i].page_count);