All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size
@ 2013-08-22 16:58 Richard Henderson
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 01/18] qtest: Fix FMT_timeval vs time_t Richard Henderson
                   ` (17 more replies)
  0 siblings, 18 replies; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

There are several targets for which we have 64-bit registers, even
when compiling for a 32-bit address space.  Of course, compiling
qemu for a 64-bit address space is better, considering the large
amount of virtual memory that we generally want to allocate.  That
said, it's not always an option.

This patch set adjusts everywhere that used tcg_target_long when it
really meant intptr_t, and then enables the easiest such target to
actually test: x32 (x86_64 with 32-bit pointers).

Tested in a vm installed with gentoo's x32 environment.


r~


Richard Henderson (18):
  qtest: Fix FMT_timeval vs time_t
  tcg: Change flush_icache_range arguments to uintptr_t
  tcg: Change tcg_qemu_tb_exec return to uintptr_t
  tcg: Fix next_tb type in cpu_exec
  tcg: Define TCG_TYPE_PTR properly
  tcg: Define TCG_ptr properly
  tcg: Change frame pointer offsets to intptr_t
  tcg: Change memory offsets to intptr_t
  tcg: Change relocation offsets to intptr_t
  tcg: Use uintptr_t in TCGHelperInfo
  tcg: Change tcg_gen_exit_tb argument to uintptr_t
  tcg: Change tcg_out_ld/st offset to intptr_t
  tcg: Use appropriate types in tcg_reg_alloc_call
  tcg: Fix jit debug for pointer size != register size
  tcg: Allow TCG_TARGET_REG_BITS to be specified independantly
  tcg-i386: Use intptr_t appropriately
  tcg-i386: Adjust tcg_out_tlb_load for x32
  configure: Allow x32 as a host

 configure                     | 27 ++++++++++-----
 cpu-exec.c                    |  4 +--
 include/exec/gen-icount.h     |  4 +--
 qtest.c                       |  8 ++---
 target-alpha/translate.c      |  8 ++---
 target-arm/translate.c        |  2 +-
 target-cris/translate.c       |  2 +-
 target-i386/translate.c       |  2 +-
 target-lm32/translate.c       |  2 +-
 target-m68k/translate.c       |  2 +-
 target-microblaze/translate.c |  2 +-
 target-mips/translate.c       |  2 +-
 target-moxie/translate.c      |  2 +-
 target-openrisc/translate.c   |  2 +-
 target-ppc/translate.c        |  2 +-
 target-s390x/translate.c      |  8 ++---
 target-sh4/translate.c        |  2 +-
 target-sparc/translate.c      |  2 +-
 target-unicore32/translate.c  |  2 +-
 target-xtensa/translate.c     |  2 +-
 tcg/aarch64/tcg-target.c      |  6 ++--
 tcg/aarch64/tcg-target.h      |  3 +-
 tcg/arm/tcg-target.c          | 12 +++----
 tcg/arm/tcg-target.h          |  9 +++--
 tcg/hppa/tcg-target.c         | 14 +++++---
 tcg/hppa/tcg-target.h         |  7 +---
 tcg/i386/tcg-target.c         | 79 +++++++++++++++++++++++--------------------
 tcg/i386/tcg-target.h         | 13 +++----
 tcg/ia64/tcg-target.c         | 18 +++++-----
 tcg/ia64/tcg-target.h         |  3 +-
 tcg/mips/tcg-target.c         | 20 +++++------
 tcg/mips/tcg-target.h         |  3 +-
 tcg/ppc/tcg-target.c          | 10 +++---
 tcg/ppc/tcg-target.h          |  2 +-
 tcg/ppc64/tcg-target.c        | 10 +++---
 tcg/s390/tcg-target.c         | 10 +++---
 tcg/s390/tcg-target.h         |  3 +-
 tcg/sparc/tcg-target.c        | 10 +++---
 tcg/sparc/tcg-target.h        | 20 ++++++-----
 tcg/tcg-op.h                  |  2 +-
 tcg/tcg.c                     | 60 +++++++++++++++-----------------
 tcg/tcg.h                     | 60 ++++++++++++++++----------------
 tcg/tci/tcg-target.c          |  6 ++--
 tcg/tci/tcg-target.h          | 13 +++++--
 tci.c                         |  4 +--
 45 files changed, 250 insertions(+), 234 deletions(-)

-- 
1.8.1.4

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 01/18] qtest: Fix FMT_timeval vs time_t
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-22 17:09   ` Andreas Färber
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 02/18] tcg: Change flush_icache_range arguments to uintptr_t Richard Henderson
                   ` (16 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Since FMT_timeval unconditionally uses %ld, cast tv_sec to long.

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 qtest.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/qtest.c b/qtest.c
index 74f1842..4f6963b 100644
--- a/qtest.c
+++ b/qtest.c
@@ -177,7 +177,7 @@ static void qtest_send_prefix(CharDriverState *chr)
 
     qtest_get_time(&tv);
     fprintf(qtest_log_fp, "[S +" FMT_timeval "] ",
-            tv.tv_sec, (long) tv.tv_usec);
+            (long) tv.tv_sec, (long) tv.tv_usec);
 }
 
 static void GCC_FMT_ATTR(2, 3) qtest_send(CharDriverState *chr,
@@ -225,7 +225,7 @@ static void qtest_process_command(CharDriverState *chr, gchar **words)
 
         qtest_get_time(&tv);
         fprintf(qtest_log_fp, "[R +" FMT_timeval "]",
-                tv.tv_sec, (long) tv.tv_usec);
+                (long) tv.tv_sec, (long) tv.tv_usec);
         for (i = 0; words[i]; i++) {
             fprintf(qtest_log_fp, " %s", words[i]);
         }
@@ -485,7 +485,7 @@ static void qtest_event(void *opaque, int event)
         qtest_opened = true;
         if (qtest_log_fp) {
             fprintf(qtest_log_fp, "[I " FMT_timeval "] OPENED\n",
-                    start_time.tv_sec, (long) start_time.tv_usec);
+                    (long) start_time.tv_sec, (long) start_time.tv_usec);
         }
         break;
     case CHR_EVENT_CLOSED:
@@ -494,7 +494,7 @@ static void qtest_event(void *opaque, int event)
             qemu_timeval tv;
             qtest_get_time(&tv);
             fprintf(qtest_log_fp, "[I +" FMT_timeval "] CLOSED\n",
-                    tv.tv_sec, (long) tv.tv_usec);
+                    (long) tv.tv_sec, (long) tv.tv_usec);
         }
         break;
     default:
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 02/18] tcg: Change flush_icache_range arguments to uintptr_t
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 01/18] qtest: Fix FMT_timeval vs time_t Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-28 21:06   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 03/18] tcg: Change tcg_qemu_tb_exec return " Richard Henderson
                   ` (15 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/aarch64/tcg-target.h |  3 +--
 tcg/arm/tcg-target.h     |  9 ++++-----
 tcg/hppa/tcg-target.h    |  3 +--
 tcg/i386/tcg-target.h    |  3 +--
 tcg/ia64/tcg-target.h    |  3 +--
 tcg/mips/tcg-target.h    |  3 +--
 tcg/s390/tcg-target.h    |  3 +--
 tcg/sparc/tcg-target.h   | 12 ++++--------
 tcg/tcg.c                |  6 ++----
 tcg/tci/tcg-target.h     |  3 +--
 10 files changed, 17 insertions(+), 31 deletions(-)

diff --git a/tcg/aarch64/tcg-target.h b/tcg/aarch64/tcg-target.h
index 51e5092..71f89ed 100644
--- a/tcg/aarch64/tcg-target.h
+++ b/tcg/aarch64/tcg-target.h
@@ -92,8 +92,7 @@ enum {
     TCG_AREG0 = TCG_REG_X19,
 };
 
-static inline void flush_icache_range(tcg_target_ulong start,
-                                      tcg_target_ulong stop)
+static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
 {
     __builtin___clear_cache((char *)start, (char *)stop);
 }
diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h
index 5cd9d6a..5637ffe 100644
--- a/tcg/arm/tcg-target.h
+++ b/tcg/arm/tcg-target.h
@@ -90,15 +90,14 @@ enum {
     TCG_AREG0 = TCG_REG_R6,
 };
 
-static inline void flush_icache_range(tcg_target_ulong start,
-                                      tcg_target_ulong stop)
+static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
 {
 #if QEMU_GNUC_PREREQ(4, 1)
     __builtin___clear_cache((char *) start, (char *) stop);
 #else
-    register unsigned long _beg __asm ("a1") = start;
-    register unsigned long _end __asm ("a2") = stop;
-    register unsigned long _flg __asm ("a3") = 0;
+    register uintptr_t _beg __asm("a1") = start;
+    register uintptr_t _end __asm("a2") = stop;
+    register uintptr_t _flg __asm("a3") = 0;
     __asm __volatile__ ("swi 0x9f0002" : : "r" (_beg), "r" (_end), "r" (_flg));
 #endif
 }
diff --git a/tcg/hppa/tcg-target.h b/tcg/hppa/tcg-target.h
index 25467bd..a9257a5 100644
--- a/tcg/hppa/tcg-target.h
+++ b/tcg/hppa/tcg-target.h
@@ -109,8 +109,7 @@ typedef enum {
 #define TCG_AREG0 TCG_REG_R17
 
 
-static inline void flush_icache_range(tcg_target_ulong start,
-                                      tcg_target_ulong stop)
+static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
 {
     start &= ~31;
     while (start <= stop) {
diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
index e3f6bb9..963e839 100644
--- a/tcg/i386/tcg-target.h
+++ b/tcg/i386/tcg-target.h
@@ -135,8 +135,7 @@ typedef enum {
 # define TCG_AREG0 TCG_REG_EBP
 #endif
 
-static inline void flush_icache_range(tcg_target_ulong start,
-                                      tcg_target_ulong stop)
+static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
 {
 }
 
diff --git a/tcg/ia64/tcg-target.h b/tcg/ia64/tcg-target.h
index f32d519..428dc40 100644
--- a/tcg/ia64/tcg-target.h
+++ b/tcg/ia64/tcg-target.h
@@ -158,8 +158,7 @@ typedef enum {
 
 #define TCG_AREG0 TCG_REG_R7
 
-static inline void flush_icache_range(tcg_target_ulong start,
-                                      tcg_target_ulong stop)
+static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
 {
     start = start & ~(32UL - 1UL);
     stop = (stop + (32UL - 1UL)) & ~(32UL - 1UL);
diff --git a/tcg/mips/tcg-target.h b/tcg/mips/tcg-target.h
index a438950..433bad0 100644
--- a/tcg/mips/tcg-target.h
+++ b/tcg/mips/tcg-target.h
@@ -125,8 +125,7 @@ typedef enum {
 #include <sys/cachectl.h>
 #endif
 
-static inline void flush_icache_range(tcg_target_ulong start,
-                                      tcg_target_ulong stop)
+static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
 {
     cacheflush ((void *)start, stop-start, ICACHE);
 }
diff --git a/tcg/s390/tcg-target.h b/tcg/s390/tcg-target.h
index 42ca36c..60ffd7b 100644
--- a/tcg/s390/tcg-target.h
+++ b/tcg/s390/tcg-target.h
@@ -110,8 +110,7 @@ enum {
     TCG_AREG0 = TCG_REG_R10,
 };
 
-static inline void flush_icache_range(tcg_target_ulong start,
-                                      tcg_target_ulong stop)
+static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
 {
 }
 
diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h
index dab52d7..d1ca2d6 100644
--- a/tcg/sparc/tcg-target.h
+++ b/tcg/sparc/tcg-target.h
@@ -138,16 +138,12 @@ typedef enum {
 
 #define TCG_AREG0 TCG_REG_I0
 
-static inline void flush_icache_range(tcg_target_ulong start,
-                                      tcg_target_ulong stop)
+static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
 {
-    unsigned long p;
-
-    p = start & ~(8UL - 1UL);
-    stop = (stop + (8UL - 1UL)) & ~(8UL - 1UL);
-
-    for (; p < stop; p += 8)
+    uintptr_t p;
+    for (p = start & -8; p < (stop + 7) & -8; p += 8) {
         __asm__ __volatile__("flush\t%0" : : "r" (p));
+    }
 }
 
 #endif
diff --git a/tcg/tcg.c b/tcg/tcg.c
index dac8224..a0d0e9e 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -284,8 +284,7 @@ void tcg_prologue_init(TCGContext *s)
     s->code_buf = s->code_gen_prologue;
     s->code_ptr = s->code_buf;
     tcg_target_qemu_prologue(s);
-    flush_icache_range((tcg_target_ulong)s->code_buf,
-                       (tcg_target_ulong)s->code_ptr);
+    flush_icache_range((uintptr_t)s->code_buf, (uintptr_t)s->code_ptr);
 
 #ifdef DEBUG_DISAS
     if (qemu_loglevel_mask(CPU_LOG_TB_OUT_ASM)) {
@@ -2382,8 +2381,7 @@ int tcg_gen_code(TCGContext *s, uint8_t *gen_code_buf)
     tcg_gen_code_common(s, gen_code_buf, -1);
 
     /* flush instruction cache */
-    flush_icache_range((tcg_target_ulong)gen_code_buf,
-                       (tcg_target_ulong)s->code_ptr);
+    flush_icache_range((uintptr_t)gen_code_buf, (uintptr_t)s->code_ptr);
 
     return s->code_ptr -  gen_code_buf;
 }
diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h
index d7fc14e..c80a34f 100644
--- a/tcg/tci/tcg-target.h
+++ b/tcg/tci/tcg-target.h
@@ -169,8 +169,7 @@ void tci_disas(uint8_t opc);
 tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr);
 #define tcg_qemu_tb_exec tcg_qemu_tb_exec
 
-static inline void flush_icache_range(tcg_target_ulong start,
-                                      tcg_target_ulong stop)
+static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
 {
 }
 
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 03/18] tcg: Change tcg_qemu_tb_exec return to uintptr_t
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 01/18] qtest: Fix FMT_timeval vs time_t Richard Henderson
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 02/18] tcg: Change flush_icache_range arguments to uintptr_t Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-28 21:06   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 04/18] tcg: Fix next_tb type in cpu_exec Richard Henderson
                   ` (14 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 cpu-exec.c           | 2 +-
 tcg/ppc/tcg-target.h | 2 +-
 tcg/tcg.h            | 3 +--
 tcg/tci/tcg-target.h | 2 +-
 tci.c                | 4 ++--
 5 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/cpu-exec.c b/cpu-exec.c
index 301be28..14af2ed 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -53,7 +53,7 @@ void cpu_resume_from_signal(CPUArchState *env, void *puc)
 static inline tcg_target_ulong cpu_tb_exec(CPUState *cpu, uint8_t *tb_ptr)
 {
     CPUArchState *env = cpu->env_ptr;
-    tcg_target_ulong next_tb = tcg_qemu_tb_exec(env, tb_ptr);
+    uintptr_t next_tb = tcg_qemu_tb_exec(env, tb_ptr);
     if ((next_tb & TB_EXIT_MASK) > TB_EXIT_IDX1) {
         /* We didn't start executing this TB (eg because the instruction
          * counter hit zero); we must restore the guest PC to the address
diff --git a/tcg/ppc/tcg-target.h b/tcg/ppc/tcg-target.h
index b42d97c..6406977 100644
--- a/tcg/ppc/tcg-target.h
+++ b/tcg/ppc/tcg-target.h
@@ -100,7 +100,7 @@ typedef enum {
 #define TCG_AREG0 TCG_REG_R27
 
 #define tcg_qemu_tb_exec(env, tb_ptr) \
-    ((long __attribute__ ((longcall)) \
+    ((uintptr_t __attribute__ ((longcall)) \
       (*)(void *, void *))tcg_ctx.code_gen_prologue)(env, tb_ptr)
 
 #endif
diff --git a/tcg/tcg.h b/tcg/tcg.h
index f3f9889..bfe420a 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -731,8 +731,7 @@ TCGv_i64 tcg_const_local_i64(int64_t val);
 
 #if !defined(tcg_qemu_tb_exec)
 # define tcg_qemu_tb_exec(env, tb_ptr) \
-    ((tcg_target_ulong (*)(void *, void *))tcg_ctx.code_gen_prologue)(env, \
-                                                                      tb_ptr)
+    ((uintptr_t (*)(void *, void *))tcg_ctx.code_gen_prologue)(env, tb_ptr)
 #endif
 
 void tcg_register_jit(void *buf, size_t buf_size);
diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h
index c80a34f..18f57a2 100644
--- a/tcg/tci/tcg-target.h
+++ b/tcg/tci/tcg-target.h
@@ -166,7 +166,7 @@ typedef enum {
 
 void tci_disas(uint8_t opc);
 
-tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr);
+uintptr_t tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr);
 #define tcg_qemu_tb_exec tcg_qemu_tb_exec
 
 static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
diff --git a/tci.c b/tci.c
index c742c8d..18c888e 100644
--- a/tci.c
+++ b/tci.c
@@ -434,11 +434,11 @@ static bool tci_compare64(uint64_t u0, uint64_t u1, TCGCond condition)
 }
 
 /* Interpret pseudo code in tb. */
-tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr)
+uintptr_t tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr)
 {
     long tcg_temps[CPU_TEMP_BUF_NLONGS];
     uintptr_t sp_value = (uintptr_t)(tcg_temps + CPU_TEMP_BUF_NLONGS);
-    tcg_target_ulong next_tb = 0;
+    uintptr_t next_tb = 0;
 
     tci_reg[TCG_AREG0] = (tcg_target_ulong)env;
     tci_reg[TCG_REG_CALL_STACK] = sp_value;
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 04/18] tcg: Fix next_tb type in cpu_exec
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (2 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 03/18] tcg: Change tcg_qemu_tb_exec return " Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-28 21:07   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 05/18] tcg: Define TCG_TYPE_PTR properly Richard Henderson
                   ` (13 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 cpu-exec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cpu-exec.c b/cpu-exec.c
index 14af2ed..5a43995 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -209,7 +209,7 @@ int cpu_exec(CPUArchState *env)
     int ret, interrupt_request;
     TranslationBlock *tb;
     uint8_t *tc_ptr;
-    tcg_target_ulong next_tb;
+    uintptr_t next_tb;
 
     if (cpu->halted) {
         if (!cpu_has_work(cpu)) {
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 05/18] tcg: Define TCG_TYPE_PTR properly
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (3 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 04/18] tcg: Fix next_tb type in cpu_exec Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 10:53   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 06/18] tcg: Define TCG_ptr properly Richard Henderson
                   ` (12 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/tcg.h | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/tcg/tcg.h b/tcg/tcg.h
index bfe420a..b71dcf4 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -173,9 +173,12 @@ typedef enum TCGType {
     TCG_TYPE_REG = TCG_TYPE_I64,
 #endif
 
-    /* An alias for the size of the native pointer.  We don't currently
-       support any hosts with 64-bit registers and 32-bit pointers.  */
-    TCG_TYPE_PTR = TCG_TYPE_REG,
+    /* An alias for the size of the native pointer.  */
+#if UINTPTR_MAX == UINT32_MAX
+    TCG_TYPE_PTR = TCG_TYPE_I32,
+#else
+    TCG_TYPE_PTR = TCG_TYPE_I64,
+#endif
 
     /* An alias for the size of the target "long", aka register.  */
 #if TARGET_LONG_BITS == 64
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 06/18] tcg: Define TCG_ptr properly
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (4 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 05/18] tcg: Define TCG_TYPE_PTR properly Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 10:53   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 07/18] tcg: Change frame pointer offsets to intptr_t Richard Henderson
                   ` (11 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/tcg.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tcg/tcg.h b/tcg/tcg.h
index b71dcf4..8353ba1 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -640,11 +640,11 @@ do {\
 
 void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs);
 
-#if TCG_TARGET_REG_BITS == 32
+#if UINTPTR_MAX == UINT32_MAX
 #define TCGV_NAT_TO_PTR(n) MAKE_TCGV_PTR(GET_TCGV_I32(n))
 #define TCGV_PTR_TO_NAT(n) MAKE_TCGV_I32(GET_TCGV_PTR(n))
 
-#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i32((tcg_target_long)(V)))
+#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i32((intptr_t)(V)))
 #define tcg_global_reg_new_ptr(R, N) \
     TCGV_NAT_TO_PTR(tcg_global_reg_new_i32((R), (N)))
 #define tcg_global_mem_new_ptr(R, O, N) \
@@ -655,7 +655,7 @@ void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs);
 #define TCGV_NAT_TO_PTR(n) MAKE_TCGV_PTR(GET_TCGV_I64(n))
 #define TCGV_PTR_TO_NAT(n) MAKE_TCGV_I64(GET_TCGV_PTR(n))
 
-#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i64((tcg_target_long)(V)))
+#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i64((intptr_t)(V)))
 #define tcg_global_reg_new_ptr(R, N) \
     TCGV_NAT_TO_PTR(tcg_global_reg_new_i64((R), (N)))
 #define tcg_global_mem_new_ptr(R, O, N) \
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 07/18] tcg: Change frame pointer offsets to intptr_t
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (5 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 06/18] tcg: Define TCG_ptr properly Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 10:53   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 08/18] tcg: Change memory " Richard Henderson
                   ` (10 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/tcg.c | 5 ++---
 tcg/tcg.h | 9 ++++-----
 2 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/tcg/tcg.c b/tcg/tcg.c
index a0d0e9e..c23b23c 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -297,8 +297,7 @@ void tcg_prologue_init(TCGContext *s)
 #endif
 }
 
-void tcg_set_frame(TCGContext *s, int reg,
-                   tcg_target_long start, tcg_target_long size)
+void tcg_set_frame(TCGContext *s, int reg, intptr_t start, intptr_t size)
 {
     s->frame_start = start;
     s->frame_end = start + size;
@@ -1580,7 +1579,7 @@ static void temp_allocate_frame(TCGContext *s, int temp)
     ts->mem_offset = s->current_frame_offset;
     ts->mem_reg = s->frame_reg;
     ts->mem_allocated = 1;
-    s->current_frame_offset += (tcg_target_long)sizeof(tcg_target_long);
+    s->current_frame_offset += sizeof(tcg_target_long);
 }
 
 /* sync register 'reg' by saving it to the corresponding temporary */
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 8353ba1..6fb2126 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -430,9 +430,9 @@ struct TCGContext {
        into account fixed registers */
     int reg_to_temp[TCG_TARGET_NB_REGS];
     TCGRegSet reserved_regs;
-    tcg_target_long current_frame_offset;
-    tcg_target_long frame_start;
-    tcg_target_long frame_end;
+    intptr_t current_frame_offset;
+    intptr_t frame_start;
+    intptr_t frame_end;
     int frame_reg;
 
     uint8_t *code_ptr;
@@ -525,8 +525,7 @@ void tcg_func_start(TCGContext *s);
 int tcg_gen_code(TCGContext *s, uint8_t *gen_code_buf);
 int tcg_gen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset);
 
-void tcg_set_frame(TCGContext *s, int reg,
-                   tcg_target_long start, tcg_target_long size);
+void tcg_set_frame(TCGContext *s, int reg, intptr_t start, intptr_t size);
 
 TCGv_i32 tcg_global_reg_new_i32(int reg, const char *name);
 TCGv_i32 tcg_global_mem_new_i32(int reg, tcg_target_long offset,
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 08/18] tcg: Change memory offsets to intptr_t
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (6 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 07/18] tcg: Change frame pointer offsets to intptr_t Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 10:53   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 09/18] tcg: Change relocation " Richard Henderson
                   ` (9 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/tcg.c | 16 +++++-----------
 tcg/tcg.h |  8 +++-----
 2 files changed, 8 insertions(+), 16 deletions(-)

diff --git a/tcg/tcg.c b/tcg/tcg.c
index c23b23c..04f1727 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -380,7 +380,7 @@ TCGv_i64 tcg_global_reg_new_i64(int reg, const char *name)
 }
 
 static inline int tcg_global_mem_new_internal(TCGType type, int reg,
-                                              tcg_target_long offset,
+                                              intptr_t offset,
                                               const char *name)
 {
     TCGContext *s = &tcg_ctx;
@@ -440,21 +440,15 @@ static inline int tcg_global_mem_new_internal(TCGType type, int reg,
     return idx;
 }
 
-TCGv_i32 tcg_global_mem_new_i32(int reg, tcg_target_long offset,
-                                const char *name)
+TCGv_i32 tcg_global_mem_new_i32(int reg, intptr_t offset, const char *name)
 {
-    int idx;
-
-    idx = tcg_global_mem_new_internal(TCG_TYPE_I32, reg, offset, name);
+    int idx = tcg_global_mem_new_internal(TCG_TYPE_I32, reg, offset, name);
     return MAKE_TCGV_I32(idx);
 }
 
-TCGv_i64 tcg_global_mem_new_i64(int reg, tcg_target_long offset,
-                                const char *name)
+TCGv_i64 tcg_global_mem_new_i64(int reg, intptr_t offset, const char *name)
 {
-    int idx;
-
-    idx = tcg_global_mem_new_internal(TCG_TYPE_I64, reg, offset, name);
+    int idx = tcg_global_mem_new_internal(TCG_TYPE_I64, reg, offset, name);
     return MAKE_TCGV_I64(idx);
 }
 
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 6fb2126..5f5e535 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -383,7 +383,7 @@ typedef struct TCGTemp {
     int reg;
     tcg_target_long val;
     int mem_reg;
-    tcg_target_long mem_offset;
+    intptr_t mem_offset;
     unsigned int fixed_reg:1;
     unsigned int mem_coherent:1;
     unsigned int mem_allocated:1;
@@ -528,8 +528,7 @@ int tcg_gen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset);
 void tcg_set_frame(TCGContext *s, int reg, intptr_t start, intptr_t size);
 
 TCGv_i32 tcg_global_reg_new_i32(int reg, const char *name);
-TCGv_i32 tcg_global_mem_new_i32(int reg, tcg_target_long offset,
-                                const char *name);
+TCGv_i32 tcg_global_mem_new_i32(int reg, intptr_t offset, const char *name);
 TCGv_i32 tcg_temp_new_internal_i32(int temp_local);
 static inline TCGv_i32 tcg_temp_new_i32(void)
 {
@@ -543,8 +542,7 @@ void tcg_temp_free_i32(TCGv_i32 arg);
 char *tcg_get_arg_str_i32(TCGContext *s, char *buf, int buf_size, TCGv_i32 arg);
 
 TCGv_i64 tcg_global_reg_new_i64(int reg, const char *name);
-TCGv_i64 tcg_global_mem_new_i64(int reg, tcg_target_long offset,
-                                const char *name);
+TCGv_i64 tcg_global_mem_new_i64(int reg, intptr_t offset, const char *name);
 TCGv_i64 tcg_temp_new_internal_i64(int temp_local);
 static inline TCGv_i64 tcg_temp_new_i64(void)
 {
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 09/18] tcg: Change relocation offsets to intptr_t
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (7 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 08/18] tcg: Change memory " Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 10:53   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 10/18] tcg: Use uintptr_t in TCGHelperInfo Richard Henderson
                   ` (8 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/aarch64/tcg-target.c |  2 +-
 tcg/arm/tcg-target.c     |  8 ++++----
 tcg/hppa/tcg-target.c    |  6 +++---
 tcg/i386/tcg-target.c    |  2 +-
 tcg/ia64/tcg-target.c    | 14 +++++++-------
 tcg/mips/tcg-target.c    | 16 ++++++++--------
 tcg/ppc/tcg-target.c     |  2 +-
 tcg/ppc64/tcg-target.c   |  2 +-
 tcg/s390/tcg-target.c    |  6 +++---
 tcg/sparc/tcg-target.c   |  6 +++---
 tcg/tcg.c                |  9 +++++----
 tcg/tcg.h                |  4 ++--
 tcg/tci/tcg-target.c     |  2 +-
 13 files changed, 40 insertions(+), 39 deletions(-)

diff --git a/tcg/aarch64/tcg-target.c b/tcg/aarch64/tcg-target.c
index 41a17f8..7dde210 100644
--- a/tcg/aarch64/tcg-target.c
+++ b/tcg/aarch64/tcg-target.c
@@ -88,7 +88,7 @@ static inline void reloc_pc19(void *code_ptr, tcg_target_long target)
 }
 
 static inline void patch_reloc(uint8_t *code_ptr, int type,
-                               tcg_target_long value, tcg_target_long addend)
+                               intptr_t value, intptr_t addend)
 {
     value += addend;
 
diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c
index 6c4854d..e93c67f 100644
--- a/tcg/arm/tcg-target.c
+++ b/tcg/arm/tcg-target.c
@@ -108,21 +108,21 @@ static const int tcg_target_call_oarg_regs[2] = {
 
 #define TCG_REG_TMP  TCG_REG_R12
 
-static inline void reloc_abs32(void *code_ptr, tcg_target_long target)
+static inline void reloc_abs32(void *code_ptr, intptr_t target)
 {
     *(uint32_t *) code_ptr = target;
 }
 
-static inline void reloc_pc24(void *code_ptr, tcg_target_long target)
+static inline void reloc_pc24(void *code_ptr, intptr_t target)
 {
-    uint32_t offset = ((target - ((tcg_target_long) code_ptr + 8)) >> 2);
+    uint32_t offset = ((target - ((intptr_t)code_ptr + 8)) >> 2);
 
     *(uint32_t *) code_ptr = ((*(uint32_t *) code_ptr) & ~0xffffff)
                              | (offset & 0xffffff);
 }
 
 static void patch_reloc(uint8_t *code_ptr, int type,
-                tcg_target_long value, tcg_target_long addend)
+                        intptr_t value, intptr_t addend)
 {
     switch (type) {
     case R_ARM_ABS32:
diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
index 68f77ba..e055988 100644
--- a/tcg/hppa/tcg-target.c
+++ b/tcg/hppa/tcg-target.c
@@ -145,14 +145,14 @@ static int reassemble_21(int as21)
 #define R_PARISC_PCREL12F  R_PARISC_NONE
 
 static void patch_reloc(uint8_t *code_ptr, int type,
-                        tcg_target_long value, tcg_target_long addend)
+                        intptr_t value, intptr_t addend)
 {
     uint32_t *insn_ptr = (uint32_t *)code_ptr;
     uint32_t insn = *insn_ptr;
-    tcg_target_long pcrel;
+    intptr_t pcrel;
 
     value += addend;
-    pcrel = (value - ((tcg_target_long)code_ptr + 8)) >> 2;
+    pcrel = (value - ((intptr_t)code_ptr + 8)) >> 2;
 
     switch (type) {
     case R_PARISC_PCREL12F:
diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
index 87eeab3..63db888 100644
--- a/tcg/i386/tcg-target.c
+++ b/tcg/i386/tcg-target.c
@@ -112,7 +112,7 @@ static bool have_cmov;
 static uint8_t *tb_ret_addr;
 
 static void patch_reloc(uint8_t *code_ptr, int type,
-                        tcg_target_long value, tcg_target_long addend)
+                        intptr_t value, intptr_t addend)
 {
     value += addend;
     switch(type) {
diff --git a/tcg/ia64/tcg-target.c b/tcg/ia64/tcg-target.c
index 2373d9e..c499ee8 100644
--- a/tcg/ia64/tcg-target.c
+++ b/tcg/ia64/tcg-target.c
@@ -668,16 +668,16 @@ static inline uint64_t tcg_opc_x3(int qp, uint64_t opc, uint64_t imm)
  * Relocations
  */
 
-static inline void reloc_pcrel21b (void *pc, tcg_target_long target)
+static inline void reloc_pcrel21b(void *pc, intptr_t target)
 {
     uint64_t imm;
     int64_t disp;
     int slot;
 
-    slot = (tcg_target_long) pc & 3;
-    pc = (void *)((tcg_target_long) pc & ~3);
+    slot = (intptr_t)pc & 3;
+    pc = (void *)((intptr_t)pc & ~3);
 
-    disp = target - (tcg_target_long) pc;
+    disp = target - (intptr_t)pc;
     imm = (uint64_t) disp >> 4;
 
     switch(slot) {
@@ -728,12 +728,12 @@ static inline uint64_t get_reloc_pcrel21b (void *pc)
     }
 }
 
-static inline void reloc_pcrel60b (void *pc, tcg_target_long target)
+static inline void reloc_pcrel60b(void *pc, intptr_t target)
 {
     int64_t disp;
     uint64_t imm;
 
-    disp = target - (tcg_target_long) pc;
+    disp = target - (intptr_t)pc;
     imm = (uint64_t) disp >> 4;
 
     *(uint64_t *)(pc + 8) = (*(uint64_t *)(pc + 8) & 0xf700000fff800000ull)
@@ -759,7 +759,7 @@ static inline uint64_t get_reloc_pcrel60b (void *pc)
 
 
 static void patch_reloc(uint8_t *code_ptr, int type,
-                        tcg_target_long value, tcg_target_long addend)
+                        intptr_t value, intptr_t addend)
 {
     value += addend;
     switch (type) {
diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c
index 793532e..5aa31dc 100644
--- a/tcg/mips/tcg-target.c
+++ b/tcg/mips/tcg-target.c
@@ -108,33 +108,33 @@ static const TCGReg tcg_target_call_oarg_regs[2] = {
 
 static uint8_t *tb_ret_addr;
 
-static inline uint32_t reloc_lo16_val (void *pc, tcg_target_long target)
+static inline uint32_t reloc_lo16_val(void *pc, intptr_t target)
 {
     return target & 0xffff;
 }
 
-static inline void reloc_lo16 (void *pc, tcg_target_long target)
+static inline void reloc_lo16(void *pc, intptr_t target)
 {
     *(uint32_t *) pc = (*(uint32_t *) pc & ~0xffff)
                        | reloc_lo16_val(pc, target);
 }
 
-static inline uint32_t reloc_hi16_val (void *pc, tcg_target_long target)
+static inline uint32_t reloc_hi16_val(void *pc, intptr_t target)
 {
     return (target >> 16) & 0xffff;
 }
 
-static inline void reloc_hi16 (void *pc, tcg_target_long target)
+static inline void reloc_hi16(void *pc, intptr_t target)
 {
     *(uint32_t *) pc = (*(uint32_t *) pc & ~0xffff)
                        | reloc_hi16_val(pc, target);
 }
 
-static inline uint32_t reloc_pc16_val (void *pc, tcg_target_long target)
+static inline uint32_t reloc_pc16_val(void *pc, intptr_t target)
 {
     int32_t disp;
 
-    disp = target - (tcg_target_long) pc - 4;
+    disp = target - (intptr_t)pc - 4;
     if (disp != (disp << 14) >> 14) {
         tcg_abort ();
     }
@@ -157,14 +157,14 @@ static inline uint32_t reloc_26_val (void *pc, tcg_target_long target)
     return (target >> 2) & 0x3ffffff;
 }
 
-static inline void reloc_pc26 (void *pc, tcg_target_long target)
+static inline void reloc_pc26(void *pc, intptr_t target)
 {
     *(uint32_t *) pc = (*(uint32_t *) pc & ~0x3ffffff)
                        | reloc_26_val(pc, target);
 }
 
 static void patch_reloc(uint8_t *code_ptr, int type,
-                        tcg_target_long value, tcg_target_long addend)
+                        intptr_t value, intptr_t addend)
 {
     value += addend;
     switch(type) {
diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
index 453ab6b..4d6ee1e 100644
--- a/tcg/ppc/tcg-target.c
+++ b/tcg/ppc/tcg-target.c
@@ -204,7 +204,7 @@ static void reloc_pc14 (void *pc, tcg_target_long target)
 }
 
 static void patch_reloc(uint8_t *code_ptr, int type,
-                        tcg_target_long value, tcg_target_long addend)
+                        intptr_t value, intptr_t addend)
 {
     value += addend;
     switch (type) {
diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c
index 0678de2..fb070f8 100644
--- a/tcg/ppc64/tcg-target.c
+++ b/tcg/ppc64/tcg-target.c
@@ -208,7 +208,7 @@ static void reloc_pc14 (void *pc, tcg_target_long target)
 }
 
 static void patch_reloc (uint8_t *code_ptr, int type,
-                         tcg_target_long value, tcg_target_long addend)
+                         intptr_t value, intptr_t addend)
 {
     value += addend;
     switch (type) {
diff --git a/tcg/s390/tcg-target.c b/tcg/s390/tcg-target.c
index f229f1c..adf7099 100644
--- a/tcg/s390/tcg-target.c
+++ b/tcg/s390/tcg-target.c
@@ -351,10 +351,10 @@ static uint8_t *tb_ret_addr;
 static uint64_t facilities;
 
 static void patch_reloc(uint8_t *code_ptr, int type,
-                        tcg_target_long value, tcg_target_long addend)
+                        intptr_t value, intptr_t addend)
 {
-    tcg_target_long code_ptr_tl = (tcg_target_long)code_ptr;
-    tcg_target_long pcrel2;
+    intptr_t code_ptr_tl = (intptr_t)code_ptr;
+    intptr_t pcrel2;
 
     /* ??? Not the usual definition of "addend".  */
     pcrel2 = (value - (code_ptr_tl + addend)) >> 1;
diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c
index 5bfd29c..9f2e2c9 100644
--- a/tcg/sparc/tcg-target.c
+++ b/tcg/sparc/tcg-target.c
@@ -252,7 +252,7 @@ static inline int check_fit_i32(uint32_t val, unsigned int bits)
 }
 
 static void patch_reloc(uint8_t *code_ptr, int type,
-                        tcg_target_long value, tcg_target_long addend)
+                        intptr_t value, intptr_t addend)
 {
     uint32_t insn;
     value += addend;
@@ -264,7 +264,7 @@ static void patch_reloc(uint8_t *code_ptr, int type,
         *(uint32_t *)code_ptr = value;
         break;
     case R_SPARC_WDISP16:
-        value -= (long)code_ptr;
+        value -= (intptr_t)code_ptr;
         if (!check_fit_tl(value >> 2, 16)) {
             tcg_abort();
         }
@@ -274,7 +274,7 @@ static void patch_reloc(uint8_t *code_ptr, int type,
         *(uint32_t *)code_ptr = insn;
         break;
     case R_SPARC_WDISP19:
-        value -= (long)code_ptr;
+        value -= (intptr_t)code_ptr;
         if (!check_fit_tl(value >> 2, 19)) {
             tcg_abort();
         }
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 04f1727..c6ab07f 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -66,7 +66,7 @@
 static void tcg_target_init(TCGContext *s);
 static void tcg_target_qemu_prologue(TCGContext *s);
 static void patch_reloc(uint8_t *code_ptr, int type, 
-                        tcg_target_long value, tcg_target_long addend);
+                        intptr_t value, intptr_t addend);
 
 /* The CIE and FDE header definitions will be common to all hosts.  */
 typedef struct {
@@ -134,7 +134,7 @@ static inline void tcg_out32(TCGContext *s, uint32_t v)
 /* label relocation processing */
 
 static void tcg_out_reloc(TCGContext *s, uint8_t *code_ptr, int type,
-                          int label_index, long addend)
+                          int label_index, intptr_t addend)
 {
     TCGLabel *l;
     TCGRelocation *r;
@@ -160,11 +160,12 @@ static void tcg_out_label(TCGContext *s, int label_index, void *ptr)
 {
     TCGLabel *l;
     TCGRelocation *r;
-    tcg_target_long value = (tcg_target_long)ptr;
+    intptr_t value = (intptr_t)ptr;
 
     l = &s->labels[label_index];
-    if (l->has_value)
+    if (l->has_value) {
         tcg_abort();
+    }
     r = l->u.first_reloc;
     while (r != NULL) {
         patch_reloc(r->ptr, r->type, value, r->addend);
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 5f5e535..2375dc4 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -134,13 +134,13 @@ typedef struct TCGRelocation {
     struct TCGRelocation *next;
     int type;
     uint8_t *ptr;
-    tcg_target_long addend;
+    intptr_t addend;
 } TCGRelocation; 
 
 typedef struct TCGLabel {
     int has_value;
     union {
-        tcg_target_ulong value;
+        uintptr_t value;
         TCGRelocation *first_reloc;
     } u;
 } TCGLabel;
diff --git a/tcg/tci/tcg-target.c b/tcg/tci/tcg-target.c
index e118bc7..49be6a5 100644
--- a/tcg/tci/tcg-target.c
+++ b/tcg/tci/tcg-target.c
@@ -370,7 +370,7 @@ static const char *const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
 #endif
 
 static void patch_reloc(uint8_t *code_ptr, int type,
-                        tcg_target_long value, tcg_target_long addend)
+                        intptr_t value, intptr_t addend)
 {
     /* tcg_out_reloc always uses the same type, addend. */
     assert(type == sizeof(tcg_target_long));
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 10/18] tcg: Use uintptr_t in TCGHelperInfo
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (8 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 09/18] tcg: Change relocation " Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 10:53   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 11/18] tcg: Change tcg_gen_exit_tb argument to uintptr_t Richard Henderson
                   ` (7 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/tcg.c | 6 +++---
 tcg/tcg.h | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tcg/tcg.c b/tcg/tcg.c
index c6ab07f..c80aa3c 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -625,7 +625,7 @@ void tcg_register_helper(void *func, const char *name)
         s->helpers = realloc(s->helpers, n * sizeof(TCGHelperInfo));
         s->allocated_helpers = n;
     }
-    s->helpers[s->nb_helpers].func = (tcg_target_ulong)func;
+    s->helpers[s->nb_helpers].func = (uintptr_t)func;
     s->helpers[s->nb_helpers].name = name;
     s->nb_helpers++;
 }
@@ -855,11 +855,11 @@ static int helper_cmp(const void *p1, const void *p2)
 }
 
 /* find helper definition (Note: A hash table would be better) */
-static TCGHelperInfo *tcg_find_helper(TCGContext *s, tcg_target_ulong val)
+static TCGHelperInfo *tcg_find_helper(TCGContext *s, uintptr_t val)
 {
     int m, m_min, m_max;
     TCGHelperInfo *th;
-    tcg_target_ulong v;
+    uintptr_t v;
 
     if (unlikely(!s->helpers_sorted)) {
         qsort(s->helpers, s->nb_helpers, sizeof(TCGHelperInfo), 
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 2375dc4..6e2d619 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -397,7 +397,7 @@ typedef struct TCGTemp {
 } TCGTemp;
 
 typedef struct TCGHelperInfo {
-    tcg_target_ulong func;
+    uintptr_t func;
     const char *name;
 } TCGHelperInfo;
 
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 11/18] tcg: Change tcg_gen_exit_tb argument to uintptr_t
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (9 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 10/18] tcg: Use uintptr_t in TCGHelperInfo Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 10:54   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 12/18] tcg: Change tcg_out_ld/st offset to intptr_t Richard Henderson
                   ` (6 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

And update all users.

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 include/exec/gen-icount.h     | 4 ++--
 target-alpha/translate.c      | 8 ++++----
 target-arm/translate.c        | 2 +-
 target-cris/translate.c       | 2 +-
 target-i386/translate.c       | 2 +-
 target-lm32/translate.c       | 2 +-
 target-m68k/translate.c       | 2 +-
 target-microblaze/translate.c | 2 +-
 target-mips/translate.c       | 2 +-
 target-moxie/translate.c      | 2 +-
 target-openrisc/translate.c   | 2 +-
 target-ppc/translate.c        | 2 +-
 target-s390x/translate.c      | 8 ++++----
 target-sh4/translate.c        | 2 +-
 target-sparc/translate.c      | 2 +-
 target-unicore32/translate.c  | 2 +-
 target-xtensa/translate.c     | 2 +-
 tcg/tcg-op.h                  | 2 +-
 18 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/include/exec/gen-icount.h b/include/exec/gen-icount.h
index 4fc7b29..39a6b61 100644
--- a/include/exec/gen-icount.h
+++ b/include/exec/gen-icount.h
@@ -39,12 +39,12 @@ static inline void gen_tb_start(void)
 static void gen_tb_end(TranslationBlock *tb, int num_insns)
 {
     gen_set_label(exitreq_label);
-    tcg_gen_exit_tb((tcg_target_long)tb + TB_EXIT_REQUESTED);
+    tcg_gen_exit_tb((uintptr_t)tb + TB_EXIT_REQUESTED);
 
     if (use_icount) {
         *icount_arg = num_insns;
         gen_set_label(icount_label);
-        tcg_gen_exit_tb((tcg_target_long)tb + TB_EXIT_ICOUNT_EXPIRED);
+        tcg_gen_exit_tb((uintptr_t)tb + TB_EXIT_ICOUNT_EXPIRED);
     }
 }
 
diff --git a/target-alpha/translate.c b/target-alpha/translate.c
index 309dea6..28ce436 100644
--- a/target-alpha/translate.c
+++ b/target-alpha/translate.c
@@ -415,7 +415,7 @@ static ExitStatus gen_bdirect(DisasContext *ctx, int ra, int32_t disp)
     } else if (use_goto_tb(ctx, dest)) {
         tcg_gen_goto_tb(0);
         tcg_gen_movi_i64(cpu_pc, dest);
-        tcg_gen_exit_tb((tcg_target_long)ctx->tb);
+        tcg_gen_exit_tb((uintptr_t)ctx->tb);
         return EXIT_GOTO_TB;
     } else {
         tcg_gen_movi_i64(cpu_pc, dest);
@@ -434,12 +434,12 @@ static ExitStatus gen_bcond_internal(DisasContext *ctx, TCGCond cond,
 
         tcg_gen_goto_tb(0);
         tcg_gen_movi_i64(cpu_pc, ctx->pc);
-        tcg_gen_exit_tb((tcg_target_long)ctx->tb);
+        tcg_gen_exit_tb((uintptr_t)ctx->tb);
 
         gen_set_label(lab_true);
         tcg_gen_goto_tb(1);
         tcg_gen_movi_i64(cpu_pc, dest);
-        tcg_gen_exit_tb((tcg_target_long)ctx->tb + 1);
+        tcg_gen_exit_tb((uintptr_t)ctx->tb + 1);
 
         return EXIT_GOTO_TB;
     } else {
@@ -1629,7 +1629,7 @@ static ExitStatus gen_call_pal(DisasContext *ctx, int palcode)
            we change the PAL base register.  */
         if (!ctx->singlestep_enabled && !(ctx->tb->cflags & CF_LAST_IO)) {
             tcg_gen_goto_tb(0);
-            tcg_gen_exit_tb((tcg_target_long)ctx->tb);
+            tcg_gen_exit_tb((uintptr_t)ctx->tb);
             return EXIT_GOTO_TB;
         }
 
diff --git a/target-arm/translate.c b/target-arm/translate.c
index d1e8538..9160ced 100644
--- a/target-arm/translate.c
+++ b/target-arm/translate.c
@@ -3356,7 +3356,7 @@ static inline void gen_goto_tb(DisasContext *s, int n, uint32_t dest)
     if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) {
         tcg_gen_goto_tb(n);
         gen_set_pc_im(dest);
-        tcg_gen_exit_tb((tcg_target_long)tb + n);
+        tcg_gen_exit_tb((uintptr_t)tb + n);
     } else {
         gen_set_pc_im(dest);
         tcg_gen_exit_tb(0);
diff --git a/target-cris/translate.c b/target-cris/translate.c
index 2a4beeb..617e1b4 100644
--- a/target-cris/translate.c
+++ b/target-cris/translate.c
@@ -558,7 +558,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest)
     if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) {
         tcg_gen_goto_tb(n);
         tcg_gen_movi_tl(env_pc, dest);
-                tcg_gen_exit_tb((tcg_target_long)tb + n);
+                tcg_gen_exit_tb((uintptr_t)tb + n);
     } else {
         tcg_gen_movi_tl(env_pc, dest);
         tcg_gen_exit_tb(0);
diff --git a/target-i386/translate.c b/target-i386/translate.c
index 065a9d3..6d87900 100644
--- a/target-i386/translate.c
+++ b/target-i386/translate.c
@@ -2413,7 +2413,7 @@ static inline void gen_goto_tb(DisasContext *s, int tb_num, target_ulong eip)
         /* jump to same page: we can use a direct jump */
         tcg_gen_goto_tb(tb_num);
         gen_jmp_im(eip);
-        tcg_gen_exit_tb((tcg_target_long)tb + tb_num);
+        tcg_gen_exit_tb((uintptr_t)tb + tb_num);
     } else {
         /* jump to another page: currently not optimized */
         gen_jmp_im(eip);
diff --git a/target-lm32/translate.c b/target-lm32/translate.c
index 1247287..6ea0ecd 100644
--- a/target-lm32/translate.c
+++ b/target-lm32/translate.c
@@ -129,7 +129,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest)
             likely(!dc->singlestep_enabled)) {
         tcg_gen_goto_tb(n);
         tcg_gen_movi_tl(cpu_pc, dest);
-        tcg_gen_exit_tb((tcg_target_long)tb + n);
+        tcg_gen_exit_tb((uintptr_t)tb + n);
     } else {
         tcg_gen_movi_tl(cpu_pc, dest);
         if (dc->singlestep_enabled) {
diff --git a/target-m68k/translate.c b/target-m68k/translate.c
index d562eeb..0be0a96 100644
--- a/target-m68k/translate.c
+++ b/target-m68k/translate.c
@@ -869,7 +869,7 @@ static void gen_jmp_tb(DisasContext *s, int n, uint32_t dest)
                (s->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) {
         tcg_gen_goto_tb(n);
         tcg_gen_movi_i32(QREG_PC, dest);
-        tcg_gen_exit_tb((tcg_target_long)tb + n);
+        tcg_gen_exit_tb((uintptr_t)tb + n);
     } else {
         gen_jmp_im(s, dest);
         tcg_gen_exit_tb(0);
diff --git a/target-microblaze/translate.c b/target-microblaze/translate.c
index cd43577..0673176 100644
--- a/target-microblaze/translate.c
+++ b/target-microblaze/translate.c
@@ -138,7 +138,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest)
     if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) {
         tcg_gen_goto_tb(n);
         tcg_gen_movi_tl(cpu_SR[SR_PC], dest);
-        tcg_gen_exit_tb((tcg_target_long)tb + n);
+        tcg_gen_exit_tb((uintptr_t)tb + n);
     } else {
         tcg_gen_movi_tl(cpu_SR[SR_PC], dest);
         tcg_gen_exit_tb(0);
diff --git a/target-mips/translate.c b/target-mips/translate.c
index e2eb908..ad43d59 100644
--- a/target-mips/translate.c
+++ b/target-mips/translate.c
@@ -3581,7 +3581,7 @@ static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
         likely(!ctx->singlestep_enabled)) {
         tcg_gen_goto_tb(n);
         gen_save_pc(dest);
-        tcg_gen_exit_tb((tcg_target_long)tb + n);
+        tcg_gen_exit_tb((uintptr_t)tb + n);
     } else {
         gen_save_pc(dest);
         if (ctx->singlestep_enabled) {
diff --git a/target-moxie/translate.c b/target-moxie/translate.c
index 8cc0bb7..a93196f 100644
--- a/target-moxie/translate.c
+++ b/target-moxie/translate.c
@@ -135,7 +135,7 @@ static inline void gen_goto_tb(CPUMoxieState *env, DisasContext *ctx,
         !ctx->singlestep_enabled) {
         tcg_gen_goto_tb(n);
         tcg_gen_movi_i32(cpu_pc, dest);
-        tcg_gen_exit_tb((tcg_target_long)tb + n);
+        tcg_gen_exit_tb((uintptr_t)tb + n);
     } else {
         tcg_gen_movi_i32(cpu_pc, dest);
         if (ctx->singlestep_enabled) {
diff --git a/target-openrisc/translate.c b/target-openrisc/translate.c
index a6050ba..723b77d 100644
--- a/target-openrisc/translate.c
+++ b/target-openrisc/translate.c
@@ -198,7 +198,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest)
                                        likely(!dc->singlestep_enabled)) {
         tcg_gen_movi_tl(cpu_pc, dest);
         tcg_gen_goto_tb(n);
-        tcg_gen_exit_tb((tcg_target_long)tb + n);
+        tcg_gen_exit_tb((uintptr_t)tb + n);
     } else {
         tcg_gen_movi_tl(cpu_pc, dest);
         if (dc->singlestep_enabled) {
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index f07d70d..2ffb270 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -3551,7 +3551,7 @@ static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
         likely(!ctx->singlestep_enabled)) {
         tcg_gen_goto_tb(n);
         tcg_gen_movi_tl(cpu_nip, dest & ~3);
-        tcg_gen_exit_tb((tcg_target_long)tb + n);
+        tcg_gen_exit_tb((uintptr_t)tb + n);
     } else {
         tcg_gen_movi_tl(cpu_nip, dest & ~3);
         if (unlikely(ctx->singlestep_enabled)) {
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 1fb76c5..afe90eb 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -1169,7 +1169,7 @@ static ExitStatus help_goto_direct(DisasContext *s, uint64_t dest)
         update_cc_op(s);
         tcg_gen_goto_tb(0);
         tcg_gen_movi_i64(psw_addr, dest);
-        tcg_gen_exit_tb((tcg_target_long)s->tb);
+        tcg_gen_exit_tb((uintptr_t)s->tb);
         return EXIT_GOTO_TB;
     } else {
         tcg_gen_movi_i64(psw_addr, dest);
@@ -1227,13 +1227,13 @@ static ExitStatus help_branch(DisasContext *s, DisasCompare *c,
             /* Branch not taken.  */
             tcg_gen_goto_tb(0);
             tcg_gen_movi_i64(psw_addr, s->next_pc);
-            tcg_gen_exit_tb((tcg_target_long)s->tb + 0);
+            tcg_gen_exit_tb((uintptr_t)s->tb + 0);
 
             /* Branch taken.  */
             gen_set_label(lab);
             tcg_gen_goto_tb(1);
             tcg_gen_movi_i64(psw_addr, dest);
-            tcg_gen_exit_tb((tcg_target_long)s->tb + 1);
+            tcg_gen_exit_tb((uintptr_t)s->tb + 1);
 
             ret = EXIT_GOTO_TB;
         } else {
@@ -1256,7 +1256,7 @@ static ExitStatus help_branch(DisasContext *s, DisasCompare *c,
             update_cc_op(s);
             tcg_gen_goto_tb(0);
             tcg_gen_movi_i64(psw_addr, s->next_pc);
-            tcg_gen_exit_tb((tcg_target_long)s->tb + 0);
+            tcg_gen_exit_tb((uintptr_t)s->tb + 0);
 
             gen_set_label(lab);
             if (is_imm) {
diff --git a/target-sh4/translate.c b/target-sh4/translate.c
index 59f3d47..c06b29f 100644
--- a/target-sh4/translate.c
+++ b/target-sh4/translate.c
@@ -186,7 +186,7 @@ static void gen_goto_tb(DisasContext * ctx, int n, target_ulong dest)
 	/* Use a direct jump if in same page and singlestep not enabled */
         tcg_gen_goto_tb(n);
         tcg_gen_movi_i32(cpu_pc, dest);
-        tcg_gen_exit_tb((tcg_target_long)tb + n);
+        tcg_gen_exit_tb((uintptr_t)tb + n);
     } else {
         tcg_gen_movi_i32(cpu_pc, dest);
         if (ctx->singlestep_enabled)
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index 093e0e2..36615f1 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -322,7 +322,7 @@ static inline void gen_goto_tb(DisasContext *s, int tb_num,
         tcg_gen_goto_tb(tb_num);
         tcg_gen_movi_tl(cpu_pc, pc);
         tcg_gen_movi_tl(cpu_npc, npc);
-        tcg_gen_exit_tb((tcg_target_long)tb + tb_num);
+        tcg_gen_exit_tb((uintptr_t)tb + tb_num);
     } else {
         /* jump to another page: currently not optimized */
         tcg_gen_movi_tl(cpu_pc, pc);
diff --git a/target-unicore32/translate.c b/target-unicore32/translate.c
index 68be1c6..1246895 100644
--- a/target-unicore32/translate.c
+++ b/target-unicore32/translate.c
@@ -1100,7 +1100,7 @@ static inline void gen_goto_tb(DisasContext *s, int n, uint32_t dest)
     if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) {
         tcg_gen_goto_tb(n);
         gen_set_pc_im(dest);
-        tcg_gen_exit_tb((tcg_target_long)tb + n);
+        tcg_gen_exit_tb((uintptr_t)tb + n);
     } else {
         gen_set_pc_im(dest);
         tcg_gen_exit_tb(0);
diff --git a/target-xtensa/translate.c b/target-xtensa/translate.c
index 504cc53..24343bd 100644
--- a/target-xtensa/translate.c
+++ b/target-xtensa/translate.c
@@ -400,7 +400,7 @@ static void gen_jump_slot(DisasContext *dc, TCGv dest, int slot)
     } else {
         if (slot >= 0) {
             tcg_gen_goto_tb(slot);
-            tcg_gen_exit_tb((tcg_target_long)dc->tb + slot);
+            tcg_gen_exit_tb((uintptr_t)dc->tb + slot);
         } else {
             tcg_gen_exit_tb(0);
         }
diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
index 364964d..32a5deb 100644
--- a/tcg/tcg-op.h
+++ b/tcg/tcg-op.h
@@ -2599,7 +2599,7 @@ static inline void tcg_gen_debug_insn_start(uint64_t pc)
 #endif
 }
 
-static inline void tcg_gen_exit_tb(tcg_target_long val)
+static inline void tcg_gen_exit_tb(uintptr_t val)
 {
     tcg_gen_op1i(INDEX_op_exit_tb, val);
 }
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 12/18] tcg: Change tcg_out_ld/st offset to intptr_t
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (10 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 11/18] tcg: Change tcg_gen_exit_tb argument to uintptr_t Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 16:44   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 13/18] tcg: Use appropriate types in tcg_reg_alloc_call Richard Henderson
                   ` (5 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/aarch64/tcg-target.c | 4 ++--
 tcg/arm/tcg-target.c     | 4 ++--
 tcg/hppa/tcg-target.c    | 4 ++--
 tcg/i386/tcg-target.c    | 4 ++--
 tcg/ia64/tcg-target.c    | 4 ++--
 tcg/mips/tcg-target.c    | 4 ++--
 tcg/ppc/tcg-target.c     | 8 ++++----
 tcg/ppc64/tcg-target.c   | 8 ++++----
 tcg/s390/tcg-target.c    | 4 ++--
 tcg/sparc/tcg-target.c   | 4 ++--
 tcg/tcg.c                | 4 ++--
 tcg/tci/tcg-target.c     | 4 ++--
 12 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/tcg/aarch64/tcg-target.c b/tcg/aarch64/tcg-target.c
index 7dde210..c472a4a 100644
--- a/tcg/aarch64/tcg-target.c
+++ b/tcg/aarch64/tcg-target.c
@@ -423,14 +423,14 @@ static inline void tcg_out_mov(TCGContext *s,
 }
 
 static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     tcg_out_ldst(s, (type == TCG_TYPE_I64) ? LDST_64 : LDST_32, LDST_LD,
                  arg, arg1, arg2);
 }
 
 static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     tcg_out_ldst(s, (type == TCG_TYPE_I64) ? LDST_64 : LDST_32, LDST_ST,
                  arg, arg1, arg2);
diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c
index e93c67f..5d2db36 100644
--- a/tcg/arm/tcg-target.c
+++ b/tcg/arm/tcg-target.c
@@ -2065,13 +2065,13 @@ static void tcg_target_init(TCGContext *s)
 }
 
 static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     tcg_out_ld32u(s, COND_AL, arg, arg1, arg2);
 }
 
 static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     tcg_out_st32(s, COND_AL, arg, arg1, arg2);
 }
diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
index e055988..f464aff 100644
--- a/tcg/hppa/tcg-target.c
+++ b/tcg/hppa/tcg-target.c
@@ -388,14 +388,14 @@ static void tcg_out_ldst(TCGContext *s, int ret, int addr,
 
 /* This function is required by tcg.c.  */
 static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     tcg_out_ldst(s, ret, arg1, arg2, INSN_LDW);
 }
 
 /* This function is required by tcg.c.  */
 static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg ret,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     tcg_out_ldst(s, ret, arg1, arg2, INSN_STW);
 }
diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
index 63db888..b1e4e5b 100644
--- a/tcg/i386/tcg-target.c
+++ b/tcg/i386/tcg-target.c
@@ -581,14 +581,14 @@ static inline void tcg_out_pop(TCGContext *s, int reg)
 }
 
 static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     int opc = OPC_MOVL_GvEv + (type == TCG_TYPE_I64 ? P_REXW : 0);
     tcg_out_modrm_offset(s, opc, ret, arg1, arg2);
 }
 
 static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     int opc = OPC_MOVL_EvGv + (type == TCG_TYPE_I64 ? P_REXW : 0);
     tcg_out_modrm_offset(s, opc, arg, arg1, arg2);
diff --git a/tcg/ia64/tcg-target.c b/tcg/ia64/tcg-target.c
index c499ee8..0a3ff70 100644
--- a/tcg/ia64/tcg-target.c
+++ b/tcg/ia64/tcg-target.c
@@ -993,7 +993,7 @@ static inline void tcg_out_st_rel(TCGContext *s, uint64_t opc_m4, TCGArg arg,
 }
 
 static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     if (type == TCG_TYPE_I32) {
         tcg_out_ld_rel(s, OPC_LD4_M1, arg, arg1, arg2);
@@ -1003,7 +1003,7 @@ static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg,
 }
 
 static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     if (type == TCG_TYPE_I32) {
         tcg_out_st_rel(s, OPC_ST4_M4, arg, arg1, arg2);
diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c
index 5aa31dc..acf6957 100644
--- a/tcg/mips/tcg-target.c
+++ b/tcg/mips/tcg-target.c
@@ -514,13 +514,13 @@ static inline void tcg_out_ldst(TCGContext *s, int opc, TCGArg arg,
 }
 
 static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     tcg_out_ldst(s, OPC_LW, arg, arg1, arg2);
 }
 
 static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     tcg_out_ldst(s, OPC_SW, arg, arg1, arg2);
 }
diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
index 4d6ee1e..f45ce7c 100644
--- a/tcg/ppc/tcg-target.c
+++ b/tcg/ppc/tcg-target.c
@@ -1062,14 +1062,14 @@ static void tcg_target_qemu_prologue (TCGContext *s)
 #endif
 }
 
-static void tcg_out_ld (TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
-                        tcg_target_long arg2)
+static void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
+                       intptr_t arg2)
 {
     tcg_out_ldst (s, ret, arg1, arg2, LWZ, LWZX);
 }
 
-static void tcg_out_st (TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
-                        tcg_target_long arg2)
+static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
+                       intptr_t arg2)
 {
     tcg_out_ldst (s, arg, arg1, arg2, STW, STWX);
 }
diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c
index fb070f8..e0353d0 100644
--- a/tcg/ppc64/tcg-target.c
+++ b/tcg/ppc64/tcg-target.c
@@ -1072,8 +1072,8 @@ static void tcg_target_qemu_prologue (TCGContext *s)
     tcg_out32(s, BCLR | BO_ALWAYS);
 }
 
-static void tcg_out_ld (TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
-                        tcg_target_long arg2)
+static void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
+                       intptr_t arg2)
 {
     if (type == TCG_TYPE_I32)
         tcg_out_ldst (s, ret, arg1, arg2, LWZ, LWZX);
@@ -1081,8 +1081,8 @@ static void tcg_out_ld (TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
         tcg_out_ldsta (s, ret, arg1, arg2, LD, LDX);
 }
 
-static void tcg_out_st (TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
-                        tcg_target_long arg2)
+static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
+                       intptr_t arg2)
 {
     if (type == TCG_TYPE_I32)
         tcg_out_ldst (s, arg, arg1, arg2, STW, STWX);
diff --git a/tcg/s390/tcg-target.c b/tcg/s390/tcg-target.c
index adf7099..a1dcb3d 100644
--- a/tcg/s390/tcg-target.c
+++ b/tcg/s390/tcg-target.c
@@ -771,7 +771,7 @@ static void tcg_out_mem(TCGContext *s, S390Opcode opc_rx, S390Opcode opc_rxy,
 
 /* load data without address translation or endianness conversion */
 static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg data,
-                              TCGReg base, tcg_target_long ofs)
+                              TCGReg base, intptr_t ofs)
 {
     if (type == TCG_TYPE_I32) {
         tcg_out_mem(s, RX_L, RXY_LY, data, base, TCG_REG_NONE, ofs);
@@ -781,7 +781,7 @@ static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg data,
 }
 
 static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg data,
-                              TCGReg base, tcg_target_long ofs)
+                              TCGReg base, intptr_t ofs)
 {
     if (type == TCG_TYPE_I32) {
         tcg_out_mem(s, RX_ST, RXY_STY, data, base, TCG_REG_NONE, ofs);
diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c
index 9f2e2c9..5eb8c76 100644
--- a/tcg/sparc/tcg-target.c
+++ b/tcg/sparc/tcg-target.c
@@ -436,13 +436,13 @@ static inline void tcg_out_ldst(TCGContext *s, int ret, int addr,
 }
 
 static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     tcg_out_ldst(s, ret, arg1, arg2, (type == TCG_TYPE_I32 ? LDUW : LDX));
 }
 
 static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
-                              TCGReg arg1, tcg_target_long arg2)
+                              TCGReg arg1, intptr_t arg2)
 {
     tcg_out_ldst(s, arg, arg1, arg2, (type == TCG_TYPE_I32 ? STW : STX));
 }
diff --git a/tcg/tcg.c b/tcg/tcg.c
index c80aa3c..1d7cdaf 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -93,14 +93,14 @@ static void tcg_register_jit_int(void *buf, size_t size,
 /* Forward declarations for functions declared and used in tcg-target.c. */
 static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str);
 static void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
-                       tcg_target_long arg2);
+                       intptr_t arg2);
 static void tcg_out_mov(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg);
 static void tcg_out_movi(TCGContext *s, TCGType type,
                          TCGReg ret, tcg_target_long arg);
 static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
                        const int *const_args);
 static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
-                       tcg_target_long arg2);
+                       intptr_t arg2);
 static int tcg_target_const_match(tcg_target_long val,
                                   const TCGArgConstraint *arg_ct);
 
diff --git a/tcg/tci/tcg-target.c b/tcg/tci/tcg-target.c
index 49be6a5..281d7d5 100644
--- a/tcg/tci/tcg-target.c
+++ b/tcg/tci/tcg-target.c
@@ -488,7 +488,7 @@ static void tci_out_label(TCGContext *s, TCGArg arg)
 }
 
 static void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
