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);