diff options
author | Juan Castillo <juan.castillo@arm.com> | 2015-01-19 16:51:21 +0000 |
---|---|---|
committer | Dan Handley <dan.handley@arm.com> | 2015-01-28 18:24:31 +0000 |
commit | c5fb47c389000c7a5189c0ad28a26bf50bf7e65c (patch) | |
tree | 868d0aceaa9472ac068c7e5dc664188b09bde53c /common/bl_common.c | |
parent | 03b2370386f5acbb4fb11614825c67ff38ef9edc (diff) |
Skip reserving memory for non-executable and BL3-0 images
This patch adds support to not reserve the memory where an image is
loaded if the image is:
1. A non-executable image e.g. a certificate
2. An executable image which is not meant to run on the
application CPU (e.g. BL3-0)
Both types of images are characterized by a NULL entrypoint argument
to the load_image() function. It is used to distinguish them from
other type of images.
Important: Use this feature carefully. The caller is responsible for
providing a valid entrypoint while loading images which will execute
on the application CPU to prevent a potential overwrite of the
corresponding memory region.
Change-Id: Ied482280d9db714c529ec12c33a6c1d918d77a4e
Diffstat (limited to 'common/bl_common.c')
-rw-r--r-- | common/bl_common.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/common/bl_common.c b/common/bl_common.c index 60f8b2f7..8c241ec4 100644 --- a/common/bl_common.c +++ b/common/bl_common.c @@ -275,9 +275,16 @@ int load_image(meminfo_t *mem_layout, * Update the memory usage info. * This is done after the actual loading so that it is not updated when * the load is unsuccessful. + * If the caller does not provide an entry point, bypass the memory + * reservation. */ - reserve_mem(&mem_layout->free_base, &mem_layout->free_size, - image_base, image_size); + if (entry_point_info != NULL) { + reserve_mem(&mem_layout->free_base, &mem_layout->free_size, + image_base, image_size); + } else { + INFO("Skip reserving memory: 0x%lx - 0x%lx\n", + image_base, image_base + image_size); + } image_data->image_base = image_base; image_data->image_size = image_size; |