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

version 1.1.1.3, 2018/04/24 17:18:40 version 1.1.1.4, 2018/04/24 17:24:28
Line 21 Line 21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.   * THE SOFTWARE.
  */   */
 #include <time.h>  
 #include <sys/time.h>  #include "sysbus.h"
 #include "hw.h"  #include "boards.h"
   #include "sysemu.h"
 #include "net.h"  #include "net.h"
 #include "flash.h"  #include "flash.h"
 #include "sysemu.h"  
 #include "devices.h"  
 #include "boards.h"  
   
 #include "etraxfs.h"  #include "etraxfs.h"
   
 #define FLASH_SIZE 0x2000000  #define FLASH_SIZE 0x2000000
Line 46  static void main_cpu_reset(void *opaque) Line 43  static void main_cpu_reset(void *opaque)
 }  }
   
 static  static
 void bareetraxfs_init (ram_addr_t ram_size, int vga_ram_size,  void bareetraxfs_init (ram_addr_t ram_size,
                        const char *boot_device,                         const char *boot_device,
                        const char *kernel_filename, const char *kernel_cmdline,                         const char *kernel_filename, const char *kernel_cmdline,
                        const char *initrd_filename, const char *cpu_model)                         const char *initrd_filename, const char *cpu_model)
 {  {
       DeviceState *dev;
       SysBusDevice *s;
     CPUState *env;      CPUState *env;
     struct etraxfs_pic *pic;      qemu_irq irq[30], nmi[2], *cpu_irq; 
     void *etraxfs_dmac;      void *etraxfs_dmac;
     struct etraxfs_dma_client *eth[2] = {NULL, NULL};      struct etraxfs_dma_client *eth[2] = {NULL, NULL};
     int kernel_size;      int kernel_size;
Line 86  void bareetraxfs_init (ram_addr_t ram_si Line 85  void bareetraxfs_init (ram_addr_t ram_si
                           FLASH_SIZE >> 16,                            FLASH_SIZE >> 16,
                           1, 2, 0x0000, 0x0000, 0x0000, 0x0000,                            1, 2, 0x0000, 0x0000, 0x0000, 0x0000,
                           0x555, 0x2aa);                            0x555, 0x2aa);
     pic = etraxfs_pic_init(env, 0x3001c000);      cpu_irq = cris_pic_init_cpu(env);
     etraxfs_dmac = etraxfs_dmac_init(env, 0x30000000, 10);      dev = qdev_create(NULL, "etraxfs,pic");
       /* FIXME: Is there a proper way to signal vectors to the CPU core?  */
       qdev_prop_set_ptr(dev, "interrupt_vector", &env->interrupt_vector);
       qdev_init(dev);
       s = sysbus_from_qdev(dev);
       sysbus_mmio_map(s, 0, 0x3001c000);
       sysbus_connect_irq(s, 0, cpu_irq[0]);
       sysbus_connect_irq(s, 1, cpu_irq[1]);
       for (i = 0; i < 30; i++) {
           irq[i] = qdev_get_gpio_in(dev, i);
       }
       nmi[0] = qdev_get_gpio_in(dev, 30);
       nmi[1] = qdev_get_gpio_in(dev, 31);
   
       etraxfs_dmac = etraxfs_dmac_init(0x30000000, 10);
     for (i = 0; i < 10; i++) {      for (i = 0; i < 10; i++) {
         /* On ETRAX, odd numbered channels are inputs.  */          /* On ETRAX, odd numbered channels are inputs.  */
         etraxfs_dmac_connect(etraxfs_dmac, i, pic->irq + 7 + i, i & 1);          etraxfs_dmac_connect(etraxfs_dmac, i, irq + 7 + i, i & 1);
     }      }
   
     /* Add the two ethernet blocks.  */      /* Add the two ethernet blocks.  */
     eth[0] = etraxfs_eth_init(&nd_table[0], env, pic->irq + 25, 0x30034000, 1);      eth[0] = etraxfs_eth_init(&nd_table[0], 0x30034000, 1);
     if (nb_nics > 1)      if (nb_nics > 1)
         eth[1] = etraxfs_eth_init(&nd_table[1], env,          eth[1] = etraxfs_eth_init(&nd_table[1], 0x30036000, 2);
                                   pic->irq + 26, 0x30036000, 2);  
   
     /* The DMA Connector block is missing, hardwire things for now.  */      /* The DMA Connector block is missing, hardwire things for now.  */
     etraxfs_dmac_connect_client(etraxfs_dmac, 0, eth[0]);      etraxfs_dmac_connect_client(etraxfs_dmac, 0, eth[0]);
Line 108  void bareetraxfs_init (ram_addr_t ram_si Line 120  void bareetraxfs_init (ram_addr_t ram_si
     }      }
   
     /* 2 timers.  */      /* 2 timers.  */
     etraxfs_timer_init(env, pic->irq + 0x1b, pic->nmi + 1, 0x3001e000);      sysbus_create_varargs("etraxfs,timer", 0x3001e000, irq[0x1b], nmi[1], NULL);
     etraxfs_timer_init(env, pic->irq + 0x1b, pic->nmi + 1, 0x3005e000);      sysbus_create_varargs("etraxfs,timer", 0x3005e000, irq[0x1b], nmi[1], NULL);
   
     for (i = 0; i < 4; i++) {      for (i = 0; i < 4; i++) {
         if (serial_hds[i]) {          sysbus_create_simple("etraxfs,serial", 0x30026000 + i * 0x2000,
             etraxfs_ser_init(env, pic->irq + 0x14 + i,                               irq[0x14 + i]); 
                              serial_hds[i], 0x30026000 + i * 0x2000);  
         }  
     }      }
   
     if (kernel_filename) {      if (kernel_filename) {
Line 129  void bareetraxfs_init (ram_addr_t ram_si Line 139  void bareetraxfs_init (ram_addr_t ram_si
         bootstrap_pc = entry;          bootstrap_pc = entry;
         if (kernel_size < 0) {          if (kernel_size < 0) {
             /* Takes a kimage from the axis devboard SDK.  */              /* Takes a kimage from the axis devboard SDK.  */
             kernel_size = load_image(kernel_filename, phys_ram_base + 0x4000);              kernel_size = load_image_targphys(kernel_filename, 0x40004000,
                                                 ram_size);
             bootstrap_pc = 0x40004000;              bootstrap_pc = 0x40004000;
             env->regs[9] = 0x40004000 + kernel_size;              env->regs[9] = 0x40004000 + kernel_size;
         }          }
Line 152  void bareetraxfs_init (ram_addr_t ram_si Line 163  void bareetraxfs_init (ram_addr_t ram_si
     printf ("ram size =%ld\n", ram_size);      printf ("ram size =%ld\n", ram_size);
 }  }
   
 QEMUMachine bareetraxfs_machine = {  static QEMUMachine bareetraxfs_machine = {
     .name = "bareetraxfs",      .name = "bareetraxfs",
     .desc = "Bare ETRAX FS board",      .desc = "Bare ETRAX FS board",
     .init = bareetraxfs_init,      .init = bareetraxfs_init,
     .ram_require = 0x8000000,      .is_default = 1,
 };  };
   
   static void bareetraxfs_machine_init(void)
   {
       qemu_register_machine(&bareetraxfs_machine);
   }
   
   machine_init(bareetraxfs_machine_init);

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


unix.superglobalmegacorp.com