diff -Naur dynamips-0.2.8-RC2.orig/cpu.h dynamips-0.2.8-RC2/cpu.h
old
|
new
|
|
99 | 99 | void (*mmu_raw_dump)(cpu_gen_t *cpu); |
100 | 100 | void (*add_breakpoint)(cpu_gen_t *cpu,m_uint64_t addr); |
101 | 101 | void (*remove_breakpoint)(cpu_gen_t *cpu,m_uint64_t addr); |
102 | | void (*set_idle_pc)(cpu_gen_t *cpu,m_uint64_t addr); |
| 102 | void (*set_idle_pc)(cpu_gen_t *cpu,char* addr); |
103 | 103 | void (*get_idling_pc)(cpu_gen_t *cpu); |
104 | 104 | void (*mts_rebuild)(cpu_gen_t *cpu); |
105 | 105 | void (*mts_show_stats)(cpu_gen_t *cpu); |
diff -Naur dynamips-0.2.8-RC2.orig/dev_c2600.c dynamips-0.2.8-RC2/dev_c2600.c
old
|
new
|
|
714 | 714 | |
715 | 715 | /* Copy some parameters from VM to CPU (idle PC, ...) */ |
716 | 716 | cpu->idle_pc = vm->idle_pc; |
| 717 | cpu->num_idle_pc = vm->num_idle_pc; |
717 | 718 | |
718 | 719 | if (vm->timer_irq_check_itv) |
719 | 720 | cpu->timer_irq_check_itv = vm->timer_irq_check_itv; |
… |
… |
|
847 | 848 | vm->name,cpu->ia,vm->jit_use ? "en":"dis"); |
848 | 849 | |
849 | 850 | vm_log(vm,"C2600_BOOT", |
850 | | "starting instance (CPU0 PC=0x%8.8x,idle_pc=0x%8.8x,JIT %s)\n", |
851 | | cpu->ia,cpu->idle_pc,vm->jit_use ? "on":"off"); |
| 851 | "starting instance (CPU0 PC=0x%8.8x,JIT %s)\n", |
| 852 | cpu->ia,vm->jit_use ? "on":"off"); |
852 | 853 | |
853 | 854 | /* Start main CPU */ |
854 | 855 | if (vm->ghost_status != VM_GHOST_RAM_GENERATE) { |
diff -Naur dynamips-0.2.8-RC2.orig/dev_c2691.c dynamips-0.2.8-RC2/dev_c2691.c
old
|
new
|
|
494 | 494 | |
495 | 495 | /* Copy some parameters from VM to CPU (idle PC, ...) */ |
496 | 496 | cpu->idle_pc = vm->idle_pc; |
| 497 | cpu->num_idle_pc = vm->num_idle_pc; |
497 | 498 | |
498 | 499 | if (vm->timer_irq_check_itv) |
499 | 500 | cpu->timer_irq_check_itv = vm->timer_irq_check_itv; |
… |
… |
|
594 | 595 | vm->name,cpu->pc,vm->jit_use ? "en":"dis"); |
595 | 596 | |
596 | 597 | vm_log(vm,"C2691_BOOT", |
597 | | "starting instance (CPU0 PC=0x%llx,idle_pc=0x%llx,JIT %s)\n", |
598 | | cpu->pc,cpu->idle_pc,vm->jit_use ? "on":"off"); |
| 598 | "starting instance (CPU0 PC=0x%llx,JIT %s)\n", |
| 599 | cpu->pc,vm->jit_use ? "on":"off"); |
599 | 600 | |
600 | 601 | /* Start main CPU */ |
601 | 602 | if (vm->ghost_status != VM_GHOST_RAM_GENERATE) { |
diff -Naur dynamips-0.2.8-RC2.orig/dev_c3600.c dynamips-0.2.8-RC2/dev_c3600.c
old
|
new
|
|
648 | 648 | |
649 | 649 | /* Copy some parameters from VM to CPU (idle PC, ...) */ |
650 | 650 | cpu->idle_pc = vm->idle_pc; |
| 651 | cpu->num_idle_pc = vm->num_idle_pc; |
651 | 652 | |
652 | 653 | if (vm->timer_irq_check_itv) |
653 | 654 | cpu->timer_irq_check_itv = vm->timer_irq_check_itv; |
… |
… |
|
756 | 757 | vm->name,cpu->pc,vm->jit_use ? "en":"dis"); |
757 | 758 | |
758 | 759 | vm_log(vm,"C3600_BOOT", |
759 | | "starting instance (CPU0 PC=0x%llx,idle_pc=0x%llx,JIT %s)\n", |
760 | | cpu->pc,cpu->idle_pc,vm->jit_use ? "on":"off"); |
| 760 | "starting instance (CPU0 PC=0x%llx,JIT %s)\n", |
| 761 | cpu->pc,vm->jit_use ? "on":"off"); |
761 | 762 | |
762 | 763 | /* Start main CPU */ |
763 | 764 | if (vm->ghost_status != VM_GHOST_RAM_GENERATE) { |
diff -Naur dynamips-0.2.8-RC2.orig/dev_c3725.c dynamips-0.2.8-RC2/dev_c3725.c
old
|
new
|
|
508 | 508 | |
509 | 509 | /* Copy some parameters from VM to CPU (idle PC, ...) */ |
510 | 510 | cpu->idle_pc = vm->idle_pc; |
| 511 | cpu->num_idle_pc = vm->num_idle_pc; |
511 | 512 | |
512 | 513 | if (vm->timer_irq_check_itv) |
513 | 514 | cpu->timer_irq_check_itv = vm->timer_irq_check_itv; |
… |
… |
|
608 | 609 | vm->name,cpu->pc,vm->jit_use ? "en":"dis"); |
609 | 610 | |
610 | 611 | vm_log(vm,"C3725_BOOT", |
611 | | "starting instance (CPU0 PC=0x%llx,idle_pc=0x%llx,JIT %s)\n", |
612 | | cpu->pc,cpu->idle_pc,vm->jit_use ? "on":"off"); |
| 612 | "starting instance (CPU0 PC=0x%llx,JIT %s)\n", |
| 613 | cpu->pc,vm->jit_use ? "on":"off"); |
613 | 614 | |
614 | 615 | /* Start main CPU */ |
615 | 616 | if (vm->ghost_status != VM_GHOST_RAM_GENERATE) { |
diff -Naur dynamips-0.2.8-RC2.orig/dev_c3745.c dynamips-0.2.8-RC2/dev_c3745.c
old
|
new
|
|
547 | 547 | |
548 | 548 | /* Copy some parameters from VM to CPU (idle PC, ...) */ |
549 | 549 | cpu->idle_pc = vm->idle_pc; |
| 550 | cpu->num_idle_pc = vm->num_idle_pc; |
550 | 551 | |
551 | 552 | if (vm->timer_irq_check_itv) |
552 | 553 | cpu->timer_irq_check_itv = vm->timer_irq_check_itv; |
… |
… |
|
647 | 648 | vm->name,cpu->pc,vm->jit_use ? "en":"dis"); |
648 | 649 | |
649 | 650 | vm_log(vm,"C3745_BOOT", |
650 | | "starting instance (CPU0 PC=0x%llx,idle_pc=0x%llx,JIT %s)\n", |
651 | | cpu->pc,cpu->idle_pc,vm->jit_use ? "on":"off"); |
| 651 | "starting instance (CPU0 PC=0x%llx,JIT %s)\n", |
| 652 | cpu->pc,vm->jit_use ? "on":"off"); |
652 | 653 | |
653 | 654 | /* Start main CPU */ |
654 | 655 | if (vm->ghost_status != VM_GHOST_RAM_GENERATE) { |
diff -Naur dynamips-0.2.8-RC2.orig/dev_c6msfc1.c dynamips-0.2.8-RC2/dev_c6msfc1.c
old
|
new
|
|
577 | 577 | |
578 | 578 | /* Copy some parameters from VM to CPU0 (idle PC, ...) */ |
579 | 579 | cpu0->idle_pc = vm->idle_pc; |
580 | | |
| 580 | cpu0->num_idle_pc = vm->num_idle_pc; |
| 581 | |
581 | 582 | if (vm->timer_irq_check_itv) |
582 | 583 | cpu0->timer_irq_check_itv = vm->timer_irq_check_itv; |
583 | 584 | |
diff -Naur dynamips-0.2.8-RC2.orig/dev_c7200.c dynamips-0.2.8-RC2/dev_c7200.c
old
|
new
|
|
1536 | 1536 | |
1537 | 1537 | /* Copy some parameters from VM to CPU0 (idle PC, ...) */ |
1538 | 1538 | cpu0->idle_pc = vm->idle_pc; |
| 1539 | cpu0->num_idle_pc = vm->num_idle_pc; |
| 1540 | cpu0->num_idle_pc = vm->num_idle_pc; |
1539 | 1541 | |
1540 | 1542 | if (vm->timer_irq_check_itv) |
1541 | 1543 | cpu0->timer_irq_check_itv = vm->timer_irq_check_itv; |
… |
… |
|
1660 | 1662 | vm->name,cpu->pc,vm->jit_use ? "en":"dis"); |
1661 | 1663 | |
1662 | 1664 | vm_log(vm,"C7200_BOOT", |
1663 | | "starting instance (CPU0 PC=0x%llx,idle_pc=0x%llx,JIT %s)\n", |
1664 | | cpu->pc,cpu->idle_pc,vm->jit_use ? "on":"off"); |
| 1665 | "starting instance (CPU0 PC=0x%llx,JIT %s)\n", |
| 1666 | cpu->pc,vm->jit_use ? "on":"off"); |
1665 | 1667 | |
1666 | 1668 | /* Start main CPU */ |
1667 | 1669 | if (vm->ghost_status != VM_GHOST_RAM_GENERATE) { |
… |
… |
|
1710 | 1712 | vm->name,cpu->ia,vm->jit_use ? "en":"dis"); |
1711 | 1713 | |
1712 | 1714 | vm_log(vm,"C7200P_BOOT", |
1713 | | "starting instance (CPU0 IA=0x%8.8x,idle_pc=0x%8.8x,JIT %s)\n", |
1714 | | cpu->ia,cpu->idle_pc,vm->jit_use ? "on":"off"); |
| 1715 | "starting instance (CPU0 IA=0x%8.8x,JIT %s)\n", |
| 1716 | cpu->ia,vm->jit_use ? "on":"off"); |
1715 | 1717 | |
1716 | 1718 | /* Start main CPU */ |
1717 | 1719 | if (vm->ghost_status != VM_GHOST_RAM_GENERATE) { |
diff -Naur dynamips-0.2.8-RC2.orig/dynamips.c dynamips-0.2.8-RC2/dynamips.c
old
|
new
|
|
364 | 364 | return vm; |
365 | 365 | } |
366 | 366 | |
| 367 | /* slices the val values into idle_pc values, and set them to the vm */ |
| 368 | static void set_idle_pc(vm_instance_t *vm, char *val) { |
| 369 | char *tmp_val; |
| 370 | int len = 0; |
| 371 | /* find out how many the string length */ |
| 372 | while (val[len] != '\0') |
| 373 | len += 1; |
| 374 | int i = 0; |
| 375 | int num_val = 1; |
| 376 | /* find out how many idle_pc values we have in the string */ |
| 377 | while (i < len) { |
| 378 | if (val[i] == ',') |
| 379 | num_val += 1; |
| 380 | i += 1; |
| 381 | } |
| 382 | vm->num_idle_pc = num_val; |
| 383 | vm->idle_pc = (m_uint64_t*)malloc(num_val*sizeof(unsigned long long int)); |
| 384 | |
| 385 | i = 0; |
| 386 | int current_val_idx = 0; |
| 387 | /* slice the string, and assign each individual idle_pc values */ |
| 388 | while (i < len) { |
| 389 | tmp_val = (char *) malloc((len+1)*sizeof(char)); |
| 390 | int j = 0; |
| 391 | while ((i < len)&&(val[i] != ',')) { |
| 392 | tmp_val[j] = val[i]; |
| 393 | i += 1; |
| 394 | j += 1; |
| 395 | } |
| 396 | tmp_val[j] = '\0'; |
| 397 | vm->idle_pc[current_val_idx] = strtoull(tmp_val, NULL, 0); |
| 398 | current_val_idx += 1; |
| 399 | i += 1; |
| 400 | free(tmp_val); |
| 401 | } |
| 402 | } |
| 403 | |
| 404 | |
367 | 405 | /* Parse the command line */ |
368 | 406 | static int parse_std_cmd_line(int argc,char *argv[]) |
369 | 407 | { |
… |
… |
|
491 | 529 | |
492 | 530 | /* Idle PC */ |
493 | 531 | case OPT_IDLE_PC: |
494 | | vm->idle_pc = strtoull(optarg,NULL,0); |
495 | | printf("Idle PC set to 0x%llx.\n",vm->idle_pc); |
| 532 | set_idle_pc(vm, optarg); |
496 | 533 | break; |
497 | 534 | |
498 | 535 | /* Timer IRQ check interval */ |
diff -Naur dynamips-0.2.8-RC2.orig/hv_vm.c dynamips-0.2.8-RC2/hv_vm.c
old
|
new
|
|
304 | 304 | if (!(vm = hypervisor_find_object(conn,argv[0],OBJ_TYPE_VM))) |
305 | 305 | return(-1); |
306 | 306 | |
307 | | vm->idle_pc = strtoull(argv[1],NULL,0); |
| 307 | char *tmp_val; |
| 308 | int len = 0; |
| 309 | /* find out how many the string length */ |
| 310 | while (argv[1][len] != '\0') |
| 311 | len += 1; |
| 312 | int i = 0; |
| 313 | int num_val = 1; |
| 314 | /* find out how many idle_pc values we have in the string */ |
| 315 | while (i < len) { |
| 316 | if (argv[1][i] == ',') |
| 317 | num_val += 1; |
| 318 | i += 1; |
| 319 | } |
| 320 | vm->num_idle_pc = num_val; |
| 321 | vm->idle_pc = (m_uint64_t*)malloc(num_val*sizeof(unsigned long long int)); |
| 322 | |
| 323 | i = 0; |
| 324 | int current_val_idx = 0; |
| 325 | while (i < len) { |
| 326 | tmp_val = (char *) malloc((len+1)*sizeof(char)); |
| 327 | int j = 0; |
| 328 | while ((i < len)&&(argv[1][i] != ',')) { |
| 329 | tmp_val[j] = argv[1][i]; |
| 330 | i += 1; |
| 331 | j += 1; |
| 332 | } |
| 333 | tmp_val[j] = '\0'; |
| 334 | vm->idle_pc[current_val_idx] = strtoull(tmp_val, NULL, 0); |
| 335 | current_val_idx += 1; |
| 336 | i += 1; |
| 337 | free(tmp_val); |
| 338 | } |
| 339 | |
308 | 340 | |
309 | 341 | vm_release(vm); |
310 | 342 | hypervisor_send_reply(conn,HSC_INFO_OK,1,"OK"); |
… |
… |
|
324 | 356 | if (!(cpu = find_cpu(conn,vm,atoi(argv[1])))) |
325 | 357 | return(-1); |
326 | 358 | |
327 | | cpu->set_idle_pc(cpu,strtoull(argv[2],NULL,0)); |
| 359 | cpu->set_idle_pc(cpu,argv[2]); |
328 | 360 | |
329 | 361 | vm_release(vm); |
330 | 362 | hypervisor_send_reply(conn,HSC_INFO_OK,1,"OK"); |
331 | 363 | return(0); |
332 | 364 | } |
333 | 365 | |
| 366 | |
334 | 367 | /* Get the idle PC proposals */ |
335 | 368 | static int cmd_get_idle_pc_prop(hypervisor_conn_t *conn,int argc,char *argv[]) |
336 | 369 | { |
diff -Naur dynamips-0.2.8-RC2.orig/mips64.c dynamips-0.2.8-RC2/mips64.c
old
|
new
|
|
138 | 138 | } |
139 | 139 | |
140 | 140 | /* Set idle PC value */ |
141 | | void mips64_set_idle_pc(cpu_gen_t *cpu,m_uint64_t addr) |
| 141 | void mips64_set_idle_pc(cpu_gen_t *cpu,char* addr) |
142 | 142 | { |
143 | | CPU_MIPS64(cpu)->idle_pc = addr; |
| 143 | char *tmp_val; |
| 144 | int len = 0; |
| 145 | /* find out how many the string length */ |
| 146 | while (addr[len] != '\0') |
| 147 | len += 1; |
| 148 | int i = 0; |
| 149 | int num_val = 1; |
| 150 | /* find out how many idle_pc values we have in the string */ |
| 151 | while (i < len) { |
| 152 | if (addr[i] == ',') |
| 153 | num_val += 1; |
| 154 | i += 1; |
| 155 | } |
| 156 | CPU_MIPS64(cpu)->num_idle_pc = num_val; |
| 157 | CPU_MIPS64(cpu)->idle_pc = (m_uint64_t*)malloc(num_val*sizeof(unsigned long long int)); |
| 158 | |
| 159 | i = 0; |
| 160 | int current_val_idx = 0; |
| 161 | /* slice the string, and assign each individual idle_pc values */ |
| 162 | while (i < len) { |
| 163 | tmp_val = (char *) malloc((len+1)*sizeof(char)); |
| 164 | int j = 0; |
| 165 | while ((i < len)&&(addr[i] != ',')) { |
| 166 | tmp_val[j] = addr[i]; |
| 167 | i += 1; |
| 168 | j += 1; |
| 169 | } |
| 170 | tmp_val[j] = '\0'; |
| 171 | CPU_MIPS64(cpu)->idle_pc[current_val_idx] = (m_uint32_t) strtoull(tmp_val, NULL, 0); |
| 172 | current_val_idx += 1; |
| 173 | i += 1; |
| 174 | free(tmp_val); |
| 175 | } |
144 | 176 | } |
145 | 177 | |
146 | 178 | /* Timer IRQ */ |
diff -Naur dynamips-0.2.8-RC2.orig/mips64.h dynamips-0.2.8-RC2/mips64.h
old
|
new
|
|
389 | 389 | insn_exec_page_t *exec_page_free_list; |
390 | 390 | insn_exec_page_t *exec_page_array; |
391 | 391 | |
392 | | /* Idle PC value */ |
393 | | volatile m_uint64_t idle_pc; |
| 392 | /* Idle PC value array */ |
| 393 | volatile m_uint64_t* idle_pc; |
| 394 | |
| 395 | /* Number of Idle PC value */ |
| 396 | volatile int num_idle_pc; |
394 | 397 | |
395 | 398 | /* Timer IRQs */ |
396 | 399 | volatile u_int timer_irq_pending; |
… |
… |
|
479 | 482 | void mips64_set_prid(cpu_mips_t *cpu,m_uint32_t prid); |
480 | 483 | |
481 | 484 | /* Set idle PC value */ |
482 | | void mips64_set_idle_pc(cpu_gen_t *cpu,m_uint64_t addr); |
| 485 | void mips64_set_idle_pc(cpu_gen_t *cpu,char* addr); |
483 | 486 | |
484 | 487 | /* Timer IRQ */ |
485 | 488 | void *mips64_timer_irq_run(cpu_mips_t *cpu); |
diff -Naur dynamips-0.2.8-RC2.orig/mips64_jit.c dynamips-0.2.8-RC2/mips64_jit.c
old
|
new
|
|
750 | 750 | cpu->perf_counter++; |
751 | 751 | #endif |
752 | 752 | /* Handle virtual idle loop */ |
753 | | if (unlikely(cpu->pc == cpu->idle_pc)) { |
754 | | if (++gen->idle_count == gen->idle_max) { |
755 | | cpu_idle_loop(gen); |
756 | | gen->idle_count = 0; |
757 | | } |
| 753 | int i; |
| 754 | for (i = 0; i < cpu->num_idle_pc; i++) { |
| 755 | if (unlikely(cpu->pc == cpu->idle_pc[i])) { |
| 756 | if (++gen->idle_count == gen->idle_max) { |
| 757 | cpu_idle_loop(gen); |
| 758 | gen->idle_count = 0; |
| 759 | } |
| 760 | } |
758 | 761 | } |
759 | 762 | |
760 | 763 | /* Handle the virtual CPU clock */ |
diff -Naur dynamips-0.2.8-RC2.orig/ppc32.c dynamips-0.2.8-RC2/ppc32.c
old
|
new
|
|
95 | 95 | } |
96 | 96 | |
97 | 97 | /* Set idle PC value */ |
98 | | void ppc32_set_idle_pc(cpu_gen_t *cpu,m_uint64_t addr) |
| 98 | void ppc32_set_idle_pc(cpu_gen_t *cpu, char* addr) |
99 | 99 | { |
100 | | CPU_PPC32(cpu)->idle_pc = (m_uint32_t)addr; |
| 100 | char *tmp_val; |
| 101 | int len = 0; |
| 102 | /* find out how many the string length */ |
| 103 | while (addr[len] != '\0') |
| 104 | len += 1; |
| 105 | int i = 0; |
| 106 | int num_val = 1; |
| 107 | /* find out how many idle_pc values we have in the string */ |
| 108 | while (i < len) { |
| 109 | if (addr[i] == ',') |
| 110 | num_val += 1; |
| 111 | i += 1; |
| 112 | } |
| 113 | CPU_PPC32(cpu)->num_idle_pc = num_val; |
| 114 | CPU_PPC32(cpu)->idle_pc = (m_uint64_t*)malloc(num_val*sizeof(unsigned long long int)); |
| 115 | |
| 116 | i = 0; |
| 117 | int current_val_idx = 0; |
| 118 | /* slice the string, and assign each individual idle_pc values */ |
| 119 | while (i < len) { |
| 120 | tmp_val = (char *) malloc((len+1)*sizeof(char)); |
| 121 | int j = 0; |
| 122 | while ((i < len)&&(addr[i] != ',')) { |
| 123 | tmp_val[j] = addr[i]; |
| 124 | i += 1; |
| 125 | j += 1; |
| 126 | } |
| 127 | tmp_val[j] = '\0'; |
| 128 | CPU_PPC32(cpu)->idle_pc[current_val_idx] = (m_uint32_t) strtoull(tmp_val, NULL, 0); |
| 129 | current_val_idx += 1; |
| 130 | i += 1; |
| 131 | free(tmp_val); |
| 132 | } |
101 | 133 | } |
102 | 134 | |
103 | 135 | /* Timer IRQ */ |
diff -Naur dynamips-0.2.8-RC2.orig/ppc32.h dynamips-0.2.8-RC2/ppc32.h
old
|
new
|
|
344 | 344 | insn_exec_page_t *exec_page_free_list; |
345 | 345 | insn_exec_page_t *exec_page_array; |
346 | 346 | |
347 | | /* Idle PC value */ |
348 | | volatile m_uint32_t idle_pc; |
| 347 | /* Array Idle PC value */ |
| 348 | volatile m_uint32_t* idle_pc; |
| 349 | |
| 350 | /* Number of idle_pc values */ |
| 351 | volatile int num_idle_pc; |
349 | 352 | |
350 | 353 | /* Timer IRQs */ |
351 | 354 | volatile u_int timer_irq_pending,timer_irq_armed; |
… |
… |
|
500 | 503 | void ppc32_set_pvr(cpu_ppc_t *cpu,m_uint32_t pvr); |
501 | 504 | |
502 | 505 | /* Set idle PC value */ |
503 | | void ppc32_set_idle_pc(cpu_gen_t *cpu,m_uint64_t addr); |
| 506 | void ppc32_set_idle_pc(cpu_gen_t *cpu, char* addr); |
504 | 507 | |
505 | 508 | /* Timer IRQ */ |
506 | 509 | void *ppc32_timer_irq_run(cpu_ppc_t *cpu); |
diff -Naur dynamips-0.2.8-RC2.orig/ppc32_jit.c dynamips-0.2.8-RC2/ppc32_jit.c
old
|
new
|
|
1240 | 1240 | cpu->perf_counter++; |
1241 | 1241 | #endif |
1242 | 1242 | /* Handle virtual idle loop */ |
1243 | | if (unlikely(cpu->ia == cpu->idle_pc)) { |
1244 | | if (++gen->idle_count == gen->idle_max) { |
1245 | | cpu_idle_loop(gen); |
1246 | | gen->idle_count = 0; |
1247 | | } |
| 1243 | int i; |
| 1244 | for (i = 0; i < cpu->num_idle_pc; i++) { |
| 1245 | if (unlikely(cpu->ia == cpu->idle_pc[i])) { |
| 1246 | if (++gen->idle_count == gen->idle_max) { |
| 1247 | cpu_idle_loop(gen); |
| 1248 | gen->idle_count = 0; |
| 1249 | } |
| 1250 | } |
1248 | 1251 | } |
1249 | 1252 | |
1250 | 1253 | /* Handle the virtual CPU clock */ |
diff -Naur dynamips-0.2.8-RC2.orig/vm.c dynamips-0.2.8-RC2/vm.c
old
|
new
|
|
329 | 329 | vm->vtty_aux_type = VTTY_TYPE_NONE; |
330 | 330 | vm->timer_irq_check_itv = VM_TIMER_IRQ_CHECK_ITV; |
331 | 331 | vm->log_file_enabled = TRUE; |
| 332 | vm->num_idle_pc = 0; |
332 | 333 | vm->rommon_vars.filename = vm_build_filename(vm,"rommon_vars"); |
333 | 334 | |
334 | 335 | if (!vm->rommon_vars.filename) |
diff -Naur dynamips-0.2.8-RC2.orig/vm.h dynamips-0.2.8-RC2/vm.h
old
|
new
|
|
153 | 153 | /* Timer IRQ interval check */ |
154 | 154 | u_int timer_irq_check_itv; |
155 | 155 | |
156 | | /* "idling" pointer counter */ |
157 | | m_uint64_t idle_pc; |
| 156 | /* "idling" pointer counter array*/ |
| 157 | m_uint64_t* idle_pc; |
| 158 | |
| 159 | /* number of idle_pc values */ |
| 160 | int num_idle_pc; |
158 | 161 | |
159 | 162 | /* JIT block direct jumps */ |
160 | 163 | int exec_blk_direct_jump; |
… |
… |
|
181 | 184 | |
182 | 185 | /* VM objects */ |
183 | 186 | struct vm_obj *vm_object_list; |
| 187 | |
184 | 188 | }; |
185 | 189 | |
186 | 190 | /* VM Platform definition */ |