From ae0bfb79aa0ac411a433433af4d74f1f08255608 Mon Sep 17 00:00:00 2001 From: Blue Swirl Date: Wed, 13 Oct 2010 18:38:07 +0000 Subject: [PATCH] ppc: remove video.x Only Mac-on-Linux stuff used video.x, OpenBIOS does not need it. Remove video.x MoL hacks. Signed-off-by: Alexander Graf Signed-off-by: Blue Swirl --- Makefile | 3 +- configure | 2 +- hw/ppc_mac.h | 1 - hw/ppc_newworld.c | 41 ++--------------- hw/ppc_oldworld.c | 110 ++------------------------------------------ pc-bios/README | 4 -- pc-bios/video.x | Bin 12192 -> 0 bytes target-ppc/cpu.h | 3 -- target-ppc/helper.c | 11 ----- 9 files changed, 9 insertions(+), 166 deletions(-) delete mode 100644 pc-bios/video.x diff --git a/Makefile b/Makefile index d9971c33f3e..252c817d278 100644 --- a/Makefile +++ b/Makefile @@ -176,7 +176,7 @@ common de-ch es fo fr-ca hu ja mk nl-be pt sl tr ifdef INSTALL_BLOBS BLOBS=bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \ -video.x openbios-sparc32 openbios-sparc64 openbios-ppc \ +openbios-sparc32 openbios-sparc64 openbios-ppc \ gpxe-eepro100-80861209.rom \ gpxe-eepro100-80861229.rom \ pxe-e1000.bin \ @@ -323,7 +323,6 @@ tarbin: $(datadir)/vgabios.bin \ $(datadir)/vgabios-cirrus.bin \ $(datadir)/ppc_rom.bin \ - $(datadir)/video.x \ $(datadir)/openbios-sparc32 \ $(datadir)/openbios-sparc64 \ $(datadir)/openbios-ppc \ diff --git a/configure b/configure index d30306195d0..a079a494a48 100755 --- a/configure +++ b/configure @@ -3084,7 +3084,7 @@ if test "$source_path_used" = "yes" ; then FILES="Makefile tests/Makefile" FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit" FILES="$FILES tests/test-mmap.c" - FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x" + FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do FILES="$FILES pc-bios/`basename $bios_file`" diff --git a/hw/ppc_mac.h b/hw/ppc_mac.h index 89f96bbc347..ea8759324cd 100644 --- a/hw/ppc_mac.h +++ b/hw/ppc_mac.h @@ -30,7 +30,6 @@ #define BIOS_SIZE (1024 * 1024) #define BIOS_FILENAME "ppc_rom.bin" -#define VGABIOS_FILENAME "video.x" #define NVRAM_SIZE 0x2000 #define PROM_FILENAME "openbios-ppc" #define PROM_ADDR 0xfff00000 diff --git a/hw/ppc_newworld.c b/hw/ppc_newworld.c index fb07c8316f6..9b20dc5c7cc 100644 --- a/hw/ppc_newworld.c +++ b/hw/ppc_newworld.c @@ -69,7 +69,6 @@ #include "blockdev.h" #define MAX_IDE_BUS 2 -#define VGA_BIOS_SIZE 65536 #define CFG_ADDR 0xf0000510 /* debug UniNorth */ @@ -134,20 +133,19 @@ static void ppc_core99_init (ram_addr_t ram_size, qemu_irq *pic, **openpic_irqs; int unin_memory; int linux_boot, i; - ram_addr_t ram_offset, bios_offset, vga_bios_offset; + ram_addr_t ram_offset, bios_offset; uint32_t kernel_base, initrd_base; long kernel_size, initrd_size; PCIBus *pci_bus; MacIONVRAMState *nvr; int nvram_mem_index; - int vga_bios_size, bios_size; + int bios_size; int pic_mem_index, dbdma_mem_index, cuda_mem_index, escc_mem_index; int ide_mem_index[3]; int ppc_boot_device; DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; void *fw_cfg; void *dbdma; - uint8_t *vga_bios_ptr; int machine_arch; linux_boot = (kernel_filename != NULL); @@ -167,9 +165,6 @@ static void ppc_core99_init (ram_addr_t ram_size, } /* Set time-base frequency to 100 Mhz */ cpu_ppc_tb_init(env, 100UL * 1000UL * 1000UL); -#if 0 - env->osi_call = vga_osi_call; -#endif qemu_register_reset((QEMUResetHandler*)&cpu_reset, env); envs[i] = env; } @@ -199,36 +194,6 @@ static void ppc_core99_init (ram_addr_t ram_size, exit(1); } - /* allocate and load VGA BIOS */ - vga_bios_offset = qemu_ram_alloc(NULL, "ppc_core99.vbios", VGA_BIOS_SIZE); - vga_bios_ptr = qemu_get_ram_ptr(vga_bios_offset); - filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, VGABIOS_FILENAME); - if (filename) { - vga_bios_size = load_image(filename, vga_bios_ptr + 8); - qemu_free(filename); - } else { - vga_bios_size = -1; - } - if (vga_bios_size < 0) { - /* if no bios is present, we can still work */ - fprintf(stderr, "qemu: warning: could not load VGA bios '%s'\n", - VGABIOS_FILENAME); - vga_bios_size = 0; - } else { - /* set a specific header (XXX: find real Apple format for NDRV - drivers) */ - vga_bios_ptr[0] = 'N'; - vga_bios_ptr[1] = 'D'; - vga_bios_ptr[2] = 'R'; - vga_bios_ptr[3] = 'V'; - cpu_to_be32w((uint32_t *)(vga_bios_ptr + 4), vga_bios_size); - vga_bios_size += 8; - - /* Round to page boundary */ - vga_bios_size = (vga_bios_size + TARGET_PAGE_SIZE - 1) & - TARGET_PAGE_MASK; - } - if (linux_boot) { uint64_t lowaddr = 0; int bswap_needed; @@ -352,7 +317,7 @@ static void ppc_core99_init (ram_addr_t ram_size, machine_arch = ARCH_MAC99; } /* init basic PC hardware */ - pci_vga_init(pci_bus, vga_bios_offset, vga_bios_size); + pci_vga_init(pci_bus, 0, 0); escc_mem_index = escc_init(0x80013000, pic[0x25], pic[0x24], serial_hds[0], serial_hds[1], ESCC_CLOCK, 4); diff --git a/hw/ppc_oldworld.c b/hw/ppc_oldworld.c index a12a8129707..ff0b51d3749 100644 --- a/hw/ppc_oldworld.c +++ b/hw/ppc_oldworld.c @@ -1,3 +1,4 @@ + /* * QEMU OldWorld PowerMac (currently ~G3 Beige) hardware System Emulator * @@ -44,79 +45,8 @@ #include "blockdev.h" #define MAX_IDE_BUS 2 -#define VGA_BIOS_SIZE 65536 #define CFG_ADDR 0xf0000510 -/* temporary frame buffer OSI calls for the video.x driver. The right - solution is to modify the driver to use VGA PCI I/Os */ -/* XXX: to be removed. This is no way related to emulation */ -static int vga_osi_call (CPUState *env) -{ - static int vga_vbl_enabled; - int linesize; - -#if 0 - printf("osi_call R5=%016" PRIx64 "\n", ppc_dump_gpr(env, 5)); -#endif - - /* same handler as PearPC, coming from the original MOL video - driver. */ - switch(env->gpr[5]) { - case 4: - break; - case 28: /* set_vmode */ - if (env->gpr[6] != 1 || env->gpr[7] != 0) - env->gpr[3] = 1; - else - env->gpr[3] = 0; - break; - case 29: /* get_vmode_info */ - if (env->gpr[6] != 0) { - if (env->gpr[6] != 1 || env->gpr[7] != 0) { - env->gpr[3] = 1; - break; - } - } - env->gpr[3] = 0; - env->gpr[4] = (1 << 16) | 1; /* num_vmodes, cur_vmode */ - env->gpr[5] = (1 << 16) | 0; /* num_depths, cur_depth_mode */ - env->gpr[6] = (graphic_width << 16) | graphic_height; /* w, h */ - env->gpr[7] = 85 << 16; /* refresh rate */ - env->gpr[8] = (graphic_depth + 7) & ~7; /* depth (round to byte) */ - linesize = ((graphic_depth + 7) >> 3) * graphic_width; - linesize = (linesize + 3) & ~3; - env->gpr[9] = (linesize << 16) | 0; /* row_bytes, offset */ - break; - case 31: /* set_video power */ - env->gpr[3] = 0; - break; - case 39: /* video_ctrl */ - if (env->gpr[6] == 0 || env->gpr[6] == 1) - vga_vbl_enabled = env->gpr[6]; - env->gpr[3] = 0; - break; - case 47: - break; - case 59: /* set_color */ - /* R6 = index, R7 = RGB */ - env->gpr[3] = 0; - break; - case 64: /* get color */ - /* R6 = index */ - env->gpr[3] = 0; - break; - case 116: /* set hwcursor */ - /* R6 = x, R7 = y, R8 = visible, R9 = data */ - break; - default: - fprintf(stderr, "unsupported OSI call R5=%016" PRIx64 "\n", - ppc_dump_gpr(env, 5)); - break; - } - - return 1; /* osi_call handled */ -} - static int fw_cfg_boot_set(void *opaque, const char *boot_device) { fw_cfg_add_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]); @@ -140,19 +70,18 @@ static void ppc_heathrow_init (ram_addr_t ram_size, char *filename; qemu_irq *pic, **heathrow_irqs; int linux_boot, i; - ram_addr_t ram_offset, bios_offset, vga_bios_offset; + ram_addr_t ram_offset, bios_offset; uint32_t kernel_base, initrd_base; int32_t kernel_size, initrd_size; PCIBus *pci_bus; MacIONVRAMState *nvr; - int vga_bios_size, bios_size; + int bios_size; int pic_mem_index, nvram_mem_index, dbdma_mem_index, cuda_mem_index; int escc_mem_index, ide_mem_index[2]; uint16_t ppc_boot_device; DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; void *fw_cfg; void *dbdma; - uint8_t *vga_bios_ptr; linux_boot = (kernel_filename != NULL); @@ -167,7 +96,6 @@ static void ppc_heathrow_init (ram_addr_t ram_size, } /* Set time-base frequency to 16.6 Mhz */ cpu_ppc_tb_init(env, 16600000UL); - env->osi_call = vga_osi_call; qemu_register_reset((QEMUResetHandler*)&cpu_reset, env); envs[i] = env; } @@ -203,36 +131,6 @@ static void ppc_heathrow_init (ram_addr_t ram_size, exit(1); } - /* allocate and load VGA BIOS */ - vga_bios_offset = qemu_ram_alloc(NULL, "ppc_heathrow.vbios", VGA_BIOS_SIZE); - vga_bios_ptr = qemu_get_ram_ptr(vga_bios_offset); - filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, VGABIOS_FILENAME); - if (filename) { - vga_bios_size = load_image(filename, vga_bios_ptr + 8); - qemu_free(filename); - } else { - vga_bios_size = -1; - } - if (vga_bios_size < 0) { - /* if no bios is present, we can still work */ - fprintf(stderr, "qemu: warning: could not load VGA bios '%s'\n", - VGABIOS_FILENAME); - vga_bios_size = 0; - } else { - /* set a specific header (XXX: find real Apple format for NDRV - drivers) */ - vga_bios_ptr[0] = 'N'; - vga_bios_ptr[1] = 'D'; - vga_bios_ptr[2] = 'R'; - vga_bios_ptr[3] = 'V'; - cpu_to_be32w((uint32_t *)(vga_bios_ptr + 4), vga_bios_size); - vga_bios_size += 8; - - /* Round to page boundary */ - vga_bios_size = (vga_bios_size + TARGET_PAGE_SIZE - 1) & - TARGET_PAGE_MASK; - } - if (linux_boot) { uint64_t lowaddr = 0; int bswap_needed; @@ -330,7 +228,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, } pic = heathrow_pic_init(&pic_mem_index, 1, heathrow_irqs); pci_bus = pci_grackle_init(0xfec00000, pic); - pci_vga_init(pci_bus, vga_bios_offset, vga_bios_size); + pci_vga_init(pci_bus, 0, 0); escc_mem_index = escc_init(0x80013000, pic[0x0f], pic[0x10], serial_hds[0], serial_hds[1], ESCC_CLOCK, 4); diff --git a/pc-bios/README b/pc-bios/README index ec5e2e1c8c0..3172cf78963 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -7,10 +7,6 @@ - The PowerPC Open Hack'Ware Open Firmware Compatible BIOS is available at http://perso.magic.fr/l_indien/OpenHackWare/index.htm. -- video.x is a PowerMac NDRV compatible driver for a VGA frame - buffer. It comes from the Mac-on-Linux project - (http://www.maconlinux.org/). - - OpenBIOS (http://www.openbios.org/) is a free (GPL v2) portable firmware implementation. The goal is to implement a 100% IEEE 1275-1994 (referred to as Open Firmware) compliant firmware. diff --git a/pc-bios/video.x b/pc-bios/video.x deleted file mode 100644 index 761aa0c9d47fc3648a64ccfe9b9747b2a3af9572..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 12192 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 Bf7Jj0 diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h index bf819412212..1334dd1b461 100644 --- a/target-ppc/cpu.h +++ b/target-ppc/cpu.h @@ -700,9 +700,6 @@ struct CPUPPCState { int power_mode; int (*check_pow)(CPUPPCState *env); - /* temporary hack to handle OSI calls (only used if non NULL) */ - int (*osi_call)(struct CPUPPCState *env); - #if !defined(CONFIG_USER_ONLY) void *load_info; /* Holds boot loading state. */ #endif diff --git a/target-ppc/helper.c b/target-ppc/helper.c index edbdd80945a..4b491012d72 100644 --- a/target-ppc/helper.c +++ b/target-ppc/helper.c @@ -2226,17 +2226,6 @@ static inline void powerpc_excp(CPUState *env, int excp_model, int excp) new_msr |= (target_ulong)MSR_HVB; goto store_current; case POWERPC_EXCP_SYSCALL: /* System call exception */ - /* NOTE: this is a temporary hack to support graphics OSI - calls from the MOL driver */ - /* XXX: To be removed */ - if (env->gpr[3] == 0x113724fa && env->gpr[4] == 0x77810f9b && - env->osi_call) { - if (env->osi_call(env) != 0) { - env->exception_index = POWERPC_EXCP_NONE; - env->error_code = 0; - return; - } - } dump_syscall(env); lev = env->error_code; if (lev == 1 || (lpes0 == 0 && lpes1 == 0)) -- 2.39.5