提交 a208e54a 编写于 作者: P pbrook

TCG op size estimation fix.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4154 c046a42c-6fe2-441c-8c8c-71466251a162
上级 663715fb
...@@ -36,6 +36,12 @@ struct TranslationBlock; ...@@ -36,6 +36,12 @@ struct TranslationBlock;
#define OPC_BUF_SIZE 512 #define OPC_BUF_SIZE 512
#define OPC_MAX_SIZE (OPC_BUF_SIZE - MAX_OP_PER_INSTR) #define OPC_MAX_SIZE (OPC_BUF_SIZE - MAX_OP_PER_INSTR)
/* Maximum size a TCG op can expand to. This is complicated because a
single op may require several host instructions and regirster reloads.
For now take a wild guess at 128 bytes, which should allow at least
a couple of fixup instructions per argument. */
#define TCG_MAX_OP_SIZE 128
#define OPPARAM_BUF_SIZE (OPC_BUF_SIZE * MAX_OPC_PARAM) #define OPPARAM_BUF_SIZE (OPC_BUF_SIZE * MAX_OPC_PARAM)
extern target_ulong gen_opc_pc[OPC_BUF_SIZE]; extern target_ulong gen_opc_pc[OPC_BUF_SIZE];
......
...@@ -367,6 +367,9 @@ void tb_flush(CPUState *env1) ...@@ -367,6 +367,9 @@ void tb_flush(CPUState *env1)
nb_tbs, nb_tbs > 0 ? nb_tbs, nb_tbs > 0 ?
((unsigned long)(code_gen_ptr - code_gen_buffer)) / nb_tbs : 0); ((unsigned long)(code_gen_ptr - code_gen_buffer)) / nb_tbs : 0);
#endif #endif
if ((unsigned long)(code_gen_ptr - code_gen_buffer) > CODE_GEN_BUFFER_SIZE)
cpu_abort(env1, "Internal error: code buffer overflow\n");
nb_tbs = 0; nb_tbs = 0;
for(env = first_cpu; env != NULL; env = env->next_cpu) { for(env = first_cpu; env != NULL; env = env->next_cpu) {
......
...@@ -71,6 +71,7 @@ unsigned long code_gen_max_block_size(void) ...@@ -71,6 +71,7 @@ unsigned long code_gen_max_block_size(void)
static unsigned long max; static unsigned long max;
if (max == 0) { if (max == 0) {
max = TCG_MAX_OP_SIZE;
#define DEF(s, n, copy_size) max = copy_size > max? copy_size : max; #define DEF(s, n, copy_size) max = copy_size > max? copy_size : max;
#include "tcg-opc.h" #include "tcg-opc.h"
#undef DEF #undef DEF
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册