mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge tag 'hw-misc-20250131' of https://github.com/philmd/qemu into staging
Misc HW patches - Remove uses of &first_cpu in rx-gdbsim and loongson3_virt machines (Philippe) - Convert few legacy qemu_allocate_irqs to qemu_init_irqs (Philippe) - Add tracing events in i2c-echo device (Titus) - Fix debug format string in USB EHCI (Zoltan) - Rework loader API to remove its target_words_bigendian() call (Philippe) - QOMify OMAP MMC device (Peter) - Remove legacy SD Card APIs (Peter) # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmedOmkACgkQ4+MsLN6t # wN4qHhAAtL3vmk6hQgKD76bSaB3CDEdHsnS7qqeRVVmbr7pQL9D6yyXzkjJBzZtk # nG7ubhoS5WFeKswzD8tY/mgP25hntnq38TNrRxDrpRNdFYF+a2cncpRGfgzk0z/9 # nme/BuUx6fNowV8MVGLNOLvaDCeDHl9biTLJmcQyqwlHy9l9Wi6DSa6Xi9ZQWlHi # fxYVeuQ7HYlKwhiu3mqpfNeauIgMSWz8V48ETCrFnjMWmiF1k1L0GccWDS8zpPDk # QkdOxHC4eVMxk0d2458eUXeqo/izfzoc7Z9hW6W8cyI69y4m011xqANd/udTS03E # HMcG9Ks0E+Yw8NGoErOP7zu8yFVEzCn2BKhH/wrUHBC2UfP99vNR/b8LNkg25y19 # IItOkMban0Oyr9KaNb1Ga+3pZIsyyil+shSYNHpWkfqk+TUpZkMUSaVHA9r1oB3V # u/dOO/lPLaWMvftKVXRl3K/Lfz4WF5cWjza5RratnzbBqqwr03CwjjBEuZIX/5ww # ATj/fV10OSHScxCqauYp8uuNSgEOKaJCJe2uEMaLvxn/O9ka0FQZ5CLUJ0yIKs/t # Tg4sS0QLgmpaXwSnscKoVE7aHWNFT1WomHI4SjWbwUQhmm0DmPizBZ2yX8dnSR24 # ubtzmxNYFWScrUTGQvbMhkU6I+Sc0Ca8APmPxErNV2mzF4p3CPE= # =Jvwi # -----END PGP SIGNATURE----- # gpg: Signature made Fri 31 Jan 2025 16:02:33 EST # gpg: using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE # gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <f4bug@amsat.org>" [full] # Primary key fingerprint: FAAB E75E 1291 7221 DCFD 6BB2 E3E3 2C2C DEAD C0DE * tag 'hw-misc-20250131' of https://github.com/philmd/qemu: (36 commits) hw/sd: Remove unused SDState::enable hw/sd: Remove unused legacy functions, stop killing mammoths hw/sd: Remove unused 'enable' method from SDCardClass hw/sd/omap_mmc: Untabify hw/sd/omap_mmc: Remove unused coverswitch qemu_irq hw/arm/omap1: Inline creation of MMC hw/sd/omap_mmc: Use similar API for "wire up omap_clk" to other OMAP devices hw/sd/omap_mmc: Convert to SDBus API hw/sd/omap_mmc: Convert output qemu_irqs to gpio and sysbus IRQ APIs hw/sd/omap_mmc: Convert remaining 'struct omap_mmc_s' uses to OMAPMMCState hw/sd/omap_mmc: Do a minimal conversion to QDev hw/loader: Pass ELFDATA endian order argument to load_elf() hw/loader: Pass ELFDATA endian order argument to load_elf_as() hw/loader: Pass ELFDATA endian order argument to load_elf_ram_sym() hw/loader: Clarify local variable name in load_elf_ram_sym() hw/loader: Remove unused load_elf_ram() hw/avr/boot: Replace load_elf_ram_sym() -> load_elf_as() hw/usb/hcd-ehci: Fix debug printf format string hw/misc/i2c-echo: add tracing hw/char/pci-multi: Convert legacy qemu_allocate_irqs to qemu_init_irq ... Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
+2
-2
@@ -144,7 +144,7 @@ static void clipper_init(MachineState *machine)
|
||||
}
|
||||
size = load_elf(palcode_filename, NULL, cpu_alpha_superpage_to_phys,
|
||||
NULL, &palcode_entry, NULL, NULL, NULL,
|
||||
0, EM_ALPHA, 0, 0);
|
||||
ELFDATA2LSB, EM_ALPHA, 0, 0);
|
||||
if (size < 0) {
|
||||
error_report("could not load palcode '%s'", palcode_filename);
|
||||
exit(1);
|
||||
@@ -163,7 +163,7 @@ static void clipper_init(MachineState *machine)
|
||||
|
||||
size = load_elf(kernel_filename, NULL, cpu_alpha_superpage_to_phys,
|
||||
NULL, &kernel_entry, &kernel_low, NULL, NULL,
|
||||
0, EM_ALPHA, 0, 0);
|
||||
ELFDATA2LSB, EM_ALPHA, 0, 0);
|
||||
if (size < 0) {
|
||||
error_report("could not load kernel '%s'", kernel_filename);
|
||||
exit(1);
|
||||
|
||||
+1
-1
@@ -608,7 +608,7 @@ void armv7m_load_kernel(ARMCPU *cpu, const char *kernel_filename,
|
||||
if (kernel_filename) {
|
||||
image_size = load_elf_as(kernel_filename, NULL, NULL, NULL,
|
||||
&entry, NULL, NULL,
|
||||
NULL, 0, EM_ARM, 1, 0, as);
|
||||
NULL, ELFDATA2LSB, EM_ARM, 1, 0, as);
|
||||
if (image_size < 0) {
|
||||
image_size = load_image_targphys_as(kernel_filename, mem_base,
|
||||
mem_size, as);
|
||||
|
||||
+8
-8
@@ -798,7 +798,7 @@ static ssize_t arm_load_elf(struct arm_boot_info *info, uint64_t *pentry,
|
||||
Elf64_Ehdr h64;
|
||||
} elf_header;
|
||||
int data_swab = 0;
|
||||
bool big_endian;
|
||||
int elf_data_order;
|
||||
ssize_t ret;
|
||||
Error *err = NULL;
|
||||
|
||||
@@ -814,12 +814,12 @@ static ssize_t arm_load_elf(struct arm_boot_info *info, uint64_t *pentry,
|
||||
}
|
||||
|
||||
if (elf_is64) {
|
||||
big_endian = elf_header.h64.e_ident[EI_DATA] == ELFDATA2MSB;
|
||||
info->endianness = big_endian ? ARM_ENDIANNESS_BE8
|
||||
: ARM_ENDIANNESS_LE;
|
||||
elf_data_order = elf_header.h64.e_ident[EI_DATA];
|
||||
info->endianness = elf_data_order == ELFDATA2MSB ? ARM_ENDIANNESS_BE8
|
||||
: ARM_ENDIANNESS_LE;
|
||||
} else {
|
||||
big_endian = elf_header.h32.e_ident[EI_DATA] == ELFDATA2MSB;
|
||||
if (big_endian) {
|
||||
elf_data_order = elf_header.h32.e_ident[EI_DATA];
|
||||
if (elf_data_order == ELFDATA2MSB) {
|
||||
if (bswap32(elf_header.h32.e_flags) & EF_ARM_BE8) {
|
||||
info->endianness = ARM_ENDIANNESS_BE8;
|
||||
} else {
|
||||
@@ -839,8 +839,8 @@ static ssize_t arm_load_elf(struct arm_boot_info *info, uint64_t *pentry,
|
||||
}
|
||||
|
||||
ret = load_elf_as(info->kernel_filename, NULL, NULL, NULL,
|
||||
pentry, lowaddr, highaddr, NULL, big_endian, elf_machine,
|
||||
1, data_swab, as);
|
||||
pentry, lowaddr, highaddr, NULL, elf_data_order,
|
||||
elf_machine, 1, data_swab, as);
|
||||
if (ret <= 0) {
|
||||
/* The header loaded but the image didn't */
|
||||
error_report("Couldn't load elf '%s': %s",
|
||||
|
||||
+20
-6
@@ -29,6 +29,7 @@
|
||||
#include "hw/qdev-properties.h"
|
||||
#include "hw/arm/boot.h"
|
||||
#include "hw/arm/omap.h"
|
||||
#include "hw/sd/sd.h"
|
||||
#include "system/blockdev.h"
|
||||
#include "system/system.h"
|
||||
#include "hw/arm/soc_dma.h"
|
||||
@@ -3716,7 +3717,6 @@ static void omap1_mpu_reset(void *opaque)
|
||||
omap_uart_reset(mpu->uart[0]);
|
||||
omap_uart_reset(mpu->uart[1]);
|
||||
omap_uart_reset(mpu->uart[2]);
|
||||
omap_mmc_reset(mpu->mmc);
|
||||
omap_mpuio_reset(mpu->mpuio);
|
||||
omap_uwire_reset(mpu->microwire);
|
||||
omap_pwl_reset(mpu->pwl);
|
||||
@@ -3981,11 +3981,25 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegion *dram,
|
||||
if (!dinfo && !qtest_enabled()) {
|
||||
warn_report("missing SecureDigital device");
|
||||
}
|
||||
s->mmc = omap_mmc_init(0xfffb7800, system_memory,
|
||||
dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,
|
||||
qdev_get_gpio_in(s->ih[1], OMAP_INT_OQN),
|
||||
&s->drq[OMAP_DMA_MMC_TX],
|
||||
omap_findclk(s, "mmc_ck"));
|
||||
|
||||
s->mmc = qdev_new(TYPE_OMAP_MMC);
|
||||
sysbus_realize_and_unref(SYS_BUS_DEVICE(s->mmc), &error_fatal);
|
||||
omap_mmc_set_clk(s->mmc, omap_findclk(s, "mmc_ck"));
|
||||
|
||||
memory_region_add_subregion(system_memory, 0xfffb7800,
|
||||
sysbus_mmio_get_region(SYS_BUS_DEVICE(s->mmc), 0));
|
||||
qdev_connect_gpio_out_named(s->mmc, "dma-tx", 0, s->drq[OMAP_DMA_MMC_TX]);
|
||||
qdev_connect_gpio_out_named(s->mmc, "dma-rx", 0, s->drq[OMAP_DMA_MMC_RX]);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(s->mmc), 0,
|
||||
qdev_get_gpio_in(s->ih[1], OMAP_INT_OQN));
|
||||
|
||||
if (dinfo) {
|
||||
DeviceState *card = qdev_new(TYPE_SD_CARD);
|
||||
qdev_prop_set_drive_err(card, "drive", blk_by_legacy_dinfo(dinfo),
|
||||
&error_fatal);
|
||||
qdev_realize_and_unref(card, qdev_get_child_bus(s->mmc, "sd-bus"),
|
||||
&error_fatal);
|
||||
}
|
||||
|
||||
s->mpuio = omap_mpuio_init(system_memory, 0xfffb5000,
|
||||
qdev_get_gpio_in(s->ih[1], OMAP_INT_KEYBOARD),
|
||||
|
||||
+3
-5
@@ -71,11 +71,9 @@ bool avr_load_firmware(AVRCPU *cpu, MachineState *ms,
|
||||
return false;
|
||||
}
|
||||
|
||||
bytes_loaded = load_elf_ram_sym(filename,
|
||||
NULL, NULL, NULL,
|
||||
&entry, NULL, NULL,
|
||||
&e_flags, 0, EM_AVR, 0, 0,
|
||||
NULL, true, NULL);
|
||||
bytes_loaded = load_elf_as(filename, NULL, NULL, NULL,
|
||||
&entry, NULL, NULL,
|
||||
&e_flags, ELFDATA2LSB, EM_AVR, 0, 0, NULL);
|
||||
if (bytes_loaded >= 0) {
|
||||
/* If ELF file is provided, determine CPU type reading ELF e_flags. */
|
||||
const char *elf_cpu = avr_elf_e_flags_to_cpu_type(e_flags);
|
||||
|
||||
@@ -78,3 +78,8 @@ config GOLDFISH_TTY
|
||||
|
||||
config SHAKTI_UART
|
||||
bool
|
||||
|
||||
config IP_OCTAL_232
|
||||
bool
|
||||
default y
|
||||
depends on IPACK
|
||||
|
||||
@@ -184,9 +184,9 @@ static void update_irq(IPOctalState *dev, unsigned block)
|
||||
unsigned intno = block / 2;
|
||||
|
||||
if ((blk0->isr & blk0->imr) || (blk1->isr & blk1->imr)) {
|
||||
qemu_irq_raise(idev->irq[intno]);
|
||||
qemu_irq_raise(&idev->irq[intno]);
|
||||
} else {
|
||||
qemu_irq_lower(idev->irq[intno]);
|
||||
qemu_irq_lower(&idev->irq[intno]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ system_ss.add(when: 'CONFIG_ESCC', if_true: files('escc.c'))
|
||||
system_ss.add(when: 'CONFIG_GRLIB', if_true: files('grlib_apbuart.c'))
|
||||
system_ss.add(when: 'CONFIG_IBEX', if_true: files('ibex_uart.c'))
|
||||
system_ss.add(when: 'CONFIG_IMX', if_true: files('imx_serial.c'))
|
||||
system_ss.add(when: 'CONFIG_IPACK', if_true: files('ipoctal232.c'))
|
||||
system_ss.add(when: 'CONFIG_IP_OCTAL_232', if_true: files('ipoctal232.c'))
|
||||
system_ss.add(when: 'CONFIG_ISA_BUS', if_true: files('parallel-isa.c'))
|
||||
system_ss.add(when: 'CONFIG_ISA_DEBUG', if_true: files('debugcon.c'))
|
||||
system_ss.add(when: 'CONFIG_NRF51_SOC', if_true: files('nrf51_uart.c'))
|
||||
|
||||
@@ -45,7 +45,7 @@ typedef struct PCIMultiSerialState {
|
||||
char *name[PCI_SERIAL_MAX_PORTS];
|
||||
SerialState state[PCI_SERIAL_MAX_PORTS];
|
||||
uint32_t level[PCI_SERIAL_MAX_PORTS];
|
||||
qemu_irq *irqs;
|
||||
IRQState irqs[PCI_SERIAL_MAX_PORTS];
|
||||
uint8_t prog_if;
|
||||
} PCIMultiSerialState;
|
||||
|
||||
@@ -61,7 +61,6 @@ static void multi_serial_pci_exit(PCIDevice *dev)
|
||||
memory_region_del_subregion(&pci->iobar, &s->io);
|
||||
g_free(pci->name[i]);
|
||||
}
|
||||
qemu_free_irqs(pci->irqs, pci->ports);
|
||||
}
|
||||
|
||||
static void multi_serial_irq_mux(void *opaque, int n, int level)
|
||||
@@ -102,7 +101,6 @@ static void multi_serial_pci_realize(PCIDevice *dev, Error **errp)
|
||||
pci->dev.config[PCI_INTERRUPT_PIN] = 0x01;
|
||||
memory_region_init(&pci->iobar, OBJECT(pci), "multiserial", 8 * nports);
|
||||
pci_register_bar(&pci->dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &pci->iobar);
|
||||
pci->irqs = qemu_allocate_irqs(multi_serial_irq_mux, pci, nports);
|
||||
|
||||
for (i = 0; i < nports; i++) {
|
||||
s = pci->state + i;
|
||||
@@ -110,7 +108,7 @@ static void multi_serial_pci_realize(PCIDevice *dev, Error **errp)
|
||||
multi_serial_pci_exit(dev);
|
||||
return;
|
||||
}
|
||||
s->irq = pci->irqs[i];
|
||||
s->irq = &pci->irqs[i];
|
||||
pci->name[i] = g_strdup_printf("uart #%zu", i + 1);
|
||||
memory_region_init_io(&s->io, OBJECT(pci), &serial_io_ops, s,
|
||||
pci->name[i], 8);
|
||||
@@ -183,6 +181,7 @@ static void multi_serial_init(Object *o)
|
||||
size_t i, nports = multi_serial_get_port_count(PCI_DEVICE_GET_CLASS(dev));
|
||||
|
||||
for (i = 0; i < nports; i++) {
|
||||
qemu_init_irq(&pms->irqs[i], multi_serial_irq_mux, pms, i);
|
||||
object_initialize_child(o, "serial[*]", &pms->state[i], TYPE_SERIAL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "exec/tswap.h"
|
||||
#include "system/dma.h"
|
||||
#include "system/reset.h"
|
||||
#include "hw/boards.h"
|
||||
@@ -66,7 +65,6 @@ static void generic_loader_realize(DeviceState *dev, Error **errp)
|
||||
{
|
||||
GenericLoaderState *s = GENERIC_LOADER(dev);
|
||||
hwaddr entry;
|
||||
int big_endian;
|
||||
ssize_t size = 0;
|
||||
|
||||
s->set_pc = false;
|
||||
@@ -134,14 +132,12 @@ static void generic_loader_realize(DeviceState *dev, Error **errp)
|
||||
s->cpu = first_cpu;
|
||||
}
|
||||
|
||||
big_endian = target_words_bigendian();
|
||||
|
||||
if (s->file) {
|
||||
AddressSpace *as = s->cpu ? s->cpu->as : NULL;
|
||||
|
||||
if (!s->force_raw) {
|
||||
size = load_elf_as(s->file, NULL, NULL, NULL, &entry, NULL, NULL,
|
||||
NULL, big_endian, 0, 0, 0, as);
|
||||
NULL, ELFDATANONE, 0, 0, 0, as);
|
||||
|
||||
if (size < 0) {
|
||||
size = load_uimage_as(s->file, &entry, NULL, NULL, NULL, NULL,
|
||||
|
||||
@@ -49,6 +49,14 @@ void qemu_init_irq(IRQState *irq, qemu_irq_handler handler, void *opaque,
|
||||
init_irq_fields(irq, handler, opaque, n);
|
||||
}
|
||||
|
||||
void qemu_init_irqs(IRQState irq[], size_t count,
|
||||
qemu_irq_handler handler, void *opaque)
|
||||
{
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
qemu_init_irq(&irq[i], handler, opaque, i);
|
||||
}
|
||||
}
|
||||
|
||||
qemu_irq *qemu_extend_irqs(qemu_irq *old, int n_old, qemu_irq_handler handler,
|
||||
void *opaque, int n)
|
||||
{
|
||||
|
||||
+11
-33
@@ -409,11 +409,11 @@ ssize_t load_elf(const char *filename,
|
||||
uint64_t (*elf_note_fn)(void *, void *, bool),
|
||||
uint64_t (*translate_fn)(void *, uint64_t),
|
||||
void *translate_opaque, uint64_t *pentry, uint64_t *lowaddr,
|
||||
uint64_t *highaddr, uint32_t *pflags, int big_endian,
|
||||
uint64_t *highaddr, uint32_t *pflags, int elf_data_order,
|
||||
int elf_machine, int clear_lsb, int data_swab)
|
||||
{
|
||||
return load_elf_as(filename, elf_note_fn, translate_fn, translate_opaque,
|
||||
pentry, lowaddr, highaddr, pflags, big_endian,
|
||||
pentry, lowaddr, highaddr, pflags, elf_data_order,
|
||||
elf_machine, clear_lsb, data_swab, NULL);
|
||||
}
|
||||
|
||||
@@ -422,29 +422,15 @@ ssize_t load_elf_as(const char *filename,
|
||||
uint64_t (*elf_note_fn)(void *, void *, bool),
|
||||
uint64_t (*translate_fn)(void *, uint64_t),
|
||||
void *translate_opaque, uint64_t *pentry, uint64_t *lowaddr,
|
||||
uint64_t *highaddr, uint32_t *pflags, int big_endian,
|
||||
uint64_t *highaddr, uint32_t *pflags, int elf_data_order,
|
||||
int elf_machine, int clear_lsb, int data_swab,
|
||||
AddressSpace *as)
|
||||
{
|
||||
return load_elf_ram(filename, elf_note_fn, translate_fn, translate_opaque,
|
||||
pentry, lowaddr, highaddr, pflags, big_endian,
|
||||
elf_machine, clear_lsb, data_swab, as, true);
|
||||
}
|
||||
|
||||
/* return < 0 if error, otherwise the number of bytes loaded in memory */
|
||||
ssize_t load_elf_ram(const char *filename,
|
||||
uint64_t (*elf_note_fn)(void *, void *, bool),
|
||||
uint64_t (*translate_fn)(void *, uint64_t),
|
||||
void *translate_opaque, uint64_t *pentry,
|
||||
uint64_t *lowaddr, uint64_t *highaddr, uint32_t *pflags,
|
||||
int big_endian, int elf_machine, int clear_lsb,
|
||||
int data_swab, AddressSpace *as, bool load_rom)
|
||||
{
|
||||
return load_elf_ram_sym(filename, elf_note_fn,
|
||||
translate_fn, translate_opaque,
|
||||
pentry, lowaddr, highaddr, pflags, big_endian,
|
||||
pentry, lowaddr, highaddr, pflags, elf_data_order,
|
||||
elf_machine, clear_lsb, data_swab, as,
|
||||
load_rom, NULL);
|
||||
true, NULL);
|
||||
}
|
||||
|
||||
/* return < 0 if error, otherwise the number of bytes loaded in memory */
|
||||
@@ -453,11 +439,12 @@ ssize_t load_elf_ram_sym(const char *filename,
|
||||
uint64_t (*translate_fn)(void *, uint64_t),
|
||||
void *translate_opaque, uint64_t *pentry,
|
||||
uint64_t *lowaddr, uint64_t *highaddr,
|
||||
uint32_t *pflags, int big_endian, int elf_machine,
|
||||
uint32_t *pflags, int elf_data_order, int elf_machine,
|
||||
int clear_lsb, int data_swab,
|
||||
AddressSpace *as, bool load_rom, symbol_fn_t sym_cb)
|
||||
{
|
||||
int fd, data_order, target_data_order, must_swab;
|
||||
const int host_data_order = HOST_BIG_ENDIAN ? ELFDATA2MSB : ELFDATA2LSB;
|
||||
int fd, must_swab;
|
||||
ssize_t ret = ELF_LOAD_FAILED;
|
||||
uint8_t e_ident[EI_NIDENT];
|
||||
|
||||
@@ -475,23 +462,14 @@ ssize_t load_elf_ram_sym(const char *filename,
|
||||
ret = ELF_LOAD_NOT_ELF;
|
||||
goto fail;
|
||||
}
|
||||
#if HOST_BIG_ENDIAN
|
||||
data_order = ELFDATA2MSB;
|
||||
#else
|
||||
data_order = ELFDATA2LSB;
|
||||
#endif
|
||||
must_swab = data_order != e_ident[EI_DATA];
|
||||
if (big_endian) {
|
||||
target_data_order = ELFDATA2MSB;
|
||||
} else {
|
||||
target_data_order = ELFDATA2LSB;
|
||||
}
|
||||
|
||||
if (target_data_order != e_ident[EI_DATA]) {
|
||||
if (elf_data_order != ELFDATANONE && elf_data_order != e_ident[EI_DATA]) {
|
||||
ret = ELF_LOAD_WRONG_ENDIAN;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
must_swab = host_data_order != e_ident[EI_DATA];
|
||||
|
||||
lseek(fd, 0, SEEK_SET);
|
||||
if (e_ident[EI_CLASS] == ELFCLASS64) {
|
||||
ret = load_elf64(filename, fd, elf_note_fn,
|
||||
|
||||
+2
-2
@@ -440,7 +440,7 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
|
||||
|
||||
size = load_elf(firmware_filename, NULL, translate, NULL,
|
||||
&firmware_entry, &firmware_low, &firmware_high, NULL,
|
||||
true, EM_PARISC, 0, 0);
|
||||
ELFDATA2MSB, EM_PARISC, 0, 0);
|
||||
|
||||
if (size < 0) {
|
||||
error_report("could not load firmware '%s'", firmware_filename);
|
||||
@@ -467,7 +467,7 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
|
||||
if (kernel_filename) {
|
||||
size = load_elf(kernel_filename, NULL, linux_kernel_virt_to_phys,
|
||||
NULL, &kernel_entry, &kernel_low, &kernel_high, NULL,
|
||||
true, EM_PARISC, 0, 0);
|
||||
ELFDATA2MSB, EM_PARISC, 0, 0);
|
||||
|
||||
kernel_entry = linux_kernel_virt_to_phys(NULL, kernel_entry);
|
||||
|
||||
|
||||
+2
-2
@@ -202,8 +202,8 @@ int load_multiboot(X86MachineState *x86ms,
|
||||
}
|
||||
|
||||
kernel_size = load_elf(kernel_filename, NULL, NULL, NULL, &elf_entry,
|
||||
&elf_low, &elf_high, NULL, 0, I386_ELF_MACHINE,
|
||||
0, 0);
|
||||
&elf_low, &elf_high, NULL,
|
||||
ELFDATA2LSB, I386_ELF_MACHINE, 0, 0);
|
||||
if (kernel_size < 0) {
|
||||
error_report("Error while loading elf kernel");
|
||||
exit(1);
|
||||
|
||||
@@ -608,8 +608,8 @@ static bool load_elfboot(const char *kernel_filename,
|
||||
uint64_t elf_note_type = XEN_ELFNOTE_PHYS32_ENTRY;
|
||||
kernel_size = load_elf(kernel_filename, read_pvh_start_addr,
|
||||
NULL, &elf_note_type, &elf_entry,
|
||||
&elf_low, &elf_high, NULL, 0, I386_ELF_MACHINE,
|
||||
0, 0);
|
||||
&elf_low, &elf_high, NULL,
|
||||
ELFDATA2LSB, I386_ELF_MACHINE, 0, 0);
|
||||
|
||||
if (kernel_size < 0) {
|
||||
error_report("Error while loading elf kernel");
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
config IPACK
|
||||
bool
|
||||
|
||||
config TPCI200
|
||||
bool
|
||||
select IPACK
|
||||
default y if PCI_DEVICES
|
||||
depends on PCI
|
||||
|
||||
+1
-4
@@ -55,22 +55,19 @@ static void ipack_device_realize(DeviceState *dev, Error **errp)
|
||||
}
|
||||
bus->free_slot = idev->slot + 1;
|
||||
|
||||
idev->irq = qemu_allocate_irqs(bus->set_irq, idev, 2);
|
||||
qemu_init_irqs(idev->irq, ARRAY_SIZE(idev->irq), bus->set_irq, idev);
|
||||
|
||||
k->realize(dev, errp);
|
||||
}
|
||||
|
||||
static void ipack_device_unrealize(DeviceState *dev)
|
||||
{
|
||||
IPackDevice *idev = IPACK_DEVICE(dev);
|
||||
IPackDeviceClass *k = IPACK_DEVICE_GET_CLASS(dev);
|
||||
|
||||
if (k->unrealize) {
|
||||
k->unrealize(dev);
|
||||
return;
|
||||
}
|
||||
|
||||
qemu_free_irqs(idev->irq, 2);
|
||||
}
|
||||
|
||||
static const Property ipack_device_props[] = {
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
system_ss.add(when: 'CONFIG_IPACK', if_true: files('ipack.c', 'tpci200.c'))
|
||||
system_ss.add(when: 'CONFIG_IPACK', if_true: files('ipack.c'))
|
||||
system_ss.add(when: 'CONFIG_TPCI200', if_true: files('tpci200.c'))
|
||||
|
||||
+3
-3
@@ -275,11 +275,11 @@ static void tpci200_write_las0(void *opaque, hwaddr addr, uint64_t val,
|
||||
if (ip != NULL) {
|
||||
if (val & STATUS_INT(i, 0)) {
|
||||
DPRINTF("Clear IP %c INT0# status\n", 'A' + i);
|
||||
qemu_irq_lower(ip->irq[0]);
|
||||
qemu_irq_lower(&ip->irq[0]);
|
||||
}
|
||||
if (val & STATUS_INT(i, 1)) {
|
||||
DPRINTF("Clear IP %c INT1# status\n", 'A' + i);
|
||||
qemu_irq_lower(ip->irq[1]);
|
||||
qemu_irq_lower(&ip->irq[1]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -344,7 +344,7 @@ static uint64_t tpci200_read_las1(void *opaque, hwaddr addr, unsigned size)
|
||||
bool int_set = s->status & STATUS_INT(ip_n, intno);
|
||||
bool int_edge_sensitive = s->ctrl[ip_n] & CTRL_INT_EDGE(intno);
|
||||
if (int_set && !int_edge_sensitive) {
|
||||
qemu_irq_lower(ip->irq[intno]);
|
||||
qemu_irq_lower(&ip->irq[intno]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -243,7 +243,7 @@ static int64_t load_kernel_info(struct loongarch_boot_info *info)
|
||||
kernel_size = load_elf(info->kernel_filename, NULL,
|
||||
cpu_loongarch_virt_to_phys, NULL,
|
||||
&kernel_entry, &kernel_low,
|
||||
&kernel_high, NULL, 0,
|
||||
&kernel_high, NULL, ELFDATA2LSB,
|
||||
EM_LOONGARCH, 1, 0);
|
||||
if (kernel_size < 0) {
|
||||
kernel_size = load_loongarch_linux_image(info->kernel_filename,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user