Separate address types from memory management.
This allows extracting some code from the architecture specific headers.
Change-Id: I37f7d9955a10025ef491c4e2ca76a6ffaf123a6b
diff --git a/src/fdt_handler.c b/src/fdt_handler.c
index 8121790..99ea4d4 100644
--- a/src/fdt_handler.c
+++ b/src/fdt_handler.c
@@ -174,14 +174,14 @@
bool ret = false;
/* Map the fdt header in. */
- if (!mm_identity_map(mm_va_from_pa(fdt_addr),
- va_init(pa_addr(fdt_addr) + fdt_header_size()),
+ if (!mm_identity_map(va_from_pa(fdt_addr),
+ va_add(va_from_pa(fdt_addr), fdt_header_size()),
MM_MODE_R)) {
dlog("Unable to map FDT header.\n");
goto err_unmap_fdt_header;
}
- fdt = mm_ptr_from_va(mm_va_from_pa(fdt_addr));
+ fdt = ptr_from_va(va_from_pa(fdt_addr));
if (!fdt_root_node(&n, fdt)) {
dlog("FDT failed validation.\n");
@@ -189,8 +189,8 @@
}
/* Map the rest of the fdt in. */
- if (!mm_identity_map(mm_va_from_pa(fdt_addr),
- va_init(pa_addr(fdt_addr) + fdt_total_size(fdt)),
+ if (!mm_identity_map(va_from_pa(fdt_addr),
+ va_add(va_from_pa(fdt_addr), fdt_total_size(fdt)),
MM_MODE_R)) {
dlog("Unable to map full FDT.\n");
goto err_unmap_fdt_header;
@@ -213,13 +213,13 @@
ret = true;
out_unmap_fdt:
- mm_unmap(mm_va_from_pa(fdt_addr),
- va_init(pa_addr(fdt_addr) + fdt_total_size(fdt)), 0);
+ mm_unmap(va_from_pa(fdt_addr),
+ va_add(va_from_pa(fdt_addr), fdt_total_size(fdt)), 0);
return ret;
err_unmap_fdt_header:
- mm_unmap(mm_va_from_pa(fdt_addr),
- va_init(pa_addr(fdt_addr) + fdt_header_size()), 0);
+ mm_unmap(va_from_pa(fdt_addr),
+ va_add(va_from_pa(fdt_addr), fdt_header_size()), 0);
return false;
}
@@ -230,14 +230,14 @@
bool ret = false;
/* Map the fdt header in. */
- if (!mm_identity_map(mm_va_from_pa(fdt_addr),
- va_init(pa_addr(fdt_addr) + fdt_header_size()),
+ if (!mm_identity_map(va_from_pa(fdt_addr),
+ va_add(va_from_pa(fdt_addr), fdt_header_size()),
MM_MODE_R)) {
dlog("Unable to map FDT header.\n");
return false;
}
- fdt = mm_ptr_from_va(mm_va_from_pa(fdt_addr));
+ fdt = ptr_from_va(va_from_pa(fdt_addr));
if (!fdt_root_node(&n, fdt)) {
dlog("FDT failed validation.\n");
@@ -245,9 +245,9 @@
}
/* Map the fdt (+ a page) in r/w mode in preparation for updating it. */
- if (!mm_identity_map(mm_va_from_pa(fdt_addr),
- va_init(pa_addr(fdt_addr) + fdt_total_size(fdt) +
- PAGE_SIZE),
+ if (!mm_identity_map(va_from_pa(fdt_addr),
+ va_add(va_from_pa(fdt_addr),
+ fdt_total_size(fdt) + PAGE_SIZE),
MM_MODE_R | MM_MODE_W)) {
dlog("Unable to map FDT in r/w mode.\n");
goto err_unmap_fdt_header;
@@ -291,9 +291,9 @@
out_unmap_fdt:
/* Unmap FDT. */
- if (!mm_unmap(mm_va_from_pa(fdt_addr),
- va_init(pa_addr(fdt_addr) + fdt_total_size(fdt) +
- PAGE_SIZE),
+ if (!mm_unmap(va_from_pa(fdt_addr),
+ va_add(va_from_pa(fdt_addr),
+ fdt_total_size(fdt) + PAGE_SIZE),
0)) {
dlog("Unable to unmap writable FDT.\n");
return false;
@@ -301,7 +301,7 @@
return ret;
err_unmap_fdt_header:
- mm_unmap(mm_va_from_pa(fdt_addr),
- va_init(pa_addr(fdt_addr) + fdt_header_size()), 0);
+ mm_unmap(va_from_pa(fdt_addr),
+ va_add(va_from_pa(fdt_addr), fdt_header_size()), 0);
return false;
}