mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
target/hppa: Add emulation of a C3700 HP-PARISC workstation
This series adds a new PA-RISC machine emulation for the HP-PARISC C3700 workstation. The physical HP C3700 machine has a PA2.0 (64-bit) CPU, in contrast to the existing emulation of a B160L workstation which is a 32-bit only machine and where it's Dino PCI controller isn't 64-bit capable. With the HP C3700 machine emulation (together with the emulated Astro Memory controller and the Elroy PCI bridge) it's now possible to enhance the hppa CPU emulation to support the 64-bit instruction set in upcoming patches. Helge v4 changes: - Fix testsuite error in astro by adding a realize() implementation v3 changes: based on feedback from BALATON Zoltan <balaton@eik.bme.hu>: - apply paches in different order to bring them logically closer to each other - update comments in lasips2 - rephrased title and commit message of MAINTAINERS patch v2 changes: suggestions by BALATON Zoltan <balaton@eik.bme.hu>: - merged pci_ids and tulip patch - dropped comments in lasips2 - mention additional cleanups in patch "Require at least SeaBIOS-hppa version 10" suggestions by Philippe Mathieu-Daudé <philmd@linaro.org>: - dropped static pci_bus variable -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQS86RI+GtKfB8BJu973ErUQojoPXwUCZTGzDQAKCRD3ErUQojoP X9psAP0cHfTuJuXMiBWhrJhfp5VV0TURvaNXjCGyK8qvfbK+zgEArg3nvKhZPvnu jVSq6b/Ppf3eCAZIYSVIsfLITbElTQ4= =Esj+ -----END PGP SIGNATURE----- Merge tag 'C3700-pull-request' of https://github.com/hdeller/qemu-hppa into staging target/hppa: Add emulation of a C3700 HP-PARISC workstation This series adds a new PA-RISC machine emulation for the HP-PARISC C3700 workstation. The physical HP C3700 machine has a PA2.0 (64-bit) CPU, in contrast to the existing emulation of a B160L workstation which is a 32-bit only machine and where it's Dino PCI controller isn't 64-bit capable. With the HP C3700 machine emulation (together with the emulated Astro Memory controller and the Elroy PCI bridge) it's now possible to enhance the hppa CPU emulation to support the 64-bit instruction set in upcoming patches. Helge v4 changes: - Fix testsuite error in astro by adding a realize() implementation v3 changes: based on feedback from BALATON Zoltan <balaton@eik.bme.hu>: - apply paches in different order to bring them logically closer to each other - update comments in lasips2 - rephrased title and commit message of MAINTAINERS patch v2 changes: suggestions by BALATON Zoltan <balaton@eik.bme.hu>: - merged pci_ids and tulip patch - dropped comments in lasips2 - mention additional cleanups in patch "Require at least SeaBIOS-hppa version 10" suggestions by Philippe Mathieu-Daudé <philmd@linaro.org>: - dropped static pci_bus variable # -----BEGIN PGP SIGNATURE----- # # iHUEABYKAB0WIQS86RI+GtKfB8BJu973ErUQojoPXwUCZTGzDQAKCRD3ErUQojoP # X9psAP0cHfTuJuXMiBWhrJhfp5VV0TURvaNXjCGyK8qvfbK+zgEArg3nvKhZPvnu # jVSq6b/Ppf3eCAZIYSVIsfLITbElTQ4= # =Esj+ # -----END PGP SIGNATURE----- # gpg: Signature made Thu 19 Oct 2023 15:51:57 PDT # gpg: using EDDSA key BCE9123E1AD29F07C049BBDEF712B510A23A0F5F # gpg: Good signature from "Helge Deller <deller@gmx.de>" [unknown] # gpg: aka "Helge Deller <deller@kernel.org>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 4544 8228 2CD9 10DB EF3D 25F8 3E5F 3D04 A7A2 4603 # Subkey fingerprint: BCE9 123E 1AD2 9F07 C049 BBDE F712 B510 A23A 0F5F * tag 'C3700-pull-request' of https://github.com/hdeller/qemu-hppa: hw/hppa: Add new HP C3700 machine hw/hppa: Split out machine creation hw/hppa: Provide RTC and DebugOutputPort on CPU #0 hw/hppa: Export machine name, BTLBs, power-button address via fw_cfg MAINTAINERS: Update HP-PARISC entries pci-host: Wire up new Astro/Elroy PCI bridge hw/pci-host: Add Astro system bus adapter found on PA-RISC machines lasips2: LASI PS/2 devices are not user-createable pci_ids/tulip: Add PCI vendor ID for HP and use it in tulip hw/hppa: Require at least SeaBIOS-hppa version 10 target/hppa: Update to SeaBIOS-hppa version 10 Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
749d14f782
14 changed files with 1301 additions and 82 deletions
92
include/hw/pci-host/astro.h
Normal file
92
include/hw/pci-host/astro.h
Normal file
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
* HP-PARISC Astro Bus connector with Elroy PCI host bridges
|
||||
*/
|
||||
|
||||
#ifndef ASTRO_H
|
||||
#define ASTRO_H
|
||||
|
||||
#include "hw/pci/pci_host.h"
|
||||
|
||||
#define ASTRO_HPA 0xfed00000
|
||||
|
||||
#define ROPES_PER_IOC 8 /* per Ike half or Pluto/Astro */
|
||||
|
||||
#define TYPE_ASTRO_CHIP "astro-chip"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(AstroState, ASTRO_CHIP)
|
||||
|
||||
#define TYPE_ELROY_PCI_HOST_BRIDGE "elroy-pcihost"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(ElroyState, ELROY_PCI_HOST_BRIDGE)
|
||||
|
||||
#define ELROY_NUM 4 /* # of Elroys */
|
||||
#define ELROY_IRQS 8 /* IOSAPIC IRQs */
|
||||
|
||||
/* ASTRO Memory and I/O regions */
|
||||
#define LMMIO_DIST_BASE_ADDR 0xf4000000ULL
|
||||
#define LMMIO_DIST_BASE_SIZE 0x4000000ULL
|
||||
|
||||
#define IOS_DIST_BASE_ADDR 0xfffee00000ULL
|
||||
#define IOS_DIST_BASE_SIZE 0x10000ULL
|
||||
|
||||
struct AstroState;
|
||||
|
||||
struct ElroyState {
|
||||
PCIHostState parent_obj;
|
||||
|
||||
/* parent Astro device */
|
||||
struct AstroState *astro;
|
||||
|
||||
/* HPA of this Elroy */
|
||||
hwaddr hpa;
|
||||
|
||||
/* PCI bus number (Elroy number) */
|
||||
unsigned int pci_bus_num;
|
||||
|
||||
uint64_t config_address;
|
||||
uint64_t config_reg_elroy;
|
||||
|
||||
uint64_t status_control;
|
||||
uint64_t arb_mask;
|
||||
uint64_t mmio_base[(0x0250 - 0x200) / 8];
|
||||
uint64_t error_config;
|
||||
|
||||
uint32_t iosapic_reg_select;
|
||||
uint64_t iosapic_reg[0x20];
|
||||
|
||||
uint32_t ilr;
|
||||
|
||||
MemoryRegion this_mem;
|
||||
|
||||
MemoryRegion pci_mmio;
|
||||
MemoryRegion pci_mmio_alias;
|
||||
MemoryRegion pci_hole;
|
||||
MemoryRegion pci_io;
|
||||
};
|
||||
|
||||
struct AstroState {
|
||||
PCIHostState parent_obj;
|
||||
|
||||
uint64_t ioc_ctrl;
|
||||
uint64_t ioc_status_ctrl;
|
||||
uint64_t ioc_ranges[(0x03d8 - 0x300) / 8];
|
||||
uint64_t ioc_rope_config;
|
||||
uint64_t ioc_status_control;
|
||||
uint64_t ioc_flush_control;
|
||||
uint64_t ioc_rope_control[8];
|
||||
uint64_t tlb_ibase;
|
||||
uint64_t tlb_imask;
|
||||
uint64_t tlb_pcom;
|
||||
uint64_t tlb_tcnfg;
|
||||
uint64_t tlb_pdir_base;
|
||||
|
||||
struct ElroyState *elroy[ELROY_NUM];
|
||||
|
||||
MemoryRegion this_mem;
|
||||
|
||||
MemoryRegion pci_mmio;
|
||||
MemoryRegion pci_io;
|
||||
|
||||
IOMMUMemoryRegion iommu;
|
||||
AddressSpace iommu_as;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -179,6 +179,8 @@
|
|||
#define PCI_DEVICE_ID_AMD_LANCE 0x2000
|
||||
#define PCI_DEVICE_ID_AMD_SCSI 0x2020
|
||||
|
||||
#define PCI_VENDOR_ID_HP 0x103c
|
||||
|
||||
#define PCI_VENDOR_ID_TI 0x104c
|
||||
|
||||
#define PCI_VENDOR_ID_MOTOROLA 0x1057
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue