exec-all.h: Make MAX_OP_PER_INSTR large enough for target-arm's uses
authorPeter Maydell <peter.maydell@linaro.org>
Wed, 22 Jun 2011 14:16:32 +0000 (15:16 +0100)
committerBlue Swirl <blauwirbel@gmail.com>
Tue, 12 Jul 2011 20:29:46 +0000 (20:29 +0000)
The target-arm frontend's worst-case TCG ops per instr is 194 (and in
general many of the "load multiple registers" ARM instructions generate
more than 100 TCG ops). Raise MAX_OP_PER_INSTR accordingly to avoid
possible buffer overruns.

Since it doesn't make any sense for the "64 bit guest on 32 bit host"
case to have a smaller limit than the normal case, we collapse the
two cases back into each other again.

(This increase costs us about 14K in extra static buffer space and
21K of extra margin at the end of a 32MB codegen buffer.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
exec-all.h

index 21a69d68adedb8fdb6f7c8c224c3c8d42026ad21..69acf3b97d96566b159e5c1d60d70aaf3d482b54 100644 (file)
@@ -44,11 +44,7 @@ struct TranslationBlock;
 typedef struct TranslationBlock TranslationBlock;
 
 /* XXX: make safe guess about sizes */
-#if (HOST_LONG_BITS == 32) && (TARGET_LONG_BITS == 64)
-#define MAX_OP_PER_INSTR 128
-#else
-#define MAX_OP_PER_INSTR 96
-#endif
+#define MAX_OP_PER_INSTR 208
 
 #if HOST_LONG_BITS == 32
 #define MAX_OPC_PARAM_PER_ARG 2