TCG: Use gen_opc_ptr from context instead of global variable.

Signed-off-by: Evgeny Voevodin <e.voevodin@samsung.com>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
Evgeny Voevodin 2012-11-12 13:27:45 +04:00 committed by Blue Swirl
parent 8232a46a16
commit efd7f48600
17 changed files with 109 additions and 106 deletions

View File

@ -3406,7 +3406,7 @@ static inline void gen_intermediate_code_internal(CPUAlphaState *env,
} }
} }
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) while (lj < j)
@ -3432,7 +3432,7 @@ static inline void gen_intermediate_code_internal(CPUAlphaState *env,
or exhaust instruction count, stop generation. */ or exhaust instruction count, stop generation. */
if (ret == NO_EXIT if (ret == NO_EXIT
&& ((ctx.pc & (TARGET_PAGE_SIZE - 1)) == 0 && ((ctx.pc & (TARGET_PAGE_SIZE - 1)) == 0
|| gen_opc_ptr >= gen_opc_end || tcg_ctx.gen_opc_ptr >= gen_opc_end
|| num_insns >= max_insns || num_insns >= max_insns
|| singlestep || singlestep
|| env->singlestep_enabled)) { || env->singlestep_enabled)) {
@ -3463,9 +3463,9 @@ static inline void gen_intermediate_code_internal(CPUAlphaState *env,
} }
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) while (lj <= j)
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;

View File

@ -9834,7 +9834,7 @@ static inline void gen_intermediate_code_internal(CPUARMState *env,
} }
} }
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) while (lj < j)
@ -9881,7 +9881,7 @@ static inline void gen_intermediate_code_internal(CPUARMState *env,
* Also stop translation when a page boundary is reached. This * Also stop translation when a page boundary is reached. This
* ensures prefetch aborts occur at the right place. */ * ensures prefetch aborts occur at the right place. */
num_insns ++; num_insns ++;
} while (!dc->is_jmp && gen_opc_ptr < gen_opc_end && } while (!dc->is_jmp && tcg_ctx.gen_opc_ptr < gen_opc_end &&
!env->singlestep_enabled && !env->singlestep_enabled &&
!singlestep && !singlestep &&
dc->pc < next_page_start && dc->pc < next_page_start &&
@ -9962,7 +9962,7 @@ static inline void gen_intermediate_code_internal(CPUARMState *env,
done_generating: done_generating:
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
#ifdef DEBUG_DISAS #ifdef DEBUG_DISAS
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) { if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
@ -9974,7 +9974,7 @@ done_generating:
} }
#endif #endif
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) while (lj <= j)
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;

View File

@ -3297,7 +3297,7 @@ gen_intermediate_code_internal(CPUCRISState *env, TranslationBlock *tb,
check_breakpoint(env, dc); check_breakpoint(env, dc);
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) { while (lj < j) {
@ -3381,7 +3381,7 @@ gen_intermediate_code_internal(CPUCRISState *env, TranslationBlock *tb,
break; break;
} }
} while (!dc->is_jmp && !dc->cpustate_changed } while (!dc->is_jmp && !dc->cpustate_changed
&& gen_opc_ptr < gen_opc_end && tcg_ctx.gen_opc_ptr < gen_opc_end
&& !singlestep && !singlestep
&& (dc->pc < next_page_start) && (dc->pc < next_page_start)
&& num_insns < max_insns); && num_insns < max_insns);
@ -3434,9 +3434,9 @@ gen_intermediate_code_internal(CPUCRISState *env, TranslationBlock *tb,
} }
} }
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) { while (lj <= j) {
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;
@ -3452,7 +3452,7 @@ gen_intermediate_code_internal(CPUCRISState *env, TranslationBlock *tb,
log_target_disas(env, pc_start, dc->pc - pc_start, log_target_disas(env, pc_start, dc->pc - pc_start,
dc->env->pregs[PR_VR]); dc->env->pregs[PR_VR]);
qemu_log("\nisize=%d osize=%td\n", qemu_log("\nisize=%d osize=%td\n",
dc->pc - pc_start, gen_opc_ptr - gen_opc_buf); dc->pc - pc_start, tcg_ctx.gen_opc_ptr - gen_opc_buf);
} }
#endif #endif
#endif #endif

View File

@ -7984,7 +7984,7 @@ static inline void gen_intermediate_code_internal(CPUX86State *env,
} }
} }
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) while (lj < j)
@ -8015,7 +8015,7 @@ static inline void gen_intermediate_code_internal(CPUX86State *env,
break; break;
} }
/* if too long translation, stop generation too */ /* if too long translation, stop generation too */
if (gen_opc_ptr >= gen_opc_end || if (tcg_ctx.gen_opc_ptr >= gen_opc_end ||
(pc_ptr - pc_start) >= (TARGET_PAGE_SIZE - 32) || (pc_ptr - pc_start) >= (TARGET_PAGE_SIZE - 32) ||
num_insns >= max_insns) { num_insns >= max_insns) {
gen_jmp_im(pc_ptr - dc->cs_base); gen_jmp_im(pc_ptr - dc->cs_base);
@ -8031,10 +8031,10 @@ static inline void gen_intermediate_code_internal(CPUX86State *env,
if (tb->cflags & CF_LAST_IO) if (tb->cflags & CF_LAST_IO)
gen_io_end(); gen_io_end();
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
/* we don't forget to fill the last values */ /* we don't forget to fill the last values */
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) while (lj <= j)
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;

View File

@ -1047,7 +1047,7 @@ static void gen_intermediate_code_internal(CPULM32State *env,
check_breakpoint(env, dc); check_breakpoint(env, dc);
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) { while (lj < j) {
@ -1071,7 +1071,7 @@ static void gen_intermediate_code_internal(CPULM32State *env,
num_insns++; num_insns++;
} while (!dc->is_jmp } while (!dc->is_jmp
&& gen_opc_ptr < gen_opc_end && tcg_ctx.gen_opc_ptr < gen_opc_end
&& !env->singlestep_enabled && !env->singlestep_enabled
&& !singlestep && !singlestep
&& (dc->pc < next_page_start) && (dc->pc < next_page_start)
@ -1105,9 +1105,9 @@ static void gen_intermediate_code_internal(CPULM32State *env,
} }
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) { while (lj <= j) {
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;
@ -1122,7 +1122,7 @@ static void gen_intermediate_code_internal(CPULM32State *env,
qemu_log("\n"); qemu_log("\n");
log_target_disas(env, pc_start, dc->pc - pc_start, 0); log_target_disas(env, pc_start, dc->pc - pc_start, 0);
qemu_log("\nisize=%d osize=%td\n", qemu_log("\nisize=%d osize=%td\n",
dc->pc - pc_start, gen_opc_ptr - gen_opc_buf); dc->pc - pc_start, tcg_ctx.gen_opc_ptr - gen_opc_buf);
} }
#endif #endif
} }

View File

@ -3015,7 +3015,7 @@ gen_intermediate_code_internal(CPUM68KState *env, TranslationBlock *tb,
break; break;
} }
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) while (lj < j)
@ -3030,7 +3030,7 @@ gen_intermediate_code_internal(CPUM68KState *env, TranslationBlock *tb,
dc->insn_pc = dc->pc; dc->insn_pc = dc->pc;
disas_m68k_insn(env, dc); disas_m68k_insn(env, dc);
num_insns++; num_insns++;
} while (!dc->is_jmp && gen_opc_ptr < gen_opc_end && } while (!dc->is_jmp && tcg_ctx.gen_opc_ptr < gen_opc_end &&
!env->singlestep_enabled && !env->singlestep_enabled &&
!singlestep && !singlestep &&
(pc_offset) < (TARGET_PAGE_SIZE - 32) && (pc_offset) < (TARGET_PAGE_SIZE - 32) &&
@ -3064,7 +3064,7 @@ gen_intermediate_code_internal(CPUM68KState *env, TranslationBlock *tb,
} }
} }
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
#ifdef DEBUG_DISAS #ifdef DEBUG_DISAS
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) { if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
@ -3075,7 +3075,7 @@ gen_intermediate_code_internal(CPUM68KState *env, TranslationBlock *tb,
} }
#endif #endif
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) while (lj <= j)
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;

View File

@ -1784,7 +1784,7 @@ gen_intermediate_code_internal(CPUMBState *env, TranslationBlock *tb,
check_breakpoint(env, dc); check_breakpoint(env, dc);
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) while (lj < j)
@ -1846,7 +1846,7 @@ gen_intermediate_code_internal(CPUMBState *env, TranslationBlock *tb,
if (env->singlestep_enabled) if (env->singlestep_enabled)
break; break;
} while (!dc->is_jmp && !dc->cpustate_changed } while (!dc->is_jmp && !dc->cpustate_changed
&& gen_opc_ptr < gen_opc_end && tcg_ctx.gen_opc_ptr < gen_opc_end
&& !singlestep && !singlestep
&& (dc->pc < next_page_start) && (dc->pc < next_page_start)
&& num_insns < max_insns); && num_insns < max_insns);
@ -1897,9 +1897,9 @@ gen_intermediate_code_internal(CPUMBState *env, TranslationBlock *tb,
} }
} }
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) while (lj <= j)
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;
@ -1916,7 +1916,7 @@ gen_intermediate_code_internal(CPUMBState *env, TranslationBlock *tb,
log_target_disas(env, pc_start, dc->pc - pc_start, 0); log_target_disas(env, pc_start, dc->pc - pc_start, 0);
#endif #endif
qemu_log("\nisize=%d osize=%td\n", qemu_log("\nisize=%d osize=%td\n",
dc->pc - pc_start, gen_opc_ptr - gen_opc_buf); dc->pc - pc_start, tcg_ctx.gen_opc_ptr - gen_opc_buf);
} }
#endif #endif
#endif #endif

View File

