• Sandrine Bailleux's avatar
    ARM platforms: Add support for SEPARATE_CODE_AND_RODATA · 0af559a8
    Sandrine Bailleux authored
    The arm_setup_page_tables() function used to expect a single set of
    addresses defining the extents of the whole read-only section, code
    and read-only data mixed up, which was mapped as executable.
    
    This patch changes this behaviour. arm_setup_page_tables() now
    expects 2 separate sets of addresses:
    
     - the extents of the code section;
     - the extents of the read-only data section.
    
    The code is mapped as executable, whereas the data is mapped as
    execute-never. New #defines have been introduced to identify the
    extents of the code and the read-only data section. Given that
    all BL images except BL1 share the same memory layout and linker
    script structure, these #defines are common across these images.
    The slight memory layout differences in BL1 have been handled by
    providing values specific to BL1.
    
    Note that this patch also affects the Xilinx platform port, which
    uses the arm_setup_page_tables() function. It has been updated
    accordingly, such that the memory mappings on this platform are
    unchanged. This is achieved by passing null values as the extents
    of the read-only data section so that it is ignored. As a result,
    the whole read-only section is still mapped as executable.
    
    Fixes ARM-software/tf-issues#85
    
    Change-Id: I1f95865c53ce6e253a01286ff56e0aa1161abac5
    0af559a8
arm_bl1_setup.c 5.49 KB