1
Not very much here, but several people have fallen over
1
Hi; here's a relatively small target-arm queue, pretty much all
2
the vector operation segfault bug, so let's get the fix
2
bug fixes. (There are a few non-arm patches that I've thrown in
3
into master.
3
there too for my convenience :-))
4
4
5
thanks
5
thanks
6
-- PMM
6
-- PMM
7
7
8
The following changes since commit d418238dca7b4e0b124135827ead3076233052b1:
8
The following changes since commit 278238505d28d292927bff7683f39fb4fbca7fd1:
9
9
10
Merge remote-tracking branch 'remotes/rth/tags/pull-rng-20190522' into staging (2019-05-23 12:57:17 +0100)
10
Merge tag 'pull-tcg-20230511-2' of https://gitlab.com/rth7680/qemu into staging (2023-05-11 11:44:23 +0100)
11
11
12
are available in the Git repository at:
12
are available in the Git repository at:
13
13
14
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20190523
14
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20230512
15
15
16
for you to fetch changes up to 98e4f4fdb8ea05d840f51f47125924c2bb9df2df:
16
for you to fetch changes up to 478dccbb99db0bf8f00537dd0b4d0de88d5cb537:
17
17
18
hw/arm/exynos4210: QOM'ify the Exynos4210 SoC (2019-05-23 14:47:44 +0100)
18
target/arm: Correct AArch64.S2MinTxSZ 32-bit EL1 input size check (2023-05-12 16:01:25 +0100)
19
19
20
----------------------------------------------------------------
20
----------------------------------------------------------------
21
target-arm queue:
21
target-arm queue:
22
* exynos4210: QOM'ify the Exynos4210 SoC
22
* More refactoring of files into tcg/
23
* exynos4210: Add DMA support for the Exynos4210
23
* Don't allow stage 2 page table walks to downgrade to NS
24
* arm_gicv3: Fix writes to ICC_CTLR_EL3
24
* Fix handling of SW and NSW bits for stage 2 walks
25
* arm_gicv3: Fix write of ICH_VMCR_EL2.{VBPR0, VBPR1}
25
* MAINTAINERS: Update Akihiko Odaki's email address
26
* target/arm: Fix vector operation segfault
26
* ui: Fix pixel colour channel order for PNG screenshots
27
* target/arm: Minor improvements to BFXIL, EXTR
27
* docs: Remove unused weirdly-named cross-reference targets
28
* hw/mips/malta: Fix minor dead code issue
29
* Fixes for the "allow CONFIG_TCG=n" changes
30
* tests/qtest: Don't run cdrom boot tests if no accelerator is present
31
* target/arm: Correct AArch64.S2MinTxSZ 32-bit EL1 input size check
28
32
29
----------------------------------------------------------------
33
----------------------------------------------------------------
30
Alistair Francis (1):
34
Akihiko Odaki (1):
31
target/arm: Fix vector operation segfault
35
MAINTAINERS: Update Akihiko Odaki's email address
32
36
33
Guenter Roeck (1):
37
Fabiano Rosas (3):
34
hw/arm/exynos4210: Add DMA support for the Exynos4210
38
target/arm: Select SEMIHOSTING when using TCG
39
target/arm: Select CONFIG_ARM_V7M when TCG is enabled
40
tests/qtest: Don't run cdrom boot tests if no accelerator is present
35
41
36
Peter Maydell (5):
42
Peter Maydell (6):
37
arm: Move system_clock_scale to armv7m_systick.h
43
target/arm: Don't allow stage 2 page table walks to downgrade to NS
38
arm: Remove unnecessary includes of hw/arm/arm.h
44
target/arm: Fix handling of SW and NSW bits for stage 2 walks
39
arm: Rename hw/arm/arm.h to hw/arm/boot.h
45
ui: Fix pixel colour channel order for PNG screenshots
40
hw/intc/arm_gicv3: Fix write of ICH_VMCR_EL2.{VBPR0, VBPR1}
46
docs: Remove unused weirdly-named cross-reference targets
41
hw/intc/arm_gicv3: Fix writes to ICC_CTLR_EL3
47
hw/mips/malta: Fix minor dead code issue
42
48
target/arm: Correct AArch64.S2MinTxSZ 32-bit EL1 input size check
43
Philippe Mathieu-Daudé (3):
44
hw/arm/exynos4: Remove unuseful debug code
45
hw/arm/exynos4: Use the IEC binary prefix definitions
46
hw/arm/exynos4210: QOM'ify the Exynos4210 SoC
47
49
48
Richard Henderson (2):
50
Richard Henderson (2):
49
target/arm: Use extract2 for EXTR
51
target/arm: Move translate-a32.h, arm_ldst.h, sve_ldst_internal.h to tcg/
50
target/arm: Simplify BFXIL expansion
52
target/arm: Move helper-{a64,mve,sme,sve}.h to tcg/
51
53
52
include/hw/arm/allwinner-a10.h | 2 +-
54
MAINTAINERS | 4 +-
53
include/hw/arm/aspeed_soc.h | 1 -
55
docs/system/devices/igb.rst | 2 +-
54
include/hw/arm/bcm2836.h | 1 -
56
docs/system/devices/ivshmem.rst | 2 -
55
include/hw/arm/{arm.h => boot.h} | 12 +++------
57
docs/system/devices/net.rst | 2 +-
56
include/hw/arm/exynos4210.h | 9 +++++--
58
docs/system/devices/usb.rst | 2 -
57
include/hw/arm/fsl-imx25.h | 2 +-
59
docs/system/keys.rst | 2 +-
58
include/hw/arm/fsl-imx31.h | 2 +-
60
docs/system/linuxboot.rst | 2 +-
59
include/hw/arm/fsl-imx6.h | 2 +-
61
docs/system/target-i386.rst | 4 --
60
include/hw/arm/fsl-imx6ul.h | 2 +-
62
target/arm/helper.h | 8 +--
61
include/hw/arm/fsl-imx7.h | 2 +-
63
target/arm/internals.h | 12 +++-
62
include/hw/arm/virt.h | 2 +-
64
target/arm/{ => tcg}/arm_ldst.h | 0
63
include/hw/arm/xlnx-versal.h | 2 +-
65
target/arm/{ => tcg}/helper-a64.h | 0
64
include/hw/arm/xlnx-zynqmp.h | 2 +-
66
target/arm/{ => tcg}/helper-mve.h | 0
65
include/hw/timer/armv7m_systick.h | 22 ++++++++++++++++
67
target/arm/{ => tcg}/helper-sme.h | 0
66
hw/arm/armsse.c | 2 +-
68
target/arm/{ => tcg}/helper-sve.h | 0
67
hw/arm/armv7m.c | 2 +-
69
target/arm/{ => tcg}/sve_ldst_internal.h | 0
68
hw/arm/aspeed.c | 2 +-
70
target/arm/{ => tcg}/translate-a32.h | 0
69
hw/arm/boot.c | 2 +-
71
hw/mips/malta.c | 5 +-
70
hw/arm/collie.c | 2 +-
72
target/arm/gdbstub64.c | 2 +-
71
hw/arm/exynos4210.c | 54 ++++++++++++++++++++++++++++++++++++---
73
target/arm/helper.c | 15 ++++-
72
hw/arm/exynos4_boards.c | 40 ++++++++---------------------
74
target/arm/ptw.c | 95 +++++++++++++++++++-------------
73
hw/arm/highbank.c | 2 +-
75
target/arm/tcg/pauth_helper.c | 6 +-
74
hw/arm/integratorcp.c | 2 +-
76
tests/qtest/cdrom-test.c | 10 ++++
75
hw/arm/mainstone.c | 2 +-
77
ui/console.c | 4 +-
76
hw/arm/microbit.c | 2 +-
78
target/arm/Kconfig | 9 +--
77
hw/arm/mps2-tz.c | 2 +-
79
25 files changed, 109 insertions(+), 77 deletions(-)
78
hw/arm/mps2.c | 2 +-
80
rename target/arm/{ => tcg}/arm_ldst.h (100%)
79
hw/arm/msf2-soc.c | 1 -
81
rename target/arm/{ => tcg}/helper-a64.h (100%)
80
hw/arm/msf2-som.c | 2 +-
82
rename target/arm/{ => tcg}/helper-mve.h (100%)
81
hw/arm/musca.c | 2 +-
83
rename target/arm/{ => tcg}/helper-sme.h (100%)
82
hw/arm/musicpal.c | 2 +-
84
rename target/arm/{ => tcg}/helper-sve.h (100%)
83
hw/arm/netduino2.c | 2 +-
85
rename target/arm/{ => tcg}/sve_ldst_internal.h (100%)
84
hw/arm/nrf51_soc.c | 2 +-
86
rename target/arm/{ => tcg}/translate-a32.h (100%)
85
hw/arm/nseries.c | 2 +-
86
hw/arm/omap1.c | 2 +-
87
hw/arm/omap2.c | 2 +-
88
hw/arm/omap_sx1.c | 2 +-
89
hw/arm/palm.c | 2 +-
90
hw/arm/raspi.c | 2 +-
91
hw/arm/realview.c | 2 +-
92
hw/arm/spitz.c | 2 +-
93
hw/arm/stellaris.c | 2 +-
94
hw/arm/stm32f205_soc.c | 2 +-
95
hw/arm/strongarm.c | 2 +-
96
hw/arm/tosa.c | 2 +-
97
hw/arm/versatilepb.c | 2 +-
98
hw/arm/vexpress.c | 2 +-
99
hw/arm/virt.c | 2 +-
100
hw/arm/xilinx_zynq.c | 2 +-
101
hw/arm/xlnx-versal.c | 2 +-
102
hw/arm/z2.c | 2 +-
103
hw/intc/arm_gicv3_cpuif.c | 6 ++---
104
hw/intc/armv7m_nvic.c | 1 -
105
target/arm/arm-semi.c | 1 -
106
target/arm/cpu.c | 1 -
107
target/arm/cpu64.c | 1 -
108
target/arm/kvm.c | 1 -
109
target/arm/kvm32.c | 1 -
110
target/arm/kvm64.c | 1 -
111
target/arm/translate-a64.c | 44 ++++++++++++++++---------------
112
target/arm/translate.c | 4 +--
113
61 files changed, 164 insertions(+), 123 deletions(-)
114
rename include/hw/arm/{arm.h => boot.h} (96%)
115
diff view generated by jsdifflib
1
From: Richard Henderson <richard.henderson@linaro.org>
1
From: Richard Henderson <richard.henderson@linaro.org>
2
2
3
The mask implied by the extract is redundant with the one
3
These files got missed when populating tcg/.
4
implied by the deposit. Also, fix spelling of BFXIL.
4
Because they are included with "", no change to the users required.
5
5
6
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
7
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
Message-id: 20190514011129.11330-3-richard.henderson@linaro.org
7
Reviewed-by: Fabiano Rosas <farosas@suse.de>
8
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
9
Message-id: 20230504110412.1892411-2-richard.henderson@linaro.org
9
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
---
11
---
11
target/arm/translate-a64.c | 6 +++---
12
target/arm/{ => tcg}/arm_ldst.h | 0
12
1 file changed, 3 insertions(+), 3 deletions(-)
13
target/arm/{ => tcg}/sve_ldst_internal.h | 0
14
target/arm/{ => tcg}/translate-a32.h | 0
15
3 files changed, 0 insertions(+), 0 deletions(-)
16
rename target/arm/{ => tcg}/arm_ldst.h (100%)
17
rename target/arm/{ => tcg}/sve_ldst_internal.h (100%)
18
rename target/arm/{ => tcg}/translate-a32.h (100%)
13
19
14
diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
20
diff --git a/target/arm/arm_ldst.h b/target/arm/tcg/arm_ldst.h
15
index XXXXXXX..XXXXXXX 100644
21
similarity index 100%
16
--- a/target/arm/translate-a64.c
22
rename from target/arm/arm_ldst.h
17
+++ b/target/arm/translate-a64.c
23
rename to target/arm/tcg/arm_ldst.h
18
@@ -XXX,XX +XXX,XX @@ static void disas_bitfield(DisasContext *s, uint32_t insn)
24
diff --git a/target/arm/sve_ldst_internal.h b/target/arm/tcg/sve_ldst_internal.h
19
tcg_gen_extract_i64(tcg_rd, tcg_tmp, ri, len);
25
similarity index 100%
20
return;
26
rename from target/arm/sve_ldst_internal.h
21
}
27
rename to target/arm/tcg/sve_ldst_internal.h
22
- /* opc == 1, BXFIL fall through to deposit */
28
diff --git a/target/arm/translate-a32.h b/target/arm/tcg/translate-a32.h
23
- tcg_gen_extract_i64(tcg_tmp, tcg_tmp, ri, len);
29
similarity index 100%
24
+ /* opc == 1, BFXIL fall through to deposit */
30
rename from target/arm/translate-a32.h
25
+ tcg_gen_shri_i64(tcg_tmp, tcg_tmp, ri);
31
rename to target/arm/tcg/translate-a32.h
26
pos = 0;
27
} else {
28
/* Handle the ri > si case with a deposit
29
@@ -XXX,XX +XXX,XX @@ static void disas_bitfield(DisasContext *s, uint32_t insn)
30
len = ri;
31
}
32
33
- if (opc == 1) { /* BFM, BXFIL */
34
+ if (opc == 1) { /* BFM, BFXIL */
35
tcg_gen_deposit_i64(tcg_rd, tcg_rd, tcg_tmp, pos, len);
36
} else {
37
/* SBFM or UBFM: We start with zero, and we haven't modified
38
--
32
--
39
2.20.1
33
2.34.1
40
34
41
35
diff view generated by jsdifflib
1
From: Richard Henderson <richard.henderson@linaro.org>
1
From: Richard Henderson <richard.henderson@linaro.org>
2
2
3
This is, after all, how we implement extract2 in tcg/aarch64.
3
While we cannot move the main "helper.h" out of target/arm/,
4
due to usage by generic code, we can move the sub-includes.
4
5
5
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-id: 20190514011129.11330-2-richard.henderson@linaro.org
7
Reviewed-by: Fabiano Rosas <farosas@suse.de>
8
Message-id: 20230504110412.1892411-3-richard.henderson@linaro.org
9
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
8
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
9
---
11
---
10
target/arm/translate-a64.c | 38 ++++++++++++++++++++------------------
12
target/arm/helper.h | 8 ++++----
11
1 file changed, 20 insertions(+), 18 deletions(-)
13
target/arm/{ => tcg}/helper-a64.h | 0
14
target/arm/{ => tcg}/helper-mve.h | 0
15
target/arm/{ => tcg}/helper-sme.h | 0
16
target/arm/{ => tcg}/helper-sve.h | 0
17
5 files changed, 4 insertions(+), 4 deletions(-)
18
rename target/arm/{ => tcg}/helper-a64.h (100%)
19
rename target/arm/{ => tcg}/helper-mve.h (100%)
20
rename target/arm/{ => tcg}/helper-sme.h (100%)
21
rename target/arm/{ => tcg}/helper-sve.h (100%)
12
22
13
diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
23
diff --git a/target/arm/helper.h b/target/arm/helper.h
14
index XXXXXXX..XXXXXXX 100644
24
index XXXXXXX..XXXXXXX 100644
15
--- a/target/arm/translate-a64.c
25
--- a/target/arm/helper.h
16
+++ b/target/arm/translate-a64.c
26
+++ b/target/arm/helper.h
17
@@ -XXX,XX +XXX,XX @@ static void disas_extract(DisasContext *s, uint32_t insn)
27
@@ -XXX,XX +XXX,XX @@ DEF_HELPER_FLAGS_5(gvec_uclamp_d, TCG_CALL_NO_RWG,
18
} else {
28
void, ptr, ptr, ptr, ptr, i32)
19
tcg_gen_ext32u_i64(tcg_rd, cpu_reg(s, rm));
29
20
}
30
#ifdef TARGET_AARCH64
21
- } else if (rm == rn) { /* ROR */
31
-#include "helper-a64.h"
22
- tcg_rm = cpu_reg(s, rm);
32
-#include "helper-sve.h"
23
- if (sf) {
33
-#include "helper-sme.h"
24
- tcg_gen_rotri_i64(tcg_rd, tcg_rm, imm);
34
+#include "tcg/helper-a64.h"
25
- } else {
35
+#include "tcg/helper-sve.h"
26
- TCGv_i32 tmp = tcg_temp_new_i32();
36
+#include "tcg/helper-sme.h"
27
- tcg_gen_extrl_i64_i32(tmp, tcg_rm);
37
#endif
28
- tcg_gen_rotri_i32(tmp, tmp, imm);
38
29
- tcg_gen_extu_i32_i64(tcg_rd, tmp);
39
-#include "helper-mve.h"
30
- tcg_temp_free_i32(tmp);
40
+#include "tcg/helper-mve.h"
31
- }
41
diff --git a/target/arm/helper-a64.h b/target/arm/tcg/helper-a64.h
32
} else {
42
similarity index 100%
33
- tcg_rm = read_cpu_reg(s, rm, sf);
43
rename from target/arm/helper-a64.h
34
- tcg_rn = read_cpu_reg(s, rn, sf);
44
rename to target/arm/tcg/helper-a64.h
35
- tcg_gen_shri_i64(tcg_rm, tcg_rm, imm);
45
diff --git a/target/arm/helper-mve.h b/target/arm/tcg/helper-mve.h
36
- tcg_gen_shli_i64(tcg_rn, tcg_rn, bitsize - imm);
46
similarity index 100%
37
- tcg_gen_or_i64(tcg_rd, tcg_rm, tcg_rn);
47
rename from target/arm/helper-mve.h
38
- if (!sf) {
48
rename to target/arm/tcg/helper-mve.h
39
- tcg_gen_ext32u_i64(tcg_rd, tcg_rd);
49
diff --git a/target/arm/helper-sme.h b/target/arm/tcg/helper-sme.h
40
+ tcg_rm = cpu_reg(s, rm);
50
similarity index 100%
41
+ tcg_rn = cpu_reg(s, rn);
51
rename from target/arm/helper-sme.h
42
+
52
rename to target/arm/tcg/helper-sme.h
43
+ if (sf) {
53
diff --git a/target/arm/helper-sve.h b/target/arm/tcg/helper-sve.h
44
+ /* Specialization to ROR happens in EXTRACT2. */
54
similarity index 100%
45
+ tcg_gen_extract2_i64(tcg_rd, tcg_rm, tcg_rn, imm);
55
rename from target/arm/helper-sve.h
46
+ } else {
56
rename to target/arm/tcg/helper-sve.h
47
+ TCGv_i32 t0 = tcg_temp_new_i32();
48
+
49
+ tcg_gen_extrl_i64_i32(t0, tcg_rm);
50
+ if (rm == rn) {
51
+ tcg_gen_rotri_i32(t0, t0, imm);
52
+ } else {
53
+ TCGv_i32 t1 = tcg_temp_new_i32();
54
+ tcg_gen_extrl_i64_i32(t1, tcg_rn);
55
+ tcg_gen_extract2_i32(t0, t0, t1, imm);
56
+ tcg_temp_free_i32(t1);
57
+ }
58
+ tcg_gen_extu_i32_i64(tcg_rd, t0);
59
+ tcg_temp_free_i32(t0);
60
}
61
}
62
}
63
--
57
--
64
2.20.1
58
2.34.1
65
59
66
60
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@redhat.com>
1
Bit 63 in a Table descriptor is only the NSTable bit for stage 1
2
translations; in stage 2 it is RES0. We were incorrectly looking at
3
it all the time.
2
4
3
It eases code review, unit is explicit.
5
This causes problems if:
6
* the stage 2 table descriptor was incorrectly setting the RES0 bit
7
* we are doing a stage 2 translation in Secure address space for
8
a NonSecure stage 1 regime -- in this case we would incorrectly
9
do an immediate downgrade to NonSecure
4
10
5
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
11
A bug elsewhere in the code currently prevents us from getting
6
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
12
to the second situation, but when we fix that it will be possible.
7
Message-id: 20190520214342.13709-3-philmd@redhat.com
13
14
Cc: qemu-stable@nongnu.org
8
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
15
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
16
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
17
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
18
Message-id: 20230504135425.2748672-2-peter.maydell@linaro.org
9
---
19
---
10
hw/arm/exynos4_boards.c | 5 +++--
20
target/arm/ptw.c | 5 +++--
11
1 file changed, 3 insertions(+), 2 deletions(-)
21
1 file changed, 3 insertions(+), 2 deletions(-)
12
22
13
diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c
23
diff --git a/target/arm/ptw.c b/target/arm/ptw.c
14
index XXXXXXX..XXXXXXX 100644
24
index XXXXXXX..XXXXXXX 100644
15
--- a/hw/arm/exynos4_boards.c
25
--- a/target/arm/ptw.c
16
+++ b/hw/arm/exynos4_boards.c
26
+++ b/target/arm/ptw.c
17
@@ -XXX,XX +XXX,XX @@
27
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Translate *ptw,
18
*/
28
descaddrmask &= ~indexmask_grainsize;
19
29
20
#include "qemu/osdep.h"
30
/*
21
+#include "qemu/units.h"
31
- * Secure accesses start with the page table in secure memory and
22
#include "qapi/error.h"
32
+ * Secure stage 1 accesses start with the page table in secure memory and
23
#include "qemu/error-report.h"
33
* can be downgraded to non-secure at any step. Non-secure accesses
24
#include "qemu-common.h"
34
* remain non-secure. We implement this by just ORing in the NSTable/NS
25
@@ -XXX,XX +XXX,XX @@ static int exynos4_board_smp_bootreg_addr[EXYNOS4_NUM_OF_BOARDS] = {
35
* bits at each step.
26
};
36
+ * Stage 2 never gets this kind of downgrade.
27
37
*/
28
static unsigned long exynos4_board_ram_size[EXYNOS4_NUM_OF_BOARDS] = {
38
tableattrs = is_secure ? 0 : (1 << 4);
29
- [EXYNOS4_BOARD_NURI] = 0x40000000,
39
30
- [EXYNOS4_BOARD_SMDKC210] = 0x40000000,
40
next_level:
31
+ [EXYNOS4_BOARD_NURI] = 1 * GiB,
41
descaddr |= (address >> (stride * (4 - level))) & indexmask;
32
+ [EXYNOS4_BOARD_SMDKC210] = 1 * GiB,
42
descaddr &= ~7ULL;
33
};
43
- nstable = extract32(tableattrs, 4, 1);
34
44
+ nstable = !regime_is_stage2(mmu_idx) && extract32(tableattrs, 4, 1);
35
static struct arm_boot_info exynos4_board_binfo = {
45
if (nstable) {
46
/*
47
* Stage2_S -> Stage2 or Phys_S -> Phys_NS
36
--
48
--
37
2.20.1
49
2.34.1
38
50
39
51
diff view generated by jsdifflib
1
The system_clock_scale global is used only by the armv7m systick
1
We currently don't correctly handle the VSTCR_EL2.SW and VTCR_EL2.NSW
2
device; move the extern declaration to the armv7m_systick.h header,
2
configuration bits. These allow configuration of whether the stage 2
3
and expand the comment to explain what it is and that it should
3
page table walks for Secure IPA and NonSecure IPA should do their
4
ideally be replaced with a different approach.
4
descriptor reads from Secure or NonSecure physical addresses. (This
5
is separate from how the translation table base address and other
6
parameters are set: an NS IPA always uses VTTBR_EL2 and VTCR_EL2
7
for its base address and walk parameters, regardless of the NSW bit,
8
and similarly for Secure.)
5
9
10
Provide a new function ptw_idx_for_stage_2() which returns the
11
MMU index to use for descriptor reads, and use it to set up
12
the .in_ptw_idx wherever we call get_phys_addr_lpae().
13
14
For a stage 2 walk, wherever we call get_phys_addr_lpae():
15
* .in_ptw_idx should be ptw_idx_for_stage_2() of the .in_mmu_idx
16
* .in_secure should be true if .in_mmu_idx is Stage2_S
17
18
This allows us to correct S1_ptw_translate() so that it consistently
19
always sets its (out_secure, out_phys) to the result it gets from the
20
S2 walk (either by calling get_phys_addr_lpae() or by TLB lookup).
21
This makes better conceptual sense because the S2 walk should return
22
us an (address space, address) tuple, not an address that we then
23
randomly assign to S or NS.
24
25
Our previous handling of SW and NSW was broken, so guest code
26
trying to use these bits to put the s2 page tables in the "other"
27
address space wouldn't work correctly.
28
29
Cc: qemu-stable@nongnu.org
30
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1600
6
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
31
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
7
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
32
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
8
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
33
Message-id: 20230504135425.2748672-3-peter.maydell@linaro.org
9
Message-id: 20190516163857.6430-2-peter.maydell@linaro.org
10
---
34
---
11
include/hw/arm/arm.h | 4 ----
35
target/arm/ptw.c | 76 ++++++++++++++++++++++++++++++++----------------
12
include/hw/timer/armv7m_systick.h | 22 ++++++++++++++++++++++
36
1 file changed, 51 insertions(+), 25 deletions(-)
13
2 files changed, 22 insertions(+), 4 deletions(-)
14
37
15
diff --git a/include/hw/arm/arm.h b/include/hw/arm/arm.h
38
diff --git a/target/arm/ptw.c b/target/arm/ptw.c
16
index XXXXXXX..XXXXXXX 100644
39
index XXXXXXX..XXXXXXX 100644
17
--- a/include/hw/arm/arm.h
40
--- a/target/arm/ptw.c
18
+++ b/include/hw/arm/arm.h
41
+++ b/target/arm/ptw.c
19
@@ -XXX,XX +XXX,XX @@ void arm_write_secure_board_setup_dummy_smc(ARMCPU *cpu,
42
@@ -XXX,XX +XXX,XX @@ ARMMMUIdx arm_stage1_mmu_idx(CPUARMState *env)
20
const struct arm_boot_info *info,
43
return stage_1_mmu_idx(arm_mmu_idx(env));
21
hwaddr mvbar_addr);
44
}
22
23
-/* Multiplication factor to convert from system clock ticks to qemu timer
24
- ticks. */
25
-extern int system_clock_scale;
26
-
27
#endif /* HW_ARM_H */
28
diff --git a/include/hw/timer/armv7m_systick.h b/include/hw/timer/armv7m_systick.h
29
index XXXXXXX..XXXXXXX 100644
30
--- a/include/hw/timer/armv7m_systick.h
31
+++ b/include/hw/timer/armv7m_systick.h
32
@@ -XXX,XX +XXX,XX @@ typedef struct SysTickState {
33
qemu_irq irq;
34
} SysTickState;
35
45
36
+/*
46
+/*
37
+ * Multiplication factor to convert from system clock ticks to qemu timer
47
+ * Return where we should do ptw loads from for a stage 2 walk.
38
+ * ticks. This should be set (by board code, usually) to a value
48
+ * This depends on whether the address we are looking up is a
39
+ * equal to NANOSECONDS_PER_SECOND / frq, where frq is the clock frequency
49
+ * Secure IPA or a NonSecure IPA, which we know from whether this is
40
+ * in Hz of the CPU.
50
+ * Stage2 or Stage2_S.
41
+ *
51
+ * If this is the Secure EL1&0 regime we need to check the NSW and SW bits.
42
+ * This value is used by the systick device when it is running in
43
+ * its "use the CPU clock" mode (ie when SYST_CSR.CLKSOURCE == 1) to
44
+ * set how fast the timer should tick.
45
+ *
46
+ * TODO: we should refactor this so that rather than using a global
47
+ * we use a device property or something similar. This is complicated
48
+ * because (a) the property would need to be plumbed through from the
49
+ * board code down through various layers to the systick device
50
+ * and (b) the property needs to be modifiable after realize, because
51
+ * the stellaris board uses this to implement the behaviour where the
52
+ * guest can reprogram the PLL registers to downclock the CPU, and the
53
+ * systick device needs to react accordingly. Possibly this should
54
+ * be deferred until we have a good API for modelling clock trees.
55
+ */
52
+ */
56
+extern int system_clock_scale;
53
+static ARMMMUIdx ptw_idx_for_stage_2(CPUARMState *env, ARMMMUIdx stage2idx)
54
+{
55
+ bool s2walk_secure;
57
+
56
+
57
+ /*
58
+ * We're OK to check the current state of the CPU here because
59
+ * (1) we always invalidate all TLBs when the SCR_EL3.NS bit changes
60
+ * (2) there's no way to do a lookup that cares about Stage 2 for a
61
+ * different security state to the current one for AArch64, and AArch32
62
+ * never has a secure EL2. (AArch32 ATS12NSO[UP][RW] allow EL3 to do
63
+ * an NS stage 1+2 lookup while the NS bit is 0.)
64
+ */
65
+ if (!arm_is_secure_below_el3(env) || !arm_el_is_aa64(env, 3)) {
66
+ return ARMMMUIdx_Phys_NS;
67
+ }
68
+ if (stage2idx == ARMMMUIdx_Stage2_S) {
69
+ s2walk_secure = !(env->cp15.vstcr_el2 & VSTCR_SW);
70
+ } else {
71
+ s2walk_secure = !(env->cp15.vtcr_el2 & VTCR_NSW);
72
+ }
73
+ return s2walk_secure ? ARMMMUIdx_Phys_S : ARMMMUIdx_Phys_NS;
74
+
75
+}
76
+
77
static bool regime_translation_big_endian(CPUARMState *env, ARMMMUIdx mmu_idx)
78
{
79
return (regime_sctlr(env, mmu_idx) & SCTLR_EE) != 0;
80
@@ -XXX,XX +XXX,XX @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw,
81
ARMMMUIdx mmu_idx = ptw->in_mmu_idx;
82
ARMMMUIdx s2_mmu_idx = ptw->in_ptw_idx;
83
uint8_t pte_attrs;
84
- bool pte_secure;
85
86
ptw->out_virt = addr;
87
88
@@ -XXX,XX +XXX,XX @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw,
89
if (regime_is_stage2(s2_mmu_idx)) {
90
S1Translate s2ptw = {
91
.in_mmu_idx = s2_mmu_idx,
92
- .in_ptw_idx = is_secure ? ARMMMUIdx_Phys_S : ARMMMUIdx_Phys_NS,
93
- .in_secure = is_secure,
94
+ .in_ptw_idx = ptw_idx_for_stage_2(env, s2_mmu_idx),
95
+ .in_secure = s2_mmu_idx == ARMMMUIdx_Stage2_S,
96
.in_debug = true,
97
};
98
GetPhysAddrResult s2 = { };
99
@@ -XXX,XX +XXX,XX @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw,
100
}
101
ptw->out_phys = s2.f.phys_addr;
102
pte_attrs = s2.cacheattrs.attrs;
103
- pte_secure = s2.f.attrs.secure;
104
+ ptw->out_secure = s2.f.attrs.secure;
105
} else {
106
/* Regime is physical. */
107
ptw->out_phys = addr;
108
pte_attrs = 0;
109
- pte_secure = is_secure;
110
+ ptw->out_secure = s2_mmu_idx == ARMMMUIdx_Phys_S;
111
}
112
ptw->out_host = NULL;
113
ptw->out_rw = false;
114
@@ -XXX,XX +XXX,XX @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw,
115
ptw->out_phys = full->phys_addr | (addr & ~TARGET_PAGE_MASK);
116
ptw->out_rw = full->prot & PAGE_WRITE;
117
pte_attrs = full->pte_attrs;
118
- pte_secure = full->attrs.secure;
119
+ ptw->out_secure = full->attrs.secure;
120
#else
121
g_assert_not_reached();
58
#endif
122
#endif
123
@@ -XXX,XX +XXX,XX @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw,
124
}
125
}
126
127
- /* Check if page table walk is to secure or non-secure PA space. */
128
- ptw->out_secure = (is_secure
129
- && !(pte_secure
130
- ? env->cp15.vstcr_el2 & VSTCR_SW
131
- : env->cp15.vtcr_el2 & VTCR_NSW));
132
ptw->out_be = regime_translation_big_endian(env, mmu_idx);
133
return true;
134
135
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_twostage(CPUARMState *env, S1Translate *ptw,
136
hwaddr ipa;
137
int s1_prot, s1_lgpgsz;
138
bool is_secure = ptw->in_secure;
139
- bool ret, ipa_secure, s2walk_secure;
140
+ bool ret, ipa_secure;
141
ARMCacheAttrs cacheattrs1;
142
bool is_el0;
143
uint64_t hcr;
144
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_twostage(CPUARMState *env, S1Translate *ptw,
145
146
ipa = result->f.phys_addr;
147
ipa_secure = result->f.attrs.secure;
148
- if (is_secure) {
149
- /* Select TCR based on the NS bit from the S1 walk. */
150
- s2walk_secure = !(ipa_secure
151
- ? env->cp15.vstcr_el2 & VSTCR_SW
152
- : env->cp15.vtcr_el2 & VTCR_NSW);
153
- } else {
154
- assert(!ipa_secure);
155
- s2walk_secure = false;
156
- }
157
158
is_el0 = ptw->in_mmu_idx == ARMMMUIdx_Stage1_E0;
159
- ptw->in_mmu_idx = s2walk_secure ? ARMMMUIdx_Stage2_S : ARMMMUIdx_Stage2;
160
- ptw->in_ptw_idx = s2walk_secure ? ARMMMUIdx_Phys_S : ARMMMUIdx_Phys_NS;
161
- ptw->in_secure = s2walk_secure;
162
+ ptw->in_mmu_idx = ipa_secure ? ARMMMUIdx_Stage2_S : ARMMMUIdx_Stage2;
163
+ ptw->in_secure = ipa_secure;
164
+ ptw->in_ptw_idx = ptw_idx_for_stage_2(env, ptw->in_mmu_idx);
165
166
/*
167
* S1 is done, now do S2 translation.
168
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_with_struct(CPUARMState *env, S1Translate *ptw,
169
ptw->in_ptw_idx = is_secure ? ARMMMUIdx_Stage2_S : ARMMMUIdx_Stage2;
170
break;
171
172
+ case ARMMMUIdx_Stage2:
173
+ case ARMMMUIdx_Stage2_S:
174
+ /*
175
+ * Second stage lookup uses physical for ptw; whether this is S or
176
+ * NS may depend on the SW/NSW bits if this is a stage 2 lookup for
177
+ * the Secure EL2&0 regime.
178
+ */
179
+ ptw->in_ptw_idx = ptw_idx_for_stage_2(env, mmu_idx);
180
+ break;
181
+
182
case ARMMMUIdx_E10_0:
183
s1_mmu_idx = ARMMMUIdx_Stage1_E0;
184
goto do_twostage;
185
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_with_struct(CPUARMState *env, S1Translate *ptw,
186
/* fall through */
187
188
default:
189
- /* Single stage and second stage uses physical for ptw. */
190
+ /* Single stage uses physical for ptw. */
191
ptw->in_ptw_idx = is_secure ? ARMMMUIdx_Phys_S : ARMMMUIdx_Phys_NS;
192
break;
193
}
59
--
194
--
60
2.20.1
195
2.34.1
61
62
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@redhat.com>
1
From: Akihiko Odaki <akihiko.odaki@gmail.com>
2
2
3
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
3
I am now employed by Daynix. Although my role as a reviewer of
4
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
4
macOS-related change is not very relevant to the employment, I decided
5
Message-id: 20190520214342.13709-5-philmd@redhat.com
5
to use the company email address to avoid confusions from different
6
addresses.
7
8
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
9
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
10
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
11
Message-id: 20230506072333.32510-1-akihiko.odaki@daynix.com
6
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
7
---
13
---
8
include/hw/arm/exynos4210.h | 9 +++++++--
14
MAINTAINERS | 4 ++--
9
hw/arm/exynos4210.c | 28 ++++++++++++++++++++++++----
15
1 file changed, 2 insertions(+), 2 deletions(-)
10
hw/arm/exynos4_boards.c | 9 ++++++---
11
3 files changed, 37 insertions(+), 9 deletions(-)
12
16
13
diff --git a/include/hw/arm/exynos4210.h b/include/hw/arm/exynos4210.h
17
diff --git a/MAINTAINERS b/MAINTAINERS
14
index XXXXXXX..XXXXXXX 100644
18
index XXXXXXX..XXXXXXX 100644
15
--- a/include/hw/arm/exynos4210.h
19
--- a/MAINTAINERS
16
+++ b/include/hw/arm/exynos4210.h
20
+++ b/MAINTAINERS
17
@@ -XXX,XX +XXX,XX @@ typedef struct Exynos4210Irq {
21
@@ -XXX,XX +XXX,XX @@ Core Audio framework backend
18
} Exynos4210Irq;
22
M: Gerd Hoffmann <kraxel@redhat.com>
19
23
M: Philippe Mathieu-Daudé <philmd@linaro.org>
20
typedef struct Exynos4210State {
24
R: Christian Schoenebeck <qemu_oss@crudebyte.com>
21
+ /*< private >*/
25
-R: Akihiko Odaki <akihiko.odaki@gmail.com>
22
+ SysBusDevice parent_obj;
26
+R: Akihiko Odaki <akihiko.odaki@daynix.com>
23
+ /*< public >*/
27
S: Odd Fixes
24
ARMCPU *cpu[EXYNOS4210_NCPUS];
28
F: audio/coreaudio.c
25
Exynos4210Irq irqs;
29
26
qemu_irq *irq_table;
30
@@ -XXX,XX +XXX,XX @@ F: docs/devel/ui.rst
27
@@ -XXX,XX +XXX,XX @@ typedef struct Exynos4210State {
31
Cocoa graphics
28
I2CBus *i2c_if[EXYNOS4210_I2C_NUMBER];
32
M: Peter Maydell <peter.maydell@linaro.org>
29
} Exynos4210State;
33
M: Philippe Mathieu-Daudé <philmd@linaro.org>
30
34
-R: Akihiko Odaki <akihiko.odaki@gmail.com>
31
+#define TYPE_EXYNOS4210_SOC "exynos4210"
35
+R: Akihiko Odaki <akihiko.odaki@daynix.com>
32
+#define EXYNOS4210_SOC(obj) \
36
S: Odd Fixes
33
+ OBJECT_CHECK(Exynos4210State, obj, TYPE_EXYNOS4210_SOC)
37
F: ui/cocoa.m
34
+
35
void exynos4210_write_secondary(ARMCPU *cpu,
36
const struct arm_boot_info *info);
37
38
-Exynos4210State *exynos4210_init(MemoryRegion *system_mem);
39
-
40
/* Initialize exynos4210 IRQ subsystem stub */
41
qemu_irq *exynos4210_init_irq(Exynos4210Irq *env);
42
43
diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
44
index XXXXXXX..XXXXXXX 100644
45
--- a/hw/arm/exynos4210.c
46
+++ b/hw/arm/exynos4210.c
47
@@ -XXX,XX +XXX,XX @@ static void pl330_create(uint32_t base, qemu_irq irq, int nreq)
48
sysbus_connect_irq(busdev, 0, irq);
49
}
50
51
-Exynos4210State *exynos4210_init(MemoryRegion *system_mem)
52
+static void exynos4210_realize(DeviceState *socdev, Error **errp)
53
{
54
- Exynos4210State *s = g_new0(Exynos4210State, 1);
55
+ Exynos4210State *s = EXYNOS4210_SOC(socdev);
56
+ MemoryRegion *system_mem = get_system_memory();
57
qemu_irq gate_irq[EXYNOS4210_NCPUS][EXYNOS4210_IRQ_GATE_NINPUTS];
58
SysBusDevice *busdev;
59
DeviceState *dev;
60
@@ -XXX,XX +XXX,XX @@ Exynos4210State *exynos4210_init(MemoryRegion *system_mem)
61
qemu_irq_invert(s->irq_table[exynos4210_get_irq(36, 1)]), 32);
62
pl330_create(EXYNOS4210_PL330_BASE2_ADDR,
63
qemu_irq_invert(s->irq_table[exynos4210_get_irq(34, 1)]), 1);
64
-
65
- return s;
66
}
67
+
68
+static void exynos4210_class_init(ObjectClass *klass, void *data)
69
+{
70
+ DeviceClass *dc = DEVICE_CLASS(klass);
71
+
72
+ dc->realize = exynos4210_realize;
73
+}
74
+
75
+static const TypeInfo exynos4210_info = {
76
+ .name = TYPE_EXYNOS4210_SOC,
77
+ .parent = TYPE_SYS_BUS_DEVICE,
78
+ .instance_size = sizeof(Exynos4210State),
79
+ .class_init = exynos4210_class_init,
80
+};
81
+
82
+static void exynos4210_register_types(void)
83
+{
84
+ type_register_static(&exynos4210_info);
85
+}
86
+
87
+type_init(exynos4210_register_types)
88
diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c
89
index XXXXXXX..XXXXXXX 100644
90
--- a/hw/arm/exynos4_boards.c
91
+++ b/hw/arm/exynos4_boards.c
92
@@ -XXX,XX +XXX,XX @@ typedef enum Exynos4BoardType {
93
} Exynos4BoardType;
94
95
typedef struct Exynos4BoardState {
96
- Exynos4210State *soc;
97
+ Exynos4210State soc;
98
MemoryRegion dram0_mem;
99
MemoryRegion dram1_mem;
100
} Exynos4BoardState;
101
@@ -XXX,XX +XXX,XX @@ exynos4_boards_init_common(MachineState *machine,
102
exynos4_boards_init_ram(s, get_system_memory(),
103
exynos4_board_ram_size[board_type]);
104
105
- s->soc = exynos4210_init(get_system_memory());
106
+ object_initialize(&s->soc, sizeof(s->soc), TYPE_EXYNOS4210_SOC);
107
+ qdev_set_parent_bus(DEVICE(&s->soc), sysbus_get_default());
108
+ object_property_set_bool(OBJECT(&s->soc), true, "realized",
109
+ &error_fatal);
110
111
return s;
112
}
113
@@ -XXX,XX +XXX,XX @@ static void smdkc210_init(MachineState *machine)
114
EXYNOS4_BOARD_SMDKC210);
115
116
lan9215_init(SMDK_LAN9118_BASE_ADDR,
117
- qemu_irq_invert(s->soc->irq_table[exynos4210_get_irq(37, 1)]));
118
+ qemu_irq_invert(s->soc.irq_table[exynos4210_get_irq(37, 1)]));
119
arm_load_kernel(ARM_CPU(first_cpu), &exynos4_board_binfo);
120
}
121
38
122
--
39
--
123
2.20.1
40
2.34.1
124
41
125
42
diff view generated by jsdifflib
1
The ICC_CTLR_EL3 register includes some bits which are aliases
1
When we take a PNG screenshot the ordering of the colour channels in
2
of bits in the ICC_CTLR_EL1(S) and (NS) registers. QEMU chooses
2
the data is not correct, resulting in the image having weird
3
to keep those bits in the cs->icc_ctlr_el1[] struct fields.
3
colouring compared to the actual display. (Specifically, on a
4
Unfortunately a missing '~' in the code to update the bits
4
little-endian host the blue and red channels are swapped; on
5
in those fields meant that writing to ICC_CTLR_EL3 would corrupt
5
big-endian everything is wrong.)
6
the ICC_CLTR_EL1 register values.
7
6
7
This happens because the pixman idea of the pixel data and the libpng
8
idea differ. PIXMAN_a8r8g8b8 defines that pixels are 32-bit values,
9
with A in bits 24-31, R in bits 16-23, G in bits 8-15 and B in bits
10
0-7. This means that on little-endian systems the bytes in memory
11
are
12
B G R A
13
and on big-endian systems they are
14
A R G B
15
16
libpng, on the other hand, thinks of pixels as being a series of
17
values for each channel, so its format PNG_COLOR_TYPE_RGB_ALPHA
18
always wants bytes in the order
19
R G B A
20
21
This isn't the same as the pixman order for either big or little
22
endian hosts.
23
24
The alpha channel is also unnecessary bulk in the output PNG file,
25
because there is no alpha information in a screenshot.
26
27
To handle the endianness issue, we already define in ui/qemu-pixman.h
28
various PIXMAN_BE_* and PIXMAN_LE_* values that give consistent
29
byte-order pixel channel formats. So we can use PIXMAN_BE_r8g8b8 and
30
PNG_COLOR_TYPE_RGB, which both have an in-memory byte order of
31
R G B
32
and 3 bytes per pixel.
33
34
(PPM format screenshots get this right; they already use the
35
PIXMAN_BE_r8g8b8 format.)
36
37
Cc: qemu-stable@nongnu.org
38
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1622
39
Fixes: 9a0a119a382867 ("Added parameter to take screenshot with screendump as PNG")
8
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
40
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
9
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
41
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
10
Message-id: 20190520162809.2677-5-peter.maydell@linaro.org
42
Message-id: 20230502135548.2451309-1-peter.maydell@linaro.org
11
---
43
---
12
hw/intc/arm_gicv3_cpuif.c | 4 ++--
44
ui/console.c | 4 ++--
13
1 file changed, 2 insertions(+), 2 deletions(-)
45
1 file changed, 2 insertions(+), 2 deletions(-)
14
46
15
diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c
47
diff --git a/ui/console.c b/ui/console.c
16
index XXXXXXX..XXXXXXX 100644
48
index XXXXXXX..XXXXXXX 100644
17
--- a/hw/intc/arm_gicv3_cpuif.c
49
--- a/ui/console.c
18
+++ b/hw/intc/arm_gicv3_cpuif.c
50
+++ b/ui/console.c
19
@@ -XXX,XX +XXX,XX @@ static void icc_ctlr_el3_write(CPUARMState *env, const ARMCPRegInfo *ri,
51
@@ -XXX,XX +XXX,XX @@ static bool png_save(int fd, pixman_image_t *image, Error **errp)
20
trace_gicv3_icc_ctlr_el3_write(gicv3_redist_affid(cs), value);
52
png_struct *png_ptr;
21
53
png_info *info_ptr;
22
/* *_EL1NS and *_EL1S bits are aliases into the ICC_CTLR_EL1 bits. */
54
g_autoptr(pixman_image_t) linebuf =
23
- cs->icc_ctlr_el1[GICV3_NS] &= (ICC_CTLR_EL1_CBPR | ICC_CTLR_EL1_EOIMODE);
55
- qemu_pixman_linebuf_create(PIXMAN_a8r8g8b8, width);
24
+ cs->icc_ctlr_el1[GICV3_NS] &= ~(ICC_CTLR_EL1_CBPR | ICC_CTLR_EL1_EOIMODE);
56
+ qemu_pixman_linebuf_create(PIXMAN_BE_r8g8b8, width);
25
if (value & ICC_CTLR_EL3_EOIMODE_EL1NS) {
57
uint8_t *buf = (uint8_t *)pixman_image_get_data(linebuf);
26
cs->icc_ctlr_el1[GICV3_NS] |= ICC_CTLR_EL1_EOIMODE;
58
FILE *f = fdopen(fd, "wb");
27
}
59
int y;
28
@@ -XXX,XX +XXX,XX @@ static void icc_ctlr_el3_write(CPUARMState *env, const ARMCPRegInfo *ri,
60
@@ -XXX,XX +XXX,XX @@ static bool png_save(int fd, pixman_image_t *image, Error **errp)
29
cs->icc_ctlr_el1[GICV3_NS] |= ICC_CTLR_EL1_CBPR;
61
png_init_io(png_ptr, f);
30
}
62
31
63
png_set_IHDR(png_ptr, info_ptr, width, height, 8,
32
- cs->icc_ctlr_el1[GICV3_S] &= (ICC_CTLR_EL1_CBPR | ICC_CTLR_EL1_EOIMODE);
64
- PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE,
33
+ cs->icc_ctlr_el1[GICV3_S] &= ~(ICC_CTLR_EL1_CBPR | ICC_CTLR_EL1_EOIMODE);
65
+ PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE,
34
if (value & ICC_CTLR_EL3_EOIMODE_EL1S) {
66
PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
35
cs->icc_ctlr_el1[GICV3_S] |= ICC_CTLR_EL1_EOIMODE;
67
36
}
68
png_write_info(png_ptr, info_ptr);
37
--
69
--
38
2.20.1
70
2.34.1
39
71
40
72
diff view generated by jsdifflib
1
The hw/arm/arm.h header now only includes declarations relating
1
In the doc sources, we have a few cross-reference targets with odd
2
to boot.c code, so it is only needed by Arm board or SoC code.
2
names "pcsys_005fxyz". These are the legacy of the semi-automated
3
Remove some unnecessary inclusions of it from target/arm files
3
conversion of the old info docs to rST (the '005f' is because ASCII
4
and from hw/intc/armv7m_nvic.c.
4
0x5f is '_' and the old info link names had underscores in them).
5
6
Remove the targets which nothing links to, and rename the two targets
7
which are used to something a bit more descriptive.
5
8
6
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
9
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
7
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
10
Message-id: 20230421163642.1151904-1-peter.maydell@linaro.org
8
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
11
Reviewed-by: Markus Armbruster <armbru@redhat.com>
9
Message-id: 20190516163857.6430-3-peter.maydell@linaro.org
10
---
12
---
11
hw/intc/armv7m_nvic.c | 1 -
13
docs/system/devices/igb.rst | 2 +-
12
target/arm/arm-semi.c | 1 -
14
docs/system/devices/ivshmem.rst | 2 --
13
target/arm/cpu.c | 1 -
15
docs/system/devices/net.rst | 2 +-
14
target/arm/cpu64.c | 1 -
16
docs/system/devices/usb.rst | 2 --
15
target/arm/kvm.c | 1 -
17
docs/system/keys.rst | 2 +-
16
target/arm/kvm32.c | 1 -
18
docs/system/linuxboot.rst | 2 +-
17
target/arm/kvm64.c | 1 -
19
docs/system/target-i386.rst | 4 ----
18
7 files changed, 7 deletions(-)
20
7 files changed, 4 insertions(+), 12 deletions(-)
19
21
20
diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c
22
diff --git a/docs/system/devices/igb.rst b/docs/system/devices/igb.rst
21
index XXXXXXX..XXXXXXX 100644
23
index XXXXXXX..XXXXXXX 100644
22
--- a/hw/intc/armv7m_nvic.c
24
--- a/docs/system/devices/igb.rst
23
+++ b/hw/intc/armv7m_nvic.c
25
+++ b/docs/system/devices/igb.rst
26
@@ -XXX,XX +XXX,XX @@ Using igb
27
=========
28
29
Using igb should be nothing different from using another network device. See
30
-:ref:`pcsys_005fnetwork` in general.
31
+:ref:`Network_emulation` in general.
32
33
However, you may also need to perform additional steps to activate SR-IOV
34
feature on your guest. For Linux, refer to [4]_.
35
diff --git a/docs/system/devices/ivshmem.rst b/docs/system/devices/ivshmem.rst
36
index XXXXXXX..XXXXXXX 100644
37
--- a/docs/system/devices/ivshmem.rst
38
+++ b/docs/system/devices/ivshmem.rst
24
@@ -XXX,XX +XXX,XX @@
39
@@ -XXX,XX +XXX,XX @@
25
#include "cpu.h"
40
-.. _pcsys_005fivshmem:
26
#include "hw/sysbus.h"
41
-
27
#include "qemu/timer.h"
42
Inter-VM Shared Memory device
28
-#include "hw/arm/arm.h"
43
-----------------------------
29
#include "hw/intc/armv7m_nvic.h"
44
30
#include "target/arm/cpu.h"
45
diff --git a/docs/system/devices/net.rst b/docs/system/devices/net.rst
31
#include "exec/exec-all.h"
32
diff --git a/target/arm/arm-semi.c b/target/arm/arm-semi.c
33
index XXXXXXX..XXXXXXX 100644
46
index XXXXXXX..XXXXXXX 100644
34
--- a/target/arm/arm-semi.c
47
--- a/docs/system/devices/net.rst
35
+++ b/target/arm/arm-semi.c
48
+++ b/docs/system/devices/net.rst
36
@@ -XXX,XX +XXX,XX @@
49
@@ -XXX,XX +XXX,XX @@
37
#else
50
-.. _pcsys_005fnetwork:
38
#include "qemu-common.h"
51
+.. _Network_Emulation:
39
#include "exec/gdbstub.h"
52
40
-#include "hw/arm/arm.h"
53
Network emulation
41
#include "qemu/cutils.h"
54
-----------------
42
#endif
55
diff --git a/docs/system/devices/usb.rst b/docs/system/devices/usb.rst
43
44
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
45
index XXXXXXX..XXXXXXX 100644
56
index XXXXXXX..XXXXXXX 100644
46
--- a/target/arm/cpu.c
57
--- a/docs/system/devices/usb.rst
47
+++ b/target/arm/cpu.c
58
+++ b/docs/system/devices/usb.rst
48
@@ -XXX,XX +XXX,XX @@
59
@@ -XXX,XX +XXX,XX @@
49
#if !defined(CONFIG_USER_ONLY)
60
-.. _pcsys_005fusb:
50
#include "hw/loader.h"
61
-
51
#endif
62
USB emulation
52
-#include "hw/arm/arm.h"
63
-------------
53
#include "sysemu/sysemu.h"
64
54
#include "sysemu/hw_accel.h"
65
diff --git a/docs/system/keys.rst b/docs/system/keys.rst
55
#include "kvm_arm.h"
56
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
57
index XXXXXXX..XXXXXXX 100644
66
index XXXXXXX..XXXXXXX 100644
58
--- a/target/arm/cpu64.c
67
--- a/docs/system/keys.rst
59
+++ b/target/arm/cpu64.c
68
+++ b/docs/system/keys.rst
60
@@ -XXX,XX +XXX,XX @@
69
@@ -XXX,XX +XXX,XX @@
61
#if !defined(CONFIG_USER_ONLY)
70
-.. _pcsys_005fkeys:
62
#include "hw/loader.h"
71
+.. _GUI_keys:
63
#endif
72
64
-#include "hw/arm/arm.h"
73
Keys in the graphical frontends
65
#include "sysemu/sysemu.h"
74
-------------------------------
66
#include "sysemu/kvm.h"
75
diff --git a/docs/system/linuxboot.rst b/docs/system/linuxboot.rst
67
#include "kvm_arm.h"
68
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
69
index XXXXXXX..XXXXXXX 100644
76
index XXXXXXX..XXXXXXX 100644
70
--- a/target/arm/kvm.c
77
--- a/docs/system/linuxboot.rst
71
+++ b/target/arm/kvm.c
78
+++ b/docs/system/linuxboot.rst
79
@@ -XXX,XX +XXX,XX @@ virtual serial port and the QEMU monitor to the console with the
80
-append "root=/dev/hda console=ttyS0" -nographic
81
82
Use Ctrl-a c to switch between the serial console and the monitor (see
83
-:ref:`pcsys_005fkeys`).
84
+:ref:`GUI_keys`).
85
diff --git a/docs/system/target-i386.rst b/docs/system/target-i386.rst
86
index XXXXXXX..XXXXXXX 100644
87
--- a/docs/system/target-i386.rst
88
+++ b/docs/system/target-i386.rst
72
@@ -XXX,XX +XXX,XX @@
89
@@ -XXX,XX +XXX,XX @@
73
#include "cpu.h"
90
x86 System emulator
74
#include "trace.h"
91
-------------------
75
#include "internals.h"
92
76
-#include "hw/arm/arm.h"
93
-.. _pcsys_005fdevices:
77
#include "hw/pci/pci.h"
94
-
78
#include "exec/memattrs.h"
95
Board-specific documentation
79
#include "exec/address-spaces.h"
96
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
80
diff --git a/target/arm/kvm32.c b/target/arm/kvm32.c
97
81
index XXXXXXX..XXXXXXX 100644
98
@@ -XXX,XX +XXX,XX @@ Architectural features
82
--- a/target/arm/kvm32.c
99
i386/sgx
83
+++ b/target/arm/kvm32.c
100
i386/amd-memory-encryption
84
@@ -XXX,XX +XXX,XX @@
101
85
#include "sysemu/kvm.h"
102
-.. _pcsys_005freq:
86
#include "kvm_arm.h"
103
-
87
#include "internals.h"
104
OS requirements
88
-#include "hw/arm/arm.h"
105
~~~~~~~~~~~~~~~
89
#include "qemu/log.h"
90
91
static inline void set_feature(uint64_t *features, int feature)
92
diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c
93
index XXXXXXX..XXXXXXX 100644
94
--- a/target/arm/kvm64.c
95
+++ b/target/arm/kvm64.c
96
@@ -XXX,XX +XXX,XX @@
97
#include "sysemu/kvm.h"
98
#include "kvm_arm.h"
99
#include "internals.h"
100
-#include "hw/arm/arm.h"
101
102
static bool have_guest_debug;
103
106
104
--
107
--
105
2.20.1
108
2.34.1
106
107
diff view generated by jsdifflib
1
In ich_vmcr_write() we enforce "writes of BPR fields to less than
1
Coverity points out (in CID 1508390) that write_bootloader has
2
their minimum sets them to the minimum" by doing a "read vbpr and
2
some dead code, where we assign to 'p' and then in the following
3
write it back" operation. A typo here meant that we weren't handling
3
line assign to it again. This happened as a result of the
4
writes to these fields correctly, because we were reading from VBPR0
4
refactoring in commit cd5066f8618b.
5
but writing to VBPR1.
5
6
Fix the dead code by removing the 'void *v' variable entirely and
7
instead adding a cast when calling bl_setup_gt64120_jump_kernel(), as
8
we do at its other callsite in write_bootloader_nanomips().
6
9
7
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
8
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
11
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
9
Message-id: 20190520162809.2677-4-peter.maydell@linaro.org
10
---
12
---
11
hw/intc/arm_gicv3_cpuif.c | 2 +-
13
hw/mips/malta.c | 5 +----
12
1 file changed, 1 insertion(+), 1 deletion(-)
14
1 file changed, 1 insertion(+), 4 deletions(-)
13
15
14
diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c
16
diff --git a/hw/mips/malta.c b/hw/mips/malta.c
15
index XXXXXXX..XXXXXXX 100644
17
index XXXXXXX..XXXXXXX 100644
16
--- a/hw/intc/arm_gicv3_cpuif.c
18
--- a/hw/mips/malta.c
17
+++ b/hw/intc/arm_gicv3_cpuif.c
19
+++ b/hw/mips/malta.c
18
@@ -XXX,XX +XXX,XX @@ static void ich_vmcr_write(CPUARMState *env, const ARMCPRegInfo *ri,
20
@@ -XXX,XX +XXX,XX @@ static void write_bootloader(uint8_t *base, uint64_t run_addr,
19
/* Enforce "writing BPRs to less than minimum sets them to the minimum"
21
uint64_t kernel_entry)
20
* by reading and writing back the fields.
22
{
23
uint32_t *p;
24
- void *v;
25
26
/* Small bootloader */
27
p = (uint32_t *)base;
28
@@ -XXX,XX +XXX,XX @@ static void write_bootloader(uint8_t *base, uint64_t run_addr,
29
*
21
*/
30
*/
22
- write_vbpr(cs, GICV3_G1, read_vbpr(cs, GICV3_G0));
31
23
+ write_vbpr(cs, GICV3_G0, read_vbpr(cs, GICV3_G0));
32
- v = p;
24
write_vbpr(cs, GICV3_G1, read_vbpr(cs, GICV3_G1));
33
- bl_setup_gt64120_jump_kernel(&v, run_addr, kernel_entry);
25
34
- p = v;
26
gicv3_cpuif_virt_update(cs);
35
+ bl_setup_gt64120_jump_kernel((void **)&p, run_addr, kernel_entry);
36
37
/* YAMON subroutines */
38
p = (uint32_t *) (base + 0x800);
27
--
39
--
28
2.20.1
40
2.34.1
29
41
30
42
diff view generated by jsdifflib
1
From: Guenter Roeck <linux@roeck-us.net>
1
From: Fabiano Rosas <farosas@suse.de>
2
2
3
QEMU already supports pl330. Instantiate it for Exynos4210.
3
Semihosting has been made a 'default y' entry in Kconfig, which does
4
not work because when building --without-default-devices, the
5
semihosting code would not be available.
4
6
5
Relevant part of Linux arch/arm/boot/dts/exynos4.dtsi:
7
Make semihosting unconditional when TCG is present.
6
8
7
/ {
9
Fixes: 29d9efca16 ("arm/Kconfig: Do not build TCG-only boards on a KVM-only build")
8
soc: soc {
10
Signed-off-by: Fabiano Rosas <farosas@suse.de>
9
amba {
11
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
10
pdma0: pdma@12680000 {
12
Message-id: 20230508181611.2621-2-farosas@suse.de
11
compatible = "arm,pl330", "arm,primecell";
12
reg = <0x12680000 0x1000>;
13
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
14
clocks = <&clock CLK_PDMA0>;
15
clock-names = "apb_pclk";
16
#dma-cells = <1>;
17
#dma-channels = <8>;
18
#dma-requests = <32>;
19
};
20
pdma1: pdma@12690000 {
21
compatible = "arm,pl330", "arm,primecell";
22
reg = <0x12690000 0x1000>;
23
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
24
clocks = <&clock CLK_PDMA1>;
25
clock-names = "apb_pclk";
26
#dma-cells = <1>;
27
#dma-channels = <8>;
28
#dma-requests = <32>;
29
};
30
mdma1: mdma@12850000 {
31
compatible = "arm,pl330", "arm,primecell";
32
reg = <0x12850000 0x1000>;
33
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
34
clocks = <&clock CLK_MDMA>;
35
clock-names = "apb_pclk";
36
#dma-cells = <1>;
37
#dma-channels = <8>;
38
#dma-requests = <1>;
39
};
40
};
41
};
42
};
43
44
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
45
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
46
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
47
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
48
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
49
Message-id: 20190520214342.13709-4-philmd@redhat.com
50
[PMD: Do not set default qdev properties, create the controllers in the SoC
51
rather than the board (Peter Maydell), add dtsi in commit message]
52
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
53
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
54
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
55
---
14
---
56
hw/arm/exynos4210.c | 26 ++++++++++++++++++++++++++
15
target/arm/Kconfig | 8 +-------
57
1 file changed, 26 insertions(+)
16
1 file changed, 1 insertion(+), 7 deletions(-)
58
17
59
diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
18
diff --git a/target/arm/Kconfig b/target/arm/Kconfig
60
index XXXXXXX..XXXXXXX 100644
19
index XXXXXXX..XXXXXXX 100644
61
--- a/hw/arm/exynos4210.c
20
--- a/target/arm/Kconfig
62
+++ b/hw/arm/exynos4210.c
21
+++ b/target/arm/Kconfig
63
@@ -XXX,XX +XXX,XX @@
22
@@ -XXX,XX +XXX,XX @@
64
/* EHCI */
23
config ARM
65
#define EXYNOS4210_EHCI_BASE_ADDR 0x12580000
24
bool
66
25
+ select ARM_COMPATIBLE_SEMIHOSTING if TCG
67
+/* DMA */
26
68
+#define EXYNOS4210_PL330_BASE0_ADDR 0x12680000
27
config AARCH64
69
+#define EXYNOS4210_PL330_BASE1_ADDR 0x12690000
28
bool
70
+#define EXYNOS4210_PL330_BASE2_ADDR 0x12850000
29
select ARM
71
+
30
-
72
static uint8_t chipid_and_omr[] = { 0x11, 0x02, 0x21, 0x43,
31
-# This config exists just so we can make SEMIHOSTING default when TCG
73
0x09, 0x00, 0x00, 0x00 };
32
-# is selected without also changing it for other architectures.
74
33
-config ARM_SEMIHOSTING
75
@@ -XXX,XX +XXX,XX @@ static uint64_t exynos4210_calc_affinity(int cpu)
34
- bool
76
return (0x9 << ARM_AFF1_SHIFT) | cpu;
35
- default y if TCG && ARM
77
}
36
- select ARM_COMPATIBLE_SEMIHOSTING
78
79
+static void pl330_create(uint32_t base, qemu_irq irq, int nreq)
80
+{
81
+ SysBusDevice *busdev;
82
+ DeviceState *dev;
83
+
84
+ dev = qdev_create(NULL, "pl330");
85
+ qdev_prop_set_uint8(dev, "num_periph_req", nreq);
86
+ qdev_init_nofail(dev);
87
+ busdev = SYS_BUS_DEVICE(dev);
88
+ sysbus_mmio_map(busdev, 0, base);
89
+ sysbus_connect_irq(busdev, 0, irq);
90
+}
91
+
92
Exynos4210State *exynos4210_init(MemoryRegion *system_mem)
93
{
94
Exynos4210State *s = g_new0(Exynos4210State, 1);
95
@@ -XXX,XX +XXX,XX @@ Exynos4210State *exynos4210_init(MemoryRegion *system_mem)
96
sysbus_create_simple(TYPE_EXYNOS4210_EHCI, EXYNOS4210_EHCI_BASE_ADDR,
97
s->irq_table[exynos4210_get_irq(28, 3)]);
98
99
+ /*** DMA controllers ***/
100
+ pl330_create(EXYNOS4210_PL330_BASE0_ADDR,
101
+ qemu_irq_invert(s->irq_table[exynos4210_get_irq(35, 1)]), 32);
102
+ pl330_create(EXYNOS4210_PL330_BASE1_ADDR,
103
+ qemu_irq_invert(s->irq_table[exynos4210_get_irq(36, 1)]), 32);
104
+ pl330_create(EXYNOS4210_PL330_BASE2_ADDR,
105
+ qemu_irq_invert(s->irq_table[exynos4210_get_irq(34, 1)]), 1);
106
+
107
return s;
108
}
109
--
37
--
110
2.20.1
38
2.34.1
111
112
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <philmd@redhat.com>
1
From: Fabiano Rosas <farosas@suse.de>
2
2
3
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
3
We cannot allow this config to be disabled at the moment as not all of
4
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
4
the relevant code is protected by it.
5
Message-id: 20190520214342.13709-2-philmd@redhat.com
5
6
Commit 29d9efca16 ("arm/Kconfig: Do not build TCG-only boards on a
7
KVM-only build") moved the CONFIGs of several boards to Kconfig, so it
8
is now possible that nothing selects ARM_V7M (e.g. when doing a
9
--without-default-devices build).
10
11
Return the CONFIG_ARM_V7M entry to a state where it is always selected
12
whenever TCG is available.
13
14
Fixes: 29d9efca16 ("arm/Kconfig: Do not build TCG-only boards on a KVM-only build")
15
Signed-off-by: Fabiano Rosas <farosas@suse.de>
16
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
17
Message-id: 20230508181611.2621-3-farosas@suse.de
6
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
18
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
7
---
19
---
8
hw/arm/exynos4_boards.c | 24 ------------------------
20
target/arm/Kconfig | 1 +
9
1 file changed, 24 deletions(-)
21
1 file changed, 1 insertion(+)
10
22
11
diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c
23
diff --git a/target/arm/Kconfig b/target/arm/Kconfig
12
index XXXXXXX..XXXXXXX 100644
24
index XXXXXXX..XXXXXXX 100644
13
--- a/hw/arm/exynos4_boards.c
25
--- a/target/arm/Kconfig
14
+++ b/hw/arm/exynos4_boards.c
26
+++ b/target/arm/Kconfig
15
@@ -XXX,XX +XXX,XX @@
27
@@ -XXX,XX +XXX,XX @@
16
#include "hw/net/lan9118.h"
28
config ARM
17
#include "hw/boards.h"
29
bool
18
30
select ARM_COMPATIBLE_SEMIHOSTING if TCG
19
-#undef DEBUG
31
+ select ARM_V7M if TCG
20
-
32
21
-//#define DEBUG
33
config AARCH64
22
-
34
bool
23
-#ifdef DEBUG
24
- #undef PRINT_DEBUG
25
- #define PRINT_DEBUG(fmt, args...) \
26
- do { \
27
- fprintf(stderr, " [%s:%d] "fmt, __func__, __LINE__, ##args); \
28
- } while (0)
29
-#else
30
- #define PRINT_DEBUG(fmt, args...) do {} while (0)
31
-#endif
32
-
33
#define SMDK_LAN9118_BASE_ADDR 0x05000000
34
35
typedef enum Exynos4BoardType {
36
@@ -XXX,XX +XXX,XX @@ exynos4_boards_init_common(MachineState *machine,
37
exynos4_board_binfo.gic_cpu_if_addr =
38
EXYNOS4210_SMP_PRIVATE_BASE_ADDR + 0x100;
39
40
- PRINT_DEBUG("\n ram_size: %luMiB [0x%08lx]\n"
41
- " kernel_filename: %s\n"
42
- " kernel_cmdline: %s\n"
43
- " initrd_filename: %s\n",
44
- exynos4_board_ram_size[board_type] / 1048576,
45
- exynos4_board_ram_size[board_type],
46
- machine->kernel_filename,
47
- machine->kernel_cmdline,
48
- machine->initrd_filename);
49
-
50
exynos4_boards_init_ram(s, get_system_memory(),
51
exynos4_board_ram_size[board_type]);
52
53
--
35
--
54
2.20.1
36
2.34.1
55
56
diff view generated by jsdifflib
1
From: Alistair Francis <alistair.francis@wdc.com>
1
From: Fabiano Rosas <farosas@suse.de>
2
2
3
Commit 89e68b575 "target/arm: Use vector operations for saturation"
3
On a build configured with: --disable-tcg --enable-xen it is possible
4
causes this abort() when booting QEMU ARM with a Cortex-A15:
4
to produce a QEMU binary with no TCG nor KVM support. Skip the cdrom
5
boot tests if that's the case.
5
6
6
0 0x00007ffff4c2382f in raise () at /usr/lib/libc.so.6
7
Fixes: 0c1ae3ff9d ("tests/qtest: Fix tests when no KVM or TCG are present")
7
1 0x00007ffff4c0e672 in abort () at /usr/lib/libc.so.6
8
Signed-off-by: Fabiano Rosas <farosas@suse.de>
8
2 0x00005555559c1839 in disas_neon_data_insn (insn=<optimized out>, s=<optimized out>) at ./target/arm/translate.c:6673
9
Reviewed-by: Thomas Huth <thuth@redhat.com>
9
3 0x00005555559c1839 in disas_neon_data_insn (s=<optimized out>, insn=<optimized out>) at ./target/arm/translate.c:6386
10
Message-id: 20230508181611.2621-4-farosas@suse.de
10
4 0x00005555559cd8a4 in disas_arm_insn (insn=4081107068, s=0x7fffe59a9510) at ./target/arm/translate.c:9289
11
5 0x00005555559cd8a4 in arm_tr_translate_insn (dcbase=0x7fffe59a9510, cpu=<optimized out>) at ./target/arm/translate.c:13612
12
6 0x00005555558d1d39 in translator_loop (ops=0x5555561cc580 <arm_translator_ops>, db=0x7fffe59a9510, cpu=0x55555686a2f0, tb=<optimized out>, max_insns=<optimized out>) at ./accel/tcg/translator.c:96
13
7 0x00005555559d10d4 in gen_intermediate_code (cpu=cpu@entry=0x55555686a2f0, tb=tb@entry=0x7fffd7840080 <code_gen_buffer+126091347>, max_insns=max_insns@entry=512) at ./target/arm/translate.c:13901
14
8 0x00005555558d06b9 in tb_gen_code (cpu=cpu@entry=0x55555686a2f0, pc=3067096216, cs_base=0, flags=192, cflags=-16252928, cflags@entry=524288) at ./accel/tcg/translate-all.c:1736
15
9 0x00005555558ce467 in tb_find (cf_mask=524288, tb_exit=1, last_tb=0x7fffd783e640 <code_gen_buffer+126084627>, cpu=0x1) at ./accel/tcg/cpu-exec.c:407
16
10 0x00005555558ce467 in cpu_exec (cpu=cpu@entry=0x55555686a2f0) at ./accel/tcg/cpu-exec.c:728
17
11 0x000055555588b0cf in tcg_cpu_exec (cpu=0x55555686a2f0) at ./cpus.c:1431
18
12 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=0x55555686a2f0) at ./cpus.c:1735
19
13 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=arg@entry=0x55555686a2f0) at ./cpus.c:1709
20
14 0x0000555555d2629a in qemu_thread_start (args=<optimized out>) at ./util/qemu-thread-posix.c:502
21
15 0x00007ffff4db8a92 in start_thread () at /usr/lib/libpthread.
22
23
This patch ensures that we don't hit the abort() in the second switch
24
case in disas_neon_data_insn() as we will return from the first case.
25
26
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
27
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
28
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
29
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
30
Tested-by: Alex Bennée <alex.bennee@linaro.org>
31
Message-id: ad91b397f360b2fc7f4087e476f7df5b04d42ddb.1558021877.git.alistair.francis@wdc.com
32
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
33
---
12
---
34
target/arm/translate.c | 4 ++--
13
tests/qtest/cdrom-test.c | 10 ++++++++++
35
1 file changed, 2 insertions(+), 2 deletions(-)
14
1 file changed, 10 insertions(+)
36
15
37
diff --git a/target/arm/translate.c b/target/arm/translate.c
16
diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c
38
index XXXXXXX..XXXXXXX 100644
17
index XXXXXXX..XXXXXXX 100644
39
--- a/target/arm/translate.c
18
--- a/tests/qtest/cdrom-test.c
40
+++ b/target/arm/translate.c
19
+++ b/tests/qtest/cdrom-test.c
41
@@ -XXX,XX +XXX,XX @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
20
@@ -XXX,XX +XXX,XX @@ static void test_cdboot(gconstpointer data)
42
tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
21
43
rn_ofs, rm_ofs, vec_size, vec_size,
22
static void add_x86_tests(void)
44
(u ? uqadd_op : sqadd_op) + size);
23
{
45
- break;
24
+ if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) {
46
+ return 0;
25
+ g_test_skip("No KVM or TCG accelerator available, skipping boot tests");
47
26
+ return;
48
case NEON_3R_VQSUB:
27
+ }
49
tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
28
+
50
rn_ofs, rm_ofs, vec_size, vec_size,
29
qtest_add_data_func("cdrom/boot/default", "-cdrom ", test_cdboot);
51
(u ? uqsub_op : sqsub_op) + size);
30
qtest_add_data_func("cdrom/boot/virtio-scsi",
52
- break;
31
"-device virtio-scsi -device scsi-cd,drive=cdr "
53
+ return 0;
32
@@ -XXX,XX +XXX,XX @@ static void add_x86_tests(void)
54
33
55
case NEON_3R_VMUL: /* VMUL */
34
static void add_s390x_tests(void)
56
if (u) {
35
{
36
+ if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) {
37
+ g_test_skip("No KVM or TCG accelerator available, skipping boot tests");
38
+ return;
39
+ }
40
+
41
qtest_add_data_func("cdrom/boot/default", "-cdrom ", test_cdboot);
42
qtest_add_data_func("cdrom/boot/virtio-scsi",
43
"-device virtio-scsi -device scsi-cd,drive=cdr "
57
--
44
--
58
2.20.1
45
2.34.1
59
60
diff view generated by jsdifflib
1
The header file hw/arm/arm.h now includes only declarations
1
In check_s2_mmu_setup() we have a check that is attempting to
2
relating to hw/arm/boot.c functionality. Rename it accordingly,
2
implement the part of AArch64.S2MinTxSZ that is specific to when EL1
3
and adjust its header comment.
3
is AArch32:
4
4
5
The bulk of this commit was created via
5
if !s1aarch64 then
6
perl -pi -e 's|hw/arm/arm.h|hw/arm/boot.h|' hw/arm/*.c include/hw/arm/*.h
6
// EL1 is AArch32
7
min_txsz = Min(min_txsz, 24);
7
8
8
In a few cases we can just delete the #include:
9
Unfortunately we got this wrong in two ways:
9
hw/arm/msf2-soc.c, include/hw/arm/aspeed_soc.h and
10
include/hw/arm/bcm2836.h did not require it.
11
10
11
(1) The minimum txsz corresponds to a maximum inputsize, but we got
12
the sense of the comparison wrong and were faulting for all
13
inputsizes less than 40 bits
14
15
(2) We try to implement this as an extra check that happens after
16
we've done the same txsz checks we would do for an AArch64 EL1, but
17
in fact the pseudocode is *loosening* the requirements, so that txsz
18
values that would fault for an AArch64 EL1 do not fault for AArch32
19
EL1, because it does Min(old_min, 24), not Max(old_min, 24).
20
21
You can see this also in the text of the Arm ARM in table D8-8, which
22
shows that where the implemented PA size is less than 40 bits an
23
AArch32 EL1 is still OK with a configured stage2 T0SZ for a 40 bit
24
IPA, whereas if EL1 is AArch64 then the T0SZ must be big enough to
25
constrain the IPA to the implemented PA size.
26
27
Because of part (2), we can't do this as a separate check, but
28
have to integrate it into aa64_va_parameters(). Add a new argument
29
to that function to indicate that EL1 is 32-bit. All the existing
30
callsites except the one in get_phys_addr_lpae() can pass 'false',
31
because they are either doing a lookup for a stage 1 regime or
32
else they don't care about the tsz/tsz_oob fields.
33
34
Cc: qemu-stable@nongnu.org
35
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1627
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
36
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
37
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
14
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
38
Message-id: 20230509092059.3176487-1-peter.maydell@linaro.org
15
Message-id: 20190516163857.6430-4-peter.maydell@linaro.org
16
---
39
---
17
include/hw/arm/allwinner-a10.h | 2 +-
40
target/arm/internals.h | 12 +++++++++++-
18
include/hw/arm/aspeed_soc.h | 1 -
41
target/arm/gdbstub64.c | 2 +-
19
include/hw/arm/bcm2836.h | 1 -
42
target/arm/helper.c | 15 +++++++++++++--
20
include/hw/arm/{arm.h => boot.h} | 8 ++++----
43
target/arm/ptw.c | 14 ++------------
21
include/hw/arm/fsl-imx25.h | 2 +-
44
target/arm/tcg/pauth_helper.c | 6 +++---
22
include/hw/arm/fsl-imx31.h | 2 +-
45
5 files changed, 30 insertions(+), 19 deletions(-)
23
include/hw/arm/fsl-imx6.h | 2 +-
24
include/hw/arm/fsl-imx6ul.h | 2 +-
25
include/hw/arm/fsl-imx7.h | 2 +-
26
include/hw/arm/virt.h | 2 +-
27
include/hw/arm/xlnx-versal.h | 2 +-
28
include/hw/arm/xlnx-zynqmp.h | 2 +-
29
hw/arm/armsse.c | 2 +-
30
hw/arm/armv7m.c | 2 +-
31
hw/arm/aspeed.c | 2 +-
32
hw/arm/boot.c | 2 +-
33
hw/arm/collie.c | 2 +-
34
hw/arm/exynos4210.c | 2 +-
35
hw/arm/exynos4_boards.c | 2 +-
36
hw/arm/highbank.c | 2 +-
37
hw/arm/integratorcp.c | 2 +-
38
hw/arm/mainstone.c | 2 +-
39
hw/arm/microbit.c | 2 +-
40
hw/arm/mps2-tz.c | 2 +-
41
hw/arm/mps2.c | 2 +-
42
hw/arm/msf2-soc.c | 1 -
43
hw/arm/msf2-som.c | 2 +-
44
hw/arm/musca.c | 2 +-
45
hw/arm/musicpal.c | 2 +-
46
hw/arm/netduino2.c | 2 +-
47
hw/arm/nrf51_soc.c | 2 +-
48
hw/arm/nseries.c | 2 +-
49
hw/arm/omap1.c | 2 +-
50
hw/arm/omap2.c | 2 +-
51
hw/arm/omap_sx1.c | 2 +-
52
hw/arm/palm.c | 2 +-
53
hw/arm/raspi.c | 2 +-
54
hw/arm/realview.c | 2 +-
55
hw/arm/spitz.c | 2 +-
56
hw/arm/stellaris.c | 2 +-
57
hw/arm/stm32f205_soc.c | 2 +-
58
hw/arm/strongarm.c | 2 +-
59
hw/arm/tosa.c | 2 +-
60
hw/arm/versatilepb.c | 2 +-
61
hw/arm/vexpress.c | 2 +-
62
hw/arm/virt.c | 2 +-
63
hw/arm/xilinx_zynq.c | 2 +-
64
hw/arm/xlnx-versal.c | 2 +-
65
hw/arm/z2.c | 2 +-
66
49 files changed, 49 insertions(+), 52 deletions(-)
67
rename include/hw/arm/{arm.h => boot.h} (98%)
68
46
69
diff --git a/include/hw/arm/allwinner-a10.h b/include/hw/arm/allwinner-a10.h
47
diff --git a/target/arm/internals.h b/target/arm/internals.h
70
index XXXXXXX..XXXXXXX 100644
48
index XXXXXXX..XXXXXXX 100644
71
--- a/include/hw/arm/allwinner-a10.h
49
--- a/target/arm/internals.h
72
+++ b/include/hw/arm/allwinner-a10.h
50
+++ b/target/arm/internals.h
73
@@ -XXX,XX +XXX,XX @@
51
@@ -XXX,XX +XXX,XX @@ typedef struct ARMVAParameters {
74
#include "qemu-common.h"
52
ARMGranuleSize gran : 2;
75
#include "qemu/error-report.h"
53
} ARMVAParameters;
76
#include "hw/char/serial.h"
54
77
-#include "hw/arm/arm.h"
55
+/**
78
+#include "hw/arm/boot.h"
56
+ * aa64_va_parameters: Return parameters for an AArch64 virtual address
79
#include "hw/timer/allwinner-a10-pit.h"
57
+ * @env: CPU
80
#include "hw/intc/allwinner-a10-pic.h"
58
+ * @va: virtual address to look up
81
#include "hw/net/allwinner_emac.h"
59
+ * @mmu_idx: determines translation regime to use
82
diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h
60
+ * @data: true if this is a data access
61
+ * @el1_is_aa32: true if we are asking about stage 2 when EL1 is AArch32
62
+ * (ignored if @mmu_idx is for a stage 1 regime; only affects tsz/tsz_oob)
63
+ */
64
ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va,
65
- ARMMMUIdx mmu_idx, bool data);
66
+ ARMMMUIdx mmu_idx, bool data,
67
+ bool el1_is_aa32);
68
69
int aa64_va_parameter_tbi(uint64_t tcr, ARMMMUIdx mmu_idx);
70
int aa64_va_parameter_tbid(uint64_t tcr, ARMMMUIdx mmu_idx);
71
diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c
83
index XXXXXXX..XXXXXXX 100644
72
index XXXXXXX..XXXXXXX 100644
84
--- a/include/hw/arm/aspeed_soc.h
73
--- a/target/arm/gdbstub64.c
85
+++ b/include/hw/arm/aspeed_soc.h
74
+++ b/target/arm/gdbstub64.c
86
@@ -XXX,XX +XXX,XX @@
75
@@ -XXX,XX +XXX,XX @@ int aarch64_gdb_get_pauth_reg(CPUARMState *env, GByteArray *buf, int reg)
87
#ifndef ASPEED_SOC_H
76
ARMMMUIdx mmu_idx = arm_stage1_mmu_idx(env);
88
#define ASPEED_SOC_H
77
ARMVAParameters param;
89
78
90
-#include "hw/arm/arm.h"
79
- param = aa64_va_parameters(env, -is_high, mmu_idx, is_data);
91
#include "hw/intc/aspeed_vic.h"
80
+ param = aa64_va_parameters(env, -is_high, mmu_idx, is_data, false);
92
#include "hw/misc/aspeed_scu.h"
81
return gdb_get_reg64(buf, pauth_ptr_mask(param));
93
#include "hw/misc/aspeed_sdmc.h"
82
}
94
diff --git a/include/hw/arm/bcm2836.h b/include/hw/arm/bcm2836.h
83
default:
84
diff --git a/target/arm/helper.c b/target/arm/helper.c
95
index XXXXXXX..XXXXXXX 100644
85
index XXXXXXX..XXXXXXX 100644
96
--- a/include/hw/arm/bcm2836.h
86
--- a/target/arm/helper.c
97
+++ b/include/hw/arm/bcm2836.h
87
+++ b/target/arm/helper.c
98
@@ -XXX,XX +XXX,XX @@
88
@@ -XXX,XX +XXX,XX @@ static TLBIRange tlbi_aa64_get_range(CPUARMState *env, ARMMMUIdx mmuidx,
99
#ifndef BCM2836_H
89
unsigned int page_size_granule, page_shift, num, scale, exponent;
100
#define BCM2836_H
90
/* Extract one bit to represent the va selector in use. */
101
91
uint64_t select = sextract64(value, 36, 1);
102
-#include "hw/arm/arm.h"
92
- ARMVAParameters param = aa64_va_parameters(env, select, mmuidx, true);
103
#include "hw/arm/bcm2835_peripherals.h"
93
+ ARMVAParameters param = aa64_va_parameters(env, select, mmuidx, true, false);
104
#include "hw/intc/bcm2836_control.h"
94
TLBIRange ret = { };
105
95
ARMGranuleSize gran;
106
diff --git a/include/hw/arm/arm.h b/include/hw/arm/boot.h
96
107
similarity index 98%
97
@@ -XXX,XX +XXX,XX @@ static ARMGranuleSize sanitize_gran_size(ARMCPU *cpu, ARMGranuleSize gran,
108
rename from include/hw/arm/arm.h
98
}
109
rename to include/hw/arm/boot.h
99
100
ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va,
101
- ARMMMUIdx mmu_idx, bool data)
102
+ ARMMMUIdx mmu_idx, bool data,
103
+ bool el1_is_aa32)
104
{
105
uint64_t tcr = regime_tcr(env, mmu_idx);
106
bool epd, hpd, tsz_oob, ds, ha, hd;
107
@@ -XXX,XX +XXX,XX @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va,
108
}
109
}
110
111
+ if (stage2 && el1_is_aa32) {
112
+ /*
113
+ * For AArch32 EL1 the min txsz (and thus max IPA size) requirements
114
+ * are loosened: a configured IPA of 40 bits is permitted even if
115
+ * the implemented PA is less than that (and so a 40 bit IPA would
116
+ * fault for an AArch64 EL1). See R_DTLMN.
117
+ */
118
+ min_tsz = MIN(min_tsz, 24);
119
+ }
120
+
121
if (tsz > max_tsz) {
122
tsz = max_tsz;
123
tsz_oob = true;
124
diff --git a/target/arm/ptw.c b/target/arm/ptw.c
110
index XXXXXXX..XXXXXXX 100644
125
index XXXXXXX..XXXXXXX 100644
111
--- a/include/hw/arm/arm.h
126
--- a/target/arm/ptw.c
112
+++ b/include/hw/arm/boot.h
127
+++ b/target/arm/ptw.c
113
@@ -XXX,XX +XXX,XX @@
128
@@ -XXX,XX +XXX,XX @@ static int check_s2_mmu_setup(ARMCPU *cpu, bool is_aa64, uint64_t tcr,
114
/*
129
115
- * Misc ARM declarations
130
sl0 = extract32(tcr, 6, 2);
116
+ * ARM kernel loader.
131
if (is_aa64) {
117
*
132
- /*
118
* Copyright (c) 2006 CodeSourcery.
133
- * AArch64.S2InvalidTxSZ: While we checked tsz_oob near the top of
119
* Written by Paul Brook
134
- * get_phys_addr_lpae, that used aa64_va_parameters which apply
120
@@ -XXX,XX +XXX,XX @@
135
- * to aarch64. If Stage1 is aarch32, the min_txsz is larger.
121
*
136
- * See AArch64.S2MinTxSZ, where min_tsz is 24, translated to
122
*/
137
- * inputsize is 64 - 24 = 40.
123
138
- */
124
-#ifndef HW_ARM_H
139
- if (iasize < 40 && !arm_el_is_aa64(&cpu->env, 1)) {
125
-#define HW_ARM_H
140
- goto fail;
126
+#ifndef HW_ARM_BOOT_H
141
- }
127
+#define HW_ARM_BOOT_H
142
-
128
143
/*
129
#include "exec/memory.h"
144
* AArch64.S2InvalidSL: Interpretation of SL depends on the page size,
130
#include "target/arm/cpu-qom.h"
145
* so interleave AArch64.S2StartLevel.
131
@@ -XXX,XX +XXX,XX @@ void arm_write_secure_board_setup_dummy_smc(ARMCPU *cpu,
146
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Translate *ptw,
132
const struct arm_boot_info *info,
147
int ps;
133
hwaddr mvbar_addr);
148
134
149
param = aa64_va_parameters(env, address, mmu_idx,
135
-#endif /* HW_ARM_H */
150
- access_type != MMU_INST_FETCH);
136
+#endif /* HW_ARM_BOOT_H */
151
+ access_type != MMU_INST_FETCH,
137
diff --git a/include/hw/arm/fsl-imx25.h b/include/hw/arm/fsl-imx25.h
152
+ !arm_el_is_aa64(env, 1));
153
level = 0;
154
155
/*
156
diff --git a/target/arm/tcg/pauth_helper.c b/target/arm/tcg/pauth_helper.c
138
index XXXXXXX..XXXXXXX 100644
157
index XXXXXXX..XXXXXXX 100644
139
--- a/include/hw/arm/fsl-imx25.h
158
--- a/target/arm/tcg/pauth_helper.c
140
+++ b/include/hw/arm/fsl-imx25.h
159
+++ b/target/arm/tcg/pauth_helper.c
141
@@ -XXX,XX +XXX,XX @@
160
@@ -XXX,XX +XXX,XX @@ static uint64_t pauth_addpac(CPUARMState *env, uint64_t ptr, uint64_t modifier,
142
#ifndef FSL_IMX25_H
161
ARMPACKey *key, bool data)
143
#define FSL_IMX25_H
144
145
-#include "hw/arm/arm.h"
146
+#include "hw/arm/boot.h"
147
#include "hw/intc/imx_avic.h"
148
#include "hw/misc/imx25_ccm.h"
149
#include "hw/char/imx_serial.h"
150
diff --git a/include/hw/arm/fsl-imx31.h b/include/hw/arm/fsl-imx31.h
151
index XXXXXXX..XXXXXXX 100644
152
--- a/include/hw/arm/fsl-imx31.h
153
+++ b/include/hw/arm/fsl-imx31.h
154
@@ -XXX,XX +XXX,XX @@
155
#ifndef FSL_IMX31_H
156
#define FSL_IMX31_H
157
158
-#include "hw/arm/arm.h"
159
+#include "hw/arm/boot.h"
160
#include "hw/intc/imx_avic.h"
161
#include "hw/misc/imx31_ccm.h"
162
#include "hw/char/imx_serial.h"
163
diff --git a/include/hw/arm/fsl-imx6.h b/include/hw/arm/fsl-imx6.h
164
index XXXXXXX..XXXXXXX 100644
165
--- a/include/hw/arm/fsl-imx6.h
166
+++ b/include/hw/arm/fsl-imx6.h
167
@@ -XXX,XX +XXX,XX @@
168
#ifndef FSL_IMX6_H
169
#define FSL_IMX6_H
170
171
-#include "hw/arm/arm.h"
172
+#include "hw/arm/boot.h"
173
#include "hw/cpu/a9mpcore.h"
174
#include "hw/misc/imx6_ccm.h"
175
#include "hw/misc/imx6_src.h"
176
diff --git a/include/hw/arm/fsl-imx6ul.h b/include/hw/arm/fsl-imx6ul.h
177
index XXXXXXX..XXXXXXX 100644
178
--- a/include/hw/arm/fsl-imx6ul.h
179
+++ b/include/hw/arm/fsl-imx6ul.h
180
@@ -XXX,XX +XXX,XX @@
181
#ifndef FSL_IMX6UL_H
182
#define FSL_IMX6UL_H
183
184
-#include "hw/arm/arm.h"
185
+#include "hw/arm/boot.h"
186
#include "hw/cpu/a15mpcore.h"
187
#include "hw/misc/imx6ul_ccm.h"
188
#include "hw/misc/imx6_src.h"
189
diff --git a/include/hw/arm/fsl-imx7.h b/include/hw/arm/fsl-imx7.h
190
index XXXXXXX..XXXXXXX 100644
191
--- a/include/hw/arm/fsl-imx7.h
192
+++ b/include/hw/arm/fsl-imx7.h
193
@@ -XXX,XX +XXX,XX @@
194
#ifndef FSL_IMX7_H
195
#define FSL_IMX7_H
196
197
-#include "hw/arm/arm.h"
198
+#include "hw/arm/boot.h"
199
#include "hw/cpu/a15mpcore.h"
200
#include "hw/intc/imx_gpcv2.h"
201
#include "hw/misc/imx7_ccm.h"
202
diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
203
index XXXXXXX..XXXXXXX 100644
204
--- a/include/hw/arm/virt.h
205
+++ b/include/hw/arm/virt.h
206
@@ -XXX,XX +XXX,XX @@
207
#include "exec/hwaddr.h"
208
#include "qemu/notify.h"
209
#include "hw/boards.h"
210
-#include "hw/arm/arm.h"
211
+#include "hw/arm/boot.h"
212
#include "hw/block/flash.h"
213
#include "sysemu/kvm.h"
214
#include "hw/intc/arm_gicv3_common.h"
215
diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h
216
index XXXXXXX..XXXXXXX 100644
217
--- a/include/hw/arm/xlnx-versal.h
218
+++ b/include/hw/arm/xlnx-versal.h
219
@@ -XXX,XX +XXX,XX @@
220
#define XLNX_VERSAL_H
221
222
#include "hw/sysbus.h"
223
-#include "hw/arm/arm.h"
224
+#include "hw/arm/boot.h"
225
#include "hw/intc/arm_gicv3.h"
226
227
#define TYPE_XLNX_VERSAL "xlnx-versal"
228
diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h
229
index XXXXXXX..XXXXXXX 100644
230
--- a/include/hw/arm/xlnx-zynqmp.h
231
+++ b/include/hw/arm/xlnx-zynqmp.h
232
@@ -XXX,XX +XXX,XX @@
233
#ifndef XLNX_ZYNQMP_H
234
235
#include "qemu-common.h"
236
-#include "hw/arm/arm.h"
237
+#include "hw/arm/boot.h"
238
#include "hw/intc/arm_gic.h"
239
#include "hw/net/cadence_gem.h"
240
#include "hw/char/cadence_uart.h"
241
diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c
242
index XXXXXXX..XXXXXXX 100644
243
--- a/hw/arm/armsse.c
244
+++ b/hw/arm/armsse.c
245
@@ -XXX,XX +XXX,XX @@
246
#include "hw/sysbus.h"
247
#include "hw/registerfields.h"
248
#include "hw/arm/armsse.h"
249
-#include "hw/arm/arm.h"
250
+#include "hw/arm/boot.h"
251
252
/* Format of the System Information block SYS_CONFIG register */
253
typedef enum SysConfigFormat {
254
diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
255
index XXXXXXX..XXXXXXX 100644
256
--- a/hw/arm/armv7m.c
257
+++ b/hw/arm/armv7m.c
258
@@ -XXX,XX +XXX,XX @@
259
#include "qemu-common.h"
260
#include "cpu.h"
261
#include "hw/sysbus.h"
262
-#include "hw/arm/arm.h"
263
+#include "hw/arm/boot.h"
264
#include "hw/loader.h"
265
#include "elf.h"
266
#include "sysemu/qtest.h"
267
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
268
index XXXXXXX..XXXXXXX 100644
269
--- a/hw/arm/aspeed.c
270
+++ b/hw/arm/aspeed.c
271
@@ -XXX,XX +XXX,XX @@
272
#include "qemu-common.h"
273
#include "cpu.h"
274
#include "exec/address-spaces.h"
275
-#include "hw/arm/arm.h"
276
+#include "hw/arm/boot.h"
277
#include "hw/arm/aspeed.h"
278
#include "hw/arm/aspeed_soc.h"
279
#include "hw/boards.h"
280
diff --git a/hw/arm/boot.c b/hw/arm/boot.c
281
index XXXXXXX..XXXXXXX 100644
282
--- a/hw/arm/boot.c
283
+++ b/hw/arm/boot.c
284
@@ -XXX,XX +XXX,XX @@
285
#include "qapi/error.h"
286
#include <libfdt.h>
287
#include "hw/hw.h"
288
-#include "hw/arm/arm.h"
289
+#include "hw/arm/boot.h"
290
#include "hw/arm/linux-boot-if.h"
291
#include "sysemu/kvm.h"
292
#include "sysemu/sysemu.h"
293
diff --git a/hw/arm/collie.c b/hw/arm/collie.c
294
index XXXXXXX..XXXXXXX 100644
295
--- a/hw/arm/collie.c
296
+++ b/hw/arm/collie.c
297
@@ -XXX,XX +XXX,XX @@
298
#include "hw/sysbus.h"
299
#include "hw/boards.h"
300
#include "strongarm.h"
301
-#include "hw/arm/arm.h"
302
+#include "hw/arm/boot.h"
303
#include "hw/block/flash.h"
304
#include "exec/address-spaces.h"
305
#include "cpu.h"
306
diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
307
index XXXXXXX..XXXXXXX 100644
308
--- a/hw/arm/exynos4210.c
309
+++ b/hw/arm/exynos4210.c
310
@@ -XXX,XX +XXX,XX @@
311
#include "hw/boards.h"
312
#include "sysemu/sysemu.h"
313
#include "hw/sysbus.h"
314
-#include "hw/arm/arm.h"
315
+#include "hw/arm/boot.h"
316
#include "hw/loader.h"
317
#include "hw/arm/exynos4210.h"
318
#include "hw/sd/sdhci.h"
319
diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c
320
index XXXXXXX..XXXXXXX 100644
321
--- a/hw/arm/exynos4_boards.c
322
+++ b/hw/arm/exynos4_boards.c
323
@@ -XXX,XX +XXX,XX @@
324
#include "sysemu/sysemu.h"
325
#include "hw/sysbus.h"
326
#include "net/net.h"
327
-#include "hw/arm/arm.h"
328
+#include "hw/arm/boot.h"
329
#include "exec/address-spaces.h"
330
#include "hw/arm/exynos4210.h"
331
#include "hw/net/lan9118.h"
332
diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c
333
index XXXXXXX..XXXXXXX 100644
334
--- a/hw/arm/highbank.c
335
+++ b/hw/arm/highbank.c
336
@@ -XXX,XX +XXX,XX @@
337
#include "qemu/osdep.h"
338
#include "qapi/error.h"
339
#include "hw/sysbus.h"
340
-#include "hw/arm/arm.h"
341
+#include "hw/arm/boot.h"
342
#include "hw/loader.h"
343
#include "net/net.h"
344
#include "sysemu/kvm.h"
345
diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c
346
index XXXXXXX..XXXXXXX 100644
347
--- a/hw/arm/integratorcp.c
348
+++ b/hw/arm/integratorcp.c
349
@@ -XXX,XX +XXX,XX @@
350
#include "cpu.h"
351
#include "hw/sysbus.h"
352
#include "hw/boards.h"
353
-#include "hw/arm/arm.h"
354
+#include "hw/arm/boot.h"
355
#include "hw/misc/arm_integrator_debug.h"
356
#include "hw/net/smc91c111.h"
357
#include "net/net.h"
358
diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c
359
index XXXXXXX..XXXXXXX 100644
360
--- a/hw/arm/mainstone.c
361
+++ b/hw/arm/mainstone.c
362
@@ -XXX,XX +XXX,XX @@
363
#include "qapi/error.h"
364
#include "hw/hw.h"
365
#include "hw/arm/pxa.h"
366
-#include "hw/arm/arm.h"
367
+#include "hw/arm/boot.h"
368
#include "net/net.h"
369
#include "hw/net/smc91c111.h"
370
#include "hw/boards.h"
371
diff --git a/hw/arm/microbit.c b/hw/arm/microbit.c
372
index XXXXXXX..XXXXXXX 100644
373
--- a/hw/arm/microbit.c
374
+++ b/hw/arm/microbit.c
375
@@ -XXX,XX +XXX,XX @@
376
#include "qemu/osdep.h"
377
#include "qapi/error.h"
378
#include "hw/boards.h"
379
-#include "hw/arm/arm.h"
380
+#include "hw/arm/boot.h"
381
#include "sysemu/sysemu.h"
382
#include "exec/address-spaces.h"
383
384
diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c
385
index XXXXXXX..XXXXXXX 100644
386
--- a/hw/arm/mps2-tz.c
387
+++ b/hw/arm/mps2-tz.c
388
@@ -XXX,XX +XXX,XX @@
389
#include "qemu/osdep.h"
390
#include "qapi/error.h"
391
#include "qemu/error-report.h"
392
-#include "hw/arm/arm.h"
393
+#include "hw/arm/boot.h"
394
#include "hw/arm/armv7m.h"
395
#include "hw/or-irq.h"
396
#include "hw/boards.h"
397
diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c
398
index XXXXXXX..XXXXXXX 100644
399
--- a/hw/arm/mps2.c
400
+++ b/hw/arm/mps2.c
401
@@ -XXX,XX +XXX,XX @@
402
#include "qemu/osdep.h"
403
#include "qapi/error.h"
404
#include "qemu/error-report.h"
405
-#include "hw/arm/arm.h"
406
+#include "hw/arm/boot.h"
407
#include "hw/arm/armv7m.h"
408
#include "hw/or-irq.h"
409
#include "hw/boards.h"
410
diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c
411
index XXXXXXX..XXXXXXX 100644
412
--- a/hw/arm/msf2-soc.c
413
+++ b/hw/arm/msf2-soc.c
414
@@ -XXX,XX +XXX,XX @@
415
#include "qemu/units.h"
416
#include "qapi/error.h"
417
#include "qemu-common.h"
418
-#include "hw/arm/arm.h"
419
#include "exec/address-spaces.h"
420
#include "hw/char/serial.h"
421
#include "hw/boards.h"
422
diff --git a/hw/arm/msf2-som.c b/hw/arm/msf2-som.c
423
index XXXXXXX..XXXXXXX 100644
424
--- a/hw/arm/msf2-som.c
425
+++ b/hw/arm/msf2-som.c
426
@@ -XXX,XX +XXX,XX @@
427
#include "qapi/error.h"
428
#include "qemu/error-report.h"
429
#include "hw/boards.h"
430
-#include "hw/arm/arm.h"
431
+#include "hw/arm/boot.h"
432
#include "exec/address-spaces.h"
433
#include "hw/arm/msf2-soc.h"
434
#include "cpu.h"
435
diff --git a/hw/arm/musca.c b/hw/arm/musca.c
436
index XXXXXXX..XXXXXXX 100644
437
--- a/hw/arm/musca.c
438
+++ b/hw/arm/musca.c
439
@@ -XXX,XX +XXX,XX @@
440
#include "qapi/error.h"
441
#include "exec/address-spaces.h"
442
#include "sysemu/sysemu.h"
443
-#include "hw/arm/arm.h"
444
+#include "hw/arm/boot.h"
445
#include "hw/arm/armsse.h"
446
#include "hw/boards.h"
447
#include "hw/char/pl011.h"
448
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
449
index XXXXXXX..XXXXXXX 100644
450
--- a/hw/arm/musicpal.c
451
+++ b/hw/arm/musicpal.c
452
@@ -XXX,XX +XXX,XX @@
453
#include "qemu-common.h"
454
#include "cpu.h"
455
#include "hw/sysbus.h"
456
-#include "hw/arm/arm.h"
457
+#include "hw/arm/boot.h"
458
#include "net/net.h"
459
#include "sysemu/sysemu.h"
460
#include "hw/boards.h"
461
diff --git a/hw/arm/netduino2.c b/hw/arm/netduino2.c
462
index XXXXXXX..XXXXXXX 100644
463
--- a/hw/arm/netduino2.c
464
+++ b/hw/arm/netduino2.c
465
@@ -XXX,XX +XXX,XX @@
466
#include "hw/boards.h"
467
#include "qemu/error-report.h"
468
#include "hw/arm/stm32f205_soc.h"
469
-#include "hw/arm/arm.h"
470
+#include "hw/arm/boot.h"
471
472
static void netduino2_init(MachineState *machine)
473
{
162
{
474
diff --git a/hw/arm/nrf51_soc.c b/hw/arm/nrf51_soc.c
163
ARMMMUIdx mmu_idx = arm_stage1_mmu_idx(env);
475
index XXXXXXX..XXXXXXX 100644
164
- ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data);
476
--- a/hw/arm/nrf51_soc.c
165
+ ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data, false);
477
+++ b/hw/arm/nrf51_soc.c
166
uint64_t pac, ext_ptr, ext, test;
478
@@ -XXX,XX +XXX,XX @@
167
int bot_bit, top_bit;
479
#include "qemu/osdep.h"
168
480
#include "qapi/error.h"
169
@@ -XXX,XX +XXX,XX @@ static uint64_t pauth_auth(CPUARMState *env, uint64_t ptr, uint64_t modifier,
481
#include "qemu-common.h"
170
ARMPACKey *key, bool data, int keynumber)
482
-#include "hw/arm/arm.h"
171
{
483
+#include "hw/arm/boot.h"
172
ARMMMUIdx mmu_idx = arm_stage1_mmu_idx(env);
484
#include "hw/sysbus.h"
173
- ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data);
485
#include "hw/boards.h"
174
+ ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data, false);
486
#include "hw/misc/unimp.h"
175
int bot_bit, top_bit;
487
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
176
uint64_t pac, orig_ptr, test;
488
index XXXXXXX..XXXXXXX 100644
177
489
--- a/hw/arm/nseries.c
178
@@ -XXX,XX +XXX,XX @@ static uint64_t pauth_auth(CPUARMState *env, uint64_t ptr, uint64_t modifier,
490
+++ b/hw/arm/nseries.c
179
static uint64_t pauth_strip(CPUARMState *env, uint64_t ptr, bool data)
491
@@ -XXX,XX +XXX,XX @@
180
{
492
#include "qemu/bswap.h"
181
ARMMMUIdx mmu_idx = arm_stage1_mmu_idx(env);
493
#include "sysemu/sysemu.h"
182
- ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data);
494
#include "hw/arm/omap.h"
183
+ ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data, false);
495
-#include "hw/arm/arm.h"
184
496
+#include "hw/arm/boot.h"
185
return pauth_original_ptr(ptr, param);
497
#include "hw/irq.h"
186
}
498
#include "ui/console.h"
499
#include "hw/boards.h"
500
diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c
501
index XXXXXXX..XXXXXXX 100644
502
--- a/hw/arm/omap1.c
503
+++ b/hw/arm/omap1.c
504
@@ -XXX,XX +XXX,XX @@
505
#include "cpu.h"
506
#include "hw/boards.h"
507
#include "hw/hw.h"
508
-#include "hw/arm/arm.h"
509
+#include "hw/arm/boot.h"
510
#include "hw/arm/omap.h"
511
#include "sysemu/sysemu.h"
512
#include "hw/arm/soc_dma.h"
513
diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
514
index XXXXXXX..XXXXXXX 100644
515
--- a/hw/arm/omap2.c
516
+++ b/hw/arm/omap2.c
517
@@ -XXX,XX +XXX,XX @@
518
#include "sysemu/qtest.h"
519
#include "hw/boards.h"
520
#include "hw/hw.h"
521
-#include "hw/arm/arm.h"
522
+#include "hw/arm/boot.h"
523
#include "hw/arm/omap.h"
524
#include "sysemu/sysemu.h"
525
#include "qemu/timer.h"
526
diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c
527
index XXXXXXX..XXXXXXX 100644
528
--- a/hw/arm/omap_sx1.c
529
+++ b/hw/arm/omap_sx1.c
530
@@ -XXX,XX +XXX,XX @@
531
#include "ui/console.h"
532
#include "hw/arm/omap.h"
533
#include "hw/boards.h"
534
-#include "hw/arm/arm.h"
535
+#include "hw/arm/boot.h"
536
#include "hw/block/flash.h"
537
#include "sysemu/qtest.h"
538
#include "exec/address-spaces.h"
539
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
540
index XXXXXXX..XXXXXXX 100644
541
--- a/hw/arm/palm.c
542
+++ b/hw/arm/palm.c
543
@@ -XXX,XX +XXX,XX @@
544
#include "ui/console.h"
545
#include "hw/arm/omap.h"
546
#include "hw/boards.h"
547
-#include "hw/arm/arm.h"
548
+#include "hw/arm/boot.h"
549
#include "hw/input/tsc2xxx.h"
550
#include "hw/loader.h"
551
#include "exec/address-spaces.h"
552
diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c
553
index XXXXXXX..XXXXXXX 100644
554
--- a/hw/arm/raspi.c
555
+++ b/hw/arm/raspi.c
556
@@ -XXX,XX +XXX,XX @@
557
#include "qemu/error-report.h"
558
#include "hw/boards.h"
559
#include "hw/loader.h"
560
-#include "hw/arm/arm.h"
561
+#include "hw/arm/boot.h"
562
#include "sysemu/sysemu.h"
563
564
#define SMPBOOT_ADDR 0x300 /* this should leave enough space for ATAGS */
565
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
566
index XXXXXXX..XXXXXXX 100644
567
--- a/hw/arm/realview.c
568
+++ b/hw/arm/realview.c
569
@@ -XXX,XX +XXX,XX @@
570
#include "qemu-common.h"
571
#include "cpu.h"
572
#include "hw/sysbus.h"
573
-#include "hw/arm/arm.h"
574
+#include "hw/arm/boot.h"
575
#include "hw/arm/primecell.h"
576
#include "hw/net/lan9118.h"
577
#include "hw/net/smc91c111.h"
578
diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c
579
index XXXXXXX..XXXXXXX 100644
580
--- a/hw/arm/spitz.c
581
+++ b/hw/arm/spitz.c
582
@@ -XXX,XX +XXX,XX @@
583
#include "qapi/error.h"
584
#include "hw/hw.h"
585
#include "hw/arm/pxa.h"
586
-#include "hw/arm/arm.h"
587
+#include "hw/arm/boot.h"
588
#include "sysemu/sysemu.h"
589
#include "hw/pcmcia.h"
590
#include "hw/i2c/i2c.h"
591
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
592
index XXXXXXX..XXXXXXX 100644
593
--- a/hw/arm/stellaris.c
594
+++ b/hw/arm/stellaris.c
595
@@ -XXX,XX +XXX,XX @@
596
#include "qapi/error.h"
597
#include "hw/sysbus.h"
598
#include "hw/ssi/ssi.h"
599
-#include "hw/arm/arm.h"
600
+#include "hw/arm/boot.h"
601
#include "qemu/timer.h"
602
#include "hw/i2c/i2c.h"
603
#include "net/net.h"
604
diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c
605
index XXXXXXX..XXXXXXX 100644
606
--- a/hw/arm/stm32f205_soc.c
607
+++ b/hw/arm/stm32f205_soc.c
608
@@ -XXX,XX +XXX,XX @@
609
#include "qemu/osdep.h"
610
#include "qapi/error.h"
611
#include "qemu-common.h"
612
-#include "hw/arm/arm.h"
613
+#include "hw/arm/boot.h"
614
#include "exec/address-spaces.h"
615
#include "hw/arm/stm32f205_soc.h"
616
617
diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c
618
index XXXXXXX..XXXXXXX 100644
619
--- a/hw/arm/strongarm.c
620
+++ b/hw/arm/strongarm.c
621
@@ -XXX,XX +XXX,XX @@
622
#include "hw/sysbus.h"
623
#include "strongarm.h"
624
#include "qemu/error-report.h"
625
-#include "hw/arm/arm.h"
626
+#include "hw/arm/boot.h"
627
#include "chardev/char-fe.h"
628
#include "chardev/char-serial.h"
629
#include "sysemu/sysemu.h"
630
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
631
index XXXXXXX..XXXXXXX 100644
632
--- a/hw/arm/tosa.c
633
+++ b/hw/arm/tosa.c
634
@@ -XXX,XX +XXX,XX @@
635
#include "qapi/error.h"
636
#include "hw/hw.h"
637
#include "hw/arm/pxa.h"
638
-#include "hw/arm/arm.h"
639
+#include "hw/arm/boot.h"
640
#include "hw/arm/sharpsl.h"
641
#include "hw/pcmcia.h"
642
#include "hw/boards.h"
643
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
644
index XXXXXXX..XXXXXXX 100644
645
--- a/hw/arm/versatilepb.c
646
+++ b/hw/arm/versatilepb.c
647
@@ -XXX,XX +XXX,XX @@
648
#include "qemu-common.h"
649
#include "cpu.h"
650
#include "hw/sysbus.h"
651
-#include "hw/arm/arm.h"
652
+#include "hw/arm/boot.h"
653
#include "hw/net/smc91c111.h"
654
#include "net/net.h"
655
#include "sysemu/sysemu.h"
656
diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c
657
index XXXXXXX..XXXXXXX 100644
658
--- a/hw/arm/vexpress.c
659
+++ b/hw/arm/vexpress.c
660
@@ -XXX,XX +XXX,XX @@
661
#include "qemu-common.h"
662
#include "cpu.h"
663
#include "hw/sysbus.h"
664
-#include "hw/arm/arm.h"
665
+#include "hw/arm/boot.h"
666
#include "hw/arm/primecell.h"
667
#include "hw/net/lan9118.h"
668
#include "hw/i2c/i2c.h"
669
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
670
index XXXXXXX..XXXXXXX 100644
671
--- a/hw/arm/virt.c
672
+++ b/hw/arm/virt.c
673
@@ -XXX,XX +XXX,XX @@
674
#include "qemu/option.h"
675
#include "qapi/error.h"
676
#include "hw/sysbus.h"
677
-#include "hw/arm/arm.h"
678
+#include "hw/arm/boot.h"
679
#include "hw/arm/primecell.h"
680
#include "hw/arm/virt.h"
681
#include "hw/block/flash.h"
682
diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c
683
index XXXXXXX..XXXXXXX 100644
684
--- a/hw/arm/xilinx_zynq.c
685
+++ b/hw/arm/xilinx_zynq.c
686
@@ -XXX,XX +XXX,XX @@
687
#include "qemu-common.h"
688
#include "cpu.h"
689
#include "hw/sysbus.h"
690
-#include "hw/arm/arm.h"
691
+#include "hw/arm/boot.h"
692
#include "net/net.h"
693
#include "exec/address-spaces.h"
694
#include "sysemu/sysemu.h"
695
diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c
696
index XXXXXXX..XXXXXXX 100644
697
--- a/hw/arm/xlnx-versal.c
698
+++ b/hw/arm/xlnx-versal.c
699
@@ -XXX,XX +XXX,XX @@
700
#include "net/net.h"
701
#include "sysemu/sysemu.h"
702
#include "sysemu/kvm.h"
703
-#include "hw/arm/arm.h"
704
+#include "hw/arm/boot.h"
705
#include "kvm_arm.h"
706
#include "hw/misc/unimp.h"
707
#include "hw/intc/arm_gicv3_common.h"
708
diff --git a/hw/arm/z2.c b/hw/arm/z2.c
709
index XXXXXXX..XXXXXXX 100644
710
--- a/hw/arm/z2.c
711
+++ b/hw/arm/z2.c
712
@@ -XXX,XX +XXX,XX @@
713
#include "qemu/osdep.h"
714
#include "hw/hw.h"
715
#include "hw/arm/pxa.h"
716
-#include "hw/arm/arm.h"
717
+#include "hw/arm/boot.h"
718
#include "hw/i2c/i2c.h"
719
#include "hw/ssi/ssi.h"
720
#include "hw/boards.h"
721
--
187
--
722
2.20.1
188
2.34.1
723
724
diff view generated by jsdifflib