@ -15549,7 +15549,7 @@ gen_intermediate_code_internal (CPUMIPSState *env, TranslationBlock *tb,
} }
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) while (lj < j)
@ -15597,8 +15597,9 @@ gen_intermediate_code_internal (CPUMIPSState *env, TranslationBlock *tb,
if ((ctx.pc & (TARGET_PAGE_SIZE - 1)) == 0) if ((ctx.pc & (TARGET_PAGE_SIZE - 1)) == 0)
break; break;
if (gen_opc_ptr >= gen_opc_end) if (tcg_ctx.gen_opc_ptr >= gen_opc_end) {
break; break;
}
if (num_insns >= max_insns) if (num_insns >= max_insns)
break; break;
@ -15630,9 +15631,9 @@ gen_intermediate_code_internal (CPUMIPSState *env, TranslationBlock *tb,
} }
done_generating: done_generating:
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) while (lj <= j)
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;

View File

@ -1703,7 +1703,7 @@ static inline void gen_intermediate_code_internal(OpenRISCCPU *cpu,
do { do {
check_breakpoint(cpu, dc); check_breakpoint(cpu, dc);
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (k < j) { if (k < j) {
k++; k++;
while (k < j) { while (k < j) {
@ -1744,7 +1744,7 @@ static inline void gen_intermediate_code_internal(OpenRISCCPU *cpu,
} }
} }
} while (!dc->is_jmp } while (!dc->is_jmp
&& gen_opc_ptr < gen_opc_end && tcg_ctx.gen_opc_ptr < gen_opc_end
&& !cpu->env.singlestep_enabled && !cpu->env.singlestep_enabled
&& !singlestep && !singlestep
&& (dc->pc < next_page_start) && (dc->pc < next_page_start)
@ -1782,9 +1782,9 @@ static inline void gen_intermediate_code_internal(OpenRISCCPU *cpu,
} }
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
k++; k++;
while (k <= j) { while (k <= j) {
gen_opc_instr_start[k++] = 0; gen_opc_instr_start[k++] = 0;
@ -1799,7 +1799,7 @@ static inline void gen_intermediate_code_internal(OpenRISCCPU *cpu,
qemu_log("\n"); qemu_log("\n");
log_target_disas(&cpu->env, pc_start, dc->pc - pc_start, 0); log_target_disas(&cpu->env, pc_start, dc->pc - pc_start, 0);
qemu_log("\nisize=%d osize=%td\n", qemu_log("\nisize=%d osize=%td\n",
dc->pc - pc_start, gen_opc_ptr - gen_opc_buf); dc->pc - pc_start, tcg_ctx.gen_opc_ptr - gen_opc_buf);
} }
#endif #endif
} }

View File

@ -9664,7 +9664,8 @@ static inline void gen_intermediate_code_internal(CPUPPCState *env,
gen_icount_start(); gen_icount_start();
/* Set env in case of segfault during code fetch */ /* Set env in case of segfault during code fetch */
while (ctx.exception == POWERPC_EXCP_NONE && gen_opc_ptr < gen_opc_end) { while (ctx.exception == POWERPC_EXCP_NONE
&& tcg_ctx.gen_opc_ptr < gen_opc_end) {
if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) {
QTAILQ_FOREACH(bp, &env->breakpoints, entry) { QTAILQ_FOREACH(bp, &env->breakpoints, entry) {
if (bp->pc == ctx.nip) { if (bp->pc == ctx.nip) {
@ -9674,7 +9675,7 @@ static inline void gen_intermediate_code_internal(CPUPPCState *env,
} }
} }
if (unlikely(search_pc)) { if (unlikely(search_pc)) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) while (lj < j)
@ -9774,9 +9775,9 @@ static inline void gen_intermediate_code_internal(CPUPPCState *env,
tcg_gen_exit_tb(0); tcg_gen_exit_tb(0);
} }
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
if (unlikely(search_pc)) { if (unlikely(search_pc)) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) while (lj <= j)
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;

View File

@ -5156,7 +5156,7 @@ static inline void gen_intermediate_code_internal(CPUS390XState *env,
} }
} }
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) { while (lj < j) {
@ -5182,7 +5182,8 @@ static inline void gen_intermediate_code_internal(CPUS390XState *env,
if (env->singlestep_enabled) { if (env->singlestep_enabled) {
gen_debug(&dc); gen_debug(&dc);
} }
} while (!dc.is_jmp && gen_opc_ptr < gen_opc_end && dc.pc < next_page_start } while (!dc.is_jmp && tcg_ctx.gen_opc_ptr < gen_opc_end
&& dc.pc < next_page_start
&& num_insns < max_insns && !env->singlestep_enabled && num_insns < max_insns && !env->singlestep_enabled
&& !singlestep); && !singlestep);
@ -5206,9 +5207,9 @@ static inline void gen_intermediate_code_internal(CPUS390XState *env,
tcg_gen_exit_tb(0); tcg_gen_exit_tb(0);
} }
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) { while (lj <= j) {
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;

View File

@ -1986,7 +1986,7 @@ gen_intermediate_code_internal(CPUSH4State * env, TranslationBlock * tb,
if (max_insns == 0) if (max_insns == 0)
max_insns = CF_COUNT_MASK; max_insns = CF_COUNT_MASK;
gen_icount_start(); gen_icount_start();
while (ctx.bstate == BS_NONE && gen_opc_ptr < gen_opc_end) { while (ctx.bstate == BS_NONE && tcg_ctx.gen_opc_ptr < gen_opc_end) {
if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) { if (unlikely(!QTAILQ_EMPTY(&env->breakpoints))) {
QTAILQ_FOREACH(bp, &env->breakpoints, entry) { QTAILQ_FOREACH(bp, &env->breakpoints, entry) {
if (ctx.pc == bp->pc) { if (ctx.pc == bp->pc) {
@ -1999,7 +1999,7 @@ gen_intermediate_code_internal(CPUSH4State * env, TranslationBlock * tb,
} }
} }
if (search_pc) { if (search_pc) {
i = gen_opc_ptr - gen_opc_buf; i = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (ii < i) { if (ii < i) {
ii++; ii++;
while (ii < i) while (ii < i)
@ -2056,9 +2056,9 @@ gen_intermediate_code_internal(CPUSH4State * env, TranslationBlock * tb,
} }
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
if (search_pc) { if (search_pc) {
i = gen_opc_ptr - gen_opc_buf; i = tcg_ctx.gen_opc_ptr - gen_opc_buf;
ii++; ii++;
while (ii <= i) while (ii <= i)
gen_opc_instr_start[ii++] = 0; gen_opc_instr_start[ii++] = 0;

View File

@ -5279,7 +5279,7 @@ static inline void gen_intermediate_code_internal(TranslationBlock * tb,
} }
if (spc) { if (spc) {
qemu_log("Search PC...\n"); qemu_log("Search PC...\n");
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) while (lj < j)
@ -5312,7 +5312,7 @@ static inline void gen_intermediate_code_internal(TranslationBlock * tb,
if (dc->singlestep) { if (dc->singlestep) {
break; break;
} }
} while ((gen_opc_ptr < gen_opc_end) && } while ((tcg_ctx.gen_opc_ptr < gen_opc_end) &&
(dc->pc - pc_start) < (TARGET_PAGE_SIZE - 32) && (dc->pc - pc_start) < (TARGET_PAGE_SIZE - 32) &&
num_insns < max_insns); num_insns < max_insns);
@ -5334,9 +5334,9 @@ static inline void gen_intermediate_code_internal(TranslationBlock * tb,
} }
} }
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
if (spc) { if (spc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) while (lj <= j)
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;

View File

@ -1999,7 +1999,7 @@ static inline void gen_intermediate_code_internal(CPUUniCore32State *env,
} }
} }
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) { while (lj < j) {
@ -2031,7 +2031,7 @@ static inline void gen_intermediate_code_internal(CPUUniCore32State *env,
* Also stop translation when a page boundary is reached. This * Also stop translation when a page boundary is reached. This
* ensures prefetch aborts occur at the right place. */ * ensures prefetch aborts occur at the right place. */
num_insns++; num_insns++;
} while (!dc->is_jmp && gen_opc_ptr < gen_opc_end && } while (!dc->is_jmp && tcg_ctx.gen_opc_ptr < gen_opc_end &&
!env->singlestep_enabled && !env->singlestep_enabled &&
!singlestep && !singlestep &&
dc->pc < next_page_start && dc->pc < next_page_start &&
@ -2103,7 +2103,7 @@ static inline void gen_intermediate_code_internal(CPUUniCore32State *env,
done_generating: done_generating:
gen_icount_end(tb, num_insns); gen_icount_end(tb, num_insns);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
#ifdef DEBUG_DISAS #ifdef DEBUG_DISAS
if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) { if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM)) {
@ -2114,7 +2114,7 @@ done_generating:
} }
#endif #endif
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
lj++; lj++;
while (lj <= j) { while (lj <= j) {
gen_opc_instr_start[lj++] = 0; gen_opc_instr_start[lj++] = 0;

View File

@ -2893,7 +2893,7 @@ static void gen_intermediate_code_internal(
check_breakpoint(env, &dc); check_breakpoint(env, &dc);
if (search_pc) { if (search_pc) {
j = gen_opc_ptr - gen_opc_buf; j = tcg_ctx.gen_opc_ptr - gen_opc_buf;
if (lj < j) { if (lj < j) {
lj++; lj++;
while (lj < j) { while (lj < j) {
@ -2944,7 +2944,7 @@ static void gen_intermediate_code_internal(
} while (dc.is_jmp == DISAS_NEXT && } while (dc.is_jmp == DISAS_NEXT &&
insn_count < max_insns && insn_count < max_insns &&
dc.pc < next_page_start && dc.pc < next_page_start &&
gen_opc_ptr < gen_opc_end); tcg_ctx.gen_opc_ptr < gen_opc_end);
reset_litbase(&dc); reset_litbase(&dc);
reset_sar_tracker(&dc); reset_sar_tracker(&dc);
@ -2960,7 +2960,7 @@ static void gen_intermediate_code_internal(
gen_jumpi(&dc, dc.pc, 0); gen_jumpi(&dc, dc.pc, 0);
} }
gen_icount_end(tb, insn_count); gen_icount_end(tb, insn_count);
*gen_opc_ptr = INDEX_op_end; *tcg_ctx.gen_opc_ptr = INDEX_op_end;
if (!search_pc) { if (!search_pc) {
tb->size = dc.pc - pc_start; tb->size = dc.pc - pc_start;

View File

@ -27,58 +27,58 @@ int gen_new_label(void);
static inline void tcg_gen_op0(TCGOpcode opc) static inline void tcg_gen_op0(TCGOpcode opc)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
} }
static inline void tcg_gen_op1_i32(TCGOpcode opc, TCGv_i32 arg1) static inline void tcg_gen_op1_i32(TCGOpcode opc, TCGv_i32 arg1)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
} }
static inline void tcg_gen_op1_i64(TCGOpcode opc, TCGv_i64 arg1) static inline void tcg_gen_op1_i64(TCGOpcode opc, TCGv_i64 arg1)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
} }
static inline void tcg_gen_op1i(TCGOpcode opc, TCGArg arg1) static inline void tcg_gen_op1i(TCGOpcode opc, TCGArg arg1)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = arg1; *gen_opparam_ptr++ = arg1;
} }
static inline void tcg_gen_op2_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2) static inline void tcg_gen_op2_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
} }
static inline void tcg_gen_op2_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2) static inline void tcg_gen_op2_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
} }
static inline void tcg_gen_op2i_i32(TCGOpcode opc, TCGv_i32 arg1, TCGArg arg2) static inline void tcg_gen_op2i_i32(TCGOpcode opc, TCGv_i32 arg1, TCGArg arg2)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = arg2; *gen_opparam_ptr++ = arg2;
} }
static inline void tcg_gen_op2i_i64(TCGOpcode opc, TCGv_i64 arg1, TCGArg arg2) static inline void tcg_gen_op2i_i64(TCGOpcode opc, TCGv_i64 arg1, TCGArg arg2)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = arg2; *gen_opparam_ptr++ = arg2;
} }
static inline void tcg_gen_op2ii(TCGOpcode opc, TCGArg arg1, TCGArg arg2) static inline void tcg_gen_op2ii(TCGOpcode opc, TCGArg arg1, TCGArg arg2)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = arg1; *gen_opparam_ptr++ = arg1;
*gen_opparam_ptr++ = arg2; *gen_opparam_ptr++ = arg2;
} }
@ -86,7 +86,7 @@ static inline void tcg_gen_op2ii(TCGOpcode opc, TCGArg arg1, TCGArg arg2)
static inline void tcg_gen_op3_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2, static inline void tcg_gen_op3_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
TCGv_i32 arg3) TCGv_i32 arg3)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
*gen_opparam_ptr++ = GET_TCGV_I32(arg3); *gen_opparam_ptr++ = GET_TCGV_I32(arg3);
@ -95,7 +95,7 @@ static inline void tcg_gen_op3_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
static inline void tcg_gen_op3_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2, static inline void tcg_gen_op3_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
TCGv_i64 arg3) TCGv_i64 arg3)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
*gen_opparam_ptr++ = GET_TCGV_I64(arg3); *gen_opparam_ptr++ = GET_TCGV_I64(arg3);
@ -104,7 +104,7 @@ static inline void tcg_gen_op3_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
static inline void tcg_gen_op3i_i32(TCGOpcode opc, TCGv_i32 arg1, static inline void tcg_gen_op3i_i32(TCGOpcode opc, TCGv_i32 arg1,
TCGv_i32 arg2, TCGArg arg3) TCGv_i32 arg2, TCGArg arg3)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
*gen_opparam_ptr++ = arg3; *gen_opparam_ptr++ = arg3;
@ -113,7 +113,7 @@ static inline void tcg_gen_op3i_i32(TCGOpcode opc, TCGv_i32 arg1,
static inline void tcg_gen_op3i_i64(TCGOpcode opc, TCGv_i64 arg1, static inline void tcg_gen_op3i_i64(TCGOpcode opc, TCGv_i64 arg1,
TCGv_i64 arg2, TCGArg arg3) TCGv_i64 arg2, TCGArg arg3)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
*gen_opparam_ptr++ = arg3; *gen_opparam_ptr++ = arg3;
@ -122,7 +122,7 @@ static inline void tcg_gen_op3i_i64(TCGOpcode opc, TCGv_i64 arg1,
static inline void tcg_gen_ldst_op_i32(TCGOpcode opc, TCGv_i32 val, static inline void tcg_gen_ldst_op_i32(TCGOpcode opc, TCGv_i32 val,
TCGv_ptr base, TCGArg offset) TCGv_ptr base, TCGArg offset)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(val); *gen_opparam_ptr++ = GET_TCGV_I32(val);
*gen_opparam_ptr++ = GET_TCGV_PTR(base); *gen_opparam_ptr++ = GET_TCGV_PTR(base);
*gen_opparam_ptr++ = offset; *gen_opparam_ptr++ = offset;
@ -131,7 +131,7 @@ static inline void tcg_gen_ldst_op_i32(TCGOpcode opc, TCGv_i32 val,
static inline void tcg_gen_ldst_op_i64(TCGOpcode opc, TCGv_i64 val, static inline void tcg_gen_ldst_op_i64(TCGOpcode opc, TCGv_i64 val,
TCGv_ptr base, TCGArg offset) TCGv_ptr base, TCGArg offset)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(val); *gen_opparam_ptr++ = GET_TCGV_I64(val);
*gen_opparam_ptr++ = GET_TCGV_PTR(base); *gen_opparam_ptr++ = GET_TCGV_PTR(base);
*gen_opparam_ptr++ = offset; *gen_opparam_ptr++ = offset;
@ -140,7 +140,7 @@ static inline void tcg_gen_ldst_op_i64(TCGOpcode opc, TCGv_i64 val,
static inline void tcg_gen_qemu_ldst_op_i64_i32(TCGOpcode opc, TCGv_i64 val, static inline void tcg_gen_qemu_ldst_op_i64_i32(TCGOpcode opc, TCGv_i64 val,
TCGv_i32 addr, TCGArg mem_index) TCGv_i32 addr, TCGArg mem_index)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(val); *gen_opparam_ptr++ = GET_TCGV_I64(val);
*gen_opparam_ptr++ = GET_TCGV_I32(addr); *gen_opparam_ptr++ = GET_TCGV_I32(addr);
*gen_opparam_ptr++ = mem_index; *gen_opparam_ptr++ = mem_index;
@ -149,7 +149,7 @@ static inline void tcg_gen_qemu_ldst_op_i64_i32(TCGOpcode opc, TCGv_i64 val,
static inline void tcg_gen_qemu_ldst_op_i64_i64(TCGOpcode opc, TCGv_i64 val, static inline void tcg_gen_qemu_ldst_op_i64_i64(TCGOpcode opc, TCGv_i64 val,
TCGv_i64 addr, TCGArg mem_index) TCGv_i64 addr, TCGArg mem_index)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(val); *gen_opparam_ptr++ = GET_TCGV_I64(val);
*gen_opparam_ptr++ = GET_TCGV_I64(addr); *gen_opparam_ptr++ = GET_TCGV_I64(addr);
*gen_opparam_ptr++ = mem_index; *gen_opparam_ptr++ = mem_index;
@ -158,7 +158,7 @@ static inline void tcg_gen_qemu_ldst_op_i64_i64(TCGOpcode opc, TCGv_i64 val,
static inline void tcg_gen_op4_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2, static inline void tcg_gen_op4_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
TCGv_i32 arg3, TCGv_i32 arg4) TCGv_i32 arg3, TCGv_i32 arg4)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
*gen_opparam_ptr++ = GET_TCGV_I32(arg3); *gen_opparam_ptr++ = GET_TCGV_I32(arg3);
@ -168,7 +168,7 @@ static inline void tcg_gen_op4_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
static inline void tcg_gen_op4_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2, static inline void tcg_gen_op4_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
TCGv_i64 arg3, TCGv_i64 arg4) TCGv_i64 arg3, TCGv_i64 arg4)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
*gen_opparam_ptr++ = GET_TCGV_I64(arg3); *gen_opparam_ptr++ = GET_TCGV_I64(arg3);
@ -178,7 +178,7 @@ static inline void tcg_gen_op4_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
static inline void tcg_gen_op4i_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2, static inline void tcg_gen_op4i_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
TCGv_i32 arg3, TCGArg arg4) TCGv_i32 arg3, TCGArg arg4)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
*gen_opparam_ptr++ = GET_TCGV_I32(arg3); *gen_opparam_ptr++ = GET_TCGV_I32(arg3);
@ -188,7 +188,7 @@ static inline void tcg_gen_op4i_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
static inline void tcg_gen_op4i_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2, static inline void tcg_gen_op4i_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
TCGv_i64 arg3, TCGArg arg4) TCGv_i64 arg3, TCGArg arg4)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
*gen_opparam_ptr++ = GET_TCGV_I64(arg3); *gen_opparam_ptr++ = GET_TCGV_I64(arg3);
@ -198,7 +198,7 @@ static inline void tcg_gen_op4i_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
static inline void tcg_gen_op4ii_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2, static inline void tcg_gen_op4ii_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
TCGArg arg3, TCGArg arg4) TCGArg arg3, TCGArg arg4)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
*gen_opparam_ptr++ = arg3; *gen_opparam_ptr++ = arg3;
@ -208,7 +208,7 @@ static inline void tcg_gen_op4ii_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2
static inline void tcg_gen_op4ii_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2, static inline void tcg_gen_op4ii_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
TCGArg arg3, TCGArg arg4) TCGArg arg3, TCGArg arg4)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
*gen_opparam_ptr++ = arg3; *gen_opparam_ptr++ = arg3;
@ -218,7 +218,7 @@ static inline void tcg_gen_op4ii_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2
static inline void tcg_gen_op5_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2, static inline void tcg_gen_op5_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
TCGv_i32 arg3, TCGv_i32 arg4, TCGv_i32 arg5) TCGv_i32 arg3, TCGv_i32 arg4, TCGv_i32 arg5)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
*gen_opparam_ptr++ = GET_TCGV_I32(arg3); *gen_opparam_ptr++ = GET_TCGV_I32(arg3);
@ -229,7 +229,7 @@ static inline void tcg_gen_op5_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
static inline void tcg_gen_op5_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2, static inline void tcg_gen_op5_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
TCGv_i64 arg3, TCGv_i64 arg4, TCGv_i64 arg5) TCGv_i64 arg3, TCGv_i64 arg4, TCGv_i64 arg5)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
*gen_opparam_ptr++ = GET_TCGV_I64(arg3); *gen_opparam_ptr++ = GET_TCGV_I64(arg3);
@ -240,7 +240,7 @@ static inline void tcg_gen_op5_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
static inline void tcg_gen_op5i_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2, static inline void tcg_gen_op5i_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
TCGv_i32 arg3, TCGv_i32 arg4, TCGArg arg5) TCGv_i32 arg3, TCGv_i32 arg4, TCGArg arg5)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
*gen_opparam_ptr++ = GET_TCGV_I32(arg3); *gen_opparam_ptr++ = GET_TCGV_I32(arg3);
@ -251,7 +251,7 @@ static inline void tcg_gen_op5i_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
static inline void tcg_gen_op5i_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2, static inline void tcg_gen_op5i_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
TCGv_i64 arg3, TCGv_i64 arg4, TCGArg arg5) TCGv_i64 arg3, TCGv_i64 arg4, TCGArg arg5)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
*gen_opparam_ptr++ = GET_TCGV_I64(arg3); *gen_opparam_ptr++ = GET_TCGV_I64(arg3);
@ -263,7 +263,7 @@ static inline void tcg_gen_op5ii_i32(TCGOpcode opc, TCGv_i32 arg1,
TCGv_i32 arg2, TCGv_i32 arg3, TCGv_i32 arg2, TCGv_i32 arg3,
TCGArg arg4, TCGArg arg5) TCGArg arg4, TCGArg arg5)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
*gen_opparam_ptr++ = GET_TCGV_I32(arg3); *gen_opparam_ptr++ = GET_TCGV_I32(arg3);
@ -275,7 +275,7 @@ static inline void tcg_gen_op5ii_i64(TCGOpcode opc, TCGv_i64 arg1,
TCGv_i64 arg2, TCGv_i64 arg3, TCGv_i64 arg2, TCGv_i64 arg3,
TCGArg arg4, TCGArg arg5) TCGArg arg4, TCGArg arg5)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
*gen_opparam_ptr++ = GET_TCGV_I64(arg3); *gen_opparam_ptr++ = GET_TCGV_I64(arg3);
@ -287,7 +287,7 @@ static inline void tcg_gen_op6_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
TCGv_i32 arg3, TCGv_i32 arg4, TCGv_i32 arg5, TCGv_i32 arg3, TCGv_i32 arg4, TCGv_i32 arg5,
TCGv_i32 arg6) TCGv_i32 arg6)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
*gen_opparam_ptr++ = GET_TCGV_I32(arg3); *gen_opparam_ptr++ = GET_TCGV_I32(arg3);
@ -300,7 +300,7 @@ static inline void tcg_gen_op6_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
TCGv_i64 arg3, TCGv_i64 arg4, TCGv_i64 arg5, TCGv_i64 arg3, TCGv_i64 arg4, TCGv_i64 arg5,
TCGv_i64 arg6) TCGv_i64 arg6)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
*gen_opparam_ptr++ = GET_TCGV_I64(arg3); *gen_opparam_ptr++ = GET_TCGV_I64(arg3);
@ -313,7 +313,7 @@ static inline void tcg_gen_op6i_i32(TCGOpcode opc, TCGv_i32 arg1, TCGv_i32 arg2,
TCGv_i32 arg3, TCGv_i32 arg4, TCGv_i32 arg3, TCGv_i32 arg4,
TCGv_i32 arg5, TCGArg arg6) TCGv_i32 arg5, TCGArg arg6)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
*gen_opparam_ptr++ = GET_TCGV_I32(arg3); *gen_opparam_ptr++ = GET_TCGV_I32(arg3);
@ -326,7 +326,7 @@ static inline void tcg_gen_op6i_i64(TCGOpcode opc, TCGv_i64 arg1, TCGv_i64 arg2,
TCGv_i64 arg3, TCGv_i64 arg4, TCGv_i64 arg3, TCGv_i64 arg4,
TCGv_i64 arg5, TCGArg arg6) TCGv_i64 arg5, TCGArg arg6)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
*gen_opparam_ptr++ = GET_TCGV_I64(arg3); *gen_opparam_ptr++ = GET_TCGV_I64(arg3);
@ -339,7 +339,7 @@ static inline void tcg_gen_op6ii_i32(TCGOpcode opc, TCGv_i32 arg1,
TCGv_i32 arg2, TCGv_i32 arg3, TCGv_i32 arg2, TCGv_i32 arg3,
TCGv_i32 arg4, TCGArg arg5, TCGArg arg6) TCGv_i32 arg4, TCGArg arg5, TCGArg arg6)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I32(arg1); *gen_opparam_ptr++ = GET_TCGV_I32(arg1);
*gen_opparam_ptr++ = GET_TCGV_I32(arg2); *gen_opparam_ptr++ = GET_TCGV_I32(arg2);
*gen_opparam_ptr++ = GET_TCGV_I32(arg3); *gen_opparam_ptr++ = GET_TCGV_I32(arg3);
@ -352,7 +352,7 @@ static inline void tcg_gen_op6ii_i64(TCGOpcode opc, TCGv_i64 arg1,
TCGv_i64 arg2, TCGv_i64 arg3, TCGv_i64 arg2, TCGv_i64 arg3,
TCGv_i64 arg4, TCGArg arg5, TCGArg arg6) TCGv_i64 arg4, TCGArg arg5, TCGArg arg6)
{ {
*gen_opc_ptr++ = opc; *tcg_ctx.gen_opc_ptr++ = opc;
*gen_opparam_ptr++ = GET_TCGV_I64(arg1); *gen_opparam_ptr++ = GET_TCGV_I64(arg1);
*gen_opparam_ptr++ = GET_TCGV_I64(arg2); *gen_opparam_ptr++ = GET_TCGV_I64(arg2);
*gen_opparam_ptr++ = GET_TCGV_I64(arg3); *gen_opparam_ptr++ = GET_TCGV_I64(arg3);

View File

@ -297,7 +297,7 @@ void tcg_func_start(TCGContext *s)
s->goto_tb_issue_mask = 0; s->goto_tb_issue_mask = 0;
#endif #endif
gen_opc_ptr = gen_opc_buf; s->gen_opc_ptr = gen_opc_buf;
gen_opparam_ptr = gen_opparam_buf; gen_opparam_ptr = gen_opparam_buf;
#if defined(CONFIG_QEMU_LDST_OPTIMIZATION) && defined(CONFIG_SOFTMMU) #if defined(CONFIG_QEMU_LDST_OPTIMIZATION) && defined(CONFIG_SOFTMMU)
@ -641,7 +641,7 @@ void tcg_gen_callN(TCGContext *s, TCGv_ptr func, unsigned int flags,
} }
#endif /* TCG_TARGET_EXTEND_ARGS */ #endif /* TCG_TARGET_EXTEND_ARGS */
*gen_opc_ptr++ = INDEX_op_call; *s->gen_opc_ptr++ = INDEX_op_call;
nparam = gen_opparam_ptr++; nparam = gen_opparam_ptr++;
if (ret != TCG_CALL_DUMMY_ARG) { if (ret != TCG_CALL_DUMMY_ARG) {
#if TCG_TARGET_REG_BITS < 64 #if TCG_TARGET_REG_BITS < 64
@ -898,7 +898,7 @@ void tcg_dump_ops(TCGContext *s)
first_insn = 1; first_insn = 1;
opc_ptr = gen_opc_buf; opc_ptr = gen_opc_buf;
args = gen_opparam_buf; args = gen_opparam_buf;
while (opc_ptr < gen_opc_ptr) { while (opc_ptr < s->gen_opc_ptr) {
c = *opc_ptr++; c = *opc_ptr++;
def = &tcg_op_defs[c]; def = &tcg_op_defs[c];
if (c == INDEX_op_debug_insn_start) { if (c == INDEX_op_debug_insn_start) {
@ -1229,9 +1229,9 @@ static void tcg_liveness_analysis(TCGContext *s)
uint16_t dead_args; uint16_t dead_args;
uint8_t sync_args; uint8_t sync_args;
gen_opc_ptr++; /* skip end */ s->gen_opc_ptr++; /* skip end */
nb_ops = gen_opc_ptr - gen_opc_buf; nb_ops = s->gen_opc_ptr - gen_opc_buf;
s->op_dead_args = tcg_malloc(nb_ops * sizeof(uint16_t)); s->op_dead_args = tcg_malloc(nb_ops * sizeof(uint16_t));
s->op_sync_args = tcg_malloc(nb_ops * sizeof(uint8_t)); s->op_sync_args = tcg_malloc(nb_ops * sizeof(uint8_t));
@ -1448,7 +1448,7 @@ static void tcg_liveness_analysis(TCGContext *s)
static void tcg_liveness_analysis(TCGContext *s) static void tcg_liveness_analysis(TCGContext *s)
{ {
int nb_ops; int nb_ops;
nb_ops = gen_opc_ptr - gen_opc_buf; nb_ops = s->gen_opc_ptr - gen_opc_buf;
s->op_dead_args = tcg_malloc(nb_ops * sizeof(uint16_t)); s->op_dead_args = tcg_malloc(nb_ops * sizeof(uint16_t));
memset(s->op_dead_args, 0, nb_ops * sizeof(uint16_t)); memset(s->op_dead_args, 0, nb_ops * sizeof(uint16_t));
@ -2222,7 +2222,7 @@ static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf,
#ifdef USE_TCG_OPTIMIZATIONS #ifdef USE_TCG_OPTIMIZATIONS
gen_opparam_ptr = gen_opparam_ptr =
tcg_optimize(s, gen_opc_ptr, gen_opparam_buf, tcg_op_defs); tcg_optimize(s, s->gen_opc_ptr, gen_opparam_buf, tcg_op_defs);
#endif #endif
#ifdef CONFIG_PROFILER #ifdef CONFIG_PROFILER
@ -2334,7 +2334,7 @@ int tcg_gen_code(TCGContext *s, uint8_t *gen_code_buf)
#ifdef CONFIG_PROFILER #ifdef CONFIG_PROFILER
{ {
int n; int n;
n = (gen_opc_ptr - gen_opc_buf); n = (s->gen_opc_ptr - gen_opc_buf);
s->op_count += n; s->op_count += n;
if (n > s->op_count_max) if (n > s->op_count_max)
s->op_count_max = n; s->op_count_max = n;