-                       tcg_target_long arg2)
+                       intptr_t arg2)
 {
     uint8_t *old_code_ptr = s->code_ptr;
     if (type == TCG_TYPE_I32) {
@@ -842,7 +842,7 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
 }
 
 static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
-                       tcg_target_long arg2)
+                       intptr_t arg2)
 {
     uint8_t *old_code_ptr = s->code_ptr;
     if (type == TCG_TYPE_I32) {
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 13/18] tcg: Use appropriate types in tcg_reg_alloc_call
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (11 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 12/18] tcg: Change tcg_out_ld/st offset to intptr_t Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 16:44   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 14/18] tcg: Fix jit debug for pointer size != register size Richard Henderson
                   ` (4 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/tcg.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tcg/tcg.c b/tcg/tcg.c
index 1d7cdaf..72c064c 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -2037,7 +2037,9 @@ static int tcg_reg_alloc_call(TCGContext *s, const TCGOpDef *def,
     int nb_iargs, nb_oargs, flags, nb_regs, i, reg, nb_params;
     TCGArg arg, func_arg;
     TCGTemp *ts;
-    tcg_target_long stack_offset, call_stack_size, func_addr;
+    intptr_t stack_offset;
+    size_t call_stack_size;
+    uintptr_t func_addr;
     int const_func_arg, allocate_args;
     TCGRegSet allocated_regs;
     const TCGArgConstraint *arg_ct;
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 14/18] tcg: Fix jit debug for pointer size != register size
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (12 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 13/18] tcg: Use appropriate types in tcg_reg_alloc_call Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 16:44   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 15/18] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly Richard Henderson
                   ` (3 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/tcg.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/tcg/tcg.c b/tcg/tcg.c
index 72c064c..3c89e3b 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -49,10 +49,10 @@
 
 #include "tcg-op.h"
 
-#if TCG_TARGET_REG_BITS == 64
-# define ELF_CLASS  ELFCLASS64
-#else
+#if UINTPTR_MAX == UINT32_MAX
 # define ELF_CLASS  ELFCLASS32
+#else
+# define ELF_CLASS  ELFCLASS64
 #endif
 #ifdef HOST_WORDS_BIGENDIAN
 # define ELF_DATA   ELFDATA2MSB
@@ -82,8 +82,8 @@ typedef struct {
 typedef struct QEMU_PACKED {
     uint32_t len __attribute__((aligned((sizeof(void *)))));
     uint32_t cie_offset;
-    tcg_target_long func_start;
-    tcg_target_long func_len;
+    uintptr_t func_start;
+    uintptr_t func_len;
 } DebugFrameFDEHeader;
 
 static void tcg_register_jit_int(void *buf, size_t size,
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 15/18] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (13 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 14/18] tcg: Fix jit debug for pointer size != register size Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 16:45   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 16/18] tcg-i386: Use intptr_t appropriately Richard Henderson
                   ` (2 subsequent siblings)
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

There are several hosts for which it would be useful to use the
available 64-bit registers in a 32-bit pointer environment.

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/hppa/tcg-target.c  |  4 ++++
 tcg/hppa/tcg-target.h  |  4 ----
 tcg/i386/tcg-target.h  | 10 ++++++----
 tcg/sparc/tcg-target.h |  8 ++++++++
 tcg/tcg.h              | 19 +++++++++++--------
 tcg/tci/tcg-target.h   |  8 ++++++++
 6 files changed, 37 insertions(+), 16 deletions(-)

diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
index f464aff..0150e62 100644
--- a/tcg/hppa/tcg-target.c
+++ b/tcg/hppa/tcg-target.c
@@ -22,6 +22,10 @@
  * THE SOFTWARE.
  */
 
+#if TCG_TARGET_REG_BITS != 32
+#error unsupported
+#endif
+
 #ifndef NDEBUG
 static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
     "%r0", "%r1", "%rp", "%r3", "%r4", "%r5", "%r6", "%r7",
diff --git a/tcg/hppa/tcg-target.h b/tcg/hppa/tcg-target.h
index a9257a5..302cf4e 100644
--- a/tcg/hppa/tcg-target.h
+++ b/tcg/hppa/tcg-target.h
@@ -25,10 +25,6 @@
 #ifndef TCG_TARGET_HPPA
 #define TCG_TARGET_HPPA 1
 
-#if TCG_TARGET_REG_BITS != 32
-#error unsupported
-#endif
-
 #define TCG_TARGET_WORDS_BIGENDIAN
 
 #define TCG_TARGET_NB_REGS 32
diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
index 963e839..53914f1 100644
--- a/tcg/i386/tcg-target.h
+++ b/tcg/i386/tcg-target.h
@@ -24,12 +24,14 @@
 #ifndef TCG_TARGET_I386 
 #define TCG_TARGET_I386 1
 
-//#define TCG_TARGET_WORDS_BIGENDIAN
+#undef TCG_TARGET_WORDS_BIGENDIAN
 
-#if TCG_TARGET_REG_BITS == 64
-# define TCG_TARGET_NB_REGS 16
+#ifdef __x86_64__
+# define TCG_TARGET_REG_BITS  64
+# define TCG_TARGET_NB_REGS   16
 #else
-# define TCG_TARGET_NB_REGS 8
+# define TCG_TARGET_REG_BITS  32
+# define TCG_TARGET_NB_REGS    8
 #endif
 
 typedef enum {
diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h
index d1ca2d6..d356c1b 100644
--- a/tcg/sparc/tcg-target.h
+++ b/tcg/sparc/tcg-target.h
@@ -24,6 +24,14 @@
 #ifndef TCG_TARGET_SPARC 
 #define TCG_TARGET_SPARC 1
 
+#if UINTPTR_MAX == UINT32_MAX
+# define TCG_TARGET_REG_BITS 32
+#elif UINTPTR_MAX == UINT64_MAX
+# define TCG_TARGET_REG_BITS 64
+#else
+# error Unknown pointer size for tcg target
+#endif
+
 #define TCG_TARGET_WORDS_BIGENDIAN
 
 #define TCG_TARGET_NB_REGS 32
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 6e2d619..9755189 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -23,13 +23,17 @@
  */
 #include "qemu-common.h"
 
-/* Target word size (must be identical to pointer size). */
-#if UINTPTR_MAX == UINT32_MAX
-# define TCG_TARGET_REG_BITS 32
-#elif UINTPTR_MAX == UINT64_MAX
-# define TCG_TARGET_REG_BITS 64
-#else
-# error Unknown pointer size for tcg target
+#include "tcg-target.h"
+
+/* Default target word size to pointer size.  */
+#ifndef TCG_TARGET_REG_BITS
+# if UINTPTR_MAX == UINT32_MAX
+#  define TCG_TARGET_REG_BITS 32
+# elif UINTPTR_MAX == UINT64_MAX
+#  define TCG_TARGET_REG_BITS 64
+# else
+#  error Unknown pointer size for tcg target
+# endif
 #endif
 
 #if TCG_TARGET_REG_BITS == 32
@@ -46,7 +50,6 @@ typedef uint64_t tcg_target_ulong;
 #error unsupported
 #endif
 
-#include "tcg-target.h"
 #include "tcg-runtime.h"
 
 #if TCG_TARGET_NB_REGS <= 32
diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h
index 18f57a2..4811e99 100644
--- a/tcg/tci/tcg-target.h
+++ b/tcg/tci/tcg-target.h
@@ -44,6 +44,14 @@
 
 #define TCG_TARGET_INTERPRETER 1
 
+#if UINTPTR_MAX == UINT32_MAX
+# define TCG_TARGET_REG_BITS 32
+#elif UINTPTR_MAX == UINT64_MAX
+# define TCG_TARGET_REG_BITS 64
+#else
+# error Unknown pointer size for tci target
+#endif
+
 #ifdef CONFIG_DEBUG_TCG
 /* Enable debug output. */
 #define CONFIG_DEBUG_TCG_INTERPRETER
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 16/18] tcg-i386: Use intptr_t appropriately
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (14 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 15/18] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 16:45   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 17/18] tcg-i386: Adjust tcg_out_tlb_load for x32 Richard Henderson
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 18/18] configure: Allow x32 as a host Richard Henderson
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/i386/tcg-target.c | 38 ++++++++++++++++++--------------------
 1 file changed, 18 insertions(+), 20 deletions(-)

diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
index b1e4e5b..f3083b8 100644
--- a/tcg/i386/tcg-target.c
+++ b/tcg/i386/tcg-target.c
@@ -430,8 +430,7 @@ static void tcg_out_modrm(TCGContext *s, int opc, int r, int rm)
    that will follow the instruction.  */
 
 static void tcg_out_modrm_sib_offset(TCGContext *s, int opc, int r, int rm,
-                                     int index, int shift,
-                                     tcg_target_long offset)
+                                     int index, int shift, intptr_t offset)
 {
     int mod, len;
 
@@ -439,8 +438,8 @@ static void tcg_out_modrm_sib_offset(TCGContext *s, int opc, int r, int rm,
         if (TCG_TARGET_REG_BITS == 64) {
             /* Try for a rip-relative addressing mode.  This has replaced
                the 32-bit-mode absolute addressing encoding.  */
-            tcg_target_long pc = (tcg_target_long)s->code_ptr + 5 + ~rm;
-            tcg_target_long disp = offset - pc;
+            intptr_t pc = (intptr_t)s->code_ptr + 5 + ~rm;
+            intptr_t disp = offset - pc;
             if (disp == (int32_t)disp) {
                 tcg_out_opc(s, opc, r, 0, 0);
                 tcg_out8(s, (LOWREGMASK(r) << 3) | 5);
@@ -514,7 +513,7 @@ static void tcg_out_modrm_sib_offset(TCGContext *s, int opc, int r, int rm,
 
 /* A simplification of the above with no index or shift.  */
 static inline void tcg_out_modrm_offset(TCGContext *s, int opc, int r,
-                                        int rm, tcg_target_long offset)
+                                        int rm, intptr_t offset)
 {
     tcg_out_modrm_sib_offset(s, opc, r, rm, -1, 0, offset);
 }
@@ -735,7 +734,7 @@ static void tcg_out_jxx(TCGContext *s, int opc, int label_index, int small)
     TCGLabel *l = &s->labels[label_index];
 
     if (l->has_value) {
-        val = l->u.value - (tcg_target_long)s->code_ptr;
+        val = l->u.value - (intptr_t)s->code_ptr;
         val1 = val - 2;
         if ((int8_t)val1 == val1) {
             if (opc == -1) {
@@ -975,9 +974,9 @@ static void tcg_out_movcond64(TCGContext *s, TCGCond cond, TCGArg dest,
 }
 #endif
 
-static void tcg_out_branch(TCGContext *s, int call, tcg_target_long dest)
+static void tcg_out_branch(TCGContext *s, int call, uintptr_t dest)
 {
-    tcg_target_long disp = dest - (tcg_target_long)s->code_ptr - 5;
+    intptr_t disp = dest - (intptr_t)s->code_ptr - 5;
 
     if (disp == (int32_t)disp) {
         tcg_out_opc(s, call ? OPC_CALL_Jz : OPC_JMP_long, 0, 0, 0);
@@ -989,12 +988,12 @@ static void tcg_out_branch(TCGContext *s, int call, tcg_target_long dest)
     }
 }
 
-static inline void tcg_out_calli(TCGContext *s, tcg_target_long dest)
+static inline void tcg_out_calli(TCGContext *s, uintptr_t dest)
 {
     tcg_out_branch(s, 1, dest);
 }
 
-static void tcg_out_jmp(TCGContext *s, tcg_target_long dest)
+static void tcg_out_jmp(TCGContext *s, uintptr_t dest)
 {
     tcg_out_branch(s, 0, dest);
 }
@@ -1130,8 +1129,7 @@ static inline void setup_guest_base_seg(void) { }
 #endif /* SOFTMMU */
 
 static void tcg_out_qemu_ld_direct(TCGContext *s, int datalo, int datahi,
-                                   int base, tcg_target_long ofs, int seg,
-                                   int sizeop)
+                                   int base, intptr_t ofs, int seg, int sizeop)
 {
 #ifdef TARGET_WORDS_BIGENDIAN
     const int bswap = 1;
@@ -1281,7 +1279,7 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
 }
 
 static void tcg_out_qemu_st_direct(TCGContext *s, int datalo, int datahi,
-                                   int base, tcg_target_long ofs, int seg,
+                                   int base, intptr_t ofs, int seg,
                                    int sizeop)
 {
 #ifdef TARGET_WORDS_BIGENDIAN
@@ -1499,7 +1497,7 @@ static void tcg_out_qemu_ld_slow_path(TCGContext *s, TCGLabelQemuLdst *label)
        jmp next_code : jump to the code corresponding to next IR of qemu_ld/st
     */
 
-    tcg_out_calli(s, (tcg_target_long)qemu_ld_helpers[s_bits]);
+    tcg_out_calli(s, (uintptr_t)qemu_ld_helpers[s_bits]);
 
     /* Jump to post-processing code */
     tcg_out8(s, OPC_JMP_short);
@@ -1556,7 +1554,7 @@ static void tcg_out_qemu_ld_slow_path(TCGContext *s, TCGLabelQemuLdst *label)
     }
 
     /* Jump to the code corresponding to next IR of qemu_st */
-    tcg_out_jmp(s, (tcg_target_long)raddr);
+    tcg_out_jmp(s, (uintptr_t)raddr);
 }
 
 /*
@@ -1621,7 +1619,7 @@ static void tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *label)
        jmp next_code : jump to the code corresponding to next IR of qemu_ld/st
     */
 
-    tcg_out_calli(s, (tcg_target_long)qemu_st_helpers[s_bits]);
+    tcg_out_calli(s, (uintptr_t)qemu_st_helpers[s_bits]);
 
     /* Jump to post-processing code */
     tcg_out8(s, OPC_JMP_short);
@@ -1639,7 +1637,7 @@ static void tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *label)
     }
 
     /* Jump to the code corresponding to next IR of qemu_st */
-    tcg_out_jmp(s, (tcg_target_long)raddr);
+    tcg_out_jmp(s, (uintptr_t)raddr);
 }
 
 /*
@@ -1680,7 +1678,7 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,
     switch(opc) {
     case INDEX_op_exit_tb:
         tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_EAX, args[0]);
-        tcg_out_jmp(s, (tcg_target_long) tb_ret_addr);
+        tcg_out_jmp(s, (uintptr_t)tb_ret_addr);
         break;
     case INDEX_op_goto_tb:
         if (s->tb_jmp_offset) {
@@ -1691,7 +1689,7 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,
         } else {
             /* indirect jump method */
             tcg_out_modrm_offset(s, OPC_GRP5, EXT5_JMPN_Ev, -1,
-                                 (tcg_target_long)(s->tb_next + args[0]));
+                                 (intptr_t)(s->tb_next + args[0]));
         }
         s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf;
         break;
@@ -2384,7 +2382,7 @@ static DebugFrame debug_frame = {
 #if defined(ELF_HOST_MACHINE)
 void tcg_register_jit(void *buf, size_t buf_size)
 {
-    debug_frame.fde.func_start = (tcg_target_long) buf;
+    debug_frame.fde.func_start = (uintptr_t)buf;
     debug_frame.fde.func_len = buf_size;
 
     tcg_register_jit_int(buf, buf_size, &debug_frame, sizeof(debug_frame));
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 17/18] tcg-i386: Adjust tcg_out_tlb_load for x32
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (15 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 16/18] tcg-i386: Use intptr_t appropriately Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 16:45   ` Aurelien Jarno
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 18/18] configure: Allow x32 as a host Richard Henderson
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/i386/tcg-target.c | 35 +++++++++++++++++++++--------------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
index f3083b8..dfda76e 100644
--- a/tcg/i386/tcg-target.c
+++ b/tcg/i386/tcg-target.c
@@ -1061,33 +1061,40 @@ static inline void tcg_out_tlb_load(TCGContext *s, int addrlo_idx,
     const int addrlo = args[addrlo_idx];
     const int r0 = TCG_REG_L0;
     const int r1 = TCG_REG_L1;
-    TCGType type = TCG_TYPE_I32;
-    int rexw = 0;
+    TCGType ttype = TCG_TYPE_I32;
+    TCGType htype = TCG_TYPE_I32;
+    int trexw = 0, hrexw = 0;
 
-    if (TCG_TARGET_REG_BITS == 64 && TARGET_LONG_BITS == 64) {
-        type = TCG_TYPE_I64;
-        rexw = P_REXW;
+    if (TCG_TARGET_REG_BITS == 64) {
+        if (TARGET_LONG_BITS == 64) {
+            ttype = TCG_TYPE_I64;
+            trexw = P_REXW;
+        }
+        if (sizeof(void *) == 8) {
+            htype = TCG_TYPE_I64;
+            hrexw = P_REXW;
+        }
     }
 
-    tcg_out_mov(s, type, r0, addrlo);
-    tcg_out_mov(s, type, r1, addrlo);
+    tcg_out_mov(s, htype, r0, addrlo);
+    tcg_out_mov(s, ttype, r1, addrlo);
 
-    tcg_out_shifti(s, SHIFT_SHR + rexw, r0,
+    tcg_out_shifti(s, SHIFT_SHR + hrexw, r0,
                    TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS);
 
-    tgen_arithi(s, ARITH_AND + rexw, r1,
+    tgen_arithi(s, ARITH_AND + trexw, r1,
                 TARGET_PAGE_MASK | ((1 << s_bits) - 1), 0);
-    tgen_arithi(s, ARITH_AND + rexw, r0,
+    tgen_arithi(s, ARITH_AND + hrexw, r0,
                 (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS, 0);
 
-    tcg_out_modrm_sib_offset(s, OPC_LEA + P_REXW, r0, TCG_AREG0, r0, 0,
+    tcg_out_modrm_sib_offset(s, OPC_LEA + hrexw, r0, TCG_AREG0, r0, 0,
                              offsetof(CPUArchState, tlb_table[mem_index][0])
                              + which);
 
     /* cmp 0(r0), r1 */
-    tcg_out_modrm_offset(s, OPC_CMP_GvEv + rexw, r1, r0, 0);
+    tcg_out_modrm_offset(s, OPC_CMP_GvEv + trexw, r1, r0, 0);
 
-    tcg_out_mov(s, type, r1, addrlo);
+    tcg_out_mov(s, ttype, r1, addrlo);
 
     /* jne slow_path */
     tcg_out_opc(s, OPC_JCC_long + JCC_JNE, 0, 0, 0);
@@ -1107,7 +1114,7 @@ static inline void tcg_out_tlb_load(TCGContext *s, int addrlo_idx,
     /* TLB Hit.  */
 
     /* add addend(r0), r1 */
-    tcg_out_modrm_offset(s, OPC_ADD_GvEv + P_REXW, r1, r0,
+    tcg_out_modrm_offset(s, OPC_ADD_GvEv + hrexw, r1, r0,
                          offsetof(CPUTLBEntry, addend) - which);
 }
 #elif defined(__x86_64__) && defined(__linux__)
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Qemu-devel] [PATCH 18/18] configure: Allow x32 as a host
  2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
                   ` (16 preceding siblings ...)
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 17/18] tcg-i386: Adjust tcg_out_tlb_load for x32 Richard Henderson
@ 2013-08-22 16:58 ` Richard Henderson
  2013-08-29 16:45   ` Aurelien Jarno
  17 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 16:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: aurelien

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 configure | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/configure b/configure
index 18fa608..c0aee9d 100755
--- a/configure
+++ b/configure
@@ -362,7 +362,11 @@ if test ! -z "$cpu" ; then
 elif check_define __i386__ ; then
   cpu="i386"
 elif check_define __x86_64__ ; then
-  cpu="x86_64"
+  if check_define __ILP32__ ; then
+    cpu="x32"
+  else
+    cpu="x86_64"
+  fi
 elif check_define __sparc__ ; then
   if check_define __arch64__ ; then
     cpu="sparc64"
@@ -399,7 +403,7 @@ ARCH=
 # Normalise host CPU name and set ARCH.
 # Note that this case should only have supported host CPUs, not guests.
 case "$cpu" in
-  ia64|ppc|ppc64|s390|s390x|sparc64)
+  ia64|ppc|ppc64|s390|s390x|sparc64|x32)
     cpu="$cpu"
   ;;
   i386|i486|i586|i686|i86pc|BePC)
@@ -550,7 +554,7 @@ Haiku)
   kvm="yes"
   vhost_net="yes"
   vhost_scsi="yes"
-  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
+  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "x32" ] ; then
     audio_possible_drivers="$audio_possible_drivers fmod"
   fi
   QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
@@ -977,6 +981,11 @@ case "$cpu" in
            LDFLAGS="-m64 $LDFLAGS"
            cc_i386='$(CC) -m32'
            ;;
+    x32)
+           CPU_CFLAGS="-mx32"
+           LDFLAGS="-mx32 $LDFLAGS"
+           cc_i386='$(CC) -m32'
+           ;;
     # No special flags required for other host CPUs
 esac
 
@@ -1251,7 +1260,7 @@ fi
 
 if test "$pie" = ""; then
   case "$cpu-$targetos" in
-    i386-Linux|x86_64-Linux|i386-OpenBSD|x86_64-OpenBSD)
+    i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
       ;;
     *)
       pie="no"
@@ -3475,7 +3484,7 @@ fi
 if test "$pie" = "no" ; then
   textseg_addr=
   case "$cpu" in
-    arm | hppa | i386 | m68k | ppc | ppc64 | s390* | sparc | sparc64 | x86_64)
+    arm | hppa | i386 | m68k | ppc | ppc64 | s390* | sparc | sparc64 | x86_64 | x32)
       textseg_addr=0x60000000
       ;;
     mips)
@@ -3650,7 +3659,7 @@ echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
 echo "ARCH=$ARCH" >> $config_host_mak
 
 case "$cpu" in
-  arm|i386|x86_64|ppc|aarch64)
+  arm|i386|x86_64|x32|ppc|aarch64)
     # The TCG interpreter currently does not support ld/st optimization.
     if test "$tcg_interpreter" = "no" ; then
         echo "CONFIG_QEMU_LDST_OPTIMIZATION=y" >> $config_host_mak
@@ -4079,7 +4088,7 @@ elif test "$ARCH" = "sparc64" ; then
   QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
 elif test "$ARCH" = "s390x" ; then
   QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
-elif test "$ARCH" = "x86_64" ; then
+elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
   QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
 else
   QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
@@ -4141,7 +4150,7 @@ fi
 if test "$linux" = "yes" ; then
   mkdir -p linux-headers
   case "$cpu" in
-  i386|x86_64)
+  i386|x86_64|x32)
     linux_arch=x86
     ;;
   ppcemb|ppc|ppc64)
@@ -4407,7 +4416,7 @@ for i in $ARCH $TARGET_BASE_ARCH ; do
     echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
     echo "CONFIG_HPPA_DIS=y"  >> config-all-disas.mak
   ;;
-  i386|x86_64)
+  i386|x86_64|x32)
     echo "CONFIG_I386_DIS=y"  >> $config_target_mak
     echo "CONFIG_I386_DIS=y"  >> config-all-disas.mak
   ;;
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 01/18] qtest: Fix FMT_timeval vs time_t
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 01/18] qtest: Fix FMT_timeval vs time_t Richard Henderson
@ 2013-08-22 17:09   ` Andreas Färber
  2013-08-22 17:53     ` Richard Henderson
  0 siblings, 1 reply; 42+ messages in thread
From: Andreas Färber @ 2013-08-22 17:09 UTC (permalink / raw)
  To: Richard Henderson; +Cc: Anthony Liguori, qemu-devel, aurelien

Am 22.08.2013 18:58, schrieb Richard Henderson:
> Since FMT_timeval unconditionally uses %ld, cast tv_sec to long.
> 
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  qtest.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/qtest.c b/qtest.c
> index 74f1842..4f6963b 100644
> --- a/qtest.c
> +++ b/qtest.c
> @@ -177,7 +177,7 @@ static void qtest_send_prefix(CharDriverState *chr)
>  
>      qtest_get_time(&tv);
>      fprintf(qtest_log_fp, "[S +" FMT_timeval "] ",
> -            tv.tv_sec, (long) tv.tv_usec);
> +            (long) tv.tv_sec, (long) tv.tv_usec);
>  }
>  
>  static void GCC_FMT_ATTR(2, 3) qtest_send(CharDriverState *chr,

FMT_timeval is a file-local #define, so why not change that instead of
all its users?

I remember having a local patch around for one of the BSDs for MAX_TIME
or something. We should really make less assumptions about sizes.

Andreas

> @@ -225,7 +225,7 @@ static void qtest_process_command(CharDriverState *chr, gchar **words)
>  
>          qtest_get_time(&tv);
>          fprintf(qtest_log_fp, "[R +" FMT_timeval "]",
> -                tv.tv_sec, (long) tv.tv_usec);
> +                (long) tv.tv_sec, (long) tv.tv_usec);
>          for (i = 0; words[i]; i++) {
>              fprintf(qtest_log_fp, " %s", words[i]);
>          }
> @@ -485,7 +485,7 @@ static void qtest_event(void *opaque, int event)
>          qtest_opened = true;
>          if (qtest_log_fp) {
>              fprintf(qtest_log_fp, "[I " FMT_timeval "] OPENED\n",
> -                    start_time.tv_sec, (long) start_time.tv_usec);
> +                    (long) start_time.tv_sec, (long) start_time.tv_usec);
>          }
>          break;
>      case CHR_EVENT_CLOSED:
> @@ -494,7 +494,7 @@ static void qtest_event(void *opaque, int event)
>              qemu_timeval tv;
>              qtest_get_time(&tv);
>              fprintf(qtest_log_fp, "[I +" FMT_timeval "] CLOSED\n",
> -                    tv.tv_sec, (long) tv.tv_usec);
> +                    (long) tv.tv_sec, (long) tv.tv_usec);
>          }
>          break;
>      default:
> 


-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 01/18] qtest: Fix FMT_timeval vs time_t
  2013-08-22 17:09   ` Andreas Färber
@ 2013-08-22 17:53     ` Richard Henderson
  2013-08-22 18:01       ` Andreas Färber
  0 siblings, 1 reply; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 17:53 UTC (permalink / raw)
  To: Andreas Färber; +Cc: Anthony Liguori, qemu-devel, aurelien

On 08/22/2013 10:09 AM, Andreas Färber wrote:
> FMT_timeval is a file-local #define, so why not change that instead of
> all its users?

To what?  Unlike size_t, there's no time_t printf format.

Recall that checking size(time_t) doesn't suppress the warning
when sizeof(int) == sizeof(long)...

Since it *is* a local define, it seems easier to match up the
users than to do anything else.


r~

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 01/18] qtest: Fix FMT_timeval vs time_t
  2013-08-22 17:53     ` Richard Henderson
@ 2013-08-22 18:01       ` Andreas Färber
  2013-08-22 18:05         ` Richard Henderson
  0 siblings, 1 reply; 42+ messages in thread
From: Andreas Färber @ 2013-08-22 18:01 UTC (permalink / raw)
  To: Richard Henderson; +Cc: Anthony Liguori, qemu-devel, aurelien

Am 22.08.2013 19:53, schrieb Richard Henderson:
> On 08/22/2013 10:09 AM, Andreas Färber wrote:
>> FMT_timeval is a file-local #define, so why not change that instead of
>> all its users?
> 
> To what?  Unlike size_t, there's no time_t printf format.
> 
> Recall that checking size(time_t) doesn't suppress the warning
> when sizeof(int) == sizeof(long)...
> 
> Since it *is* a local define, it seems easier to match up the
> users than to do anything else.

#if defined(__we_are_x86__) && UINTPTR_MAX == UINT32_MAX
#define FMT_timeval "..."
#else
#define FMT_timeval "..."
#endif

is the easiest I can think of right now, replace __we_are_x86__ with
whatever appropriate. That's one central hunk compared to four usage
sites and who knows more in the future that people may forget about.

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 01/18] qtest: Fix FMT_timeval vs time_t
  2013-08-22 18:01       ` Andreas Färber
@ 2013-08-22 18:05         ` Richard Henderson
  0 siblings, 0 replies; 42+ messages in thread
From: Richard Henderson @ 2013-08-22 18:05 UTC (permalink / raw)
  To: Andreas Färber; +Cc: Anthony Liguori, qemu-devel, aurelien

On 08/22/2013 11:01 AM, Andreas Färber wrote:
> Am 22.08.2013 19:53, schrieb Richard Henderson:
>> On 08/22/2013 10:09 AM, Andreas Färber wrote:
>>> FMT_timeval is a file-local #define, so why not change that instead of
>>> all its users?
>>
>> To what?  Unlike size_t, there's no time_t printf format.
>>
>> Recall that checking size(time_t) doesn't suppress the warning
>> when sizeof(int) == sizeof(long)...
>>
>> Since it *is* a local define, it seems easier to match up the
>> users than to do anything else.
> 
> #if defined(__we_are_x86__) && UINTPTR_MAX == UINT32_MAX
> #define FMT_timeval "..."
> #else
> #define FMT_timeval "..."
> #endif
> 
> is the easiest I can think of right now, replace __we_are_x86__ with
> whatever appropriate. That's one central hunk compared to four usage
> sites and who knows more in the future that people may forget about.

As opposed to the cast we already have for the tv_usec part?
How is that any different?  Are we really going to forget?


r~

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 02/18] tcg: Change flush_icache_range arguments to uintptr_t
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 02/18] tcg: Change flush_icache_range arguments to uintptr_t Richard Henderson
@ 2013-08-28 21:06   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-28 21:06 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:33AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/aarch64/tcg-target.h |  3 +--
>  tcg/arm/tcg-target.h     |  9 ++++-----
>  tcg/hppa/tcg-target.h    |  3 +--
>  tcg/i386/tcg-target.h    |  3 +--
>  tcg/ia64/tcg-target.h    |  3 +--
>  tcg/mips/tcg-target.h    |  3 +--
>  tcg/s390/tcg-target.h    |  3 +--
>  tcg/sparc/tcg-target.h   | 12 ++++--------
>  tcg/tcg.c                |  6 ++----
>  tcg/tci/tcg-target.h     |  3 +--
>  10 files changed, 17 insertions(+), 31 deletions(-)
> 
> diff --git a/tcg/aarch64/tcg-target.h b/tcg/aarch64/tcg-target.h
> index 51e5092..71f89ed 100644
> --- a/tcg/aarch64/tcg-target.h
> +++ b/tcg/aarch64/tcg-target.h
> @@ -92,8 +92,7 @@ enum {
>      TCG_AREG0 = TCG_REG_X19,
>  };
>  
> -static inline void flush_icache_range(tcg_target_ulong start,
> -                                      tcg_target_ulong stop)
> +static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
>  {
>      __builtin___clear_cache((char *)start, (char *)stop);
>  }
> diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h
> index 5cd9d6a..5637ffe 100644
> --- a/tcg/arm/tcg-target.h
> +++ b/tcg/arm/tcg-target.h
> @@ -90,15 +90,14 @@ enum {
>      TCG_AREG0 = TCG_REG_R6,
>  };
>  
> -static inline void flush_icache_range(tcg_target_ulong start,
> -                                      tcg_target_ulong stop)
> +static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
>  {
>  #if QEMU_GNUC_PREREQ(4, 1)
>      __builtin___clear_cache((char *) start, (char *) stop);
>  #else
> -    register unsigned long _beg __asm ("a1") = start;
> -    register unsigned long _end __asm ("a2") = stop;
> -    register unsigned long _flg __asm ("a3") = 0;
> +    register uintptr_t _beg __asm("a1") = start;
> +    register uintptr_t _end __asm("a2") = stop;
> +    register uintptr_t _flg __asm("a3") = 0;
>      __asm __volatile__ ("swi 0x9f0002" : : "r" (_beg), "r" (_end), "r" (_flg));
>  #endif
>  }
> diff --git a/tcg/hppa/tcg-target.h b/tcg/hppa/tcg-target.h
> index 25467bd..a9257a5 100644
> --- a/tcg/hppa/tcg-target.h
> +++ b/tcg/hppa/tcg-target.h
> @@ -109,8 +109,7 @@ typedef enum {
>  #define TCG_AREG0 TCG_REG_R17
>  
>  
> -static inline void flush_icache_range(tcg_target_ulong start,
> -                                      tcg_target_ulong stop)
> +static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
>  {
>      start &= ~31;
>      while (start <= stop) {
> diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
> index e3f6bb9..963e839 100644
> --- a/tcg/i386/tcg-target.h
> +++ b/tcg/i386/tcg-target.h
> @@ -135,8 +135,7 @@ typedef enum {
>  # define TCG_AREG0 TCG_REG_EBP
>  #endif
>  
> -static inline void flush_icache_range(tcg_target_ulong start,
> -                                      tcg_target_ulong stop)
> +static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
>  {
>  }
>  
> diff --git a/tcg/ia64/tcg-target.h b/tcg/ia64/tcg-target.h
> index f32d519..428dc40 100644
> --- a/tcg/ia64/tcg-target.h
> +++ b/tcg/ia64/tcg-target.h
> @@ -158,8 +158,7 @@ typedef enum {
>  
>  #define TCG_AREG0 TCG_REG_R7
>  
> -static inline void flush_icache_range(tcg_target_ulong start,
> -                                      tcg_target_ulong stop)
> +static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
>  {
>      start = start & ~(32UL - 1UL);
>      stop = (stop + (32UL - 1UL)) & ~(32UL - 1UL);
> diff --git a/tcg/mips/tcg-target.h b/tcg/mips/tcg-target.h
> index a438950..433bad0 100644
> --- a/tcg/mips/tcg-target.h
> +++ b/tcg/mips/tcg-target.h
> @@ -125,8 +125,7 @@ typedef enum {
>  #include <sys/cachectl.h>
>  #endif
>  
> -static inline void flush_icache_range(tcg_target_ulong start,
> -                                      tcg_target_ulong stop)
> +static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
>  {
>      cacheflush ((void *)start, stop-start, ICACHE);
>  }
> diff --git a/tcg/s390/tcg-target.h b/tcg/s390/tcg-target.h
> index 42ca36c..60ffd7b 100644
> --- a/tcg/s390/tcg-target.h
> +++ b/tcg/s390/tcg-target.h
> @@ -110,8 +110,7 @@ enum {
>      TCG_AREG0 = TCG_REG_R10,
>  };
>  
> -static inline void flush_icache_range(tcg_target_ulong start,
> -                                      tcg_target_ulong stop)
> +static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
>  {
>  }
>  
> diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h
> index dab52d7..d1ca2d6 100644
> --- a/tcg/sparc/tcg-target.h
> +++ b/tcg/sparc/tcg-target.h
> @@ -138,16 +138,12 @@ typedef enum {
>  
>  #define TCG_AREG0 TCG_REG_I0
>  
> -static inline void flush_icache_range(tcg_target_ulong start,
> -                                      tcg_target_ulong stop)
> +static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
>  {
> -    unsigned long p;
> -
> -    p = start & ~(8UL - 1UL);
> -    stop = (stop + (8UL - 1UL)) & ~(8UL - 1UL);
> -
> -    for (; p < stop; p += 8)
> +    uintptr_t p;
> +    for (p = start & -8; p < (stop + 7) & -8; p += 8) {
>          __asm__ __volatile__("flush\t%0" : : "r" (p));
> +    }
>  }
>  
>  #endif
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index dac8224..a0d0e9e 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -284,8 +284,7 @@ void tcg_prologue_init(TCGContext *s)
>      s->code_buf = s->code_gen_prologue;
>      s->code_ptr = s->code_buf;
>      tcg_target_qemu_prologue(s);
> -    flush_icache_range((tcg_target_ulong)s->code_buf,
> -                       (tcg_target_ulong)s->code_ptr);
> +    flush_icache_range((uintptr_t)s->code_buf, (uintptr_t)s->code_ptr);
>  
>  #ifdef DEBUG_DISAS
>      if (qemu_loglevel_mask(CPU_LOG_TB_OUT_ASM)) {
> @@ -2382,8 +2381,7 @@ int tcg_gen_code(TCGContext *s, uint8_t *gen_code_buf)
>      tcg_gen_code_common(s, gen_code_buf, -1);
>  
>      /* flush instruction cache */
> -    flush_icache_range((tcg_target_ulong)gen_code_buf,
> -                       (tcg_target_ulong)s->code_ptr);
> +    flush_icache_range((uintptr_t)gen_code_buf, (uintptr_t)s->code_ptr);
>  
>      return s->code_ptr -  gen_code_buf;
>  }
> diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h
> index d7fc14e..c80a34f 100644
> --- a/tcg/tci/tcg-target.h
> +++ b/tcg/tci/tcg-target.h
> @@ -169,8 +169,7 @@ void tci_disas(uint8_t opc);
>  tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr);
>  #define tcg_qemu_tb_exec tcg_qemu_tb_exec
>  
> -static inline void flush_icache_range(tcg_target_ulong start,
> -                                      tcg_target_ulong stop)
> +static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
>  {
>  }
>  

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>


-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 03/18] tcg: Change tcg_qemu_tb_exec return to uintptr_t
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 03/18] tcg: Change tcg_qemu_tb_exec return " Richard Henderson
@ 2013-08-28 21:06   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-28 21:06 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:34AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  cpu-exec.c           | 2 +-
>  tcg/ppc/tcg-target.h | 2 +-
>  tcg/tcg.h            | 3 +--
>  tcg/tci/tcg-target.h | 2 +-
>  tci.c                | 4 ++--
>  5 files changed, 6 insertions(+), 7 deletions(-)
> 
> diff --git a/cpu-exec.c b/cpu-exec.c
> index 301be28..14af2ed 100644
> --- a/cpu-exec.c
> +++ b/cpu-exec.c
> @@ -53,7 +53,7 @@ void cpu_resume_from_signal(CPUArchState *env, void *puc)
>  static inline tcg_target_ulong cpu_tb_exec(CPUState *cpu, uint8_t *tb_ptr)
>  {
>      CPUArchState *env = cpu->env_ptr;
> -    tcg_target_ulong next_tb = tcg_qemu_tb_exec(env, tb_ptr);
> +    uintptr_t next_tb = tcg_qemu_tb_exec(env, tb_ptr);
>      if ((next_tb & TB_EXIT_MASK) > TB_EXIT_IDX1) {
>          /* We didn't start executing this TB (eg because the instruction
>           * counter hit zero); we must restore the guest PC to the address
> diff --git a/tcg/ppc/tcg-target.h b/tcg/ppc/tcg-target.h
> index b42d97c..6406977 100644
> --- a/tcg/ppc/tcg-target.h
> +++ b/tcg/ppc/tcg-target.h
> @@ -100,7 +100,7 @@ typedef enum {
>  #define TCG_AREG0 TCG_REG_R27
>  
>  #define tcg_qemu_tb_exec(env, tb_ptr) \
> -    ((long __attribute__ ((longcall)) \
> +    ((uintptr_t __attribute__ ((longcall)) \
>        (*)(void *, void *))tcg_ctx.code_gen_prologue)(env, tb_ptr)
>  
>  #endif
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index f3f9889..bfe420a 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -731,8 +731,7 @@ TCGv_i64 tcg_const_local_i64(int64_t val);
>  
>  #if !defined(tcg_qemu_tb_exec)
>  # define tcg_qemu_tb_exec(env, tb_ptr) \
> -    ((tcg_target_ulong (*)(void *, void *))tcg_ctx.code_gen_prologue)(env, \
> -                                                                      tb_ptr)
> +    ((uintptr_t (*)(void *, void *))tcg_ctx.code_gen_prologue)(env, tb_ptr)
>  #endif
>  
>  void tcg_register_jit(void *buf, size_t buf_size);
> diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h
> index c80a34f..18f57a2 100644
> --- a/tcg/tci/tcg-target.h
> +++ b/tcg/tci/tcg-target.h
> @@ -166,7 +166,7 @@ typedef enum {
>  
>  void tci_disas(uint8_t opc);
>  
> -tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr);
> +uintptr_t tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr);
>  #define tcg_qemu_tb_exec tcg_qemu_tb_exec
>  
>  static inline void flush_icache_range(uintptr_t start, uintptr_t stop)
> diff --git a/tci.c b/tci.c
> index c742c8d..18c888e 100644
> --- a/tci.c
> +++ b/tci.c
> @@ -434,11 +434,11 @@ static bool tci_compare64(uint64_t u0, uint64_t u1, TCGCond condition)
>  }
>  
>  /* Interpret pseudo code in tb. */
> -tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr)
> +uintptr_t tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr)
>  {
>      long tcg_temps[CPU_TEMP_BUF_NLONGS];
>      uintptr_t sp_value = (uintptr_t)(tcg_temps + CPU_TEMP_BUF_NLONGS);
> -    tcg_target_ulong next_tb = 0;
> +    uintptr_t next_tb = 0;
>  
>      tci_reg[TCG_AREG0] = (tcg_target_ulong)env;
>      tci_reg[TCG_REG_CALL_STACK] = sp_value;

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 04/18] tcg: Fix next_tb type in cpu_exec
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 04/18] tcg: Fix next_tb type in cpu_exec Richard Henderson
@ 2013-08-28 21:07   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-28 21:07 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:35AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  cpu-exec.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/cpu-exec.c b/cpu-exec.c
> index 14af2ed..5a43995 100644
> --- a/cpu-exec.c
> +++ b/cpu-exec.c
> @@ -209,7 +209,7 @@ int cpu_exec(CPUArchState *env)
>      int ret, interrupt_request;
>      TranslationBlock *tb;
>      uint8_t *tc_ptr;
> -    tcg_target_ulong next_tb;
> +    uintptr_t next_tb;
>  
>      if (cpu->halted) {
>          if (!cpu_has_work(cpu)) {

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>


-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 05/18] tcg: Define TCG_TYPE_PTR properly
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 05/18] tcg: Define TCG_TYPE_PTR properly Richard Henderson
@ 2013-08-29 10:53   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 10:53 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:36AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/tcg.h | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index bfe420a..b71dcf4 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -173,9 +173,12 @@ typedef enum TCGType {
>      TCG_TYPE_REG = TCG_TYPE_I64,
>  #endif
>  
> -    /* An alias for the size of the native pointer.  We don't currently
> -       support any hosts with 64-bit registers and 32-bit pointers.  */
> -    TCG_TYPE_PTR = TCG_TYPE_REG,
> +    /* An alias for the size of the native pointer.  */
> +#if UINTPTR_MAX == UINT32_MAX
> +    TCG_TYPE_PTR = TCG_TYPE_I32,
> +#else
> +    TCG_TYPE_PTR = TCG_TYPE_I64,
> +#endif
>  
>      /* An alias for the size of the target "long", aka register.  */
>  #if TARGET_LONG_BITS == 64

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 06/18] tcg: Define TCG_ptr properly
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 06/18] tcg: Define TCG_ptr properly Richard Henderson
@ 2013-08-29 10:53   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 10:53 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:37AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/tcg.h | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index b71dcf4..8353ba1 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -640,11 +640,11 @@ do {\
>  
>  void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs);
>  
> -#if TCG_TARGET_REG_BITS == 32
> +#if UINTPTR_MAX == UINT32_MAX
>  #define TCGV_NAT_TO_PTR(n) MAKE_TCGV_PTR(GET_TCGV_I32(n))
>  #define TCGV_PTR_TO_NAT(n) MAKE_TCGV_I32(GET_TCGV_PTR(n))
>  
> -#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i32((tcg_target_long)(V)))
> +#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i32((intptr_t)(V)))
>  #define tcg_global_reg_new_ptr(R, N) \
>      TCGV_NAT_TO_PTR(tcg_global_reg_new_i32((R), (N)))
>  #define tcg_global_mem_new_ptr(R, O, N) \
> @@ -655,7 +655,7 @@ void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs);
>  #define TCGV_NAT_TO_PTR(n) MAKE_TCGV_PTR(GET_TCGV_I64(n))
>  #define TCGV_PTR_TO_NAT(n) MAKE_TCGV_I64(GET_TCGV_PTR(n))
>  
> -#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i64((tcg_target_long)(V)))
> +#define tcg_const_ptr(V) TCGV_NAT_TO_PTR(tcg_const_i64((intptr_t)(V)))
>  #define tcg_global_reg_new_ptr(R, N) \
>      TCGV_NAT_TO_PTR(tcg_global_reg_new_i64((R), (N)))
>  #define tcg_global_mem_new_ptr(R, O, N) \
> -- 
> 1.8.1.4
> 
> 
> 

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 07/18] tcg: Change frame pointer offsets to intptr_t
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 07/18] tcg: Change frame pointer offsets to intptr_t Richard Henderson
@ 2013-08-29 10:53   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 10:53 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:38AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/tcg.c | 5 ++---
>  tcg/tcg.h | 9 ++++-----
>  2 files changed, 6 insertions(+), 8 deletions(-)
> 
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index a0d0e9e..c23b23c 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -297,8 +297,7 @@ void tcg_prologue_init(TCGContext *s)
>  #endif
>  }
>  
> -void tcg_set_frame(TCGContext *s, int reg,
> -                   tcg_target_long start, tcg_target_long size)
> +void tcg_set_frame(TCGContext *s, int reg, intptr_t start, intptr_t size)
>  {
>      s->frame_start = start;
>      s->frame_end = start + size;
> @@ -1580,7 +1579,7 @@ static void temp_allocate_frame(TCGContext *s, int temp)
>      ts->mem_offset = s->current_frame_offset;
>      ts->mem_reg = s->frame_reg;
>      ts->mem_allocated = 1;
> -    s->current_frame_offset += (tcg_target_long)sizeof(tcg_target_long);
> +    s->current_frame_offset += sizeof(tcg_target_long);
>  }
>  
>  /* sync register 'reg' by saving it to the corresponding temporary */
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index 8353ba1..6fb2126 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -430,9 +430,9 @@ struct TCGContext {
>         into account fixed registers */
>      int reg_to_temp[TCG_TARGET_NB_REGS];
>      TCGRegSet reserved_regs;
> -    tcg_target_long current_frame_offset;
> -    tcg_target_long frame_start;
> -    tcg_target_long frame_end;
> +    intptr_t current_frame_offset;
> +    intptr_t frame_start;
> +    intptr_t frame_end;
>      int frame_reg;
>  
>      uint8_t *code_ptr;
> @@ -525,8 +525,7 @@ void tcg_func_start(TCGContext *s);
>  int tcg_gen_code(TCGContext *s, uint8_t *gen_code_buf);
>  int tcg_gen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset);
>  
> -void tcg_set_frame(TCGContext *s, int reg,
> -                   tcg_target_long start, tcg_target_long size);
> +void tcg_set_frame(TCGContext *s, int reg, intptr_t start, intptr_t size);
>  
>  TCGv_i32 tcg_global_reg_new_i32(int reg, const char *name);
>  TCGv_i32 tcg_global_mem_new_i32(int reg, tcg_target_long offset,
> -- 
> 1.8.1.4
> 
> 
> 

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 08/18] tcg: Change memory offsets to intptr_t
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 08/18] tcg: Change memory " Richard Henderson
@ 2013-08-29 10:53   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 10:53 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:39AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/tcg.c | 16 +++++-----------
>  tcg/tcg.h |  8 +++-----
>  2 files changed, 8 insertions(+), 16 deletions(-)
> 
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index c23b23c..04f1727 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -380,7 +380,7 @@ TCGv_i64 tcg_global_reg_new_i64(int reg, const char *name)
>  }
>  
>  static inline int tcg_global_mem_new_internal(TCGType type, int reg,
> -                                              tcg_target_long offset,
> +                                              intptr_t offset,
>                                                const char *name)
>  {
>      TCGContext *s = &tcg_ctx;
> @@ -440,21 +440,15 @@ static inline int tcg_global_mem_new_internal(TCGType type, int reg,
>      return idx;
>  }
>  
> -TCGv_i32 tcg_global_mem_new_i32(int reg, tcg_target_long offset,
> -                                const char *name)
> +TCGv_i32 tcg_global_mem_new_i32(int reg, intptr_t offset, const char *name)
>  {
> -    int idx;
> -
> -    idx = tcg_global_mem_new_internal(TCG_TYPE_I32, reg, offset, name);
> +    int idx = tcg_global_mem_new_internal(TCG_TYPE_I32, reg, offset, name);
>      return MAKE_TCGV_I32(idx);
>  }
>  
> -TCGv_i64 tcg_global_mem_new_i64(int reg, tcg_target_long offset,
> -                                const char *name)
> +TCGv_i64 tcg_global_mem_new_i64(int reg, intptr_t offset, const char *name)
>  {
> -    int idx;
> -
> -    idx = tcg_global_mem_new_internal(TCG_TYPE_I64, reg, offset, name);
> +    int idx = tcg_global_mem_new_internal(TCG_TYPE_I64, reg, offset, name);
>      return MAKE_TCGV_I64(idx);
>  }
>  
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index 6fb2126..5f5e535 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -383,7 +383,7 @@ typedef struct TCGTemp {
>      int reg;
>      tcg_target_long val;
>      int mem_reg;
> -    tcg_target_long mem_offset;
> +    intptr_t mem_offset;
>      unsigned int fixed_reg:1;
>      unsigned int mem_coherent:1;
>      unsigned int mem_allocated:1;
> @@ -528,8 +528,7 @@ int tcg_gen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset);
>  void tcg_set_frame(TCGContext *s, int reg, intptr_t start, intptr_t size);
>  
>  TCGv_i32 tcg_global_reg_new_i32(int reg, const char *name);
> -TCGv_i32 tcg_global_mem_new_i32(int reg, tcg_target_long offset,
> -                                const char *name);
> +TCGv_i32 tcg_global_mem_new_i32(int reg, intptr_t offset, const char *name);
>  TCGv_i32 tcg_temp_new_internal_i32(int temp_local);
>  static inline TCGv_i32 tcg_temp_new_i32(void)
>  {
> @@ -543,8 +542,7 @@ void tcg_temp_free_i32(TCGv_i32 arg);
>  char *tcg_get_arg_str_i32(TCGContext *s, char *buf, int buf_size, TCGv_i32 arg);
>  
>  TCGv_i64 tcg_global_reg_new_i64(int reg, const char *name);
> -TCGv_i64 tcg_global_mem_new_i64(int reg, tcg_target_long offset,
> -                                const char *name);
> +TCGv_i64 tcg_global_mem_new_i64(int reg, intptr_t offset, const char *name);
>  TCGv_i64 tcg_temp_new_internal_i64(int temp_local);
>  static inline TCGv_i64 tcg_temp_new_i64(void)
>  {
> -- 
> 1.8.1.4
> 
> 
> 

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 09/18] tcg: Change relocation offsets to intptr_t
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 09/18] tcg: Change relocation " Richard Henderson
@ 2013-08-29 10:53   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 10:53 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:40AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/aarch64/tcg-target.c |  2 +-
>  tcg/arm/tcg-target.c     |  8 ++++----
>  tcg/hppa/tcg-target.c    |  6 +++---
>  tcg/i386/tcg-target.c    |  2 +-
>  tcg/ia64/tcg-target.c    | 14 +++++++-------
>  tcg/mips/tcg-target.c    | 16 ++++++++--------
>  tcg/ppc/tcg-target.c     |  2 +-
>  tcg/ppc64/tcg-target.c   |  2 +-
>  tcg/s390/tcg-target.c    |  6 +++---
>  tcg/sparc/tcg-target.c   |  6 +++---
>  tcg/tcg.c                |  9 +++++----
>  tcg/tcg.h                |  4 ++--
>  tcg/tci/tcg-target.c     |  2 +-
>  13 files changed, 40 insertions(+), 39 deletions(-)
> 
> diff --git a/tcg/aarch64/tcg-target.c b/tcg/aarch64/tcg-target.c
> index 41a17f8..7dde210 100644
> --- a/tcg/aarch64/tcg-target.c
> +++ b/tcg/aarch64/tcg-target.c
> @@ -88,7 +88,7 @@ static inline void reloc_pc19(void *code_ptr, tcg_target_long target)
>  }
>  
>  static inline void patch_reloc(uint8_t *code_ptr, int type,
> -                               tcg_target_long value, tcg_target_long addend)
> +                               intptr_t value, intptr_t addend)
>  {
>      value += addend;
>  
> diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c
> index 6c4854d..e93c67f 100644
> --- a/tcg/arm/tcg-target.c
> +++ b/tcg/arm/tcg-target.c
> @@ -108,21 +108,21 @@ static const int tcg_target_call_oarg_regs[2] = {
>  
>  #define TCG_REG_TMP  TCG_REG_R12
>  
> -static inline void reloc_abs32(void *code_ptr, tcg_target_long target)
> +static inline void reloc_abs32(void *code_ptr, intptr_t target)
>  {
>      *(uint32_t *) code_ptr = target;
>  }
>  
> -static inline void reloc_pc24(void *code_ptr, tcg_target_long target)
> +static inline void reloc_pc24(void *code_ptr, intptr_t target)
>  {
> -    uint32_t offset = ((target - ((tcg_target_long) code_ptr + 8)) >> 2);
> +    uint32_t offset = ((target - ((intptr_t)code_ptr + 8)) >> 2);
>  
>      *(uint32_t *) code_ptr = ((*(uint32_t *) code_ptr) & ~0xffffff)
>                               | (offset & 0xffffff);
>  }
>  
>  static void patch_reloc(uint8_t *code_ptr, int type,
> -                tcg_target_long value, tcg_target_long addend)
> +                        intptr_t value, intptr_t addend)
>  {
>      switch (type) {
>      case R_ARM_ABS32:
> diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
> index 68f77ba..e055988 100644
> --- a/tcg/hppa/tcg-target.c
> +++ b/tcg/hppa/tcg-target.c
> @@ -145,14 +145,14 @@ static int reassemble_21(int as21)
>  #define R_PARISC_PCREL12F  R_PARISC_NONE
>  
>  static void patch_reloc(uint8_t *code_ptr, int type,
> -                        tcg_target_long value, tcg_target_long addend)
> +                        intptr_t value, intptr_t addend)
>  {
>      uint32_t *insn_ptr = (uint32_t *)code_ptr;
>      uint32_t insn = *insn_ptr;
> -    tcg_target_long pcrel;
> +    intptr_t pcrel;
>  
>      value += addend;
> -    pcrel = (value - ((tcg_target_long)code_ptr + 8)) >> 2;
> +    pcrel = (value - ((intptr_t)code_ptr + 8)) >> 2;
>  
>      switch (type) {
>      case R_PARISC_PCREL12F:
> diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
> index 87eeab3..63db888 100644
> --- a/tcg/i386/tcg-target.c
> +++ b/tcg/i386/tcg-target.c
> @@ -112,7 +112,7 @@ static bool have_cmov;
>  static uint8_t *tb_ret_addr;
>  
>  static void patch_reloc(uint8_t *code_ptr, int type,
> -                        tcg_target_long value, tcg_target_long addend)
> +                        intptr_t value, intptr_t addend)
>  {
>      value += addend;
>      switch(type) {
> diff --git a/tcg/ia64/tcg-target.c b/tcg/ia64/tcg-target.c
> index 2373d9e..c499ee8 100644
> --- a/tcg/ia64/tcg-target.c
> +++ b/tcg/ia64/tcg-target.c
> @@ -668,16 +668,16 @@ static inline uint64_t tcg_opc_x3(int qp, uint64_t opc, uint64_t imm)
>   * Relocations
>   */
>  
> -static inline void reloc_pcrel21b (void *pc, tcg_target_long target)
> +static inline void reloc_pcrel21b(void *pc, intptr_t target)
>  {
>      uint64_t imm;
>      int64_t disp;
>      int slot;
>  
> -    slot = (tcg_target_long) pc & 3;
> -    pc = (void *)((tcg_target_long) pc & ~3);
> +    slot = (intptr_t)pc & 3;
> +    pc = (void *)((intptr_t)pc & ~3);
>  
> -    disp = target - (tcg_target_long) pc;
> +    disp = target - (intptr_t)pc;
>      imm = (uint64_t) disp >> 4;
>  
>      switch(slot) {
> @@ -728,12 +728,12 @@ static inline uint64_t get_reloc_pcrel21b (void *pc)
>      }
>  }
>  
> -static inline void reloc_pcrel60b (void *pc, tcg_target_long target)
> +static inline void reloc_pcrel60b(void *pc, intptr_t target)
>  {
>      int64_t disp;
>      uint64_t imm;
>  
> -    disp = target - (tcg_target_long) pc;
> +    disp = target - (intptr_t)pc;
>      imm = (uint64_t) disp >> 4;
>  
>      *(uint64_t *)(pc + 8) = (*(uint64_t *)(pc + 8) & 0xf700000fff800000ull)
> @@ -759,7 +759,7 @@ static inline uint64_t get_reloc_pcrel60b (void *pc)
>  
>  
>  static void patch_reloc(uint8_t *code_ptr, int type,
> -                        tcg_target_long value, tcg_target_long addend)
> +                        intptr_t value, intptr_t addend)
>  {
>      value += addend;
>      switch (type) {
> diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c
> index 793532e..5aa31dc 100644
> --- a/tcg/mips/tcg-target.c
> +++ b/tcg/mips/tcg-target.c
> @@ -108,33 +108,33 @@ static const TCGReg tcg_target_call_oarg_regs[2] = {
>  
>  static uint8_t *tb_ret_addr;
>  
> -static inline uint32_t reloc_lo16_val (void *pc, tcg_target_long target)
> +static inline uint32_t reloc_lo16_val(void *pc, intptr_t target)
>  {
>      return target & 0xffff;
>  }
>  
> -static inline void reloc_lo16 (void *pc, tcg_target_long target)
> +static inline void reloc_lo16(void *pc, intptr_t target)
>  {
>      *(uint32_t *) pc = (*(uint32_t *) pc & ~0xffff)
>                         | reloc_lo16_val(pc, target);
>  }
>  
> -static inline uint32_t reloc_hi16_val (void *pc, tcg_target_long target)
> +static inline uint32_t reloc_hi16_val(void *pc, intptr_t target)
>  {
>      return (target >> 16) & 0xffff;
>  }
>  
> -static inline void reloc_hi16 (void *pc, tcg_target_long target)
> +static inline void reloc_hi16(void *pc, intptr_t target)
>  {
>      *(uint32_t *) pc = (*(uint32_t *) pc & ~0xffff)
>                         | reloc_hi16_val(pc, target);
>  }
>  
> -static inline uint32_t reloc_pc16_val (void *pc, tcg_target_long target)
> +static inline uint32_t reloc_pc16_val(void *pc, intptr_t target)
>  {
>      int32_t disp;
>  
> -    disp = target - (tcg_target_long) pc - 4;
> +    disp = target - (intptr_t)pc - 4;
>      if (disp != (disp << 14) >> 14) {
>          tcg_abort ();
>      }
> @@ -157,14 +157,14 @@ static inline uint32_t reloc_26_val (void *pc, tcg_target_long target)
>      return (target >> 2) & 0x3ffffff;
>  }
>  
> -static inline void reloc_pc26 (void *pc, tcg_target_long target)
> +static inline void reloc_pc26(void *pc, intptr_t target)
>  {
>      *(uint32_t *) pc = (*(uint32_t *) pc & ~0x3ffffff)
>                         | reloc_26_val(pc, target);
>  }
>  
>  static void patch_reloc(uint8_t *code_ptr, int type,
> -                        tcg_target_long value, tcg_target_long addend)
> +                        intptr_t value, intptr_t addend)
>  {
>      value += addend;
>      switch(type) {
> diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
> index 453ab6b..4d6ee1e 100644
> --- a/tcg/ppc/tcg-target.c
> +++ b/tcg/ppc/tcg-target.c
> @@ -204,7 +204,7 @@ static void reloc_pc14 (void *pc, tcg_target_long target)
>  }
>  
>  static void patch_reloc(uint8_t *code_ptr, int type,
> -                        tcg_target_long value, tcg_target_long addend)
> +                        intptr_t value, intptr_t addend)
>  {
>      value += addend;
>      switch (type) {
> diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c
> index 0678de2..fb070f8 100644
> --- a/tcg/ppc64/tcg-target.c
> +++ b/tcg/ppc64/tcg-target.c
> @@ -208,7 +208,7 @@ static void reloc_pc14 (void *pc, tcg_target_long target)
>  }
>  
>  static void patch_reloc (uint8_t *code_ptr, int type,
> -                         tcg_target_long value, tcg_target_long addend)
> +                         intptr_t value, intptr_t addend)
>  {
>      value += addend;
>      switch (type) {
> diff --git a/tcg/s390/tcg-target.c b/tcg/s390/tcg-target.c
> index f229f1c..adf7099 100644
> --- a/tcg/s390/tcg-target.c
> +++ b/tcg/s390/tcg-target.c
> @@ -351,10 +351,10 @@ static uint8_t *tb_ret_addr;
>  static uint64_t facilities;
>  
>  static void patch_reloc(uint8_t *code_ptr, int type,
> -                        tcg_target_long value, tcg_target_long addend)
> +                        intptr_t value, intptr_t addend)
>  {
> -    tcg_target_long code_ptr_tl = (tcg_target_long)code_ptr;
> -    tcg_target_long pcrel2;
> +    intptr_t code_ptr_tl = (intptr_t)code_ptr;
> +    intptr_t pcrel2;
>  
>      /* ??? Not the usual definition of "addend".  */
>      pcrel2 = (value - (code_ptr_tl + addend)) >> 1;
> diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c
> index 5bfd29c..9f2e2c9 100644
> --- a/tcg/sparc/tcg-target.c
> +++ b/tcg/sparc/tcg-target.c
> @@ -252,7 +252,7 @@ static inline int check_fit_i32(uint32_t val, unsigned int bits)
>  }
>  
>  static void patch_reloc(uint8_t *code_ptr, int type,
> -                        tcg_target_long value, tcg_target_long addend)
> +                        intptr_t value, intptr_t addend)
>  {
>      uint32_t insn;
>      value += addend;
> @@ -264,7 +264,7 @@ static void patch_reloc(uint8_t *code_ptr, int type,
>          *(uint32_t *)code_ptr = value;
>          break;
>      case R_SPARC_WDISP16:
> -        value -= (long)code_ptr;
> +        value -= (intptr_t)code_ptr;
>          if (!check_fit_tl(value >> 2, 16)) {
>              tcg_abort();
>          }
> @@ -274,7 +274,7 @@ static void patch_reloc(uint8_t *code_ptr, int type,
>          *(uint32_t *)code_ptr = insn;
>          break;
>      case R_SPARC_WDISP19:
> -        value -= (long)code_ptr;
> +        value -= (intptr_t)code_ptr;
>          if (!check_fit_tl(value >> 2, 19)) {
>              tcg_abort();
>          }
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index 04f1727..c6ab07f 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -66,7 +66,7 @@
>  static void tcg_target_init(TCGContext *s);
>  static void tcg_target_qemu_prologue(TCGContext *s);
>  static void patch_reloc(uint8_t *code_ptr, int type, 
> -                        tcg_target_long value, tcg_target_long addend);
> +                        intptr_t value, intptr_t addend);
>  
>  /* The CIE and FDE header definitions will be common to all hosts.  */
>  typedef struct {
> @@ -134,7 +134,7 @@ static inline void tcg_out32(TCGContext *s, uint32_t v)
>  /* label relocation processing */
>  
>  static void tcg_out_reloc(TCGContext *s, uint8_t *code_ptr, int type,
> -                          int label_index, long addend)
> +                          int label_index, intptr_t addend)
>  {
>      TCGLabel *l;
>      TCGRelocation *r;
> @@ -160,11 +160,12 @@ static void tcg_out_label(TCGContext *s, int label_index, void *ptr)
>  {
>      TCGLabel *l;
>      TCGRelocation *r;
> -    tcg_target_long value = (tcg_target_long)ptr;
> +    intptr_t value = (intptr_t)ptr;
>  
>      l = &s->labels[label_index];
> -    if (l->has_value)
> +    if (l->has_value) {
>          tcg_abort();
> +    }
>      r = l->u.first_reloc;
>      while (r != NULL) {
>          patch_reloc(r->ptr, r->type, value, r->addend);
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index 5f5e535..2375dc4 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -134,13 +134,13 @@ typedef struct TCGRelocation {
>      struct TCGRelocation *next;
>      int type;
>      uint8_t *ptr;
> -    tcg_target_long addend;
> +    intptr_t addend;
>  } TCGRelocation; 
>  
>  typedef struct TCGLabel {
>      int has_value;
>      union {
> -        tcg_target_ulong value;
> +        uintptr_t value;
>          TCGRelocation *first_reloc;
>      } u;
>  } TCGLabel;
> diff --git a/tcg/tci/tcg-target.c b/tcg/tci/tcg-target.c
> index e118bc7..49be6a5 100644
> --- a/tcg/tci/tcg-target.c
> +++ b/tcg/tci/tcg-target.c
> @@ -370,7 +370,7 @@ static const char *const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
>  #endif
>  
>  static void patch_reloc(uint8_t *code_ptr, int type,
> -                        tcg_target_long value, tcg_target_long addend)
> +                        intptr_t value, intptr_t addend)
>  {
>      /* tcg_out_reloc always uses the same type, addend. */
>      assert(type == sizeof(tcg_target_long));
> -- 
> 1.8.1.4
> 
> 
> 

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 10/18] tcg: Use uintptr_t in TCGHelperInfo
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 10/18] tcg: Use uintptr_t in TCGHelperInfo Richard Henderson
@ 2013-08-29 10:53   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 10:53 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:41AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/tcg.c | 6 +++---
>  tcg/tcg.h | 2 +-
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index c6ab07f..c80aa3c 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -625,7 +625,7 @@ void tcg_register_helper(void *func, const char *name)
>          s->helpers = realloc(s->helpers, n * sizeof(TCGHelperInfo));
>          s->allocated_helpers = n;
>      }
> -    s->helpers[s->nb_helpers].func = (tcg_target_ulong)func;
> +    s->helpers[s->nb_helpers].func = (uintptr_t)func;
>      s->helpers[s->nb_helpers].name = name;
>      s->nb_helpers++;
>  }
> @@ -855,11 +855,11 @@ static int helper_cmp(const void *p1, const void *p2)
>  }
>  
>  /* find helper definition (Note: A hash table would be better) */
> -static TCGHelperInfo *tcg_find_helper(TCGContext *s, tcg_target_ulong val)
> +static TCGHelperInfo *tcg_find_helper(TCGContext *s, uintptr_t val)
>  {
>      int m, m_min, m_max;
>      TCGHelperInfo *th;
> -    tcg_target_ulong v;
> +    uintptr_t v;
>  
>      if (unlikely(!s->helpers_sorted)) {
>          qsort(s->helpers, s->nb_helpers, sizeof(TCGHelperInfo), 
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index 2375dc4..6e2d619 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -397,7 +397,7 @@ typedef struct TCGTemp {
>  } TCGTemp;
>  
>  typedef struct TCGHelperInfo {
> -    tcg_target_ulong func;
> +    uintptr_t func;
>      const char *name;
>  } TCGHelperInfo;
>  
> -- 
> 1.8.1.4
> 
> 
> 

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 11/18] tcg: Change tcg_gen_exit_tb argument to uintptr_t
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 11/18] tcg: Change tcg_gen_exit_tb argument to uintptr_t Richard Henderson
@ 2013-08-29 10:54   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 10:54 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:42AM -0700, Richard Henderson wrote:
> And update all users.
> 
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  include/exec/gen-icount.h     | 4 ++--
>  target-alpha/translate.c      | 8 ++++----
>  target-arm/translate.c        | 2 +-
>  target-cris/translate.c       | 2 +-
>  target-i386/translate.c       | 2 +-
>  target-lm32/translate.c       | 2 +-
>  target-m68k/translate.c       | 2 +-
>  target-microblaze/translate.c | 2 +-
>  target-mips/translate.c       | 2 +-
>  target-moxie/translate.c      | 2 +-
>  target-openrisc/translate.c   | 2 +-
>  target-ppc/translate.c        | 2 +-
>  target-s390x/translate.c      | 8 ++++----
>  target-sh4/translate.c        | 2 +-
>  target-sparc/translate.c      | 2 +-
>  target-unicore32/translate.c  | 2 +-
>  target-xtensa/translate.c     | 2 +-
>  tcg/tcg-op.h                  | 2 +-
>  18 files changed, 25 insertions(+), 25 deletions(-)
> 
> diff --git a/include/exec/gen-icount.h b/include/exec/gen-icount.h
> index 4fc7b29..39a6b61 100644
> --- a/include/exec/gen-icount.h
> +++ b/include/exec/gen-icount.h
> @@ -39,12 +39,12 @@ static inline void gen_tb_start(void)
>  static void gen_tb_end(TranslationBlock *tb, int num_insns)
>  {
>      gen_set_label(exitreq_label);
> -    tcg_gen_exit_tb((tcg_target_long)tb + TB_EXIT_REQUESTED);
> +    tcg_gen_exit_tb((uintptr_t)tb + TB_EXIT_REQUESTED);
>  
>      if (use_icount) {
>          *icount_arg = num_insns;
>          gen_set_label(icount_label);
> -        tcg_gen_exit_tb((tcg_target_long)tb + TB_EXIT_ICOUNT_EXPIRED);
> +        tcg_gen_exit_tb((uintptr_t)tb + TB_EXIT_ICOUNT_EXPIRED);
>      }
>  }
>  
> diff --git a/target-alpha/translate.c b/target-alpha/translate.c
> index 309dea6..28ce436 100644
> --- a/target-alpha/translate.c
> +++ b/target-alpha/translate.c
> @@ -415,7 +415,7 @@ static ExitStatus gen_bdirect(DisasContext *ctx, int ra, int32_t disp)
>      } else if (use_goto_tb(ctx, dest)) {
>          tcg_gen_goto_tb(0);
>          tcg_gen_movi_i64(cpu_pc, dest);
> -        tcg_gen_exit_tb((tcg_target_long)ctx->tb);
> +        tcg_gen_exit_tb((uintptr_t)ctx->tb);
>          return EXIT_GOTO_TB;
>      } else {
>          tcg_gen_movi_i64(cpu_pc, dest);
> @@ -434,12 +434,12 @@ static ExitStatus gen_bcond_internal(DisasContext *ctx, TCGCond cond,
>  
>          tcg_gen_goto_tb(0);
>          tcg_gen_movi_i64(cpu_pc, ctx->pc);
> -        tcg_gen_exit_tb((tcg_target_long)ctx->tb);
> +        tcg_gen_exit_tb((uintptr_t)ctx->tb);
>  
>          gen_set_label(lab_true);
>          tcg_gen_goto_tb(1);
>          tcg_gen_movi_i64(cpu_pc, dest);
> -        tcg_gen_exit_tb((tcg_target_long)ctx->tb + 1);
> +        tcg_gen_exit_tb((uintptr_t)ctx->tb + 1);
>  
>          return EXIT_GOTO_TB;
>      } else {
> @@ -1629,7 +1629,7 @@ static ExitStatus gen_call_pal(DisasContext *ctx, int palcode)
>             we change the PAL base register.  */
>          if (!ctx->singlestep_enabled && !(ctx->tb->cflags & CF_LAST_IO)) {
>              tcg_gen_goto_tb(0);
> -            tcg_gen_exit_tb((tcg_target_long)ctx->tb);
> +            tcg_gen_exit_tb((uintptr_t)ctx->tb);
>              return EXIT_GOTO_TB;
>          }
>  
> diff --git a/target-arm/translate.c b/target-arm/translate.c
> index d1e8538..9160ced 100644
> --- a/target-arm/translate.c
> +++ b/target-arm/translate.c
> @@ -3356,7 +3356,7 @@ static inline void gen_goto_tb(DisasContext *s, int n, uint32_t dest)
>      if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) {
>          tcg_gen_goto_tb(n);
>          gen_set_pc_im(dest);
> -        tcg_gen_exit_tb((tcg_target_long)tb + n);
> +        tcg_gen_exit_tb((uintptr_t)tb + n);
>      } else {
>          gen_set_pc_im(dest);
>          tcg_gen_exit_tb(0);
> diff --git a/target-cris/translate.c b/target-cris/translate.c
> index 2a4beeb..617e1b4 100644
> --- a/target-cris/translate.c
> +++ b/target-cris/translate.c
> @@ -558,7 +558,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest)
>      if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) {
>          tcg_gen_goto_tb(n);
>          tcg_gen_movi_tl(env_pc, dest);
> -                tcg_gen_exit_tb((tcg_target_long)tb + n);
> +                tcg_gen_exit_tb((uintptr_t)tb + n);
>      } else {
>          tcg_gen_movi_tl(env_pc, dest);
>          tcg_gen_exit_tb(0);
> diff --git a/target-i386/translate.c b/target-i386/translate.c
> index 065a9d3..6d87900 100644
> --- a/target-i386/translate.c
> +++ b/target-i386/translate.c
> @@ -2413,7 +2413,7 @@ static inline void gen_goto_tb(DisasContext *s, int tb_num, target_ulong eip)
>          /* jump to same page: we can use a direct jump */
>          tcg_gen_goto_tb(tb_num);
>          gen_jmp_im(eip);
> -        tcg_gen_exit_tb((tcg_target_long)tb + tb_num);
> +        tcg_gen_exit_tb((uintptr_t)tb + tb_num);
>      } else {
>          /* jump to another page: currently not optimized */
>          gen_jmp_im(eip);
> diff --git a/target-lm32/translate.c b/target-lm32/translate.c
> index 1247287..6ea0ecd 100644
> --- a/target-lm32/translate.c
> +++ b/target-lm32/translate.c
> @@ -129,7 +129,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest)
>              likely(!dc->singlestep_enabled)) {
>          tcg_gen_goto_tb(n);
>          tcg_gen_movi_tl(cpu_pc, dest);
> -        tcg_gen_exit_tb((tcg_target_long)tb + n);
> +        tcg_gen_exit_tb((uintptr_t)tb + n);
>      } else {
>          tcg_gen_movi_tl(cpu_pc, dest);
>          if (dc->singlestep_enabled) {
> diff --git a/target-m68k/translate.c b/target-m68k/translate.c
> index d562eeb..0be0a96 100644
> --- a/target-m68k/translate.c
> +++ b/target-m68k/translate.c
> @@ -869,7 +869,7 @@ static void gen_jmp_tb(DisasContext *s, int n, uint32_t dest)
>                 (s->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) {
>          tcg_gen_goto_tb(n);
>          tcg_gen_movi_i32(QREG_PC, dest);
> -        tcg_gen_exit_tb((tcg_target_long)tb + n);
> +        tcg_gen_exit_tb((uintptr_t)tb + n);
>      } else {
>          gen_jmp_im(s, dest);
>          tcg_gen_exit_tb(0);
> diff --git a/target-microblaze/translate.c b/target-microblaze/translate.c
> index cd43577..0673176 100644
> --- a/target-microblaze/translate.c
> +++ b/target-microblaze/translate.c
> @@ -138,7 +138,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest)
>      if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) {
>          tcg_gen_goto_tb(n);
>          tcg_gen_movi_tl(cpu_SR[SR_PC], dest);
> -        tcg_gen_exit_tb((tcg_target_long)tb + n);
> +        tcg_gen_exit_tb((uintptr_t)tb + n);
>      } else {
>          tcg_gen_movi_tl(cpu_SR[SR_PC], dest);
>          tcg_gen_exit_tb(0);
> diff --git a/target-mips/translate.c b/target-mips/translate.c
> index e2eb908..ad43d59 100644
> --- a/target-mips/translate.c
> +++ b/target-mips/translate.c
> @@ -3581,7 +3581,7 @@ static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
>          likely(!ctx->singlestep_enabled)) {
>          tcg_gen_goto_tb(n);
>          gen_save_pc(dest);
> -        tcg_gen_exit_tb((tcg_target_long)tb + n);
> +        tcg_gen_exit_tb((uintptr_t)tb + n);
>      } else {
>          gen_save_pc(dest);
>          if (ctx->singlestep_enabled) {
> diff --git a/target-moxie/translate.c b/target-moxie/translate.c
> index 8cc0bb7..a93196f 100644
> --- a/target-moxie/translate.c
> +++ b/target-moxie/translate.c
> @@ -135,7 +135,7 @@ static inline void gen_goto_tb(CPUMoxieState *env, DisasContext *ctx,
>          !ctx->singlestep_enabled) {
>          tcg_gen_goto_tb(n);
>          tcg_gen_movi_i32(cpu_pc, dest);
> -        tcg_gen_exit_tb((tcg_target_long)tb + n);
> +        tcg_gen_exit_tb((uintptr_t)tb + n);
>      } else {
>          tcg_gen_movi_i32(cpu_pc, dest);
>          if (ctx->singlestep_enabled) {
> diff --git a/target-openrisc/translate.c b/target-openrisc/translate.c
> index a6050ba..723b77d 100644
> --- a/target-openrisc/translate.c
> +++ b/target-openrisc/translate.c
> @@ -198,7 +198,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest)
>                                         likely(!dc->singlestep_enabled)) {
>          tcg_gen_movi_tl(cpu_pc, dest);
>          tcg_gen_goto_tb(n);
> -        tcg_gen_exit_tb((tcg_target_long)tb + n);
> +        tcg_gen_exit_tb((uintptr_t)tb + n);
>      } else {
>          tcg_gen_movi_tl(cpu_pc, dest);
>          if (dc->singlestep_enabled) {
> diff --git a/target-ppc/translate.c b/target-ppc/translate.c
> index f07d70d..2ffb270 100644
> --- a/target-ppc/translate.c
> +++ b/target-ppc/translate.c
> @@ -3551,7 +3551,7 @@ static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
>          likely(!ctx->singlestep_enabled)) {
>          tcg_gen_goto_tb(n);
>          tcg_gen_movi_tl(cpu_nip, dest & ~3);
> -        tcg_gen_exit_tb((tcg_target_long)tb + n);
> +        tcg_gen_exit_tb((uintptr_t)tb + n);
>      } else {
>          tcg_gen_movi_tl(cpu_nip, dest & ~3);
>          if (unlikely(ctx->singlestep_enabled)) {
> diff --git a/target-s390x/translate.c b/target-s390x/translate.c
> index 1fb76c5..afe90eb 100644
> --- a/target-s390x/translate.c
> +++ b/target-s390x/translate.c
> @@ -1169,7 +1169,7 @@ static ExitStatus help_goto_direct(DisasContext *s, uint64_t dest)
>          update_cc_op(s);
>          tcg_gen_goto_tb(0);
>          tcg_gen_movi_i64(psw_addr, dest);
> -        tcg_gen_exit_tb((tcg_target_long)s->tb);
> +        tcg_gen_exit_tb((uintptr_t)s->tb);
>          return EXIT_GOTO_TB;
>      } else {
>          tcg_gen_movi_i64(psw_addr, dest);
> @@ -1227,13 +1227,13 @@ static ExitStatus help_branch(DisasContext *s, DisasCompare *c,
>              /* Branch not taken.  */
>              tcg_gen_goto_tb(0);
>              tcg_gen_movi_i64(psw_addr, s->next_pc);
> -            tcg_gen_exit_tb((tcg_target_long)s->tb + 0);
> +            tcg_gen_exit_tb((uintptr_t)s->tb + 0);
>  
>              /* Branch taken.  */
>              gen_set_label(lab);
>              tcg_gen_goto_tb(1);
>              tcg_gen_movi_i64(psw_addr, dest);
> -            tcg_gen_exit_tb((tcg_target_long)s->tb + 1);
> +            tcg_gen_exit_tb((uintptr_t)s->tb + 1);
>  
>              ret = EXIT_GOTO_TB;
>          } else {
> @@ -1256,7 +1256,7 @@ static ExitStatus help_branch(DisasContext *s, DisasCompare *c,
>              update_cc_op(s);
>              tcg_gen_goto_tb(0);
>              tcg_gen_movi_i64(psw_addr, s->next_pc);
> -            tcg_gen_exit_tb((tcg_target_long)s->tb + 0);
> +            tcg_gen_exit_tb((uintptr_t)s->tb + 0);
>  
>              gen_set_label(lab);
>              if (is_imm) {
> diff --git a/target-sh4/translate.c b/target-sh4/translate.c
> index 59f3d47..c06b29f 100644
> --- a/target-sh4/translate.c
> +++ b/target-sh4/translate.c
> @@ -186,7 +186,7 @@ static void gen_goto_tb(DisasContext * ctx, int n, target_ulong dest)
>  	/* Use a direct jump if in same page and singlestep not enabled */
>          tcg_gen_goto_tb(n);
>          tcg_gen_movi_i32(cpu_pc, dest);
> -        tcg_gen_exit_tb((tcg_target_long)tb + n);
> +        tcg_gen_exit_tb((uintptr_t)tb + n);
>      } else {
>          tcg_gen_movi_i32(cpu_pc, dest);
>          if (ctx->singlestep_enabled)
> diff --git a/target-sparc/translate.c b/target-sparc/translate.c
> index 093e0e2..36615f1 100644
> --- a/target-sparc/translate.c
> +++ b/target-sparc/translate.c
> @@ -322,7 +322,7 @@ static inline void gen_goto_tb(DisasContext *s, int tb_num,
>          tcg_gen_goto_tb(tb_num);
>          tcg_gen_movi_tl(cpu_pc, pc);
>          tcg_gen_movi_tl(cpu_npc, npc);
> -        tcg_gen_exit_tb((tcg_target_long)tb + tb_num);
> +        tcg_gen_exit_tb((uintptr_t)tb + tb_num);
>      } else {
>          /* jump to another page: currently not optimized */
>          tcg_gen_movi_tl(cpu_pc, pc);
> diff --git a/target-unicore32/translate.c b/target-unicore32/translate.c
> index 68be1c6..1246895 100644
> --- a/target-unicore32/translate.c
> +++ b/target-unicore32/translate.c
> @@ -1100,7 +1100,7 @@ static inline void gen_goto_tb(DisasContext *s, int n, uint32_t dest)
>      if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK)) {
>          tcg_gen_goto_tb(n);
>          gen_set_pc_im(dest);
> -        tcg_gen_exit_tb((tcg_target_long)tb + n);
> +        tcg_gen_exit_tb((uintptr_t)tb + n);
>      } else {
>          gen_set_pc_im(dest);
>          tcg_gen_exit_tb(0);
> diff --git a/target-xtensa/translate.c b/target-xtensa/translate.c
> index 504cc53..24343bd 100644
> --- a/target-xtensa/translate.c
> +++ b/target-xtensa/translate.c
> @@ -400,7 +400,7 @@ static void gen_jump_slot(DisasContext *dc, TCGv dest, int slot)
>      } else {
>          if (slot >= 0) {
>              tcg_gen_goto_tb(slot);
> -            tcg_gen_exit_tb((tcg_target_long)dc->tb + slot);
> +            tcg_gen_exit_tb((uintptr_t)dc->tb + slot);
>          } else {
>              tcg_gen_exit_tb(0);
>          }
> diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
> index 364964d..32a5deb 100644
> --- a/tcg/tcg-op.h
> +++ b/tcg/tcg-op.h
> @@ -2599,7 +2599,7 @@ static inline void tcg_gen_debug_insn_start(uint64_t pc)
>  #endif
>  }
>  
> -static inline void tcg_gen_exit_tb(tcg_target_long val)
> +static inline void tcg_gen_exit_tb(uintptr_t val)
>  {
>      tcg_gen_op1i(INDEX_op_exit_tb, val);
>  }
> -- 
> 1.8.1.4

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
 

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 12/18] tcg: Change tcg_out_ld/st offset to intptr_t
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 12/18] tcg: Change tcg_out_ld/st offset to intptr_t Richard Henderson
@ 2013-08-29 16:44   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 16:44 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:43AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/aarch64/tcg-target.c | 4 ++--
>  tcg/arm/tcg-target.c     | 4 ++--
>  tcg/hppa/tcg-target.c    | 4 ++--
>  tcg/i386/tcg-target.c    | 4 ++--
>  tcg/ia64/tcg-target.c    | 4 ++--
>  tcg/mips/tcg-target.c    | 4 ++--
>  tcg/ppc/tcg-target.c     | 8 ++++----
>  tcg/ppc64/tcg-target.c   | 8 ++++----
>  tcg/s390/tcg-target.c    | 4 ++--
>  tcg/sparc/tcg-target.c   | 4 ++--
>  tcg/tcg.c                | 4 ++--
>  tcg/tci/tcg-target.c     | 4 ++--
>  12 files changed, 28 insertions(+), 28 deletions(-)
> 
> diff --git a/tcg/aarch64/tcg-target.c b/tcg/aarch64/tcg-target.c
> index 7dde210..c472a4a 100644
> --- a/tcg/aarch64/tcg-target.c
> +++ b/tcg/aarch64/tcg-target.c
> @@ -423,14 +423,14 @@ static inline void tcg_out_mov(TCGContext *s,
>  }
>  
>  static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      tcg_out_ldst(s, (type == TCG_TYPE_I64) ? LDST_64 : LDST_32, LDST_LD,
>                   arg, arg1, arg2);
>  }
>  
>  static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      tcg_out_ldst(s, (type == TCG_TYPE_I64) ? LDST_64 : LDST_32, LDST_ST,
>                   arg, arg1, arg2);
> diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c
> index e93c67f..5d2db36 100644
> --- a/tcg/arm/tcg-target.c
> +++ b/tcg/arm/tcg-target.c
> @@ -2065,13 +2065,13 @@ static void tcg_target_init(TCGContext *s)
>  }
>  
>  static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      tcg_out_ld32u(s, COND_AL, arg, arg1, arg2);
>  }
>  
>  static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      tcg_out_st32(s, COND_AL, arg, arg1, arg2);
>  }
> diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
> index e055988..f464aff 100644
> --- a/tcg/hppa/tcg-target.c
> +++ b/tcg/hppa/tcg-target.c
> @@ -388,14 +388,14 @@ static void tcg_out_ldst(TCGContext *s, int ret, int addr,
>  
>  /* This function is required by tcg.c.  */
>  static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      tcg_out_ldst(s, ret, arg1, arg2, INSN_LDW);
>  }
>  
>  /* This function is required by tcg.c.  */
>  static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg ret,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      tcg_out_ldst(s, ret, arg1, arg2, INSN_STW);
>  }
> diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
> index 63db888..b1e4e5b 100644
> --- a/tcg/i386/tcg-target.c
> +++ b/tcg/i386/tcg-target.c
> @@ -581,14 +581,14 @@ static inline void tcg_out_pop(TCGContext *s, int reg)
>  }
>  
>  static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      int opc = OPC_MOVL_GvEv + (type == TCG_TYPE_I64 ? P_REXW : 0);
>      tcg_out_modrm_offset(s, opc, ret, arg1, arg2);
>  }
>  
>  static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      int opc = OPC_MOVL_EvGv + (type == TCG_TYPE_I64 ? P_REXW : 0);
>      tcg_out_modrm_offset(s, opc, arg, arg1, arg2);
> diff --git a/tcg/ia64/tcg-target.c b/tcg/ia64/tcg-target.c
> index c499ee8..0a3ff70 100644
> --- a/tcg/ia64/tcg-target.c
> +++ b/tcg/ia64/tcg-target.c
> @@ -993,7 +993,7 @@ static inline void tcg_out_st_rel(TCGContext *s, uint64_t opc_m4, TCGArg arg,
>  }
>  
>  static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      if (type == TCG_TYPE_I32) {
>          tcg_out_ld_rel(s, OPC_LD4_M1, arg, arg1, arg2);
> @@ -1003,7 +1003,7 @@ static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg,
>  }
>  
>  static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      if (type == TCG_TYPE_I32) {
>          tcg_out_st_rel(s, OPC_ST4_M4, arg, arg1, arg2);
> diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c
> index 5aa31dc..acf6957 100644
> --- a/tcg/mips/tcg-target.c
> +++ b/tcg/mips/tcg-target.c
> @@ -514,13 +514,13 @@ static inline void tcg_out_ldst(TCGContext *s, int opc, TCGArg arg,
>  }
>  
>  static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      tcg_out_ldst(s, OPC_LW, arg, arg1, arg2);
>  }
>  
>  static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      tcg_out_ldst(s, OPC_SW, arg, arg1, arg2);
>  }
> diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
> index 4d6ee1e..f45ce7c 100644
> --- a/tcg/ppc/tcg-target.c
> +++ b/tcg/ppc/tcg-target.c
> @@ -1062,14 +1062,14 @@ static void tcg_target_qemu_prologue (TCGContext *s)
>  #endif
>  }
>  
> -static void tcg_out_ld (TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
> -                        tcg_target_long arg2)
> +static void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
> +                       intptr_t arg2)
>  {
>      tcg_out_ldst (s, ret, arg1, arg2, LWZ, LWZX);
>  }
>  
> -static void tcg_out_st (TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
> -                        tcg_target_long arg2)
> +static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
> +                       intptr_t arg2)
>  {
>      tcg_out_ldst (s, arg, arg1, arg2, STW, STWX);
>  }
> diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c
> index fb070f8..e0353d0 100644
> --- a/tcg/ppc64/tcg-target.c
> +++ b/tcg/ppc64/tcg-target.c
> @@ -1072,8 +1072,8 @@ static void tcg_target_qemu_prologue (TCGContext *s)
>      tcg_out32(s, BCLR | BO_ALWAYS);
>  }
>  
> -static void tcg_out_ld (TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
> -                        tcg_target_long arg2)
> +static void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
> +                       intptr_t arg2)
>  {
>      if (type == TCG_TYPE_I32)
>          tcg_out_ldst (s, ret, arg1, arg2, LWZ, LWZX);
> @@ -1081,8 +1081,8 @@ static void tcg_out_ld (TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
>          tcg_out_ldsta (s, ret, arg1, arg2, LD, LDX);
>  }
>  
> -static void tcg_out_st (TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
> -                        tcg_target_long arg2)
> +static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
> +                       intptr_t arg2)
>  {
>      if (type == TCG_TYPE_I32)
>          tcg_out_ldst (s, arg, arg1, arg2, STW, STWX);
> diff --git a/tcg/s390/tcg-target.c b/tcg/s390/tcg-target.c
> index adf7099..a1dcb3d 100644
> --- a/tcg/s390/tcg-target.c
> +++ b/tcg/s390/tcg-target.c
> @@ -771,7 +771,7 @@ static void tcg_out_mem(TCGContext *s, S390Opcode opc_rx, S390Opcode opc_rxy,
>  
>  /* load data without address translation or endianness conversion */
>  static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg data,
> -                              TCGReg base, tcg_target_long ofs)
> +                              TCGReg base, intptr_t ofs)
>  {
>      if (type == TCG_TYPE_I32) {
>          tcg_out_mem(s, RX_L, RXY_LY, data, base, TCG_REG_NONE, ofs);
> @@ -781,7 +781,7 @@ static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg data,
>  }
>  
>  static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg data,
> -                              TCGReg base, tcg_target_long ofs)
> +                              TCGReg base, intptr_t ofs)
>  {
>      if (type == TCG_TYPE_I32) {
>          tcg_out_mem(s, RX_ST, RXY_STY, data, base, TCG_REG_NONE, ofs);
> diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c
> index 9f2e2c9..5eb8c76 100644
> --- a/tcg/sparc/tcg-target.c
> +++ b/tcg/sparc/tcg-target.c
> @@ -436,13 +436,13 @@ static inline void tcg_out_ldst(TCGContext *s, int ret, int addr,
>  }
>  
>  static inline void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      tcg_out_ldst(s, ret, arg1, arg2, (type == TCG_TYPE_I32 ? LDUW : LDX));
>  }
>  
>  static inline void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg,
> -                              TCGReg arg1, tcg_target_long arg2)
> +                              TCGReg arg1, intptr_t arg2)
>  {
>      tcg_out_ldst(s, arg, arg1, arg2, (type == TCG_TYPE_I32 ? STW : STX));
>  }
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index c80aa3c..1d7cdaf 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -93,14 +93,14 @@ static void tcg_register_jit_int(void *buf, size_t size,
>  /* Forward declarations for functions declared and used in tcg-target.c. */
>  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str);
>  static void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
> -                       tcg_target_long arg2);
> +                       intptr_t arg2);
>  static void tcg_out_mov(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg);
>  static void tcg_out_movi(TCGContext *s, TCGType type,
>                           TCGReg ret, tcg_target_long arg);
>  static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
>                         const int *const_args);
>  static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
> -                       tcg_target_long arg2);
> +                       intptr_t arg2);
>  static int tcg_target_const_match(tcg_target_long val,
>                                    const TCGArgConstraint *arg_ct);
>  
> diff --git a/tcg/tci/tcg-target.c b/tcg/tci/tcg-target.c
> index 49be6a5..281d7d5 100644
> --- a/tcg/tci/tcg-target.c
> +++ b/tcg/tci/tcg-target.c
> @@ -488,7 +488,7 @@ static void tci_out_label(TCGContext *s, TCGArg arg)
>  }
>  
>  static void tcg_out_ld(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg1,
> -                       tcg_target_long arg2)
> +                       intptr_t arg2)
>  {
>      uint8_t *old_code_ptr = s->code_ptr;
>      if (type == TCG_TYPE_I32) {
> @@ -842,7 +842,7 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
>  }
>  
>  static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, TCGReg arg1,
> -                       tcg_target_long arg2)
> +                       intptr_t arg2)
>  {
>      uint8_t *old_code_ptr = s->code_ptr;
>      if (type == TCG_TYPE_I32) {

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 13/18] tcg: Use appropriate types in tcg_reg_alloc_call
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 13/18] tcg: Use appropriate types in tcg_reg_alloc_call Richard Henderson
@ 2013-08-29 16:44   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 16:44 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:44AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/tcg.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index 1d7cdaf..72c064c 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -2037,7 +2037,9 @@ static int tcg_reg_alloc_call(TCGContext *s, const TCGOpDef *def,
>      int nb_iargs, nb_oargs, flags, nb_regs, i, reg, nb_params;
>      TCGArg arg, func_arg;
>      TCGTemp *ts;
> -    tcg_target_long stack_offset, call_stack_size, func_addr;
> +    intptr_t stack_offset;
> +    size_t call_stack_size;
> +    uintptr_t func_addr;
>      int const_func_arg, allocate_args;
>      TCGRegSet allocated_regs;
>      const TCGArgConstraint *arg_ct;

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 14/18] tcg: Fix jit debug for pointer size != register size
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 14/18] tcg: Fix jit debug for pointer size != register size Richard Henderson
@ 2013-08-29 16:44   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 16:44 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:45AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/tcg.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index 72c064c..3c89e3b 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -49,10 +49,10 @@
>  
>  #include "tcg-op.h"
>  
> -#if TCG_TARGET_REG_BITS == 64
> -# define ELF_CLASS  ELFCLASS64
> -#else
> +#if UINTPTR_MAX == UINT32_MAX
>  # define ELF_CLASS  ELFCLASS32
> +#else
> +# define ELF_CLASS  ELFCLASS64
>  #endif
>  #ifdef HOST_WORDS_BIGENDIAN
>  # define ELF_DATA   ELFDATA2MSB
> @@ -82,8 +82,8 @@ typedef struct {
>  typedef struct QEMU_PACKED {
>      uint32_t len __attribute__((aligned((sizeof(void *)))));
>      uint32_t cie_offset;
> -    tcg_target_long func_start;
> -    tcg_target_long func_len;
> +    uintptr_t func_start;
> +    uintptr_t func_len;
>  } DebugFrameFDEHeader;
>  
>  static void tcg_register_jit_int(void *buf, size_t size,

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 15/18] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 15/18] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly Richard Henderson
@ 2013-08-29 16:45   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 16:45 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:46AM -0700, Richard Henderson wrote:
> There are several hosts for which it would be useful to use the
> available 64-bit registers in a 32-bit pointer environment.
> 
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/hppa/tcg-target.c  |  4 ++++
>  tcg/hppa/tcg-target.h  |  4 ----
>  tcg/i386/tcg-target.h  | 10 ++++++----
>  tcg/sparc/tcg-target.h |  8 ++++++++
>  tcg/tcg.h              | 19 +++++++++++--------
>  tcg/tci/tcg-target.h   |  8 ++++++++
>  6 files changed, 37 insertions(+), 16 deletions(-)
> 
> diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
> index f464aff..0150e62 100644
> --- a/tcg/hppa/tcg-target.c
> +++ b/tcg/hppa/tcg-target.c
> @@ -22,6 +22,10 @@
>   * THE SOFTWARE.
>   */
>  
> +#if TCG_TARGET_REG_BITS != 32
> +#error unsupported
> +#endif
> +
>  #ifndef NDEBUG
>  static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
>      "%r0", "%r1", "%rp", "%r3", "%r4", "%r5", "%r6", "%r7",
> diff --git a/tcg/hppa/tcg-target.h b/tcg/hppa/tcg-target.h
> index a9257a5..302cf4e 100644
> --- a/tcg/hppa/tcg-target.h
> +++ b/tcg/hppa/tcg-target.h
> @@ -25,10 +25,6 @@
>  #ifndef TCG_TARGET_HPPA
>  #define TCG_TARGET_HPPA 1
>  
> -#if TCG_TARGET_REG_BITS != 32
> -#error unsupported
> -#endif
> -
>  #define TCG_TARGET_WORDS_BIGENDIAN
>  
>  #define TCG_TARGET_NB_REGS 32
> diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
> index 963e839..53914f1 100644
> --- a/tcg/i386/tcg-target.h
> +++ b/tcg/i386/tcg-target.h
> @@ -24,12 +24,14 @@
>  #ifndef TCG_TARGET_I386 
>  #define TCG_TARGET_I386 1
>  
> -//#define TCG_TARGET_WORDS_BIGENDIAN
> +#undef TCG_TARGET_WORDS_BIGENDIAN
>  
> -#if TCG_TARGET_REG_BITS == 64
> -# define TCG_TARGET_NB_REGS 16
> +#ifdef __x86_64__
> +# define TCG_TARGET_REG_BITS  64
> +# define TCG_TARGET_NB_REGS   16
>  #else
> -# define TCG_TARGET_NB_REGS 8
> +# define TCG_TARGET_REG_BITS  32
> +# define TCG_TARGET_NB_REGS    8
>  #endif
>  
>  typedef enum {
> diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h
> index d1ca2d6..d356c1b 100644
> --- a/tcg/sparc/tcg-target.h
> +++ b/tcg/sparc/tcg-target.h
> @@ -24,6 +24,14 @@
>  #ifndef TCG_TARGET_SPARC 
>  #define TCG_TARGET_SPARC 1
>  
> +#if UINTPTR_MAX == UINT32_MAX
> +# define TCG_TARGET_REG_BITS 32
> +#elif UINTPTR_MAX == UINT64_MAX
> +# define TCG_TARGET_REG_BITS 64
> +#else
> +# error Unknown pointer size for tcg target
> +#endif
> +
>  #define TCG_TARGET_WORDS_BIGENDIAN
>  
>  #define TCG_TARGET_NB_REGS 32
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index 6e2d619..9755189 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -23,13 +23,17 @@
>   */
>  #include "qemu-common.h"
>  
> -/* Target word size (must be identical to pointer size). */
> -#if UINTPTR_MAX == UINT32_MAX
> -# define TCG_TARGET_REG_BITS 32
> -#elif UINTPTR_MAX == UINT64_MAX
> -# define TCG_TARGET_REG_BITS 64
> -#else
> -# error Unknown pointer size for tcg target
> +#include "tcg-target.h"
> +
> +/* Default target word size to pointer size.  */
> +#ifndef TCG_TARGET_REG_BITS
> +# if UINTPTR_MAX == UINT32_MAX
> +#  define TCG_TARGET_REG_BITS 32
> +# elif UINTPTR_MAX == UINT64_MAX
> +#  define TCG_TARGET_REG_BITS 64
> +# else
> +#  error Unknown pointer size for tcg target
> +# endif
>  #endif
>  
>  #if TCG_TARGET_REG_BITS == 32
> @@ -46,7 +50,6 @@ typedef uint64_t tcg_target_ulong;
>  #error unsupported
>  #endif
>  
> -#include "tcg-target.h"
>  #include "tcg-runtime.h"
>  
>  #if TCG_TARGET_NB_REGS <= 32
> diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h
> index 18f57a2..4811e99 100644
> --- a/tcg/tci/tcg-target.h
> +++ b/tcg/tci/tcg-target.h
> @@ -44,6 +44,14 @@
>  
>  #define TCG_TARGET_INTERPRETER 1
>  
> +#if UINTPTR_MAX == UINT32_MAX
> +# define TCG_TARGET_REG_BITS 32
> +#elif UINTPTR_MAX == UINT64_MAX
> +# define TCG_TARGET_REG_BITS 64
> +#else
> +# error Unknown pointer size for tci target
> +#endif
> +
>  #ifdef CONFIG_DEBUG_TCG
>  /* Enable debug output. */
>  #define CONFIG_DEBUG_TCG_INTERPRETER

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 16/18] tcg-i386: Use intptr_t appropriately
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 16/18] tcg-i386: Use intptr_t appropriately Richard Henderson
@ 2013-08-29 16:45   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 16:45 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:47AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/i386/tcg-target.c | 38 ++++++++++++++++++--------------------
>  1 file changed, 18 insertions(+), 20 deletions(-)
> 
> diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
> index b1e4e5b..f3083b8 100644
> --- a/tcg/i386/tcg-target.c
> +++ b/tcg/i386/tcg-target.c
> @@ -430,8 +430,7 @@ static void tcg_out_modrm(TCGContext *s, int opc, int r, int rm)
>     that will follow the instruction.  */
>  
>  static void tcg_out_modrm_sib_offset(TCGContext *s, int opc, int r, int rm,
> -                                     int index, int shift,
> -                                     tcg_target_long offset)
> +                                     int index, int shift, intptr_t offset)
>  {
>      int mod, len;
>  
> @@ -439,8 +438,8 @@ static void tcg_out_modrm_sib_offset(TCGContext *s, int opc, int r, int rm,
>          if (TCG_TARGET_REG_BITS == 64) {
>              /* Try for a rip-relative addressing mode.  This has replaced
>                 the 32-bit-mode absolute addressing encoding.  */
> -            tcg_target_long pc = (tcg_target_long)s->code_ptr + 5 + ~rm;
> -            tcg_target_long disp = offset - pc;
> +            intptr_t pc = (intptr_t)s->code_ptr + 5 + ~rm;
> +            intptr_t disp = offset - pc;
>              if (disp == (int32_t)disp) {
>                  tcg_out_opc(s, opc, r, 0, 0);
>                  tcg_out8(s, (LOWREGMASK(r) << 3) | 5);
> @@ -514,7 +513,7 @@ static void tcg_out_modrm_sib_offset(TCGContext *s, int opc, int r, int rm,
>  
>  /* A simplification of the above with no index or shift.  */
>  static inline void tcg_out_modrm_offset(TCGContext *s, int opc, int r,
> -                                        int rm, tcg_target_long offset)
> +                                        int rm, intptr_t offset)
>  {
>      tcg_out_modrm_sib_offset(s, opc, r, rm, -1, 0, offset);
>  }
> @@ -735,7 +734,7 @@ static void tcg_out_jxx(TCGContext *s, int opc, int label_index, int small)
>      TCGLabel *l = &s->labels[label_index];
>  
>      if (l->has_value) {
> -        val = l->u.value - (tcg_target_long)s->code_ptr;
> +        val = l->u.value - (intptr_t)s->code_ptr;
>          val1 = val - 2;
>          if ((int8_t)val1 == val1) {
>              if (opc == -1) {
> @@ -975,9 +974,9 @@ static void tcg_out_movcond64(TCGContext *s, TCGCond cond, TCGArg dest,
>  }
>  #endif
>  
> -static void tcg_out_branch(TCGContext *s, int call, tcg_target_long dest)
> +static void tcg_out_branch(TCGContext *s, int call, uintptr_t dest)
>  {
> -    tcg_target_long disp = dest - (tcg_target_long)s->code_ptr - 5;
> +    intptr_t disp = dest - (intptr_t)s->code_ptr - 5;
>  
>      if (disp == (int32_t)disp) {
>          tcg_out_opc(s, call ? OPC_CALL_Jz : OPC_JMP_long, 0, 0, 0);
> @@ -989,12 +988,12 @@ static void tcg_out_branch(TCGContext *s, int call, tcg_target_long dest)
>      }
>  }
>  
> -static inline void tcg_out_calli(TCGContext *s, tcg_target_long dest)
> +static inline void tcg_out_calli(TCGContext *s, uintptr_t dest)
>  {
>      tcg_out_branch(s, 1, dest);
>  }
>  
> -static void tcg_out_jmp(TCGContext *s, tcg_target_long dest)
> +static void tcg_out_jmp(TCGContext *s, uintptr_t dest)
>  {
>      tcg_out_branch(s, 0, dest);
>  }
> @@ -1130,8 +1129,7 @@ static inline void setup_guest_base_seg(void) { }
>  #endif /* SOFTMMU */
>  
>  static void tcg_out_qemu_ld_direct(TCGContext *s, int datalo, int datahi,
> -                                   int base, tcg_target_long ofs, int seg,
> -                                   int sizeop)
> +                                   int base, intptr_t ofs, int seg, int sizeop)
>  {
>  #ifdef TARGET_WORDS_BIGENDIAN
>      const int bswap = 1;
> @@ -1281,7 +1279,7 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>  }
>  
>  static void tcg_out_qemu_st_direct(TCGContext *s, int datalo, int datahi,
> -                                   int base, tcg_target_long ofs, int seg,
> +                                   int base, intptr_t ofs, int seg,
>                                     int sizeop)
>  {
>  #ifdef TARGET_WORDS_BIGENDIAN
> @@ -1499,7 +1497,7 @@ static void tcg_out_qemu_ld_slow_path(TCGContext *s, TCGLabelQemuLdst *label)
>         jmp next_code : jump to the code corresponding to next IR of qemu_ld/st
>      */
>  
> -    tcg_out_calli(s, (tcg_target_long)qemu_ld_helpers[s_bits]);
> +    tcg_out_calli(s, (uintptr_t)qemu_ld_helpers[s_bits]);
>  
>      /* Jump to post-processing code */
>      tcg_out8(s, OPC_JMP_short);
> @@ -1556,7 +1554,7 @@ static void tcg_out_qemu_ld_slow_path(TCGContext *s, TCGLabelQemuLdst *label)
>      }
>  
>      /* Jump to the code corresponding to next IR of qemu_st */
> -    tcg_out_jmp(s, (tcg_target_long)raddr);
> +    tcg_out_jmp(s, (uintptr_t)raddr);
>  }
>  
>  /*
> @@ -1621,7 +1619,7 @@ static void tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *label)
>         jmp next_code : jump to the code corresponding to next IR of qemu_ld/st
>      */
>  
> -    tcg_out_calli(s, (tcg_target_long)qemu_st_helpers[s_bits]);
> +    tcg_out_calli(s, (uintptr_t)qemu_st_helpers[s_bits]);
>  
>      /* Jump to post-processing code */
>      tcg_out8(s, OPC_JMP_short);
> @@ -1639,7 +1637,7 @@ static void tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *label)
>      }
>  
>      /* Jump to the code corresponding to next IR of qemu_st */
> -    tcg_out_jmp(s, (tcg_target_long)raddr);
> +    tcg_out_jmp(s, (uintptr_t)raddr);
>  }
>  
>  /*
> @@ -1680,7 +1678,7 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,
>      switch(opc) {
>      case INDEX_op_exit_tb:
>          tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_EAX, args[0]);
> -        tcg_out_jmp(s, (tcg_target_long) tb_ret_addr);
> +        tcg_out_jmp(s, (uintptr_t)tb_ret_addr);
>          break;
>      case INDEX_op_goto_tb:
>          if (s->tb_jmp_offset) {
> @@ -1691,7 +1689,7 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,
>          } else {
>              /* indirect jump method */
>              tcg_out_modrm_offset(s, OPC_GRP5, EXT5_JMPN_Ev, -1,
> -                                 (tcg_target_long)(s->tb_next + args[0]));
> +                                 (intptr_t)(s->tb_next + args[0]));
>          }
>          s->tb_next_offset[args[0]] = s->code_ptr - s->code_buf;
>          break;
> @@ -2384,7 +2382,7 @@ static DebugFrame debug_frame = {
>  #if defined(ELF_HOST_MACHINE)
>  void tcg_register_jit(void *buf, size_t buf_size)
>  {
> -    debug_frame.fde.func_start = (tcg_target_long) buf;
> +    debug_frame.fde.func_start = (uintptr_t)buf;
>      debug_frame.fde.func_len = buf_size;
>  
>      tcg_register_jit_int(buf, buf_size, &debug_frame, sizeof(debug_frame));

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
 

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 17/18] tcg-i386: Adjust tcg_out_tlb_load for x32
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 17/18] tcg-i386: Adjust tcg_out_tlb_load for x32 Richard Henderson
@ 2013-08-29 16:45   ` Aurelien Jarno
  2013-08-29 17:53     ` Richard Henderson
  2013-08-29 20:52     ` Richard Henderson
  0 siblings, 2 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 16:45 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:48AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/i386/tcg-target.c | 35 +++++++++++++++++++++--------------
>  1 file changed, 21 insertions(+), 14 deletions(-)
> 
> diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
> index f3083b8..dfda76e 100644
> --- a/tcg/i386/tcg-target.c
> +++ b/tcg/i386/tcg-target.c
> @@ -1061,33 +1061,40 @@ static inline void tcg_out_tlb_load(TCGContext *s, int addrlo_idx,
>      const int addrlo = args[addrlo_idx];
>      const int r0 = TCG_REG_L0;
>      const int r1 = TCG_REG_L1;
> -    TCGType type = TCG_TYPE_I32;
> -    int rexw = 0;
> +    TCGType ttype = TCG_TYPE_I32;
> +    TCGType htype = TCG_TYPE_I32;
> +    int trexw = 0, hrexw = 0;
>  
> -    if (TCG_TARGET_REG_BITS == 64 && TARGET_LONG_BITS == 64) {
> -        type = TCG_TYPE_I64;
> -        rexw = P_REXW;
> +    if (TCG_TARGET_REG_BITS == 64) {
> +        if (TARGET_LONG_BITS == 64) {
> +            ttype = TCG_TYPE_I64;
> +            trexw = P_REXW;
> +        }
> +        if (sizeof(void *) == 8) {
> +            htype = TCG_TYPE_I64;
> +            hrexw = P_REXW;
> +        }
>      }
>  
> -    tcg_out_mov(s, type, r0, addrlo);
> -    tcg_out_mov(s, type, r1, addrlo);
> +    tcg_out_mov(s, htype, r0, addrlo);
> +    tcg_out_mov(s, ttype, r1, addrlo);
>  
> -    tcg_out_shifti(s, SHIFT_SHR + rexw, r0,
> +    tcg_out_shifti(s, SHIFT_SHR + hrexw, r0,
>                     TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS);
>  
> -    tgen_arithi(s, ARITH_AND + rexw, r1,
> +    tgen_arithi(s, ARITH_AND + trexw, r1,
>                  TARGET_PAGE_MASK | ((1 << s_bits) - 1), 0);
> -    tgen_arithi(s, ARITH_AND + rexw, r0,
> +    tgen_arithi(s, ARITH_AND + hrexw, r0,
>                  (CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS, 0);
>  
> -    tcg_out_modrm_sib_offset(s, OPC_LEA + P_REXW, r0, TCG_AREG0, r0, 0,
> +    tcg_out_modrm_sib_offset(s, OPC_LEA + hrexw, r0, TCG_AREG0, r0, 0,
>                               offsetof(CPUArchState, tlb_table[mem_index][0])
>                               + which);
>  
>      /* cmp 0(r0), r1 */
> -    tcg_out_modrm_offset(s, OPC_CMP_GvEv + rexw, r1, r0, 0);
> +    tcg_out_modrm_offset(s, OPC_CMP_GvEv + trexw, r1, r0, 0);
>  
> -    tcg_out_mov(s, type, r1, addrlo);
> +    tcg_out_mov(s, ttype, r1, addrlo);

This one is not fully correct. It should be ttype for the slow path (the
value is used as an argument to the helper function), but htype for the
fast path (the value is used as a host pointer).

Using ttype currently ensures the type is safe, but it might worth
adding a comment in case ttype or htype is changed.
>  
>      /* jne slow_path */
>      tcg_out_opc(s, OPC_JCC_long + JCC_JNE, 0, 0, 0);
> @@ -1107,7 +1114,7 @@ static inline void tcg_out_tlb_load(TCGContext *s, int addrlo_idx,
>      /* TLB Hit.  */
>  
>      /* add addend(r0), r1 */
> -    tcg_out_modrm_offset(s, OPC_ADD_GvEv + P_REXW, r1, r0,
> +    tcg_out_modrm_offset(s, OPC_ADD_GvEv + hrexw, r1, r0,
>                           offsetof(CPUTLBEntry, addend) - which);
>  }
>  #elif defined(__x86_64__) && defined(__linux__)

This patch (trivially) conflicts with commit 'Tidy qemu_ld/st slow path'
which is now applied, so it has to be updated. Otherwise and except the
above comment, it looks fine to me.

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 18/18] configure: Allow x32 as a host
  2013-08-22 16:58 ` [Qemu-devel] [PATCH 18/18] configure: Allow x32 as a host Richard Henderson
@ 2013-08-29 16:45   ` Aurelien Jarno
  0 siblings, 0 replies; 42+ messages in thread
From: Aurelien Jarno @ 2013-08-29 16:45 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, Aug 22, 2013 at 09:58:49AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  configure | 27 ++++++++++++++++++---------
>  1 file changed, 18 insertions(+), 9 deletions(-)
> 
> diff --git a/configure b/configure
> index 18fa608..c0aee9d 100755
> --- a/configure
> +++ b/configure
> @@ -362,7 +362,11 @@ if test ! -z "$cpu" ; then
>  elif check_define __i386__ ; then
>    cpu="i386"
>  elif check_define __x86_64__ ; then
> -  cpu="x86_64"
> +  if check_define __ILP32__ ; then
> +    cpu="x32"
> +  else
> +    cpu="x86_64"
> +  fi
>  elif check_define __sparc__ ; then
>    if check_define __arch64__ ; then
>      cpu="sparc64"
> @@ -399,7 +403,7 @@ ARCH=
>  # Normalise host CPU name and set ARCH.
>  # Note that this case should only have supported host CPUs, not guests.
>  case "$cpu" in
> -  ia64|ppc|ppc64|s390|s390x|sparc64)
> +  ia64|ppc|ppc64|s390|s390x|sparc64|x32)
>      cpu="$cpu"
>    ;;
>    i386|i486|i586|i686|i86pc|BePC)
> @@ -550,7 +554,7 @@ Haiku)
>    kvm="yes"
>    vhost_net="yes"
>    vhost_scsi="yes"
> -  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
> +  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "x32" ] ; then
>      audio_possible_drivers="$audio_possible_drivers fmod"
>    fi
>    QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
> @@ -977,6 +981,11 @@ case "$cpu" in
>             LDFLAGS="-m64 $LDFLAGS"
>             cc_i386='$(CC) -m32'
>             ;;
> +    x32)
> +           CPU_CFLAGS="-mx32"
> +           LDFLAGS="-mx32 $LDFLAGS"
> +           cc_i386='$(CC) -m32'
> +           ;;
>      # No special flags required for other host CPUs
>  esac
>  
> @@ -1251,7 +1260,7 @@ fi
>  
>  if test "$pie" = ""; then
>    case "$cpu-$targetos" in
> -    i386-Linux|x86_64-Linux|i386-OpenBSD|x86_64-OpenBSD)
> +    i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
>        ;;
>      *)
>        pie="no"
> @@ -3475,7 +3484,7 @@ fi
>  if test "$pie" = "no" ; then
>    textseg_addr=
>    case "$cpu" in
> -    arm | hppa | i386 | m68k | ppc | ppc64 | s390* | sparc | sparc64 | x86_64)
> +    arm | hppa | i386 | m68k | ppc | ppc64 | s390* | sparc | sparc64 | x86_64 | x32)
>        textseg_addr=0x60000000
>        ;;
>      mips)
> @@ -3650,7 +3659,7 @@ echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
>  echo "ARCH=$ARCH" >> $config_host_mak
>  
>  case "$cpu" in
> -  arm|i386|x86_64|ppc|aarch64)
> +  arm|i386|x86_64|x32|ppc|aarch64)
>      # The TCG interpreter currently does not support ld/st optimization.
>      if test "$tcg_interpreter" = "no" ; then
>          echo "CONFIG_QEMU_LDST_OPTIMIZATION=y" >> $config_host_mak
> @@ -4079,7 +4088,7 @@ elif test "$ARCH" = "sparc64" ; then
>    QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
>  elif test "$ARCH" = "s390x" ; then
>    QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
> -elif test "$ARCH" = "x86_64" ; then
> +elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
>    QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
>  else
>    QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
> @@ -4141,7 +4150,7 @@ fi
>  if test "$linux" = "yes" ; then
>    mkdir -p linux-headers
>    case "$cpu" in
> -  i386|x86_64)
> +  i386|x86_64|x32)
>      linux_arch=x86
>      ;;
>    ppcemb|ppc|ppc64)
> @@ -4407,7 +4416,7 @@ for i in $ARCH $TARGET_BASE_ARCH ; do
>      echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
>      echo "CONFIG_HPPA_DIS=y"  >> config-all-disas.mak
>    ;;
> -  i386|x86_64)
> +  i386|x86_64|x32)
>      echo "CONFIG_I386_DIS=y"  >> $config_target_mak
>      echo "CONFIG_I386_DIS=y"  >> config-all-disas.mak

Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 17/18] tcg-i386: Adjust tcg_out_tlb_load for x32
  2013-08-29 16:45   ` Aurelien Jarno
@ 2013-08-29 17:53     ` Richard Henderson
  2013-08-29 20:52     ` Richard Henderson
  1 sibling, 0 replies; 42+ messages in thread
From: Richard Henderson @ 2013-08-29 17:53 UTC (permalink / raw)
  To: Aurelien Jarno; +Cc: qemu-devel

On 08/29/2013 09:45 AM, Aurelien Jarno wrote:
>> > -    tcg_out_mov(s, type, r1, addrlo);
>> > +    tcg_out_mov(s, ttype, r1, addrlo);
> This one is not fully correct. It should be ttype for the slow path (the
> value is used as an argument to the helper function), but htype for the
> fast path (the value is used as a host pointer).
> 
> Using ttype currently ensures the type is safe, but it might worth
> adding a comment in case ttype or htype is changed.

You're right, I'm not zero-extending the register properly for the fast path,
in the case of a 64-bit guest.

Although I could save more space on the fast path for x32 by avoiding the
copy/zero-extension here and instead using the ADDR32 prefix on the actual
memory operation.

Will fix.


r~

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: [Qemu-devel] [PATCH 17/18] tcg-i386: Adjust tcg_out_tlb_load for x32
  2013-08-29 16:45   ` Aurelien Jarno
  2013-08-29 17:53     ` Richard Henderson
@ 2013-08-29 20:52     ` Richard Henderson
  1 sibling, 0 replies; 42+ messages in thread
