Patchwork [3/4] tcg: Move tcg_target_get_call_iarg_regs_count to tcg.c

login
register
mail settings
Submitter Stefan Weil
Date Sept. 12, 2012, 8:44 p.m.
Message ID <1347482678-9458-4-git-send-email-sw@weilnetz.de>
Download mbox | patch
Permalink /patch/183449/
State Superseded
Headers show

Comments

Stefan Weil - Sept. 12, 2012, 8:44 p.m.
The TCG targets no longer need individual implementations.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
 tcg/arm/tcg-target.c   |    6 ------
 tcg/hppa/tcg-target.c  |    6 ------
 tcg/i386/tcg-target.c  |    6 ------
 tcg/ia64/tcg-target.c  |    6 ------
 tcg/mips/tcg-target.c  |    6 ------
 tcg/ppc/tcg-target.c   |    6 ------
 tcg/ppc64/tcg-target.c |    6 ------
 tcg/s390/tcg-target.c  |    5 -----
 tcg/sparc/tcg-target.c |    6 ------
 tcg/tcg.c              |    7 ++++++-
 tcg/tci/tcg-target.c   |    6 ------
 11 files changed, 6 insertions(+), 60 deletions(-)
Stefan Weil - Sept. 13, 2012, 5:31 a.m.
Am 12.09.2012 22:59, schrieb Aurelien Jarno:
> On Wed, Sep 12, 2012 at 10:44:37PM +0200, Stefan Weil wrote:
>> The TCG targets no longer need individual implementations.
>>
>> Signed-off-by: Stefan Weil <sw@weilnetz.de>
>> ---
>>   tcg/arm/tcg-target.c   |    6 ------
>>   tcg/hppa/tcg-target.c  |    6 ------
>>   tcg/i386/tcg-target.c  |    6 ------
>>   tcg/ia64/tcg-target.c  |    6 ------
>>   tcg/mips/tcg-target.c  |    6 ------
>>   tcg/ppc/tcg-target.c   |    6 ------
>>   tcg/ppc64/tcg-target.c |    6 ------
>>   tcg/s390/tcg-target.c  |    5 -----
>>   tcg/sparc/tcg-target.c |    6 ------
>>   tcg/tcg.c              |    7 ++++++-
>>   tcg/tci/tcg-target.c   |    6 ------
>>   11 files changed, 6 insertions(+), 60 deletions(-)
>>
>>

[...]

>> diff --git a/tcg/tcg.c b/tcg/tcg.c
>> index a4e7f42..53316f6 100644
>> --- a/tcg/tcg.c
>> +++ b/tcg/tcg.c
>> @@ -89,7 +89,6 @@ static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
>>                          tcg_target_long arg2);
>>   static int tcg_target_const_match(tcg_target_long val,
>>                                     const TCGArgConstraint *arg_ct);
>> -static int tcg_target_get_call_iarg_regs_count(int flags);
>>   
>>   TCGOpDef tcg_op_defs[] = {
>>   #define DEF(s, oargs, iargs, cargs, flags) { #s, oargs, iargs, cargs, iargs + oargs + cargs, flags },
>> @@ -182,6 +181,12 @@ int gen_new_label(void)
>>   
>>   #include "tcg-target.c"
>>   
>> +/* Maximum number of register used for input function arguments. */
>> +static inline int tcg_target_get_call_iarg_regs_count(int flags)
>> +{
>> +    return ARRAY_SIZE(tcg_target_call_iarg_regs);
>> +}
>> +
> Do we really need a function for that, given that it has only one
> caller?
>
> For me ARRAY_SIZE(tcg_target_call_iarg_regs) is even more understandable
> than tcg_target_get_call_iarg_regs_count().
>

I agree. tcg_target_get_call_iarg_regs_count can be removed
completely, but only if we find a solution for the problem
which Peter Maydell found: some code accesses
tcg_target_call_iarg_regs unconditionally even for x86 32 bit,
so for the moment, we cannot reduce its size to 0.

Stefan

Patch

diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c
index cf0ca3d..38e2057 100644
--- a/tcg/arm/tcg-target.c
+++ b/tcg/arm/tcg-target.c
@@ -145,12 +145,6 @@  static void patch_reloc(uint8_t *code_ptr, int type,
     }
 }
 
