miscregs.cc (13395:0f064dae9f6b) miscregs.cc (13502:7803bd430e0e)
1/*
2 * Copyright (c) 2010-2013, 2015-2018 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 2439 unchanged lines hidden (view full) ---

2448 if (completed)
2449 return;
2450
2451 // This boolean variable specifies if the system is running in aarch32 at
2452 // EL3 (aarch32EL3 = true). It is false if EL3 is not implemented, or it
2453 // is running in aarch64 (aarch32EL3 = false)
2454 bool aarch32EL3 = haveSecurity && !highestELIs64;
2455
1/*
2 * Copyright (c) 2010-2013, 2015-2018 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 2439 unchanged lines hidden (view full) ---

2448 if (completed)
2449 return;
2450
2451 // This boolean variable specifies if the system is running in aarch32 at
2452 // EL3 (aarch32EL3 = true). It is false if EL3 is not implemented, or it
2453 // is running in aarch64 (aarch32EL3 = false)
2454 bool aarch32EL3 = haveSecurity && !highestELIs64;
2455
2456 // Set Privileged Access Never on taking an exception to EL1 (Arm 8.1+),
2457 // unsupported
2458 bool SPAN = false;
2459
2460 // Implicit error synchronization event enable (Arm 8.2+), unsupported
2461 bool IESB = false;
2462
2463 // Load Multiple and Store Multiple Atomicity and Ordering (Arm 8.2+),
2464 // unsupported
2465 bool LSMAOE = false;
2466
2467 // No Trap Load Multiple and Store Multiple (Arm 8.2+), unsupported
2468 bool nTLSMD = false;
2469
2470 // Pointer authentication (Arm 8.3+), unsupported
2471 bool EnDA = false; // using APDAKey_EL1 key of instr addrs in ELs 0,1
2472 bool EnDB = false; // using APDBKey_EL1 key of instr addrs in ELs 0,1
2473 bool EnIA = false; // using APIAKey_EL1 key of instr addrs in ELs 0,1
2474 bool EnIB = false; // using APIBKey_EL1 key of instr addrs in ELs 0,1
2475
2456 /**
2457 * Some registers alias with others, and therefore need to be translated.
2458 * When two mapping registers are given, they are the 32b lower and
2459 * upper halves, respectively, of the 64b register being mapped.
2460 * aligned with reference documentation ARM DDI 0487A.i pp 1540-1543
2461 *
2462 * NAM = "not architecturally mandated",
2463 * from ARM DDI 0487A.i, template text

--- 278 unchanged lines hidden (view full) ---

2742 InitReg(MISCREG_CSSELR_S)
2743 .bankedChild()
2744 .secure().exceptUserMode();
2745 InitReg(MISCREG_VPIDR)
2746 .hyp().monNonSecure();
2747 InitReg(MISCREG_VMPIDR)
2748 .hyp().monNonSecure();
2749 InitReg(MISCREG_SCTLR)
2476 /**
2477 * Some registers alias with others, and therefore need to be translated.
2478 * When two mapping registers are given, they are the 32b lower and
2479 * upper halves, respectively, of the 64b register being mapped.
2480 * aligned with reference documentation ARM DDI 0487A.i pp 1540-1543
2481 *
2482 * NAM = "not architecturally mandated",
2483 * from ARM DDI 0487A.i, template text

--- 278 unchanged lines hidden (view full) ---

2762 InitReg(MISCREG_CSSELR_S)
2763 .bankedChild()
2764 .secure().exceptUserMode();
2765 InitReg(MISCREG_VPIDR)
2766 .hyp().monNonSecure();
2767 InitReg(MISCREG_VMPIDR)
2768 .hyp().monNonSecure();
2769 InitReg(MISCREG_SCTLR)
2750 .banked();
2770 .banked()
2771 // readMiscRegNoEffect() uses this metadata
2772 // despite using children (below) as backing store
2773 .res0(0x8d22c600)
2774 .res1(0x00400800 | (SPAN ? 0 : 0x800000)
2775 | (LSMAOE ? 0 : 0x10)
2776 | (nTLSMD ? 0 : 0x8));
2751 InitReg(MISCREG_SCTLR_NS)
2752 .bankedChild()
2753 .privSecure(!aarch32EL3)
2754 .nonSecure().exceptUserMode();
2755 InitReg(MISCREG_SCTLR_S)
2756 .bankedChild()
2757 .secure().exceptUserMode();
2758 InitReg(MISCREG_ACTLR)

--- 11 unchanged lines hidden (view full) ---

2770 .mon().secure().exceptUserMode()
2771 .res0(0xff40) // [31:16], [6]
2772 .res1(0x0030); // [5:4]
2773 InitReg(MISCREG_SDER)
2774 .mon();
2775 InitReg(MISCREG_NSACR)
2776 .allPrivileges().hypWrite(0).privNonSecureWrite(0).exceptUserMode();
2777 InitReg(MISCREG_HSCTLR)
2777 InitReg(MISCREG_SCTLR_NS)
2778 .bankedChild()
2779 .privSecure(!aarch32EL3)
2780 .nonSecure().exceptUserMode();
2781 InitReg(MISCREG_SCTLR_S)
2782 .bankedChild()
2783 .secure().exceptUserMode();
2784 InitReg(MISCREG_ACTLR)

--- 11 unchanged lines hidden (view full) ---

2796 .mon().secure().exceptUserMode()
2797 .res0(0xff40) // [31:16], [6]
2798 .res1(0x0030); // [5:4]
2799 InitReg(MISCREG_SDER)
2800 .mon();
2801 InitReg(MISCREG_NSACR)
2802 .allPrivileges().hypWrite(0).privNonSecureWrite(0).exceptUserMode();
2803 InitReg(MISCREG_HSCTLR)
2778 .hyp().monNonSecure();
2804 .hyp().monNonSecure()
2805 .res0(0x0512c7c0 | (EnDB ? 0 : 0x2000)
2806 | (IESB ? 0 : 0x200000)
2807 | (EnDA ? 0 : 0x8000000)
2808 | (EnIB ? 0 : 0x40000000)
2809 | (EnIA ? 0 : 0x80000000))
2810 .res1(0x30c50830);
2779 InitReg(MISCREG_HACTLR)
2780 .hyp().monNonSecure();
2781 InitReg(MISCREG_HCR)
2782 .hyp().monNonSecure();
2783 InitReg(MISCREG_HDCR)
2784 .hyp().monNonSecure();
2785 InitReg(MISCREG_HCPTR)
2786 .hyp().monNonSecure();

--- 383 unchanged lines hidden (view full) ---

3170 .privRead(FullSystem && system->highestEL() == EL1)
3171 .exceptUserMode();
3172 InitReg(MISCREG_RMR)
3173 .unimplemented()
3174 .mon().secure().exceptUserMode();
3175 InitReg(MISCREG_ISR)
3176 .allPrivileges().exceptUserMode().writes(0);
3177 InitReg(MISCREG_HVBAR)
2811 InitReg(MISCREG_HACTLR)
2812 .hyp().monNonSecure();
2813 InitReg(MISCREG_HCR)
2814 .hyp().monNonSecure();
2815 InitReg(MISCREG_HDCR)
2816 .hyp().monNonSecure();
2817 InitReg(MISCREG_HCPTR)
2818 .hyp().monNonSecure();

--- 383 unchanged lines hidden (view full) ---

3202 .privRead(FullSystem && system->highestEL() == EL1)
3203 .exceptUserMode();
3204 InitReg(MISCREG_RMR)
3205 .unimplemented()
3206 .mon().secure().exceptUserMode();
3207 InitReg(MISCREG_ISR)
3208 .allPrivileges().exceptUserMode().writes(0);
3209 InitReg(MISCREG_HVBAR)
3178 .hyp().monNonSecure();
3210 .hyp().monNonSecure()
3211 .res0(0x1f);
3179 InitReg(MISCREG_FCSEIDR)
3180 .unimplemented()
3181 .warnNotFail()
3182 .allPrivileges().exceptUserMode();
3183 InitReg(MISCREG_CONTEXTIDR)
3184 .banked();
3185 InitReg(MISCREG_CONTEXTIDR_NS)
3186 .bankedChild()

--- 345 unchanged lines hidden (view full) ---

3532 InitReg(MISCREG_VPIDR_EL2)
3533 .hyp().mon()
3534 .mapsTo(MISCREG_VPIDR);
3535 InitReg(MISCREG_VMPIDR_EL2)
3536 .hyp().mon()
3537 .mapsTo(MISCREG_VMPIDR);
3538 InitReg(MISCREG_SCTLR_EL1)
3539 .allPrivileges().exceptUserMode()
3212 InitReg(MISCREG_FCSEIDR)
3213 .unimplemented()
3214 .warnNotFail()
3215 .allPrivileges().exceptUserMode();
3216 InitReg(MISCREG_CONTEXTIDR)
3217 .banked();
3218 InitReg(MISCREG_CONTEXTIDR_NS)
3219 .bankedChild()

--- 345 unchanged lines hidden (view full) ---

3565 InitReg(MISCREG_VPIDR_EL2)
3566 .hyp().mon()
3567 .mapsTo(MISCREG_VPIDR);
3568 InitReg(MISCREG_VMPIDR_EL2)
3569 .hyp().mon()
3570 .mapsTo(MISCREG_VMPIDR);
3571 InitReg(MISCREG_SCTLR_EL1)
3572 .allPrivileges().exceptUserMode()
3573 .res0( 0x20440 | (EnDB ? 0 : 0x2000)
3574 | (IESB ? 0 : 0x200000)
3575 | (EnDA ? 0 : 0x8000000)
3576 | (EnIB ? 0 : 0x40000000)
3577 | (EnIA ? 0 : 0x80000000))
3578 .res1(0x500800 | (SPAN ? 0 : 0x800000)
3579 | (nTLSMD ? 0 : 0x8000000)
3580 | (LSMAOE ? 0 : 0x10000000))
3540 .mapsTo(MISCREG_SCTLR_NS);
3541 InitReg(MISCREG_ACTLR_EL1)
3542 .allPrivileges().exceptUserMode()
3543 .mapsTo(MISCREG_ACTLR_NS);
3544 InitReg(MISCREG_CPACR_EL1)
3545 .allPrivileges().exceptUserMode()
3546 .mapsTo(MISCREG_CPACR);
3547 InitReg(MISCREG_SCTLR_EL2)
3548 .hyp().mon()
3581 .mapsTo(MISCREG_SCTLR_NS);
3582 InitReg(MISCREG_ACTLR_EL1)
3583 .allPrivileges().exceptUserMode()
3584 .mapsTo(MISCREG_ACTLR_NS);
3585 InitReg(MISCREG_CPACR_EL1)
3586 .allPrivileges().exceptUserMode()
3587 .mapsTo(MISCREG_CPACR);
3588 InitReg(MISCREG_SCTLR_EL2)
3589 .hyp().mon()
3590 .res0(0x0512c7c0 | (EnDB ? 0 : 0x2000)
3591 | (IESB ? 0 : 0x200000)
3592 | (EnDA ? 0 : 0x8000000)
3593 | (EnIB ? 0 : 0x40000000)
3594 | (EnIA ? 0 : 0x80000000))
3595 .res1(0x30c50830)
3549 .mapsTo(MISCREG_HSCTLR);
3550 InitReg(MISCREG_ACTLR_EL2)
3551 .hyp().mon()
3552 .mapsTo(MISCREG_HACTLR);
3553 InitReg(MISCREG_HCR_EL2)
3554 .hyp().mon()
3555 .mapsTo(MISCREG_HCR /*, MISCREG_HCR2*/);
3556 InitReg(MISCREG_MDCR_EL2)

