Revision da87dd7b
b/Makefile | ||
---|---|---|
293 | 293 |
BLOBS=bios.bin sgabios.bin vgabios.bin vgabios-cirrus.bin \ |
294 | 294 |
vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin \ |
295 | 295 |
acpi-dsdt.aml q35-acpi-dsdt.aml \ |
296 |
ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc \ |
|
296 |
ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin \
|
|
297 | 297 |
pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom \ |
298 | 298 |
pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \ |
299 | 299 |
efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom \ |
b/hw/display/tcx.c | ||
---|---|---|
25 | 25 |
#include "qemu-common.h" |
26 | 26 |
#include "ui/console.h" |
27 | 27 |
#include "ui/pixel_ops.h" |
28 |
#include "hw/loader.h" |
|
28 | 29 |
#include "hw/sysbus.h" |
29 | 30 |
|
31 |
#define TCX_ROM_FILE "QEMU,tcx.bin" |
|
32 |
#define FCODE_MAX_ROM_SIZE 0x10000 |
|
33 |
|
|
30 | 34 |
#define MAXX 1024 |
31 | 35 |
#define MAXY 768 |
32 | 36 |
#define TCX_DAC_NREGS 16 |
... | ... | |
43 | 47 |
QemuConsole *con; |
44 | 48 |
uint8_t *vram; |
45 | 49 |
uint32_t *vram24, *cplane; |
50 |
hwaddr prom_addr; |
|
51 |
MemoryRegion rom; |
|
46 | 52 |
MemoryRegion vram_mem; |
47 | 53 |
MemoryRegion vram_8bit; |
48 | 54 |
MemoryRegion vram_24bit; |
... | ... | |
529 | 535 |
{ |
530 | 536 |
TCXState *s = TCX(dev); |
531 | 537 |
ram_addr_t vram_offset = 0; |
532 |
int size; |
|
538 |
int size, ret;
|
|
533 | 539 |
uint8_t *vram_base; |
540 |
char *fcode_filename; |
|
534 | 541 |
|
535 | 542 |
memory_region_init_ram(&s->vram_mem, OBJECT(s), "tcx.vram", |
536 | 543 |
s->vram_size * (1 + 4 + 4)); |
537 | 544 |
vmstate_register_ram_global(&s->vram_mem); |
538 | 545 |
vram_base = memory_region_get_ram_ptr(&s->vram_mem); |
539 | 546 |
|
547 |
/* FCode ROM */ |
|
548 |
memory_region_init_ram(&s->rom, NULL, "tcx.prom", FCODE_MAX_ROM_SIZE); |
|
549 |
vmstate_register_ram_global(&s->rom); |
|
550 |
memory_region_set_readonly(&s->rom, true); |
|
551 |
sysbus_init_mmio(dev, &s->rom); |
|
552 |
|
|
553 |
fcode_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, TCX_ROM_FILE); |
|
554 |
if (fcode_filename) { |
|
555 |
ret = load_image_targphys(fcode_filename, s->prom_addr, |
|
556 |
FCODE_MAX_ROM_SIZE); |
|
557 |
if (ret < 0 || ret > FCODE_MAX_ROM_SIZE) { |
|
558 |
fprintf(stderr, "tcx: could not load prom '%s'\n", TCX_ROM_FILE); |
|
559 |
return -1; |
|
560 |
} |
|
561 |
} |
|
562 |
|
|
540 | 563 |
/* 8-bit plane */ |
541 | 564 |
s->vram = vram_base; |
542 | 565 |
size = s->vram_size; |
... | ... | |
598 | 621 |
DEFINE_PROP_UINT16("width", TCXState, width, -1), |
599 | 622 |
DEFINE_PROP_UINT16("height", TCXState, height, -1), |
600 | 623 |
DEFINE_PROP_UINT16("depth", TCXState, depth, -1), |
624 |
DEFINE_PROP_HEX64("prom_addr", TCXState, prom_addr, -1), |
|
601 | 625 |
DEFINE_PROP_END_OF_LIST(), |
602 | 626 |
}; |
603 | 627 |
|
b/hw/sparc/sun4m.c | ||
---|---|---|
537 | 537 |
qdev_prop_set_uint16(dev, "width", width); |
538 | 538 |
qdev_prop_set_uint16(dev, "height", height); |
539 | 539 |
qdev_prop_set_uint16(dev, "depth", depth); |
540 |
qdev_prop_set_uint64(dev, "prom_addr", addr); |
|
540 | 541 |
qdev_init_nofail(dev); |
541 | 542 |
s = SYS_BUS_DEVICE(dev); |
543 |
/* FCode ROM */ |
|
544 |
sysbus_mmio_map(s, 0, addr); |
|
542 | 545 |
/* 8-bit plane */ |
543 |
sysbus_mmio_map(s, 0, addr + 0x00800000ULL);
|
|
546 |
sysbus_mmio_map(s, 1, addr + 0x00800000ULL);
|
|
544 | 547 |
/* DAC */ |
545 |
sysbus_mmio_map(s, 1, addr + 0x00200000ULL);
|
|
548 |
sysbus_mmio_map(s, 2, addr + 0x00200000ULL);
|
|
546 | 549 |
/* TEC (dummy) */ |
547 |
sysbus_mmio_map(s, 2, addr + 0x00700000ULL);
|
|
550 |
sysbus_mmio_map(s, 3, addr + 0x00700000ULL);
|
|
548 | 551 |
/* THC 24 bit: NetBSD writes here even with 8-bit display: dummy */ |
549 |
sysbus_mmio_map(s, 3, addr + 0x00301000ULL);
|
|
552 |
sysbus_mmio_map(s, 4, addr + 0x00301000ULL);
|
|
550 | 553 |
if (depth == 24) { |
551 | 554 |
/* 24-bit plane */ |
552 |
sysbus_mmio_map(s, 4, addr + 0x02000000ULL);
|
|
555 |
sysbus_mmio_map(s, 5, addr + 0x02000000ULL);
|
|
553 | 556 |
/* Control plane */ |
554 |
sysbus_mmio_map(s, 5, addr + 0x0a000000ULL);
|
|
557 |
sysbus_mmio_map(s, 6, addr + 0x0a000000ULL);
|
|
555 | 558 |
} else { |
556 | 559 |
/* THC 8 bit (dummy) */ |
557 |
sysbus_mmio_map(s, 4, addr + 0x00300000ULL);
|
|
560 |
sysbus_mmio_map(s, 5, addr + 0x00300000ULL);
|
|
558 | 561 |
} |
559 | 562 |
} |
560 | 563 |
|
b/pc-bios/README | ||
---|---|---|
11 | 11 |
firmware implementation. The goal is to implement a 100% IEEE |
12 | 12 |
1275-1994 (referred to as Open Firmware) compliant firmware. |
13 | 13 |
The included images for PowerPC (for 32 and 64 bit PPC CPUs), |
14 |
Sparc32 and Sparc64 are built from OpenBIOS SVN revision
|
|
15 |
1229. |
|
14 |
Sparc32 (including QEMU,tcx.bin) and Sparc64 are built from OpenBIOS SVN
|
|
15 |
revision 1229.
|
|
16 | 16 |
|
17 | 17 |
- SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware |
18 | 18 |
implementation for certain IBM POWER hardware. The sources are at |
Also available in: Unified diff