1
Last lot of target-arm changes to squeeze in before rc1:
1
Handful of bugfixes for rc2. None of these are particularly critical
2
* various minor Arm bug fixes
2
or exciting.
3
* David Carlier's Haiku build portability fixes
4
* Wentong Wu's fixes for icount handling in the nios2 target
5
3
6
The following changes since commit 00ce6c36b35e0eb8cc5d68a28f288a6335848813:
4
-- PMM
7
5
8
Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2020-07-13' into staging (2020-07-13 13:01:30 +0100)
6
The following changes since commit 45a150aa2b3492acf6691c7bdbeb25a8545d8345:
7
8
Merge remote-tracking branch 'remotes/ericb/tags/pull-bitmaps-2020-08-03' into staging (2020-08-03 15:13:49 +0100)
9
9
10
are available in the Git repository at:
10
are available in the Git repository at:
11
11
12
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20200713
12
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20200803
13
13
14
for you to fetch changes up to 756f739b1682bf131994ec96dad7fbdf8b54493a:
14
for you to fetch changes up to 13557fd392890cbd985bceba7f717e01efd674b8:
15
15
16
hw/arm/aspeed: Do not create and attach empty SD cards by default (2020-07-13 14:36:12 +0100)
16
hw/timer/imx_epit: Avoid assertion when CR.SWR is written (2020-08-03 17:56:11 +0100)
17
17
18
----------------------------------------------------------------
18
----------------------------------------------------------------
19
target-arm queue:
19
target-arm queue:
20
* hw/arm/bcm2836: Remove unused 'cpu_type' field
20
* hw/timer/imx_epit: Avoid assertion when CR.SWR is written
21
* target/arm: Fix mtedesc for do_mem_zpz
21
* netduino2, netduinoplus2, microbit: set system_clock_scale so that
22
* Add the ability to change the FEC PHY MDIO device number on i.MX25/i.MX6/i.MX7
22
SysTick running on the CPU clock works
23
* target/arm: Don't do raw writes for PMINTENCLR
23
* target/arm: Avoid maybe-uninitialized warning with gcc 4.9
24
* virtio-iommu: Fix coverity issue in virtio_iommu_handle_command()
24
* target/arm: Fix AddPAC error indication
25
* build: Fix various issues with building on Haiku
25
* Make AIRCR.SYSRESETREQ actually reset the system for the
26
* target/nios2: fix wrctl behaviour when using icount
26
microbit, mps2-*, musca-*, netduino* boards
27
* hw/arm/tosa: Encapsulate misc GPIO handling in a device
28
* hw/arm/palm.c: Encapsulate misc GPIO handling in a device
29
* hw/arm/aspeed: Do not create and attach empty SD cards by default
30
27
31
----------------------------------------------------------------
28
----------------------------------------------------------------
32
Aaron Lindsay (1):
29
Kaige Li (1):
33
target/arm: Don't do raw writes for PMINTENCLR
30
target/arm: Avoid maybe-uninitialized warning with gcc 4.9
34
31
35
David CARLIER (8):
32
Peter Maydell (6):
36
build: Enable BSD symbols for Haiku
33
hw/arm/netduino2, netduinoplus2: Set system_clock_scale
37
util/qemu-openpty.c: Don't assume pty.h is glibc-only
34
include/hw/irq.h: New function qemu_irq_is_connected()
38
build: Check that mlockall() exists
35
hw/intc/armv7m_nvic: Provide default "reset the system" behaviour for SYSRESETREQ
39
osdep.h: Always include <sys/signal.h> if it exists
36
msf2-soc, stellaris: Don't wire up SYSRESETREQ
40
osdep.h: For Haiku, define SIGIO as equivalent to SIGPOLL
37
hw/arm/nrf51_soc: Set system_clock_scale
41
bswap.h: Include <endian.h> on Haiku for bswap operations
38
hw/timer/imx_epit: Avoid assertion when CR.SWR is written
42
util/compatfd.c: Only include <sys/syscall.h> if CONFIG_SIGNALFD
43
util/oslib-posix.c: Implement qemu_init_exec_dir() for Haiku
44
45
Eric Auger (1):
46
virtio-iommu: Fix coverity issue in virtio_iommu_handle_command()
47
48
Gerd Hoffmann (1):
49
util/drm: make portable by avoiding struct dirent d_type
50
51
Jean-Christophe Dubois (3):
52
Add the ability to change the FEC PHY MDIO device number on i.MX25 processor
53
Add the ability to change the FEC PHY MDIO device number on i.MX6 processor
54
Add the ability to change the FEC PHY MDIO devices numbers on i.MX7 processor
55
56
Peter Maydell (4):
57
hw/arm/tosa.c: Detabify
58
hw/arm/tosa: Encapsulate misc GPIO handling in a device
59
hw/arm/palm.c: Detabify
60
hw/arm/palm.c: Encapsulate misc GPIO handling in a device
61
62
Philippe Mathieu-Daudé (2):
63
hw/arm/bcm2836: Remove unused 'cpu_type' field
64
hw/arm/aspeed: Do not create and attach empty SD cards by default
65
39
66
Richard Henderson (1):
40
Richard Henderson (1):
67
target/arm: Fix mtedesc for do_mem_zpz
41
target/arm: Fix AddPAC error indication
68
42
69
Wentong Wu (4):
43
include/hw/arm/armv7m.h | 4 +++-
70
target/nios2: add DISAS_NORETURN case for nothing more to generate
44
include/hw/irq.h | 18 ++++++++++++++++++
71
target/nios2: in line the semantics of DISAS_UPDATE with other targets
45
hw/arm/msf2-soc.c | 11 -----------
72
target/nios2: Use gen_io_start around wrctl instruction
46
hw/arm/netduino2.c | 10 ++++++++++
73
hw/nios2: exit to main CPU loop only when unmasking interrupts
47
hw/arm/netduinoplus2.c | 10 ++++++++++
48
hw/arm/nrf51_soc.c | 5 +++++
49
hw/arm/stellaris.c | 12 ------------
50
hw/intc/armv7m_nvic.c | 17 ++++++++++++++++-
51
hw/timer/imx_epit.c | 13 ++++++++++---
52
target/arm/pauth_helper.c | 6 +++++-
53
target/arm/translate-a64.c | 2 +-
54
tests/tcg/aarch64/pauth-5.c | 33 +++++++++++++++++++++++++++++++++
55
tests/tcg/aarch64/Makefile.target | 2 +-
56
13 files changed, 112 insertions(+), 31 deletions(-)
57
create mode 100644 tests/tcg/aarch64/pauth-5.c
74
58
75
configure | 38 ++++++++++++-
76
include/hw/arm/bcm2836.h | 1 -
77
include/hw/arm/fsl-imx25.h | 1 +
78
include/hw/arm/fsl-imx6.h | 1 +
79
include/hw/arm/fsl-imx7.h | 1 +
80
include/qemu/bswap.h | 2 +
81
include/qemu/osdep.h | 6 +-
82
hw/arm/aspeed.c | 9 +--
83
hw/arm/fsl-imx25.c | 7 +++
84
hw/arm/fsl-imx6.c | 7 +++
85
hw/arm/fsl-imx7.c | 9 +++
86
hw/arm/palm.c | 111 +++++++++++++++++++++++++------------
87
hw/arm/tosa.c | 132 +++++++++++++++++++++++++++++---------------
88
hw/nios2/cpu_pic.c | 3 +-
89
hw/virtio/virtio-iommu.c | 1 +
90
hw/xen/xen-legacy-backend.c | 1 -
91
os-posix.c | 4 ++
92
target/arm/helper.c | 4 +-
93
target/arm/translate-sve.c | 2 +-
94
target/nios2/translate.c | 12 +++-
95
util/compatfd.c | 2 +
96
util/drm.c | 19 +++++--
97
util/oslib-posix.c | 20 ++++++-
98
util/qemu-openpty.c | 2 +-
99
24 files changed, 292 insertions(+), 103 deletions(-)
100
diff view generated by jsdifflib
Deleted patch
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
2
1
3
The 'cpu_type' has been moved from BCM283XState to BCM283XClass
4
in commit 210f47840d, but we forgot to remove the old variable.
5
Do it now.
6
7
Fixes: 210f47840d ("hw/arm/bcm2836: Hardcode correct CPU type")
8
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
9
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
10
Message-id: 20200703200459.23294-1-f4bug@amsat.org
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
---
13
include/hw/arm/bcm2836.h | 1 -
14
1 file changed, 1 deletion(-)
15
16
diff --git a/include/hw/arm/bcm2836.h b/include/hw/arm/bcm2836.h
17
index XXXXXXX..XXXXXXX 100644
18
--- a/include/hw/arm/bcm2836.h
19
+++ b/include/hw/arm/bcm2836.h
20
@@ -XXX,XX +XXX,XX @@ typedef struct BCM283XState {
21
DeviceState parent_obj;
22
/*< public >*/
23
24
- char *cpu_type;
25
uint32_t enabled_cpus;
26
27
struct {
28
--
29
2.20.1
30
31
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
1
The netduino2 and netduinoplus2 boards forgot to set the system_clock_scale
2
global, which meant that if guest code used the systick timer in "use
3
the processor clock" mode it would hang because time never advances.
2
4
3
Since added in commit 2bea128c3d, each SDHCI is wired with a SD
5
Set the global to match the documented CPU clock speed of these boards.
4
card, using empty card when no block drive provided. This is not
6
Judging by the data sheet this is slightly simplistic because the
5
the desired behavior. The SDHCI exposes a SD bus to plug cards
7
SoC allows configuration of the SYSCLK source and frequency via the
6
on, if no card available, it is fine to have an unplugged bus.
8
RCC (reset and clock control) module, but we don't model that.
7
9
8
Avoid creating unnecessary SD card device when no block drive
10
Fixes: https://bugs.launchpad.net/qemu/+bug/1876187
9
provided.
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
13
Message-id: 20200727162617.26227-1-peter.maydell@linaro.org
14
---
15
hw/arm/netduino2.c | 10 ++++++++++
16
hw/arm/netduinoplus2.c | 10 ++++++++++
17
2 files changed, 20 insertions(+)
10
18
11
Fixes: 2bea128c3d ("hw/sd/aspeed_sdhci: New device")
19
diff --git a/hw/arm/netduino2.c b/hw/arm/netduino2.c
12
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
13
Message-id: 20200705173402.15620-1-f4bug@amsat.org
14
Reviewed-by: Cédric Le Goater <clg@kaod.org>
15
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
16
---
17
hw/arm/aspeed.c | 9 +++++----
18
1 file changed, 5 insertions(+), 4 deletions(-)
19
20
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
21
index XXXXXXX..XXXXXXX 100644
20
index XXXXXXX..XXXXXXX 100644
22
--- a/hw/arm/aspeed.c
21
--- a/hw/arm/netduino2.c
23
+++ b/hw/arm/aspeed.c
22
+++ b/hw/arm/netduino2.c
24
@@ -XXX,XX +XXX,XX @@ static void sdhci_attach_drive(SDHCIState *sdhci, DriveInfo *dinfo)
23
@@ -XXX,XX +XXX,XX @@
24
#include "hw/arm/stm32f205_soc.h"
25
#include "hw/arm/boot.h"
26
27
+/* Main SYSCLK frequency in Hz (120MHz) */
28
+#define SYSCLK_FRQ 120000000ULL
29
+
30
static void netduino2_init(MachineState *machine)
25
{
31
{
26
DeviceState *card;
32
DeviceState *dev;
27
33
28
- card = qdev_new(TYPE_SD_CARD);
34
+ /*
29
- if (dinfo) {
35
+ * TODO: ideally we would model the SoC RCC and let it handle
30
- qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo),
36
+ * system_clock_scale, including its ability to define different
31
- &error_fatal);
37
+ * possible SYSCLK sources.
32
+ if (!dinfo) {
38
+ */
33
+ return;
39
+ system_clock_scale = NANOSECONDS_PER_SECOND / SYSCLK_FRQ;
34
}
40
+
35
+ card = qdev_new(TYPE_SD_CARD);
41
dev = qdev_new(TYPE_STM32F205_SOC);
36
+ qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo),
42
qdev_prop_set_string(dev, "cpu-type", ARM_CPU_TYPE_NAME("cortex-m3"));
37
+ &error_fatal);
43
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
38
qdev_realize_and_unref(card,
44
diff --git a/hw/arm/netduinoplus2.c b/hw/arm/netduinoplus2.c
39
qdev_get_child_bus(DEVICE(sdhci), "sd-bus"),
45
index XXXXXXX..XXXXXXX 100644
40
&error_fatal);
46
--- a/hw/arm/netduinoplus2.c
47
+++ b/hw/arm/netduinoplus2.c
48
@@ -XXX,XX +XXX,XX @@
49
#include "hw/arm/stm32f405_soc.h"
50
#include "hw/arm/boot.h"
51
52
+/* Main SYSCLK frequency in Hz (168MHz) */
53
+#define SYSCLK_FRQ 168000000ULL
54
+
55
static void netduinoplus2_init(MachineState *machine)
56
{
57
DeviceState *dev;
58
59
+ /*
60
+ * TODO: ideally we would model the SoC RCC and let it handle
61
+ * system_clock_scale, including its ability to define different
62
+ * possible SYSCLK sources.
63
+ */
64
+ system_clock_scale = NANOSECONDS_PER_SECOND / SYSCLK_FRQ;
65
+
66
dev = qdev_new(TYPE_STM32F405_SOC);
67
qdev_prop_set_string(dev, "cpu-type", ARM_CPU_TYPE_NAME("cortex-m4"));
68
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
41
--
69
--
42
2.20.1
70
2.20.1
43
71
44
72
diff view generated by jsdifflib
1
Replace the free-floating set of IRQs and palmte_onoff_gpios()
1
Mostly devices don't need to care whether one of their output
2
function with a simple QOM device that encapsulates this
2
qemu_irq lines is connected, because functions like qemu_set_irq()
3
behaviour.
3
silently do nothing if there is nothing on the other end. However
4
sometimes a device might want to implement default behaviour for the
5
case where the machine hasn't wired the line up to anywhere.
4
6
5
This fixes Coverity issue CID 1421944, which points out that
7
Provide a function qemu_irq_is_connected() that devices can use for
6
the memory returned by qemu_allocate_irqs() is leaked.
8
this purpose. (The test is trivial but encapsulating it in a
9
function makes it easier to see where we're doing it in case we need
10
to change the implementation later.)
7
11
8
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
9
Reviewed-by: Li Qiang <liq3ea@gmail.com>
10
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
13
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
11
Message-id: 20200628214230.2592-3-peter.maydell@linaro.org
14
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
15
Message-id: 20200728103744.6909-2-peter.maydell@linaro.org
12
---
16
---
13
hw/arm/palm.c | 61 +++++++++++++++++++++++++++++++++++++++++++--------
17
include/hw/irq.h | 18 ++++++++++++++++++
14
1 file changed, 52 insertions(+), 9 deletions(-)
18
1 file changed, 18 insertions(+)
15
19
16
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
20
diff --git a/include/hw/irq.h b/include/hw/irq.h
17
index XXXXXXX..XXXXXXX 100644
21
index XXXXXXX..XXXXXXX 100644
18
--- a/hw/arm/palm.c
22
--- a/include/hw/irq.h
19
+++ b/hw/arm/palm.c
23
+++ b/include/hw/irq.h
20
@@ -XXX,XX +XXX,XX @@ static void palmte_button_event(void *opaque, int keycode)
24
@@ -XXX,XX +XXX,XX @@ qemu_irq qemu_irq_split(qemu_irq irq1, qemu_irq irq2);
21
!(keycode & 0x80));
25
on an existing vector of qemu_irq. */
22
}
26
void qemu_irq_intercept_in(qemu_irq *gpio_in, qemu_irq_handler handler, int n);
23
27
24
+/*
28
+/**
25
+ * Encapsulation of some GPIO line behaviour for the Palm board
29
+ * qemu_irq_is_connected: Return true if IRQ line is wired up
26
+ *
30
+ *
27
+ * QEMU interface:
31
+ * If a qemu_irq has a device on the other (receiving) end of it,
28
+ * + unnamed GPIO inputs 0..6: for the various miscellaneous input lines
32
+ * return true; otherwise return false.
33
+ *
34
+ * Usually device models don't need to care whether the machine model
35
+ * has wired up their outbound qemu_irq lines, because functions like
36
+ * qemu_set_irq() silently do nothing if there is nothing on the other
37
+ * end of the line. However occasionally a device model will want to
38
+ * provide default behaviour if its output is left floating, and
39
+ * it can use this function to identify when that is the case.
29
+ */
40
+ */
30
+
41
+static inline bool qemu_irq_is_connected(qemu_irq irq)
31
+#define TYPE_PALM_MISC_GPIO "palm-misc-gpio"
32
+#define PALM_MISC_GPIO(obj) \
33
+ OBJECT_CHECK(PalmMiscGPIOState, (obj), TYPE_PALM_MISC_GPIO)
34
+
35
+typedef struct PalmMiscGPIOState {
36
+ SysBusDevice parent_obj;
37
+} PalmMiscGPIOState;
38
+
39
static void palmte_onoff_gpios(void *opaque, int line, int level)
40
{
41
switch (line) {
42
@@ -XXX,XX +XXX,XX @@ static void palmte_onoff_gpios(void *opaque, int line, int level)
43
}
44
}
45
46
+static void palm_misc_gpio_init(Object *obj)
47
+{
42
+{
48
+ DeviceState *dev = DEVICE(obj);
43
+ return irq != NULL;
49
+
50
+ qdev_init_gpio_in(dev, palmte_onoff_gpios, 7);
51
+}
44
+}
52
+
45
+
53
+static const TypeInfo palm_misc_gpio_info = {
46
#endif
54
+ .name = TYPE_PALM_MISC_GPIO,
55
+ .parent = TYPE_SYS_BUS_DEVICE,
56
+ .instance_size = sizeof(PalmMiscGPIOState),
57
+ .instance_init = palm_misc_gpio_init,
58
+ /*
59
+ * No class init required: device has no internal state so does not
60
+ * need to set up reset or vmstate, and has no realize method.
61
+ */
62
+};
63
+
64
static void palmte_gpio_setup(struct omap_mpu_state_s *cpu)
65
{
66
- qemu_irq *misc_gpio;
67
+ DeviceState *misc_gpio;
68
+
69
+ misc_gpio = sysbus_create_simple(TYPE_PALM_MISC_GPIO, -1, NULL);
70
71
omap_mmc_handlers(cpu->mmc,
72
qdev_get_gpio_in(cpu->gpio, PALMTE_MMC_WP_GPIO),
73
qemu_irq_invert(omap_mpuio_in_get(cpu->mpuio)
74
[PALMTE_MMC_SWITCH_GPIO]));
75
76
- misc_gpio = qemu_allocate_irqs(palmte_onoff_gpios, cpu, 7);
77
- qdev_connect_gpio_out(cpu->gpio, PALMTE_MMC_POWER_GPIO, misc_gpio[0]);
78
- qdev_connect_gpio_out(cpu->gpio, PALMTE_SPEAKER_GPIO, misc_gpio[1]);
79
- qdev_connect_gpio_out(cpu->gpio, 11, misc_gpio[2]);
80
- qdev_connect_gpio_out(cpu->gpio, 12, misc_gpio[3]);
81
- qdev_connect_gpio_out(cpu->gpio, 13, misc_gpio[4]);
82
- omap_mpuio_out_set(cpu->mpuio, 1, misc_gpio[5]);
83
- omap_mpuio_out_set(cpu->mpuio, 3, misc_gpio[6]);
84
+ qdev_connect_gpio_out(cpu->gpio, PALMTE_MMC_POWER_GPIO,
85
+ qdev_get_gpio_in(misc_gpio, 0));
86
+ qdev_connect_gpio_out(cpu->gpio, PALMTE_SPEAKER_GPIO,
87
+ qdev_get_gpio_in(misc_gpio, 1));
88
+ qdev_connect_gpio_out(cpu->gpio, 11, qdev_get_gpio_in(misc_gpio, 2));
89
+ qdev_connect_gpio_out(cpu->gpio, 12, qdev_get_gpio_in(misc_gpio, 3));
90
+ qdev_connect_gpio_out(cpu->gpio, 13, qdev_get_gpio_in(misc_gpio, 4));
91
+ omap_mpuio_out_set(cpu->mpuio, 1, qdev_get_gpio_in(misc_gpio, 5));
92
+ omap_mpuio_out_set(cpu->mpuio, 3, qdev_get_gpio_in(misc_gpio, 6));
93
94
/* Reset some inputs to initial state. */
95
qemu_irq_lower(qdev_get_gpio_in(cpu->gpio, PALMTE_USBDETECT_GPIO));
96
@@ -XXX,XX +XXX,XX @@ static void palmte_machine_init(MachineClass *mc)
97
}
98
99
DEFINE_MACHINE("cheetah", palmte_machine_init)
100
+
101
+static void palm_register_types(void)
102
+{
103
+ type_register_static(&palm_misc_gpio_info);
104
+}
105
+
106
+type_init(palm_register_types)
107
--
47
--
108
2.20.1
48
2.20.1
109
49
110
50
diff view generated by jsdifflib
1
Remove hard-tabs from palm.c.
1
The NVIC provides an outbound qemu_irq "SYSRESETREQ" which it signals
2
when the guest sets the SYSRESETREQ bit in the AIRCR register. This
3
matches the hardware design (where the CPU has a signal of this name
4
and it is up to the SoC to connect that up to an actual reset
5
mechanism), but in QEMU it mostly results in duplicated code in SoC
6
objects and bugs where SoC model implementors forget to wire up the
7
SYSRESETREQ line.
8
9
Provide a default behaviour for the case where SYSRESETREQ is not
10
actually connected to anything: use qemu_system_reset_request() to
11
perform a system reset. This will allow us to remove the
12
implementations of SYSRESETREQ handling from the boards where that's
13
exactly what it does, and also fixes the bugs in the board models
14
which forgot to wire up the signal:
15
16
* microbit
17
* mps2-an385
18
* mps2-an505
19
* mps2-an511
20
* mps2-an521
21
* musca-a
22
* musca-b1
23
* netduino
24
* netduinoplus2
25
26
We still allow the board to wire up the signal if it needs to, in case
27
we need to model more complicated reset controller logic or to model
28
buggy SoC hardware which forgot to wire up the line itself. But
29
defaulting to "reset the system" is more often going to be correct
30
than defaulting to "do nothing".
2
31
3
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
32
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
4
Reviewed-by: Li Qiang <liq3ea@gmail.com>
5
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
33
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
6
Message-id: 20200628214230.2592-2-peter.maydell@linaro.org
34
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
35
Message-id: 20200728103744.6909-3-peter.maydell@linaro.org
7
---
36
---
8
hw/arm/palm.c | 64 +++++++++++++++++++++++++--------------------------
37
include/hw/arm/armv7m.h | 4 +++-
9
1 file changed, 32 insertions(+), 32 deletions(-)
38
hw/intc/armv7m_nvic.c | 17 ++++++++++++++++-
39
2 files changed, 19 insertions(+), 2 deletions(-)
10
40
11
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
41
diff --git a/include/hw/arm/armv7m.h b/include/hw/arm/armv7m.h
12
index XXXXXXX..XXXXXXX 100644
42
index XXXXXXX..XXXXXXX 100644
13
--- a/hw/arm/palm.c
43
--- a/include/hw/arm/armv7m.h
14
+++ b/hw/arm/palm.c
44
+++ b/include/hw/arm/armv7m.h
15
@@ -XXX,XX +XXX,XX @@ static const MemoryRegionOps static_ops = {
45
@@ -XXX,XX +XXX,XX @@ typedef struct {
16
/* Palm Tunsgten|E support */
46
17
47
/* ARMv7M container object.
18
/* Shared GPIOs */
48
* + Unnamed GPIO input lines: external IRQ lines for the NVIC
19
-#define PALMTE_USBDETECT_GPIO    0
49
- * + Named GPIO output SYSRESETREQ: signalled for guest AIRCR.SYSRESETREQ
20
-#define PALMTE_USB_OR_DC_GPIO    1
50
+ * + Named GPIO output SYSRESETREQ: signalled for guest AIRCR.SYSRESETREQ.
21
-#define PALMTE_TSC_GPIO        4
51
+ * If this GPIO is not wired up then the NVIC will default to performing
22
-#define PALMTE_PINTDAV_GPIO    6
52
+ * a qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET).
23
-#define PALMTE_MMC_WP_GPIO    8
53
* + Property "cpu-type": CPU type to instantiate
24
-#define PALMTE_MMC_POWER_GPIO    9
54
* + Property "num-irq": number of external IRQ lines
25
-#define PALMTE_HDQ_GPIO        11
55
* + Property "memory": MemoryRegion defining the physical address space
26
-#define PALMTE_HEADPHONES_GPIO    14
56
diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c
27
-#define PALMTE_SPEAKER_GPIO    15
57
index XXXXXXX..XXXXXXX 100644
28
+#define PALMTE_USBDETECT_GPIO 0
58
--- a/hw/intc/armv7m_nvic.c
29
+#define PALMTE_USB_OR_DC_GPIO 1
59
+++ b/hw/intc/armv7m_nvic.c
30
+#define PALMTE_TSC_GPIO 4
60
@@ -XXX,XX +XXX,XX @@
31
+#define PALMTE_PINTDAV_GPIO 6
61
#include "hw/intc/armv7m_nvic.h"
32
+#define PALMTE_MMC_WP_GPIO 8
62
#include "hw/irq.h"
33
+#define PALMTE_MMC_POWER_GPIO 9
63
#include "hw/qdev-properties.h"
34
+#define PALMTE_HDQ_GPIO 11
64
+#include "sysemu/runstate.h"
35
+#define PALMTE_HEADPHONES_GPIO 14
65
#include "target/arm/cpu.h"
36
+#define PALMTE_SPEAKER_GPIO 15
66
#include "exec/exec-all.h"
37
/* MPU private GPIOs */
67
#include "exec/memop.h"
38
-#define PALMTE_DC_GPIO        2
68
@@ -XXX,XX +XXX,XX @@ static const uint8_t nvic_id[] = {
39
-#define PALMTE_MMC_SWITCH_GPIO    4
69
0x00, 0xb0, 0x1b, 0x00, 0x0d, 0xe0, 0x05, 0xb1
40
-#define PALMTE_MMC1_GPIO    6
41
-#define PALMTE_MMC2_GPIO    7
42
-#define PALMTE_MMC3_GPIO    11
43
+#define PALMTE_DC_GPIO 2
44
+#define PALMTE_MMC_SWITCH_GPIO 4
45
+#define PALMTE_MMC1_GPIO 6
46
+#define PALMTE_MMC2_GPIO 7
47
+#define PALMTE_MMC3_GPIO 11
48
49
static MouseTransformInfo palmte_pointercal = {
50
.x = 320,
51
@@ -XXX,XX +XXX,XX @@ static struct {
52
int column;
53
} palmte_keymap[0x80] = {
54
[0 ... 0x7f] = { -1, -1 },
55
- [0x3b] = { 0, 0 },    /* F1    -> Calendar */
56
- [0x3c] = { 1, 0 },    /* F2    -> Contacts */
57
- [0x3d] = { 2, 0 },    /* F3    -> Tasks List */
58
- [0x3e] = { 3, 0 },    /* F4    -> Note Pad */
59
- [0x01] = { 4, 0 },    /* Esc    -> Power */
60
- [0x4b] = { 0, 1 },    /*      Left */
61
- [0x50] = { 1, 1 },    /*      Down */
62
- [0x48] = { 2, 1 },    /*     Up */
63
- [0x4d] = { 3, 1 },    /*     Right */
64
- [0x4c] = { 4, 1 },    /*      Centre */
65
- [0x39] = { 4, 1 },    /* Spc    -> Centre */
66
+ [0x3b] = { 0, 0 }, /* F1 -> Calendar */
67
+ [0x3c] = { 1, 0 }, /* F2 -> Contacts */
68
+ [0x3d] = { 2, 0 }, /* F3 -> Tasks List */
69
+ [0x3e] = { 3, 0 }, /* F4 -> Note Pad */
70
+ [0x01] = { 4, 0 }, /* Esc -> Power */
71
+ [0x4b] = { 0, 1 }, /* Left */
72
+ [0x50] = { 1, 1 }, /* Down */
73
+ [0x48] = { 2, 1 }, /* Up */
74
+ [0x4d] = { 3, 1 }, /* Right */
75
+ [0x4c] = { 4, 1 }, /* Centre */
76
+ [0x39] = { 4, 1 }, /* Spc -> Centre */
77
};
70
};
78
71
79
static void palmte_button_event(void *opaque, int keycode)
72
+static void signal_sysresetreq(NVICState *s)
80
@@ -XXX,XX +XXX,XX @@ static void palmte_gpio_setup(struct omap_mpu_state_s *cpu)
73
+{
81
[PALMTE_MMC_SWITCH_GPIO]));
74
+ if (qemu_irq_is_connected(s->sysresetreq)) {
82
75
+ qemu_irq_pulse(s->sysresetreq);
83
misc_gpio = qemu_allocate_irqs(palmte_onoff_gpios, cpu, 7);
76
+ } else {
84
- qdev_connect_gpio_out(cpu->gpio, PALMTE_MMC_POWER_GPIO,    misc_gpio[0]);
77
+ /*
85
- qdev_connect_gpio_out(cpu->gpio, PALMTE_SPEAKER_GPIO,    misc_gpio[1]);
78
+ * Default behaviour if the SoC doesn't need to wire up
86
- qdev_connect_gpio_out(cpu->gpio, 11,            misc_gpio[2]);
79
+ * SYSRESETREQ (eg to a system reset controller of some kind):
87
- qdev_connect_gpio_out(cpu->gpio, 12,            misc_gpio[3]);
80
+ * perform a system reset via the usual QEMU API.
88
- qdev_connect_gpio_out(cpu->gpio, 13,            misc_gpio[4]);
81
+ */
89
- omap_mpuio_out_set(cpu->mpuio, 1,                misc_gpio[5]);
82
+ qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
90
- omap_mpuio_out_set(cpu->mpuio, 3,                misc_gpio[6]);
83
+ }
91
+ qdev_connect_gpio_out(cpu->gpio, PALMTE_MMC_POWER_GPIO, misc_gpio[0]);
84
+}
92
+ qdev_connect_gpio_out(cpu->gpio, PALMTE_SPEAKER_GPIO, misc_gpio[1]);
85
+
93
+ qdev_connect_gpio_out(cpu->gpio, 11, misc_gpio[2]);
86
static int nvic_pending_prio(NVICState *s)
94
+ qdev_connect_gpio_out(cpu->gpio, 12, misc_gpio[3]);
87
{
95
+ qdev_connect_gpio_out(cpu->gpio, 13, misc_gpio[4]);
88
/* return the group priority of the current pending interrupt,
96
+ omap_mpuio_out_set(cpu->mpuio, 1, misc_gpio[5]);
89
@@ -XXX,XX +XXX,XX @@ static void nvic_writel(NVICState *s, uint32_t offset, uint32_t value,
97
+ omap_mpuio_out_set(cpu->mpuio, 3, misc_gpio[6]);
90
if (value & R_V7M_AIRCR_SYSRESETREQ_MASK) {
98
91
if (attrs.secure ||
99
/* Reset some inputs to initial state. */
92
!(cpu->env.v7m.aircr & R_V7M_AIRCR_SYSRESETREQS_MASK)) {
100
qemu_irq_lower(qdev_get_gpio_in(cpu->gpio, PALMTE_USBDETECT_GPIO));
93
- qemu_irq_pulse(s->sysresetreq);
94
+ signal_sysresetreq(s);
95
}
96
}
97
if (value & R_V7M_AIRCR_VECTCLRACTIVE_MASK) {
101
--
98
--
102
2.20.1
99
2.20.1
103
100
104
101
diff view generated by jsdifflib
1
Currently we have a free-floating set of IRQs and a function
1
The MSF2 SoC model and the Stellaris board code both wire
2
tosa_out_switch() which handle the GPIO lines on the tosa board which
2
SYSRESETREQ up to a function that just invokes
3
connect to LEDs, and another free-floating IRQ and tosa_reset()
3
qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
4
function to handle the GPIO line that resets the system. Encapsulate
4
This is now the default action that the NVIC does if the line is
5
this behaviour in a simple QOM device.
5
not connected, so we can delete the handling code.
6
7
This commit fixes Coverity issue CID 1421929 (which pointed out that
8
the 'outsignals' in tosa_gpio_setup() were leaked), because it
9
removes the use of the qemu_allocate_irqs() API from this code
10
entirely.
11
6
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
7
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
8
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
14
Message-id: 20200628203748.14250-3-peter.maydell@linaro.org
9
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
10
Message-id: 20200728103744.6909-4-peter.maydell@linaro.org
15
---
11
---
16
hw/arm/tosa.c | 88 +++++++++++++++++++++++++++++++++++++--------------
12
hw/arm/msf2-soc.c | 11 -----------
17
1 file changed, 64 insertions(+), 24 deletions(-)
13
hw/arm/stellaris.c | 12 ------------
14
2 files changed, 23 deletions(-)
18
15
19
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
16
diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c
20
index XXXXXXX..XXXXXXX 100644
17
index XXXXXXX..XXXXXXX 100644
21
--- a/hw/arm/tosa.c
18
--- a/hw/arm/msf2-soc.c
22
+++ b/hw/arm/tosa.c
19
+++ b/hw/arm/msf2-soc.c
23
@@ -XXX,XX +XXX,XX @@ static void tosa_microdrive_attach(PXA2xxState *cpu)
20
@@ -XXX,XX +XXX,XX @@
24
pxa2xx_pcmcia_attach(cpu->pcmcia[0], md);
21
#include "hw/irq.h"
22
#include "hw/arm/msf2-soc.h"
23
#include "hw/misc/unimp.h"
24
-#include "sysemu/runstate.h"
25
#include "sysemu/sysemu.h"
26
27
#define MSF2_TIMER_BASE 0x40004000
28
@@ -XXX,XX +XXX,XX @@ static const int spi_irq[MSF2_NUM_SPIS] = { 2, 3 };
29
static const int uart_irq[MSF2_NUM_UARTS] = { 10, 11 };
30
static const int timer_irq[MSF2_NUM_TIMERS] = { 14, 15 };
31
32
-static void do_sys_reset(void *opaque, int n, int level)
33
-{
34
- if (level) {
35
- qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
36
- }
37
-}
38
-
39
static void m2sxxx_soc_initfn(Object *obj)
40
{
41
MSF2State *s = MSF2_SOC(obj);
42
@@ -XXX,XX +XXX,XX @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp)
43
return;
44
}
45
46
- qdev_connect_gpio_out_named(DEVICE(&s->armv7m.nvic), "SYSRESETREQ", 0,
47
- qemu_allocate_irq(&do_sys_reset, NULL, 0));
48
-
49
system_clock_scale = NANOSECONDS_PER_SECOND / s->m3clk;
50
51
for (i = 0; i < MSF2_NUM_UARTS; i++) {
52
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
53
index XXXXXXX..XXXXXXX 100644
54
--- a/hw/arm/stellaris.c
55
+++ b/hw/arm/stellaris.c
56
@@ -XXX,XX +XXX,XX @@
57
#include "hw/boards.h"
58
#include "qemu/log.h"
59
#include "exec/address-spaces.h"
60
-#include "sysemu/runstate.h"
61
#include "sysemu/sysemu.h"
62
#include "hw/arm/armv7m.h"
63
#include "hw/char/pl011.h"
64
@@ -XXX,XX +XXX,XX @@ static void stellaris_adc_init(Object *obj)
65
qdev_init_gpio_in(dev, stellaris_adc_trigger, 1);
25
}
66
}
26
67
27
-static void tosa_out_switch(void *opaque, int line, int level)
68
-static
28
+/*
69
-void do_sys_reset(void *opaque, int n, int level)
29
+ * Encapsulation of some GPIO line behaviour for the Tosa board
70
-{
30
+ *
71
- if (level) {
31
+ * QEMU interface:
72
- qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
32
+ * + named GPIO inputs "leds[0..3]": assert to light LEDs
73
- }
33
+ * + named GPIO input "reset": when asserted, resets the system
74
-}
34
+ */
75
-
35
+
76
/* Board init. */
36
+#define TYPE_TOSA_MISC_GPIO "tosa-misc-gpio"
77
static stellaris_board_info stellaris_boards[] = {
37
+#define TOSA_MISC_GPIO(obj) \
78
{ "LM3S811EVB",
38
+ OBJECT_CHECK(TosaMiscGPIOState, (obj), TYPE_TOSA_MISC_GPIO)
79
@@ -XXX,XX +XXX,XX @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
39
+
80
/* This will exit with an error if the user passed us a bad cpu_type */
40
+typedef struct TosaMiscGPIOState {
81
sysbus_realize_and_unref(SYS_BUS_DEVICE(nvic), &error_fatal);
41
+ SysBusDevice parent_obj;
82
42
+} TosaMiscGPIOState;
83
- qdev_connect_gpio_out_named(nvic, "SYSRESETREQ", 0,
43
+
84
- qemu_allocate_irq(&do_sys_reset, NULL, 0));
44
+static void tosa_gpio_leds(void *opaque, int line, int level)
85
-
45
{
86
if (board->dc1 & (1 << 16)) {
46
switch (line) {
87
dev = sysbus_create_varargs(TYPE_STELLARIS_ADC, 0x40038000,
47
- case 0:
88
qdev_get_gpio_in(nvic, 14),
48
- fprintf(stderr, "blue LED %s.\n", level ? "on" : "off");
49
- break;
50
- case 1:
51
- fprintf(stderr, "green LED %s.\n", level ? "on" : "off");
52
- break;
53
- case 2:
54
- fprintf(stderr, "amber LED %s.\n", level ? "on" : "off");
55
- break;
56
- case 3:
57
- fprintf(stderr, "wlan LED %s.\n", level ? "on" : "off");
58
- break;
59
- default:
60
- fprintf(stderr, "Uhandled out event: %d = %d\n", line, level);
61
- break;
62
+ case 0:
63
+ fprintf(stderr, "blue LED %s.\n", level ? "on" : "off");
64
+ break;
65
+ case 1:
66
+ fprintf(stderr, "green LED %s.\n", level ? "on" : "off");
67
+ break;
68
+ case 2:
69
+ fprintf(stderr, "amber LED %s.\n", level ? "on" : "off");
70
+ break;
71
+ case 3:
72
+ fprintf(stderr, "wlan LED %s.\n", level ? "on" : "off");
73
+ break;
74
+ default:
75
+ g_assert_not_reached();
76
}
77
}
78
79
@@ -XXX,XX +XXX,XX @@ static void tosa_reset(void *opaque, int line, int level)
80
}
81
}
82
83
+static void tosa_misc_gpio_init(Object *obj)
84
+{
85
+ DeviceState *dev = DEVICE(obj);
86
+
87
+ qdev_init_gpio_in_named(dev, tosa_gpio_leds, "leds", 4);
88
+ qdev_init_gpio_in_named(dev, tosa_reset, "reset", 1);
89
+}
90
+
91
static void tosa_gpio_setup(PXA2xxState *cpu,
92
DeviceState *scp0,
93
DeviceState *scp1,
94
TC6393xbState *tmio)
95
{
96
- qemu_irq *outsignals = qemu_allocate_irqs(tosa_out_switch, cpu, 4);
97
- qemu_irq reset;
98
+ DeviceState *misc_gpio;
99
+
100
+ misc_gpio = sysbus_create_simple(TYPE_TOSA_MISC_GPIO, -1, NULL);
101
102
/* MMC/SD host */
103
pxa2xx_mmci_handlers(cpu->mmc,
104
@@ -XXX,XX +XXX,XX @@ static void tosa_gpio_setup(PXA2xxState *cpu,
105
qemu_irq_invert(qdev_get_gpio_in(cpu->gpio, TOSA_GPIO_nSD_DETECT)));
106
107
/* Handle reset */
108
- reset = qemu_allocate_irq(tosa_reset, cpu, 0);
109
- qdev_connect_gpio_out(cpu->gpio, TOSA_GPIO_ON_RESET, reset);
110
+ qdev_connect_gpio_out(cpu->gpio, TOSA_GPIO_ON_RESET,
111
+ qdev_get_gpio_in_named(misc_gpio, "reset", 0));
112
113
/* PCMCIA signals: card's IRQ and Card-Detect */
114
pxa2xx_pcmcia_set_irq_cb(cpu->pcmcia[0],
115
@@ -XXX,XX +XXX,XX @@ static void tosa_gpio_setup(PXA2xxState *cpu,
116
qdev_get_gpio_in(cpu->gpio, TOSA_GPIO_JC_CF_IRQ),
117
NULL);
118
119
- qdev_connect_gpio_out(scp1, TOSA_GPIO_BT_LED, outsignals[0]);
120
- qdev_connect_gpio_out(scp1, TOSA_GPIO_NOTE_LED, outsignals[1]);
121
- qdev_connect_gpio_out(scp1, TOSA_GPIO_CHRG_ERR_LED, outsignals[2]);
122
- qdev_connect_gpio_out(scp1, TOSA_GPIO_WLAN_LED, outsignals[3]);
123
+ qdev_connect_gpio_out(scp1, TOSA_GPIO_BT_LED,
124
+ qdev_get_gpio_in_named(misc_gpio, "leds", 0));
125
+ qdev_connect_gpio_out(scp1, TOSA_GPIO_NOTE_LED,
126
+ qdev_get_gpio_in_named(misc_gpio, "leds", 1));
127
+ qdev_connect_gpio_out(scp1, TOSA_GPIO_CHRG_ERR_LED,
128
+ qdev_get_gpio_in_named(misc_gpio, "leds", 2));
129
+ qdev_connect_gpio_out(scp1, TOSA_GPIO_WLAN_LED,
130
+ qdev_get_gpio_in_named(misc_gpio, "leds", 3));
131
132
qdev_connect_gpio_out(scp1, TOSA_GPIO_TC6393XB_L3V_ON, tc6393xb_l3v_get(tmio));
133
134
@@ -XXX,XX +XXX,XX @@ static const TypeInfo tosa_ssp_info = {
135
.class_init = tosa_ssp_class_init,
136
};
137
138
+static const TypeInfo tosa_misc_gpio_info = {
139
+ .name = "tosa-misc-gpio",
140
+ .parent = TYPE_SYS_BUS_DEVICE,
141
+ .instance_size = sizeof(TosaMiscGPIOState),
142
+ .instance_init = tosa_misc_gpio_init,
143
+ /*
144
+ * No class init required: device has no internal state so does not
145
+ * need to set up reset or vmstate, and has no realize method.
146
+ */
147
+};
148
+
149
static void tosa_register_types(void)
150
{
151
type_register_static(&tosa_dac_info);
152
type_register_static(&tosa_ssp_info);
153
+ type_register_static(&tosa_misc_gpio_info);
154
}
155
156
type_init(tosa_register_types)
157
--
89
--
158
2.20.1
90
2.20.1
159
91
160
92
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 mtedesc that was constructed was not actually passed in.
3
The definition of top_bit used in this function is one higher
4
Found by Coverity (CID 1429996).
4
than that used in the Arm ARM psuedo-code, which put the error
5
indication at top_bit - 1 at the wrong place, which meant that
6
it wasn't visible to Auth.
5
7
6
Fixes: d28d12f008e
8
Fixing the definition of top_bit requires more changes, because
9
its most common use is for the count of bits in top_bit:bot_bit,
10
which would then need to be computed as top_bit - bot_bit + 1.
11
12
For now, prefer the minimal fix to the error indication alone.
13
14
Fixes: 63ff0ca94cb
15
Reported-by: Derrick McKee <derrick.mckee@gmail.com>
7
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
16
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
17
Message-id: 20200728195706.11087-1-richard.henderson@linaro.org
9
Message-id: 20200706202345.193676-1-richard.henderson@linaro.org
18
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
19
[PMM: added comment about the divergence from the pseudocode]
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
20
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
21
---
12
target/arm/translate-sve.c | 2 +-
22
target/arm/pauth_helper.c | 6 +++++-
13
1 file changed, 1 insertion(+), 1 deletion(-)
23
tests/tcg/aarch64/pauth-5.c | 33 +++++++++++++++++++++++++++++++
24
tests/tcg/aarch64/Makefile.target | 2 +-
25
3 files changed, 39 insertions(+), 2 deletions(-)
26
create mode 100644 tests/tcg/aarch64/pauth-5.c
14
27
15
diff --git a/target/arm/translate-sve.c b/target/arm/translate-sve.c
28
diff --git a/target/arm/pauth_helper.c b/target/arm/pauth_helper.c
16
index XXXXXXX..XXXXXXX 100644
29
index XXXXXXX..XXXXXXX 100644
17
--- a/target/arm/translate-sve.c
30
--- a/target/arm/pauth_helper.c
18
+++ b/target/arm/translate-sve.c
31
+++ b/target/arm/pauth_helper.c
19
@@ -XXX,XX +XXX,XX @@ static void do_mem_zpz(DisasContext *s, int zt, int pg, int zm,
32
@@ -XXX,XX +XXX,XX @@ static uint64_t pauth_addpac(CPUARMState *env, uint64_t ptr, uint64_t modifier,
20
desc = FIELD_DP32(desc, MTEDESC, ESIZE, 1 << msz);
33
*/
21
desc <<= SVE_MTEDESC_SHIFT;
34
test = sextract64(ptr, bot_bit, top_bit - bot_bit);
35
if (test != 0 && test != -1) {
36
- pac ^= MAKE_64BIT_MASK(top_bit - 1, 1);
37
+ /*
38
+ * Note that our top_bit is one greater than the pseudocode's
39
+ * version, hence "- 2" here.
40
+ */
41
+ pac ^= MAKE_64BIT_MASK(top_bit - 2, 1);
22
}
42
}
23
- desc = simd_desc(vsz, vsz, scale);
43
24
+ desc = simd_desc(vsz, vsz, desc | scale);
44
/*
25
t_desc = tcg_const_i32(desc);
45
diff --git a/tests/tcg/aarch64/pauth-5.c b/tests/tcg/aarch64/pauth-5.c
26
46
new file mode 100644
27
tcg_gen_addi_ptr(t_pg, cpu_env, pred_full_reg_offset(s, pg));
47
index XXXXXXX..XXXXXXX
48
--- /dev/null
49
+++ b/tests/tcg/aarch64/pauth-5.c
50
@@ -XXX,XX +XXX,XX @@
51
+#include <assert.h>
52
+
53
+static int x;
54
+
55
+int main()
56
+{
57
+ int *p0 = &x, *p1, *p2, *p3;
58
+ unsigned long salt = 0;
59
+
60
+ /*
61
+ * With TBI enabled and a 48-bit VA, there are 7 bits of auth, and so
62
+ * a 1/128 chance of auth = pac(ptr,key,salt) producing zero.
63
+ * Find a salt that creates auth != 0.
64
+ */
65
+ do {
66
+ salt++;
67
+ asm("pacda %0, %1" : "=r"(p1) : "r"(salt), "0"(p0));
68
+ } while (p0 == p1);
69
+
70
+ /*
71
+ * This pac must fail, because the input pointer bears an encryption,
72
+ * and so is not properly extended within bits [55:47]. This will
73
+ * toggle bit 54 in the output...
74
+ */
75
+ asm("pacda %0, %1" : "=r"(p2) : "r"(salt), "0"(p1));
76
+
77
+ /* ... so that the aut must fail, setting bit 53 in the output ... */
78
+ asm("autda %0, %1" : "=r"(p3) : "r"(salt), "0"(p2));
79
+
80
+ /* ... which means this equality must not hold. */
81
+ assert(p3 != p0);
82
+ return 0;
83
+}
84
diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target
85
index XXXXXXX..XXXXXXX 100644
86
--- a/tests/tcg/aarch64/Makefile.target
87
+++ b/tests/tcg/aarch64/Makefile.target
88
@@ -XXX,XX +XXX,XX @@ run-fcvt: fcvt
89
90
# Pauth Tests
91
ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_ARMV8_3),)
92
-AARCH64_TESTS += pauth-1 pauth-2 pauth-4
93
+AARCH64_TESTS += pauth-1 pauth-2 pauth-4 pauth-5
94
pauth-%: CFLAGS += -march=armv8.3-a
95
run-pauth-%: QEMU_OPTS += -cpu max
96
run-plugin-pauth-%: QEMU_OPTS += -cpu max
28
--
97
--
29
2.20.1
98
2.20.1
30
99
31
100
diff view generated by jsdifflib
Deleted patch
1
From: Jean-Christophe Dubois <jcd@tribudubois.net>
2
1
3
Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net>
4
Message-id: 9f8923ecd974160ae8f634c275b1100c2cbe66d7.1593806826.git.jcd@tribudubois.net
5
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
6
[PMM: updated for object_property_set_uint() argument reordering]
7
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
8
---
9
include/hw/arm/fsl-imx25.h | 1 +
10
hw/arm/fsl-imx25.c | 7 +++++++
11
2 files changed, 8 insertions(+)
12
13
diff --git a/include/hw/arm/fsl-imx25.h b/include/hw/arm/fsl-imx25.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/include/hw/arm/fsl-imx25.h
16
+++ b/include/hw/arm/fsl-imx25.h
17
@@ -XXX,XX +XXX,XX @@ typedef struct FslIMX25State {
18
MemoryRegion rom[2];
19
MemoryRegion iram;
20
MemoryRegion iram_alias;
21
+ uint32_t phy_num;
22
} FslIMX25State;
23
24
/**
25
diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
26
index XXXXXXX..XXXXXXX 100644
27
--- a/hw/arm/fsl-imx25.c
28
+++ b/hw/arm/fsl-imx25.c
29
@@ -XXX,XX +XXX,XX @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
30
epit_table[i].irq));
31
}
32
33
+ object_property_set_uint(OBJECT(&s->fec), "phy-num", s->phy_num, &err);
34
qdev_set_nic_properties(DEVICE(&s->fec), &nd_table[0]);
35
36
if (!sysbus_realize(SYS_BUS_DEVICE(&s->fec), errp)) {
37
@@ -XXX,XX +XXX,XX @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
38
&s->iram_alias);
39
}
40
41
+static Property fsl_imx25_properties[] = {
42
+ DEFINE_PROP_UINT32("fec-phy-num", FslIMX25State, phy_num, 0),
43
+ DEFINE_PROP_END_OF_LIST(),
44
+};
45
+
46
static void fsl_imx25_class_init(ObjectClass *oc, void *data)
47
{
48
DeviceClass *dc = DEVICE_CLASS(oc);
49
50
+ device_class_set_props(dc, fsl_imx25_properties);
51
dc->realize = fsl_imx25_realize;
52
dc->desc = "i.MX25 SOC";
53
/*
54
--
55
2.20.1
56
57
diff view generated by jsdifflib
Deleted patch
1
From: Jean-Christophe Dubois <jcd@tribudubois.net>
2
1
3
Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net>
4
Message-id: 05a64e83eb1c0c865ac077b22c599425c024c02c.1593806826.git.jcd@tribudubois.net
5
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
6
[PMM: updated for object_property_set_uint() argument reordering]
7
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
8
---
9
include/hw/arm/fsl-imx6.h | 1 +
10
hw/arm/fsl-imx6.c | 7 +++++++
11
2 files changed, 8 insertions(+)
12
13
diff --git a/include/hw/arm/fsl-imx6.h b/include/hw/arm/fsl-imx6.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/include/hw/arm/fsl-imx6.h
16
+++ b/include/hw/arm/fsl-imx6.h
17
@@ -XXX,XX +XXX,XX @@ typedef struct FslIMX6State {
18
MemoryRegion caam;
19
MemoryRegion ocram;
20
MemoryRegion ocram_alias;
21
+ uint32_t phy_num;
22
} FslIMX6State;
23
24
25
diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
26
index XXXXXXX..XXXXXXX 100644
27
--- a/hw/arm/fsl-imx6.c
28
+++ b/hw/arm/fsl-imx6.c
29
@@ -XXX,XX +XXX,XX @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
30
spi_table[i].irq));
31
}
32
33
+ object_property_set_uint(OBJECT(&s->eth), "phy-num", s->phy_num, &err);
34
qdev_set_nic_properties(DEVICE(&s->eth), &nd_table[0]);
35
if (!sysbus_realize(SYS_BUS_DEVICE(&s->eth), errp)) {
36
return;
37
@@ -XXX,XX +XXX,XX @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
38
&s->ocram_alias);
39
}
40
41
+static Property fsl_imx6_properties[] = {
42
+ DEFINE_PROP_UINT32("fec-phy-num", FslIMX6State, phy_num, 0),
43
+ DEFINE_PROP_END_OF_LIST(),
44
+};
45
+
46
static void fsl_imx6_class_init(ObjectClass *oc, void *data)
47
{
48
DeviceClass *dc = DEVICE_CLASS(oc);
49
50
+ device_class_set_props(dc, fsl_imx6_properties);
51
dc->realize = fsl_imx6_realize;
52
dc->desc = "i.MX6 SOC";
53
/* Reason: Uses serial_hd() in the realize() function */
54
--
55
2.20.1
56
57
diff view generated by jsdifflib
Deleted patch
1
From: Jean-Christophe Dubois <jcd@tribudubois.net>
2
1
3
Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net>
4
Message-id: c850187322be9930e47c8b234c385a7d0da245cb.1593806826.git.jcd@tribudubois.net
5
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
6
[PMM: updated for object_property_set_uint() argument reordering]
7
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
8
---
9
include/hw/arm/fsl-imx7.h | 1 +
10
hw/arm/fsl-imx7.c | 9 +++++++++
11
2 files changed, 10 insertions(+)
12
13
diff --git a/include/hw/arm/fsl-imx7.h b/include/hw/arm/fsl-imx7.h
14
index XXXXXXX..XXXXXXX 100644
15
--- a/include/hw/arm/fsl-imx7.h
16
+++ b/include/hw/arm/fsl-imx7.h
17
@@ -XXX,XX +XXX,XX @@ typedef struct FslIMX7State {
18
IMX7GPRState gpr;
19
ChipideaState usb[FSL_IMX7_NUM_USBS];
20
DesignwarePCIEHost pcie;
21
+ uint32_t phy_num[FSL_IMX7_NUM_ETHS];
22
} FslIMX7State;
23
24
enum FslIMX7MemoryMap {
25
diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
26
index XXXXXXX..XXXXXXX 100644
27
--- a/hw/arm/fsl-imx7.c
28
+++ b/hw/arm/fsl-imx7.c
29
@@ -XXX,XX +XXX,XX @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
30
FSL_IMX7_ENET2_ADDR,
31
};
32
33
+ object_property_set_uint(OBJECT(&s->eth[i]), "phy-num",
34
+ s->phy_num[i], &error_abort);
35
object_property_set_uint(OBJECT(&s->eth[i]), "tx-ring-num",
36
FSL_IMX7_ETH_NUM_TX_RINGS, &error_abort);
37
qdev_set_nic_properties(DEVICE(&s->eth[i]), &nd_table[i]);
38
@@ -XXX,XX +XXX,XX @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
39
FSL_IMX7_PCIE_PHY_SIZE);
40
}
41
42
+static Property fsl_imx7_properties[] = {
43
+ DEFINE_PROP_UINT32("fec1-phy-num", FslIMX7State, phy_num[0], 0),
44
+ DEFINE_PROP_UINT32("fec2-phy-num", FslIMX7State, phy_num[1], 1),
45
+ DEFINE_PROP_END_OF_LIST(),
46
+};
47
+
48
static void fsl_imx7_class_init(ObjectClass *oc, void *data)
49
{
50
DeviceClass *dc = DEVICE_CLASS(oc);
51
52
+ device_class_set_props(dc, fsl_imx7_properties);
53
dc->realize = fsl_imx7_realize;
54
55
/* Reason: Uses serial_hds and nd_table in realize() directly */
56
--
57
2.20.1
58
59
diff view generated by jsdifflib
Deleted patch
1
From: Aaron Lindsay <aaron@os.amperecomputing.com>
2
1
3
Raw writes to this register when in KVM mode can cause interrupts to be
4
raised (even when the PMU is disabled). Because the underlying state is
5
already aliased to PMINTENSET (which already provides raw write
6
functions), we can safely disable raw accesses to PMINTENCLR entirely.
7
8
Signed-off-by: Aaron Lindsay <aaron@os.amperecomputing.com>
9
Message-id: 20200707152616.1917154-1-aaron@os.amperecomputing.com
10
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
---
13
target/arm/helper.c | 4 ++--
14
1 file changed, 2 insertions(+), 2 deletions(-)
15
16
diff --git a/target/arm/helper.c b/target/arm/helper.c
17
index XXXXXXX..XXXXXXX 100644
18
--- a/target/arm/helper.c
19
+++ b/target/arm/helper.c
20
@@ -XXX,XX +XXX,XX @@ static const ARMCPRegInfo v7_cp_reginfo[] = {
21
.resetvalue = 0x0 },
22
{ .name = "PMINTENCLR", .cp = 15, .crn = 9, .crm = 14, .opc1 = 0, .opc2 = 2,
23
.access = PL1_RW, .accessfn = access_tpm,
24
- .type = ARM_CP_ALIAS | ARM_CP_IO,
25
+ .type = ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW,
26
.fieldoffset = offsetof(CPUARMState, cp15.c9_pminten),
27
.writefn = pmintenclr_write, },
28
{ .name = "PMINTENCLR_EL1", .state = ARM_CP_STATE_AA64,
29
.opc0 = 3, .opc1 = 0, .crn = 9, .crm = 14, .opc2 = 2,
30
.access = PL1_RW, .accessfn = access_tpm,
31
- .type = ARM_CP_ALIAS | ARM_CP_IO,
32
+ .type = ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_NO_RAW,
33
.fieldoffset = offsetof(CPUARMState, cp15.c9_pminten),
34
.writefn = pmintenclr_write },
35
{ .name = "CCSIDR", .state = ARM_CP_STATE_BOTH,
36
--
37
2.20.1
38
39
diff view generated by jsdifflib
Deleted patch
1
From: Eric Auger <eric.auger@redhat.com>
2
1
3
Coverity points out (CID 1430180) that the new case is missing
4
break or a /* fallthrough */ comment. Break is the right thing to
5
do as in that case, tail is not used.
6
7
Fixes 1733eebb9e ("virtio-iommu: Implement RESV_MEM probe request")
8
Signed-off-by: Eric Auger <eric.auger@redhat.com>
9
Reported-by: Peter Maydell <peter.maydell@linaro.org>
10
Message-id: 20200708160147.18426-1-eric.auger@redhat.com
11
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
---
14
hw/virtio/virtio-iommu.c | 1 +
15
1 file changed, 1 insertion(+)
16
17
diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c
18
index XXXXXXX..XXXXXXX 100644
19
--- a/hw/virtio/virtio-iommu.c
20
+++ b/hw/virtio/virtio-iommu.c
21
@@ -XXX,XX +XXX,XX @@ static void virtio_iommu_handle_command(VirtIODevice *vdev, VirtQueue *vq)
22
ptail = (struct virtio_iommu_req_tail *)
23
(buf + s->config.probe_size);
24
ptail->status = virtio_iommu_handle_probe(s, iov, iov_cnt, buf);
25
+ break;
26
}
27
default:
28
tail.status = VIRTIO_IOMMU_S_UNSUPP;
29
--
30
2.20.1
31
32
diff view generated by jsdifflib
Deleted patch
1
From: David CARLIER <devnexen@gmail.com>
2
1
3
Tell Haiku to provide various BSD functions by setting BSD_SOURCE
4
and linking libbsd.
5
6
Signed-off-by: David Carlier <devnexen@gmail.com>
7
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
8
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
9
Message-id: 20200703145614.16684-2-peter.maydell@linaro.org
10
[PMM: expanded commit message]
11
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
---
14
configure | 4 ++--
15
1 file changed, 2 insertions(+), 2 deletions(-)
16
17
diff --git a/configure b/configure
18
index XXXXXXX..XXXXXXX 100755
19
--- a/configure
20
+++ b/configure
21
@@ -XXX,XX +XXX,XX @@ SunOS)
22
;;
23
Haiku)
24
haiku="yes"
25
- QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
26
- LIBS="-lposix_error_mapper -lnetwork $LIBS"
27
+ QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -DBSD_SOURCE $QEMU_CFLAGS"
28
+ LIBS="-lposix_error_mapper -lnetwork -lbsd $LIBS"
29
;;
30
Linux)
31
audio_drv_list="try-pa oss"
32
--
33
2.20.1
34
35
diff view generated by jsdifflib
Deleted patch
1
From: David CARLIER <devnexen@gmail.com>
2
1
3
Instead of using an OS-specific ifdef test to select the "openpty()
4
is in pty.h" codepath, make configure check for the existence of
5
the header and use the new CONFIG_PTY instead.
6
7
This is necessary to build on Haiku, which also provides openpty()
8
via pty.h.
9
10
Signed-off-by: David Carlier <devnexen@gmail.com>
11
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
Message-id: 20200703145614.16684-3-peter.maydell@linaro.org
14
[PMM: Expanded commit message; rename to HAVE_PTY_H]
15
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
16
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
17
---
18
configure | 9 +++++++++
19
util/qemu-openpty.c | 2 +-
20
2 files changed, 10 insertions(+), 1 deletion(-)
21
22
diff --git a/configure b/configure
23
index XXXXXXX..XXXXXXX 100755
24
--- a/configure
25
+++ b/configure
26
@@ -XXX,XX +XXX,XX @@ else
27
l2tpv3=no
28
fi
29
30
+if check_include "pty.h" ; then
31
+ pty_h=yes
32
+else
33
+ pty_h=no
34
+fi
35
+
36
#########################################
37
# vhost interdependencies and host support
38
39
@@ -XXX,XX +XXX,XX @@ fi
40
if test "$sheepdog" = "yes" ; then
41
echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
42
fi
43
+if test "$pty_h" = "yes" ; then
44
+ echo "HAVE_PTY_H=y" >> $config_host_mak
45
+fi
46
if test "$fuzzing" = "yes" ; then
47
if test "$have_fuzzer" = "yes"; then
48
FUZZ_LDFLAGS=" -fsanitize=address,fuzzer"
49
diff --git a/util/qemu-openpty.c b/util/qemu-openpty.c
50
index XXXXXXX..XXXXXXX 100644
51
--- a/util/qemu-openpty.c
52
+++ b/util/qemu-openpty.c
53
@@ -XXX,XX +XXX,XX @@
54
#include "qemu/osdep.h"
55
#include "qemu-common.h"
56
57
-#if defined(__GLIBC__)
58
+#if defined HAVE_PTY_H
59
# include <pty.h>
60
#elif defined CONFIG_BSD
61
# include <termios.h>
62
--
63
2.20.1
64
65
diff view generated by jsdifflib
Deleted patch
1
From: David CARLIER <devnexen@gmail.com>
2
1
3
Instead of assuming that all POSIX platforms provide mlockall(),
4
test for it in configure. If the host doesn't provide this platform
5
then os_mlock() will fail -ENOSYS, as it does already on Windows.
6
7
This is necessary for Haiku, which does not have mlockall().
8
9
Signed-off-by: David Carlier <devnexen@gmail.com>
10
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
Message-id: 20200703145614.16684-4-peter.maydell@linaro.org
13
[PMM: Expanded commit message; rename to HAVE_MLOCKALL]
14
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
15
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
16
---
17
configure | 15 +++++++++++++++
18
os-posix.c | 4 ++++
19
2 files changed, 19 insertions(+)
20
21
diff --git a/configure b/configure
22
index XXXXXXX..XXXXXXX 100755
23
--- a/configure
24
+++ b/configure
25
@@ -XXX,XX +XXX,XX @@ else
26
pty_h=no
27
fi
28
29
+cat > $TMPC <<EOF
30
+#include <sys/mman.h>
31
+int main(int argc, char *argv[]) {
32
+ return mlockall(MCL_FUTURE);
33
+}
34
+EOF
35
+if compile_prog "" "" ; then
36
+ have_mlockall=yes
37
+else
38
+ have_mlockall=no
39
+fi
40
+
41
#########################################
42
# vhost interdependencies and host support
43
44
@@ -XXX,XX +XXX,XX @@ fi
45
if test "$pty_h" = "yes" ; then
46
echo "HAVE_PTY_H=y" >> $config_host_mak
47
fi
48
+if test "$have_mlockall" = "yes" ; then
49
+ echo "HAVE_MLOCKALL=y" >> $config_host_mak
50
+fi
51
if test "$fuzzing" = "yes" ; then
52
if test "$have_fuzzer" = "yes"; then
53
FUZZ_LDFLAGS=" -fsanitize=address,fuzzer"
54
diff --git a/os-posix.c b/os-posix.c
55
index XXXXXXX..XXXXXXX 100644
56
--- a/os-posix.c
57
+++ b/os-posix.c
58
@@ -XXX,XX +XXX,XX @@ bool is_daemonized(void)
59
60
int os_mlock(void)
61
{
62
+#ifdef HAVE_MLOCKALL
63
int ret = 0;
64
65
ret = mlockall(MCL_CURRENT | MCL_FUTURE);
66
@@ -XXX,XX +XXX,XX @@ int os_mlock(void)
67
}
68
69
return ret;
70
+#else
71
+ return -ENOSYS;
72
+#endif
73
}
74
--
75
2.20.1
76
77
diff view generated by jsdifflib
Deleted patch
1
From: David CARLIER <devnexen@gmail.com>
2
1
3
Regularize our handling of <sys/signal.h>: currently we include it in
4
osdep.h, but only for OpenBSD, and we include it without an ifdef
5
guard in a couple of C files. This causes problems for Haiku, which
6
doesn't have that header.
7
8
Instead, check in configure whether sys/signal.h exists, and if it
9
does then always include it from osdep.h.
10
11
Signed-off-by: David Carlier <devnexen@gmail.com>
12
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
13
Reviewed-by: Thomas Huth <thuth@redhat.com>
14
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
15
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
16
Message-id: 20200703145614.16684-5-peter.maydell@linaro.org
17
[PMM: Expanded commit message; rename to HAVE_SYS_SIGNAL_H]
18
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
19
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
20
---
21
configure | 10 ++++++++++
22
include/qemu/osdep.h | 2 +-
23
hw/xen/xen-legacy-backend.c | 1 -
24
util/oslib-posix.c | 1 -
25
4 files changed, 11 insertions(+), 3 deletions(-)
26
27
diff --git a/configure b/configure
28
index XXXXXXX..XXXXXXX 100755
29
--- a/configure
30
+++ b/configure
31
@@ -XXX,XX +XXX,XX @@ if check_include "libdrm/drm.h" ; then
32
have_drm_h=yes
33
fi
34
35
+#########################################
36
+# sys/signal.h check
37
+have_sys_signal_h=no
38
+if check_include "sys/signal.h" ; then
39
+ have_sys_signal_h=yes
40
+fi
41
+
42
##########################################
43
# VTE probe
44
45
@@ -XXX,XX +XXX,XX @@ fi
46
if test "$have_openpty" = "yes" ; then
47
echo "HAVE_OPENPTY=y" >> $config_host_mak
48
fi
49
+if test "$have_sys_signal_h" = "yes" ; then
50
+ echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak
51
+fi
52
53
# Work around a system header bug with some kernel/XFS header
54
# versions where they both try to define 'struct fsxattr':
55
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
56
index XXXXXXX..XXXXXXX 100644
57
--- a/include/qemu/osdep.h
58
+++ b/include/qemu/osdep.h
59
@@ -XXX,XX +XXX,XX @@ extern int daemon(int, int);
60
#include <setjmp.h>
61
#include <signal.h>
62
63
-#ifdef __OpenBSD__
64
+#ifdef HAVE_SYS_SIGNAL_H
65
#include <sys/signal.h>
66
#endif
67
68
diff --git a/hw/xen/xen-legacy-backend.c b/hw/xen/xen-legacy-backend.c
69
index XXXXXXX..XXXXXXX 100644
70
--- a/hw/xen/xen-legacy-backend.c
71
+++ b/hw/xen/xen-legacy-backend.c
72
@@ -XXX,XX +XXX,XX @@
73
*/
74
75
#include "qemu/osdep.h"
76
-#include <sys/signal.h>
77
78
#include "hw/sysbus.h"
79
#include "hw/boards.h"
80
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
81
index XXXXXXX..XXXXXXX 100644
82
--- a/util/oslib-posix.c
83
+++ b/util/oslib-posix.c
84
@@ -XXX,XX +XXX,XX @@
85
#include "qemu/sockets.h"
86
#include "qemu/thread.h"
87
#include <libgen.h>
88
-#include <sys/signal.h>
89
#include "qemu/cutils.h"
90
91
#ifdef CONFIG_LINUX
92
--
93
2.20.1
94
95
diff view generated by jsdifflib
Deleted patch
1
From: David CARLIER <devnexen@gmail.com>
2
1
3
Haiku doesn't provide SIGIO; fix this up in osdep.h by defining it as
4
equal to SIGPOLL.
5
6
Signed-off-by: David Carlier <devnexen@gmail.com>
7
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
8
Reviewed-by: Thomas Huth <thuth@redhat.com>
9
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
Message-id: 20200703145614.16684-6-peter.maydell@linaro.org
11
[PMM: Expanded commit message]
12
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
13
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
14
---
15
include/qemu/osdep.h | 4 ++++
16
1 file changed, 4 insertions(+)
17
18
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
19
index XXXXXXX..XXXXXXX 100644
20
--- a/include/qemu/osdep.h
21
+++ b/include/qemu/osdep.h
22
@@ -XXX,XX +XXX,XX @@ void qemu_anon_ram_free(void *ptr, size_t size);
23
#define HAVE_CHARDEV_PARPORT 1
24
#endif
25
26
+#if defined(__HAIKU__)
27
+#define SIGIO SIGPOLL
28
+#endif
29
+
30
#if defined(CONFIG_LINUX)
31
#ifndef BUS_MCEERR_AR
32
#define BUS_MCEERR_AR 4
33
--
34
2.20.1
35
36
diff view generated by jsdifflib
1
From: Wentong Wu <wentong.wu@intel.com>
1
From: Kaige Li <likaige@loongson.cn>
2
2
3
In line the semantics of DISAS_UPDATE on nios2 target with other targets
3
GCC version 4.9.4 isn't clever enough to figure out that all
4
which is to explicitly write the PC back into the cpu state before doing
4
execution paths in disas_ldst() that use 'fn' will have initialized
5
a tcg_gen_exit_tb().
5
it first, and so it warns:
6
6
7
Signed-off-by: Wentong Wu <wentong.wu@intel.com>
7
/home/LiKaige/qemu/target/arm/translate-a64.c: In function ‘disas_ldst’:
8
Message-id: 20200710233433.19729-2-wentong.wu@intel.com
8
/home/LiKaige/qemu/target/arm/translate-a64.c:3392:5: error: ‘fn’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
9
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
9
fn(cpu_reg(s, rt), clean_addr, tcg_rs, get_mem_index(s),
10
^
11
/home/LiKaige/qemu/target/arm/translate-a64.c:3318:22: note: ‘fn’ was declared here
12
AtomicThreeOpFn *fn;
13
^
14
15
Make it happy by initializing the variable to NULL.
16
17
Signed-off-by: Kaige Li <likaige@loongson.cn>
18
Message-id: 1596110248-7366-2-git-send-email-likaige@loongson.cn
19
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
20
[PMM: Clean up commit message and note which gcc version this was]
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
21
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
22
---
12
target/nios2/translate.c | 2 +-
23
target/arm/translate-a64.c | 2 +-
13
1 file changed, 1 insertion(+), 1 deletion(-)
24
1 file changed, 1 insertion(+), 1 deletion(-)
14
25
15
diff --git a/target/nios2/translate.c b/target/nios2/translate.c
26
diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
16
index XXXXXXX..XXXXXXX 100644
27
index XXXXXXX..XXXXXXX 100644
17
--- a/target/nios2/translate.c
28
--- a/target/arm/translate-a64.c
18
+++ b/target/nios2/translate.c
29
+++ b/target/arm/translate-a64.c
19
@@ -XXX,XX +XXX,XX @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns)
30
@@ -XXX,XX +XXX,XX @@ static void disas_ldst_atomic(DisasContext *s, uint32_t insn,
20
/* Indicate where the next block should start */
31
bool r = extract32(insn, 22, 1);
21
switch (dc->is_jmp) {
32
bool a = extract32(insn, 23, 1);
22
case DISAS_NEXT:
33
TCGv_i64 tcg_rs, clean_addr;
23
+ case DISAS_UPDATE:
34
- AtomicThreeOpFn *fn;
24
/* Save the current PC back into the CPU register */
35
+ AtomicThreeOpFn *fn = NULL;
25
tcg_gen_movi_tl(cpu_R[R_PC], dc->pc);
36
26
tcg_gen_exit_tb(NULL, 0);
37
if (is_vector || !dc_isar_feature(aa64_atomics, s)) {
27
@@ -XXX,XX +XXX,XX @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns)
38
unallocated_encoding(s);
28
29
default:
30
case DISAS_JUMP:
31
- case DISAS_UPDATE:
32
/* The jump will already have updated the PC register */
33
tcg_gen_exit_tb(NULL, 0);
34
break;
35
--
39
--
36
2.20.1
40
2.20.1
37
41
38
42
diff view generated by jsdifflib
1
Remove the hardcoded tabs from hw/arm/tosa.c. There aren't
1
The nrf51 SoC model wasn't setting the system_clock_scale
2
many, but since they're all in constant #defines they're not
2
global.which meant that if guest code used the systick timer in "use
3
going to go away with our usual "only when we touch a function"
3
the processor clock" mode it would hang because time never advances.
4
policy on reformatting.
4
5
Set the global to match the documented CPU clock speed for this SoC.
6
7
This SoC in fact doesn't have a SysTick timer (which is the only thing
8
currently that cares about the system_clock_scale), because it's
9
a configurable option in the Cortex-M0. However our Cortex-M0 and
10
thus our nrf51 and our micro:bit board do provide a SysTick, so
11
we ought to provide a functional one rather than a broken one.
5
12
6
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
7
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
14
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
8
Message-id: 20200628203748.14250-2-peter.maydell@linaro.org
15
Message-id: 20200727193458.31250-1-peter.maydell@linaro.org
9
---
16
---
10
hw/arm/tosa.c | 44 ++++++++++++++++++++++----------------------
17
hw/arm/nrf51_soc.c | 5 +++++
11
1 file changed, 22 insertions(+), 22 deletions(-)
18
1 file changed, 5 insertions(+)
12
19
13
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
20
diff --git a/hw/arm/nrf51_soc.c b/hw/arm/nrf51_soc.c
14
index XXXXXXX..XXXXXXX 100644
21
index XXXXXXX..XXXXXXX 100644
15
--- a/hw/arm/tosa.c
22
--- a/hw/arm/nrf51_soc.c
16
+++ b/hw/arm/tosa.c
23
+++ b/hw/arm/nrf51_soc.c
17
@@ -XXX,XX +XXX,XX @@
24
@@ -XXX,XX +XXX,XX @@
18
#include "hw/sysbus.h"
25
19
#include "exec/address-spaces.h"
26
#define BASE_TO_IRQ(base) ((base >> 12) & 0x1F)
20
27
21
-#define TOSA_RAM 0x04000000
28
+/* HCLK (the main CPU clock) on this SoC is always 16MHz */
22
-#define TOSA_ROM    0x00800000
29
+#define HCLK_FRQ 16000000
23
+#define TOSA_RAM 0x04000000
30
+
24
+#define TOSA_ROM 0x00800000
31
static uint64_t clock_read(void *opaque, hwaddr addr, unsigned int size)
25
26
-#define TOSA_GPIO_USB_IN        (5)
27
-#define TOSA_GPIO_nSD_DETECT    (9)
28
-#define TOSA_GPIO_ON_RESET        (19)
29
-#define TOSA_GPIO_CF_IRQ        (21)    /* CF slot0 Ready */
30
-#define TOSA_GPIO_CF_CD            (13)
31
-#define TOSA_GPIO_TC6393XB_INT (15)
32
-#define TOSA_GPIO_JC_CF_IRQ        (36)    /* CF slot1 Ready */
33
+#define TOSA_GPIO_USB_IN (5)
34
+#define TOSA_GPIO_nSD_DETECT (9)
35
+#define TOSA_GPIO_ON_RESET (19)
36
+#define TOSA_GPIO_CF_IRQ (21) /* CF slot0 Ready */
37
+#define TOSA_GPIO_CF_CD (13)
38
+#define TOSA_GPIO_TC6393XB_INT (15)
39
+#define TOSA_GPIO_JC_CF_IRQ (36) /* CF slot1 Ready */
40
41
-#define TOSA_SCOOP_GPIO_BASE    1
42
-#define TOSA_GPIO_IR_POWERDWN    (TOSA_SCOOP_GPIO_BASE + 2)
43
-#define TOSA_GPIO_SD_WP            (TOSA_SCOOP_GPIO_BASE + 3)
44
-#define TOSA_GPIO_PWR_ON        (TOSA_SCOOP_GPIO_BASE + 4)
45
+#define TOSA_SCOOP_GPIO_BASE 1
46
+#define TOSA_GPIO_IR_POWERDWN (TOSA_SCOOP_GPIO_BASE + 2)
47
+#define TOSA_GPIO_SD_WP (TOSA_SCOOP_GPIO_BASE + 3)
48
+#define TOSA_GPIO_PWR_ON (TOSA_SCOOP_GPIO_BASE + 4)
49
50
-#define TOSA_SCOOP_JC_GPIO_BASE        1
51
-#define TOSA_GPIO_BT_LED        (TOSA_SCOOP_JC_GPIO_BASE + 0)
52
-#define TOSA_GPIO_NOTE_LED        (TOSA_SCOOP_JC_GPIO_BASE + 1)
53
-#define TOSA_GPIO_CHRG_ERR_LED        (TOSA_SCOOP_JC_GPIO_BASE + 2)
54
-#define TOSA_GPIO_TC6393XB_L3V_ON    (TOSA_SCOOP_JC_GPIO_BASE + 5)
55
-#define TOSA_GPIO_WLAN_LED        (TOSA_SCOOP_JC_GPIO_BASE + 7)
56
+#define TOSA_SCOOP_JC_GPIO_BASE 1
57
+#define TOSA_GPIO_BT_LED (TOSA_SCOOP_JC_GPIO_BASE + 0)
58
+#define TOSA_GPIO_NOTE_LED (TOSA_SCOOP_JC_GPIO_BASE + 1)
59
+#define TOSA_GPIO_CHRG_ERR_LED (TOSA_SCOOP_JC_GPIO_BASE + 2)
60
+#define TOSA_GPIO_TC6393XB_L3V_ON (TOSA_SCOOP_JC_GPIO_BASE + 5)
61
+#define TOSA_GPIO_WLAN_LED (TOSA_SCOOP_JC_GPIO_BASE + 7)
62
63
-#define    DAC_BASE    0x4e
64
-#define DAC_CH1        0
65
-#define DAC_CH2        1
66
+#define DAC_BASE 0x4e
67
+#define DAC_CH1 0
68
+#define DAC_CH2 1
69
70
static void tosa_microdrive_attach(PXA2xxState *cpu)
71
{
32
{
33
qemu_log_mask(LOG_UNIMP, "%s: 0x%" HWADDR_PRIx " [%u]\n",
34
@@ -XXX,XX +XXX,XX @@ static void nrf51_soc_realize(DeviceState *dev_soc, Error **errp)
35
return;
36
}
37
38
+ system_clock_scale = NANOSECONDS_PER_SECOND / HCLK_FRQ;
39
+
40
object_property_set_link(OBJECT(&s->cpu), "memory", OBJECT(&s->container),
41
&error_abort);
42
if (!sysbus_realize(SYS_BUS_DEVICE(&s->cpu), errp)) {
72
--
43
--
73
2.20.1
44
2.20.1
74
45
75
46
diff view generated by jsdifflib
1
From: David CARLIER <devnexen@gmail.com>
1
The imx_epit device has a software-controllable reset triggered by
2
setting the SWR bit in the CR register. An error in commit cc2722ec83ad9
3
means that we will end up assert()ing if the guest does this, because
4
the code in imx_epit_write() starts ptimer transactions, and then
5
imx_epit_reset() also starts ptimer transactions, triggering
6
"ptimer_transaction_begin: Assertion `!s->in_transaction' failed".
2
7
3
Haiku puts the bswap* functions in <endian.h>; pull in that
8
The cleanest way to avoid this double-transaction is to move the
4
include file on that platform.
9
start-transaction for the CR write handling down below the check of
10
the SWR bit.
5
11
6
Signed-off-by: David Carlier <devnexen@gmail.com>
12
Fixes: https://bugs.launchpad.net/qemu/+bug/1880424
7
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
13
Fixes: cc2722ec83ad944505fe
8
Reviewed-by: Thomas Huth <thuth@redhat.com>
9
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
14
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
Message-id: 20200703145614.16684-7-peter.maydell@linaro.org
15
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
12
[PMM: Expanded commit message]
16
Message-id: 20200727154550.3409-1-peter.maydell@linaro.org
13
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
14
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
15
---
17
---
16
include/qemu/bswap.h | 2 ++
18
hw/timer/imx_epit.c | 13 ++++++++++---
17
1 file changed, 2 insertions(+)
19
1 file changed, 10 insertions(+), 3 deletions(-)
18
20
19
diff --git a/include/qemu/bswap.h b/include/qemu/bswap.h
21
diff --git a/hw/timer/imx_epit.c b/hw/timer/imx_epit.c
20
index XXXXXXX..XXXXXXX 100644
22
index XXXXXXX..XXXXXXX 100644
21
--- a/include/qemu/bswap.h
23
--- a/hw/timer/imx_epit.c
22
+++ b/include/qemu/bswap.h
24
+++ b/hw/timer/imx_epit.c
23
@@ -XXX,XX +XXX,XX @@
25
@@ -XXX,XX +XXX,XX @@ static void imx_epit_write(void *opaque, hwaddr offset, uint64_t value,
24
# include <machine/bswap.h>
26
25
#elif defined(__FreeBSD__)
27
switch (offset >> 2) {
26
# include <sys/endian.h>
28
case 0: /* CR */
27
+#elif defined(__HAIKU__)
29
- ptimer_transaction_begin(s->timer_cmp);
28
+# include <endian.h>
30
- ptimer_transaction_begin(s->timer_reload);
29
#elif defined(CONFIG_BYTESWAP_H)
31
30
# include <byteswap.h>
32
oldcr = s->cr;
33
s->cr = value & 0x03ffffff;
34
if (s->cr & CR_SWR) {
35
/* handle the reset */
36
imx_epit_reset(DEVICE(s));
37
- } else {
38
+ /*
39
+ * TODO: could we 'break' here? following operations appear
40
+ * to duplicate the work imx_epit_reset() already did.
41
+ */
42
+ }
43
+
44
+ ptimer_transaction_begin(s->timer_cmp);
45
+ ptimer_transaction_begin(s->timer_reload);
46
+
47
+ if (!(s->cr & CR_SWR)) {
48
imx_epit_set_freq(s);
49
}
31
50
32
--
51
--
33
2.20.1
52
2.20.1
34
53
35
54
diff view generated by jsdifflib
Deleted patch
1
From: David CARLIER <devnexen@gmail.com>
2
1
3
util/compatfd.c includes <sys/syscall.h> so that the CONFIG_SIGNALFD
4
code can use SYS_signalfd. Guard the #include with CONFIG_SIGNALFD
5
to avoid portability issues on hosts like Haiku which do not
6
provide that header file.
7
8
Signed-off-by: David Carlier <devnexen@gmail.com>
9
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
10
Reviewed-by: Thomas Huth <thuth@redhat.com>
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
Message-id: 20200703145614.16684-8-peter.maydell@linaro.org
13
[PMM: Expanded commit message]
14
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
15
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
16
---
17
util/compatfd.c | 2 ++
18
1 file changed, 2 insertions(+)
19
20
diff --git a/util/compatfd.c b/util/compatfd.c
21
index XXXXXXX..XXXXXXX 100644
22
--- a/util/compatfd.c
23
+++ b/util/compatfd.c
24
@@ -XXX,XX +XXX,XX @@
25
#include "qemu/osdep.h"
26
#include "qemu/thread.h"
27
28
+#if defined(CONFIG_SIGNALFD)
29
#include <sys/syscall.h>
30
+#endif
31
32
struct sigfd_compat_info
33
{
34
--
35
2.20.1
36
37
diff view generated by jsdifflib
Deleted patch
1
From: David CARLIER <devnexen@gmail.com>
2
1
3
The qemu_init_exec_dir() function is inherently non-portable;
4
provide an implementation for Haiku hosts.
5
6
Signed-off-by: David Carlier <devnexen@gmail.com>
7
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
8
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
9
Message-id: 20200703145614.16684-9-peter.maydell@linaro.org
10
[PMM: Expanded commit message]
11
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
---
14
util/oslib-posix.c | 19 +++++++++++++++++++
15
1 file changed, 19 insertions(+)
16
17
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
18
index XXXXXXX..XXXXXXX 100644
19
--- a/util/oslib-posix.c
20
+++ b/util/oslib-posix.c
21
@@ -XXX,XX +XXX,XX @@
22
#include <mach-o/dyld.h>
23
#endif
24
25
+#ifdef __HAIKU__
26
+#include <kernel/image.h>
27
+#endif
28
+
29
#include "qemu/mmap-alloc.h"
30
31
#ifdef CONFIG_DEBUG_STACK_USAGE
32
@@ -XXX,XX +XXX,XX @@ void qemu_init_exec_dir(const char *argv0)
33
}
34
}
35
}
36
+#elif defined(__HAIKU__)
37
+ {
38
+ image_info ii;
39
+ int32_t c = 0;
40
+
41
+ *buf = '\0';
42
+ while (get_next_image_info(0, &c, &ii) == B_OK) {
43
+ if (ii.type == B_APP_IMAGE) {
44
+ strncpy(buf, ii.name, sizeof(buf));
45
+ buf[sizeof(buf) - 1] = 0;
46
+ p = buf;
47
+ break;
48
+ }
49
+ }
50
+ }
51
#endif
52
/* If we don't have any way of figuring out the actual executable
53
location then try argv[0]. */
54
--
55
2.20.1
56
57
diff view generated by jsdifflib
Deleted patch
1
From: Gerd Hoffmann <kraxel@redhat.com>
2
1
3
Given this isn't perforance critical at all lets avoid the non-portable
4
d_type and use fstat instead to check whenever the file is a chardev.
5
6
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
7
Reported-by: David Carlier <devnexen@gmail.com>
8
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
9
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
Message-id: 20200703145614.16684-10-peter.maydell@linaro.org
12
Message-id: 20200701180302.14821-1-kraxel@redhat.com
13
[PMM: fixed comment style; tweaked subject line]
14
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
15
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
16
---
17
util/drm.c | 19 ++++++++++++++-----
18
1 file changed, 14 insertions(+), 5 deletions(-)
19
20
diff --git a/util/drm.c b/util/drm.c
21
index XXXXXXX..XXXXXXX 100644
22
--- a/util/drm.c
23
+++ b/util/drm.c
24
@@ -XXX,XX +XXX,XX @@ int qemu_drm_rendernode_open(const char *rendernode)
25
{
26
DIR *dir;
27
struct dirent *e;
28
- int r, fd;
29
+ struct stat st;
30
+ int r, fd, ret;
31
char *p;
32
33
if (rendernode) {
34
@@ -XXX,XX +XXX,XX @@ int qemu_drm_rendernode_open(const char *rendernode)
35
36
fd = -1;
37
while ((e = readdir(dir))) {
38
- if (e->d_type != DT_CHR) {
39
- continue;
40
- }
41
-
42
if (strncmp(e->d_name, "renderD", 7)) {
43
continue;
44
}
45
@@ -XXX,XX +XXX,XX @@ int qemu_drm_rendernode_open(const char *rendernode)
46
g_free(p);
47
continue;
48
}
49
+
50
+ /*
51
+ * prefer fstat() over checking e->d_type == DT_CHR for
52
+ * portability reasons
53
+ */
54
+ ret = fstat(r, &st);
55
+ if (ret < 0 || (st.st_mode & S_IFMT) != S_IFCHR) {
56
+ close(r);
57
+ g_free(p);
58
+ continue;
59
+ }
60
+
61
fd = r;
62
g_free(p);
63
break;
64
--
65
2.20.1
66
67
diff view generated by jsdifflib
Deleted patch
1
From: Wentong Wu <wentong.wu@intel.com>
2
1
3
Add DISAS_NORETURN case for nothing more to generate because at runtime
4
execution will never return from some helper call. And at the same time
5
replace DISAS_UPDATE in t_gen_helper_raise_exception and gen_exception
6
with the newly added DISAS_NORETURN.
7
8
Signed-off-by: Wentong Wu <wentong.wu@intel.com>
9
Message-id: 20200710233433.19729-1-wentong.wu@intel.com
10
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
---
13
target/nios2/translate.c | 5 +++--
14
1 file changed, 3 insertions(+), 2 deletions(-)
15
16
diff --git a/target/nios2/translate.c b/target/nios2/translate.c
17
index XXXXXXX..XXXXXXX 100644
18
--- a/target/nios2/translate.c
19
+++ b/target/nios2/translate.c
20
@@ -XXX,XX +XXX,XX @@ static void t_gen_helper_raise_exception(DisasContext *dc,
21
tcg_gen_movi_tl(dc->cpu_R[R_PC], dc->pc);
22
gen_helper_raise_exception(dc->cpu_env, tmp);
23
tcg_temp_free_i32(tmp);
24
- dc->is_jmp = DISAS_UPDATE;
25
+ dc->is_jmp = DISAS_NORETURN;
26
}
27
28
static bool use_goto_tb(DisasContext *dc, uint32_t dest)
29
@@ -XXX,XX +XXX,XX @@ static void gen_exception(DisasContext *dc, uint32_t excp)
30
tcg_gen_movi_tl(cpu_R[R_PC], dc->pc);
31
gen_helper_raise_exception(cpu_env, tmp);
32
tcg_temp_free_i32(tmp);
33
- dc->is_jmp = DISAS_UPDATE;
34
+ dc->is_jmp = DISAS_NORETURN;
35
}
36
37
/* generate intermediate code for basic block 'tb'. */
38
@@ -XXX,XX +XXX,XX @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns)
39
tcg_gen_exit_tb(NULL, 0);
40
break;
41
42
+ case DISAS_NORETURN:
43
case DISAS_TB_JUMP:
44
/* nothing more to generate */
45
break;
46
--
47
2.20.1
48
49
diff view generated by jsdifflib
Deleted patch
1
From: Wentong Wu <wentong.wu@intel.com>
2
1
3
wrctl instruction on nios2 target will cause checking cpu
4
interrupt but tcg_handle_interrupt() will call cpu_abort()
5
if the CPU gets an interrupt while it's not in 'can do IO'
6
state, so add gen_io_start around wrctl instruction. Also
7
at the same time, end the onging TB with DISAS_UPDATE.
8
9
Signed-off-by: Wentong Wu <wentong.wu@intel.com>
10
Message-id: 20200710233433.19729-3-wentong.wu@intel.com
11
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
---
14
target/nios2/translate.c | 5 +++++
15
1 file changed, 5 insertions(+)
16
17
diff --git a/target/nios2/translate.c b/target/nios2/translate.c
18
index XXXXXXX..XXXXXXX 100644
19
--- a/target/nios2/translate.c
20
+++ b/target/nios2/translate.c
21
@@ -XXX,XX +XXX,XX @@
22
#include "exec/cpu_ldst.h"
23
#include "exec/translator.h"
24
#include "qemu/qemu-print.h"
25
+#include "exec/gen-icount.h"
26
27
/* is_jmp field values */
28
#define DISAS_JUMP DISAS_TARGET_0 /* only pc was modified dynamically */
29
@@ -XXX,XX +XXX,XX @@ static void wrctl(DisasContext *dc, uint32_t code, uint32_t flags)
30
/* If interrupts were enabled using WRCTL, trigger them. */
31
#if !defined(CONFIG_USER_ONLY)
32
if ((instr.imm5 + CR_BASE) == CR_STATUS) {
33
+ if (tb_cflags(dc->tb) & CF_USE_ICOUNT) {
34
+ gen_io_start();
35
+ }
36
gen_helper_check_interrupts(dc->cpu_env);
37
+ dc->is_jmp = DISAS_UPDATE;
38
}
39
#endif
40
}
41
--
42
2.20.1
43
44
diff view generated by jsdifflib
Deleted patch
1
From: Wentong Wu <wentong.wu@intel.com>
2
1
3
Only when guest code is unmasking interrupts, terminate the excution
4
of translated code and exit to the main CPU loop to handle previous
5
pended interrupts because of the interrupts mask by guest code.
6
7
Signed-off-by: Wentong Wu <wentong.wu@intel.com>
8
Message-id: 20200710233433.19729-4-wentong.wu@intel.com
9
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
12
hw/nios2/cpu_pic.c | 3 ++-
13
1 file changed, 2 insertions(+), 1 deletion(-)
14
15
diff --git a/hw/nios2/cpu_pic.c b/hw/nios2/cpu_pic.c
16
index XXXXXXX..XXXXXXX 100644
17
--- a/hw/nios2/cpu_pic.c
18
+++ b/hw/nios2/cpu_pic.c
19
@@ -XXX,XX +XXX,XX @@ static void nios2_pic_cpu_handler(void *opaque, int irq, int level)
20
21
void nios2_check_interrupts(CPUNios2State *env)
22
{
23
- if (env->irq_pending) {
24
+ if (env->irq_pending &&
25
+ (env->regs[CR_STATUS] & CR_STATUS_PIE)) {
26
env->irq_pending = 0;
27
cpu_interrupt(env_cpu(env), CPU_INTERRUPT_HARD);
28
}
29
--
30
2.20.1
31
32
diff view generated by jsdifflib