--- 4 unchanged lines hidden (view full) ---

3561 .mapsTo(MISCREG_HCPTR);
3562 InitReg(MISCREG_HSTR_EL2)
3563 .hyp().mon()
3564 .mapsTo(MISCREG_HSTR);
3565 InitReg(MISCREG_HACR_EL2)
3566 .hyp().mon()
3567 .mapsTo(MISCREG_HACR);
3568 InitReg(MISCREG_SCTLR_EL3)
3596 .mapsTo(MISCREG_HSCTLR);
3597 InitReg(MISCREG_ACTLR_EL2)
3598 .hyp().mon()
3599 .mapsTo(MISCREG_HACTLR);
3600 InitReg(MISCREG_HCR_EL2)
3601 .hyp().mon()
3602 .mapsTo(MISCREG_HCR /*, MISCREG_HCR2*/);
3603 InitReg(MISCREG_MDCR_EL2)

--- 4 unchanged lines hidden (view full) ---

3608 .mapsTo(MISCREG_HCPTR);
3609 InitReg(MISCREG_HSTR_EL2)
3610 .hyp().mon()
3611 .mapsTo(MISCREG_HSTR);
3612 InitReg(MISCREG_HACR_EL2)
3613 .hyp().mon()
3614 .mapsTo(MISCREG_HACR);
3615 InitReg(MISCREG_SCTLR_EL3)
3569 .mon();
3616 .mon()
3617 .res0(0x0512c7c0 | (EnDB ? 0 : 0x2000)
3618 | (IESB ? 0 : 0x200000)
3619 | (EnDA ? 0 : 0x8000000)
3620 | (EnIB ? 0 : 0x40000000)
3621 | (EnIA ? 0 : 0x80000000))
3622 .res1(0x30c50830);
3570 InitReg(MISCREG_ACTLR_EL3)
3571 .mon();
3572 InitReg(MISCREG_SCR_EL3)
3573 .mon()
3574 .mapsTo(MISCREG_SCR); // NAM D7-2005
3575 InitReg(MISCREG_SDER32_EL3)
3576 .mon()
3577 .mapsTo(MISCREG_SDER);

