cpu.c (cc974d5cd84ea60a3dad59752aea712f3d47f8ce) | cpu.c (926c1b97895879b78ca14bca2831c08740ed1c38) |
---|---|
1/* 2 * QEMU ARM CPU 3 * 4 * Copyright (c) 2012 SUSE LINUX Products GmbH 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 --- 466 unchanged lines hidden (view full) --- 475 /* Exceptions targeting a higher EL may not be maskable */ 476 if (arm_feature(env, ARM_FEATURE_AARCH64)) { 477 /* 478 * 64-bit masking rules are simple: exceptions to EL3 479 * can't be masked, and exceptions to EL2 can only be 480 * masked from Secure state. The HCR and SCR settings 481 * don't affect the masking logic, only the interrupt routing. 482 */ | 1/* 2 * QEMU ARM CPU 3 * 4 * Copyright (c) 2012 SUSE LINUX Products GmbH 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 --- 466 unchanged lines hidden (view full) --- 475 /* Exceptions targeting a higher EL may not be maskable */ 476 if (arm_feature(env, ARM_FEATURE_AARCH64)) { 477 /* 478 * 64-bit masking rules are simple: exceptions to EL3 479 * can't be masked, and exceptions to EL2 can only be 480 * masked from Secure state. The HCR and SCR settings 481 * don't affect the masking logic, only the interrupt routing. 482 */ |
483 if (target_el == 3 || !secure) { | 483 if (target_el == 3 || !secure || (env->cp15.scr_el3 & SCR_EEL2)) { |
484 unmasked = true; 485 } 486 } else { 487 /* 488 * The old 32-bit-only environment has a more complicated 489 * masking setup. HCR and SCR bits not only affect interrupt 490 * routing but also change the behaviour of masking. 491 */ --- 1890 unchanged lines hidden --- | 484 unmasked = true; 485 } 486 } else { 487 /* 488 * The old 32-bit-only environment has a more complicated 489 * masking setup. HCR and SCR bits not only affect interrupt 490 * routing but also change the behaviour of masking. 491 */ --- 1890 unchanged lines hidden --- |