Diff for /qemu/hw/armv7m.c between versions 1.1.1.3 and 1.1.1.4

version 1.1.1.3, 2018/04/24 17:23:58 version 1.1.1.4, 2018/04/24 17:38:00
Line 10 Line 10
 #include "sysbus.h"  #include "sysbus.h"
 #include "arm-misc.h"  #include "arm-misc.h"
 #include "sysemu.h"  #include "sysemu.h"
   #include "loader.h"
   #include "elf.h"
   
 /* Bitbanded IO.  Each word corresponds to a single bit.  */  /* Bitbanded IO.  Each word corresponds to a single bit.  */
   
Line 105  static void bitband_writel(void *opaque, Line 107  static void bitband_writel(void *opaque,
     cpu_physical_memory_write(addr, (uint8_t *)&v, 4);      cpu_physical_memory_write(addr, (uint8_t *)&v, 4);
 }  }
   
 static CPUReadMemoryFunc *bitband_readfn[] = {  static CPUReadMemoryFunc * const bitband_readfn[] = {
    bitband_readb,     bitband_readb,
    bitband_readw,     bitband_readw,
    bitband_readl     bitband_readl
 };  };
   
 static CPUWriteMemoryFunc *bitband_writefn[] = {  static CPUWriteMemoryFunc * const bitband_writefn[] = {
    bitband_writeb,     bitband_writeb,
    bitband_writew,     bitband_writew,
    bitband_writel     bitband_writel
Line 122  typedef struct { Line 124  typedef struct {
     uint32_t base;      uint32_t base;
 } BitBandState;  } BitBandState;
   
 static void bitband_init(SysBusDevice *dev)  static int bitband_init(SysBusDevice *dev)
 {  {
     BitBandState *s = FROM_SYSBUS(BitBandState, dev);      BitBandState *s = FROM_SYSBUS(BitBandState, dev);
     int iomemtype;      int iomemtype;
Line 130  static void bitband_init(SysBusDevice *d Line 132  static void bitband_init(SysBusDevice *d
     iomemtype = cpu_register_io_memory(bitband_readfn, bitband_writefn,      iomemtype = cpu_register_io_memory(bitband_readfn, bitband_writefn,
                                        &s->base);                                         &s->base);
     sysbus_init_mmio(dev, 0x02000000, iomemtype);      sysbus_init_mmio(dev, 0x02000000, iomemtype);
       return 0;
 }  }
   
 static void armv7m_bitband_init(void)  static void armv7m_bitband_init(void)
Line 138  static void armv7m_bitband_init(void) Line 141  static void armv7m_bitband_init(void)
   
     dev = qdev_create(NULL, "ARM,bitband-memory");      dev = qdev_create(NULL, "ARM,bitband-memory");
     qdev_prop_set_uint32(dev, "base", 0x20000000);      qdev_prop_set_uint32(dev, "base", 0x20000000);
     qdev_init(dev);      qdev_init_nofail(dev);
     sysbus_mmio_map(sysbus_from_qdev(dev), 0, 0x22000000);      sysbus_mmio_map(sysbus_from_qdev(dev), 0, 0x22000000);
   
     dev = qdev_create(NULL, "ARM,bitband-memory");      dev = qdev_create(NULL, "ARM,bitband-memory");
     qdev_prop_set_uint32(dev, "base", 0x40000000);      qdev_prop_set_uint32(dev, "base", 0x40000000);
     qdev_init(dev);      qdev_init_nofail(dev);
     sysbus_mmio_map(sysbus_from_qdev(dev), 0, 0x42000000);      sysbus_mmio_map(sysbus_from_qdev(dev), 0, 0x42000000);
 }  }
   
Line 165  qemu_irq *armv7m_init(int flash_size, in Line 168  qemu_irq *armv7m_init(int flash_size, in
     uint64_t entry;      uint64_t entry;
     uint64_t lowaddr;      uint64_t lowaddr;
     int i;      int i;
       int big_endian;
   
     flash_size *= 1024;      flash_size *= 1024;
     sram_size *= 1024;      sram_size *= 1024;
Line 198  qemu_irq *armv7m_init(int flash_size, in Line 202  qemu_irq *armv7m_init(int flash_size, in
   
     nvic = qdev_create(NULL, "armv7m_nvic");      nvic = qdev_create(NULL, "armv7m_nvic");
     env->v7m.nvic = nvic;      env->v7m.nvic = nvic;
     qdev_init(nvic);      qdev_init_nofail(nvic);
     cpu_pic = arm_pic_init_cpu(env);      cpu_pic = arm_pic_init_cpu(env);
     sysbus_connect_irq(sysbus_from_qdev(nvic), 0, cpu_pic[ARM_PIC_CPU_IRQ]);      sysbus_connect_irq(sysbus_from_qdev(nvic), 0, cpu_pic[ARM_PIC_CPU_IRQ]);
     for (i = 0; i < 64; i++) {      for (i = 0; i < 64; i++) {
         pic[i] = qdev_get_gpio_in(nvic, i);          pic[i] = qdev_get_gpio_in(nvic, i);
     }      }
   
     image_size = load_elf(kernel_filename, 0, &entry, &lowaddr, NULL);  #ifdef TARGET_WORDS_BIGENDIAN
       big_endian = 1;
   #else
       big_endian = 0;
   #endif
   
       image_size = load_elf(kernel_filename, 0, &entry, &lowaddr, NULL,
                             big_endian, ELF_MACHINE, 1);
     if (image_size < 0) {      if (image_size < 0) {
         image_size = load_image_targphys(kernel_filename, 0, flash_size);          image_size = load_image_targphys(kernel_filename, 0, flash_size);
         lowaddr = 0;          lowaddr = 0;
Line 242  static SysBusDeviceInfo bitband_info = { Line 253  static SysBusDeviceInfo bitband_info = {
     .qdev.name  = "ARM,bitband-memory",      .qdev.name  = "ARM,bitband-memory",
     .qdev.size  = sizeof(BitBandState),      .qdev.size  = sizeof(BitBandState),
     .qdev.props = (Property[]) {      .qdev.props = (Property[]) {
         {          DEFINE_PROP_UINT32("base", BitBandState, base, 0),
             .name   = "base",          DEFINE_PROP_END_OF_LIST(),
             .info   = &qdev_prop_hex32,  
             .offset = offsetof(BitBandState, base),  
         },  
         {/* end of list */}  
     }      }
 };  };
   

Removed from v.1.1.1.3  
changed lines
  Added in v.1.1.1.4


unix.superglobalmegacorp.com