From: deller@kernel.org
To: qemu-devel@nongnu.org
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Richard Henderson" <richard.henderson@linaro.org>,
"BALATON Zoltan" <balaton@eik.bme.hu>,
"Helge Deller" <deller@gmx.de>
Subject: [PATCH v2 09/11] hw/hppa: Provide RTC and DebugOutputPort on CPU #0
Date: Tue, 17 Oct 2023 17:46:43 +0200 [thread overview]
Message-ID: <20231017154645.95844-10-deller@kernel.org> (raw)
In-Reply-To: <20231017154645.95844-1-deller@kernel.org>
From: Helge Deller <deller@gmx.de>
For SeaBIOS-hppa, the RTC and DebugOutputPort were in the I/O area of
the LASI chip of the emulated B160L machine.
Since we will add other machines without a LASI chip, move the emulated
devices into the I/O area of CPU#0 instead.
Signed-off-by: Helge Deller <deller@gmx.de>
---
hw/hppa/hppa_hardware.h | 1 -
hw/hppa/machine.c | 67 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 67 insertions(+), 1 deletion(-)
diff --git a/hw/hppa/hppa_hardware.h b/hw/hppa/hppa_hardware.h
index a5ac3dd0fd..a9be7bb851 100644
--- a/hw/hppa/hppa_hardware.h
+++ b/hw/hppa/hppa_hardware.h
@@ -18,7 +18,6 @@
#define LASI_UART_HPA 0xffd05000
#define LASI_SCSI_HPA 0xffd06000
#define LASI_LAN_HPA 0xffd07000
-#define LASI_RTC_HPA 0xffd09000
#define LASI_LPT_HPA 0xffd02000
#define LASI_AUDIO_HPA 0xffd04000
#define LASI_PS2KBD_HPA 0xffd08000
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index de925259ea..d459ba631b 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -103,6 +103,63 @@ static ISABus *hppa_isa_bus(void)
return isa_bus;
}
+/*
+ * Helper functions to emulate RTC clock and DebugOutputPort
+ */
+static time_t rtc_ref;
+
+static uint64_t io_cpu_read(void *opaque, hwaddr addr, unsigned size)
+{
+ uint64_t val = 0;
+
+ switch (addr) {
+ case 0: /* RTC clock */
+ val = time(NULL);
+ val += rtc_ref;
+ break;
+ case 8: /* DebugOutputPort */
+ return 0xe9; /* readback */
+ }
+ return val;
+}
+
+static void io_cpu_write(void *opaque, hwaddr addr,
+ uint64_t val, unsigned size)
+{
+ unsigned char ch;
+ Chardev *debugout;
+
+ switch (addr) {
+ case 0: /* RTC clock */
+ rtc_ref = val - time(NULL);
+ break;
+ case 8: /* DebugOutputPort */
+ ch = val;
+ debugout = serial_hd(0);
+ if (debugout) {
+ qemu_chr_fe_write_all(debugout->be, &ch, 1);
+ } else {
+ fprintf(stderr, "%c", ch);
+ }
+ break;
+ }
+}
+
+static const MemoryRegionOps hppa_io_helper_ops = {
+ .read = io_cpu_read,
+ .write = io_cpu_write,
+ .endianness = DEVICE_BIG_ENDIAN,
+ .valid = {
+ .min_access_size = 1,
+ .max_access_size = 8,
+ },
+ .impl = {
+ .min_access_size = 1,
+ .max_access_size = 8,
+ },
+};
+
+
static uint64_t cpu_hppa_to_phys(void *opaque, uint64_t addr)
{
addr &= (0x10000000 - 1);
@@ -151,6 +208,10 @@ static FWCfgState *create_fw_cfg(MachineState *ms, PCIBus *pci_bus)
fw_cfg_add_file(fw_cfg, "/etc/hppa/power-button-addr",
g_memdup(&val, sizeof(val)), sizeof(val));
+ val = cpu_to_le64(CPU_HPA + 16);
+ fw_cfg_add_file(fw_cfg, "/etc/hppa/rtc-addr",
+ g_memdup(&val, sizeof(val)), sizeof(val));
+
val = cpu_to_le64(CPU_HPA + 24);
fw_cfg_add_file(fw_cfg, "/etc/hppa/DebugOutputPort",
g_memdup(&val, sizeof(val)), sizeof(val));
@@ -222,6 +283,12 @@ static void machine_hppa_init(MachineState *machine)
g_free(name);
}
+ /* RTC and DebugOutputPort on CPU #0 */
+ cpu_region = g_new(MemoryRegion, 1);
+ memory_region_init_io(cpu_region, OBJECT(cpu[0]), &hppa_io_helper_ops,
+ cpu[0], "cpu0-io-rtc", 2 * sizeof(uint64_t));
+ memory_region_add_subregion(addr_space, CPU_HPA + 16, cpu_region);
+
/* Main memory region. */
if (machine->ram_size > 3 * GiB) {
error_report("RAM size is currently restricted to 3GB");
--
2.41.0
next prev parent reply other threads:[~2023-10-17 15:49 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-17 15:46 [PATCH v2 00/11] target/hppa: Add emulation of a C3700 HP-PARISC workstation deller
2023-10-17 15:46 ` [PATCH v2 01/11] target/hppa: Update to SeaBIOS-hppa version 10 deller
2023-10-17 15:46 ` [PATCH v2 02/11] pci_ids/tulip: Add PCI vendor ID for HP and use it in tulip deller
2023-10-17 16:13 ` BALATON Zoltan
2023-10-17 17:58 ` Helge Deller
2023-10-17 19:19 ` BALATON Zoltan
2023-10-17 19:25 ` Helge Deller
2023-10-17 20:21 ` BALATON Zoltan
2023-10-17 20:48 ` Helge Deller
2023-10-17 15:46 ` [PATCH v2 03/11] hw/pci-host: Add Astro system bus adapter found on PA-RISC machines deller
2023-10-17 15:46 ` [PATCH v2 04/11] MAINTAINERS: Add Astro PCI host for hppa machines deller
2023-10-17 16:19 ` BALATON Zoltan
2023-10-17 18:05 ` Helge Deller
2023-10-17 19:10 ` BALATON Zoltan
2023-10-17 15:46 ` [PATCH v2 05/11] lasips2: LASI PS/2 devices are not user-createable deller
2023-10-17 16:23 ` BALATON Zoltan
2023-10-17 18:05 ` Helge Deller
2023-10-17 15:46 ` [PATCH v2 06/11] pci-host: Wire up new Astro/Elroy PCI bridge deller
2023-10-17 16:29 ` BALATON Zoltan
2023-10-17 18:08 ` Helge Deller
2023-10-17 15:46 ` [PATCH v2 07/11] hw/hppa: Require at least SeaBIOS-hppa version 10 deller
2023-10-17 15:46 ` [PATCH v2 08/11] hw/hppa: Export machine name, BTLBs, power-button address via fw_cfg deller
2023-10-17 16:33 ` BALATON Zoltan
2023-10-17 18:11 ` Helge Deller
2023-10-17 15:46 ` deller [this message]
2023-10-17 15:46 ` [PATCH v2 10/11] hw/hppa: Split out machine creation deller
2023-10-17 15:46 ` [PATCH v2 11/11] hw/hppa: Add new HP C3700 machine deller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231017154645.95844-10-deller@kernel.org \
--to=deller@kernel.org \
--cc=balaton@eik.bme.hu \
--cc=deller@gmx.de \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.