--- 309 unchanged lines hidden (view full) ---

3887 .allPrivileges().exceptUserMode()
3888 .mapsTo(MISCREG_VBAR_NS);
3889 InitReg(MISCREG_RVBAR_EL1)
3890 .allPrivileges().exceptUserMode().writes(0);
3891 InitReg(MISCREG_ISR_EL1)
3892 .allPrivileges().exceptUserMode().writes(0);
3893 InitReg(MISCREG_VBAR_EL2)
3894 .hyp().mon()
3623 InitReg(MISCREG_ACTLR_EL3)
3624 .mon();
3625 InitReg(MISCREG_SCR_EL3)
3626 .mon()
3627 .mapsTo(MISCREG_SCR); // NAM D7-2005
3628 InitReg(MISCREG_SDER32_EL3)
3629 .mon()
3630 .mapsTo(MISCREG_SDER);

--- 309 unchanged lines hidden (view full) ---

3940 .allPrivileges().exceptUserMode()
3941 .mapsTo(MISCREG_VBAR_NS);
3942 InitReg(MISCREG_RVBAR_EL1)
3943 .allPrivileges().exceptUserMode().writes(0);
3944 InitReg(MISCREG_ISR_EL1)
3945 .allPrivileges().exceptUserMode().writes(0);
3946 InitReg(MISCREG_VBAR_EL2)
3947 .hyp().mon()
3948 .res0(0x7ff)
3895 .mapsTo(MISCREG_HVBAR);
3896 InitReg(MISCREG_RVBAR_EL2)
3897 .mon().hyp().writes(0);
3898 InitReg(MISCREG_VBAR_EL3)
3899 .mon();
3900 InitReg(MISCREG_RVBAR_EL3)
3901 .mon().writes(0);
3902 InitReg(MISCREG_RMR_EL3)

--- 211 unchanged lines hidden ---
3949 .mapsTo(MISCREG_HVBAR);
3950 InitReg(MISCREG_RVBAR_EL2)
3951 .mon().hyp().writes(0);
3952 InitReg(MISCREG_VBAR_EL3)
3953 .mon();
3954 InitReg(MISCREG_RVBAR_EL3)
3955 .mon().writes(0);
3956 InitReg(MISCREG_RMR_EL3)

--- 211 unchanged lines hidden ---