cpu.c (9719f125b803f4e0fda834cd74a60dfa4ca398e2) cpu.c (7d8c283e10dd818457e7c6a0f729fb03857253ac)
1/*
2 * QEMU ARM CPU
3 *
4 * Copyright (c) 2012 SUSE LINUX Products GmbH
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2

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

2064 */
2065 cpu->isar.id_aa64pfr1 =
2066 FIELD_DP64(cpu->isar.id_aa64pfr1, ID_AA64PFR1, MTE, 0);
2067 }
2068#endif
2069
2070 if (tcg_enabled()) {
2071 /*
1/*
2 * QEMU ARM CPU
3 *
4 * Copyright (c) 2012 SUSE LINUX Products GmbH
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2

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

2064 */
2065 cpu->isar.id_aa64pfr1 =
2066 FIELD_DP64(cpu->isar.id_aa64pfr1, ID_AA64PFR1, MTE, 0);
2067 }
2068#endif
2069
2070 if (tcg_enabled()) {
2071 /*
2072 * Don't report the Statistical Profiling Extension in the ID
2073 * registers, because TCG doesn't implement it yet (not even a
2074 * minimal stub version) and guests will fall over when they
2075 * try to access the non-existent system registers for it.
2072 * Don't report some architectural features in the ID registers
2073 * where TCG does not yet implement it (not even a minimal
2074 * stub version). This avoids guests falling over when they
2075 * try to access the non-existent system registers for them.
2076 */
2076 */
2077 /* FEAT_SPE (Statistical Profiling Extension) */
2077 cpu->isar.id_aa64dfr0 =
2078 FIELD_DP64(cpu->isar.id_aa64dfr0, ID_AA64DFR0, PMSVER, 0);
2078 cpu->isar.id_aa64dfr0 =
2079 FIELD_DP64(cpu->isar.id_aa64dfr0, ID_AA64DFR0, PMSVER, 0);
2080 /* FEAT_TRF (Self-hosted Trace Extension) */
2081 cpu->isar.id_aa64dfr0 =
2082 FIELD_DP64(cpu->isar.id_aa64dfr0, ID_AA64DFR0, TRACEFILT, 0);
2083 cpu->isar.id_dfr0 =
2084 FIELD_DP32(cpu->isar.id_dfr0, ID_DFR0, TRACEFILT, 0);
2085 /* Trace Macrocell system register access */
2086 cpu->isar.id_aa64dfr0 =
2087 FIELD_DP64(cpu->isar.id_aa64dfr0, ID_AA64DFR0, TRACEVER, 0);
2088 cpu->isar.id_dfr0 =
2089 FIELD_DP32(cpu->isar.id_dfr0, ID_DFR0, COPTRC, 0);
2090 /* Memory mapped trace */
2091 cpu->isar.id_dfr0 =
2092 FIELD_DP32(cpu->isar.id_dfr0, ID_DFR0, MMAPTRC, 0);
2093 /* FEAT_AMU (Activity Monitors Extension) */
2094 cpu->isar.id_aa64pfr0 =
2095 FIELD_DP64(cpu->isar.id_aa64pfr0, ID_AA64PFR0, AMU, 0);
2096 cpu->isar.id_pfr0 =
2097 FIELD_DP32(cpu->isar.id_pfr0, ID_PFR0, AMU, 0);
2098 /* FEAT_MPAM (Memory Partitioning and Monitoring Extension) */
2099 cpu->isar.id_aa64pfr0 =
2100 FIELD_DP64(cpu->isar.id_aa64pfr0, ID_AA64PFR0, MPAM, 0);
2101 /* FEAT_NV (Nested Virtualization) */
2102 cpu->isar.id_aa64mmfr2 =
2103 FIELD_DP64(cpu->isar.id_aa64mmfr2, ID_AA64MMFR2, NV, 0);
2079 }
2080
2081 /* MPU can be configured out of a PMSA CPU either by setting has-mpu
2082 * to false or by setting pmsav7-dregion to 0.
2083 */
2084 if (!cpu->has_mpu || cpu->pmsav7_dregion == 0) {
2085 cpu->has_mpu = false;
2086 cpu->pmsav7_dregion = 0;

--- 306 unchanged lines hidden ---
2104 }
2105
2106 /* MPU can be configured out of a PMSA CPU either by setting has-mpu
2107 * to false or by setting pmsav7-dregion to 0.
2108 */
2109 if (!cpu->has_mpu || cpu->pmsav7_dregion == 0) {
2110 cpu->has_mpu = false;
2111 cpu->pmsav7_dregion = 0;

--- 306 unchanged lines hidden ---