• P
    target/arm: Set page (region) size in get_phys_addr_pmsav7() · e5e40999
    Peter Maydell 提交于
    We want to handle small MPU region sizes for ARMv7M. To do this,
    make get_phys_addr_pmsav7() set the page size to the region
    size if it is less that TARGET_PAGE_SIZE, rather than working
    only in TARGET_PAGE_SIZE chunks.
    
    Since the core TCG code con't handle execution from small
    MPU regions, we strip the exec permission from them so that
    any execution attempts will cause an MPU exception, rather
    than allowing it to end up with a cpu_abort() in
    get_page_addr_code().
    
    (The previous code's intention was to make any small page be
    treated as having no permissions, but unfortunately errors
    in the implementation meant that it didn't behave that way.
    It's possible that some binaries using small regions were
    accidentally working with our old behaviour and won't now.)
    Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
    Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
    Message-id: 20180620130619.11362-3-peter.maydell@linaro.org
    e5e40999
helper.c 441.7 KB