Fix the regression bug
This commit is contained in:
@ -7927,7 +7927,9 @@ void cpsr_write(CPUARMState *env, uint32_t val, uint32_t mask,
|
|||||||
* In a V8 implementation, it is permitted for privileged software to
|
* In a V8 implementation, it is permitted for privileged software to
|
||||||
* change the CPSR A/F bits regardless of the SCR.AW/FW bits.
|
* change the CPSR A/F bits regardless of the SCR.AW/FW bits.
|
||||||
*/
|
*/
|
||||||
if (write_type != CPSRWriteRaw && !arm_feature(env, ARM_FEATURE_V8) &&
|
if (write_type != CPSRWriteByUnicorn &&
|
||||||
|
write_type != CPSRWriteRaw &&
|
||||||
|
!arm_feature(env, ARM_FEATURE_V8) &&
|
||||||
arm_feature(env, ARM_FEATURE_EL3) &&
|
arm_feature(env, ARM_FEATURE_EL3) &&
|
||||||
!arm_feature(env, ARM_FEATURE_EL2) &&
|
!arm_feature(env, ARM_FEATURE_EL2) &&
|
||||||
!arm_is_secure(env)) {
|
!arm_is_secure(env)) {
|
||||||
|
@ -491,13 +491,13 @@ static void test_arm_not_allow_privilege_escalation()
|
|||||||
static void test_arm_mrc()
|
static void test_arm_mrc()
|
||||||
{
|
{
|
||||||
uc_engine *uc;
|
uc_engine *uc;
|
||||||
// mrc p15, #0, r0, c1, c1, #0
|
// mrc p15, #0, r1, c13, c0, #3
|
||||||
char code[] = "\x11\x0F\x11\xEE";
|
char code[] = "\x1d\xee\x70\x1f";
|
||||||
|
|
||||||
uc_common_setup(&uc, UC_ARCH_ARM, UC_MODE_ARM, code, sizeof(code) - 1,
|
uc_common_setup(&uc, UC_ARCH_ARM, UC_MODE_THUMB, code, sizeof(code) - 1,
|
||||||
UC_CPU_ARM_MAX);
|
UC_CPU_ARM_MAX);
|
||||||
|
|
||||||
OK(uc_emu_start(uc, code_start, code_start + sizeof(code) - 1, 0, 0));
|
OK(uc_emu_start(uc, code_start | 1, code_start + sizeof(code) - 1, 0, 0));
|
||||||
|
|
||||||
OK(uc_close(uc));
|
OK(uc_close(uc));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user