Lines Matching +full:no +full:- +full:cs +full:- +full:readback

3  * (C) Copyright 2018-2023 Helge Deller <deller@gmx.de>
13 #include "qemu/error-report.h"
21 #include "hw/char/serial-mm.h"
30 #include "hw/pci-host/astro.h"
31 #include "hw/pci-host/dino.h"
41 #define HPA_POWER_BUTTON (FIRMWARE_END - 0x10)
100 NULL, "isa-io", 0x800); in hppa_isa_bus()
126 return 0xe9; /* readback */ in io_cpu_read()
139 rtc_ref = val - time(NULL); in io_cpu_write()
145 qemu_chr_fe_write_all(debugout->be, &ch, 1); in io_cpu_write()
171 addr &= (0x10000000 - 1); in linux_kernel_virt_to_phys()
201 int btlb_entries = HPPA_BTLB_ENTRIES(&cpu[0]->env); in create_fw_cfg()
205 fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, ms->smp.cpus); in create_fw_cfg()
207 fw_cfg_add_i64(fw_cfg, FW_CFG_RAM_SIZE, ms->ram_size); in create_fw_cfg()
210 fw_cfg_add_file(fw_cfg, "/etc/firmware-min-version", in create_fw_cfg()
213 val = cpu_to_le64(HPPA_TLB_ENTRIES - btlb_entries); in create_fw_cfg()
221 len = strlen(mc->name) + 1; in create_fw_cfg()
223 g_memdup2(mc->name, len), len); in create_fw_cfg()
226 fw_cfg_add_file(fw_cfg, "/etc/hppa/power-button-addr", in create_fw_cfg()
230 fw_cfg_add_file(fw_cfg, "/etc/hppa/rtc-addr", in create_fw_cfg()
237 fw_cfg_add_i16(fw_cfg, FW_CFG_BOOT_DEVICE, ms->boot_config.order[0]); in create_fw_cfg()
240 fw_cfg_add_file(fw_cfg, "/etc/qemu-version", in create_fw_cfg()
264 object_property_set_link(OBJECT(dev), "memory-as", OBJECT(addr_space), in dino_init()
277 unsigned int smp_cpus = machine->smp.cpus; in machine_HP_common_init_cpus()
284 cpu[i] = HPPA_CPU(cpu_create(machine->cpu_type)); in machine_HP_common_init_cpus()
288 if (hppa_is_pa20(&cpu[0]->env)) { in machine_HP_common_init_cpus()
293 ram_max = FIRMWARE_START; /* 3.75 GB (32-bit CPU) */ in machine_HP_common_init_cpus()
299 g_autofree char *name = g_strdup_printf("cpu%u-io-eir", i); in machine_HP_common_init_cpus()
312 cpu[0], "cpu0-io-rtc", 2 * sizeof(uint64_t)); in machine_HP_common_init_cpus()
317 if (machine->ram_size > ram_max) { in machine_HP_common_init_cpus()
319 machine->ram_size = ram_max; in machine_HP_common_init_cpus()
321 if (machine->ram_size <= FIRMWARE_START) { in machine_HP_common_init_cpus()
323 memory_region_add_subregion_overlap(addr_space, 0, machine->ram, -1); in machine_HP_common_init_cpus()
325 /* non-contiguous: Memory above 3.75 GB is mapped at RAM_MAP_HIGH */ in machine_HP_common_init_cpus()
328 memory_region_init_alias(&mem_region[0], &addr_space->parent_obj, in machine_HP_common_init_cpus()
329 "LowMem", machine->ram, 0, FIRMWARE_START); in machine_HP_common_init_cpus()
330 memory_region_init_alias(&mem_region[1], &addr_space->parent_obj, in machine_HP_common_init_cpus()
331 "HighMem", machine->ram, FIRMWARE_START, in machine_HP_common_init_cpus()
332 machine->ram_size - FIRMWARE_START); in machine_HP_common_init_cpus()
333 memory_region_add_subregion_overlap(addr_space, 0, &mem_region[0], -1); in machine_HP_common_init_cpus()
335 &mem_region[1], -1); in machine_HP_common_init_cpus()
347 const char *kernel_filename = machine->kernel_filename; in machine_HP_common_init_tail()
348 const char *kernel_cmdline = machine->kernel_cmdline; in machine_HP_common_init_tail()
349 const char *initrd_filename = machine->initrd_filename; in machine_HP_common_init_tail()
350 const char *firmware = machine->firmware; in machine_HP_common_init_tail()
364 dev = DEVICE(pci_create_simple(pci_bus, -1, "lsi53c895a")); in machine_HP_common_init_tail()
369 if (machine->enable_graphics && vga_interface_type != VGA_NONE) { in machine_HP_common_init_tail()
388 pci_init_nic_devices(pci_bus, mc->default_nic); in machine_HP_common_init_tail()
391 dev = qdev_new("diva-gsp"); in machine_HP_common_init_tail()
393 pci_dev = pci_new_multifunction(PCI_DEVFN(2, 0), "diva-gsp"); in machine_HP_common_init_tail()
405 if (!lasi_dev && machine->enable_graphics && defaults_enabled()) { in machine_HP_common_init_tail()
408 pci_create_simple(pci_bus, -1, "pci-ohci"); in machine_HP_common_init_tail()
411 usb_create_simple(usb_bus, "usb-kbd"); in machine_HP_common_init_tail()
412 usb_create_simple(usb_bus, "usb-mouse"); in machine_HP_common_init_tail()
423 well load it directly from an ELF image. Load the 64-bit in machine_HP_common_init_tail()
424 firmware on 64-bit machines by default if not specified in machine_HP_common_init_tail()
428 firmware = lasi_dev ? "hppa-firmware.img" : "hppa-firmware64.img"; in machine_HP_common_init_tail()
432 error_report("no firmware provided"); in machine_HP_common_init_tail()
445 "-0x%08" PRIx64 ", entry at 0x%08" PRIx64 ".\n", in machine_HP_common_init_tail()
457 (FIRMWARE_END - FIRMWARE_START), &error_fatal); in machine_HP_common_init_tail()
474 "-0x%08" PRIx64 ", entry at 0x%08" PRIx64 in machine_HP_common_init_tail()
479 cpu[0]->env.cmdline_or_bootorder = 0x4000; in machine_HP_common_init_tail()
480 pstrcpy_targphys("cmdline", cpu[0]->env.cmdline_or_bootorder, in machine_HP_common_init_tail()
497 (1) Due to sign-extension problems and PDC, in machine_HP_common_init_tail()
498 put the initrd no higher than 1G. in machine_HP_common_init_tail()
500 initrd_base = MIN(machine->ram_size, 1 * GiB); in machine_HP_common_init_tail()
501 initrd_base = initrd_base - 64 * KiB; in machine_HP_common_init_tail()
502 initrd_base = (initrd_base - initrd_size) & TARGET_PAGE_MASK; in machine_HP_common_init_tail()
510 cpu[0]->env.initrd_base = initrd_base; in machine_HP_common_init_tail()
511 cpu[0]->env.initrd_end = initrd_base + initrd_size; in machine_HP_common_init_tail()
520 kernel_entry = machine->boot_config.has_menu ? machine->boot_config.menu : 0; in machine_HP_common_init_tail()
521 cpu[0]->env.cmdline_or_bootorder = machine->boot_config.order[0]; in machine_HP_common_init_tail()
525 cpu[0]->env.kernel_entry = kernel_entry; in machine_HP_common_init_tail()
542 if (hppa_is_pa20(&cpu[0]->env)) { in machine_HP_B160L_init()
543 error_report("The HP B160L workstation requires a 32-bit " in machine_HP_B160L_init()
544 "CPU. Use '-machine C3700' instead."); in machine_HP_B160L_init()
622 if (!hppa_is_pa20(&cpu[0]->env)) { in machine_HP_C3700_init()
623 error_report("The HP C3000 workstation requires a 64-bit CPU. " in machine_HP_C3700_init()
624 "Use '-machine B160L' instead."); in machine_HP_C3700_init()
634 pci_bus = PCI_BUS(qdev_get_child_bus(DEVICE(astro->elroy[0]), "pci")); in machine_HP_C3700_init()
643 unsigned int smp_cpus = ms->smp.cpus; in hppa_machine_reset()
652 CPUState *cs = CPU(cpu[i]); in hppa_machine_reset() local
655 resettable_reset(OBJECT(cs), RESET_TYPE_COLD); in hppa_machine_reset()
657 cpu_set_pc(cs, firmware_entry); in hppa_machine_reset()
658 cpu[i]->env.psw = PSW_Q; in hppa_machine_reset()
659 cpu[i]->env.gr[5] = CPU_HPA + i * 0x1000; in hppa_machine_reset()
662 cpu[0]->env.gr[26] = ms->ram_size; in hppa_machine_reset()
663 cpu[0]->env.gr[25] = cpu[0]->env.kernel_entry; in hppa_machine_reset()
664 cpu[0]->env.gr[24] = cpu[0]->env.cmdline_or_bootorder; in hppa_machine_reset()
665 cpu[0]->env.gr[23] = cpu[0]->env.initrd_base; in hppa_machine_reset()
666 cpu[0]->env.gr[22] = cpu[0]->env.initrd_end; in hppa_machine_reset()
667 cpu[0]->env.gr[21] = smp_cpus; in hppa_machine_reset()
668 cpu[0]->env.gr[19] = FW_CFG_IO_BASE; in hppa_machine_reset()
671 cpu[0]->env.kernel_entry = 0; in hppa_machine_reset()
672 cpu[0]->env.initrd_base = 0; in hppa_machine_reset()
673 cpu[0]->env.initrd_end = 0; in hppa_machine_reset()
674 cpu[0]->env.cmdline_or_bootorder = 'c'; in hppa_machine_reset()
679 CPUState *cs; in hppa_nmi() local
681 CPU_FOREACH(cs) { in hppa_nmi()
682 cpu_interrupt(cs, CPU_INTERRUPT_NMI); in hppa_nmi()
695 mc->desc = "HP B160L workstation"; in HP_B160L_machine_init_class_init()
696 mc->default_cpu_type = TYPE_HPPA_CPU; in HP_B160L_machine_init_class_init()
697 mc->valid_cpu_types = valid_cpu_types; in HP_B160L_machine_init_class_init()
698 mc->init = machine_HP_B160L_init; in HP_B160L_machine_init_class_init()
699 mc->reset = hppa_machine_reset; in HP_B160L_machine_init_class_init()
700 mc->block_default_type = IF_SCSI; in HP_B160L_machine_init_class_init()
701 mc->max_cpus = HPPA_MAX_CPUS; in HP_B160L_machine_init_class_init()
702 mc->default_cpus = 1; in HP_B160L_machine_init_class_init()
703 mc->is_default = true; in HP_B160L_machine_init_class_init()
704 mc->default_ram_size = 512 * MiB; in HP_B160L_machine_init_class_init()
705 mc->default_boot_order = "cd"; in HP_B160L_machine_init_class_init()
706 mc->default_ram_id = "ram"; in HP_B160L_machine_init_class_init()
707 mc->default_nic = "tulip"; in HP_B160L_machine_init_class_init()
709 nc->nmi_monitor_handler = hppa_nmi; in HP_B160L_machine_init_class_init()
731 mc->desc = "HP C3700 workstation"; in HP_C3700_machine_init_class_init()
732 mc->default_cpu_type = TYPE_HPPA64_CPU; in HP_C3700_machine_init_class_init()
733 mc->valid_cpu_types = valid_cpu_types; in HP_C3700_machine_init_class_init()
734 mc->init = machine_HP_C3700_init; in HP_C3700_machine_init_class_init()
735 mc->reset = hppa_machine_reset; in HP_C3700_machine_init_class_init()
736 mc->block_default_type = IF_SCSI; in HP_C3700_machine_init_class_init()
737 mc->max_cpus = HPPA_MAX_CPUS; in HP_C3700_machine_init_class_init()
738 mc->default_cpus = 1; in HP_C3700_machine_init_class_init()
739 mc->is_default = false; in HP_C3700_machine_init_class_init()
740 mc->default_ram_size = 1024 * MiB; in HP_C3700_machine_init_class_init()
741 mc->default_boot_order = "cd"; in HP_C3700_machine_init_class_init()
742 mc->default_ram_id = "ram"; in HP_C3700_machine_init_class_init()
743 mc->default_nic = "tulip"; in HP_C3700_machine_init_class_init()
745 nc->nmi_monitor_handler = hppa_nmi; in HP_C3700_machine_init_class_init()