1. 05 Jun, 2014 9 commits
    • Sandrine Bailleux's avatar
      juno: Define the extents of all bootloader images · 0897d02c
      Sandrine Bailleux authored
      Define:
       - Extents of BL1 RO and RW sections
       - BL2 limit address
       - BL3-1 limit address
       - BL3-2 limit address
      
      Change-Id: Id86243c4d5b1f769a9b0d5a639665c3cb5e14aee
      0897d02c
    • Sandrine Bailleux's avatar
      juno: Implement functions to access an ARM GIC · d2090348
      Sandrine Bailleux authored
      Change-Id: I8be0cc5e2495864463c310f2d2d64740495e3bb4
      d2090348
    • Sandrine Bailleux's avatar
      juno: Implement plat_interrupt_type_to_line() function · 60663435
      Sandrine Bailleux authored
      Change-Id: I87083b5891fa8037cdee567ebadeaa1952f52d0c
      60663435
    • Sandrine Bailleux's avatar
      juno: Use the reworked handover interface between BL stages · 7c7f0515
      Sandrine Bailleux authored
      Propagate FVP changes introduced by these 3 commits:
       - 29fb905d Rework handover interface between BL stages
       - 4112bfa0 Populate BL31 input parameters as per new spec
       - 6871c5d3 Rework memory information passing to BL3-x images
      
      Change-Id: If024f575782d9c74db4cf929a2ab40563921dedd
      7c7f0515
    • Sandrine Bailleux's avatar
      juno: Provide per-EL MMU setup functions · a90bfa33
      Sandrine Bailleux authored
      Instead of having a single version of the MMU setup functions for all
      bootloader images that can execute either in EL3 or in EL1, provide
      separate functions for EL1 and EL3. Each bootloader image can then
      call the appropriate version of these functions. The aim is to reduce
      the amount of code compiled in each BL image by embedding only what's
      needed (e.g. BL1 to embed only EL3 variants).
      
      Change-Id: Ie3f6fb58f7d9ea4e4085b5069e27d6b9dceaa286
      a90bfa33
    • Sandrine Bailleux's avatar
      juno: Add support for BL3-2 image · fe23b15d
      Sandrine Bailleux authored
      This patch implements the TSP on Juno. It executes from Secure RAM.
      
      Also, the other bootloader images (i.e. BL1 R/W, BL2 and BL3-1) have
      been moved around. The reason is, although there was enough space
      overall to store the TSP in SRAM, there was no contiguous free chunk
      of SRAM big enough to hold it.
      
      This patch keeps the overall memory layout (i.e. keeping BL1 R/W at
      the bottom, BL2 at the top and BL3-1 in between) but moves the base
      addresses of all the bootloader images in such a way that:
       - memory fragmentation is reduced enough to fit BL3-2 in;
       - new base addresses are suitable for release builds as well as debug
         ones;
       - each image has a few extra kilobytes for future growth.
         BL3-1 and BL3-2 are the images which received the biggest slice
         of the cake since they will most probably grow the most.
      
      A few useful numbers for reference (valid at the time of this patch):
              |-----------------------|-------------------------------
              |  image size (debug)   |  extra space for the future
      --------|-----------------------|-------------------------------
      BL1 R/W |         28 KB         |            4 KB
      BL2     |         48 KB         |            4 KB
      BL3-1   |         96 KB         |            8 KB
      BL3-2   |         56 KB         |            8 KB
      --------|-----------------------|-------------------------------
      Total   |        228 KB         |           24 KB       = 252 KB
      --------|-----------------------|-------------------------------
      
      Note: On Juno, although the Secure RAM is 256 KB, the first 4KB
      are reserved for the AP/SCP mailboxes.
      
      Change-Id: I999ec39589c45beabe1ecd772641623e58569a6e
      fe23b15d
    • Sandrine Bailleux's avatar
      juno: Remove unused disable_mmu() function · d3f26246
      Sandrine Bailleux authored
      disable_mmu() cannot work as a C function as there is no control
      over data accesses generated by the compiler between disabling and
      cleaning the data cache. This results in reading stale data from
      main memory.
      
      This patch removes the C version of this function in juno code.
      An assembly version has been introduced in commit 2f5dcfef.
      
      Change-Id: I0de10dbe2db8d22855bf1f60f1e48540a4861cb6
      d3f26246
    • Sandrine Bailleux's avatar
      juno: Fix build errors due to recent changes · 65a42f57
      Sandrine Bailleux authored
      This is a miscellaneous commit that fixes all build
      errors introduced by the rebase of the Juno codebase
      on the latest trusted firmware.
      
       - Make codebase consistent in its use of #include "" syntax
         for user includes and #include <> syntax for system includes.
      
       - Sort header files alphabetically
      
       - Use tag names for structure types.
         Replace instances of the former io_handle and io_dev_handle
         types with uintptr_t.
      
       - Review the .c and .S files for which header files really need
         including and reorder the #include statements alphabetically.
      
      Change-Id: I1d409fafb6dc257a38992ee15b22b0e890d040b0
      65a42f57
    • Sandrine Bailleux's avatar
      juno: Fix base addresses for UART2 and UART3 · b01f49b5
      Sandrine Bailleux authored
      Also remove 'PL011_BASE' macro because it is no longer used.
      
      Change-Id: Iefe94037cf67293b630d5256e6cac3f82abda807
      b01f49b5
  2. 04 Jun, 2014 22 commits
  3. 23 May, 2014 1 commit
    • Dan Handley's avatar
      Split platform.h into separate headers · 5f0cdb05
      Dan Handley authored
      Previously, platform.h contained many declarations and definitions
      used for different purposes. This file has been split so that:
      
      * Platform definitions used by common code that must be defined
        by the platform are now in platform_def.h. The exact include
        path is exported through $PLAT_INCLUDES in the platform makefile.
      
      * Platform definitions specific to the FVP platform are now in
        /plat/fvp/fvp_def.h.
      
      * Platform API declarations specific to the FVP platform are now
        in /plat/fvp/fvp_private.h.
      
      * The remaining platform API declarations that must be ported by
        each platform are still in platform.h but this file has been
        moved to /include/plat/common since this can be shared by all
        platforms.
      
      Change-Id: Ieb3bb22fbab3ee8027413c6b39a783534aee474a
      5f0cdb05