target/arm: Allow execution from small regions

Now that we have full support for small regions, including execution,
we can remove the workarounds where we marked all small regions as
non-executable for the M-profile MPU and SAU.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Cédric Le Goater <clg@kaod.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20180710160013.26559-7-peter.maydell@linaro.org
This commit is contained in:
Peter Maydell 2018-08-14 17:17:19 +01:00
parent 20cb6ae472
commit d4b6275df3

View File

@ -9795,17 +9795,6 @@ static bool get_phys_addr_pmsav7(CPUARMState *env, uint32_t address,
fi->type = ARMFault_Permission;
fi->level = 1;
/*
* Core QEMU code can't handle execution from small pages yet, so
* don't try it. This way we'll get an MPU exception, rather than
* eventually causing QEMU to exit in get_page_addr_code().
*/
if (*page_size < TARGET_PAGE_SIZE && (*prot & PAGE_EXEC)) {
qemu_log_mask(LOG_UNIMP,
"MPU: No support for execution from regions "
"smaller than 1K\n");
*prot &= ~PAGE_EXEC;
}
return !(*prot & (1 << access_type));
}
@ -10056,18 +10045,6 @@ static bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t address,
fi->type = ARMFault_Permission;
fi->level = 1;
/*
* Core QEMU code can't handle execution from small pages yet, so
* don't try it. This means any attempted execution will generate
* an MPU exception, rather than eventually causing QEMU to exit in
* get_page_addr_code().
*/
if (*is_subpage && (*prot & PAGE_EXEC)) {
qemu_log_mask(LOG_UNIMP,
"MPU: No support for execution from regions "
"smaller than 1K\n");
*prot &= ~PAGE_EXEC;
}
return !(*prot & (1 << access_type));
}