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:
parent
20cb6ae472
commit
d4b6275df3
@ -9795,17 +9795,6 @@ static bool get_phys_addr_pmsav7(CPUARMState *env, uint32_t address,
|
|||||||
|
|
||||||
fi->type = ARMFault_Permission;
|
fi->type = ARMFault_Permission;
|
||||||
fi->level = 1;
|
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));
|
return !(*prot & (1 << access_type));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10056,18 +10045,6 @@ static bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t address,
|
|||||||
|
|
||||||
fi->type = ARMFault_Permission;
|
fi->type = ARMFault_Permission;
|
||||||
fi->level = 1;
|
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));
|
return !(*prot & (1 << access_type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user