Changeset 16455 in vbox
- Timestamp:
- Feb 2, 2009 12:55:06 PM (16 years ago)
- Location:
- trunk/src/recompiler_new
- Files:
-
- 6 edited
-
VBoxRecompiler.c (modified) (1 diff)
-
cpu-exec.c (modified) (1 diff)
-
osdep.h (modified) (1 diff)
-
target-i386/helper.c (modified) (5 diffs)
-
target-i386/op_helper.c (modified) (4 diffs)
-
target-i386/translate.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/recompiler_new/VBoxRecompiler.c
r16156 r16455 4394 4394 static const char *apsz[] = 4395 4395 { 4396 "sys_restart_syscall", /* 0 - old "setup()" system call, used for restarting */4397 "sys_exit",4398 "sys_fork",4399 "sys_read",4400 "sys_write",4401 "sys_open", /* 5 */4402 "sys_close",4403 "sys_waitpid",4404 "sys_creat",4405 "sys_link",4406 "sys_unlink", /* 10 */4407 "sys_execve",4408 "sys_chdir",4409 "sys_time",4410 "sys_mknod",4411 "sys_chmod", /* 15 */4412 "sys_lchown16",4413 "sys_ni_syscall", /* old break syscall holder */4414 "sys_stat",4415 "sys_lseek",4416 "sys_getpid", /* 20 */4417 "sys_mount",4418 "sys_oldumount",4419 "sys_setuid16",4420 "sys_getuid16",4421 "sys_stime", /* 25 */4422 "sys_ptrace",4423 "sys_alarm",4424 "sys_fstat",4425 "sys_pause",4426 "sys_utime", /* 30 */4427 "sys_ni_syscall", /* old stty syscall holder */4428 "sys_ni_syscall", /* old gtty syscall holder */4429 "sys_access",4430 "sys_nice",4431 "sys_ni_syscall", /* 35 - old ftime syscall holder */4432 "sys_sync",4433 "sys_kill",4434 "sys_rename",4435 "sys_mkdir",4436 "sys_rmdir", /* 40 */4437 "sys_dup",4438 "sys_pipe",4439 "sys_times",4440 "sys_ni_syscall", /* old prof syscall holder */4441 "sys_brk", /* 45 */4442 "sys_setgid16",4443 "sys_getgid16",4444 "sys_signal",4445 "sys_geteuid16",4446 "sys_getegid16", /* 50 */4447 "sys_acct",4448 "sys_umount", /* recycled never used phys() */4449 "sys_ni_syscall", /* old lock syscall holder */4450 "sys_ioctl",4451 "sys_fcntl", /* 55 */4452 "sys_ni_syscall", /* old mpx syscall holder */4453 "sys_setpgid",4454 "sys_ni_syscall", /* old ulimit syscall holder */4455 "sys_olduname",4456 "sys_umask", /* 60 */4457 "sys_chroot",4458 "sys_ustat",4459 "sys_dup2",4460 "sys_getppid",4461 "sys_getpgrp", /* 65 */4462 "sys_setsid",4463 "sys_sigaction",4464 "sys_sgetmask",4465 "sys_ssetmask",4466 "sys_setreuid16", /* 70 */4467 "sys_setregid16",4468 "sys_sigsuspend",4469 "sys_sigpending",4470 "sys_sethostname",4471 "sys_setrlimit", /* 75 */4472 "sys_old_getrlimit",4473 "sys_getrusage",4474 "sys_gettimeofday",4475 "sys_settimeofday",4476 "sys_getgroups16", /* 80 */4477 "sys_setgroups16",4478 "old_select",4479 "sys_symlink",4480 "sys_lstat",4481 "sys_readlink", /* 85 */4482 "sys_uselib",4483 "sys_swapon",4484 "sys_reboot",4485 "old_readdir",4486 "old_mmap", /* 90 */4487 "sys_munmap",4488 "sys_truncate",4489 "sys_ftruncate",4490 "sys_fchmod",4491 "sys_fchown16", /* 95 */4492 "sys_getpriority",4493 "sys_setpriority",4494 "sys_ni_syscall", /* old profil syscall holder */4495 "sys_statfs",4496 "sys_fstatfs", /* 100 */4497 "sys_ioperm",4498 "sys_socketcall",4499 "sys_syslog",4500 "sys_setitimer",4501 "sys_getitimer", /* 105 */4502 "sys_newstat",4503 "sys_newlstat",4504 "sys_newfstat",4505 "sys_uname",4506 "sys_iopl", /* 110 */4507 "sys_vhangup",4508 "sys_ni_syscall", /* old "idle" system call */4509 "sys_vm86old",4510 "sys_wait4",4511 "sys_swapoff", /* 115 */4512 "sys_sysinfo",4513 "sys_ipc",4514 "sys_fsync",4515 "sys_sigreturn",4516 "sys_clone", /* 120 */4517 "sys_setdomainname",4518 "sys_newuname",4519 "sys_modify_ldt",4520 "sys_adjtimex",4521 "sys_mprotect", /* 125 */4522 "sys_sigprocmask",4523 "sys_ni_syscall", /* old "create_module" */4524 "sys_init_module",4525 "sys_delete_module",4526 "sys_ni_syscall", /* 130: old "get_kernel_syms" */4527 "sys_quotactl",4528 "sys_getpgid",4529 "sys_fchdir",4530 "sys_bdflush",4531 "sys_sysfs", /* 135 */4532 "sys_personality",4533 "sys_ni_syscall", /* reserved for afs_syscall */4534 "sys_setfsuid16",4535 "sys_setfsgid16",4536 "sys_llseek", /* 140 */4537 "sys_getdents",4538 "sys_select",4539 "sys_flock",4540 "sys_msync",4541 "sys_readv", /* 145 */4542 "sys_writev",4543 "sys_getsid",4544 "sys_fdatasync",4545 "sys_sysctl",4546 "sys_mlock", /* 150 */4547 "sys_munlock",4548 "sys_mlockall",4549 "sys_munlockall",4550 "sys_sched_setparam",4551 "sys_sched_getparam", /* 155 */4552 "sys_sched_setscheduler",4553 "sys_sched_getscheduler",4554 "sys_sched_yield",4555 "sys_sched_get_priority_max",4556 "sys_sched_get_priority_min", /* 160 */4557 "sys_sched_rr_get_interval",4558 "sys_nanosleep",4559 "sys_mremap",4560 "sys_setresuid16",4561 "sys_getresuid16", /* 165 */4562 "sys_vm86",4563 "sys_ni_syscall", /* Old sys_query_module */4564 "sys_poll",4565 "sys_nfsservctl",4566 "sys_setresgid16", /* 170 */4567 "sys_getresgid16",4568 "sys_prctl",4569 "sys_rt_sigreturn",4570 "sys_rt_sigaction",4571 "sys_rt_sigprocmask", /* 175 */4572 "sys_rt_sigpending",4573 "sys_rt_sigtimedwait",4574 "sys_rt_sigqueueinfo",4575 "sys_rt_sigsuspend",4576 "sys_pread64", /* 180 */4577 "sys_pwrite64",4578 "sys_chown16",4579 "sys_getcwd",4580 "sys_capget",4581 "sys_capset", /* 185 */4582 "sys_sigaltstack",4583 "sys_sendfile",4584 "sys_ni_syscall", /* reserved for streams1 */4585 "sys_ni_syscall", /* reserved for streams2 */4586 "sys_vfork", /* 190 */4587 "sys_getrlimit",4588 "sys_mmap2",4589 "sys_truncate64",4590 "sys_ftruncate64",4591 "sys_stat64", /* 195 */4592 "sys_lstat64",4593 "sys_fstat64",4594 "sys_lchown",4595 "sys_getuid",4596 "sys_getgid", /* 200 */4597 "sys_geteuid",4598 "sys_getegid",4599 "sys_setreuid",4600 "sys_setregid",4601 "sys_getgroups", /* 205 */4602 "sys_setgroups",4603 "sys_fchown",4604 "sys_setresuid",4605 "sys_getresuid",4606 "sys_setresgid", /* 210 */4607 "sys_getresgid",4608 "sys_chown",4609 "sys_setuid",4610 "sys_setgid",4611 "sys_setfsuid", /* 215 */4612 "sys_setfsgid",4613 "sys_pivot_root",4614 "sys_mincore",4615 "sys_madvise",4616 "sys_getdents64", /* 220 */4617 "sys_fcntl64",4618 "sys_ni_syscall", /* reserved for TUX */4619 "sys_ni_syscall",4620 "sys_gettid",4621 "sys_readahead", /* 225 */4622 "sys_setxattr",4623 "sys_lsetxattr",4624 "sys_fsetxattr",4625 "sys_getxattr",4626 "sys_lgetxattr", /* 230 */4627 "sys_fgetxattr",4628 "sys_listxattr",4629 "sys_llistxattr",4630 "sys_flistxattr",4631 "sys_removexattr", /* 235 */4632 "sys_lremovexattr",4633 "sys_fremovexattr",4634 "sys_tkill",4635 "sys_sendfile64",4636 "sys_futex", /* 240 */4637 "sys_sched_setaffinity",4638 "sys_sched_getaffinity",4639 "sys_set_thread_area",4640 "sys_get_thread_area",4641 "sys_io_setup", /* 245 */4642 "sys_io_destroy",4643 "sys_io_getevents",4644 "sys_io_submit",4645 "sys_io_cancel",4646 "sys_fadvise64", /* 250 */4647 "sys_ni_syscall",4648 "sys_exit_group",4649 "sys_lookup_dcookie",4650 "sys_epoll_create",4651 "sys_epoll_ctl", /* 255 */4652 "sys_epoll_wait",4653 "sys_remap_file_pages",4654 "sys_set_tid_address",4655 "sys_timer_create",4656 "sys_timer_settime", /* 260 */4657 "sys_timer_gettime",4658 "sys_timer_getoverrun",4659 "sys_timer_delete",4660 "sys_clock_settime",4661 "sys_clock_gettime", /* 265 */4662 "sys_clock_getres",4663 "sys_clock_nanosleep",4664 "sys_statfs64",4665 "sys_fstatfs64",4666 "sys_tgkill", /* 270 */4667 "sys_utimes",4668 "sys_fadvise64_64",4669 "sys_ni_syscall" /* sys_vserver */4396 "sys_restart_syscall", /* 0 - old "setup()" system call, used for restarting */ 4397 "sys_exit", 4398 "sys_fork", 4399 "sys_read", 4400 "sys_write", 4401 "sys_open", /* 5 */ 4402 "sys_close", 4403 "sys_waitpid", 4404 "sys_creat", 4405 "sys_link", 4406 "sys_unlink", /* 10 */ 4407 "sys_execve", 4408 "sys_chdir", 4409 "sys_time", 4410 "sys_mknod", 4411 "sys_chmod", /* 15 */ 4412 "sys_lchown16", 4413 "sys_ni_syscall", /* old break syscall holder */ 4414 "sys_stat", 4415 "sys_lseek", 4416 "sys_getpid", /* 20 */ 4417 "sys_mount", 4418 "sys_oldumount", 4419 "sys_setuid16", 4420 "sys_getuid16", 4421 "sys_stime", /* 25 */ 4422 "sys_ptrace", 4423 "sys_alarm", 4424 "sys_fstat", 4425 "sys_pause", 4426 "sys_utime", /* 30 */ 4427 "sys_ni_syscall", /* old stty syscall holder */ 4428 "sys_ni_syscall", /* old gtty syscall holder */ 4429 "sys_access", 4430 "sys_nice", 4431 "sys_ni_syscall", /* 35 - old ftime syscall holder */ 4432 "sys_sync", 4433 "sys_kill", 4434 "sys_rename", 4435 "sys_mkdir", 4436 "sys_rmdir", /* 40 */ 4437 "sys_dup", 4438 "sys_pipe", 4439 "sys_times", 4440 "sys_ni_syscall", /* old prof syscall holder */ 4441 "sys_brk", /* 45 */ 4442 "sys_setgid16", 4443 "sys_getgid16", 4444 "sys_signal", 4445 "sys_geteuid16", 4446 "sys_getegid16", /* 50 */ 4447 "sys_acct", 4448 "sys_umount", /* recycled never used phys() */ 4449 "sys_ni_syscall", /* old lock syscall holder */ 4450 "sys_ioctl", 4451 "sys_fcntl", /* 55 */ 4452 "sys_ni_syscall", /* old mpx syscall holder */ 4453 "sys_setpgid", 4454 "sys_ni_syscall", /* old ulimit syscall holder */ 4455 "sys_olduname", 4456 "sys_umask", /* 60 */ 4457 "sys_chroot", 4458 "sys_ustat", 4459 "sys_dup2", 4460 "sys_getppid", 4461 "sys_getpgrp", /* 65 */ 4462 "sys_setsid", 4463 "sys_sigaction", 4464 "sys_sgetmask", 4465 "sys_ssetmask", 4466 "sys_setreuid16", /* 70 */ 4467 "sys_setregid16", 4468 "sys_sigsuspend", 4469 "sys_sigpending", 4470 "sys_sethostname", 4471 "sys_setrlimit", /* 75 */ 4472 "sys_old_getrlimit", 4473 "sys_getrusage", 4474 "sys_gettimeofday", 4475 "sys_settimeofday", 4476 "sys_getgroups16", /* 80 */ 4477 "sys_setgroups16", 4478 "old_select", 4479 "sys_symlink", 4480 "sys_lstat", 4481 "sys_readlink", /* 85 */ 4482 "sys_uselib", 4483 "sys_swapon", 4484 "sys_reboot", 4485 "old_readdir", 4486 "old_mmap", /* 90 */ 4487 "sys_munmap", 4488 "sys_truncate", 4489 "sys_ftruncate", 4490 "sys_fchmod", 4491 "sys_fchown16", /* 95 */ 4492 "sys_getpriority", 4493 "sys_setpriority", 4494 "sys_ni_syscall", /* old profil syscall holder */ 4495 "sys_statfs", 4496 "sys_fstatfs", /* 100 */ 4497 "sys_ioperm", 4498 "sys_socketcall", 4499 "sys_syslog", 4500 "sys_setitimer", 4501 "sys_getitimer", /* 105 */ 4502 "sys_newstat", 4503 "sys_newlstat", 4504 "sys_newfstat", 4505 "sys_uname", 4506 "sys_iopl", /* 110 */ 4507 "sys_vhangup", 4508 "sys_ni_syscall", /* old "idle" system call */ 4509 "sys_vm86old", 4510 "sys_wait4", 4511 "sys_swapoff", /* 115 */ 4512 "sys_sysinfo", 4513 "sys_ipc", 4514 "sys_fsync", 4515 "sys_sigreturn", 4516 "sys_clone", /* 120 */ 4517 "sys_setdomainname", 4518 "sys_newuname", 4519 "sys_modify_ldt", 4520 "sys_adjtimex", 4521 "sys_mprotect", /* 125 */ 4522 "sys_sigprocmask", 4523 "sys_ni_syscall", /* old "create_module" */ 4524 "sys_init_module", 4525 "sys_delete_module", 4526 "sys_ni_syscall", /* 130: old "get_kernel_syms" */ 4527 "sys_quotactl", 4528 "sys_getpgid", 4529 "sys_fchdir", 4530 "sys_bdflush", 4531 "sys_sysfs", /* 135 */ 4532 "sys_personality", 4533 "sys_ni_syscall", /* reserved for afs_syscall */ 4534 "sys_setfsuid16", 4535 "sys_setfsgid16", 4536 "sys_llseek", /* 140 */ 4537 "sys_getdents", 4538 "sys_select", 4539 "sys_flock", 4540 "sys_msync", 4541 "sys_readv", /* 145 */ 4542 "sys_writev", 4543 "sys_getsid", 4544 "sys_fdatasync", 4545 "sys_sysctl", 4546 "sys_mlock", /* 150 */ 4547 "sys_munlock", 4548 "sys_mlockall", 4549 "sys_munlockall", 4550 "sys_sched_setparam", 4551 "sys_sched_getparam", /* 155 */ 4552 "sys_sched_setscheduler", 4553 "sys_sched_getscheduler", 4554 "sys_sched_yield", 4555 "sys_sched_get_priority_max", 4556 "sys_sched_get_priority_min", /* 160 */ 4557 "sys_sched_rr_get_interval", 4558 "sys_nanosleep", 4559 "sys_mremap", 4560 "sys_setresuid16", 4561 "sys_getresuid16", /* 165 */ 4562 "sys_vm86", 4563 "sys_ni_syscall", /* Old sys_query_module */ 4564 "sys_poll", 4565 "sys_nfsservctl", 4566 "sys_setresgid16", /* 170 */ 4567 "sys_getresgid16", 4568 "sys_prctl", 4569 "sys_rt_sigreturn", 4570 "sys_rt_sigaction", 4571 "sys_rt_sigprocmask", /* 175 */ 4572 "sys_rt_sigpending", 4573 "sys_rt_sigtimedwait", 4574 "sys_rt_sigqueueinfo", 4575 "sys_rt_sigsuspend", 4576 "sys_pread64", /* 180 */ 4577 "sys_pwrite64", 4578 "sys_chown16", 4579 "sys_getcwd", 4580 "sys_capget", 4581 "sys_capset", /* 185 */ 4582 "sys_sigaltstack", 4583 "sys_sendfile", 4584 "sys_ni_syscall", /* reserved for streams1 */ 4585 "sys_ni_syscall", /* reserved for streams2 */ 4586 "sys_vfork", /* 190 */ 4587 "sys_getrlimit", 4588 "sys_mmap2", 4589 "sys_truncate64", 4590 "sys_ftruncate64", 4591 "sys_stat64", /* 195 */ 4592 "sys_lstat64", 4593 "sys_fstat64", 4594 "sys_lchown", 4595 "sys_getuid", 4596 "sys_getgid", /* 200 */ 4597 "sys_geteuid", 4598 "sys_getegid", 4599 "sys_setreuid", 4600 "sys_setregid", 4601 "sys_getgroups", /* 205 */ 4602 "sys_setgroups", 4603 "sys_fchown", 4604 "sys_setresuid", 4605 "sys_getresuid", 4606 "sys_setresgid", /* 210 */ 4607 "sys_getresgid", 4608 "sys_chown", 4609 "sys_setuid", 4610 "sys_setgid", 4611 "sys_setfsuid", /* 215 */ 4612 "sys_setfsgid", 4613 "sys_pivot_root", 4614 "sys_mincore", 4615 "sys_madvise", 4616 "sys_getdents64", /* 220 */ 4617 "sys_fcntl64", 4618 "sys_ni_syscall", /* reserved for TUX */ 4619 "sys_ni_syscall", 4620 "sys_gettid", 4621 "sys_readahead", /* 225 */ 4622 "sys_setxattr", 4623 "sys_lsetxattr", 4624 "sys_fsetxattr", 4625 "sys_getxattr", 4626 "sys_lgetxattr", /* 230 */ 4627 "sys_fgetxattr", 4628 "sys_listxattr", 4629 "sys_llistxattr", 4630 "sys_flistxattr", 4631 "sys_removexattr", /* 235 */ 4632 "sys_lremovexattr", 4633 "sys_fremovexattr", 4634 "sys_tkill", 4635 "sys_sendfile64", 4636 "sys_futex", /* 240 */ 4637 "sys_sched_setaffinity", 4638 "sys_sched_getaffinity", 4639 "sys_set_thread_area", 4640 "sys_get_thread_area", 4641 "sys_io_setup", /* 245 */ 4642 "sys_io_destroy", 4643 "sys_io_getevents", 4644 "sys_io_submit", 4645 "sys_io_cancel", 4646 "sys_fadvise64", /* 250 */ 4647 "sys_ni_syscall", 4648 "sys_exit_group", 4649 "sys_lookup_dcookie", 4650 "sys_epoll_create", 4651 "sys_epoll_ctl", /* 255 */ 4652 "sys_epoll_wait", 4653 "sys_remap_file_pages", 4654 "sys_set_tid_address", 4655 "sys_timer_create", 4656 "sys_timer_settime", /* 260 */ 4657 "sys_timer_gettime", 4658 "sys_timer_getoverrun", 4659 "sys_timer_delete", 4660 "sys_clock_settime", 4661 "sys_clock_gettime", /* 265 */ 4662 "sys_clock_getres", 4663 "sys_clock_nanosleep", 4664 "sys_statfs64", 4665 "sys_fstatfs64", 4666 "sys_tgkill", /* 270 */ 4667 "sys_utimes", 4668 "sys_fadvise64_64", 4669 "sys_ni_syscall" /* sys_vserver */ 4670 4670 }; 4671 4671 -
trunk/src/recompiler_new/cpu-exec.c
r14531 r16455 478 478 RAWEx_ProfileStart(env, STATS_QEMU_RUN_EMULATED_CODE); 479 479 #if defined(VBOX) && defined(GCC_WITH_BUGGY_REGPARM) 480 tcg_qemu_tb_exec(tc_ptr, next_tb); 480 tcg_qemu_tb_exec(tc_ptr, next_tb); 481 481 #else 482 482 next_tb = tcg_qemu_tb_exec(tc_ptr); -
trunk/src/recompiler_new/osdep.h
r16061 r16455 182 182 #define RESTORE_GLOBAL_REGISTER(reg, var) __asm__ __volatile__ ("" : : "r" (var)) 183 183 #define DECLALWAYSINLINE(type) static always_inline type 184 #define FORCE_RET() __asm__ __volatile__("" : : : "memory");184 #define FORCE_RET() ; 185 185 #endif /* !_MSC_VER */ 186 186 #endif /* VBOX */ -
trunk/src/recompiler_new/target-i386/helper.c
r13652 r16455 46 46 static int cpu_x86_register (CPUX86State *env, const char *cpu_model); 47 47 48 static void add_flagname_to_bitmaps(char *flagname, uint32_t *features, 49 uint32_t *ext_features, 50 uint32_t *ext2_features, 48 static void add_flagname_to_bitmaps(char *flagname, uint32_t *features, 49 uint32_t *ext_features, 50 uint32_t *ext2_features, 51 51 uint32_t *ext3_features) 52 52 { 53 53 int i; 54 54 /* feature flags taken from "Intel Processor Identification and the CPUID 55 * Instruction" and AMD's "CPUID Specification". In cases of disagreement 55 * Instruction" and AMD's "CPUID Specification". In cases of disagreement 56 56 * about feature names, the Linux name is used. */ 57 57 static const char *feature_name[] = { … … 80 80 }; 81 81 82 for ( i = 0 ; i < 32 ; i++ ) 82 for ( i = 0 ; i < 32 ; i++ ) 83 83 if (feature_name[i] && !strcmp (flagname, feature_name[i])) { 84 84 *features |= 1 << i; 85 85 return; 86 86 } 87 for ( i = 0 ; i < 32 ; i++ ) 87 for ( i = 0 ; i < 32 ; i++ ) 88 88 if (ext_feature_name[i] && !strcmp (flagname, ext_feature_name[i])) { 89 89 *ext_features |= 1 << i; 90 90 return; 91 91 } 92 for ( i = 0 ; i < 32 ; i++ ) 92 for ( i = 0 ; i < 32 ; i++ ) 93 93 if (ext2_feature_name[i] && !strcmp (flagname, ext2_feature_name[i])) { 94 94 *ext2_features |= 1 << i; 95 95 return; 96 96 } 97 for ( i = 0 ; i < 32 ; i++ ) 97 for ( i = 0 ; i < 32 ; i++ ) 98 98 if (ext3_feature_name[i] && !strcmp (flagname, ext3_feature_name[i])) { 99 99 *ext3_features |= 1 << i; … … 170 170 .model = 2, 171 171 .stepping = 3, 172 .features = PPRO_FEATURES | 172 .features = PPRO_FEATURES | 173 173 /* these features are needed for Win64 and aren't fully implemented */ 174 174 CPUID_MTRR | CPUID_CLFLUSH | CPUID_MCA | … … 176 176 CPUID_PSE36, 177 177 .ext_features = CPUID_EXT_SSE3, 178 .ext2_features = (PPRO_FEATURES & 0x0183F3FF) | 178 .ext2_features = (PPRO_FEATURES & 0x0183F3FF) | 179 179 CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX | 180 180 CPUID_EXT2_3DNOW | CPUID_EXT2_3DNOWEXT, … … 1218 1218 if (env->intercept_exceptions & (1 << EXCP0E_PAGE)) { 1219 1219 /* cr2 is not modified in case of exceptions */ 1220 stq_phys(env->vm_vmcb + offsetof(struct vmcb, control.exit_info_2), 1220 stq_phys(env->vm_vmcb + offsetof(struct vmcb, control.exit_info_2), 1221 1221 addr); 1222 1222 } else { -
trunk/src/recompiler_new/target-i386/op_helper.c
r16342 r16455 690 690 void helper_sync_seg(uint32_t reg) 691 691 { 692 assert(env->segs[reg].newselector != 0);693 sync_seg(env, reg, env->segs[reg].newselector);692 if (env->segs[reg].newselector) 693 sync_seg(env, reg, env->segs[reg].newselector); 694 694 } 695 695 #endif … … 5681 5681 /* For some reasons, it works even w/o save/restore of the jump buffer, so as code is 5682 5682 time critical - let's not do that */ 5683 #if 05683 #ifdef FORCE_SEGMENT_SYNC 5684 5684 memcpy(&old_buf, &env1->jmp_env, sizeof(old_buf)); 5685 5685 #endif … … 5715 5715 env1->old_exception = -1; 5716 5716 } 5717 #if 05717 #ifdef FORCE_SEGMENT_SYNC 5718 5718 memcpy(&env1->jmp_env, &old_buf, sizeof(old_buf)); 5719 5719 #endif … … 7001 7001 }; 7002 7002 #endif /* VBOX */ 7003 -
trunk/src/recompiler_new/target-i386/translate.c
r16066 r16455 640 640 { 641 641 /* It seems segments doesn't get out of sync - if they do in fact - enable below code. */ 642 #if 0 642 #ifdef FORCE_SEGMENT_SYNC 643 #if 1 644 TCGv t0; 645 646 /* Considering poor quality of TCG optimizer - better call directly */ 647 t0 = tcg_temp_local_new(TCG_TYPE_TL); 648 tcg_gen_movi_tl(t0, reg); 649 tcg_gen_helper_0_1(helper_sync_seg, t0); 650 tcg_temp_free(t0); 651 #else 643 652 /* Our segments could be outdated, thus check for newselector field to see if update really needed */ 644 653 int skip_label; … … 678 687 } 679 688 #endif /* 0 */ 689 #endif /* FORCE_SEGMENT_SYNC */ 680 690 } 681 691 #endif … … 875 885 static void gen_check_external_event() 876 886 { 887 #if 1 888 /** @todo: once TCG codegen improves, we may want to use version 889 from else version */ 890 tcg_gen_helper_0_0(helper_check_external_event); 891 #else 877 892 int skip_label; 878 893 TCGv t0; … … 896 911 897 912 gen_set_label(skip_label); 913 #endif 898 914 } 899 915
Note:
See TracChangeset
for help on using the changeset viewer.