-/* maximum number of register used for input function arguments */
-static inline int tcg_target_get_call_iarg_regs_count(int flags)
-{
-    return 4;
-}
-
 /* parse target specific constraints */
 static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
 {
diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
index 4f17928..985476a 100644
--- a/tcg/hppa/tcg-target.c
+++ b/tcg/hppa/tcg-target.c
@@ -175,12 +175,6 @@  static void patch_reloc(uint8_t *code_ptr, int type,
     *insn_ptr = insn;
 }
 
-/* maximum number of register used for input function arguments */
-static inline int tcg_target_get_call_iarg_regs_count(int flags)
-{
-    return 4;
-}
-
 /* parse target specific constraints */
 static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
 {
diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
index d60bab8..3c25acc 100644
--- a/tcg/i386/tcg-target.c
+++ b/tcg/i386/tcg-target.c
@@ -112,12 +112,6 @@  static void patch_reloc(uint8_t *code_ptr, int type,
     }
 }
 
-/* maximum number of register used for input function arguments */
-static inline int tcg_target_get_call_iarg_regs_count(int flags)
-{
-    return ARRAY_SIZE(tcg_target_call_iarg_regs);
-}
-
 /* parse target specific constraints */
 static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
 {
diff --git a/tcg/ia64/tcg-target.c b/tcg/ia64/tcg-target.c
index dc588db..7f31876 100644
--- a/tcg/ia64/tcg-target.c
+++ b/tcg/ia64/tcg-target.c
@@ -176,12 +176,6 @@  static const int tcg_target_call_oarg_regs[] = {
     TCG_REG_R8
 };
 
-/* maximum number of register used for input function arguments */
-static inline int tcg_target_get_call_iarg_regs_count(int flags)
-{
-    return 8;
-}
-
 /*
  * opcode formation
  */
diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c
index 1006e28..aad590c 100644
--- a/tcg/mips/tcg-target.c
+++ b/tcg/mips/tcg-target.c
@@ -185,12 +185,6 @@  static void patch_reloc(uint8_t *code_ptr, int type,
     }
 }
 
-/* maximum number of register used for input function arguments */
-static inline int tcg_target_get_call_iarg_regs_count(int flags)
-{
-    return 4;
-}
-
 /* parse target specific constraints */
 static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
 {
diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
index 0cff181..b889e34 100644
--- a/tcg/ppc/tcg-target.c
+++ b/tcg/ppc/tcg-target.c
@@ -221,12 +221,6 @@  static void patch_reloc(uint8_t *code_ptr, int type,
     }
 }
 
-/* maximum number of register used for input function arguments */
-static int tcg_target_get_call_iarg_regs_count(int flags)
-{
-    return ARRAY_SIZE (tcg_target_call_iarg_regs);
-}
-
 /* parse target specific constraints */
 static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
 {
diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c
index 27a0ae8..08c5c0f 100644
--- a/tcg/ppc64/tcg-target.c
+++ b/tcg/ppc64/tcg-target.c
@@ -208,12 +208,6 @@  static void patch_reloc (uint8_t *code_ptr, int type,
     }
 }
 
-/* maximum number of register used for input function arguments */
-static int tcg_target_get_call_iarg_regs_count (int flags)
-{
-    return ARRAY_SIZE (tcg_target_call_iarg_regs);
-}
-
 /* parse target specific constraints */
 static int target_parse_constraint (TCGArgConstraint *ct, const char **pct_str)
 {
diff --git a/tcg/s390/tcg-target.c b/tcg/s390/tcg-target.c
index 99b5339..287f010 100644
--- a/tcg/s390/tcg-target.c
+++ b/tcg/s390/tcg-target.c
@@ -376,11 +376,6 @@  static void patch_reloc(uint8_t *code_ptr, int type,
     }
 }
 
-static int tcg_target_get_call_iarg_regs_count(int flags)
-{
-    return sizeof(tcg_target_call_iarg_regs) / sizeof(int);
-}
-
 /* parse target specific constraints */
 static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
 {
diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c
index 247a278..3b6c108 100644
--- a/tcg/sparc/tcg-target.c
+++ b/tcg/sparc/tcg-target.c
@@ -137,12 +137,6 @@  static void patch_reloc(uint8_t *code_ptr, int type,
     }
 }
 
-/* maximum number of register used for input function arguments */
-static inline int tcg_target_get_call_iarg_regs_count(int flags)
-{
-    return 6;
-}
-
 /* parse target specific constraints */
 static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
 {
diff --git a/tcg/tcg.c b/tcg/tcg.c
index a4e7f42..53316f6 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -89,7 +89,6 @@  static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
                        tcg_target_long arg2);
 static int tcg_target_const_match(tcg_target_long val,
                                   const TCGArgConstraint *arg_ct);
-static int tcg_target_get_call_iarg_regs_count(int flags);
 
 TCGOpDef tcg_op_defs[] = {
 #define DEF(s, oargs, iargs, cargs, flags) { #s, oargs, iargs, cargs, iargs + oargs + cargs, flags },
@@ -182,6 +181,12 @@  int gen_new_label(void)
 
 #include "tcg-target.c"
 
+/* Maximum number of register used for input function arguments. */
+static inline int tcg_target_get_call_iarg_regs_count(int flags)
+{
+    return ARRAY_SIZE(tcg_target_call_iarg_regs);
+}
+
 /* pool based memory allocation */
 void *tcg_malloc_internal(TCGContext *s, int size)
 {
diff --git a/tcg/tci/tcg-target.c b/tcg/tci/tcg-target.c
index 7124b15..7d43132 100644
--- a/tcg/tci/tcg-target.c
+++ b/tcg/tci/tcg-target.c
@@ -891,12 +891,6 @@  static int tcg_target_const_match(tcg_target_long val,
     return arg_ct->ct & TCG_CT_CONST;
 }
 
-/* Maximum number of register used for input function arguments. */
-static int tcg_target_get_call_iarg_regs_count(int flags)
-{
-    return ARRAY_SIZE(tcg_target_call_iarg_regs);
-}
-
 static void tcg_target_init(TCGContext *s)
 {
 #if defined(CONFIG_DEBUG_TCG_INTERPRETER)