[gem5-dev] [S] Change in gem5/gem5[release-staging-v23-0]: arch-arm: Apply FEAT_IDST to missing ID registers
(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0) .mapsTo(MISCREG_MVFR1); InitReg(MISCREG_MVFR2_EL1) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_AA64PFR0_EL1) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/71178?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: release-staging-v23-0 Gerrit-Change-Id: I19bddf67ecc379a14f91cfede385692536982101 Gerrit-Change-Number: 71178 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Bobby Bruce Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: dev-arm: Treat GICv3 reserved addresses as RES0
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/71138?usp=email ) Change subject: dev-arm: Treat GICv3 reserved addresses as RES0 .. dev-arm: Treat GICv3 reserved addresses as RES0 According to the GIC specification (IHI0069) reserved addresses in the GIC memory map are treated as RES0. We allow to disable this behaviour and panic instead (reserved_res0 = False, which is what we have been doing so far) to catch development bugs (in gem5 and in the guest SW) Change-Id: I23f98519c2f256c092a52425735b8792bae7a2c7 Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/71138 Reviewed-by: Richard Cooper Tested-by: kokoro --- M src/dev/arm/Gic.py M src/dev/arm/gic_v3.hh M src/dev/arm/gic_v3_distributor.cc M src/dev/arm/gic_v3_redistributor.cc 4 files changed, 26 insertions(+), 6 deletions(-) Approvals: Richard Cooper: Looks good to me, approved kokoro: Regressions pass Giacomo Travaglini: Looks good to me, approved diff --git a/src/dev/arm/Gic.py b/src/dev/arm/Gic.py index 41d602b..6fd8eb2 100644 --- a/src/dev/arm/Gic.py +++ b/src/dev/arm/Gic.py @@ -315,6 +315,15 @@ gicv4 = Param.Bool(False, "GIC is GICv4 compatible") +reserved_is_res0 = Param.Bool( +True, +"According to the GIC specification (IHI0069) " +"reserved addresses in the GIC memory map are treated as RES0. " +"We allow to disable this behaviour and panic instead " +"(reserved_res0 = False) to catch development bugs " +"(in gem5 and in the guest SW)", +) + def interruptCells(self, int_type, int_num, int_trigger, partition=None): """ Interupt cells generation helper: diff --git a/src/dev/arm/gic_v3.hh b/src/dev/arm/gic_v3.hh index 2ea6a98..7adb1d0 100644 --- a/src/dev/arm/gic_v3.hh +++ b/src/dev/arm/gic_v3.hh @@ -167,6 +167,17 @@ Tick write(PacketPtr pkt) override; bool supportsVersion(GicVersion version) override; +template +void +reserved(const char* fmt, Args... args) const +{ +if (params().reserved_is_res0) { +warn(fmt, args...); +} else { +panic(fmt, args...); +} +} + public: Gicv3(const Params &p); diff --git a/src/dev/arm/gic_v3_distributor.cc b/src/dev/arm/gic_v3_distributor.cc index 1cb485c..af30692 100644 --- a/src/dev/arm/gic_v3_distributor.cc +++ b/src/dev/arm/gic_v3_distributor.cc @@ -505,8 +505,8 @@ return 0; // RES0 default: -panic("Gicv3Distributor::read(): invalid offset %#x\n", addr); -break; +gic->reserved("Gicv3Distributor::read(): invalid offset %#x\n", addr); +return 0; // RES0 } } @@ -999,7 +999,7 @@ } default: -panic("Gicv3Distributor::write(): invalid offset %#x\n", addr); +gic->reserved("Gicv3Distributor::write(): invalid offset %#x\n", addr); break; } } diff --git a/src/dev/arm/gic_v3_redistributor.cc b/src/dev/arm/gic_v3_redistributor.cc index e4380ef..67d6e42 100644 --- a/src/dev/arm/gic_v3_redistributor.cc +++ b/src/dev/arm/gic_v3_redistributor.cc @@ -377,8 +377,8 @@ return 0; default: -panic("Gicv3Redistributor::read(): invalid offset %#x\n", addr); -break; +gic->reserved("Gicv3Redistributor::read(): invalid offset %#x\n", addr); +return 0; // RES0 } } @@ -704,7 +704,7 @@ } default: -panic("Gicv3Redistributor::write(): invalid offset %#x\n", addr); +gic->reserved("Gicv3Redistributor::write(): invalid offset %#x\n", addr); break; } } -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/71138?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I23f98519c2f256c092a52425735b8792bae7a2c7 Gerrit-Change-Number: 71138 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro Gerrit-CC: Bobby Bruce ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[release-staging-v23-0]: arch-arm: Apply FEAT_IDST to AArch32 state registers
Giacomo Travaglini has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/71178?usp=email ) Change subject: arch-arm: Apply FEAT_IDST to AArch32 state registers .. arch-arm: Apply FEAT_IDST to AArch32 state registers When FEAT_IDST got implemented [1], we forgot to add the logic for ID registers tracking AArch32 state/capabilities [1]: https://gem5-review.googlesource.com/c/public/gem5/+/70723 Signed-off-by: Giacomo Travaglini Change-Id: I19bddf67ecc379a14f91cfede385692536982101 --- M src/arch/arm/regs/misc.cc 1 file changed, 21 insertions(+), 0 deletions(-) diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index f32aa72..f1c69cc 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3911,83 +3911,104 @@ .mapsTo(MISCREG_MIDR); InitReg(MISCREG_MPIDR_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .mapsTo(MISCREG_MPIDR); InitReg(MISCREG_REVIDR_EL1) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid1)) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_PFR0_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_PFR0); InitReg(MISCREG_ID_PFR1_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_PFR1); InitReg(MISCREG_ID_DFR0_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_DFR0); InitReg(MISCREG_ID_AFR0_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_AFR0); InitReg(MISCREG_ID_MMFR0_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_MMFR0); InitReg(MISCREG_ID_MMFR1_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_MMFR1); InitReg(MISCREG_ID_MMFR2_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_MMFR2); InitReg(MISCREG_ID_MMFR3_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_MMFR3); InitReg(MISCREG_ID_MMFR4_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_MMFR4); InitReg(MISCREG_ID_ISAR0_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_ISAR0); InitReg(MISCREG_ID_ISAR1_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_ISAR1); InitReg(MISCREG_ID_ISAR2_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_ISAR2); InitReg(MISCREG_ID_ISAR3_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_ISAR3); InitReg(MISCREG_ID_ISAR4_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_ISAR4); InitReg(MISCREG_ID_ISAR5_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_ISAR5); InitReg(MISCREG_ID_ISAR6_EL1) .allPrivileges().exceptUserMode().writes(0) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .mapsTo(MISCREG_ID_ISAR6); InitReg(MISCREG_MVFR0_EL1) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0) .mapsTo(MISCREG_MVFR0); InitReg(MISCREG_MVFR1_EL1) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0) .mapsTo(MISCREG_MVFR1); InitReg(MISCREG_MVFR2_EL1) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_AA64PFR0_EL1) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/71178?usp=email To unsubscribe, or for help writing mail filters, visit
[gem5-dev] [S] Change in gem5/gem5[develop]: dev-arm: Treat GICv3 reserved addresses as RES0
Giacomo Travaglini has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/71138?usp=email ) Change subject: dev-arm: Treat GICv3 reserved addresses as RES0 .. dev-arm: Treat GICv3 reserved addresses as RES0 According to the GIC specification (IHI0069) reserved addresses in the GIC memory map are treated as RES0. We allow to disable this behaviour and panic instead (reserved_res0 = False, which is what we have been doing so far) to catch development bugs (in gem5 and in the guest SW) Change-Id: I23f98519c2f256c092a52425735b8792bae7a2c7 Signed-off-by: Giacomo Travaglini --- M src/dev/arm/Gic.py M src/dev/arm/gic_v3.hh M src/dev/arm/gic_v3_distributor.cc M src/dev/arm/gic_v3_redistributor.cc 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/dev/arm/Gic.py b/src/dev/arm/Gic.py index 41d602b..02df33f 100644 --- a/src/dev/arm/Gic.py +++ b/src/dev/arm/Gic.py @@ -315,6 +315,15 @@ gicv4 = Param.Bool(False, "GIC is GICv4 compatible") +reserved_res0 = Param.Bool( +True, +"According to the GIC specification (IHI0069) " +"reserved addresses in the GIC memory map are treated as RES0. " +"We allow to disable this behaviour and panic instead " +"(reserved_res0 = False) to catch development bugs " +"(in gem5 and in the guest SW)", +) + def interruptCells(self, int_type, int_num, int_trigger, partition=None): """ Interupt cells generation helper: diff --git a/src/dev/arm/gic_v3.hh b/src/dev/arm/gic_v3.hh index 2ea6a98..80c5afd 100644 --- a/src/dev/arm/gic_v3.hh +++ b/src/dev/arm/gic_v3.hh @@ -167,6 +167,17 @@ Tick write(PacketPtr pkt) override; bool supportsVersion(GicVersion version) override; +template +void +reserved(const char* fmt, Args... args) const +{ +if (params().reserved_res0) { +warn(fmt, args...); +} else { +panic(fmt, args...); +} +} + public: Gicv3(const Params &p); diff --git a/src/dev/arm/gic_v3_distributor.cc b/src/dev/arm/gic_v3_distributor.cc index 1cb485c..af30692 100644 --- a/src/dev/arm/gic_v3_distributor.cc +++ b/src/dev/arm/gic_v3_distributor.cc @@ -505,8 +505,8 @@ return 0; // RES0 default: -panic("Gicv3Distributor::read(): invalid offset %#x\n", addr); -break; +gic->reserved("Gicv3Distributor::read(): invalid offset %#x\n", addr); +return 0; // RES0 } } @@ -999,7 +999,7 @@ } default: -panic("Gicv3Distributor::write(): invalid offset %#x\n", addr); +gic->reserved("Gicv3Distributor::write(): invalid offset %#x\n", addr); break; } } diff --git a/src/dev/arm/gic_v3_redistributor.cc b/src/dev/arm/gic_v3_redistributor.cc index e4380ef..67d6e42 100644 --- a/src/dev/arm/gic_v3_redistributor.cc +++ b/src/dev/arm/gic_v3_redistributor.cc @@ -377,8 +377,8 @@ return 0; default: -panic("Gicv3Redistributor::read(): invalid offset %#x\n", addr); -break; +gic->reserved("Gicv3Redistributor::read(): invalid offset %#x\n", addr); +return 0; // RES0 } } @@ -704,7 +704,7 @@ } default: -panic("Gicv3Redistributor::write(): invalid offset %#x\n", addr); +gic->reserved("Gicv3Redistributor::write(): invalid offset %#x\n", addr); break; } } -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/71138?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I23f98519c2f256c092a52425735b8792bae7a2c7 Gerrit-Change-Number: 71138 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Add an ArmAllRelease containing every defined extension
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70958?usp=email ) Change subject: arch-arm: Add an ArmAllRelease containing every defined extension .. arch-arm: Add an ArmAllRelease containing every defined extension This is probably the easiest way to instantiate a release containing any implemented extension. It is alternatively possible to use the latest release (e.g. Armv92 as of now). This could be preferrable for consistency across simulations. However if users want to always be up to date with development, using ArmAllRelease will allow them to do so without the need to change their configuration script Change-Id: Ibca629e99da9b571f233de9d05a5a9186d02aa99 Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70958 Tested-by: kokoro Reviewed-by: Richard Cooper Maintainer: Jason Lowe-Power --- M src/arch/arm/ArmSystem.py 1 file changed, 12 insertions(+), 0 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved kokoro: Regressions pass Richard Cooper: Looks good to me, approved diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py index b826f0d..c1f5e9f 100644 --- a/src/arch/arm/ArmSystem.py +++ b/src/arch/arm/ArmSystem.py @@ -224,6 +224,18 @@ extensions = Armv85.extensions + ["FEAT_SME"] +class ArmAllRelease(ArmRelease): +""" +A release containing any implemented extension. It is alternatively +possible to use the latest release (e.g. Armv92 as of now). This could be +preferrable for consistency across simulations. However if users want to +always be up to date with development, using ArmAllRelease will allow them +to do so without the need to change their configuration script +""" + +extensions = ArmExtension.vals + + class ArmSystem(System): type = "ArmSystem" cxx_header = "arch/arm/system.hh" -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70958?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ibca629e99da9b571f233de9d05a5a9186d02aa99 Gerrit-Change-Number: 70958 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Add an ArmAllRelease containing every defined extension
Giacomo Travaglini has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/70958?usp=email ) Change subject: arch-arm: Add an ArmAllRelease containing every defined extension .. arch-arm: Add an ArmAllRelease containing every defined extension This is probably the easiest way to instantiate a release containing any implemented extension. It is alternatively possible to use the latest release (e.g. Armv92 as of now). This could be preferrable for consistency across simulations. However if users want to always be up to date with development, using ArmAllRelease will allow them to do so without the need to change their configuration script Change-Id: Ibca629e99da9b571f233de9d05a5a9186d02aa99 Signed-off-by: Giacomo Travaglini --- M src/arch/arm/ArmSystem.py 1 file changed, 12 insertions(+), 0 deletions(-) diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py index b826f0d..c1f5e9f 100644 --- a/src/arch/arm/ArmSystem.py +++ b/src/arch/arm/ArmSystem.py @@ -224,6 +224,18 @@ extensions = Armv85.extensions + ["FEAT_SME"] +class ArmAllRelease(ArmRelease): +""" +A release containing any implemented extension. It is alternatively +possible to use the latest release (e.g. Armv92 as of now). This could be +preferrable for consistency across simulations. However if users want to +always be up to date with development, using ArmAllRelease will allow them +to do so without the need to change their configuration script +""" + +extensions = ArmExtension.vals + + class ArmSystem(System): type = "ArmSystem" cxx_header = "arch/arm/system.hh" -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70958?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ibca629e99da9b571f233de9d05a5a9186d02aa99 Gerrit-Change-Number: 70958 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement FEAT_EVT
Giacomo Travaglini has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/70938?usp=email ) Change subject: arch-arm: Implement FEAT_EVT .. arch-arm: Implement FEAT_EVT This extension is optional in Armv8.2 but mandatory since Armv8.5 We only implement this for AArch64 Change-Id: I063642ac24d27f0a81ba79b1d38f72468bb130eb Signed-off-by: Giacomo Travaglini --- M src/arch/arm/ArmSystem.py M src/arch/arm/regs/misc.cc 2 files changed, 73 insertions(+), 18 deletions(-) diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py index b826f0d..5e45fe4 100644 --- a/src/arch/arm/ArmSystem.py +++ b/src/arch/arm/ArmSystem.py @@ -91,6 +91,7 @@ "FEAT_FLAGM2", "FEAT_RNG", "FEAT_RNG_TRAP", +"FEAT_EVT", # Armv9.2 "FEAT_SME", # Optional in Armv9.2 # Others @@ -174,6 +175,7 @@ "FEAT_IDST", # Armv8.5 "FEAT_FLAGM2", +"FEAT_EVT", # Armv9.2 "FEAT_SME", ] @@ -217,6 +219,7 @@ "FEAT_FLAGM2", "FEAT_RNG", "FEAT_RNG_TRAP", +"FEAT_EVT", ] diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 53e9268..c8ea1f2 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -1445,7 +1445,8 @@ } } else if (el2_enabled && !in_host && hcr.tpu) { return inst.generateTrap(EL2); -} else if (el2_enabled && !in_host && hcr.tocu) { +} else if (el2_enabled && !in_host && + HaveExt(tc, ArmExtension::FEAT_EVT) && hcr.tocu) { return inst.generateTrap(EL2); } else if (el2_enabled && in_host && !sctlr2.uci) { return inst.generateTrap(EL2); @@ -1462,7 +1463,8 @@ const bool el2_enabled = EL2Enabled(tc); if (el2_enabled && hcr.tpu) { return inst.generateTrap(EL2); -} else if (el2_enabled && hcr.tocu) { +} else if (el2_enabled && HaveExt(tc, ArmExtension::FEAT_EVT) && + hcr.tocu) { return inst.generateTrap(EL2); } else { return NoFault; @@ -1477,7 +1479,8 @@ const bool el2_enabled = EL2Enabled(tc); if (el2_enabled && hcr.tpu) { return inst.generateTrap(EL2); -} else if (el2_enabled && hcr.ticab) { +} else if (el2_enabled && HaveExt(tc, ArmExtension::FEAT_EVT) && + hcr.ticab) { return inst.generateTrap(EL2); } else { return NoFault; @@ -1750,6 +1753,54 @@ } Fault +faultTlbiOsEL1(const MiscRegLUTEntry &entry, +ThreadContext *tc, const MiscRegOp64 &inst) +{ +const HCR hcr = tc->readMiscRegNoEffect(MISCREG_HCR_EL2); +const bool el2_enabled = EL2Enabled(tc); +if (el2_enabled && hcr.ttlb) { +return inst.generateTrap(EL2); +} else if (el2_enabled && HaveExt(tc, ArmExtension::FEAT_EVT) && + hcr.ttlbos) { +return inst.generateTrap(EL2); +} else { +return NoFault; +} +} + +Fault +faultTlbiIsEL1(const MiscRegLUTEntry &entry, +ThreadContext *tc, const MiscRegOp64 &inst) +{ +const HCR hcr = tc->readMiscRegNoEffect(MISCREG_HCR_EL2); +const bool el2_enabled = EL2Enabled(tc); +if (el2_enabled && hcr.ttlb) { +return inst.generateTrap(EL2); +} else if (el2_enabled && HaveExt(tc, ArmExtension::FEAT_EVT) && + hcr.ttlbis) { +return inst.generateTrap(EL2); +} else { +return NoFault; +} +} + +Fault +faultCacheEL1(const MiscRegLUTEntry &entry, +ThreadContext *tc, const MiscRegOp64 &inst) +{ +const HCR hcr = tc->readMiscRegNoEffect(MISCREG_HCR_EL2); +const bool el2_enabled = EL2Enabled(tc); +if (el2_enabled && hcr.tid2) { +return inst.generateTrap(EL2); +} else if (el2_enabled && HaveExt(tc, ArmExtension::FEAT_EVT) && + hcr.tid4) { +return inst.generateTrap(EL2); +} else { +return NoFault; +} +} + +Fault faultPauthEL1(const MiscRegLUTEntry &entry, ThreadContext *tc, const MiscRegOp64 &inst) { @@ -4041,6 +4092,7 @@ mmfr2_el1.uao = release->has(ArmExtension::FEAT_UAO) ? 0x1 : 0x0; mmfr2_el1.varange = release->has(ArmExtension::FEAT_LVA) ? 0x1 : 0x0; mmfr2_el1.ids = release->has(ArmExtension::FEAT_IDST) ? 0x1 : 0x0; + mmfr2_el1.evt = release->has(ArmExtension::FEAT_EVT) ? 0x2 : 0x0; return mmfr2_el1; }()) .faultRead(EL0, faultIdst) @@ -4090,11 +4142,11 @@ InitReg(MISCREG_CCSIDR_EL1) .faultRead(EL0, faultIdst) - .faultRead(EL1, HCR_TRAP(tid2)) + .faultRead(EL1, faultCacheEL1) .allPrivileges().writes(0); InitReg(MISCREG_CLIDR_EL1) .faultRead(EL0, faultIdst) - .faultRead(EL1, HCR_TRAP(tid2)) + .faultRead(EL1, faultCacheEL1) .allPrivileges().writes(0); InitReg(MISCREG_AIDR_EL1) .faultRead(EL0, faultIdst) @@ -4102,7 +4154,7 @@ .allPriv
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Implement FEAT_HCX
Giacomo Travaglini has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/70939?usp=email ) Change subject: arch-arm: Implement FEAT_HCX .. arch-arm: Implement FEAT_HCX This is just making the HCRX_EL2 register read/writable; trapping behaviour will be implemented with further extensions Change-Id: Id1ec42a754b7d999782edde3a8ec6c6099e3331e Signed-off-by: Giacomo Travaglini --- M src/arch/arm/ArmSystem.py M src/arch/arm/regs/misc.cc M src/arch/arm/regs/misc.hh M src/arch/arm/regs/misc_types.hh 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py index 5e45fe4..d57fe80 100644 --- a/src/arch/arm/ArmSystem.py +++ b/src/arch/arm/ArmSystem.py @@ -92,6 +92,8 @@ "FEAT_RNG", "FEAT_RNG_TRAP", "FEAT_EVT", +# Armv8.7 +"FEAT_HCX", # Armv9.2 "FEAT_SME", # Optional in Armv9.2 # Others @@ -176,6 +178,8 @@ # Armv8.5 "FEAT_FLAGM2", "FEAT_EVT", +# Armv8.7 +"FEAT_HCX", # Armv9.2 "FEAT_SME", ] @@ -223,8 +227,14 @@ ] -class Armv92(Armv85): -extensions = Armv85.extensions + ["FEAT_SME"] +class Armv87(Armv85): +extensions = Armv85.extensions + [ +"FEAT_HCX", +] + + +class Armv92(Armv87): +extensions = Armv87.extensions + ["FEAT_SME"] class ArmSystem(System): diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index c8ea1f2..375e01a 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -1600,6 +1600,18 @@ } Fault +faultHcrxEL2(const MiscRegLUTEntry &entry, +ThreadContext *tc, const MiscRegOp64 &inst) +{ +const SCR scr = tc->readMiscReg(MISCREG_SCR_EL3); +if (ArmSystem::haveEL(tc, EL3) && !scr.hxen) { +return inst.generateTrap(EL3); +} else { +return NoFault; +} +} + +Fault faultZcrEL1(const MiscRegLUTEntry &entry, ThreadContext *tc, const MiscRegOp64 &inst) { @@ -4081,6 +4093,7 @@ mmfr1_el1.vh = release->has(ArmExtension::FEAT_VHE) ? 0x1 : 0x0; mmfr1_el1.hpds = release->has(ArmExtension::FEAT_HPDS) ? 0x1 : 0x0; mmfr1_el1.pan = release->has(ArmExtension::FEAT_PAN) ? 0x1 : 0x0; + mmfr1_el1.hcx = release->has(ArmExtension::FEAT_HCX) ? 0x1 : 0x0; return mmfr1_el1; }()) .faultRead(EL0, faultIdst) @@ -4225,6 +4238,9 @@ InitReg(MISCREG_HCR_EL2) .hyp().mon() .mapsTo(MISCREG_HCR, MISCREG_HCR2); +InitReg(MISCREG_HCRX_EL2) + .hyp().mon() + .fault(EL2, faultHcrxEL2); InitReg(MISCREG_MDCR_EL2) .hyp().mon() .fault(EL2, faultDebugEL2) @@ -5645,11 +5661,6 @@ .warnNotFail() .fault(faultUnimplemented); -// HCX extension (unimplemented) -InitReg(MISCREG_HCRX_EL2) - .unimplemented() - .warnNotFail(); - // FGT extension (unimplemented) InitReg(MISCREG_HFGRTR_EL2) .unimplemented() diff --git a/src/arch/arm/regs/misc.hh b/src/arch/arm/regs/misc.hh index 429fcb5..cb03841 100644 --- a/src/arch/arm/regs/misc.hh +++ b/src/arch/arm/regs/misc.hh @@ -589,6 +589,7 @@ MISCREG_SCTLR_EL2, MISCREG_ACTLR_EL2, MISCREG_HCR_EL2, +MISCREG_HCRX_EL2, MISCREG_MDCR_EL2, MISCREG_CPTR_EL2, MISCREG_HSTR_EL2, @@ -1125,9 +1126,6 @@ MISCREG_VSESR_EL2, MISCREG_VDISR_EL2, -// HCX extension (unimplemented) -MISCREG_HCRX_EL2, - // FGT extension (unimplemented) MISCREG_HFGRTR_EL2, MISCREG_HFGWTR_EL2, @@ -2272,6 +2270,7 @@ "sctlr_el2", "actlr_el2", "hcr_el2", +"hcrx_el2", "mdcr_el2", "cptr_el2", "hstr_el2", @@ -2785,7 +2784,6 @@ "disr_el1", "vsesr_el2", "vdisr_el2", -"hcrx_el2", "hfgrtr_el2", "hfgwtr_el2", diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index b7a1207..d8391d9 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -157,6 +157,7 @@ EndBitUnion(AA64MMFR0) BitUnion64(AA64MMFR1) +Bitfield<43, 40> hcx; Bitfield<31, 28> xnx; Bitfield<27, 24> specsei; Bitfield<23, 20> pan; @@ -360,6 +361,7 @@ BitUnion64(SCR) Bitfield<40> trndr; +Bitfield<38> hxen; Bitfield<21> fien; Bitfield<20> nmea; Bitfield<19> ease; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70939?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Id1ec42a754b7d999782edde3a8ec6c6099e3331e Gerrit-Change-Number: 70939 Gerrit-PatchSet: 1
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Fix printing of VecElemClass registers
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70697?usp=email ) Change subject: arch-arm: Fix printing of VecElemClass registers .. arch-arm: Fix printing of VecElemClass registers At the moment it is not possible to trace the value of VecElemClass registers. If a AArch32 SIMD binary is run with tracing on, simulation will fail the following assertion [1]. std::string valString(const void *val, size_t size) const override { assert(size == sizeof(ValueType)); The problem is that Arm VecElems are stored in RegVal (uint64_t), but the VecElem data type (ValueType above) per se is a uint32_t. So valString is getting called with size = 8 (coming from RegVal) but ValueType has size = 4. We fix this problem by using RegVal as a VecElemRegClassOps template parameter to make them match. This is not changing anything from a functionality perspective. The result will be that we will be able to print VecElems as 64bit values. This solution is the most simple one but a bit dirty. I believe in the long term we should make the VecElemClass use the void* interface rather than the RegVal one. In this way we will be able to correctly print the VecElem size as 32bit value. [1]: https://github.com/gem5/gem5/blob/v22.1.0.0/src/cpu/reg_class.hh#L362 Change-Id: Ic3fc252d41449f828b77f938fefc0cd4274b1c57 Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70697 Tested-by: kokoro Reviewed-by: Richard Cooper Maintainer: Jason Lowe-Power --- M src/arch/arm/regs/vec.hh 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Richard Cooper: Looks good to me, approved kokoro: Regressions pass Jason Lowe-Power: Looks good to me, approved diff --git a/src/arch/arm/regs/vec.hh b/src/arch/arm/regs/vec.hh index 00ab87f..19f37c9 100644 --- a/src/arch/arm/regs/vec.hh +++ b/src/arch/arm/regs/vec.hh @@ -93,7 +93,7 @@ const int PREDREG_FFR = 16; const int PREDREG_UREG0 = 17; -static inline VecElemRegClassOps +static inline VecElemRegClassOps vecRegElemClassOps(NumVecElemPerVecReg); static inline TypedRegClassOps vecRegClassOps; static inline TypedRegClassOps vecPredRegClassOps; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70697?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ic3fc252d41449f828b77f938fefc0cd4274b1c57 Gerrit-Change-Number: 70697 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Bobby Bruce Gerrit-Reviewer: Gabe Black Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Rename AdvSIMD instruction pool
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70724?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-arm: Rename AdvSIMD instruction pool .. arch-arm: Rename AdvSIMD instruction pool The decoding function was wrongly named decodeNeon3SameExtra, referring to the "AdvSIMD three same Extra" instruction pool This might be an old name as I can only find the "AdvSIMD *scalar* three same Extra" in the Arm arm. The encoding space reserved to the pool bears the "Advanced SIMD three-register extension" name; we therefore rename the function to decodeNeon3RegExtension Change-Id: I056da8f0c7808935d12a4b05490d30654178071f Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70724 Tested-by: kokoro Maintainer: Jason Lowe-Power --- M src/arch/arm/isa/formats/aarch64.isa M src/arch/arm/isa/formats/neon64.isa 2 files changed, 4 insertions(+), 4 deletions(-) Approvals: kokoro: Regressions pass Richard Cooper: Looks good to me, approved Jason Lowe-Power: Looks good to me, approved diff --git a/src/arch/arm/isa/formats/aarch64.isa b/src/arch/arm/isa/formats/aarch64.isa index 9ad2de2..47d509e 100644 --- a/src/arch/arm/isa/formats/aarch64.isa +++ b/src/arch/arm/isa/formats/aarch64.isa @@ -2461,7 +2461,7 @@ return new Unknown64(machInst); } } else if (bits(machInst, 15) == 1) { -return decodeNeon3SameExtra(machInst); +return decodeNeon3RegExtension(machInst); } else if (bits(machInst, 10) == 1) { if (bits(machInst, 23, 22)) return new Unknown64(machInst); diff --git a/src/arch/arm/isa/formats/neon64.isa b/src/arch/arm/isa/formats/neon64.isa index 72b7e28..c200da7 100644 --- a/src/arch/arm/isa/formats/neon64.isa +++ b/src/arch/arm/isa/formats/neon64.isa @@ -39,9 +39,9 @@ // AdvSIMD three same template StaticInstPtr decodeNeon3Same(ExtMachInst machInst); -// AdvSIMD three same Extra +// AdvSIMD three register extension template -StaticInstPtr decodeNeon3SameExtra(ExtMachInst machInst); +StaticInstPtr decodeNeon3RegExtension(ExtMachInst machInst); // AdvSIMD three different inline StaticInstPtr decodeNeon3Diff(ExtMachInst machInst); // AdvSIMD two-reg misc @@ -507,7 +507,7 @@ template StaticInstPtr -decodeNeon3SameExtra(ExtMachInst machInst) +decodeNeon3RegExtension(ExtMachInst machInst) { uint8_t q = bits(machInst, 30); uint8_t size = bits(machInst, 23, 22); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70724?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I056da8f0c7808935d12a4b05490d30654178071f Gerrit-Change-Number: 70724 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Improve debugging of CC regs accesses
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70718?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-arm: Improve debugging of CC regs accesses .. arch-arm: Improve debugging of CC regs accesses As of now we are simply printing the CC reg index which is not particularly helpful. With this patch we actually print the (NZ|C|V) reg name. Change-Id: Ib4b56a372b25e5bc2b6b762d2ef3ff2084097cce Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70718 Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/arch/arm/regs/cc.hh 1 file changed, 23 insertions(+), 11 deletions(-) Approvals: Richard Cooper: Looks good to me, approved Jason Lowe-Power: Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/arm/regs/cc.hh b/src/arch/arm/regs/cc.hh index ba75527..474e48e 100644 --- a/src/arch/arm/regs/cc.hh +++ b/src/arch/arm/regs/cc.hh @@ -61,10 +61,31 @@ NumRegs }; +const char * const RegName[NumRegs] = { +"nz", +"c", +"v", +"ge", +"fp", +"zero" +}; + } // namespace cc_reg -inline constexpr RegClass ccRegClass(CCRegClass, CCRegClassName, -cc_reg::NumRegs, debug::CCRegs); +class CCRegClassOps : public RegClassOps +{ + public: +std::string +regName(const RegId &id) const override +{ +return cc_reg::RegName[id.index()]; +} +}; + +static inline CCRegClassOps ccRegClassOps; + +inline constexpr RegClass ccRegClass = RegClass(CCRegClass, CCRegClassName, +cc_reg::NumRegs, debug::CCRegs).ops(ccRegClassOps); namespace cc_reg { @@ -77,15 +98,6 @@ Fp = ccRegClass[_FpIdx], Zero = ccRegClass[_ZeroIdx]; -const char * const RegName[NumRegs] = { -"nz", -"c", -"v", -"ge", -"fp", -"zero" -}; - } // namespace cc_reg enum ConditionCode -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70718?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ib4b56a372b25e5bc2b6b762d2ef3ff2084097cce Gerrit-Change-Number: 70718 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Define a AA64ZFR0 data type
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70725?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-arm: Define a AA64ZFR0 data type .. arch-arm: Define a AA64ZFR0 data type Change-Id: I6b0dcf0c1882f356783934f625c2bc3a25fbb885 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70725 Tested-by: kokoro Maintainer: Jason Lowe-Power --- M src/arch/arm/regs/misc_types.hh 1 file changed, 13 insertions(+), 0 deletions(-) Approvals: Richard Cooper: Looks good to me, approved kokoro: Regressions pass Jason Lowe-Power: Looks good to me, approved diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index 214d418..b7a1207 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -203,6 +203,19 @@ Bitfield<3, 0> el0; EndBitUnion(AA64PFR0) +BitUnion64(AA64ZFR0) +Bitfield<59, 56> f64mm; +Bitfield<55, 52> f32mm; +Bitfield<47, 44> i8mm; +Bitfield<43, 40> sm4; +Bitfield<35, 32> sha3; +Bitfield<27, 24> b16b16; +Bitfield<23, 20> bf16; +Bitfield<19, 16> bitPerm; +Bitfield<7, 4> aes; +Bitfield<3, 0> sveVer; +EndBitUnion(AA64ZFR0) + BitUnion64(AA64SMFR0) Bitfield<63> fa64; Bitfield<59, 56> smEver; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70725?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I6b0dcf0c1882f356783934f625c2bc3a25fbb885 Gerrit-Change-Number: 70725 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Define remaining fields of the arm64 AT_HWCAP entry
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70758?usp=email ) Change subject: arch-arm: Define remaining fields of the arm64 AT_HWCAP entry .. arch-arm: Define remaining fields of the arm64 AT_HWCAP entry Change-Id: I4db4884d677f6d25417ae6edceb7f1e8dfad36cb Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70758 Reviewed-by: Richard Cooper Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/arch/arm/process.cc 1 file changed, 6 insertions(+), 2 deletions(-) Approvals: Richard Cooper: Looks good to me, approved Jason Lowe-Power: Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/arm/process.cc b/src/arch/arm/process.cc index 9770ea6..6b5f69e 100644 --- a/src/arch/arm/process.cc +++ b/src/arch/arm/process.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2012, 2017-2018 ARM Limited + * Copyright (c) 2010, 2012, 2017-2018, 2023 Arm Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -207,7 +207,11 @@ Arm_Dit = 1 << 24, Arm_Uscat = 1 << 25, Arm_Ilrcpc = 1 << 26, -Arm_Flagm = 1 << 27 +Arm_Flagm = 1 << 27, +Arm_Sbss = 1 << 28, +Arm_Sb = 1 << 29, +Arm_Paca = 1 << 30, +Arm_Pacg = 1 << 31 }; uint32_t hwcap = 0; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70758?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I4db4884d677f6d25417ae6edceb7f1e8dfad36cb Gerrit-Change-Number: 70758 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [L] Change in gem5/gem5[develop]: arch-arm: Split decodeDataProcReg into subfunctions
urn new Unknown64(machInst); -} -uint8_t switchVal = bits(machInst, 15, 10); -switch (switchVal) { - case 0x0: -return new Rbit64(machInst, rdzr, rn); - case 0x1: -return new Rev1664(machInst, rdzr, rn); - case 0x2: -if (bits(machInst, 31) == 0) -return new Rev64(machInst, rdzr, rn); -else -return new Rev3264(machInst, rdzr, rn); - case 0x3: -if (bits(machInst, 31) != 1) -return new Unknown64(machInst); -return new Rev64(machInst, rdzr, rn); - case 0x4: -return new Clz64(machInst, rdzr, rn); - case 0x5: -return new Cls64(machInst, rdzr, rn); - default: -return new Unknown64(machInst); -} +return decodeDataProcOneS(machInst); } default: GEM5_UNREACHABLE; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70717?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ifa03a93cb73de0b2dc93d7784f9011e0e55dfc1e Gerrit-Change-Number: 70717 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Extend auxiliary vector with AT_HWCAP2 entry
s, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I7a2d813ea84bf528b1f9df09121f9e97456a11c0 Gerrit-Change-Number: 70760 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Extend SCR to be 64-bit wide
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70720?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-arm: Extend SCR to be 64-bit wide .. arch-arm: Extend SCR to be 64-bit wide Change-Id: I9928de3db61957404269d189a15a951fd6707c8a Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70720 Tested-by: kokoro Maintainer: Jason Lowe-Power --- M src/arch/arm/regs/misc_types.hh 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Jason Lowe-Power: Looks good to me, approved Richard Cooper: Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index c139f1a..71fdd60 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -345,7 +345,7 @@ Bitfield<0> cp0; EndBitUnion(NSACR) -BitUnion32(SCR) +BitUnion64(SCR) Bitfield<21> fien; Bitfield<20> nmea; Bitfield<19> ease; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70720?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I9928de3db61957404269d189a15a951fd6707c8a Gerrit-Change-Number: 70720 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Enable FEAT_PAuth in SE mode
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70759?usp=email ) Change subject: arch-arm: Enable FEAT_PAuth in SE mode .. arch-arm: Enable FEAT_PAuth in SE mode It was in theory already possible to use FEAT_PAuth instructions in SE mode, however its presence was hidden to userspace code as the cpu feature was not listed in the auxiliary vectors Change-Id: I6da5da0878dde56c22ffdba25eff15e36f5022fe Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70759 Reviewed-by: Richard Cooper Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/arch/arm/process.cc 1 file changed, 2 insertions(+), 0 deletions(-) Approvals: Richard Cooper: Looks good to me, approved Jason Lowe-Power: Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/arm/process.cc b/src/arch/arm/process.cc index 6b5f69e..02771ae 100644 --- a/src/arch/arm/process.cc +++ b/src/arch/arm/process.cc @@ -251,6 +251,8 @@ hwcap |= (isa_r1.fcma >= 1) ? Arm_Fcma : 0; hwcap |= (isa_r1.lrcpc >= 1) ? Arm_Lrcpc : 0; hwcap |= (isa_r1.lrcpc >= 2) ? Arm_Ilrcpc : 0; +hwcap |= (isa_r1.apa >= 1 || isa_r1.api >= 1) ? Arm_Paca : 0; +hwcap |= (isa_r1.gpa >= 1 || isa_r1.gpi >= 1) ? Arm_Pacg : 0; const AA64MMFR2 mm_fr2 = tc->readMiscReg(MISCREG_ID_AA64MMFR2_EL1); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70759?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I6da5da0878dde56c22ffdba25eff15e36f5022fe Gerrit-Change-Number: 70759 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement FEAT_FLAGM(2)
uot;RegImmImmOp64", + flagmCheckCode + rmifCode) +header_output += RegImmImmOp64Declare.subst(rmifIop) +decoder_output += RegImmImmOp64Constructor.subst(rmifIop) +exec_output += BasicExecute.subst(rmifIop) + +setfCode = ''' +const int msb = %d; +RegVal tmp = Op1; +CondCodesNZ = (bits(tmp, msb) << 1) | (bits(tmp, msb, 0) ? 0 : 1); +CondCodesV = bits(tmp, msb) ^ bits(tmp, msb + 1); +''' +setf8Iop = ArmInstObjParams("setf8", "Setf8", "RegOp64", +flagmCheckCode + setfCode % 7) +header_output += RegOp64Declare.subst(setf8Iop) +decoder_output += RegOp64Constructor.subst(setf8Iop) +exec_output += BasicExecute.subst(setf8Iop) + +setf16Iop = ArmInstObjParams("setf16", "Setf16", "RegOp64", + flagmCheckCode + setfCode % 15) +header_output += RegOp64Declare.subst(setf16Iop) +decoder_output += RegOp64Constructor.subst(setf16Iop) +exec_output += BasicExecute.subst(setf16Iop) }}; diff --git a/src/arch/arm/isa/templates/misc64.isa b/src/arch/arm/isa/templates/misc64.isa index af6b4c6..a2024f7 100644 --- a/src/arch/arm/isa/templates/misc64.isa +++ b/src/arch/arm/isa/templates/misc64.isa @@ -58,6 +58,56 @@ } }}; +def template RegOp64Declare {{ +class %(class_name)s : public %(base_class)s +{ + private: +%(reg_idx_arr_decl)s; + + public: +// Constructor +%(class_name)s(ExtMachInst machInst, RegIndex _op1); + +Fault execute(ExecContext *, trace::InstRecord *) const override; +}; +}}; + +def template RegOp64Constructor {{ +%(class_name)s::%(class_name)s(ExtMachInst machInst, RegIndex _op1) : +%(base_class)s("%(mnemonic)s", machInst, %(op_class)s, _op1) +{ +%(set_reg_idx_arr)s; +%(constructor)s; +} +}}; + +def template RegImmImmOp64Declare {{ +class %(class_name)s : public %(base_class)s +{ + private: +%(reg_idx_arr_decl)s; + + public: +// Constructor +%(class_name)s(ExtMachInst machInst, + RegIndex _op1, + uint64_t _imm1, uint64_t _imm2); +Fault execute(ExecContext *, trace::InstRecord *) const override; +}; +}}; + +def template RegImmImmOp64Constructor {{ +%(class_name)s::%(class_name)s(ExtMachInst machInst, + RegIndex _op1, + uint64_t _imm1, uint64_t _imm2) : +%(base_class)s("%(mnemonic)s", machInst, %(op_class)s, + _op1, _imm1, _imm2) +{ +%(set_reg_idx_arr)s; +%(constructor)s; +} +}}; + def template RegRegImmImmOp64Declare {{ class %(class_name)s : public %(base_class)s { diff --git a/src/arch/arm/process.cc b/src/arch/arm/process.cc index 9b0f3b2..b2378cc 100644 --- a/src/arch/arm/process.cc +++ b/src/arch/arm/process.cc @@ -314,6 +314,11 @@ uint64_t hwcap = 0; +ThreadContext *tc = system->threads[contextIds[0]]; + +const AA64ISAR0 isa_r0 = tc->readMiscReg(MISCREG_ID_AA64ISAR0_EL1); +hwcap |= (isa_r0.ts >= 2) ? Arm_Flagm2 : Arm_None; + return hwcap; } diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index ec5670e..9e633c0 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3891,6 +3891,9 @@ isar0_el1.rdm = release->has(ArmExtension::FEAT_RDM) ? 0x1 : 0x0; isar0_el1.tme = release->has(ArmExtension::TME) ? 0x1 : 0x0; isar0_el1.tlb = release->has(ArmExtension::FEAT_TLBIOS) ? 0x1 : 0x0; + isar0_el1.ts = release->has(ArmExtension::FEAT_FLAGM2) ? + 0x2 : release->has(ArmExtension::FEAT_FLAGM) ? + 0x1 : 0x0; return isar0_el1; }()) .faultRead(EL1, HCR_TRAP(tid3)) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70719?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I21f1eb91ad9acb019a776a7d5edd38754571a62e Gerrit-Change-Number: 70719 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement trapping of SME registers
.fault(EL2, faultTsmSmen) +.fault(EL3, faultEsm) .hyp().mon(); InitReg(MISCREG_SMCR_EL12) .allPrivileges().exceptUserMode(); @@ -5411,6 +5487,9 @@ smcr_el1.len = smeVL - 1; return smcr_el1; }()) +.fault(EL1, faultSmenEL1) +.fault(EL2, faultTsmSmen) +.fault(EL3, faultEsm) .allPrivileges().exceptUserMode(); InitReg(MISCREG_TPIDR2_EL0) .allPrivileges(); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70722?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ic5bcc79a535c928265fbc1db1cd0c85ba1a1b152 Gerrit-Change-Number: 70722 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement FEAT_IDST
3986,8 +4010,9 @@ isar1_el1.gpa = release->has(ArmExtension::FEAT_PAuth) ? 0x1 : 0x0; return isar1_el1; }()) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_ID_AA64MMFR0_EL1) .reset([p,asidbits=haveLargeAsid64,parange=physAddrRange](){ AA64MMFR0 mmfr0_el1 = p.id_aa64mmfr0_el1; @@ -3995,8 +4020,9 @@ mmfr0_el1.parange = encodePhysAddrRange64(parange); return mmfr0_el1; }()) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_ID_AA64MMFR1_EL1) .reset([p,release=release](){ AA64MMFR1 mmfr1_el1 = p.id_aa64mmfr1_el1; @@ -4006,17 +4032,20 @@ mmfr1_el1.pan = release->has(ArmExtension::FEAT_PAN) ? 0x1 : 0x0; return mmfr1_el1; }()) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_ID_AA64MMFR2_EL1) .reset([p,release=release](){ AA64MMFR2 mmfr2_el1 = p.id_aa64mmfr2_el1; mmfr2_el1.uao = release->has(ArmExtension::FEAT_UAO) ? 0x1 : 0x0; mmfr2_el1.varange = release->has(ArmExtension::FEAT_LVA) ? 0x1 : 0x0; + mmfr2_el1.ids = release->has(ArmExtension::FEAT_IDST) ? 0x1 : 0x0; return mmfr2_el1; }()) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_APDAKeyHi_EL1) .fault(EL1, faultPauthEL1) @@ -4060,14 +4089,17 @@ .allPrivileges().exceptUserMode(); InitReg(MISCREG_CCSIDR_EL1) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid2)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_CLIDR_EL1) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid2)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_AIDR_EL1) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid1)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_CSSELR_EL1) .allPrivileges().exceptUserMode() .fault(EL1, HCR_TRAP(tid2)) @@ -5371,6 +5403,7 @@ // SVE InitReg(MISCREG_ID_AA64ZFR0_EL1) +.faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ZCR_EL3) @@ -5410,8 +5443,9 @@ smfr0_el1.fa64 = 0x1; return smfr0_el1; }()) +.faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) -.allPrivileges().exceptUserMode().writes(0); +.allPrivileges().writes(0); InitReg(MISCREG_SVCR) .res0([](){ SVCR svcr_mask = 0; @@ -5432,8 +5466,9 @@ smidr_el1.implementer = 0x41; return smidr_el1; }()) +.faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid1)) -.allPrivileges().exceptUserMode().writes(0); +.allPrivileges().writes(0); InitReg(MISCREG_SMPRI_EL1) .res0(mask(63, 4)) .fault(EL1, faultEsm) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70723?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I3cabcfdb10f4eefaf2ab039376d840cc4c54609a Gerrit-Change-Number: 70723 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement FEAT_RNG
+.unverifiable() +.allPrivileges().writes(0); +InitReg(MISCREG_RNDRRS) +.faultRead(EL0, faultRng) +.faultRead(EL1, faultRng) +.faultRead(EL2, faultRng) +.faultRead(EL3, faultRng) +.unverifiable() +.allPrivileges().writes(0); + // Dummy registers InitReg(MISCREG_NOP) .allPrivileges(); diff --git a/src/arch/arm/regs/misc.hh b/src/arch/arm/regs/misc.hh index c43cf74..429fcb5 100644 --- a/src/arch/arm/regs/misc.hh +++ b/src/arch/arm/regs/misc.hh @@ -1091,6 +1091,10 @@ MISCREG_TPIDR2_EL0, MISCREG_MPAMSM_EL1, +// FEAT_RNG +MISCREG_RNDR, +MISCREG_RNDRRS, + // NUM_PHYS_MISCREGS specifies the number of actual physical // registers, not considering the following pseudo-registers // (dummy registers), like MISCREG_UNKNOWN, MISCREG_IMPDEF_UNIMPL. @@ -2760,6 +2764,9 @@ "tpidr2_el0", "mpamsm_el1", +"rndr", +"rndrrs", + "num_phys_regs", // Dummy registers diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index 71fdd60..214d418 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -346,6 +346,7 @@ EndBitUnion(NSACR) BitUnion64(SCR) +Bitfield<40> trndr; Bitfield<21> fien; Bitfield<20> nmea; Bitfield<19> ease; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70721?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I9d60d249172ef4bbaf5d9b38ef279eff344b80d8 Gerrit-Change-Number: 70721 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Extend auxiliary vector with AT_HWCAP2 entry
Giacomo Travaglini has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/70760?usp=email ) Change subject: arch-arm: Extend auxiliary vector with AT_HWCAP2 entry .. arch-arm: Extend auxiliary vector with AT_HWCAP2 entry The presence of some of the new extensions is reported via the AT_HWCAP2 entry Change-Id: I7a2d813ea84bf528b1f9df09121f9e97456a11c0 Signed-off-by: Giacomo Travaglini --- M src/arch/arm/process.cc M src/arch/arm/process.hh 2 files changed, 69 insertions(+), 4 deletions(-) diff --git a/src/arch/arm/process.cc b/src/arch/arm/process.cc index 02771ae..9b0f3b2 100644 --- a/src/arch/arm/process.cc +++ b/src/arch/arm/process.cc @@ -261,6 +261,62 @@ return hwcap; } +uint64_t +ArmProcess64::armHwcapImpl2() const +{ +enum ArmCpuFeature : uint64_t +{ +Arm_None = 0, +Arm_Dcpodp = 1ULL << 0, +Arm_Sve2 = 1ULL<< 1, +Arm_Sveaes = 1ULL << 2, +Arm_Svepmull = 1ULL << 3, +Arm_Svebitperm = 1ULL << 4, +Arm_Svesha3 = 1ULL << 5, +Arm_Svesm4 = 1ULL << 6, +Arm_Flagm2 = 1ULL << 7, +Arm_Frint = 1ULL << 8, +Arm_Svei8mm = 1ULL << 9, +Arm_Svef32mm = 1ULL << 10, +Arm_Svef64mm = 1ULL << 11, +Arm_Svebf16 = 1ULL << 12, +Arm_I8mm = 1ULL << 13, +Arm_Bf16 = 1ULL << 14, +Arm_Dgh = 1ULL << 15, +Arm_Rng = 1ULL << 16, +Arm_Bti = 1ULL << 17, +Arm_Mte = 1ULL << 18, +Arm_Ecv = 1ULL << 19, +Arm_Afp = 1ULL << 20, +Arm_Rpres = 1ULL << 21, +Arm_Mte3 = 1ULL << 22, +Arm_Sme = 1ULL << 23, +Arm_Sme_I16i64 = 1ULL << 24, +Arm_Sme_F64f64 = 1ULL << 25, +Arm_Sme_I8i32 = 1ULL << 26, +Arm_Sme_F16f32 = 1ULL << 27, +Arm_Sme_B16f32 = 1ULL << 28, +Arm_Sme_F32f32 = 1ULL << 29, +Arm_Sme_Fa64 = 1ULL << 30, +Arm_Wfxt = 1ULL << 31, +Arm_Ebf16 = 1ULL << 32, +Arm_Sve_Ebf16 = 1ULL << 33, +Arm_Cssc = 1ULL << 34, +Arm_Rprfm = 1ULL << 35, +Arm_Sve2p1 = 1ULL << 36, +Arm_Sme2 = 1ULL << 37, +Arm_Sme2p1 = 1ULL << 38, +Arm_Sme_I16i32 = 1ULL << 39, +Arm_Sme_Bi32i32 = 1ULL << 40, +Arm_Sme_B16b16 = 1ULL << 41, +Arm_Sme_F16f16 = 1ULL << 42 +}; + +uint64_t hwcap = 0; + +return hwcap; +} + template void ArmProcess::argsInit(int pageSize, const RegId &spId) @@ -284,11 +340,10 @@ if (elfObject) { if (objFile->getOpSys() == loader::Linux) { -IntType features = armHwcap(); - //Bits which describe the system hardware capabilities //XXX Figure out what these should be -auxv.emplace_back(gem5::auxv::Hwcap, features); +auxv.emplace_back(gem5::auxv::Hwcap, armHwcap()); +auxv.emplace_back(gem5::auxv::Hwcap2, armHwcap2()); //Frequency at which times() increments auxv.emplace_back(gem5::auxv::Clktck, 0x64); //Whether to enable "secure mode" in the executable diff --git a/src/arch/arm/process.hh b/src/arch/arm/process.hh index 6bdabef..0aee6dc 100644 --- a/src/arch/arm/process.hh +++ b/src/arch/arm/process.hh @@ -1,5 +1,5 @@ /* -* Copyright (c) 2012, 2018 ARM Limited +* Copyright (c) 2012, 2018, 2023 Arm Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -69,10 +69,18 @@ return static_cast(armHwcapImpl()); } +template +IntType +armHwcap2() const +{ +return static_cast(armHwcapImpl2()); +} + /** * AT_HWCAP is 32-bit wide on AArch64 as well so we can * safely return an uint32_t */ virtual uint32_t armHwcapImpl() const = 0; +virtual uint64_t armHwcapImpl2() const = 0; }; class ArmProcess32 : public ArmProcess @@ -86,6 +94,7 @@ /** AArch32 AT_HWCAP */ uint32_t armHwcapImpl() const override; +uint64_t armHwcapImpl2() const override { return 0; } }; class ArmProcess64 : public ArmProcess @@ -99,6 +108,7 @@ /** AArch64 AT_HWCAP */ uint32_t armHwcapImpl() const override; +uint64_t armHwcapImpl2() const override; }; } // namespace gem5 -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70760?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I7a2d813ea84bf528b1f9df09121f9e97456a11c0 Gerrit-Change-Number: 70760 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Define remaining fields of the arm64 AT_HWCAP entry
Giacomo Travaglini has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/70758?usp=email ) Change subject: arch-arm: Define remaining fields of the arm64 AT_HWCAP entry .. arch-arm: Define remaining fields of the arm64 AT_HWCAP entry Change-Id: I4db4884d677f6d25417ae6edceb7f1e8dfad36cb Signed-off-by: Giacomo Travaglini --- M src/arch/arm/process.cc 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/arch/arm/process.cc b/src/arch/arm/process.cc index 9770ea6..6b5f69e 100644 --- a/src/arch/arm/process.cc +++ b/src/arch/arm/process.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2012, 2017-2018 ARM Limited + * Copyright (c) 2010, 2012, 2017-2018, 2023 Arm Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -207,7 +207,11 @@ Arm_Dit = 1 << 24, Arm_Uscat = 1 << 25, Arm_Ilrcpc = 1 << 26, -Arm_Flagm = 1 << 27 +Arm_Flagm = 1 << 27, +Arm_Sbss = 1 << 28, +Arm_Sb = 1 << 29, +Arm_Paca = 1 << 30, +Arm_Pacg = 1 << 31 }; uint32_t hwcap = 0; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70758?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I4db4884d677f6d25417ae6edceb7f1e8dfad36cb Gerrit-Change-Number: 70758 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Enable FEAT_PAuth in SE mode
Giacomo Travaglini has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/70759?usp=email ) Change subject: arch-arm: Enable FEAT_PAuth in SE mode .. arch-arm: Enable FEAT_PAuth in SE mode It was in theory already possible to use FEAT_PAuth instructions in SE mode, however its presence was hidden to userspace code as the cpu feature was not listed in the auxiliary vectors Change-Id: I6da5da0878dde56c22ffdba25eff15e36f5022fe Signed-off-by: Giacomo Travaglini --- M src/arch/arm/process.cc 1 file changed, 2 insertions(+), 0 deletions(-) diff --git a/src/arch/arm/process.cc b/src/arch/arm/process.cc index 6b5f69e..02771ae 100644 --- a/src/arch/arm/process.cc +++ b/src/arch/arm/process.cc @@ -251,6 +251,8 @@ hwcap |= (isa_r1.fcma >= 1) ? Arm_Fcma : 0; hwcap |= (isa_r1.lrcpc >= 1) ? Arm_Lrcpc : 0; hwcap |= (isa_r1.lrcpc >= 2) ? Arm_Ilrcpc : 0; +hwcap |= (isa_r1.apa >= 1 || isa_r1.api >= 1) ? Arm_Paca : 0; +hwcap |= (isa_r1.gpa >= 1 || isa_r1.gpi >= 1) ? Arm_Pacg : 0; const AA64MMFR2 mm_fr2 = tc->readMiscReg(MISCREG_ID_AA64MMFR2_EL1); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70759?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I6da5da0878dde56c22ffdba25eff15e36f5022fe Gerrit-Change-Number: 70759 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Re-factor Arm decoder for SVE mixed-sign DOT insts.
return decodeSveIntegerDotProductIndexed(machInst); + case 0b11: +return decodeSveMixedSignDotProductIndexed(machInst); + default: +return new Unknown64(machInst); +} +} else { +return new Unknown64(machInst); +} +return new Unknown64(machInst); +} } // namespace Aarch64 }}; diff --git a/src/arch/arm/isa/formats/sve_top_level.isa b/src/arch/arm/isa/formats/sve_top_level.isa index 0699637..d4c2a13 100644 --- a/src/arch/arm/isa/formats/sve_top_level.isa +++ b/src/arch/arm/isa/formats/sve_top_level.isa @@ -71,8 +71,10 @@ StaticInstPtr decodeSveIntWideImmUnpred(ExtMachInst machInst); StaticInstPtr decodeSveClamp(ExtMachInst machInst); -StaticInstPtr decodeSveMultiplyAddUnpred(ExtMachInst machInst); -StaticInstPtr decodeSveMultiplyIndexed(ExtMachInst machInst); +StaticInstPtr decodeSveIntegerDotProductUnpred(ExtMachInst machInst); +StaticInstPtr decodeSveIntegerDotProductIndexed(ExtMachInst machInst); +StaticInstPtr decodeSveMixedSignDotProduct(ExtMachInst machInst); +StaticInstPtr decodeSveMixedSignDotProductIndexed(ExtMachInst machInst); StaticInstPtr decodeSveFpFastReduc(ExtMachInst machInst); StaticInstPtr decodeSveFpUnaryUnpred(ExtMachInst machInst); @@ -96,6 +98,8 @@ StaticInstPtr decodeSveMemStore(ExtMachInst machInst); StaticInstPtr decodeSveMisc(ExtMachInst machInst); +StaticInstPtr decodeSveIntegerMulAddUnpred(ExtMachInst machInst); +StaticInstPtr decodeSveMultiplyIndexed(ExtMachInst machInst); } }}; @@ -107,10 +111,31 @@ decodeSveInt(ExtMachInst machInst) { if (bits(machInst, 31, 29) == 0b010) { -if (bits(machInst, 24) == 0b1 && -bits(machInst, 21) == 0b0 && -bits(machInst, 15, 14)==0b10) { -return decodeSveMisc(machInst); +uint8_t op1 = bits(machInst, 24, 23); +switch (op1) { + case 0b00: + case 0b01: + if (bits(machInst, 21) == 0b0) { + if (bits(machInst, 15) == 0b0) { + return decodeSveIntegerMulAddUnpred(machInst); + } else { + return new Unknown64(machInst); + } + } else { + return decodeSveMultiplyIndexed(machInst); + } + break; + case 0b10: + case 0b11: + if (bits(machInst, 21) == 0b0 && + bits(machInst, 15, 14) == 0b10) { + return decodeSveMisc(machInst); + } else { + return new Unknown64(machInst); + } + break; + default: + return new Unknown64(machInst); } } @@ -130,11 +155,10 @@ bits(machInst, 13); switch (b_15_13) { case 0x0: -if (bits(machInst, 30)) { -return decodeSveMultiplyAddUnpred(machInst); -} else { +if (!bits(machInst, 30)) { return decodeSveIntArithBinPred(machInst); } +break; case 0x1: return decodeSveIntReduc(machInst); case 0x2: @@ -155,12 +179,11 @@ if (b_13) { return decodeSveIntLogUnpred(machInst); } else { -if (bits(machInst, 30)) { -return decodeSveMultiplyIndexed(machInst); -} else { +if (!bits(machInst, 30)) { return decodeSveIntArithUnpred(machInst); } } +break; case 0x1: if (b_13) { return new Unknown64(machInst); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70731?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I42b280d4bd1b4ab9d8c633bdc523bd08c281d218 Gerrit-Change-Number: 70731 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Declare support for Armv8.2-F64MM.
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70729?usp=email to review the following change. Change subject: arch-arm: Declare support for Armv8.2-F64MM. .. arch-arm: Declare support for Armv8.2-F64MM. Sets the appropriate bit in the ID_AA64ZFR0_EL1 sysreg that declares support for ARMv8.2-F64MM. This indicates that all pre-requisites for Armv8.2 SVE FP64 double-precision floating-point matrix multiplication instructions have been met. FMMLA, and LD1RO* instructions have been implemented, as well as the 128-bit element variants of TRN1, TRN2, UZP1, UZP2, ZIP1, and ZIP2. For more information please refer to the "ARM Architecture Reference Manual Supplement - The Scalable Vector Extension (SVE), for ARMv8-A" (https://developer.arm.com/architectures/cpu-architecture/a-profile/ docs/arm-architecture-reference-manual-supplement-armv8-a) Change-Id: Idac3a3ca590e6eb2beb217a40a8c10af1e917440 Reviewed-by: Richard Cooper --- M src/arch/arm/ArmISA.py M src/arch/arm/ArmSystem.py M src/arch/arm/regs/misc.cc 3 files changed, 5 insertions(+), 0 deletions(-) diff --git a/src/arch/arm/ArmISA.py b/src/arch/arm/ArmISA.py index 31ecbcb..fbd93b6 100644 --- a/src/arch/arm/ArmISA.py +++ b/src/arch/arm/ArmISA.py @@ -54,6 +54,7 @@ "FEAT_RDM", # Armv8.2 "FEAT_F32MM", +"FEAT_F64MM", "FEAT_SVE", # Armv8.3 "FEAT_FCMA", diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py index 06d1dcc..5517632 100644 --- a/src/arch/arm/ArmSystem.py +++ b/src/arch/arm/ArmSystem.py @@ -79,6 +79,7 @@ "FEAT_LVA", # Optional in Armv8.2 "FEAT_LPA", # Optional in Armv8.2 "FEAT_F32MM", # Optional in Armv8.2 +"FEAT_F64MM", # Optional in Armv8.2 # Armv8.3 "FEAT_FCMA", "FEAT_JSCVT", @@ -165,6 +166,7 @@ "FEAT_LPA", "FEAT_SVE", "FEAT_F32MM", +"FEAT_F64MM", # Armv8.3 "FEAT_FCMA", "FEAT_JSCVT", @@ -199,6 +201,7 @@ "FEAT_LPA", "FEAT_SVE", "FEAT_F32MM", +"FEAT_F64MM", ] diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 6cabfca..362f996 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -5405,6 +5405,7 @@ .reset([this](){ AA64ZFR0 zfr0_el1 = 0; zfr0_el1.f32mm = release->has(ArmExtension::FEAT_F32MM) ? 1 : 0; +zfr0_el1.f64mm = release->has(ArmExtension::FEAT_F64MM) ? 1 : 0; return zfr0_el1; }()) .faultRead(EL0, faultIdst) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70729?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Idac3a3ca590e6eb2beb217a40a8c10af1e917440 Gerrit-Change-Number: 70729 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Add support for Armv8.2-I8MM NEON extension.
40> specres; Bitfield<39, 36> sb; Bitfield<35, 32> frintts; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70737?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I6fb9318f67cc9d2737079283e1a095630c4d2ad9 Gerrit-Change-Number: 70737 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Declare support for Armv8.2-I8MM.
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70733?usp=email to review the following change. Change subject: arch-arm: Declare support for Armv8.2-I8MM. .. arch-arm: Declare support for Armv8.2-I8MM. Sets the appropriate bit in the ID_AA64ZFR0_EL1 sysreg that declares support for ARMv8.2-I8MM. This indicates that all pre-requisites for Armv8.2 SVE Int8 matrix multiplication instructions have been met. SMMLA, SUDOT, UMMLA, USMMLA, and USDOT instructions are implemented. For more information please refer to the "ARM Architecture Reference Manual Supplement - The Scalable Vector Extension (SVE), for ARMv8-A" (https://developer.arm.com/architectures/cpu-architecture/a-profile/ docs/arm-architecture-reference-manual-supplement-armv8-a) Change-Id: Id97e1c5de8c23a25336a6b323034e9eca8e598e4 Reviewed-by: Richard Cooper --- M src/arch/arm/ArmISA.py M src/arch/arm/ArmSystem.py M src/arch/arm/regs/misc.cc 3 files changed, 5 insertions(+), 0 deletions(-) diff --git a/src/arch/arm/ArmISA.py b/src/arch/arm/ArmISA.py index fbd93b6..ffe63eb 100644 --- a/src/arch/arm/ArmISA.py +++ b/src/arch/arm/ArmISA.py @@ -56,6 +56,7 @@ "FEAT_F32MM", "FEAT_F64MM", "FEAT_SVE", +"FEAT_I8MM", # Armv8.3 "FEAT_FCMA", "FEAT_JSCVT", diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py index 5517632..9e66ee7 100644 --- a/src/arch/arm/ArmSystem.py +++ b/src/arch/arm/ArmSystem.py @@ -80,6 +80,7 @@ "FEAT_LPA", # Optional in Armv8.2 "FEAT_F32MM", # Optional in Armv8.2 "FEAT_F64MM", # Optional in Armv8.2 +"FEAT_I8MM", # Optional in Armv8.2 # Armv8.3 "FEAT_FCMA", "FEAT_JSCVT", @@ -167,6 +168,7 @@ "FEAT_SVE", "FEAT_F32MM", "FEAT_F64MM", +"FEAT_I8MM", # Armv8.3 "FEAT_FCMA", "FEAT_JSCVT", @@ -202,6 +204,7 @@ "FEAT_SVE", "FEAT_F32MM", "FEAT_F64MM", +"FEAT_I8MM", ] diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 362f996..6b299aa 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -5406,6 +5406,7 @@ AA64ZFR0 zfr0_el1 = 0; zfr0_el1.f32mm = release->has(ArmExtension::FEAT_F32MM) ? 1 : 0; zfr0_el1.f64mm = release->has(ArmExtension::FEAT_F64MM) ? 1 : 0; +zfr0_el1.i8mm = release->has(ArmExtension::FEAT_I8MM) ? 1 : 0; return zfr0_el1; }()) .faultRead(EL0, faultIdst) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70733?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Id97e1c5de8c23a25336a6b323034e9eca8e598e4 Gerrit-Change-Number: 70733 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Fix too long lines in existing Arm NEON instructons.
;> 1) & 0x1; -// Use division instead of a shift to ensure the sign extension works -// right. The compiler will figure out if it can be a shift. Mask the -// inputs so they get truncated correctly. +// Use division instead of a shift to ensure the sign extension +// works right. The compiler will figure out if it can be a shift. +// Mask the inputs so they get truncated correctly. destElem = (((srcElem1 & ~(Element)1) / 2) - ((srcElem2 & ~(Element)1) / 2)) - borrowBit; ''' @@ -2802,7 +2802,8 @@ FPSCR fpscr = (FPSCR) FpscrQc; destElem = srcElem1; if (srcElem1 < 0 || -((BigElement)destElem & mask(sizeof(Element) * 8)) != srcElem1) { +((BigElement)destElem & mask(sizeof(Element) * 8)) + != srcElem1) { fpscr.qc = 1; destElem = mask(sizeof(Element) * 8); if (srcElem1 < 0) @@ -2821,9 +2822,9 @@ Element carryBit = (((unsigned)srcElem1 & 0x1) + ((unsigned)srcElem2 & 0x1) + 1) >> 1; -// Use division instead of a shift to ensure the sign extension works -// right. The compiler will figure out if it can be a shift. Mask the -// inputs so they get truncated correctly. +// Use division instead of a shift to ensure the sign extension +// works right. The compiler will figure out if it can be a shift. +// Mask the inputs so they get truncated correctly. destElem = (((srcElem1 & ~(Element)1) / 2) + ((srcElem2 & ~(Element)1) / 2)) + carryBit; ''' @@ -3013,7 +3014,8 @@ if (bits(destElem, sizeof(Element) * 8 - 1) == 0) { if (bits(tmp, sizeof(Element) * 8 - 1) == 1 || tmp < srcElem1 || tmp < destElem) { -destElem = (((Element) 1) << (sizeof(Element) * 8 - 1)) - 1; +destElem = (((Element) 1) << (sizeof(Element) * 8 - 1)) + - 1; fpscr.qc = 1; } else { destElem = tmp; @@ -3021,9 +3023,11 @@ } else { Element absDestElem = (~destElem) + 1; if (absDestElem < srcElem1) { -// Still check for positive sat., no need to check for negative sat. +// Still check for positive sat., no need to check for +// negative sat. if (bits(tmp, sizeof(Element) * 8 - 1) == 1) { -destElem = (((Element) 1) << (sizeof(Element) * 8 - 1)) - 1; +destElem = (((Element) 1) << (sizeof(Element) * 8 - 1)) + - 1; fpscr.qc = 1; } else { destElem = tmp; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70735?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I587fcb2d75c4ab9de47fa53b4ae96526a20afe3f Gerrit-Change-Number: 70735 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm, cpu, configs: Add new Op Classes for Matrix Multiply insts
2022 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -72,6 +72,7 @@ static const OpClass SimdMiscOp = enums::SimdMisc; static const OpClass SimdMultOp = enums::SimdMult; static const OpClass SimdMultAccOp = enums::SimdMultAcc; +static const OpClass SimdMatMultAccOp = enums::SimdMatMultAcc; static const OpClass SimdShiftOp = enums::SimdShift; static const OpClass SimdShiftAccOp = enums::SimdShiftAcc; static const OpClass SimdDivOp = enums::SimdDiv; @@ -87,6 +88,7 @@ static const OpClass SimdFloatMiscOp = enums::SimdFloatMisc; static const OpClass SimdFloatMultOp = enums::SimdFloatMult; static const OpClass SimdFloatMultAccOp = enums::SimdFloatMultAcc; +static const OpClass SimdFloatMatMultAccOp = enums::SimdFloatMatMultAcc; static const OpClass SimdFloatSqrtOp = enums::SimdFloatSqrt; static const OpClass SimdFloatReduceCmpOp = enums::SimdFloatReduceCmp; static const OpClass SimdFloatReduceAddOp = enums::SimdFloatReduceAdd; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70734?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ifab63a0efbb0ccfbd272245e0b0b055279f66e3a Gerrit-Change-Number: 70734 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Added 128-bit encodings of SVE TRN, UZP, and ZIP insts.
Op2_x[s - eltsInPairsCount]; } } -for (unsigned i = 0; i < eCount; i++) { +// Fill output vector with pairs of elements +for (unsigned i = 0; i < eltsInPairsCount; i++) { AA64FpDest_x[i] = auxDest[i]; } +// Fill any trailing non-full pairs with zeros +for (unsigned i = eltsInPairsCount; i < eCount; i++) { +AA64FpDest_x[i] = 0; +} ''' -sveBinInst('uzp1', 'Uzp1', 'SimdAluOp', unsignedTypes, '', - customIterCode=uzpIterCode % 0) -sveBinInst('uzp2', 'Uzp2', 'SimdAluOp', unsignedTypes, '', - customIterCode=uzpIterCode % 1) +sveBinInst('uzp1', 'Uzp1', 'SimdAluOp', extendedUnsignedTypes, '', + customIterCode=uzpIterCode % dict(mnemonic='uzp1', part=0)) +sveBinInst('uzp2', 'Uzp2', 'SimdAluOp', extendedUnsignedTypes, '', + customIterCode=uzpIterCode % dict(mnemonic='uzp2', part=1)) # WHILELE (32-bit) whileLECode = ''' cond = srcElem1 <= srcElem2; @@ -5000,22 +5051,35 @@ zipPredIterCode % 1) # ZIP1, ZIP2 (vectors) zipIterCode = ''' +// SVE F64MM support requires that there are at least two elements +// in the vector. +if (eCount < 2) { +return std::make_shared(machInst, false, + "%(mnemonic)s"); +} int s; -int part = %d; +int part = %(part)d; ArmISA::VecRegContainer tmpVecC; auto auxDest = tmpVecC.as(); -for (unsigned i = 0; i < eCount / 2; i++) { -s = i + (part * (eCount / 2)); +const unsigned eltPairsCount = eCount / 2; +const unsigned eltsInPairsCount = eltPairsCount * 2; +for (unsigned i = 0; i < eltPairsCount; i++) { +s = i + (part * (eltsInPairsCount / 2)); auxDest[2 * i] = AA64FpOp1_x[s]; auxDest[2 * i + 1] = AA64FpOp2_x[s]; } -for (unsigned i = 0; i < eCount; i++) { +// Fill output vector with pairs of elements +for (unsigned i = 0; i < eltsInPairsCount; i++) { AA64FpDest_x[i] = auxDest[i]; } +// Fill any trailing non-full pairs with zeros +for (unsigned i = eltsInPairsCount; i < eCount; i++) { +AA64FpDest_x[i] = 0; +} ''' -sveBinInst('zip1', 'Zip1', 'SimdAluOp', unsignedTypes, '', - customIterCode=zipIterCode % 0) -sveBinInst('zip2', 'Zip2', 'SimdAluOp', unsignedTypes, '', - customIterCode=zipIterCode % 1) +sveBinInst('zip1', 'Zip1', 'SimdAluOp', extendedUnsignedTypes, '', + customIterCode=zipIterCode % dict(mnemonic='zip1', part=0)) +sveBinInst('zip2', 'Zip2', 'SimdAluOp', extendedUnsignedTypes, '', + customIterCode=zipIterCode % dict(mnemonic='zip2', part=1)) }}; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70728?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I496576340c48410fedb2cf6fc7d1a02e219b3bd4 Gerrit-Change-Number: 70728 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Add support for Arm SVE Integer Matrix instructions.
t('mls', 'Mls', 'SimdMultAccOp', signedTypes, mlsCode) + +mmlaCode = ('destElem += srcElemA * srcElemB') +# SMMLA (vectors) +sveMatMulInst('smmla', 'Smmla', 'SimdMultAccOp', + (('int32_t', 'int8_t', 'int8_t'),), + numDestRows=2, numDestCols=2, K=8, + elt_mul_op=mmlaCode) +# USMMLA (vectors) +sveMatMulInst('usmmla', 'Usmmla', 'SimdMultAccOp', + (('int32_t', 'uint8_t', 'int8_t'),), + numDestRows=2, numDestCols=2, K=8, + elt_mul_op=mmlaCode) +# UMMLA (vectors) +sveMatMulInst('ummla', 'Ummla', 'SimdMultAccOp', + (('uint32_t', 'uint8_t', 'uint8_t'),), + numDestRows=2, numDestCols=2, K=8, + elt_mul_op=mmlaCode) + # MOVPRFX (predicated) movCode = 'destElem = srcElem1;' sveUnaryInst('movprfx', 'MovprfxPredM', 'SimdMiscOp', unsignedTypes, -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70730?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ia50e28fae03634cbe04b42a9900bab65a604817f Gerrit-Change-Number: 70730 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Added Armv8.2-I8MM SVE mixed-sign dot product instrs.
;], isIndexed = False) +# USDOT (indexed) +sveDotInst('usdot', 'Usdoti', 'SimdAluOp', ['uint8_t, int8_t, int32_t'], + isIndexed = True) +# USDOT (vectors) +sveDotInst('usdot', 'Usdotv', 'SimdAluOp', ['uint8_t, int8_t, int32_t'], + isIndexed = False) # UMAX (immediate) sveWideImmInst('umax', 'UmaxImm', 'SimdCmpOp', unsignedTypes, maxCode) # UMAX (vectors) diff --git a/src/arch/arm/isa/templates/sve.isa b/src/arch/arm/isa/templates/sve.isa index 9043e23..7c41b40 100644 --- a/src/arch/arm/isa/templates/sve.isa +++ b/src/arch/arm/isa/templates/sve.isa @@ -1113,17 +1113,22 @@ }}; def template SveWideningTerImmOpDeclare {{ -template +template class %(class_name)s : public %(base_class)s { + static_assert(sizeof(_SElementA) == sizeof(_SElementB), +"Source elements must have the same size."); + private: %(reg_idx_arr_decl)s; protected: typedef _DElement Element; -typedef _SElement SElement; +typedef _SElementA SElementA; +typedef _SElementB SElementB; typedef _DElement DElement; -typedef _SElement TPSElem; +typedef _SElementA TPSrcAElem; +typedef _SElementB TPSrcBElem; typedef _DElement TPDElem; public: @@ -1142,7 +1147,7 @@ }}; def template SveWideningTerOpDeclare {{ -template +template class %(class_name)s : public %(base_class)s { private: @@ -1150,9 +1155,11 @@ protected: typedef _DElement Element; -typedef _SElement SElement; +typedef _SElementA SElementA; +typedef _SElementB SElementB; typedef _DElement DElement; -typedef _SElement TPSElem; +typedef _SElementA TPSrcAElem; +typedef _SElementB TPSrcBElem; typedef _DElement TPDElem; public: @@ -1269,6 +1276,26 @@ } }}; +def template SveWideningTerOpExecute {{ +template +Fault %(class_name)s::execute + (ExecContext *xc, +trace::InstRecord *traceData) const +{ +Fault fault = NoFault; +%(op_decl)s; +%(op_rd)s; + +%(code)s; +if (fault == NoFault) +{ +%(op_wb)s; +} + +return fault; +} +}}; + def template SveNonTemplatedOpExecute {{ Fault %(class_name)s::execute(ExecContext *xc, -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70732?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I83841654cee74b940f967b3a37b99d87c01bd92c Gerrit-Change-Number: 70732 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Support Arm SVE Load-Broadcast Octaword instructions.
''' +''' % dict(memAccessSize=memAccessSize) memAccCode = ''' -__uint128_t qword; -RegElemType* qp = reinterpret_cast(&qword); -for (int i = 0; i < 16/sizeof(RegElemType); ++i) { +// Copy active elements of the data from memory into a temporary +// quadword/octaword +__uint128_t qwords[%(numQwordSegments)d]; +eCount = %(memAccessSize)d/sizeof(RegElemType); +RegElemType* qp = reinterpret_cast(&qwords); +for (int i = 0; i < eCount; ++i) { if (GpOp_x[i]) { qp[i] = memDataView[i]; } else { qp[i] = 0; } } -eCount = ArmStaticInst::getCurSveVecLen<__uint128_t>( +// Repeat the temporary quadword/octaword segment into the +// vector register. Zero fill the remainder for non-full +// octawords. +unsigned numQwords = ArmStaticInst::getCurSveVecLen<__uint128_t>( xc->tcBase()); -for (int i = 0; i < eCount; ++i) { -AA64FpDest_uq[i] = qword; +unsigned numFullQwords = numQwords - + (numQwords %% %(numQwordSegments)d); +for (int i = 0; i < numQwords; ++i) { +if (i < numFullQwords) { +AA64FpDest_uq[i] = qwords[i %% %(numQwordSegments)d]; +} else { +AA64FpDest_uq[i] = 0; +} } -''' -iop = ArmInstObjParams('ld1rq', -'SveLd1RqSI' if offsetIsImm else 'SveLd1RqSS', -'SveContigMemSI' if offsetIsImm else 'SveContigMemSS', +''' % dict(memAccessSize=memAccessSize, + numQwordSegments=numQwordSegments) +iop = ArmInstObjParams( +inst_config.mnemonic, +inst_config.classname, +inst_config.baseclass, {'tpl_header': tplHeader, 'tpl_args': tplArgs, 'rden_code': loadRdEnableCode, @@ -1539,8 +1566,7 @@ SveContigLoadCompleteAcc.subst(iop)) for ttype in ('uint8_t', 'uint16_t', 'uint32_t', 'uint64_t'): substDict = {'tpl_args': '<%s, %s>' % (ttype, ttype), -'class_name': 'SveLd1RqSI' if offsetIsImm - else 'SveLd1RqSS'} + 'class_name': inst_config.classname} exec_output += SveContigMemExecDeclare.subst(substDict) # LD1[S]{B,H,W,D} (scalar plus immediate) @@ -1556,9 +1582,14 @@ emitSveLoadAndRepl() # LD1RQ{B,H,W,D} (scalar plus immediate) -emitSveLoadAndReplQuad(offsetIsImm = True) +emitSveLoadAndReplMulti(offsetIsImm=True, numQwordSegments=1) # LD1RQ{B,H,W,D} (scalar plus scalar) -emitSveLoadAndReplQuad(offsetIsImm = False) +emitSveLoadAndReplMulti(offsetIsImm=False, numQwordSegments=1) + + # LD1RO{B,H,W,D} (scalar plus immediate) +emitSveLoadAndReplMulti(offsetIsImm=True, numQwordSegments=2) +# LD1RO{B,H,W,D} (scalar plus scalar) +emitSveLoadAndReplMulti(offsetIsImm=False, numQwordSegments=2) # LD{2,3,4}{B,H,W,D} (scalar plus immediate) # ST{2,3,4}{B,H,W,D} (scalar plus immediate) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70727?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I98ee4f56c8099bf40c9034baa488d318ae57d3aa Gerrit-Change-Number: 70727 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Add support for Armv8.2-DotProd NEON extension.
); +default: + return new Unknown64(machInst); + } default: return new Unknown64(machInst); } diff --git a/src/arch/arm/isa/insts/neon64.isa b/src/arch/arm/isa/insts/neon64.isa index 0da7f06..53c0f11 100644 --- a/src/arch/arm/isa/insts/neon64.isa +++ b/src/arch/arm/isa/insts/neon64.isa @@ -1082,6 +1082,71 @@ complex=True) threeEqualRegInstX("fcmla", "FcmlaQX", "SimdFloatMultAccOp", floatTypes, 4, fcmla_vec, True, complex=True) + +def intDotInst(name, Name, opClass, + destIsSigned, src1IsSigned, src2IsSigned, + rCount, byElem): +destType = "int32_t" if destIsSigned else "uint32_t" +src1Type = "int8_t" if src1IsSigned else "uint8_t" +src2Type = "int8_t" if src2IsSigned else "uint8_t" +dotCode = ''' +using Src1Element = %(src1Type)s; +using Src2Element = %(src2Type)s; + +// Neon dot instructions always generate one output element +// from 4 pairs of source elements. +static_assert(sizeof(Element) == 4 * sizeof(Src1Element)); +static_assert(sizeof(Element) == 4 * sizeof(Src2Element)); + +// Extended source element types to avoid overflow of intermediate +// calculations. +using ExtendedSrc1Element = +typename vector_element_traits:: +extend_element::type; +using ExtendedSrc2Element = +typename vector_element_traits:: +extend_element::type; + +for (unsigned i = 0; i < eCount; ++i) { +Element src1ElemsPacked = letoh(srcReg1.elements[i]); +Element src2ElemsPacked = letoh(srcReg2.elements[%(src2Index)s]); + +Src1Element *src1Elems = +reinterpret_cast(&src1ElemsPacked); +Src2Element *src2Elems = +reinterpret_cast(&src2ElemsPacked); + +// Dot instructions accumulate into the dest reg +Element destElem = letoh(destReg.elements[i]); + +for (unsigned j = 0; j < 4; ++j) { +ExtendedSrc1Element src1Elem = +static_cast(src1Elems[j]); +ExtendedSrc2Element src2Elem = +static_cast(src2Elems[j]); +destElem += src1Elem * src2Elem; +} +destReg.elements[i] = htole(destElem); +} +''' % dict(src1Type=src1Type, src2Type=src2Type, + src2Index="imm" if byElem else "i") +threeEqualRegInstX(name, Name, opClass, (destType,), rCount, + dotCode, readDest=True, byElem=byElem, + complex=True) + +# SDOT (vector) +intDotInst('sdot', 'SdotDX', 'SimdAluOp', True, True, True, 2, False) +intDotInst('sdot', 'SdotQX', 'SimdAluOp', True, True, True, 4, False) +# SDOT (element) +intDotInst('sdot', 'SdotElemDX', 'SimdAluOp', True, True, True, 2, True) +intDotInst('sdot', 'SdotElemQX', 'SimdAluOp', True, True, True, 4, True) +# UDOT (vector) +intDotInst('udot', 'UdotDX', 'SimdAluOp', False, False, False, 2, False) +intDotInst('udot', 'UdotQX', 'SimdAluOp', False, False, False, 4, False) +# UDOT (element) +intDotInst('udot', 'UdotElemDX', 'SimdAluOp', False, False, False, 2, True) +intDotInst('udot', 'UdotElemQX', 'SimdAluOp', False, False, False, 4, True) + # CLS clsCode = ''' unsigned count = 0; diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 6b299aa..3a39137 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3988,6 +3988,7 @@ isar0_el1.sha1 = 0; isar0_el1.aes = 0; } + isar0_el1.dp = release->has(ArmExtension::FEAT_DOTPROD) ? 0x1 : 0x0; isar0_el1.atomic = release->has(ArmExtension::FEAT_LSE) ? 0x2 : 0x0; isar0_el1.rdm = release->has(ArmExtension::FEAT_RDM) ? 0x1 : 0x0; isar0_el1.tme = release->has(ArmExtension::TME) ? 0x1 : 0x0; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70736?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I4caa3b97a74c65f32421487c55c3e36427194e61 Gerrit-Change-Number: 70736 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [L] Change in gem5/gem5[develop]: arch-arm: Add support for Arm SVE fmmla instruction.
_op1, _op2) +{ +%(set_reg_idx_arr)s; +%(constructor)s; +} + +Fault execute(ExecContext *, trace::InstRecord *) const override; +}; +}}; + def template SveTerImmUnpredOpDeclare {{ template class %(class_name)s : public %(base_class)s @@ -1284,3 +1311,32 @@ Fault %(class_name)s<%(targs)s>::execute( ExecContext *, trace::InstRecord *) const; }}; + +def template SveMatMulOpExecute {{ +template +Fault %(class_name)s::execute( +ExecContext *xc, +trace::InstRecord *traceData) const +{ +Fault fault = NoFault; +%(op_decl)s; +%(op_rd)s; + +%(code)s; +if (fault == NoFault) +{ +%(op_wb)s; +} + +return fault; +} +}}; + +def template SveMatMulOpExecDeclare {{ +template +Fault +%(class_name)s<%(destEltType)s,%(srcEltAType)s,%(srcEltBType)s> +::execute(ExecContext *, trace::InstRecord *) const; +}}; diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index a151177..6cabfca 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -5402,6 +5402,11 @@ // SVE InitReg(MISCREG_ID_AA64ZFR0_EL1) +.reset([this](){ +AA64ZFR0 zfr0_el1 = 0; +zfr0_el1.f32mm = release->has(ArmExtension::FEAT_F32MM) ? 1 : 0; +return zfr0_el1; +}()) .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70726?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: If3547378ffa48527fe540767399bcc37a5dab524 Gerrit-Change-Number: 70726 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Rename AdvSIMD instruction pool
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70724?usp=email to review the following change. Change subject: arch-arm: Rename AdvSIMD instruction pool .. arch-arm: Rename AdvSIMD instruction pool The decoding function was wrongly named decodeNeon3SameExtra, referring to the "AdvSIMD three same Extra" instruction pool This might be an old name as I can only find the "AdvSIMD *scalar* three same Extra" in the Arm arm. The encoding space reserved to the pool bears the "Advanced SIMD three-register extension" name; we therefore rename the function to decodeNeon3RegExtension Change-Id: I056da8f0c7808935d12a4b05490d30654178071f Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/isa/formats/aarch64.isa M src/arch/arm/isa/formats/neon64.isa 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/arch/arm/isa/formats/aarch64.isa b/src/arch/arm/isa/formats/aarch64.isa index 9ad2de2..47d509e 100644 --- a/src/arch/arm/isa/formats/aarch64.isa +++ b/src/arch/arm/isa/formats/aarch64.isa @@ -2461,7 +2461,7 @@ return new Unknown64(machInst); } } else if (bits(machInst, 15) == 1) { -return decodeNeon3SameExtra(machInst); +return decodeNeon3RegExtension(machInst); } else if (bits(machInst, 10) == 1) { if (bits(machInst, 23, 22)) return new Unknown64(machInst); diff --git a/src/arch/arm/isa/formats/neon64.isa b/src/arch/arm/isa/formats/neon64.isa index 72b7e28..c200da7 100644 --- a/src/arch/arm/isa/formats/neon64.isa +++ b/src/arch/arm/isa/formats/neon64.isa @@ -39,9 +39,9 @@ // AdvSIMD three same template StaticInstPtr decodeNeon3Same(ExtMachInst machInst); -// AdvSIMD three same Extra +// AdvSIMD three register extension template -StaticInstPtr decodeNeon3SameExtra(ExtMachInst machInst); +StaticInstPtr decodeNeon3RegExtension(ExtMachInst machInst); // AdvSIMD three different inline StaticInstPtr decodeNeon3Diff(ExtMachInst machInst); // AdvSIMD two-reg misc @@ -507,7 +507,7 @@ template StaticInstPtr -decodeNeon3SameExtra(ExtMachInst machInst) +decodeNeon3RegExtension(ExtMachInst machInst) { uint8_t q = bits(machInst, 30); uint8_t size = bits(machInst, 23, 22); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70724?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I056da8f0c7808935d12a4b05490d30654178071f Gerrit-Change-Number: 70724 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement FEAT_FLAGM(2)
mOp64Constructor.subst(rmifIop) +exec_output += BasicExecute.subst(rmifIop) + +setfCode = ''' +const int msb = %d; +RegVal tmp = Op1; +CondCodesNZ = (bits(tmp, msb) << 1) | (bits(tmp, msb, 0) ? 0 : 1); +CondCodesV = bits(tmp, msb) ^ bits(tmp, msb + 1); +''' +setf8Iop = ArmInstObjParams("setf8", "Setf8", "RegOp64", +flagmCheckCode + setfCode % 7) +header_output += RegOp64Declare.subst(setf8Iop) +decoder_output += RegOp64Constructor.subst(setf8Iop) +exec_output += BasicExecute.subst(setf8Iop) + +setf16Iop = ArmInstObjParams("setf16", "Setf16", "RegOp64", + flagmCheckCode + setfCode % 15) +header_output += RegOp64Declare.subst(setf16Iop) +decoder_output += RegOp64Constructor.subst(setf16Iop) +exec_output += BasicExecute.subst(setf16Iop) }}; diff --git a/src/arch/arm/isa/templates/misc64.isa b/src/arch/arm/isa/templates/misc64.isa index af6b4c6..a2024f7 100644 --- a/src/arch/arm/isa/templates/misc64.isa +++ b/src/arch/arm/isa/templates/misc64.isa @@ -58,6 +58,56 @@ } }}; +def template RegOp64Declare {{ +class %(class_name)s : public %(base_class)s +{ + private: +%(reg_idx_arr_decl)s; + + public: +// Constructor +%(class_name)s(ExtMachInst machInst, RegIndex _op1); + +Fault execute(ExecContext *, trace::InstRecord *) const override; +}; +}}; + +def template RegOp64Constructor {{ +%(class_name)s::%(class_name)s(ExtMachInst machInst, RegIndex _op1) : +%(base_class)s("%(mnemonic)s", machInst, %(op_class)s, _op1) +{ +%(set_reg_idx_arr)s; +%(constructor)s; +} +}}; + +def template RegImmImmOp64Declare {{ +class %(class_name)s : public %(base_class)s +{ + private: +%(reg_idx_arr_decl)s; + + public: +// Constructor +%(class_name)s(ExtMachInst machInst, + RegIndex _op1, + uint64_t _imm1, uint64_t _imm2); +Fault execute(ExecContext *, trace::InstRecord *) const override; +}; +}}; + +def template RegImmImmOp64Constructor {{ +%(class_name)s::%(class_name)s(ExtMachInst machInst, + RegIndex _op1, + uint64_t _imm1, uint64_t _imm2) : +%(base_class)s("%(mnemonic)s", machInst, %(op_class)s, + _op1, _imm1, _imm2) +{ +%(set_reg_idx_arr)s; +%(constructor)s; +} +}}; + def template RegRegImmImmOp64Declare {{ class %(class_name)s : public %(base_class)s { diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index ec5670e..9e633c0 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3891,6 +3891,9 @@ isar0_el1.rdm = release->has(ArmExtension::FEAT_RDM) ? 0x1 : 0x0; isar0_el1.tme = release->has(ArmExtension::TME) ? 0x1 : 0x0; isar0_el1.tlb = release->has(ArmExtension::FEAT_TLBIOS) ? 0x1 : 0x0; + isar0_el1.ts = release->has(ArmExtension::FEAT_FLAGM2) ? + 0x2 : release->has(ArmExtension::FEAT_FLAGM) ? + 0x1 : 0x0; return isar0_el1; }()) .faultRead(EL1, HCR_TRAP(tid3)) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70719?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I21f1eb91ad9acb019a776a7d5edd38754571a62e Gerrit-Change-Number: 70719 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Improve debugging of CC regs accesses
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70718?usp=email to review the following change. Change subject: arch-arm: Improve debugging of CC regs accesses .. arch-arm: Improve debugging of CC regs accesses As of now we are simply printing the CC reg index which is not particularly helpful. With this patch we actually print the (NZ|C|V) reg name. Change-Id: Ib4b56a372b25e5bc2b6b762d2ef3ff2084097cce Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/regs/cc.hh 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/src/arch/arm/regs/cc.hh b/src/arch/arm/regs/cc.hh index ba75527..474e48e 100644 --- a/src/arch/arm/regs/cc.hh +++ b/src/arch/arm/regs/cc.hh @@ -61,10 +61,31 @@ NumRegs }; +const char * const RegName[NumRegs] = { +"nz", +"c", +"v", +"ge", +"fp", +"zero" +}; + } // namespace cc_reg -inline constexpr RegClass ccRegClass(CCRegClass, CCRegClassName, -cc_reg::NumRegs, debug::CCRegs); +class CCRegClassOps : public RegClassOps +{ + public: +std::string +regName(const RegId &id) const override +{ +return cc_reg::RegName[id.index()]; +} +}; + +static inline CCRegClassOps ccRegClassOps; + +inline constexpr RegClass ccRegClass = RegClass(CCRegClass, CCRegClassName, +cc_reg::NumRegs, debug::CCRegs).ops(ccRegClassOps); namespace cc_reg { @@ -77,15 +98,6 @@ Fp = ccRegClass[_FpIdx], Zero = ccRegClass[_ZeroIdx]; -const char * const RegName[NumRegs] = { -"nz", -"c", -"v", -"ge", -"fp", -"zero" -}; - } // namespace cc_reg enum ConditionCode -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70718?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ib4b56a372b25e5bc2b6b762d2ef3ff2084097cce Gerrit-Change-Number: 70718 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement trapping of SME registers
}()) +.fault(EL1, faultSmenEL1) +.fault(EL2, faultTsmSmen) +.fault(EL3, faultEsm) .allPrivileges().exceptUserMode(); InitReg(MISCREG_TPIDR2_EL0) .allPrivileges(); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70722?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ic5bcc79a535c928265fbc1db1cd0c85ba1a1b152 Gerrit-Change-Number: 70722 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [L] Change in gem5/gem5[develop]: arch-arm: Split decodeDataProcReg into subfunctions
, rn); - case 0x1: -return new Rev1664(machInst, rdzr, rn); - case 0x2: -if (bits(machInst, 31) == 0) -return new Rev64(machInst, rdzr, rn); -else -return new Rev3264(machInst, rdzr, rn); - case 0x3: -if (bits(machInst, 31) != 1) -return new Unknown64(machInst); -return new Rev64(machInst, rdzr, rn); - case 0x4: -return new Clz64(machInst, rdzr, rn); - case 0x5: -return new Cls64(machInst, rdzr, rn); - default: -return new Unknown64(machInst); -} +return decodeDataProcOneS(machInst); } default: GEM5_UNREACHABLE; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70717?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ifa03a93cb73de0b2dc93d7784f9011e0e55dfc1e Gerrit-Change-Number: 70717 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Define a AA64ZFR0 data type
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70725?usp=email to review the following change. Change subject: arch-arm: Define a AA64ZFR0 data type .. arch-arm: Define a AA64ZFR0 data type Change-Id: I6b0dcf0c1882f356783934f625c2bc3a25fbb885 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/regs/misc_types.hh 1 file changed, 13 insertions(+), 0 deletions(-) diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index 214d418..b7a1207 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -203,6 +203,19 @@ Bitfield<3, 0> el0; EndBitUnion(AA64PFR0) +BitUnion64(AA64ZFR0) +Bitfield<59, 56> f64mm; +Bitfield<55, 52> f32mm; +Bitfield<47, 44> i8mm; +Bitfield<43, 40> sm4; +Bitfield<35, 32> sha3; +Bitfield<27, 24> b16b16; +Bitfield<23, 20> bf16; +Bitfield<19, 16> bitPerm; +Bitfield<7, 4> aes; +Bitfield<3, 0> sveVer; +EndBitUnion(AA64ZFR0) + BitUnion64(AA64SMFR0) Bitfield<63> fa64; Bitfield<59, 56> smEver; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70725?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I6b0dcf0c1882f356783934f625c2bc3a25fbb885 Gerrit-Change-Number: 70725 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement FEAT_RNG
9 @@ "tpidr2_el0", "mpamsm_el1", +"rndr", +"rndrrs", + "num_phys_regs", // Dummy registers diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index 71fdd60..214d418 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -346,6 +346,7 @@ EndBitUnion(NSACR) BitUnion64(SCR) +Bitfield<40> trndr; Bitfield<21> fien; Bitfield<20> nmea; Bitfield<19> ease; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70721?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I9d60d249172ef4bbaf5d9b38ef279eff344b80d8 Gerrit-Change-Number: 70721 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement FEAT_IDST
s(0); InitReg(MISCREG_ID_AA64MMFR0_EL1) .reset([p,asidbits=haveLargeAsid64,parange=physAddrRange](){ AA64MMFR0 mmfr0_el1 = p.id_aa64mmfr0_el1; @@ -3994,8 +4019,9 @@ mmfr0_el1.parange = encodePhysAddrRange64(parange); return mmfr0_el1; }()) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_ID_AA64MMFR1_EL1) .reset([p,release=release](){ AA64MMFR1 mmfr1_el1 = p.id_aa64mmfr1_el1; @@ -4005,17 +4031,20 @@ mmfr1_el1.pan = release->has(ArmExtension::FEAT_PAN) ? 0x1 : 0x0; return mmfr1_el1; }()) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_ID_AA64MMFR2_EL1) .reset([p,release=release](){ AA64MMFR2 mmfr2_el1 = p.id_aa64mmfr2_el1; mmfr2_el1.uao = release->has(ArmExtension::FEAT_UAO) ? 0x1 : 0x0; mmfr2_el1.varange = release->has(ArmExtension::FEAT_LVA) ? 0x1 : 0x0; + mmfr2_el1.ids = release->has(ArmExtension::FEAT_IDST) ? 0x1 : 0x0; return mmfr2_el1; }()) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_APDAKeyHi_EL1) .fault(EL1, faultPauthEL1) @@ -4059,14 +4088,17 @@ .allPrivileges().exceptUserMode(); InitReg(MISCREG_CCSIDR_EL1) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid2)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_CLIDR_EL1) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid2)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_AIDR_EL1) + .faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid1)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().writes(0); InitReg(MISCREG_CSSELR_EL1) .allPrivileges().exceptUserMode() .fault(EL1, HCR_TRAP(tid2)) @@ -5370,6 +5402,7 @@ // SVE InitReg(MISCREG_ID_AA64ZFR0_EL1) +.faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ZCR_EL3) @@ -5409,8 +5442,9 @@ smfr0_el1.fa64 = 0x1; return smfr0_el1; }()) +.faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid3)) -.allPrivileges().exceptUserMode().writes(0); +.allPrivileges().writes(0); InitReg(MISCREG_SVCR) .res0([](){ SVCR svcr_mask = 0; @@ -5431,8 +5465,9 @@ smidr_el1.implementer = 0x41; return smidr_el1; }()) +.faultRead(EL0, faultIdst) .faultRead(EL1, HCR_TRAP(tid1)) -.allPrivileges().exceptUserMode().writes(0); +.allPrivileges().writes(0); InitReg(MISCREG_SMPRI_EL1) .res0(mask(63, 4)) .fault(EL1, faultEsm) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70723?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I3cabcfdb10f4eefaf2ab039376d840cc4c54609a Gerrit-Change-Number: 70723 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Extend SCR to be 64-bit wide
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70720?usp=email to review the following change. Change subject: arch-arm: Extend SCR to be 64-bit wide .. arch-arm: Extend SCR to be 64-bit wide Change-Id: I9928de3db61957404269d189a15a951fd6707c8a Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/regs/misc_types.hh 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index c139f1a..71fdd60 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -345,7 +345,7 @@ Bitfield<0> cp0; EndBitUnion(NSACR) -BitUnion32(SCR) +BitUnion64(SCR) Bitfield<21> fien; Bitfield<20> nmea; Bitfield<19> ease; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70720?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I9928de3db61957404269d189a15a951fd6707c8a Gerrit-Change-Number: 70720 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Fix printing of VecElemClass registers
Giacomo Travaglini has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/70697?usp=email ) Change subject: arch-arm: Fix printing of VecElemClass registers .. arch-arm: Fix printing of VecElemClass registers At the moment it is not possible to trace the value of VecElemClass registers. If a AArch32 SIMD binary is run with tracing on, simulation will fail the following assertion [1]. std::string valString(const void *val, size_t size) const override { assert(size == sizeof(ValueType)); The problem is that Arm VecElems are stored in RegVal (uint64_t), but the VecElem data type (ValueType above) per se is a uint32_t. So valString is getting called with size = 8 (coming from RegVal) but ValueType has size = 4. We fix this problem by using RegVal as a VecElemRegClassOps template parameter to make them match. This is not changing anything from a functionality perspective. The result will be that we will be able to print VecElems as 64bit values. This solution is the most simple one but a bit dirty. I believe in the long term we should make the VecElemClass use the void* interface rather than the RegVal one. In this way we will be able to correctly print the VecElem size as 32bit value. [1]: https://github.com/gem5/gem5/blob/v22.1.0.0/src/cpu/reg_class.hh#L362 Change-Id: Ic3fc252d41449f828b77f938fefc0cd4274b1c57 Signed-off-by: Giacomo Travaglini --- M src/arch/arm/regs/vec.hh 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arch/arm/regs/vec.hh b/src/arch/arm/regs/vec.hh index 00ab87f..19f37c9 100644 --- a/src/arch/arm/regs/vec.hh +++ b/src/arch/arm/regs/vec.hh @@ -93,7 +93,7 @@ const int PREDREG_FFR = 16; const int PREDREG_UREG0 = 17; -static inline VecElemRegClassOps +static inline VecElemRegClassOps vecRegElemClassOps(NumVecElemPerVecReg); static inline TypedRegClassOps vecRegClassOps; static inline TypedRegClassOps vecPredRegClassOps; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70697?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ic3fc252d41449f828b77f938fefc0cd4274b1c57 Gerrit-Change-Number: 70697 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement FEAT_TLBIOS
S_Xt, MISCREG_TLBI_ASIDE1IS_Xt, +MISCREG_TLBI_ASIDE1OS_Xt, MISCREG_TLBI_VAAE1IS_Xt, +MISCREG_TLBI_VAAE1OS_Xt, MISCREG_TLBI_VALE1IS_Xt, +MISCREG_TLBI_VALE1OS_Xt, MISCREG_TLBI_VAALE1IS_Xt, +MISCREG_TLBI_VAALE1OS_Xt, MISCREG_TLBI_VMALLE1, MISCREG_TLBI_VAE1_Xt, MISCREG_TLBI_ASIDE1_Xt, @@ -693,12 +699,19 @@ MISCREG_TLBI_VALE1_Xt, MISCREG_TLBI_VAALE1_Xt, MISCREG_TLBI_IPAS2E1IS_Xt, +MISCREG_TLBI_IPAS2E1OS_Xt, MISCREG_TLBI_IPAS2LE1IS_Xt, +MISCREG_TLBI_IPAS2LE1OS_Xt, MISCREG_TLBI_ALLE2IS, +MISCREG_TLBI_ALLE2OS, MISCREG_TLBI_VAE2IS_Xt, +MISCREG_TLBI_VAE2OS_Xt, MISCREG_TLBI_ALLE1IS, +MISCREG_TLBI_ALLE1OS, MISCREG_TLBI_VALE2IS_Xt, +MISCREG_TLBI_VALE2OS_Xt, MISCREG_TLBI_VMALLS12E1IS, +MISCREG_TLBI_VMALLS12E1OS, MISCREG_TLBI_IPAS2E1_Xt, MISCREG_TLBI_IPAS2LE1_Xt, MISCREG_TLBI_ALLE2, @@ -707,8 +720,11 @@ MISCREG_TLBI_VALE2_Xt, MISCREG_TLBI_VMALLS12E1, MISCREG_TLBI_ALLE3IS, +MISCREG_TLBI_ALLE3OS, MISCREG_TLBI_VAE3IS_Xt, +MISCREG_TLBI_VAE3OS_Xt, MISCREG_TLBI_VALE3IS_Xt, +MISCREG_TLBI_VALE3OS_Xt, MISCREG_TLBI_ALLE3, MISCREG_TLBI_VAE3_Xt, MISCREG_TLBI_VALE3_Xt, @@ -2344,11 +2360,17 @@ "at_s1e3r_xt", "at_s1e3w_xt", "tlbi_vmalle1is", +"tlbi_vmalle1os", "tlbi_vae1is_xt", +"tlbi_vae1os_xt", "tlbi_aside1is_xt", +"tlbi_aside1os_xt", "tlbi_vaae1is_xt", +"tlbi_vaae1os_xt", "tlbi_vale1is_xt", +"tlbi_vale1os_xt", "tlbi_vaale1is_xt", +"tlbi_vaale1os_xt", "tlbi_vmalle1", "tlbi_vae1_xt", "tlbi_aside1_xt", @@ -2356,12 +2378,19 @@ "tlbi_vale1_xt", "tlbi_vaale1_xt", "tlbi_ipas2e1is_xt", +"tlbi_ipas2e1os_xt", "tlbi_ipas2le1is_xt", +"tlbi_ipas2le1os_xt", "tlbi_alle2is", +"tlbi_alle2os", "tlbi_vae2is_xt", +"tlbi_vae2os_xt", "tlbi_alle1is", +"tlbi_alle1os", "tlbi_vale2is_xt", +"tlbi_vale2os_xt", "tlbi_vmalls12e1is", +"tlbi_vmalls12e1os", "tlbi_ipas2e1_xt", "tlbi_ipas2le1_xt", "tlbi_alle2", @@ -2370,8 +2399,11 @@ "tlbi_vale2_xt", "tlbi_vmalls12e1", "tlbi_alle3is", +"tlbi_alle3os", "tlbi_vae3is_xt", + "tlbi_vae3os_xt", "tlbi_vale3is_xt", +"tlbi_vale3os_xt", "tlbi_alle3", "tlbi_vae3_xt", "tlbi_vale3_xt", -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70567?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I2198e6155f1eea7c5f8083c6ffb178d3a3d163d3 Gerrit-Change-Number: 70567 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Add UNSERIALIZE flag to address cpt compatibility
public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Icea6563ee5816b14a097926b5734f2fce10530c7 Gerrit-Change-Number: 70557 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement RES0/RES1 with miscreg specifiers
case MISCREG_SCR: getMMUPtr(tc)->invalidateMiscReg(); break; @@ -1327,21 +1280,6 @@ idx = MISCREG_CPSR; } break; - case MISCREG_SVCR: -{ -SVCR svcr = miscRegs[MISCREG_SVCR]; -SVCR newSvcr = newVal; - -// Don't allow other bits to be set -svcr.sm = newSvcr.sm; -svcr.za = newSvcr.za; -newVal = svcr; -} -break; - case MISCREG_SMPRI_EL1: -// Only the bottom 4 bits are settable -newVal = newVal & 0xF; -break; case MISCREG_AT_S1E1R_Xt: addressTranslation64(MMU::S1E1Tran, BaseMMU::Read, 0, val); return; diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 6f918b2..9203810 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2662,6 +2662,7 @@ .reset(midr) .hyp().monNonSecure(); InitReg(MISCREG_VMPIDR) + .res1(mask(31, 31)) .hyp().monNonSecure(); InitReg(MISCREG_SCTLR) .banked() @@ -2739,13 +2740,17 @@ .hyp().monNonSecure(); InitReg(MISCREG_HCR) .hyp().monNonSecure() - .res0(0x9000); + .res0(release->has(ArmExtension::VIRTUALIZATION) ? + 0x9000 : mask(31, 0)); InitReg(MISCREG_HCR2) .hyp().monNonSecure() - .res0(0xffa9ff8c); + .res0(release->has(ArmExtension::VIRTUALIZATION) ? + 0xffa9ff8c : mask(31, 0)); InitReg(MISCREG_HDCR) .hyp().monNonSecure(); InitReg(MISCREG_HCPTR) + .res0(mask(29, 21) | mask(19, 16) | mask(14, 14)) + .res1(mask(13, 12) | mask(9, 0)) .hyp().monNonSecure(); InitReg(MISCREG_HSTR) .hyp().monNonSecure(); @@ -2794,7 +2799,8 @@ .bankedChild() .secure().exceptUserMode(); InitReg(MISCREG_DFSR) - .banked(); + .banked() + .res0(mask(31, 14) | mask(8, 8)); InitReg(MISCREG_DFSR_NS) .bankedChild() .privSecure(!aarch32EL3) @@ -2803,7 +2809,8 @@ .bankedChild() .secure().exceptUserMode(); InitReg(MISCREG_IFSR) - .banked(); + .banked() + .res0(mask(31, 13) | mask(11, 11) | mask(8, 6)); InitReg(MISCREG_IFSR_NS) .bankedChild() .privSecure(!aarch32EL3) @@ -3118,6 +3125,7 @@ .bankedChild() .secure().exceptUserMode(); InitReg(MISCREG_AMAIR0) + .res0(release->has(ArmExtension::LPAE) ? 0 : mask(31, 0)) .banked(); InitReg(MISCREG_AMAIR0_NS) .bankedChild() @@ -3127,6 +3135,7 @@ .bankedChild() .secure().exceptUserMode(); InitReg(MISCREG_AMAIR1) + .res0(release->has(ArmExtension::LPAE) ? 0 : mask(31, 0)) .banked(); InitReg(MISCREG_AMAIR1_NS) .bankedChild() @@ -3976,6 +3985,8 @@ .mapsTo(MISCREG_VPIDR); InitReg(MISCREG_VMPIDR_EL2) .hyp().mon() + .res0(mask(63, 40) | mask(29, 25)) + .res1(mask(31, 31)) .mapsTo(MISCREG_VMPIDR); InitReg(MISCREG_SCTLR_EL1) .allPrivileges().exceptUserMode() @@ -5263,6 +5274,12 @@ }()) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_SVCR) +.res0([](){ +SVCR svcr_mask = 0; +svcr_mask.sm = 1; +svcr_mask.za = 1; +return ~svcr_mask; +}()) .allPrivileges(); InitReg(MISCREG_SMIDR_EL1) .reset([](){ @@ -5274,6 +5291,7 @@ }()) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_SMPRI_EL1) +.res0(mask(63, 4)) .allPrivileges().exceptUserMode().reads(1); InitReg(MISCREG_SMPRIMAP_EL2) .hyp().mon(); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70563?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ic2caea121e02f63f069f1576760c849bcbdac894 Gerrit-Change-Number: 70563 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Update MISCREG_DBGDIDR to point to Armv8 debug arch
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70561?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-arm: Update MISCREG_DBGDIDR to point to Armv8 debug arch .. arch-arm: Update MISCREG_DBGDIDR to point to Armv8 debug arch Change-Id: I20691ecdaedde6740c706782635b1f9a4491dc51 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70561 Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/arch/arm/regs/misc.cc 1 file changed, 1 insertion(+), 4 deletions(-) Approvals: Richard Cooper: Looks good to me, approved kokoro: Regressions pass Jason Lowe-Power: Looks good to me, approved diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 6c5a9dd..6f918b2 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2273,10 +2273,7 @@ // AArch32 CP14 registers InitReg(MISCREG_DBGDIDR) - /* For now just implement the version number. - * ARMv7, v7.1 Debug architecture (0b0101 --> 0x5) - */ - .reset(0x5 << 16) + .reset(0x6 << 16) // Armv8 Debug architecture .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); InitReg(MISCREG_DBGDSCRint) .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70561?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I20691ecdaedde6740c706782635b1f9a4491dc51 Gerrit-Change-Number: 70561 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Implement RAZ/WI with raz specifier
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70560?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-arm: Implement RAZ/WI with raz specifier .. arch-arm: Implement RAZ/WI with raz specifier Change-Id: I195f042fbeb10c0ca1f9095a0d26e6c213496ee5 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70560 Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/arch/arm/isa.cc M src/arch/arm/regs/misc.cc 2 files changed, 5 insertions(+), 6 deletions(-) Approvals: Richard Cooper: Looks good to me, approved kokoro: Regressions pass Jason Lowe-Power: Looks good to me, approved diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index 14349b1..7df8978 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -470,12 +470,6 @@ return readMiscRegNoEffect(idx); } break; - case MISCREG_JOSCR: // Jazelle trivial implementation, RAZ/WI - case MISCREG_JMCR: // Jazelle trivial implementation, RAZ/WI - case MISCREG_JIDR: // Jazelle trivial implementation, RAZ/WI - case MISCREG_AIDR: // AUX ID set to 0 - case MISCREG_TCMTR: // No TCM's -return 0; case MISCREG_CLIDR: warn_once("The clidr register always reports 0 caches.\n"); diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 960c2be..6c5a9dd 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2505,12 +2505,15 @@ .unimplemented() .allPrivileges(); InitReg(MISCREG_JIDR) + .raz() // Jazelle trivial implementation, RAZ/WI .allPrivileges(); InitReg(MISCREG_TEEHBR) .allPrivileges(); InitReg(MISCREG_JOSCR) + .raz() // Jazelle trivial implementation, RAZ/WI .allPrivileges(); InitReg(MISCREG_JMCR) + .raz() // Jazelle trivial implementation, RAZ/WI .allPrivileges(); // AArch32 CP15 registers @@ -2548,6 +2551,7 @@ .unserialize(0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_TCMTR) + .raz() // No TCM's .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_TLBTR) .reset(1) // Separate Instruction and Data TLBs @@ -2646,6 +2650,7 @@ InitReg(MISCREG_CLIDR) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_AIDR) + .raz() // AUX ID set to 0 .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_CSSELR) .banked(); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70560?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I195f042fbeb10c0ca1f9095a0d26e6c213496ee5 Gerrit-Change-Number: 70560 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Provide default mask for raz/rao helpers
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70559?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-arm: Provide default mask for raz/rao helpers .. arch-arm: Provide default mask for raz/rao helpers Rather than forcing raz registers to write something like: .raz(uint64_t(-1)) we provide a shorter version where if no bitmask is specified we assume the entire register is raz/rao. This won't be probably used by rao but I am striving for symmetry and providing a default won't probably hurt Change-Id: I309e345fc8336df3a74474f8f9202bf7e2095b41 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70559 Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/arch/arm/regs/misc.hh 1 file changed, 2 insertions(+), 2 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved kokoro: Regressions pass Richard Cooper: Looks good to me, approved diff --git a/src/arch/arm/regs/misc.hh b/src/arch/arm/regs/misc.hh index 3a32623..abbd1c6 100644 --- a/src/arch/arm/regs/misc.hh +++ b/src/arch/arm/regs/misc.hh @@ -1249,13 +1249,13 @@ return *this; } chain -raz(uint64_t mask) const +raz(uint64_t mask = (uint64_t)-1) const { entry._raz = mask; return *this; } chain -rao(uint64_t mask) const +rao(uint64_t mask = (uint64_t)-1) const { entry._rao = mask; return *this; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70559?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I309e345fc8336df3a74474f8f9202bf7e2095b41 Gerrit-Change-Number: 70559 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Simplify FPSCR writes
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70565?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-arm: Simplify FPSCR writes .. arch-arm: Simplify FPSCR writes The old logic was setting up a mask which was covering pretty much the entire register, except for the FPSCR[14:13] and FPSCR[6:5] register fields. Those RES0 fields were treated as WI. We simplify this by explicitly marking them as RES0 at construction time Change-Id: I59942bd98c074349307d27e3a99351ee25f4db95 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70565 Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/arch/arm/isa.cc M src/arch/arm/regs/misc.cc 2 files changed, 2 insertions(+), 32 deletions(-) Approvals: Richard Cooper: Looks good to me, approved Jason Lowe-Power: Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index 83df61f..9c8e282 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -815,38 +815,7 @@ return; case MISCREG_FPSCR: -{ -const uint32_t ones = (uint32_t)(-1); -FPSCR fpscrMask = 0; -fpscrMask.ioc = ones; -fpscrMask.dzc = ones; -fpscrMask.ofc = ones; -fpscrMask.ufc = ones; -fpscrMask.ixc = ones; -fpscrMask.idc = ones; -fpscrMask.ioe = ones; -fpscrMask.dze = ones; -fpscrMask.ofe = ones; -fpscrMask.ufe = ones; -fpscrMask.ixe = ones; -fpscrMask.ide = ones; -fpscrMask.len = ones; -fpscrMask.fz16 = ones; -fpscrMask.stride = ones; -fpscrMask.rMode = ones; -fpscrMask.fz = ones; -fpscrMask.dn = ones; -fpscrMask.ahp = ones; -fpscrMask.qc = ones; -fpscrMask.v = ones; -fpscrMask.c = ones; -fpscrMask.z = ones; -fpscrMask.n = ones; -newVal = (newVal & (uint32_t)fpscrMask) | - (readMiscRegNoEffect(MISCREG_FPSCR) & - ~(uint32_t)fpscrMask); -tc->getDecoderPtr()->as().setContext(newVal); -} +tc->getDecoderPtr()->as().setContext(newVal); break; case MISCREG_FPSR: { diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 9203810..2d76143 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2199,6 +2199,7 @@ .reset(p.fpsid) .allPrivileges(); InitReg(MISCREG_FPSCR) + .res0(mask(14, 13) | mask(6, 5)) .allPrivileges(); InitReg(MISCREG_MVFR1) .reset([] () { -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70565?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I59942bd98c074349307d27e3a99351ee25f4db95 Gerrit-Change-Number: 70565 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Extend SCTLR to be 64-bit wide
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70566?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-arm: Extend SCTLR to be 64-bit wide .. arch-arm: Extend SCTLR to be 64-bit wide In AArch64 SCTLR_EL1/_EL2/_EL3 is 64-bit wide Change-Id: I80931f9dd1a57f3132229b84d32a8ab08eee3371 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70566 Tested-by: kokoro Maintainer: Jason Lowe-Power --- M src/arch/arm/regs/misc_types.hh 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: kokoro: Regressions pass Richard Cooper: Looks good to me, approved Jason Lowe-Power: Looks good to me, approved diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index e6f7e40..c139f1a 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -371,7 +371,7 @@ Bitfield<0> ns; EndBitUnion(SCR) -BitUnion32(SCTLR) +BitUnion64(SCTLR) Bitfield<31> enia;// ARMv8.3 PAuth Bitfield<30> enib;// ARMv8.3 PAuth Bitfield<30> te; // Thumb Exception Enable (AArch32 only) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70566?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I80931f9dd1a57f3132229b84d32a8ab08eee3371 Gerrit-Change-Number: 70566 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Move RO values from ISA::read to the reset field
EG_CNTFRQ_EL0 ... MISCREG_CNTVOFF_EL2: diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 7a06da1..960c2be 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2273,6 +2273,10 @@ // AArch32 CP14 registers InitReg(MISCREG_DBGDIDR) + /* For now just implement the version number. + * ARMv7, v7.1 Debug architecture (0b0101 --> 0x5) + */ + .reset(0x5 << 16) .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); InitReg(MISCREG_DBGDSCRint) .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); @@ -2514,6 +2518,34 @@ .reset(midr) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_CTR) + .reset([system=p.system](){ + //all caches have the same line size in gem5 + //4 byte words in ARM + unsigned line_size_words = + system->cacheLineSize() / 4; + unsigned log2_line_size_words = 0; + + while (line_size_words >>= 1) { + ++log2_line_size_words; + } + + CTR ctr = 0; + //log2 of minimun i-cache line size (words) + ctr.iCacheLineSize = log2_line_size_words; + //b11 - gem5 uses pipt + ctr.l1IndexPolicy = 0x3; + //log2 of minimum d-cache line size (words) + ctr.dCacheLineSize = log2_line_size_words; + //log2 of max reservation size (words) + ctr.erg = log2_line_size_words; + //log2 of max writeback size (words) + ctr.cwg = log2_line_size_words; + //b100 - gem5 format is ARMv7 + ctr.format = 0x4; + + return ctr; + }()) + .unserialize(0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_TCMTR) .allPrivileges().exceptUserMode().writes(0); @@ -2528,8 +2560,20 @@ .warnNotFail() .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_PFR0) + .reset(0x0031) // !ThumbEE | !Jazelle | Thumb | ARM .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_PFR1) + .reset([release=release,system=system](){ + // Timer | Virti | !M Profile | TrustZone | ARMv4 + bool have_timer = (system && system->getGenericTimer() != nullptr); + return 0x0001 | + (release->has(ArmExtension::SECURITY) ? + 0x0010 : 0x0) | + (release->has(ArmExtension::VIRTUALIZATION) ? + 0x1000 : 0x0) | + (have_timer ? 0x0001 : 0x0); + }()) + .unserialize(0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_DFR0) .reset(p.pmu ? 0x0300 : 0) @@ -3772,9 +3816,13 @@ pfr0_el1.gic = FullSystem && getGICv3CPUInterface(tc) ? 0x1 : 0; return pfr0_el1; }()) + .unserialize(0) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_AA64PFR1_EL1) + .reset(release->has(ArmExtension::FEAT_SME) ? + 0x1 << 24 : 0) + .unserialize(0) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_AA64DFR0_EL1) @@ -3919,6 +3967,7 @@ .reads(1) .mapsTo(MISCREG_CTR); InitReg(MISCREG_DCZID_EL0) + .reset(0x04) // DC ZVA clear 64-byte chunks .reads(1); InitReg(MISCREG_VPIDR_EL2) .hyp().mon() -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70558?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I62270cdb59f39b8a143e9554c8beaa8cd15824aa Gerrit-Change-Number: 70558 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Group self hosted debug writes in ISA switch
EL1, val); break; - case MISCREG_DBGBCR1_EL1: -selfDebug->updateDBGBCR(1, val); -break; - case MISCREG_DBGBCR2_EL1: -selfDebug->updateDBGBCR(2, val); -break; - case MISCREG_DBGBCR3_EL1: -selfDebug->updateDBGBCR(3, val); -break; - case MISCREG_DBGBCR4_EL1: -selfDebug->updateDBGBCR(4, val); -break; - case MISCREG_DBGBCR5_EL1: -selfDebug->updateDBGBCR(5, val); -break; - case MISCREG_DBGBCR6_EL1: -selfDebug->updateDBGBCR(6, val); -break; - case MISCREG_DBGBCR7_EL1: -selfDebug->updateDBGBCR(7, val); -break; - case MISCREG_DBGBCR8_EL1: -selfDebug->updateDBGBCR(8, val); -break; - case MISCREG_DBGBCR9_EL1: -selfDebug->updateDBGBCR(9, val); -break; - case MISCREG_DBGBCR10_EL1: -selfDebug->updateDBGBCR(10, val); -break; - case MISCREG_DBGBCR11_EL1: -selfDebug->updateDBGBCR(11, val); -break; - case MISCREG_DBGBCR12_EL1: -selfDebug->updateDBGBCR(12, val); -break; - case MISCREG_DBGBCR13_EL1: -selfDebug->updateDBGBCR(13, val); -break; - case MISCREG_DBGBCR14_EL1: -selfDebug->updateDBGBCR(14, val); -break; - case MISCREG_DBGBCR15_EL1: -selfDebug->updateDBGBCR(15, val); -break; - case MISCREG_DBGWCR0_EL1: -selfDebug->updateDBGWCR(0, val); -break; - case MISCREG_DBGWCR1_EL1: -selfDebug->updateDBGWCR(1, val); -break; - case MISCREG_DBGWCR2_EL1: -selfDebug->updateDBGWCR(2, val); -break; - case MISCREG_DBGWCR3_EL1: -selfDebug->updateDBGWCR(3, val); -break; - case MISCREG_DBGWCR4_EL1: -selfDebug->updateDBGWCR(4, val); -break; - case MISCREG_DBGWCR5_EL1: -selfDebug->updateDBGWCR(5, val); -break; - case MISCREG_DBGWCR6_EL1: -selfDebug->updateDBGWCR(6, val); -break; - case MISCREG_DBGWCR7_EL1: -selfDebug->updateDBGWCR(7, val); -break; - case MISCREG_DBGWCR8_EL1: -selfDebug->updateDBGWCR(8, val); -break; - case MISCREG_DBGWCR9_EL1: -selfDebug->updateDBGWCR(9, val); -break; - case MISCREG_DBGWCR10_EL1: -selfDebug->updateDBGWCR(10, val); -break; - case MISCREG_DBGWCR11_EL1: -selfDebug->updateDBGWCR(11, val); -break; - case MISCREG_DBGWCR12_EL1: -selfDebug->updateDBGWCR(12, val); -break; - case MISCREG_DBGWCR13_EL1: -selfDebug->updateDBGWCR(13, val); -break; - case MISCREG_DBGWCR14_EL1: -selfDebug->updateDBGWCR(14, val); -break; - case MISCREG_DBGWCR15_EL1: -selfDebug->updateDBGWCR(15, val); + case MISCREG_DBGWCR0_EL1 ... MISCREG_DBGWCR15_EL1: +selfDebug->updateDBGWCR(idx - MISCREG_DBGWCR0_EL1, val); break; case MISCREG_IFSR: { -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70562?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: If9c0675743856b603e7b5ec1898f5cdd650f3ce6 Gerrit-Change-Number: 70562 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Remove unnecessary case in ISA::readMiscReg
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70564?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-arm: Remove unnecessary case in ISA::readMiscReg .. arch-arm: Remove unnecessary case in ISA::readMiscReg Change-Id: I8b95a75fbfec2626fbe8b455ae9b3f30acda538f Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70564 Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/arch/arm/isa.cc 1 file changed, 0 insertions(+), 2 deletions(-) Approvals: kokoro: Regressions pass Jason Lowe-Power: Looks good to me, approved Richard Cooper: Looks good to me, approved diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index ab6e3f7..83df61f 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -567,8 +567,6 @@ l2ctlr.numCPUs = tc->getSystemPtr()->threads.size() - 1; return l2ctlr; } - case MISCREG_DBGDSCRint: -return readMiscRegNoEffect(MISCREG_DBGDSCRint); case MISCREG_ISR: case MISCREG_ISR_EL1: { -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70564?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I8b95a75fbfec2626fbe8b455ae9b3f30acda538f Gerrit-Change-Number: 70564 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Fix position of AA64ISAR0.AES bitfield
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70637?usp=email ) Change subject: arch-arm: Fix position of AA64ISAR0.AES bitfield .. arch-arm: Fix position of AA64ISAR0.AES bitfield The bitfield was wrongly [1] placed in the LSBs of the register [1]: https://developer.arm.com/documentation/ddi0601/2022-03/\ AArch64-Registers/\ ID-AA64ISAR0-EL1--AArch64-Instruction-Set-Attribute-Register-0 Change-Id: I577a79e16931a0e1334a9b24459553e2899341f0 Signed-off-by: Giacomo Travaglini Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70637 Reviewed-by: Richard Cooper Tested-by: kokoro --- M src/arch/arm/regs/misc_types.hh 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: Giacomo Travaglini: Looks good to me, approved Richard Cooper: Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index e446ce5..e6f7e40 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -123,7 +123,7 @@ Bitfield<19, 16> crc32; Bitfield<15, 12> sha2; Bitfield<11, 8> sha1; -Bitfield<3, 0> aes; +Bitfield<7, 4> aes; EndBitUnion(AA64ISAR0) BitUnion64(AA64ISAR1) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70637?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I577a79e16931a0e1334a9b24459553e2899341f0 Gerrit-Change-Number: 70637 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Fix position of AA64ISAR0.AES bitfield
Giacomo Travaglini has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/70637?usp=email ) Change subject: arch-arm: Fix position of AA64ISAR0.AES bitfield .. arch-arm: Fix position of AA64ISAR0.AES bitfield The bitfield was wrongly [1] placed in the LSBs of the register [1]: https://developer.arm.com/documentation/ddi0601/2022-03/\ AArch64-Registers/\ ID-AA64ISAR0-EL1--AArch64-Instruction-Set-Attribute-Register-0 Change-Id: I577a79e16931a0e1334a9b24459553e2899341f0 Signed-off-by: Giacomo Travaglini --- M src/arch/arm/regs/misc_types.hh 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index e446ce5..e6f7e40 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -123,7 +123,7 @@ Bitfield<19, 16> crc32; Bitfield<15, 12> sha2; Bitfield<11, 8> sha1; -Bitfield<3, 0> aes; +Bitfield<7, 4> aes; EndBitUnion(AA64ISAR0) BitUnion64(AA64ISAR1) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70637?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I577a79e16931a0e1334a9b24459553e2899341f0 Gerrit-Change-Number: 70637 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement FEAT_TLBIOS
MISCREG_TLBI_VMALLE1, MISCREG_TLBI_VAE1_Xt, MISCREG_TLBI_ASIDE1_Xt, @@ -693,12 +699,19 @@ MISCREG_TLBI_VALE1_Xt, MISCREG_TLBI_VAALE1_Xt, MISCREG_TLBI_IPAS2E1IS_Xt, +MISCREG_TLBI_IPAS2E1OS_Xt, MISCREG_TLBI_IPAS2LE1IS_Xt, +MISCREG_TLBI_IPAS2LE1OS_Xt, MISCREG_TLBI_ALLE2IS, +MISCREG_TLBI_ALLE2OS, MISCREG_TLBI_VAE2IS_Xt, +MISCREG_TLBI_VAE2OS_Xt, MISCREG_TLBI_ALLE1IS, +MISCREG_TLBI_ALLE1OS, MISCREG_TLBI_VALE2IS_Xt, +MISCREG_TLBI_VALE2OS_Xt, MISCREG_TLBI_VMALLS12E1IS, +MISCREG_TLBI_VMALLS12E1OS, MISCREG_TLBI_IPAS2E1_Xt, MISCREG_TLBI_IPAS2LE1_Xt, MISCREG_TLBI_ALLE2, @@ -707,8 +720,11 @@ MISCREG_TLBI_VALE2_Xt, MISCREG_TLBI_VMALLS12E1, MISCREG_TLBI_ALLE3IS, +MISCREG_TLBI_ALLE3OS, MISCREG_TLBI_VAE3IS_Xt, +MISCREG_TLBI_VAE3OS_Xt, MISCREG_TLBI_VALE3IS_Xt, +MISCREG_TLBI_VALE3OS_Xt, MISCREG_TLBI_ALLE3, MISCREG_TLBI_VAE3_Xt, MISCREG_TLBI_VALE3_Xt, @@ -2344,11 +2360,17 @@ "at_s1e3r_xt", "at_s1e3w_xt", "tlbi_vmalle1is", +"tlbi_vmalle1os", "tlbi_vae1is_xt", +"tlbi_vae1os_xt", "tlbi_aside1is_xt", +"tlbi_aside1os_xt", "tlbi_vaae1is_xt", +"tlbi_vaae1os_xt", "tlbi_vale1is_xt", +"tlbi_vale1os_xt", "tlbi_vaale1is_xt", +"tlbi_vaale1os_xt", "tlbi_vmalle1", "tlbi_vae1_xt", "tlbi_aside1_xt", @@ -2356,12 +2378,19 @@ "tlbi_vale1_xt", "tlbi_vaale1_xt", "tlbi_ipas2e1is_xt", +"tlbi_ipas2e1os_xt", "tlbi_ipas2le1is_xt", +"tlbi_ipas2le1os_xt", "tlbi_alle2is", +"tlbi_alle2os", "tlbi_vae2is_xt", +"tlbi_vae2os_xt", "tlbi_alle1is", +"tlbi_alle1os", "tlbi_vale2is_xt", +"tlbi_vale2os_xt", "tlbi_vmalls12e1is", +"tlbi_vmalls12e1os", "tlbi_ipas2e1_xt", "tlbi_ipas2le1_xt", "tlbi_alle2", @@ -2370,8 +2399,11 @@ "tlbi_vale2_xt", "tlbi_vmalls12e1", "tlbi_alle3is", +"tlbi_alle3os", "tlbi_vae3is_xt", +"tlbi_vae3os_xt", "tlbi_vale3is_xt", +"tlbi_vale3os_xt", "tlbi_alle3", "tlbi_vae3_xt", "tlbi_vale3_xt", -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70567?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I2198e6155f1eea7c5f8083c6ffb178d3a3d163d3 Gerrit-Change-Number: 70567 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Implement RES0/RES1 with miscreg specifiers
SVCR svcr = miscRegs[MISCREG_SVCR]; -SVCR newSvcr = newVal; - -// Don't allow other bits to be set -svcr.sm = newSvcr.sm; -svcr.za = newSvcr.za; -newVal = svcr; -} -break; - case MISCREG_SMPRI_EL1: -// Only the bottom 4 bits are settable -newVal = newVal & 0xF; -break; case MISCREG_AT_S1E1R_Xt: addressTranslation64(MMU::S1E1Tran, BaseMMU::Read, 0, val); return; diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 6f918b2..9203810 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2662,6 +2662,7 @@ .reset(midr) .hyp().monNonSecure(); InitReg(MISCREG_VMPIDR) + .res1(mask(31, 31)) .hyp().monNonSecure(); InitReg(MISCREG_SCTLR) .banked() @@ -2739,13 +2740,17 @@ .hyp().monNonSecure(); InitReg(MISCREG_HCR) .hyp().monNonSecure() - .res0(0x9000); + .res0(release->has(ArmExtension::VIRTUALIZATION) ? + 0x9000 : mask(31, 0)); InitReg(MISCREG_HCR2) .hyp().monNonSecure() - .res0(0xffa9ff8c); + .res0(release->has(ArmExtension::VIRTUALIZATION) ? + 0xffa9ff8c : mask(31, 0)); InitReg(MISCREG_HDCR) .hyp().monNonSecure(); InitReg(MISCREG_HCPTR) + .res0(mask(29, 21) | mask(19, 16) | mask(14, 14)) + .res1(mask(13, 12) | mask(9, 0)) .hyp().monNonSecure(); InitReg(MISCREG_HSTR) .hyp().monNonSecure(); @@ -2794,7 +2799,8 @@ .bankedChild() .secure().exceptUserMode(); InitReg(MISCREG_DFSR) - .banked(); + .banked() + .res0(mask(31, 14) | mask(8, 8)); InitReg(MISCREG_DFSR_NS) .bankedChild() .privSecure(!aarch32EL3) @@ -2803,7 +2809,8 @@ .bankedChild() .secure().exceptUserMode(); InitReg(MISCREG_IFSR) - .banked(); + .banked() + .res0(mask(31, 13) | mask(11, 11) | mask(8, 6)); InitReg(MISCREG_IFSR_NS) .bankedChild() .privSecure(!aarch32EL3) @@ -3118,6 +3125,7 @@ .bankedChild() .secure().exceptUserMode(); InitReg(MISCREG_AMAIR0) + .res0(release->has(ArmExtension::LPAE) ? 0 : mask(31, 0)) .banked(); InitReg(MISCREG_AMAIR0_NS) .bankedChild() @@ -3127,6 +3135,7 @@ .bankedChild() .secure().exceptUserMode(); InitReg(MISCREG_AMAIR1) + .res0(release->has(ArmExtension::LPAE) ? 0 : mask(31, 0)) .banked(); InitReg(MISCREG_AMAIR1_NS) .bankedChild() @@ -3976,6 +3985,8 @@ .mapsTo(MISCREG_VPIDR); InitReg(MISCREG_VMPIDR_EL2) .hyp().mon() + .res0(mask(63, 40) | mask(29, 25)) + .res1(mask(31, 31)) .mapsTo(MISCREG_VMPIDR); InitReg(MISCREG_SCTLR_EL1) .allPrivileges().exceptUserMode() @@ -5263,6 +5274,12 @@ }()) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_SVCR) +.res0([](){ +SVCR svcr_mask = 0; +svcr_mask.sm = 1; +svcr_mask.za = 1; +return ~svcr_mask; +}()) .allPrivileges(); InitReg(MISCREG_SMIDR_EL1) .reset([](){ @@ -5274,6 +5291,7 @@ }()) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_SMPRI_EL1) +.res0(mask(63, 4)) .allPrivileges().exceptUserMode().reads(1); InitReg(MISCREG_SMPRIMAP_EL2) .hyp().mon(); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70563?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ic2caea121e02f63f069f1576760c849bcbdac894 Gerrit-Change-Number: 70563 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Provide default mask for raz/rao helpers
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70559?usp=email to review the following change. Change subject: arch-arm: Provide default mask for raz/rao helpers .. arch-arm: Provide default mask for raz/rao helpers Rather than forcing raz registers to write something like: .raz(uint64_t(-1)) we provide a shorter version where if no bitmask is specified we assume the entire register is raz/rao. This won't be probably used by rao but I am striving for symmetry and providing a default won't probably hurt Change-Id: I309e345fc8336df3a74474f8f9202bf7e2095b41 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/regs/misc.hh 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arch/arm/regs/misc.hh b/src/arch/arm/regs/misc.hh index 3a32623..abbd1c6 100644 --- a/src/arch/arm/regs/misc.hh +++ b/src/arch/arm/regs/misc.hh @@ -1249,13 +1249,13 @@ return *this; } chain -raz(uint64_t mask) const +raz(uint64_t mask = (uint64_t)-1) const { entry._raz = mask; return *this; } chain -rao(uint64_t mask) const +rao(uint64_t mask = (uint64_t)-1) const { entry._rao = mask; return *this; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70559?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I309e345fc8336df3a74474f8f9202bf7e2095b41 Gerrit-Change-Number: 70559 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Update MISCREG_DBGDIDR to point to Armv8 debug arch
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70561?usp=email to review the following change. Change subject: arch-arm: Update MISCREG_DBGDIDR to point to Armv8 debug arch .. arch-arm: Update MISCREG_DBGDIDR to point to Armv8 debug arch Change-Id: I20691ecdaedde6740c706782635b1f9a4491dc51 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/regs/misc.cc 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 6c5a9dd..6f918b2 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2273,10 +2273,7 @@ // AArch32 CP14 registers InitReg(MISCREG_DBGDIDR) - /* For now just implement the version number. - * ARMv7, v7.1 Debug architecture (0b0101 --> 0x5) - */ - .reset(0x5 << 16) + .reset(0x6 << 16) // Armv8 Debug architecture .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); InitReg(MISCREG_DBGDSCRint) .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70561?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I20691ecdaedde6740c706782635b1f9a4491dc51 Gerrit-Change-Number: 70561 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Add UNSERIALIZE flag to address cpt compatibility
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70557?usp=email to review the following change. Change subject: arch-arm: Add UNSERIALIZE flag to address cpt compatibility .. arch-arm: Add UNSERIALIZE flag to address cpt compatibility This patch is adding the MISCREG_UNSERIALIZE flag to expose the user to the following checkpoint compatibility problem: What happens when a checkpoint is restored with a different architectural configuration? The current behaviour is to silently restore the checkpoint and to populate the ISA registers accordingly. However some of these restored values will be used and some of them will be actually discarded. For example the value of the MISCREG_ID_AA64ISAR0_EL1 register (initially configured at construction time [1]) will be overwritten by the checkpointed value in ISA::unserialize (checkpointed params win over current params). On the other hand we "discard" the checkpointed value for registers handled in the ISA::readMiscReg method (not accessing the storage) like MISCREG_ID_AA64PFR0_EL1 [2] (current params win over checkpointed params). In other words some registers will be unserialized while some others will discard the checkpointed value in favour of the current configuration setup. This categorization is currently implicit and it ultimately depends on whether or not a register read access its storage (see MISCREG_ID_AA64PFR0_EL1 above). With this patch we formalize this distinction. We allow the developer to be explict on which register should not be unserialized and should instead use the new simulation parameters. If there is a mismatch between the reset value of such register and the checkpointed one, we warn the user and we undo the unserialization for such register. [1]: https://github.com/gem5/gem5/blob/v22.1.0.0/src/arch/arm/isa.cc#L437 [2]: https://github.com/gem5/gem5/blob/v22.1.0.0/src/arch/arm/isa.cc#L1019 Change-Id: Icea6563ee5816b14a097926b5734f2fce10530c7 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/isa.cc M src/arch/arm/regs/misc.hh 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index ffd9cfc..f55235d 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -1879,6 +1879,18 @@ { DPRINTF(Checkpoint, "Unserializing Arm Misc Registers\n"); UNSERIALIZE_MAPPING(miscRegs, miscRegName, NUM_PHYS_MISCREGS); + +for (auto idx = 0; idx < NUM_MISCREGS; idx++) { +if (!lookUpMiscReg[idx].info[MISCREG_UNSERIALIZE] && +miscRegs[idx] != lookUpMiscReg[idx].reset()) { +warn("Checkpoint value for register %s does not match " + "current configuration (checkpointed: %#x, current: %#x)", + miscRegName[idx], miscRegs[idx], + lookUpMiscReg[idx].reset()); +miscRegs[idx] = lookUpMiscReg[idx].reset(); +} +} + CPSR tmp_cpsr = miscRegs[MISCREG_CPSR]; updateRegMap(tmp_cpsr); } diff --git a/src/arch/arm/regs/misc.hh b/src/arch/arm/regs/misc.hh index 265a697..3a32623 100644 --- a/src/arch/arm/regs/misc.hh +++ b/src/arch/arm/regs/misc.hh @@ -1125,6 +1125,7 @@ MISCREG_IMPLEMENTED, MISCREG_UNVERIFIABLE, // Does the value change on every read (e.g. a // arch generic counter) +MISCREG_UNSERIALIZE,// Should the checkpointed value be restored? MISCREG_WARN_NOT_FAIL, // If MISCREG_IMPLEMENTED is deasserted, it // tells whether the instruction should raise a // warning or fail @@ -1277,6 +1278,12 @@ return *this; } chain +unserialize(bool v = true) const +{ +entry.info[MISCREG_UNSERIALIZE] = v; +return *this; +} +chain warnNotFail(bool v = true) const { entry.info[MISCREG_WARN_NOT_FAIL] = v; @@ -1595,7 +1602,7 @@ : entry(e) { // force unimplemented registers to be thusly declared -implemented(1); +implemented(1).unserialize(1); } }; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70557?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Icea6563ee5816b14a097926b5734f2fce10530c7 Gerrit-Change-Number: 70557 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ g
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Extend SCTLR to be 64-bit wide
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70566?usp=email to review the following change. Change subject: arch-arm: Extend SCTLR to be 64-bit wide .. arch-arm: Extend SCTLR to be 64-bit wide In AArch64 SCTLR_EL1/_EL2/_EL3 is 64-bit wide Change-Id: I80931f9dd1a57f3132229b84d32a8ab08eee3371 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/regs/misc_types.hh 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index e446ce5..7e7ff67 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -371,7 +371,7 @@ Bitfield<0> ns; EndBitUnion(SCR) -BitUnion32(SCTLR) +BitUnion64(SCTLR) Bitfield<31> enia;// ARMv8.3 PAuth Bitfield<30> enib;// ARMv8.3 PAuth Bitfield<30> te; // Thumb Exception Enable (AArch32 only) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70566?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I80931f9dd1a57f3132229b84d32a8ab08eee3371 Gerrit-Change-Number: 70566 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Move RO values from ISA::read to the reset field
tReg(MISCREG_DBGDIDR) + /* For now just implement the version number. + * ARMv7, v7.1 Debug architecture (0b0101 --> 0x5) + */ + .reset(0x5 << 16) .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); InitReg(MISCREG_DBGDSCRint) .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); @@ -2514,6 +2518,34 @@ .reset(midr) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_CTR) + .reset([system=p.system](){ + //all caches have the same line size in gem5 + //4 byte words in ARM + unsigned line_size_words = + system->cacheLineSize() / 4; + unsigned log2_line_size_words = 0; + + while (line_size_words >>= 1) { + ++log2_line_size_words; + } + + CTR ctr = 0; + //log2 of minimun i-cache line size (words) + ctr.iCacheLineSize = log2_line_size_words; + //b11 - gem5 uses pipt + ctr.l1IndexPolicy = 0x3; + //log2 of minimum d-cache line size (words) + ctr.dCacheLineSize = log2_line_size_words; + //log2 of max reservation size (words) + ctr.erg = log2_line_size_words; + //log2 of max writeback size (words) + ctr.cwg = log2_line_size_words; + //b100 - gem5 format is ARMv7 + ctr.format = 0x4; + + return ctr; + }()) + .unserialize(0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_TCMTR) .allPrivileges().exceptUserMode().writes(0); @@ -2528,8 +2560,20 @@ .warnNotFail() .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_PFR0) + .reset(0x0031) // !ThumbEE | !Jazelle | Thumb | ARM .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_PFR1) + .reset([release=release,system=system](){ + // Timer | Virti | !M Profile | TrustZone | ARMv4 + bool have_timer = (system && system->getGenericTimer() != nullptr); + return 0x0001 | + (release->has(ArmExtension::SECURITY) ? + 0x0010 : 0x0) | + (release->has(ArmExtension::VIRTUALIZATION) ? + 0x1000 : 0x0) | + (have_timer ? 0x0001 : 0x0); + }()) + .unserialize(0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_DFR0) .reset(p.pmu ? 0x0300 : 0) @@ -3772,9 +3816,13 @@ pfr0_el1.gic = FullSystem && getGICv3CPUInterface(tc) ? 0x1 : 0; return pfr0_el1; }()) + .unserialize(0) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_AA64PFR1_EL1) + .reset(release->has(ArmExtension::FEAT_SME) ? + 0x1 << 24 : 0) + .unserialize(0) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_AA64DFR0_EL1) @@ -3919,6 +3967,7 @@ .reads(1) .mapsTo(MISCREG_CTR); InitReg(MISCREG_DCZID_EL0) + .reset(0x04) // DC ZVA clear 64-byte chunks .reads(1); InitReg(MISCREG_VPIDR_EL2) .hyp().mon() -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70558?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I62270cdb59f39b8a143e9554c8beaa8cd15824aa Gerrit-Change-Number: 70558 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Simplify FPSCR writes
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70565?usp=email to review the following change. Change subject: arch-arm: Simplify FPSCR writes .. arch-arm: Simplify FPSCR writes The old logic was setting up a mask which was covering pretty much the entire register, except for the FPSCR[14:13] and FPSCR[6:5] register fields. Those RES0 fields were treated as WI. We simplify this by explicitly marking them as RES0 at construction time Change-Id: I59942bd98c074349307d27e3a99351ee25f4db95 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/isa.cc M src/arch/arm/regs/misc.cc 2 files changed, 2 insertions(+), 32 deletions(-) diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index 83df61f..9c8e282 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -815,38 +815,7 @@ return; case MISCREG_FPSCR: -{ -const uint32_t ones = (uint32_t)(-1); -FPSCR fpscrMask = 0; -fpscrMask.ioc = ones; -fpscrMask.dzc = ones; -fpscrMask.ofc = ones; -fpscrMask.ufc = ones; -fpscrMask.ixc = ones; -fpscrMask.idc = ones; -fpscrMask.ioe = ones; -fpscrMask.dze = ones; -fpscrMask.ofe = ones; -fpscrMask.ufe = ones; -fpscrMask.ixe = ones; -fpscrMask.ide = ones; -fpscrMask.len = ones; -fpscrMask.fz16 = ones; -fpscrMask.stride = ones; -fpscrMask.rMode = ones; -fpscrMask.fz = ones; -fpscrMask.dn = ones; -fpscrMask.ahp = ones; -fpscrMask.qc = ones; -fpscrMask.v = ones; -fpscrMask.c = ones; -fpscrMask.z = ones; -fpscrMask.n = ones; -newVal = (newVal & (uint32_t)fpscrMask) | - (readMiscRegNoEffect(MISCREG_FPSCR) & - ~(uint32_t)fpscrMask); -tc->getDecoderPtr()->as().setContext(newVal); -} +tc->getDecoderPtr()->as().setContext(newVal); break; case MISCREG_FPSR: { diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 9203810..2d76143 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2199,6 +2199,7 @@ .reset(p.fpsid) .allPrivileges(); InitReg(MISCREG_FPSCR) + .res0(mask(14, 13) | mask(6, 5)) .allPrivileges(); InitReg(MISCREG_MVFR1) .reset([] () { -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70565?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I59942bd98c074349307d27e3a99351ee25f4db95 Gerrit-Change-Number: 70565 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Remove unnecessary case in ISA::readMiscReg
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70564?usp=email to review the following change. Change subject: arch-arm: Remove unnecessary case in ISA::readMiscReg .. arch-arm: Remove unnecessary case in ISA::readMiscReg Change-Id: I8b95a75fbfec2626fbe8b455ae9b3f30acda538f Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/isa.cc 1 file changed, 0 insertions(+), 2 deletions(-) diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index ab6e3f7..83df61f 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -567,8 +567,6 @@ l2ctlr.numCPUs = tc->getSystemPtr()->threads.size() - 1; return l2ctlr; } - case MISCREG_DBGDSCRint: -return readMiscRegNoEffect(MISCREG_DBGDSCRint); case MISCREG_ISR: case MISCREG_ISR_EL1: { -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70564?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I8b95a75fbfec2626fbe8b455ae9b3f30acda538f Gerrit-Change-Number: 70564 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Implement RAZ/WI with raz specifier
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70560?usp=email to review the following change. Change subject: arch-arm: Implement RAZ/WI with raz specifier .. arch-arm: Implement RAZ/WI with raz specifier Change-Id: I195f042fbeb10c0ca1f9095a0d26e6c213496ee5 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/isa.cc M src/arch/arm/regs/misc.cc 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index 14349b1..7df8978 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -470,12 +470,6 @@ return readMiscRegNoEffect(idx); } break; - case MISCREG_JOSCR: // Jazelle trivial implementation, RAZ/WI - case MISCREG_JMCR: // Jazelle trivial implementation, RAZ/WI - case MISCREG_JIDR: // Jazelle trivial implementation, RAZ/WI - case MISCREG_AIDR: // AUX ID set to 0 - case MISCREG_TCMTR: // No TCM's -return 0; case MISCREG_CLIDR: warn_once("The clidr register always reports 0 caches.\n"); diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 960c2be..6c5a9dd 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2505,12 +2505,15 @@ .unimplemented() .allPrivileges(); InitReg(MISCREG_JIDR) + .raz() // Jazelle trivial implementation, RAZ/WI .allPrivileges(); InitReg(MISCREG_TEEHBR) .allPrivileges(); InitReg(MISCREG_JOSCR) + .raz() // Jazelle trivial implementation, RAZ/WI .allPrivileges(); InitReg(MISCREG_JMCR) + .raz() // Jazelle trivial implementation, RAZ/WI .allPrivileges(); // AArch32 CP15 registers @@ -2548,6 +2551,7 @@ .unserialize(0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_TCMTR) + .raz() // No TCM's .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_TLBTR) .reset(1) // Separate Instruction and Data TLBs @@ -2646,6 +2650,7 @@ InitReg(MISCREG_CLIDR) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_AIDR) + .raz() // AUX ID set to 0 .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_CSSELR) .banked(); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70560?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I195f042fbeb10c0ca1f9095a0d26e6c213496ee5 Gerrit-Change-Number: 70560 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Group self hosted debug writes in ISA switch
MISCREG_DBGBCR3_EL1: -selfDebug->updateDBGBCR(3, val); -break; - case MISCREG_DBGBCR4_EL1: -selfDebug->updateDBGBCR(4, val); -break; - case MISCREG_DBGBCR5_EL1: -selfDebug->updateDBGBCR(5, val); -break; - case MISCREG_DBGBCR6_EL1: -selfDebug->updateDBGBCR(6, val); -break; - case MISCREG_DBGBCR7_EL1: -selfDebug->updateDBGBCR(7, val); -break; - case MISCREG_DBGBCR8_EL1: -selfDebug->updateDBGBCR(8, val); -break; - case MISCREG_DBGBCR9_EL1: -selfDebug->updateDBGBCR(9, val); -break; - case MISCREG_DBGBCR10_EL1: -selfDebug->updateDBGBCR(10, val); -break; - case MISCREG_DBGBCR11_EL1: -selfDebug->updateDBGBCR(11, val); -break; - case MISCREG_DBGBCR12_EL1: -selfDebug->updateDBGBCR(12, val); -break; - case MISCREG_DBGBCR13_EL1: -selfDebug->updateDBGBCR(13, val); -break; - case MISCREG_DBGBCR14_EL1: -selfDebug->updateDBGBCR(14, val); -break; - case MISCREG_DBGBCR15_EL1: -selfDebug->updateDBGBCR(15, val); -break; - case MISCREG_DBGWCR0_EL1: -selfDebug->updateDBGWCR(0, val); -break; - case MISCREG_DBGWCR1_EL1: -selfDebug->updateDBGWCR(1, val); -break; - case MISCREG_DBGWCR2_EL1: -selfDebug->updateDBGWCR(2, val); -break; - case MISCREG_DBGWCR3_EL1: -selfDebug->updateDBGWCR(3, val); -break; - case MISCREG_DBGWCR4_EL1: -selfDebug->updateDBGWCR(4, val); -break; - case MISCREG_DBGWCR5_EL1: -selfDebug->updateDBGWCR(5, val); -break; - case MISCREG_DBGWCR6_EL1: -selfDebug->updateDBGWCR(6, val); -break; - case MISCREG_DBGWCR7_EL1: -selfDebug->updateDBGWCR(7, val); -break; - case MISCREG_DBGWCR8_EL1: -selfDebug->updateDBGWCR(8, val); -break; - case MISCREG_DBGWCR9_EL1: -selfDebug->updateDBGWCR(9, val); -break; - case MISCREG_DBGWCR10_EL1: -selfDebug->updateDBGWCR(10, val); -break; - case MISCREG_DBGWCR11_EL1: -selfDebug->updateDBGWCR(11, val); -break; - case MISCREG_DBGWCR12_EL1: -selfDebug->updateDBGWCR(12, val); -break; - case MISCREG_DBGWCR13_EL1: -selfDebug->updateDBGWCR(13, val); -break; - case MISCREG_DBGWCR14_EL1: -selfDebug->updateDBGWCR(14, val); -break; - case MISCREG_DBGWCR15_EL1: -selfDebug->updateDBGWCR(15, val); + case MISCREG_DBGWCR0_EL1 ... MISCREG_DBGWCR15_EL1: +selfDebug->updateDBGWCR(idx - MISCREG_DBGWCR0_EL1, val); break; case MISCREG_IFSR: { -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70562?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: If9c0675743856b603e7b5ec1898f5cdd650f3ce6 Gerrit-Change-Number: 70562 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Remove clear32/64 methods
nitReg(MISCREG_RVBAR_EL3) + .reset(FullSystem && system->highestEL() == EL3 ? + system->resetAddr() : 0) .mon().writes(0); InitReg(MISCREG_RMR_EL3) .mon(); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70470?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I62d2dc0612298fdb4cdc3bf368e080c8ebebe23a Gerrit-Change-Number: 70470 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Remove ISA::initID64
most +// representative value. +SMCR smcr_el1 = 0; +smcr_el1.fa64 = 1; +smcr_el1.len = smeVL - 1; +return smcr_el1; +}()) .allPrivileges().exceptUserMode(); InitReg(MISCREG_TPIDR2_EL0) .allPrivileges(); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70469?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I3d03ee15df46fa7d9a9ec439b26e99baf33cbb5e Gerrit-Change-Number: 70469 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Rewrite ISA::initID64 using BitUnions
4MMFR2 mmfr2_el1 = p.id_aa64mmfr2_el1; +mmfr2_el1.uao = release->has(ArmExtension::FEAT_UAO) ? 0x1 : 0x0; +mmfr2_el1.varange = release->has(ArmExtension::FEAT_LVA) ? 0x1 : 0x0; +miscRegs[MISCREG_ID_AA64MMFR2_EL1] = mmfr2_el1; } void diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index f5e2502..7cff4ca 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2497,6 +2497,7 @@ InitReg(MISCREG_ID_PFR1) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_DFR0) + .reset(p.pmu ? 0x0300 : 0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_AFR0) .allPrivileges().exceptUserMode().writes(0); diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index 9af5337..e446ce5 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -118,6 +118,7 @@ Bitfield<39, 36> sm3; Bitfield<35, 32> sha3; Bitfield<31, 28> rdm; +Bitfield<27, 24> tme; Bitfield<23, 20> atomic; Bitfield<19, 16> crc32; Bitfield<15, 12> sha2; @@ -202,6 +203,17 @@ Bitfield<3, 0> el0; EndBitUnion(AA64PFR0) +BitUnion64(AA64SMFR0) +Bitfield<63> fa64; +Bitfield<59, 56> smEver; +Bitfield<55, 52> i16i64; +Bitfield<48> f64f64; +Bitfield<39, 36> i8i32; +Bitfield<35> f16f32; +Bitfield<34> b16f32; +Bitfield<32> f32f32; +EndBitUnion(AA64SMFR0) + BitUnion32(HDCR) Bitfield<27> tdcc; Bitfield<11> tdra; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70468?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I3e8c7bdcf86c01eccbd90fccaa2d4306a501ed13 Gerrit-Change-Number: 70468 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: VMPIDR_EL2 can be used in secure mode as well
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70471?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-arm: VMPIDR_EL2 can be used in secure mode as well .. arch-arm: VMPIDR_EL2 can be used in secure mode as well This was some old code still assuming EL2 is not implemented in secure mode. This is wrong since the introduction of FEAT_SEL2 in gem5 Change-Id: Ie7e112a83e64f33a98885e88504c2d6bc5070218 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70471 Tested-by: kokoro Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- M src/arch/arm/utility.cc 1 file changed, 1 insertion(+), 3 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass Richard Cooper: Looks good to me, approved diff --git a/src/arch/arm/utility.cc b/src/arch/arm/utility.cc index 6764569..05d1cab 100644 --- a/src/arch/arm/utility.cc +++ b/src/arch/arm/utility.cc @@ -139,8 +139,6 @@ { const ExceptionLevel current_el = currEL(tc); -const bool is_secure = isSecureBelowEL3(tc); - switch (current_el) { case EL0: // Note: in MsrMrs instruction we read the register value before @@ -150,7 +148,7 @@ warn_once("Trying to read MPIDR at EL0\n"); [[fallthrough]]; case EL1: -if (ArmSystem::haveEL(tc, EL2) && !is_secure) +if (EL2Enabled(tc)) return tc->readMiscReg(MISCREG_VMPIDR_EL2); else return getMPIDR(arm_sys, tc); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70471?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ie7e112a83e64f33a98885e88504c2d6bc5070218 Gerrit-Change-Number: 70471 Gerrit-PatchSet: 3 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Remove ISA::initID32
.allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_MMFR4) + .reset(p.id_mmfr4) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR0) + .reset(p.id_isar0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR1) + .reset(p.id_isar1) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR2) + .reset(p.id_isar2) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR3) + .reset(p.id_isar3) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR4) + .reset(p.id_isar4) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR5) + .reset([p,release=release] () { +ISAR5 isar5 = p.id_isar5; +if (release->has(ArmExtension::CRYPTO)) { +isar5.crc32 = 1; +isar5.sha2 = 1; +isar5.sha1 = 1; +isar5.aes = 2; +} else { +isar5.crc32 = 0; +isar5.sha2 = 0; +isar5.sha1 = 0; +isar5.aes = 0; +} +isar5.rdm = release->has(ArmExtension::FEAT_RDM) ? 0x1 : 0x0; +isar5.vcma = release->has(ArmExtension::FEAT_FCMA) ? 0x1 : 0x0; +return isar5; + }()) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR6) + .reset([p,release=release] () { +ISAR6 isar6 = p.id_isar6; +isar6.jscvt = release->has(ArmExtension::FEAT_JSCVT) ? 0x1 : 0x0; +return isar6; + }()) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_CCSIDR) .allPrivileges().exceptUserMode().writes(0); @@ -2527,6 +2572,7 @@ .bankedChild() .secure().exceptUserMode(); InitReg(MISCREG_VPIDR) + .reset(midr) .hyp().monNonSecure(); InitReg(MISCREG_VMPIDR) .hyp().monNonSecure(); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70467?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I70cce0b9d99ed5fe146e64c6ee55fa8cedf98ac6 Gerrit-Change-Number: 70467 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Map MVFR0_EL1/MVFR1_EL1 to AArch32 version
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70460?usp=email ) Change subject: arch-arm: Map MVFR0_EL1/MVFR1_EL1 to AArch32 version .. arch-arm: Map MVFR0_EL1/MVFR1_EL1 to AArch32 version Signed-off-by: Giacomo Travaglini Change-Id: I28753de7b437be58e5ac891ac2e549bbab6b53b0 Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70460 Tested-by: kokoro Maintainer: Jason Lowe-Power Reviewed-by: Jason Lowe-Power --- M src/arch/arm/regs/misc.cc 1 file changed, 4 insertions(+), 2 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved Richard Cooper: Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index e984164..4221a15 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3579,10 +3579,12 @@ .mapsTo(MISCREG_ID_ISAR6); InitReg(MISCREG_MVFR0_EL1) .faultRead(EL1, HCR_TRAP(tid3)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().exceptUserMode().writes(0) + .mapsTo(MISCREG_MVFR0); InitReg(MISCREG_MVFR1_EL1) .faultRead(EL1, HCR_TRAP(tid3)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().exceptUserMode().writes(0) + .mapsTo(MISCREG_MVFR1); InitReg(MISCREG_MVFR2_EL1) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70460?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I28753de7b437be58e5ac891ac2e549bbab6b53b0 Gerrit-Change-Number: 70460 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Make MISCREGs reset value configurable
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70458?usp=email ) Change subject: arch-arm: Make MISCREGs reset value configurable .. arch-arm: Make MISCREGs reset value configurable Signed-off-by: Giacomo Travaglini Change-Id: I536065a2de5faeb8ab64391f8ca2aa83fb2cc82f Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70458 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/arch/arm/regs/misc.hh 1 file changed, 7 insertions(+), 1 deletion(-) Approvals: Richard Cooper: Looks good to me, approved kokoro: Regressions pass Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved diff --git a/src/arch/arm/regs/misc.hh b/src/arch/arm/regs/misc.hh index bf25ea3..69d1461 100644 --- a/src/arch/arm/regs/misc.hh +++ b/src/arch/arm/regs/misc.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2022 Arm Limited + * Copyright (c) 2010-2023 Arm Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -1231,6 +1231,12 @@ return *this; } chain +reset(uint64_t res_val) const +{ +entry._reset = res_val; +return *this; +} +chain res0(uint64_t mask) const { entry._res0 = mask; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70458?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I536065a2de5faeb8ab64391f8ca2aa83fb2cc82f Gerrit-Change-Number: 70458 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Rewrite ISA::initID32 using BitUnions
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70466?usp=email ) Change subject: arch-arm: Rewrite ISA::initID32 using BitUnions .. arch-arm: Rewrite ISA::initID32 using BitUnions Signed-off-by: Giacomo Travaglini Change-Id: I38460766bb5ed363b176bc6faca8e770a8a5e4c6 Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70466 Maintainer: Jason Lowe-Power Tested-by: kokoro Reviewed-by: Jason Lowe-Power --- M src/arch/arm/isa.cc M src/arch/arm/regs/misc_types.hh 2 files changed, 39 insertions(+), 19 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, but someone else must approve; Looks good to me, approved Richard Cooper: Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index a66a938..4033d0f 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -280,8 +280,6 @@ miscRegs[MISCREG_ID_ISAR2] = p.id_isar2; miscRegs[MISCREG_ID_ISAR3] = p.id_isar3; miscRegs[MISCREG_ID_ISAR4] = p.id_isar4; -miscRegs[MISCREG_ID_ISAR5] = p.id_isar5; -miscRegs[MISCREG_ID_ISAR6] = p.id_isar6; miscRegs[MISCREG_ID_MMFR0] = p.id_mmfr0; miscRegs[MISCREG_ID_MMFR1] = p.id_mmfr1; @@ -289,24 +287,25 @@ miscRegs[MISCREG_ID_MMFR3] = p.id_mmfr3; miscRegs[MISCREG_ID_MMFR4] = p.id_mmfr4; -/** MISCREG_ID_ISAR5 */ -// Crypto -miscRegs[MISCREG_ID_ISAR5] = insertBits( -miscRegs[MISCREG_ID_ISAR5], 19, 4, -release->has(ArmExtension::CRYPTO) ? 0x1112 : 0x0); -// RDM -miscRegs[MISCREG_ID_ISAR5] = insertBits( -miscRegs[MISCREG_ID_ISAR5], 27, 24, -release->has(ArmExtension::FEAT_RDM) ? 0x1 : 0x0); -// FCMA -miscRegs[MISCREG_ID_ISAR5] = insertBits( -miscRegs[MISCREG_ID_ISAR5], 31, 28, -release->has(ArmExtension::FEAT_FCMA) ? 0x1 : 0x0); +ISAR5 isar5 = p.id_isar5; +if (release->has(ArmExtension::CRYPTO)) { +isar5.crc32 = 1; +isar5.sha2 = 1; +isar5.sha1 = 1; +isar5.aes = 2; +} else { +isar5.crc32 = 0; +isar5.sha2 = 0; +isar5.sha1 = 0; +isar5.aes = 0; +} +isar5.rdm = release->has(ArmExtension::FEAT_RDM) ? 0x1 : 0x0; +isar5.vcma = release->has(ArmExtension::FEAT_FCMA) ? 0x1 : 0x0; +miscRegs[MISCREG_ID_ISAR5] = isar5; -/** ID_ISAR6 */ -miscRegs[MISCREG_ID_ISAR6] = insertBits( -miscRegs[MISCREG_ID_ISAR6], 3, 0, -release->has(ArmExtension::FEAT_JSCVT) ? 0x1 : 0x0); +ISAR6 isar6 = p.id_isar6; +isar6.jscvt = release->has(ArmExtension::FEAT_JSCVT) ? 0x1 : 0x0; +miscRegs[MISCREG_ID_ISAR6] = isar6; } void diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index 0fe5a00..9af5337 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -75,6 +75,27 @@ Bitfield<0> sp; // AArch64 EndBitUnion(CPSR) +BitUnion32(ISAR5) +Bitfield<31, 28> vcma; +Bitfield<27, 24> rdm; +Bitfield<19, 16> crc32; +Bitfield<15, 12> sha2; +Bitfield<11, 8> sha1; +Bitfield<7, 4> aes; +Bitfield<3, 0> sevl; +EndBitUnion(ISAR5) + +BitUnion32(ISAR6) +Bitfield<31, 28> clrbhb; +Bitfield<27, 24> i8mm; +Bitfield<23, 20> bf16; +Bitfield<19, 16> specres; +Bitfield<15, 12> sb; +Bitfield<11, 8> fhm; +Bitfield<7, 4> dp; +Bitfield<3, 0> jscvt; +EndBitUnion(ISAR6) + BitUnion64(AA64DFR0) Bitfield<43, 40> tracefilt; Bitfield<39, 36> doublelock; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70466?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I38460766bb5ed363b176bc6faca8e770a8a5e4c6 Gerrit-Change-Number: 70466 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Map CTR_EL0 to AArch32 version
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70463?usp=email ) Change subject: arch-arm: Map CTR_EL0 to AArch32 version .. arch-arm: Map CTR_EL0 to AArch32 version Change-Id: Ia3e0cafa1bd2a3054b286e79ac378c895d6910e8 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70463 Maintainer: Jason Lowe-Power Tested-by: kokoro Reviewed-by: Jason Lowe-Power --- M src/arch/arm/regs/misc.cc 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass Richard Cooper: Looks good to me, approved diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 706716e..a31b6de 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3681,7 +3681,8 @@ InitReg(MISCREG_CTR_EL0) .faultRead(EL0, faultCtrEL0) .faultRead(EL1, HCR_TRAP(tid2)) - .reads(1); + .reads(1) + .mapsTo(MISCREG_CTR); InitReg(MISCREG_DCZID_EL0) .reads(1); InitReg(MISCREG_VPIDR_EL2) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70463?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ia3e0cafa1bd2a3054b286e79ac378c895d6910e8 Gerrit-Change-Number: 70463 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Replace 0ing of miscRegs with assignment of reset value
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70457?usp=email ) Change subject: arch-arm: Replace 0ing of miscRegs with assignment of reset value .. arch-arm: Replace 0ing of miscRegs with assignment of reset value The reset variable in the MiscRegLUTEntry class defines the per-register reset value. Rather than simply zeroing the misc registers we should assign them their reset value when clearing them. As of now the reset variable is unused so using it is functionally equivalent of calling memset. This will however change once we start using the reset field Signed-off-by: Giacomo Travaglini Change-Id: If352501738729927c1c9b300e5b0b8c27ce41b79 Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70457 Tested-by: kokoro Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- M src/arch/arm/isa.cc 1 file changed, 3 insertions(+), 1 deletion(-) Approvals: Richard Cooper: Looks good to me, approved Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index aec8243..5a0dec5 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -141,7 +141,9 @@ } SCTLR sctlr_rst = miscRegs[MISCREG_SCTLR_RST]; -memset(miscRegs, 0, sizeof(miscRegs)); +for (auto idx = 0; idx < NUM_MISCREGS; idx++) { +miscRegs[idx] = lookUpMiscReg[idx].reset(); +} initID32(p); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70457?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: If352501738729927c1c9b300e5b0b8c27ce41b79 Gerrit-Change-Number: 70457 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Fix read redirection for MIDR register
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70464?usp=email ) Change subject: arch-arm: Fix read redirection for MIDR register .. arch-arm: Fix read redirection for MIDR register This patch is fixing read redirection for the MIDR register in the following ways: 1) Is allowing a virtualization of the register (via VPIDR) even in secure mode (available with FEAT_SEL2) 2) Is extending this logic to the AArch64 version (MIDR_EL1) It is also rewriting the base logic using Armv8 terminology (checking the EL rather than the mode as an example). Signed-off-by: Giacomo Travaglini Change-Id: I5cf09240206287cab877ea7ff6e46cf823aa8c35 Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70464 Maintainer: Jason Lowe-Power Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- M src/arch/arm/isa.cc 1 file changed, 4 insertions(+), 5 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved Richard Cooper: Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index 65d8b97..da23e0b 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -864,12 +864,11 @@ case MISCREG_ID_AFR0: // not implemented, so alias MIDR case MISCREG_REVIDR: // not implemented, so alias MIDR case MISCREG_MIDR: -cpsr = readMiscRegNoEffect(MISCREG_CPSR); -scr = readMiscRegNoEffect(MISCREG_SCR_EL3); -if ((cpsr.mode == MODE_HYP) || isSecure(tc)) { -return readMiscRegNoEffect(idx); -} else { + case MISCREG_MIDR_EL1: +if (currEL() == EL1 && EL2Enabled(tc)) { return readMiscRegNoEffect(MISCREG_VPIDR); +} else { +return readMiscRegNoEffect(idx); } break; case MISCREG_JOSCR: // Jazelle trivial implementation, RAZ/WI -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70464?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I5cf09240206287cab877ea7ff6e46cf823aa8c35 Gerrit-Change-Number: 70464 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Map MIDR_EL1 to AArch32 version
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70461?usp=email ) Change subject: arch-arm: Map MIDR_EL1 to AArch32 version .. arch-arm: Map MIDR_EL1 to AArch32 version Signed-off-by: Giacomo Travaglini Change-Id: Id3ddc18ebfc296389bed6dc7615899bef83178ea Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70461 Reviewed-by: Jason Lowe-Power Tested-by: kokoro Maintainer: Jason Lowe-Power --- M src/arch/arm/isa.cc M src/arch/arm/regs/misc.cc 2 files changed, 2 insertions(+), 2 deletions(-) Approvals: Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass Richard Cooper: Looks good to me, approved diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index b0a856e..65d8b97 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -334,7 +334,6 @@ midr = 0x410fc0f0; miscRegs[MISCREG_MIDR] = midr; -miscRegs[MISCREG_MIDR_EL1] = midr; miscRegs[MISCREG_VPIDR] = midr; miscRegs[MISCREG_ID_ISAR0] = p.id_isar0; diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 4221a15..000124c 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3507,7 +3507,8 @@ // AArch64 registers (Op0=1,3); InitReg(MISCREG_MIDR_EL1) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().exceptUserMode().writes(0) + .mapsTo(MISCREG_MIDR); InitReg(MISCREG_MPIDR_EL1) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_REVIDR_EL1) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70461?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Id3ddc18ebfc296389bed6dc7615899bef83178ea Gerrit-Change-Number: 70461 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Move MISCREG init logic from ISA to reset field
ceptUserMode(); @@ -2447,6 +2471,7 @@ InitReg(MISCREG_TCMTR) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_TLBTR) + .reset(1) // Separate Instruction and Data TLBs .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_MPIDR) .allPrivileges().exceptUserMode().writes(0); @@ -2870,6 +2895,19 @@ .banked(); InitReg(MISCREG_PRRR_NS) .bankedChild() + .reset( +(1 << 19) | // 19 +(0 << 18) | // 18 +(0 << 17) | // 17 +(1 << 16) | // 16 +(2 << 14) | // 15:14 +(0 << 12) | // 13:12 +(2 << 10) | // 11:10 +(2 << 8) | // 9:8 +(2 << 6) | // 7:6 +(2 << 4) | // 5:4 +(1 << 2) | // 3:2 +0) .privSecure(!aarch32EL3) .nonSecure().exceptUserMode(); InitReg(MISCREG_PRRR_S) @@ -2888,6 +2926,22 @@ .banked(); InitReg(MISCREG_NMRR_NS) .bankedChild() + .reset( +(1 << 30) | // 31:30 +(0 << 26) | // 27:26 +(0 << 24) | // 25:24 +(3 << 22) | // 23:22 +(2 << 20) | // 21:20 +(0 << 18) | // 19:18 +(0 << 16) | // 17:16 +(1 << 14) | // 15:14 +(0 << 12) | // 13:12 +(2 << 10) | // 11:10 +(0 << 8) | // 9:8 +(3 << 6) | // 7:6 +(2 << 4) | // 5:4 +(0 << 2) | // 3:2 +0) .privSecure(!aarch32EL3) .nonSecure().exceptUserMode(); InitReg(MISCREG_NMRR_S) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70465?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Iec4878217c38707be4ce7d4746ff95a208b4 Gerrit-Change-Number: 70465 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Map MPIDR_EL1 to AArch32 version
Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70462?usp=email ) Change subject: arch-arm: Map MPIDR_EL1 to AArch32 version .. arch-arm: Map MPIDR_EL1 to AArch32 version As of now the mapping is not actually needed: the MPIDR and MPIDR_EL1 registes are both read using the same helper (readMPIDR). In the future we could store the getMPIDR result in the AArch32 version without the need to re-calculate the fix affinity numbers Change-Id: Id42d1994cdd1722f07874ffa7364154cf011e00a Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70462 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- M src/arch/arm/regs/misc.cc 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: Richard Cooper: Looks good to me, approved Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 000124c..706716e 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3510,7 +3510,8 @@ .allPrivileges().exceptUserMode().writes(0) .mapsTo(MISCREG_MIDR); InitReg(MISCREG_MPIDR_EL1) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().exceptUserMode().writes(0) + .mapsTo(MISCREG_MPIDR); InitReg(MISCREG_REVIDR_EL1) .faultRead(EL1, HCR_TRAP(tid1)) .allPrivileges().exceptUserMode().writes(0); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70462?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Id42d1994cdd1722f07874ffa7364154cf011e00a Gerrit-Change-Number: 70462 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Generalize SCTLR_RST behaviour
52,7 +1751,6 @@ "nmrr_mair1_ns", "nmrr_mair1_s", "pmxevtyper_pmccfiltr", -"sctlr_rst", "sev_mailbox", "tlbi_needsync", -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70459?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ib61019ec499b35382289fe18740c90eee5de4907 Gerrit-Change-Number: 70459 Gerrit-PatchSet: 2 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Andreas Sandberg Gerrit-Reviewer: Giacomo Travaglini Gerrit-Reviewer: Jason Lowe-Power Gerrit-Reviewer: Richard Cooper Gerrit-Reviewer: kokoro ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Remove clear32/64 methods
/public/gem5/+/70470?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I62d2dc0612298fdb4cdc3bf368e080c8ebebe23a Gerrit-Change-Number: 70470 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Rewrite ISA::initID64 using BitUnions
AO) ? 0x1 : 0x0; +mmfr2_el1.lva = release->has(ArmExtension::FEAT_LVA) ? 0x1 : 0x0; +miscRegs[MISCREG_ID_AA64MMFR2_EL1] = mmfr2_el1; } void diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index f5e2502..7cff4ca 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -2497,6 +2497,7 @@ InitReg(MISCREG_ID_PFR1) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_DFR0) + .reset(p.pmu ? 0x0300 : 0) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_AFR0) .allPrivileges().exceptUserMode().writes(0); diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index 9af5337..e446ce5 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -118,6 +118,7 @@ Bitfield<39, 36> sm3; Bitfield<35, 32> sha3; Bitfield<31, 28> rdm; +Bitfield<27, 24> tme; Bitfield<23, 20> atomic; Bitfield<19, 16> crc32; Bitfield<15, 12> sha2; @@ -202,6 +203,17 @@ Bitfield<3, 0> el0; EndBitUnion(AA64PFR0) +BitUnion64(AA64SMFR0) +Bitfield<63> fa64; +Bitfield<59, 56> smEver; +Bitfield<55, 52> i16i64; +Bitfield<48> f64f64; +Bitfield<39, 36> i8i32; +Bitfield<35> f16f32; +Bitfield<34> b16f32; +Bitfield<32> f32f32; +EndBitUnion(AA64SMFR0) + BitUnion32(HDCR) Bitfield<27> tdcc; Bitfield<11> tdra; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70468?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I3e8c7bdcf86c01eccbd90fccaa2d4306a501ed13 Gerrit-Change-Number: 70468 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: VMPIDR_EL2 can be used in secure mode as well
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70471?usp=email to review the following change. Change subject: arch-arm: VMPIDR_EL2 can be used in secure mode as well .. arch-arm: VMPIDR_EL2 can be used in secure mode as well This was some old code still assuming EL2 is not implemented in secure mode. This is wrong since the introduction of FEAT_SEL2 in gem5 Change-Id: Ie7e112a83e64f33a98885e88504c2d6bc5070218 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/utility.cc 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/arch/arm/utility.cc b/src/arch/arm/utility.cc index 6764569..05d1cab 100644 --- a/src/arch/arm/utility.cc +++ b/src/arch/arm/utility.cc @@ -139,8 +139,6 @@ { const ExceptionLevel current_el = currEL(tc); -const bool is_secure = isSecureBelowEL3(tc); - switch (current_el) { case EL0: // Note: in MsrMrs instruction we read the register value before @@ -150,7 +148,7 @@ warn_once("Trying to read MPIDR at EL0\n"); [[fallthrough]]; case EL1: -if (ArmSystem::haveEL(tc, EL2) && !is_secure) +if (EL2Enabled(tc)) return tc->readMiscReg(MISCREG_VMPIDR_EL2); else return getMPIDR(arm_sys, tc); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70471?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ie7e112a83e64f33a98885e88504c2d6bc5070218 Gerrit-Change-Number: 70471 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Remove ISA::initID64
4 = 1; +smcr_el1.len = smeVL - 1; +return smcr_el1; +}()) .allPrivileges().exceptUserMode(); InitReg(MISCREG_TPIDR2_EL0) .allPrivileges(); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70469?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I3d03ee15df46fa7d9a9ec439b26e99baf33cbb5e Gerrit-Change-Number: 70469 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Remove ISA::initID32
.allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR1) + .reset(p.id_isar1) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR2) + .reset(p.id_isar2) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR3) + .reset(p.id_isar3) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR4) + .reset(p.id_isar4) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR5) + .reset([p,release=release] () { +ISAR5 isar5 = p.id_isar5; +if (release->has(ArmExtension::CRYPTO)) { +isar5.crc32 = 1; +isar5.sha2 = 1; +isar5.sha1 = 1; +isar5.aes = 2; +} else { +isar5.crc32 = 0; +isar5.sha2 = 0; +isar5.sha1 = 0; +isar5.aes = 0; +} +isar5.rdm = release->has(ArmExtension::FEAT_RDM) ? 0x1 : 0x0; +isar5.vcma = release->has(ArmExtension::FEAT_FCMA) ? 0x1 : 0x0; +return isar5; + }()) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_ID_ISAR6) + .reset([p,release=release] () { +ISAR6 isar6 = p.id_isar6; +isar6.jscvt = release->has(ArmExtension::FEAT_JSCVT) ? 0x1 : 0x0; +return isar6; + }()) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_CCSIDR) .allPrivileges().exceptUserMode().writes(0); @@ -2527,6 +2572,7 @@ .bankedChild() .secure().exceptUserMode(); InitReg(MISCREG_VPIDR) + .reset(midr) .hyp().monNonSecure(); InitReg(MISCREG_VMPIDR) .hyp().monNonSecure(); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70467?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I70cce0b9d99ed5fe146e64c6ee55fa8cedf98ac6 Gerrit-Change-Number: 70467 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Map MIDR_EL1 to AArch32 version
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70461?usp=email to review the following change. Change subject: arch-arm: Map MIDR_EL1 to AArch32 version .. arch-arm: Map MIDR_EL1 to AArch32 version Signed-off-by: Giacomo Travaglini Change-Id: Id3ddc18ebfc296389bed6dc7615899bef83178ea Reviewed-by: Richard Cooper --- M src/arch/arm/isa.cc M src/arch/arm/regs/misc.cc 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index b0a856e..65d8b97 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -334,7 +334,6 @@ midr = 0x410fc0f0; miscRegs[MISCREG_MIDR] = midr; -miscRegs[MISCREG_MIDR_EL1] = midr; miscRegs[MISCREG_VPIDR] = midr; miscRegs[MISCREG_ID_ISAR0] = p.id_isar0; diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 4221a15..000124c 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3507,7 +3507,8 @@ // AArch64 registers (Op0=1,3); InitReg(MISCREG_MIDR_EL1) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().exceptUserMode().writes(0) + .mapsTo(MISCREG_MIDR); InitReg(MISCREG_MPIDR_EL1) .allPrivileges().exceptUserMode().writes(0); InitReg(MISCREG_REVIDR_EL1) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70461?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Id3ddc18ebfc296389bed6dc7615899bef83178ea Gerrit-Change-Number: 70461 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Fix read redirection for MIDR register
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70464?usp=email to review the following change. Change subject: arch-arm: Fix read redirection for MIDR register .. arch-arm: Fix read redirection for MIDR register This patch is fixing read redirection for the MIDR register in the following ways: 1) Is allowing a virtualization of the register (via VPIDR) even in secure mode (available with FEAT_SEL2) 2) Is extending this logic to the AArch64 version (MIDR_EL1) It is also rewriting the base logic using Armv8 terminology (checking the EL rather than the mode as an example). Signed-off-by: Giacomo Travaglini Change-Id: I5cf09240206287cab877ea7ff6e46cf823aa8c35 Reviewed-by: Richard Cooper --- M src/arch/arm/isa.cc 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index 65d8b97..da23e0b 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -864,12 +864,11 @@ case MISCREG_ID_AFR0: // not implemented, so alias MIDR case MISCREG_REVIDR: // not implemented, so alias MIDR case MISCREG_MIDR: -cpsr = readMiscRegNoEffect(MISCREG_CPSR); -scr = readMiscRegNoEffect(MISCREG_SCR_EL3); -if ((cpsr.mode == MODE_HYP) || isSecure(tc)) { -return readMiscRegNoEffect(idx); -} else { + case MISCREG_MIDR_EL1: +if (currEL() == EL1 && EL2Enabled(tc)) { return readMiscRegNoEffect(MISCREG_VPIDR); +} else { +return readMiscRegNoEffect(idx); } break; case MISCREG_JOSCR: // Jazelle trivial implementation, RAZ/WI -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70464?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I5cf09240206287cab877ea7ff6e46cf823aa8c35 Gerrit-Change-Number: 70464 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Move MISCREG init logic from ISA to reset field
es().exceptUserMode().writes(0); InitReg(MISCREG_MPIDR) .allPrivileges().exceptUserMode().writes(0); @@ -2870,6 +2895,19 @@ .banked(); InitReg(MISCREG_PRRR_NS) .bankedChild() + .reset( +(1 << 19) | // 19 +(0 << 18) | // 18 +(0 << 17) | // 17 +(1 << 16) | // 16 +(2 << 14) | // 15:14 +(0 << 12) | // 13:12 +(2 << 10) | // 11:10 +(2 << 8) | // 9:8 +(2 << 6) | // 7:6 +(2 << 4) | // 5:4 +(1 << 2) | // 3:2 +0) .privSecure(!aarch32EL3) .nonSecure().exceptUserMode(); InitReg(MISCREG_PRRR_S) @@ -2888,6 +2926,22 @@ .banked(); InitReg(MISCREG_NMRR_NS) .bankedChild() + .reset( +(1 << 30) | // 31:30 +(0 << 26) | // 27:26 +(0 << 24) | // 25:24 +(3 << 22) | // 23:22 +(2 << 20) | // 21:20 +(0 << 18) | // 19:18 +(0 << 16) | // 17:16 +(1 << 14) | // 15:14 +(0 << 12) | // 13:12 +(2 << 10) | // 11:10 +(0 << 8) | // 9:8 +(3 << 6) | // 7:6 +(2 << 4) | // 5:4 +(0 << 2) | // 3:2 +0) .privSecure(!aarch32EL3) .nonSecure().exceptUserMode(); InitReg(MISCREG_NMRR_S) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70465?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Iec4878217c38707be4ce7d4746ff95a208b4 Gerrit-Change-Number: 70465 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Map MPIDR_EL1 to AArch32 version
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70462?usp=email to review the following change. Change subject: arch-arm: Map MPIDR_EL1 to AArch32 version .. arch-arm: Map MPIDR_EL1 to AArch32 version As of now the mapping is not actually needed: the MPIDR and MPIDR_EL1 registes are both read using the same helper (readMPIDR). In the future we could store the getMPIDR result in the AArch32 version without the need to re-calculate the fix affinity numbers Change-Id: Id42d1994cdd1722f07874ffa7364154cf011e00a Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/regs/misc.cc 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 000124c..706716e 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3510,7 +3510,8 @@ .allPrivileges().exceptUserMode().writes(0) .mapsTo(MISCREG_MIDR); InitReg(MISCREG_MPIDR_EL1) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().exceptUserMode().writes(0) + .mapsTo(MISCREG_MPIDR); InitReg(MISCREG_REVIDR_EL1) .faultRead(EL1, HCR_TRAP(tid1)) .allPrivileges().exceptUserMode().writes(0); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70462?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Id42d1994cdd1722f07874ffa7364154cf011e00a Gerrit-Change-Number: 70462 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Map MVFR0_EL1/MVFR1_EL1 to AArch32 version
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70460?usp=email to review the following change. Change subject: arch-arm: Map MVFR0_EL1/MVFR1_EL1 to AArch32 version .. arch-arm: Map MVFR0_EL1/MVFR1_EL1 to AArch32 version Signed-off-by: Giacomo Travaglini Change-Id: I28753de7b437be58e5ac891ac2e549bbab6b53b0 Reviewed-by: Richard Cooper --- M src/arch/arm/regs/misc.cc 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index e984164..4221a15 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3579,10 +3579,12 @@ .mapsTo(MISCREG_ID_ISAR6); InitReg(MISCREG_MVFR0_EL1) .faultRead(EL1, HCR_TRAP(tid3)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().exceptUserMode().writes(0) + .mapsTo(MISCREG_MVFR0); InitReg(MISCREG_MVFR1_EL1) .faultRead(EL1, HCR_TRAP(tid3)) - .allPrivileges().exceptUserMode().writes(0); + .allPrivileges().exceptUserMode().writes(0) + .mapsTo(MISCREG_MVFR1); InitReg(MISCREG_MVFR2_EL1) .faultRead(EL1, HCR_TRAP(tid3)) .allPrivileges().exceptUserMode().writes(0); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70460?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I28753de7b437be58e5ac891ac2e549bbab6b53b0 Gerrit-Change-Number: 70460 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Map CTR_EL0 to AArch32 version
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70463?usp=email to review the following change. Change subject: arch-arm: Map CTR_EL0 to AArch32 version .. arch-arm: Map CTR_EL0 to AArch32 version Change-Id: Ia3e0cafa1bd2a3054b286e79ac378c895d6910e8 Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper --- M src/arch/arm/regs/misc.cc 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/arch/arm/regs/misc.cc b/src/arch/arm/regs/misc.cc index 706716e..a31b6de 100644 --- a/src/arch/arm/regs/misc.cc +++ b/src/arch/arm/regs/misc.cc @@ -3681,7 +3681,8 @@ InitReg(MISCREG_CTR_EL0) .faultRead(EL0, faultCtrEL0) .faultRead(EL1, HCR_TRAP(tid2)) - .reads(1); + .reads(1) + .mapsTo(MISCREG_CTR); InitReg(MISCREG_DCZID_EL0) .reads(1); InitReg(MISCREG_VPIDR_EL2) -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70463?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ia3e0cafa1bd2a3054b286e79ac378c895d6910e8 Gerrit-Change-Number: 70463 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [S] Change in gem5/gem5[develop]: arch-arm: Generalize SCTLR_RST behaviour
ew, visit https://gem5-review.googlesource.com/c/public/gem5/+/70459?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: Ib61019ec499b35382289fe18740c90eee5de4907 Gerrit-Change-Number: 70459 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-arm: Rewrite ISA::initID32 using BitUnions
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70466?usp=email to review the following change. Change subject: arch-arm: Rewrite ISA::initID32 using BitUnions .. arch-arm: Rewrite ISA::initID32 using BitUnions Signed-off-by: Giacomo Travaglini Change-Id: I38460766bb5ed363b176bc6faca8e770a8a5e4c6 Reviewed-by: Richard Cooper --- M src/arch/arm/isa.cc M src/arch/arm/regs/misc_types.hh 2 files changed, 39 insertions(+), 19 deletions(-) diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index a66a938..4033d0f 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -280,8 +280,6 @@ miscRegs[MISCREG_ID_ISAR2] = p.id_isar2; miscRegs[MISCREG_ID_ISAR3] = p.id_isar3; miscRegs[MISCREG_ID_ISAR4] = p.id_isar4; -miscRegs[MISCREG_ID_ISAR5] = p.id_isar5; -miscRegs[MISCREG_ID_ISAR6] = p.id_isar6; miscRegs[MISCREG_ID_MMFR0] = p.id_mmfr0; miscRegs[MISCREG_ID_MMFR1] = p.id_mmfr1; @@ -289,24 +287,25 @@ miscRegs[MISCREG_ID_MMFR3] = p.id_mmfr3; miscRegs[MISCREG_ID_MMFR4] = p.id_mmfr4; -/** MISCREG_ID_ISAR5 */ -// Crypto -miscRegs[MISCREG_ID_ISAR5] = insertBits( -miscRegs[MISCREG_ID_ISAR5], 19, 4, -release->has(ArmExtension::CRYPTO) ? 0x1112 : 0x0); -// RDM -miscRegs[MISCREG_ID_ISAR5] = insertBits( -miscRegs[MISCREG_ID_ISAR5], 27, 24, -release->has(ArmExtension::FEAT_RDM) ? 0x1 : 0x0); -// FCMA -miscRegs[MISCREG_ID_ISAR5] = insertBits( -miscRegs[MISCREG_ID_ISAR5], 31, 28, -release->has(ArmExtension::FEAT_FCMA) ? 0x1 : 0x0); +ISAR5 isar5 = p.id_isar5; +if (release->has(ArmExtension::CRYPTO)) { +isar5.crc32 = 1; +isar5.sha2 = 1; +isar5.sha1 = 1; +isar5.aes = 2; +} else { +isar5.crc32 = 0; +isar5.sha2 = 0; +isar5.sha1 = 0; +isar5.aes = 0; +} +isar5.rdm = release->has(ArmExtension::FEAT_RDM) ? 0x1 : 0x0; +isar5.vcma = release->has(ArmExtension::FEAT_FCMA) ? 0x1 : 0x0; +miscRegs[MISCREG_ID_ISAR5] = isar5; -/** ID_ISAR6 */ -miscRegs[MISCREG_ID_ISAR6] = insertBits( -miscRegs[MISCREG_ID_ISAR6], 3, 0, -release->has(ArmExtension::FEAT_JSCVT) ? 0x1 : 0x0); +ISAR6 isar6 = p.id_isar6; +isar6.jscvt = release->has(ArmExtension::FEAT_JSCVT) ? 0x1 : 0x0; +miscRegs[MISCREG_ID_ISAR6] = isar6; } void diff --git a/src/arch/arm/regs/misc_types.hh b/src/arch/arm/regs/misc_types.hh index 0fe5a00..9af5337 100644 --- a/src/arch/arm/regs/misc_types.hh +++ b/src/arch/arm/regs/misc_types.hh @@ -75,6 +75,27 @@ Bitfield<0> sp; // AArch64 EndBitUnion(CPSR) +BitUnion32(ISAR5) +Bitfield<31, 28> vcma; +Bitfield<27, 24> rdm; +Bitfield<19, 16> crc32; +Bitfield<15, 12> sha2; +Bitfield<11, 8> sha1; +Bitfield<7, 4> aes; +Bitfield<3, 0> sevl; +EndBitUnion(ISAR5) + +BitUnion32(ISAR6) +Bitfield<31, 28> clrbhb; +Bitfield<27, 24> i8mm; +Bitfield<23, 20> bf16; +Bitfield<19, 16> specres; +Bitfield<15, 12> sb; +Bitfield<11, 8> fhm; +Bitfield<7, 4> dp; +Bitfield<3, 0> jscvt; +EndBitUnion(ISAR6) + BitUnion64(AA64DFR0) Bitfield<43, 40> tracefilt; Bitfield<39, 36> doublelock; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70466?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I38460766bb5ed363b176bc6faca8e770a8a5e4c6 Gerrit-Change-Number: 70466 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Make MISCREGs reset value configurable
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70458?usp=email to review the following change. Change subject: arch-arm: Make MISCREGs reset value configurable .. arch-arm: Make MISCREGs reset value configurable Signed-off-by: Giacomo Travaglini Change-Id: I536065a2de5faeb8ab64391f8ca2aa83fb2cc82f Reviewed-by: Richard Cooper --- M src/arch/arm/regs/misc.hh 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/arch/arm/regs/misc.hh b/src/arch/arm/regs/misc.hh index bf25ea3..69d1461 100644 --- a/src/arch/arm/regs/misc.hh +++ b/src/arch/arm/regs/misc.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2022 Arm Limited + * Copyright (c) 2010-2023 Arm Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -1231,6 +1231,12 @@ return *this; } chain +reset(uint64_t res_val) const +{ +entry._reset = res_val; +return *this; +} +chain res0(uint64_t mask) const { entry._res0 = mask; -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70458?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: I536065a2de5faeb8ab64391f8ca2aa83fb2cc82f Gerrit-Change-Number: 70458 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org
[gem5-dev] [XS] Change in gem5/gem5[develop]: arch-arm: Replace 0ing of miscRegs with assignment of reset value
Attention is currently required from: Richard Cooper. Hello Richard Cooper, I'd like you to do a code review. Please visit https://gem5-review.googlesource.com/c/public/gem5/+/70457?usp=email to review the following change. Change subject: arch-arm: Replace 0ing of miscRegs with assignment of reset value .. arch-arm: Replace 0ing of miscRegs with assignment of reset value The reset variable in the MiscRegLUTEntry class defines the per-register reset value. Rather than simply zeroing the misc registers we should assign them their reset value when clearing them. As of now the reset variable is unused so using it is functionally equivalent of calling memset. This will however change once we start using the reset field Signed-off-by: Giacomo Travaglini Change-Id: If352501738729927c1c9b300e5b0b8c27ce41b79 Reviewed-by: Richard Cooper --- M src/arch/arm/isa.cc 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index aec8243..5a0dec5 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -141,7 +141,9 @@ } SCTLR sctlr_rst = miscRegs[MISCREG_SCTLR_RST]; -memset(miscRegs, 0, sizeof(miscRegs)); +for (auto idx = 0; idx < NUM_MISCREGS; idx++) { +miscRegs[idx] = lookUpMiscReg[idx].reset(); +} initID32(p); -- To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/70457?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: public/gem5 Gerrit-Branch: develop Gerrit-Change-Id: If352501738729927c1c9b300e5b0b8c27ce41b79 Gerrit-Change-Number: 70457 Gerrit-PatchSet: 1 Gerrit-Owner: Giacomo Travaglini Gerrit-Reviewer: Richard Cooper Gerrit-Attention: Richard Cooper ___ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org