Rework BL2 to BL3-1 hand over interface
This patch reworks BL2 to BL3-1 hand over interface by introducing a
composite structure (bl31_args) that holds the superset of information
that needs to be passed from BL2 to BL3-1.

  - The extents of secure memory available to BL3-1
  - The extents of memory available to BL3-2 (not yet implemented) and
    BL3-3
  - Information to execute BL3-2 (not yet implemented) and BL3-3 images

This patch also introduces a new platform API (bl2_get_bl31_args_ptr)
that needs to be implemented by the platform code to export reference to
bl31_args structure which has been allocated in platform-defined memory.

The platform will initialize the extents of memory available to BL3-3
during early platform setup in bl31_args structure. This obviates the
need for bl2_get_ns_mem_layout platform API.

BL2 calls the bl2_get_bl31_args_ptr function to get a reference to
bl31_args structure. It uses the 'bl33_meminfo' field of this structure
to load the BL3-3 image. It sets the entry point information for the
BL3-3 image in the 'bl33_image_info' field of this structure. The
reference to this structure is passed to the BL3-1 image.

Also fixes issue ARM-software/tf-issues#25

Change-Id: Ic36426196dd5ebf89e60ff42643bed01b3500517
1 parent a7934d6 commit e4d084ea9629703166e59d116d4aefbd6f2be531
@Achin Gupta Achin Gupta authored on 19 Feb 2014
Dan Handley committed on 20 Feb 2014
Showing 13 changed files
View
bl1/bl1.ld.S
View
bl1/bl1_main.c
View
bl2/bl2_main.c
View
bl31/aarch64/bl31_entrypoint.S
View
common/bl_common.c
View
docs/porting-guide.md
View
docs/user-guide.md
View
include/aarch64/arch_helpers.h
View
include/bl2.h
View
include/bl_common.h
View
plat/fvp/bl2_plat_setup.c
View
plat/fvp/bl31_plat_setup.c
View
plat/fvp/platform.h