Commit ec6338bac30f982c16c23106edcf1ce4a04da575
1 parent
838104f6
removed obsolete x86 code copy support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3551 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
13 changed files
with
23 additions
and
327 deletions
Makefile.target
cpu-exec.c
| ... | ... | @@ -612,19 +612,9 @@ int cpu_exec(CPUState *env1) |
| 612 | 612 | #if USE_KQEMU |
| 613 | 613 | (env->kqemu_enabled != 2) && |
| 614 | 614 | #endif |
| 615 | - tb->page_addr[1] == -1 | |
| 616 | -#if defined(TARGET_I386) && defined(USE_CODE_COPY) | |
| 617 | - && (tb->cflags & CF_CODE_COPY) == | |
| 618 | - (((TranslationBlock *)(T0 & ~3))->cflags & CF_CODE_COPY) | |
| 619 | -#endif | |
| 620 | - ) { | |
| 615 | + tb->page_addr[1] == -1) { | |
| 621 | 616 | spin_lock(&tb_lock); |
| 622 | 617 | tb_add_jump((TranslationBlock *)(long)(T0 & ~3), T0 & 3, tb); |
| 623 | -#if defined(USE_CODE_COPY) | |
| 624 | - /* propagates the FP use info */ | |
| 625 | - ((TranslationBlock *)(T0 & ~3))->cflags |= | |
| 626 | - (tb->cflags & CF_FP_USED); | |
| 627 | -#endif | |
| 628 | 618 | spin_unlock(&tb_lock); |
| 629 | 619 | } |
| 630 | 620 | } |
| ... | ... | @@ -648,80 +638,6 @@ int cpu_exec(CPUState *env1) |
| 648 | 638 | : /* no outputs */ |
| 649 | 639 | : "r" (gen_func) |
| 650 | 640 | : "r1", "r2", "r3", "r8", "r9", "r10", "r12", "r14"); |
| 651 | -#elif defined(TARGET_I386) && defined(USE_CODE_COPY) | |
| 652 | -{ | |
| 653 | - if (!(tb->cflags & CF_CODE_COPY)) { | |
| 654 | - if ((tb->cflags & CF_FP_USED) && env->native_fp_regs) { | |
| 655 | - save_native_fp_state(env); | |
| 656 | - } | |
| 657 | - gen_func(); | |
| 658 | - } else { | |
| 659 | - if ((tb->cflags & CF_FP_USED) && !env->native_fp_regs) { | |
| 660 | - restore_native_fp_state(env); | |
| 661 | - } | |
| 662 | - /* we work with native eflags */ | |
| 663 | - CC_SRC = cc_table[CC_OP].compute_all(); | |
| 664 | - CC_OP = CC_OP_EFLAGS; | |
| 665 | - asm(".globl exec_loop\n" | |
| 666 | - "\n" | |
| 667 | - "debug1:\n" | |
| 668 | - " pushl %%ebp\n" | |
| 669 | - " fs movl %10, %9\n" | |
| 670 | - " fs movl %11, %%eax\n" | |
| 671 | - " andl $0x400, %%eax\n" | |
| 672 | - " fs orl %8, %%eax\n" | |
| 673 | - " pushl %%eax\n" | |
| 674 | - " popf\n" | |
| 675 | - " fs movl %%esp, %12\n" | |
| 676 | - " fs movl %0, %%eax\n" | |
| 677 | - " fs movl %1, %%ecx\n" | |
| 678 | - " fs movl %2, %%edx\n" | |
| 679 | - " fs movl %3, %%ebx\n" | |
| 680 | - " fs movl %4, %%esp\n" | |
| 681 | - " fs movl %5, %%ebp\n" | |
| 682 | - " fs movl %6, %%esi\n" | |
| 683 | - " fs movl %7, %%edi\n" | |
| 684 | - " fs jmp *%9\n" | |
| 685 | - "exec_loop:\n" | |
| 686 | - " fs movl %%esp, %4\n" | |
| 687 | - " fs movl %12, %%esp\n" | |
| 688 | - " fs movl %%eax, %0\n" | |
| 689 | - " fs movl %%ecx, %1\n" | |
| 690 | - " fs movl %%edx, %2\n" | |
| 691 | - " fs movl %%ebx, %3\n" | |
| 692 | - " fs movl %%ebp, %5\n" | |
| 693 | - " fs movl %%esi, %6\n" | |
| 694 | - " fs movl %%edi, %7\n" | |
| 695 | - " pushf\n" | |
| 696 | - " popl %%eax\n" | |
| 697 | - " movl %%eax, %%ecx\n" | |
| 698 | - " andl $0x400, %%ecx\n" | |
| 699 | - " shrl $9, %%ecx\n" | |
| 700 | - " andl $0x8d5, %%eax\n" | |
| 701 | - " fs movl %%eax, %8\n" | |
| 702 | - " movl $1, %%eax\n" | |
| 703 | - " subl %%ecx, %%eax\n" | |
| 704 | - " fs movl %%eax, %11\n" | |
| 705 | - " fs movl %9, %%ebx\n" /* get T0 value */ | |
| 706 | - " popl %%ebp\n" | |
| 707 | - : | |
| 708 | - : "m" (*(uint8_t *)offsetof(CPUState, regs[0])), | |
| 709 | - "m" (*(uint8_t *)offsetof(CPUState, regs[1])), | |
| 710 | - "m" (*(uint8_t *)offsetof(CPUState, regs[2])), | |
| 711 | - "m" (*(uint8_t *)offsetof(CPUState, regs[3])), | |
| 712 | - "m" (*(uint8_t *)offsetof(CPUState, regs[4])), | |
| 713 | - "m" (*(uint8_t *)offsetof(CPUState, regs[5])), | |
| 714 | - "m" (*(uint8_t *)offsetof(CPUState, regs[6])), | |
| 715 | - "m" (*(uint8_t *)offsetof(CPUState, regs[7])), | |
| 716 | - "m" (*(uint8_t *)offsetof(CPUState, cc_src)), | |
| 717 | - "m" (*(uint8_t *)offsetof(CPUState, tmp0)), | |
| 718 | - "a" (gen_func), | |
| 719 | - "m" (*(uint8_t *)offsetof(CPUState, df)), | |
| 720 | - "m" (*(uint8_t *)offsetof(CPUState, saved_esp)) | |
| 721 | - : "%ecx", "%edx" | |
| 722 | - ); | |
| 723 | - } | |
| 724 | -} | |
| 725 | 641 | #elif defined(__ia64) |
| 726 | 642 | struct fptr { |
| 727 | 643 | void *ip; |
| ... | ... | @@ -759,11 +675,6 @@ int cpu_exec(CPUState *env1) |
| 759 | 675 | |
| 760 | 676 | |
| 761 | 677 | #if defined(TARGET_I386) |
| 762 | -#if defined(USE_CODE_COPY) | |
| 763 | - if (env->native_fp_regs) { | |
| 764 | - save_native_fp_state(env); | |
| 765 | - } | |
| 766 | -#endif | |
| 767 | 678 | /* restore flags in standard format */ |
| 768 | 679 | env->eflags = env->eflags | cc_table[CC_OP].compute_all() | (DF & DF_MASK); |
| 769 | 680 | #elif defined(TARGET_ARM) |
| ... | ... | @@ -1275,26 +1186,6 @@ static inline int handle_cpu_signal(unsigned long pc, unsigned long address, |
| 1275 | 1186 | # define ERROR_sig(context) ((context)->uc_mcontext.gregs[REG_ERR]) |
| 1276 | 1187 | #endif |
| 1277 | 1188 | |
| 1278 | -#if defined(USE_CODE_COPY) | |
| 1279 | -static void cpu_send_trap(unsigned long pc, int trap, | |
| 1280 | - struct ucontext *uc) | |
| 1281 | -{ | |
| 1282 | - TranslationBlock *tb; | |
| 1283 | - | |
| 1284 | - if (cpu_single_env) | |
| 1285 | - env = cpu_single_env; /* XXX: find a correct solution for multithread */ | |
| 1286 | - /* now we have a real cpu fault */ | |
| 1287 | - tb = tb_find_pc(pc); | |
| 1288 | - if (tb) { | |
| 1289 | - /* the PC is inside the translated code. It means that we have | |
| 1290 | - a virtual CPU fault */ | |
| 1291 | - cpu_restore_state(tb, env, pc, uc); | |
| 1292 | - } | |
| 1293 | - sigprocmask(SIG_SETMASK, &uc->uc_sigmask, NULL); | |
| 1294 | - raise_exception_err(trap, env->error_code); | |
| 1295 | -} | |
| 1296 | -#endif | |
| 1297 | - | |
| 1298 | 1189 | int cpu_signal_handler(int host_signum, void *pinfo, |
| 1299 | 1190 | void *puc) |
| 1300 | 1191 | { |
| ... | ... | @@ -1311,17 +1202,10 @@ int cpu_signal_handler(int host_signum, void *pinfo, |
| 1311 | 1202 | #endif |
| 1312 | 1203 | pc = EIP_sig(uc); |
| 1313 | 1204 | trapno = TRAP_sig(uc); |
| 1314 | -#if defined(TARGET_I386) && defined(USE_CODE_COPY) | |
| 1315 | - if (trapno == 0x00 || trapno == 0x05) { | |
| 1316 | - /* send division by zero or bound exception */ | |
| 1317 | - cpu_send_trap(pc, trapno, uc); | |
| 1318 | - return 1; | |
| 1319 | - } else | |
| 1320 | -#endif | |
| 1321 | - return handle_cpu_signal(pc, (unsigned long)info->si_addr, | |
| 1322 | - trapno == 0xe ? | |
| 1323 | - (ERROR_sig(uc) >> 1) & 1 : 0, | |
| 1324 | - &uc->uc_sigmask, puc); | |
| 1205 | + return handle_cpu_signal(pc, (unsigned long)info->si_addr, | |
| 1206 | + trapno == 0xe ? | |
| 1207 | + (ERROR_sig(uc) >> 1) & 1 : 0, | |
| 1208 | + &uc->uc_sigmask, puc); | |
| 1325 | 1209 | } |
| 1326 | 1210 | |
| 1327 | 1211 | #elif defined(__x86_64__) | ... | ... |
darwin-user/main.c
| ... | ... | @@ -757,9 +757,6 @@ void usage(void) |
| 757 | 757 | "-s size set the stack size in bytes (default=%ld)\n" |
| 758 | 758 | "\n" |
| 759 | 759 | "debug options:\n" |
| 760 | -#ifdef USE_CODE_COPY | |
| 761 | - "-no-code-copy disable code copy acceleration\n" | |
| 762 | -#endif | |
| 763 | 760 | "-d options activate log (logfile='%s')\n" |
| 764 | 761 | "-g wait for gdb on port 1234\n" |
| 765 | 762 | "-p pagesize set the host page size to 'pagesize'\n", |
| ... | ... | @@ -845,11 +842,6 @@ int main(int argc, char **argv) |
| 845 | 842 | if (!strcmp(r, "g")) { |
| 846 | 843 | use_gdbstub = 1; |
| 847 | 844 | } else |
| 848 | -#ifdef USE_CODE_COPY | |
| 849 | - if (!strcmp(r, "no-code-copy")) { | |
| 850 | - code_copy_enabled = 0; | |
| 851 | - } else | |
| 852 | -#endif | |
| 853 | 845 | { |
| 854 | 846 | usage(); |
| 855 | 847 | } | ... | ... |
darwin-user/signal.c
| ... | ... | @@ -198,11 +198,7 @@ static void host_signal_handler(int host_signum, siginfo_t *info, |
| 198 | 198 | |
| 199 | 199 | /* the CPU emulator uses some host signals to detect exceptions, |
| 200 | 200 | we we forward to it some signals */ |
| 201 | - if (host_signum == SIGSEGV || host_signum == SIGBUS | |
| 202 | -#if defined(TARGET_I386) && defined(USE_CODE_COPY) | |
| 203 | - || host_signum == SIGFPE | |
| 204 | -#endif | |
| 205 | - ) { | |
| 201 | + if (host_signum == SIGSEGV || host_signum == SIGBUS) { | |
| 206 | 202 | if (cpu_signal_handler(host_signum, (void*)info, puc)) |
| 207 | 203 | return; |
| 208 | 204 | } | ... | ... |
exec.c
| ... | ... | @@ -944,11 +944,6 @@ void tb_link_phys(TranslationBlock *tb, |
| 944 | 944 | tb->jmp_first = (TranslationBlock *)((long)tb | 2); |
| 945 | 945 | tb->jmp_next[0] = NULL; |
| 946 | 946 | tb->jmp_next[1] = NULL; |
| 947 | -#ifdef USE_CODE_COPY | |
| 948 | - tb->cflags &= ~CF_FP_USED; | |
| 949 | - if (tb->cflags & CF_TB_FP_USED) | |
| 950 | - tb->cflags |= CF_FP_USED; | |
| 951 | -#endif | |
| 952 | 947 | |
| 953 | 948 | /* init original jump addresses */ |
| 954 | 949 | if (tb->tb_next_offset[0] != 0xffff) | ... | ... |
linux-user/main.c
| ... | ... | @@ -1855,9 +1855,6 @@ void usage(void) |
| 1855 | 1855 | "-drop-ld-preload drop LD_PRELOAD for target process\n" |
| 1856 | 1856 | "\n" |
| 1857 | 1857 | "debug options:\n" |
| 1858 | -#ifdef USE_CODE_COPY | |
| 1859 | - "-no-code-copy disable code copy acceleration\n" | |
| 1860 | -#endif | |
| 1861 | 1858 | "-d options activate log (logfile=%s)\n" |
| 1862 | 1859 | "-p pagesize set the host page size to 'pagesize'\n", |
| 1863 | 1860 | TARGET_ARCH, |
| ... | ... | @@ -1956,11 +1953,6 @@ int main(int argc, char **argv) |
| 1956 | 1953 | } else if (!strcmp(r, "drop-ld-preload")) { |
| 1957 | 1954 | drop_ld_preload = 1; |
| 1958 | 1955 | } else |
| 1959 | -#ifdef USE_CODE_COPY | |
| 1960 | - if (!strcmp(r, "no-code-copy")) { | |
| 1961 | - code_copy_enabled = 0; | |
| 1962 | - } else | |
| 1963 | -#endif | |
| 1964 | 1956 | { |
| 1965 | 1957 | usage(); |
| 1966 | 1958 | } | ... | ... |
linux-user/signal.c
| ... | ... | @@ -415,11 +415,7 @@ static void host_signal_handler(int host_signum, siginfo_t *info, |
| 415 | 415 | |
| 416 | 416 | /* the CPU emulator uses some host signals to detect exceptions, |
| 417 | 417 | we we forward to it some signals */ |
| 418 | - if (host_signum == SIGSEGV || host_signum == SIGBUS | |
| 419 | -#if defined(TARGET_I386) && defined(USE_CODE_COPY) | |
| 420 | - || host_signum == SIGFPE | |
| 421 | -#endif | |
| 422 | - ) { | |
| 418 | + if (host_signum == SIGSEGV || host_signum == SIGBUS) { | |
| 423 | 419 | if (cpu_signal_handler(host_signum, info, puc)) |
| 424 | 420 | return; |
| 425 | 421 | } | ... | ... |
target-i386/cpu.h
| ... | ... | @@ -46,10 +46,6 @@ |
| 46 | 46 | |
| 47 | 47 | #include "softfloat.h" |
| 48 | 48 | |
| 49 | -#if defined(__i386__) && !defined(CONFIG_SOFTMMU) && !defined(__APPLE__) | |
| 50 | -#define USE_CODE_COPY | |
| 51 | -#endif | |
| 52 | - | |
| 53 | 49 | #define R_EAX 0 |
| 54 | 50 | #define R_ECX 1 |
| 55 | 51 | #define R_EDX 2 |
| ... | ... | @@ -552,13 +548,6 @@ typedef struct CPUX86State { |
| 552 | 548 | |
| 553 | 549 | uint64_t pat; |
| 554 | 550 | |
| 555 | - /* temporary data for USE_CODE_COPY mode */ | |
| 556 | -#ifdef USE_CODE_COPY | |
| 557 | - uint32_t tmp0; | |
| 558 | - uint32_t saved_esp; | |
| 559 | - int native_fp_regs; /* if true, the FPU state is in the native CPU regs */ | |
| 560 | -#endif | |
| 561 | - | |
| 562 | 551 | /* exception/interrupt handling */ |
| 563 | 552 | jmp_buf jmp_env; |
| 564 | 553 | int exception_index; | ... | ... |
target-i386/helper2.c
| ... | ... | @@ -31,22 +31,6 @@ |
| 31 | 31 | |
| 32 | 32 | //#define DEBUG_MMU |
| 33 | 33 | |
| 34 | -#ifdef USE_CODE_COPY | |
| 35 | -#include <unistd.h> | |
| 36 | -#include <asm/ldt.h> | |
| 37 | -#include <linux/unistd.h> | |
| 38 | -#include <linux/version.h> | |
| 39 | - | |
| 40 | -int modify_ldt(int func, void *ptr, unsigned long bytecount) | |
| 41 | -{ | |
| 42 | - return syscall(__NR_modify_ldt, func, ptr, bytecount); | |
| 43 | -} | |
| 44 | - | |
| 45 | -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 66) | |
| 46 | -#define modify_ldt_ldt_s user_desc | |
| 47 | -#endif | |
| 48 | -#endif /* USE_CODE_COPY */ | |
| 49 | - | |
| 50 | 34 | static struct x86_def_t *x86_cpu_def; |
| 51 | 35 | typedef struct x86_def_t x86_def_t; |
| 52 | 36 | static int cpu_x86_register (CPUX86State *env, const x86_def_t *def); |
| ... | ... | @@ -123,25 +107,6 @@ CPUX86State *cpu_x86_init(void) |
| 123 | 107 | inited = 1; |
| 124 | 108 | optimize_flags_init(); |
| 125 | 109 | } |
| 126 | -#ifdef USE_CODE_COPY | |
| 127 | - /* testing code for code copy case */ | |
| 128 | - { | |
| 129 | - struct modify_ldt_ldt_s ldt; | |
| 130 | - | |
| 131 | - ldt.entry_number = 1; | |
| 132 | - ldt.base_addr = (unsigned long)env; | |
| 133 | - ldt.limit = (sizeof(CPUState) + 0xfff) >> 12; | |
| 134 | - ldt.seg_32bit = 1; | |
| 135 | - ldt.contents = MODIFY_LDT_CONTENTS_DATA; | |
| 136 | - ldt.read_exec_only = 0; | |
| 137 | - ldt.limit_in_pages = 1; | |
| 138 | - ldt.seg_not_present = 0; | |
| 139 | - ldt.useable = 1; | |
| 140 | - modify_ldt(1, &ldt, sizeof(ldt)); /* write ldt entry */ | |
| 141 | - | |
| 142 | - asm volatile ("movl %0, %%fs" : : "r" ((1 << 3) | 7)); | |
| 143 | - } | |
| 144 | -#endif | |
| 145 | 110 | cpu_x86_register(env, x86_cpu_def); |
| 146 | 111 | cpu_reset(env); |
| 147 | 112 | #ifdef USE_KQEMU |
| ... | ... | @@ -1186,73 +1151,3 @@ target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr) |
| 1186 | 1151 | return paddr; |
| 1187 | 1152 | } |
| 1188 | 1153 | #endif /* !CONFIG_USER_ONLY */ |
| 1189 | - | |
| 1190 | -#if defined(USE_CODE_COPY) | |
| 1191 | -struct fpstate { | |
| 1192 | - uint16_t fpuc; | |
| 1193 | - uint16_t dummy1; | |
| 1194 | - uint16_t fpus; | |
| 1195 | - uint16_t dummy2; | |
| 1196 | - uint16_t fptag; | |
| 1197 | - uint16_t dummy3; | |
| 1198 | - | |
| 1199 | - uint32_t fpip; | |
| 1200 | - uint32_t fpcs; | |
| 1201 | - uint32_t fpoo; | |
| 1202 | - uint32_t fpos; | |
| 1203 | - uint8_t fpregs1[8 * 10]; | |
| 1204 | -}; | |
| 1205 | - | |
| 1206 | -void restore_native_fp_state(CPUState *env) | |
| 1207 | -{ | |
| 1208 | - int fptag, i, j; | |
| 1209 | - struct fpstate fp1, *fp = &fp1; | |
| 1210 | - | |
| 1211 | - fp->fpuc = env->fpuc; | |
| 1212 | - fp->fpus = (env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11; | |
| 1213 | - fptag = 0; | |
| 1214 | - for (i=7; i>=0; i--) { | |
| 1215 | - fptag <<= 2; | |
| 1216 | - if (env->fptags[i]) { | |
| 1217 | - fptag |= 3; | |
| 1218 | - } else { | |
| 1219 | - /* the FPU automatically computes it */ | |
| 1220 | - } | |
| 1221 | - } | |
| 1222 | - fp->fptag = fptag; | |
| 1223 | - j = env->fpstt; | |
| 1224 | - for(i = 0;i < 8; i++) { | |
| 1225 | - memcpy(&fp->fpregs1[i * 10], &env->fpregs[j].d, 10); | |
| 1226 | - j = (j + 1) & 7; | |
| 1227 | - } | |
| 1228 | - asm volatile ("frstor %0" : "=m" (*fp)); | |
| 1229 | - env->native_fp_regs = 1; | |
| 1230 | -} | |
| 1231 | - | |
| 1232 | -void save_native_fp_state(CPUState *env) | |
| 1233 | -{ | |
| 1234 | - int fptag, i, j; | |
| 1235 | - uint16_t fpuc; | |
| 1236 | - struct fpstate fp1, *fp = &fp1; | |
| 1237 | - | |
| 1238 | - asm volatile ("fsave %0" : : "m" (*fp)); | |
| 1239 | - env->fpuc = fp->fpuc; | |
| 1240 | - env->fpstt = (fp->fpus >> 11) & 7; | |
| 1241 | - env->fpus = fp->fpus & ~0x3800; | |
| 1242 | - fptag = fp->fptag; | |
| 1243 | - for(i = 0;i < 8; i++) { | |
| 1244 | - env->fptags[i] = ((fptag & 3) == 3); | |
| 1245 | - fptag >>= 2; | |
| 1246 | - } | |
| 1247 | - j = env->fpstt; | |
| 1248 | - for(i = 0;i < 8; i++) { | |
| 1249 | - memcpy(&env->fpregs[j].d, &fp->fpregs1[i * 10], 10); | |
| 1250 | - j = (j + 1) & 7; | |
| 1251 | - } | |
| 1252 | - /* we must restore the default rounding state */ | |
| 1253 | - /* XXX: we do not restore the exception state */ | |
| 1254 | - fpuc = 0x037f | (env->fpuc & (3 << 10)); | |
| 1255 | - asm volatile("fldcw %0" : : "m" (fpuc)); | |
| 1256 | - env->native_fp_regs = 0; | |
| 1257 | -} | |
| 1258 | -#endif | ... | ... |
target-i386/translate.c
| ... | ... | @@ -4888,9 +4888,6 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start) |
| 4888 | 4888 | goto illegal_op; |
| 4889 | 4889 | } |
| 4890 | 4890 | } |
| 4891 | -#ifdef USE_CODE_COPY | |
| 4892 | - s->tb->cflags |= CF_TB_FP_USED; | |
| 4893 | -#endif | |
| 4894 | 4891 | break; |
| 4895 | 4892 | /************************/ |
| 4896 | 4893 | /* string ops */ | ... | ... |
tests/qruncom.c
| ... | ... | @@ -193,9 +193,6 @@ int main(int argc, char **argv) |
| 193 | 193 | act.sa_sigaction = host_segv_handler; |
| 194 | 194 | sigaction(SIGSEGV, &act, NULL); |
| 195 | 195 | sigaction(SIGBUS, &act, NULL); |
| 196 | -#if defined (TARGET_I386) && defined(USE_CODE_COPY) | |
| 197 | - sigaction(SIGFPE, &act, NULL); | |
| 198 | -#endif | |
| 199 | 196 | } |
| 200 | 197 | |
| 201 | 198 | // cpu_set_log(CPU_LOG_TB_IN_ASM | CPU_LOG_TB_OUT_ASM | CPU_LOG_EXEC); | ... | ... |
translate-all.c
| ... | ... | @@ -144,35 +144,27 @@ int cpu_gen_code(CPUState *env, TranslationBlock *tb, |
| 144 | 144 | uint8_t *gen_code_buf; |
| 145 | 145 | int gen_code_size; |
| 146 | 146 | |
| 147 | -#ifdef USE_CODE_COPY | |
| 148 | - if (code_copy_enabled && | |
| 149 | - cpu_gen_code_copy(env, tb, max_code_size, &gen_code_size) == 0) { | |
| 150 | - /* nothing more to do */ | |
| 151 | - } else | |
| 152 | -#endif | |
| 153 | - { | |
| 154 | - if (gen_intermediate_code(env, tb) < 0) | |
| 155 | - return -1; | |
| 156 | - | |
| 157 | - /* generate machine code */ | |
| 158 | - tb->tb_next_offset[0] = 0xffff; | |
| 159 | - tb->tb_next_offset[1] = 0xffff; | |
| 160 | - gen_code_buf = tb->tc_ptr; | |
| 147 | + if (gen_intermediate_code(env, tb) < 0) | |
| 148 | + return -1; | |
| 149 | + | |
| 150 | + /* generate machine code */ | |
| 151 | + tb->tb_next_offset[0] = 0xffff; | |
| 152 | + tb->tb_next_offset[1] = 0xffff; | |
| 153 | + gen_code_buf = tb->tc_ptr; | |
| 161 | 154 | #ifdef USE_DIRECT_JUMP |
| 162 | - /* the following two entries are optional (only used for string ops) */ | |
| 163 | - tb->tb_jmp_offset[2] = 0xffff; | |
| 164 | - tb->tb_jmp_offset[3] = 0xffff; | |
| 155 | + /* the following two entries are optional (only used for string ops) */ | |
| 156 | + tb->tb_jmp_offset[2] = 0xffff; | |
| 157 | + tb->tb_jmp_offset[3] = 0xffff; | |
| 165 | 158 | #endif |
| 166 | - dyngen_labels(gen_labels, nb_gen_labels, gen_code_buf, gen_opc_buf); | |
| 167 | - | |
| 168 | - gen_code_size = dyngen_code(gen_code_buf, tb->tb_next_offset, | |
| 159 | + dyngen_labels(gen_labels, nb_gen_labels, gen_code_buf, gen_opc_buf); | |
| 160 | + | |
| 161 | + gen_code_size = dyngen_code(gen_code_buf, tb->tb_next_offset, | |
| 169 | 162 | #ifdef USE_DIRECT_JUMP |
| 170 | - tb->tb_jmp_offset, | |
| 163 | + tb->tb_jmp_offset, | |
| 171 | 164 | #else |
| 172 | - NULL, | |
| 165 | + NULL, | |
| 173 | 166 | #endif |
| 174 | - gen_opc_buf, gen_opparam_buf, gen_labels); | |
| 175 | - } | |
| 167 | + gen_opc_buf, gen_opparam_buf, gen_labels); | |
| 176 | 168 | *gen_code_size_ptr = gen_code_size; |
| 177 | 169 | #ifdef DEBUG_DISAS |
| 178 | 170 | if (loglevel & CPU_LOG_TB_OUT_ASM) { |
| ... | ... | @@ -195,11 +187,6 @@ int cpu_restore_state(TranslationBlock *tb, |
| 195 | 187 | unsigned long tc_ptr; |
| 196 | 188 | uint16_t *opc_ptr; |
| 197 | 189 | |
| 198 | -#ifdef USE_CODE_COPY | |
| 199 | - if (tb->cflags & CF_CODE_COPY) { | |
| 200 | - return cpu_restore_state_copy(tb, env, searched_pc, puc); | |
| 201 | - } | |
| 202 | -#endif | |
| 203 | 190 | if (gen_intermediate_code_pc(env, tb) < 0) |
| 204 | 191 | return -1; |
| 205 | 192 | ... | ... |
vl.c
| ... | ... | @@ -1222,9 +1222,6 @@ static void enable_sigio_timer(int fd) |
| 1222 | 1222 | /* timer signal */ |
| 1223 | 1223 | sigfillset(&act.sa_mask); |
| 1224 | 1224 | act.sa_flags = 0; |
| 1225 | -#if defined (TARGET_I386) && defined(USE_CODE_COPY) | |
| 1226 | - act.sa_flags |= SA_ONSTACK; | |
| 1227 | -#endif | |
| 1228 | 1225 | act.sa_handler = host_alarm_handler; |
| 1229 | 1226 | |
| 1230 | 1227 | sigaction(SIGIO, &act, NULL); |
| ... | ... | @@ -1322,9 +1319,6 @@ static int dynticks_start_timer(struct qemu_alarm_timer *t) |
| 1322 | 1319 | |
| 1323 | 1320 | sigfillset(&act.sa_mask); |
| 1324 | 1321 | act.sa_flags = 0; |
| 1325 | -#if defined(TARGET_I386) && defined(USE_CODE_COPY) | |
| 1326 | - act.sa_flags |= SA_ONSTACK; | |
| 1327 | -#endif | |
| 1328 | 1322 | act.sa_handler = host_alarm_handler; |
| 1329 | 1323 | |
| 1330 | 1324 | sigaction(SIGALRM, &act, NULL); |
| ... | ... | @@ -1399,9 +1393,6 @@ static int unix_start_timer(struct qemu_alarm_timer *t) |
| 1399 | 1393 | /* timer signal */ |
| 1400 | 1394 | sigfillset(&act.sa_mask); |
| 1401 | 1395 | act.sa_flags = 0; |
| 1402 | -#if defined(TARGET_I386) && defined(USE_CODE_COPY) | |
| 1403 | - act.sa_flags |= SA_ONSTACK; | |
| 1404 | -#endif | |
| 1405 | 1396 | act.sa_handler = host_alarm_handler; |
| 1406 | 1397 | |
| 1407 | 1398 | sigaction(SIGALRM, &act, NULL); |
| ... | ... | @@ -7093,9 +7084,6 @@ static void help(int exitcode) |
| 7093 | 7084 | "-kernel-kqemu enable KQEMU full virtualization (default is user mode only)\n" |
| 7094 | 7085 | "-no-kqemu disable KQEMU kernel module usage\n" |
| 7095 | 7086 | #endif |
| 7096 | -#ifdef USE_CODE_COPY | |
| 7097 | - "-no-code-copy disable code copy acceleration\n" | |
| 7098 | -#endif | |
| 7099 | 7087 | #ifdef TARGET_I386 |
| 7100 | 7088 | "-std-vga simulate a standard VGA card with VESA Bochs Extensions\n" |
| 7101 | 7089 | " (default is CL-GD5446 PCI VGA)\n" |
| ... | ... | @@ -7324,15 +7312,6 @@ const QEMUOption qemu_options[] = { |
| 7324 | 7312 | { NULL }, |
| 7325 | 7313 | }; |
| 7326 | 7314 | |
| 7327 | -#if defined (TARGET_I386) && defined(USE_CODE_COPY) | |
| 7328 | - | |
| 7329 | -/* this stack is only used during signal handling */ | |
| 7330 | -#define SIGNAL_STACK_SIZE 32768 | |
| 7331 | - | |
| 7332 | -static uint8_t *signal_stack; | |
| 7333 | - | |
| 7334 | -#endif | |
| 7335 | - | |
| 7336 | 7315 | /* password input */ |
| 7337 | 7316 | |
| 7338 | 7317 | int qemu_key_check(BlockDriverState *bs, const char *name) | ... | ... |