Commit bc687ec92249437eac5997de881e130d28736b0a

Authored by ths
1 parent 2a1094cd

Gallileo fixes, by Stefan Weil.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2670 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 22 additions and 4 deletions
hw/gt64xxx.c
@@ -550,7 +550,7 @@ void gt64120_reset(void *opaque) @@ -550,7 +550,7 @@ void gt64120_reset(void *opaque)
550 #ifdef TARGET_WORDS_BIGENDIAN 550 #ifdef TARGET_WORDS_BIGENDIAN
551 s->regs[GT_CPU] = 0x00000000; 551 s->regs[GT_CPU] = 0x00000000;
552 #else 552 #else
553 - s->regs[GT_CPU] = 0x00000800; 553 + s->regs[GT_CPU] = 0x00001000;
554 #endif 554 #endif
555 s->regs[GT_MULTI] = 0x00000000; 555 s->regs[GT_MULTI] = 0x00000000;
556 556
@@ -608,6 +608,24 @@ void gt64120_reset(void *opaque) @@ -608,6 +608,24 @@ void gt64120_reset(void *opaque)
608 gt64120_pci_mapping(s); 608 gt64120_pci_mapping(s);
609 } 609 }
610 610
  611 +static uint32_t gt64120_read_config(PCIDevice *d, uint32_t address, int len)
  612 +{
  613 + uint32_t val = pci_default_read_config(d, address, len);
  614 +#ifdef TARGET_WORDS_BIGENDIAN
  615 + val = bswap32(val);
  616 +#endif
  617 + return val;
  618 +}
  619 +
  620 +static void gt64120_write_config(PCIDevice *d, uint32_t address, uint32_t val,
  621 + int len)
  622 +{
  623 +#ifdef TARGET_WORDS_BIGENDIAN
  624 + val = bswap32(val);
  625 +#endif
  626 + pci_default_write_config(d, address, val, len);
  627 +}
  628 +
611 PCIBus *pci_gt64120_init(qemu_irq *pic) 629 PCIBus *pci_gt64120_init(qemu_irq *pic)
612 { 630 {
613 GT64120State *s; 631 GT64120State *s;
@@ -626,12 +644,12 @@ PCIBus *pci_gt64120_init(qemu_irq *pic) @@ -626,12 +644,12 @@ PCIBus *pci_gt64120_init(qemu_irq *pic)
626 cpu_register_physical_memory(0x1be00000LL, 0x1000, gt64120); 644 cpu_register_physical_memory(0x1be00000LL, 0x1000, gt64120);
627 645
628 d = pci_register_device(s->pci->bus, "GT64120 PCI Bus", sizeof(PCIDevice), 646 d = pci_register_device(s->pci->bus, "GT64120 PCI Bus", sizeof(PCIDevice),
629 - 0, NULL, NULL); 647 + 0, gt64120_read_config, gt64120_write_config);
630 648
631 d->config[0x00] = 0xab; // vendor_id 649 d->config[0x00] = 0xab; // vendor_id
632 d->config[0x01] = 0x11; 650 d->config[0x01] = 0x11;
633 - d->config[0x02] = 0x46; // device_id  
634 - d->config[0x03] = 0x20; 651 + d->config[0x02] = 0x20; // device_id
  652 + d->config[0x03] = 0x46;
635 d->config[0x04] = 0x06; 653 d->config[0x04] = 0x06;
636 d->config[0x05] = 0x00; 654 d->config[0x05] = 0x00;
637 d->config[0x06] = 0x80; 655 d->config[0x06] = 0x80;