From: Richard Henderson @ 2013-08-29 20:52 UTC (permalink / raw)
  To: Aurelien Jarno; +Cc: qemu-devel

On 08/29/2013 09:45 AM, Aurelien Jarno wrote:
>> > -    tcg_out_mov(s, type, r1, addrlo);
>> > +    tcg_out_mov(s, ttype, r1, addrlo);
> This one is not fully correct. It should be ttype for the slow path (the
> value is used as an argument to the helper function), but htype for the
> fast path (the value is used as a host pointer).
> 
> Using ttype currently ensures the type is safe, but it might worth
> adding a comment in case ttype or htype is changed.

I'll add the following comment:

+    /* Prepare for both the fast path add of the tlb addend, and the slow
+       path function argument setup.  There are two cases worth note:
+       For 32-bit guest and x86_64 host, MOVL zero-extends the guest address
+       before the fastpath ADDQ below.  For 64-bit guest and x32 host, MOVQ
+       copies the entire guest address for the slow path, while truncation
+       for the 32-bit host happens with the fastpath ADDL below.  */
     tcg_out_mov(s, ttype, r1, addrlo);



r~

^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2013-08-29 20:53 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
2013-08-22 16:58 ` [Qemu-devel] [PATCH 01/18] qtest: Fix FMT_timeval vs time_t Richard Henderson
2013-08-22 17:09   ` Andreas Färber
2013-08-22 17:53     ` Richard Henderson
2013-08-22 18:01       ` Andreas Färber
2013-08-22 18:05         ` Richard Henderson
2013-08-22 16:58 ` [Qemu-devel] [PATCH 02/18] tcg: Change flush_icache_range arguments to uintptr_t Richard Henderson
2013-08-28 21:06   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 03/18] tcg: Change tcg_qemu_tb_exec return " Richard Henderson
2013-08-28 21:06   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 04/18] tcg: Fix next_tb type in cpu_exec Richard Henderson
2013-08-28 21:07   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 05/18] tcg: Define TCG_TYPE_PTR properly Richard Henderson
2013-08-29 10:53   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 06/18] tcg: Define TCG_ptr properly Richard Henderson
2013-08-29 10:53   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 07/18] tcg: Change frame pointer offsets to intptr_t Richard Henderson
2013-08-29 10:53   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 08/18] tcg: Change memory " Richard Henderson
2013-08-29 10:53   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 09/18] tcg: Change relocation " Richard Henderson
2013-08-29 10:53   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 10/18] tcg: Use uintptr_t in TCGHelperInfo Richard Henderson
2013-08-29 10:53   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 11/18] tcg: Change tcg_gen_exit_tb argument to uintptr_t Richard Henderson
2013-08-29 10:54   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 12/18] tcg: Change tcg_out_ld/st offset to intptr_t Richard Henderson
2013-08-29 16:44   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 13/18] tcg: Use appropriate types in tcg_reg_alloc_call Richard Henderson
2013-08-29 16:44   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 14/18] tcg: Fix jit debug for pointer size != register size Richard Henderson
2013-08-29 16:44   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 15/18] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly Richard Henderson
2013-08-29 16:45   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 16/18] tcg-i386: Use intptr_t appropriately Richard Henderson
2013-08-29 16:45   ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 17/18] tcg-i386: Adjust tcg_out_tlb_load for x32 Richard Henderson
2013-08-29 16:45   ` Aurelien Jarno
2013-08-29 17:53     ` Richard Henderson
2013-08-29 20:52     ` Richard Henderson
2013-08-22 16:58 ` [Qemu-devel] [PATCH 18/18] configure: Allow x32 as a host Richard Henderson
2013-08-29 16:45   ` Aurelien Jarno

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.