* [Qemu-devel] qemu host-utils.c @ 2007-10-23 23:22 Thiemo Seufer 2007-10-24 10:20 ` Fabrice Bellard 0 siblings, 1 reply; 12+ messages in thread From: Thiemo Seufer @ 2007-10-23 23:22 UTC (permalink / raw) To: qemu-devel CVSROOT: /sources/qemu Module name: qemu Changes by: Thiemo Seufer <ths> 07/10/23 23:22:54 Modified files: . : host-utils.c Log message: Fix overflow when multiplying two large positive numbers. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/qemu/host-utils.c?cvsroot=qemu&r1=1.1&r2=1.2 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] qemu host-utils.c 2007-10-23 23:22 [Qemu-devel] qemu host-utils.c Thiemo Seufer @ 2007-10-24 10:20 ` Fabrice Bellard 2007-10-24 10:35 ` J. Mayer 0 siblings, 1 reply; 12+ messages in thread From: Fabrice Bellard @ 2007-10-24 10:20 UTC (permalink / raw) To: qemu-devel I strongly suggest to reuse my code which was in target-i386/helper.c revision 1.80 which was far easier to validate. Moreover, integer divisions from target-i386/helper.c should be put in the same file. Regards, Fabrice. Thiemo Seufer wrote: > CVSROOT: /sources/qemu > Module name: qemu > Changes by: Thiemo Seufer <ths> 07/10/23 23:22:54 > > Modified files: > . : host-utils.c > > Log message: > Fix overflow when multiplying two large positive numbers. > > CVSWeb URLs: > http://cvs.savannah.gnu.org/viewcvs/qemu/host-utils.c?cvsroot=qemu&r1=1.1&r2=1.2 > > > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] qemu host-utils.c 2007-10-24 10:20 ` Fabrice Bellard @ 2007-10-24 10:35 ` J. Mayer 2007-10-24 17:37 ` Thiemo Seufer 0 siblings, 1 reply; 12+ messages in thread From: J. Mayer @ 2007-10-24 10:35 UTC (permalink / raw) To: qemu-devel On Wed, 2007-10-24 at 12:20 +0200, Fabrice Bellard wrote: > I strongly suggest to reuse my code which was in target-i386/helper.c > revision 1.80 which was far easier to validate. Moreover, integer > divisions from target-i386/helper.c should be put in the same file. I fully agree with this. I still use the same code in the PowerPC op_helper.c file because I never conviced myself that the host_utils version was bug-free. I would likely switch to the common version if I could be sure it cannot lead to any regression. > Thiemo Seufer wrote: > > CVSROOT: /sources/qemu > > Module name: qemu > > Changes by: Thiemo Seufer <ths> 07/10/23 23:22:54 > > > > Modified files: > > . : host-utils.c > > > > Log message: > > Fix overflow when multiplying two large positive numbers. > > > > CVSWeb URLs: > > http://cvs.savannah.gnu.org/viewcvs/qemu/host-utils.c?cvsroot=qemu&r1=1.1&r2=1.2 > > > > > > > > > > > -- J. Mayer <l_indien@magic.fr> Never organized ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] qemu host-utils.c 2007-10-24 10:35 ` J. Mayer @ 2007-10-24 17:37 ` Thiemo Seufer 2007-10-24 18:46 ` Jocelyn Mayer ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Thiemo Seufer @ 2007-10-24 17:37 UTC (permalink / raw) To: J. Mayer; +Cc: qemu-devel J. Mayer wrote: > > On Wed, 2007-10-24 at 12:20 +0200, Fabrice Bellard wrote: > > I strongly suggest to reuse my code which was in target-i386/helper.c > > revision 1.80 which was far easier to validate. Moreover, integer > > divisions from target-i386/helper.c should be put in the same file. > > I fully agree with this. I still use the same code in the PowerPC > op_helper.c file because I never conviced myself that the host_utils > version was bug-free. I would likely switch to the common version if I > could be sure it cannot lead to any regression. Like this? Questions/Comments I have: - Is the BSD-style copyright still ok for this version? - The x86-64 assembler is untested for this version, could you check it works for you? - SPARC and Alpha look like they will break on 32bit hosts, they should do multiplications the same way as the other 64bit targets. Thiemo Index: qemu-cvs/host-utils.c =================================================================== --- qemu-cvs.orig/host-utils.c +++ qemu-cvs/host-utils.c @@ -1,6 +1,8 @@ /* * Utility compute operations used by translated code. * + * Copyright (c) 2003 Fabrice Bellard + * Copyright (c) 2003-2007 Jocelyn Mayer * Copyright (c) 2007 Aurelien Jarno * * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -24,54 +26,90 @@ #include "vl.h" -/* Signed 64x64 -> 128 multiplication */ +#define DEBUG_MULDEV -void muls64(int64_t *phigh, int64_t *plow, int64_t a, int64_t b) +/* Long integer helpers */ +static void add128 (uint64_t *plow, uint64_t *phigh, uint64_t a, uint64_t b) { -#if defined(__x86_64__) - __asm__ ("imul %0\n\t" - : "=d" (*phigh), "=a" (*plow) - : "a" (a), "0" (b) - ); -#else - int64_t ph; - uint64_t pm1, pm2, pl; + *plow += a; + /* carry test */ + if (*plow < a) + (*phigh)++; + *phigh += b; +} + +static void neg128 (uint64_t *plow, uint64_t *phigh) +{ + *plow = ~*plow; + *phigh = ~*phigh; + add128(plow, phigh, 1, 0); +} - pl = (uint64_t)((uint32_t)a) * (uint64_t)((uint32_t)b); - pm1 = (a >> 32) * (uint32_t)b; - pm2 = (uint32_t)a * (b >> 32); - ph = (a >> 32) * (b >> 32); - - ph += (int64_t)pm1 >> 32; - ph += (int64_t)pm2 >> 32; - pm1 = (uint64_t)((uint32_t)pm1) + (uint64_t)((uint32_t)pm2) + (pl >> 32); +static void mul64 (uint64_t *plow, uint64_t *phigh, uint64_t a, uint64_t b) +{ + uint32_t a0, a1, b0, b1; + uint64_t v; - *phigh = ph + ((int64_t)pm1 >> 32); - *plow = (pm1 << 32) + (uint32_t)pl; -#endif + a0 = a; + a1 = a >> 32; + + b0 = b; + b1 = b >> 32; + + v = (uint64_t)a0 * (uint64_t)b0; + *plow = v; + *phigh = 0; + + v = (uint64_t)a0 * (uint64_t)b1; + add128(plow, phigh, v << 32, v >> 32); + + v = (uint64_t)a1 * (uint64_t)b0; + add128(plow, phigh, v << 32, v >> 32); + + v = (uint64_t)a1 * (uint64_t)b1; + *phigh += v; } + /* Unsigned 64x64 -> 128 multiplication */ -void mulu64(uint64_t *phigh, uint64_t *plow, uint64_t a, uint64_t b) +void mulu64 (uint64_t *plow, uint64_t *phigh, uint64_t a, uint64_t b) { #if defined(__x86_64__) __asm__ ("mul %0\n\t" : "=d" (*phigh), "=a" (*plow) - : "a" (a), "0" (b) - ); + : "a" (a), "0" (b)); #else - uint64_t ph, pm1, pm2, pl; + mul64(plow, phigh, a, b); +#endif +#if defined(DEBUG_MULDIV) + printf("mulu64: 0x%016llx * 0x%016llx = 0x%016llx%016llx\n", + a, b, *phigh, *plow); +#endif +} - pl = (uint64_t)((uint32_t)a) * (uint64_t)((uint32_t)b); - pm1 = (a >> 32) * (uint32_t)b; - pm2 = (uint32_t)a * (b >> 32); - ph = (a >> 32) * (b >> 32); - - ph += pm1 >> 32; - ph += pm2 >> 32; - pm1 = (uint64_t)((uint32_t)pm1) + (uint64_t)((uint32_t)pm2) + (pl >> 32); +/* Signed 64x64 -> 128 multiplication */ +void muls64 (uint64_t *plow, uint64_t *phigh, int64_t a, int64_t b) +{ +#if defined(__x86_64__) + __asm__ ("imul %0\n\t" + : "=d" (*phigh), "=a" (*plow) + : "a" (a), "0" (b)); +#else + int sa, sb; - *phigh = ph + (pm1 >> 32); - *plow = (pm1 << 32) + (uint32_t)pl; + sa = (a < 0); + if (sa) + a = -a; + sb = (b < 0); + if (sb) + b = -b; + mul64(plow, phigh, a, b); + if (sa ^ sb) { + neg128(plow, phigh); + } +#endif +#if defined(DEBUG_MULDIV) + printf("muls64: 0x%016llx * 0x%016llx = 0x%016llx%016llx\n", + a, b, *phigh, *plow); #endif } Index: qemu-cvs/target-ppc/op_helper.c =================================================================== --- qemu-cvs.orig/target-ppc/op_helper.c +++ qemu-cvs/target-ppc/op_helper.c @@ -217,75 +217,14 @@ /*****************************************************************************/ /* Fixed point operations helpers */ #if defined(TARGET_PPC64) -static void add128 (uint64_t *plow, uint64_t *phigh, uint64_t a, uint64_t b) -{ - *plow += a; - /* carry test */ - if (*plow < a) - (*phigh)++; - *phigh += b; -} - -static void neg128 (uint64_t *plow, uint64_t *phigh) -{ - *plow = ~*plow; - *phigh = ~*phigh; - add128(plow, phigh, 1, 0); -} - -static void mul64 (uint64_t *plow, uint64_t *phigh, uint64_t a, uint64_t b) -{ - uint32_t a0, a1, b0, b1; - uint64_t v; - - a0 = a; - a1 = a >> 32; - - b0 = b; - b1 = b >> 32; - - v = (uint64_t)a0 * (uint64_t)b0; - *plow = v; - *phigh = 0; - - v = (uint64_t)a0 * (uint64_t)b1; - add128(plow, phigh, v << 32, v >> 32); - - v = (uint64_t)a1 * (uint64_t)b0; - add128(plow, phigh, v << 32, v >> 32); - - v = (uint64_t)a1 * (uint64_t)b1; - *phigh += v; -#if defined(DEBUG_MULDIV) - printf("mul: 0x%016llx * 0x%016llx = 0x%016llx%016llx\n", - a, b, *phigh, *plow); -#endif -} - void do_mul64 (uint64_t *plow, uint64_t *phigh) { - mul64(plow, phigh, T0, T1); -} - -static void imul64 (uint64_t *plow, uint64_t *phigh, int64_t a, int64_t b) -{ - int sa, sb; - - sa = (a < 0); - if (sa) - a = -a; - sb = (b < 0); - if (sb) - b = -b; - mul64(plow, phigh, a, b); - if (sa ^ sb) { - neg128(plow, phigh); - } + mulu64(plow, phigh, T0, T1); } void do_imul64 (uint64_t *plow, uint64_t *phigh) { - imul64(plow, phigh, T0, T1); + muls64(plow, phigh, T0, T1); } #endif Index: qemu-cvs/exec-all.h =================================================================== --- qemu-cvs.orig/exec-all.h +++ qemu-cvs/exec-all.h @@ -91,8 +91,8 @@ extern FILE *logfile; extern int loglevel; -void muls64(int64_t *phigh, int64_t *plow, int64_t a, int64_t b); -void mulu64(uint64_t *phigh, uint64_t *plow, uint64_t a, uint64_t b); +void muls64(int64_t *plow, int64_t *phigh, int64_t a, int64_t b); +void mulu64(uint64_t *plow, uint64_t *phigh, uint64_t a, uint64_t b); int gen_intermediate_code(CPUState *env, struct TranslationBlock *tb); int gen_intermediate_code_pc(CPUState *env, struct TranslationBlock *tb); Index: qemu-cvs/target-i386/helper.c =================================================================== --- qemu-cvs.orig/target-i386/helper.c +++ qemu-cvs/target-i386/helper.c @@ -3735,7 +3735,7 @@ { uint64_t r0, r1; - muls64(&r1, &r0, EAX, T0); + muls64(&r0, &r1, EAX, T0); EAX = r0; EDX = r1; CC_DST = r0; @@ -3746,7 +3746,7 @@ { uint64_t r0, r1; - muls64(&r1, &r0, T0, T1); + muls64(&r0, &r1, T0, T1); T0 = r0; CC_DST = r0; CC_SRC = ((int64_t)r1 != ((int64_t)r0 >> 63)); Index: qemu-cvs/target-mips/op.c =================================================================== --- qemu-cvs.orig/target-mips/op.c +++ qemu-cvs/target-mips/op.c @@ -876,13 +876,13 @@ #if defined(TARGET_MIPSN32) || defined(TARGET_MIPS64) void op_dmult (void) { - CALL_FROM_TB4(muls64, &(env->HI[0][env->current_tc]), &(env->LO[0][env->current_tc]), T0, T1); + CALL_FROM_TB4(muls64, &(env->LO[0][env->current_tc]), &(env->HI[0][env->current_tc]), T0, T1); RETURN(); } void op_dmultu (void) { - CALL_FROM_TB4(mulu64, &(env->HI[0][env->current_tc]), &(env->LO[0][env->current_tc]), T0, T1); + CALL_FROM_TB4(mulu64, &(env->LO[0][env->current_tc]), &(env->HI[0][env->current_tc]), T0, T1); RETURN(); } #endif ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] qemu host-utils.c 2007-10-24 17:37 ` Thiemo Seufer @ 2007-10-24 18:46 ` Jocelyn Mayer 2007-10-24 19:26 ` Fabrice Bellard 2007-10-24 22:26 ` J. Mayer 2007-10-27 6:45 ` Blue Swirl 2 siblings, 1 reply; 12+ messages in thread From: Jocelyn Mayer @ 2007-10-24 18:46 UTC (permalink / raw) To: Thiemo Seufer; +Cc: qemu-devel On Wed, 2007-10-24 at 18:37 +0100, Thiemo Seufer wrote: > J. Mayer wrote: > > > > On Wed, 2007-10-24 at 12:20 +0200, Fabrice Bellard wrote: > > > I strongly suggest to reuse my code which was in target-i386/helper.c > > > revision 1.80 which was far easier to validate. Moreover, integer > > > divisions from target-i386/helper.c should be put in the same file. > > > > I fully agree with this. I still use the same code in the PowerPC > > op_helper.c file because I never conviced myself that the host_utils > > version was bug-free. I would likely switch to the common version if I > > could be sure it cannot lead to any regression. > > Like this? Questions/Comments I have: > - Is the BSD-style copyright still ok for this version? This I cannot tell. Fabrice should say how he feels about it. 1 detail: I just copied Fabrice code from i386 target, then I don't own any copyright on it... > - The x86-64 assembler is untested for this version, could you check > it works for you? I could check this, as I got an amd64 host. As the optimized version may lead to emit only one or a few host instructions, it may be great to have them be static inline to make gcc able to fully optimize the code. One other point: you may prefer not to change the host-utils API to avoid changes i386 and Mips. It may also be safer, to keep the x86_64 optimized code unchanged. I don't care about the argument order, I can adapt and optimize the code in the PowerPC target for this later. > - SPARC and Alpha look like they will break on 32bit hosts, they should > do multiplications the same way as the other 64bit targets. I don't think Alpha would not work on 32 bits hosts but I fully agree it should use the same helpers. Especially because it's obvious that umulh is bugged ! -- Jocelyn Mayer <l_indien@magic.fr> ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] qemu host-utils.c 2007-10-24 18:46 ` Jocelyn Mayer @ 2007-10-24 19:26 ` Fabrice Bellard 0 siblings, 0 replies; 12+ messages in thread From: Fabrice Bellard @ 2007-10-24 19:26 UTC (permalink / raw) To: qemu-devel; +Cc: l_indien Jocelyn Mayer wrote: > On Wed, 2007-10-24 at 18:37 +0100, Thiemo Seufer wrote: >> J. Mayer wrote: >>> On Wed, 2007-10-24 at 12:20 +0200, Fabrice Bellard wrote: >>>> I strongly suggest to reuse my code which was in target-i386/helper.c >>>> revision 1.80 which was far easier to validate. Moreover, integer >>>> divisions from target-i386/helper.c should be put in the same file. >>> I fully agree with this. I still use the same code in the PowerPC >>> op_helper.c file because I never conviced myself that the host_utils >>> version was bug-free. I would likely switch to the common version if I >>> could be sure it cannot lead to any regression. >> Like this? Questions/Comments I have: >> - Is the BSD-style copyright still ok for this version? > > This I cannot tell. Fabrice should say how he feels about it. > 1 detail: I just copied Fabrice code from i386 target, then I don't own > any copyright on it... BSD-style license is OK. > [...] Fabrice. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] qemu host-utils.c 2007-10-24 17:37 ` Thiemo Seufer 2007-10-24 18:46 ` Jocelyn Mayer @ 2007-10-24 22:26 ` J. Mayer 2007-10-25 23:00 ` Thiemo Seufer 2007-10-27 6:45 ` Blue Swirl 2 siblings, 1 reply; 12+ messages in thread From: J. Mayer @ 2007-10-24 22:26 UTC (permalink / raw) To: Thiemo Seufer; +Cc: qemu-devel On Wed, 2007-10-24 at 18:37 +0100, Thiemo Seufer wrote: > J. Mayer wrote: > > > > On Wed, 2007-10-24 at 12:20 +0200, Fabrice Bellard wrote: > > > I strongly suggest to reuse my code which was in target-i386/helper.c > > > revision 1.80 which was far easier to validate. Moreover, integer > > > divisions from target-i386/helper.c should be put in the same file. > > > > I fully agree with this. I still use the same code in the PowerPC > > op_helper.c file because I never conviced myself that the host_utils > > version was bug-free. I would likely switch to the common version if I > > could be sure it cannot lead to any regression. > > Like this? Questions/Comments I have: [...] > - The x86-64 assembler is untested for this version, could you check > it works for you? I did a small test program, comparing the result of the Fabrice implementation and the x86_64 optimized implementation results in signed and unsigned case. I used the code from the CVS from host-utils.c for the optimized case and from target-ppc/op_helper.c for the C code case. For my tests vectors, I first used a "walking-one" like pattern generation algorithm (including the 0 argument cases) then purely random numbers. I did more than 2^32 tests with no differences between the two implementations. What I suggest, to be safe: - do not change the current host-utils API and keep the x86_64 optimised case as it is. This way, we are sure not to break anything. - just merge Fabrice's code to replace the non-x86_64 code. As using this API could lead to more optimisations in the PowerPC implementation code, I can wait for you to commit this part and remove the "private" helpers as soon as you'll have commited. I will then also sanitize the Alpha case, which seems broken, even when running on 64 bits hosts. I don't know much for Sparc, then I won't change it. [...] -- J. Mayer <l_indien@magic.fr> Never organized ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] qemu host-utils.c 2007-10-24 22:26 ` J. Mayer @ 2007-10-25 23:00 ` Thiemo Seufer 0 siblings, 0 replies; 12+ messages in thread From: Thiemo Seufer @ 2007-10-25 23:00 UTC (permalink / raw) To: J. Mayer; +Cc: qemu-devel J. Mayer wrote: > > On Wed, 2007-10-24 at 18:37 +0100, Thiemo Seufer wrote: > > J. Mayer wrote: > > > > > > On Wed, 2007-10-24 at 12:20 +0200, Fabrice Bellard wrote: > > > > I strongly suggest to reuse my code which was in target-i386/helper.c > > > > revision 1.80 which was far easier to validate. Moreover, integer > > > > divisions from target-i386/helper.c should be put in the same file. > > > > > > I fully agree with this. I still use the same code in the PowerPC > > > op_helper.c file because I never conviced myself that the host_utils > > > version was bug-free. I would likely switch to the common version if I > > > could be sure it cannot lead to any regression. > > > > Like this? Questions/Comments I have: > > [...] > > > - The x86-64 assembler is untested for this version, could you check > > it works for you? > > I did a small test program, comparing the result of the Fabrice > implementation and the x86_64 optimized implementation results in signed > and unsigned case. I used the code from the CVS from host-utils.c for > the optimized case and from target-ppc/op_helper.c for the C code case. > For my tests vectors, I first used a "walking-one" like pattern > generation algorithm (including the 0 argument cases) then purely random > numbers. I did more than 2^32 tests with no differences between the two > implementations. Thanks. > What I suggest, to be safe: > - do not change the current host-utils API and keep the x86_64 optimised > case as it is. This way, we are sure not to break anything. If with API you mean the change in argument order, I reverted to Fabrice's original x86-64 API definition, which happens to be the same as used on ppc. I'm reasonably confident that mips64 is correct. > - just merge Fabrice's code to replace the non-x86_64 code. > As using this API could lead to more optimisations in the PowerPC > implementation code, I can wait for you to commit this part and remove > the "private" helpers as soon as you'll have commited. I left out the ppc changes from my commit. > I will then also sanitize the Alpha case, which seems broken, even when > running on 64 bits hosts. > I don't know much for Sparc, then I won't change it. That comment was meant to point out a bug, not to urge you to do all the work. :-) Thiemo ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] qemu host-utils.c 2007-10-24 17:37 ` Thiemo Seufer 2007-10-24 18:46 ` Jocelyn Mayer 2007-10-24 22:26 ` J. Mayer @ 2007-10-27 6:45 ` Blue Swirl 2007-10-27 11:11 ` Thiemo Seufer 2 siblings, 1 reply; 12+ messages in thread From: Blue Swirl @ 2007-10-27 6:45 UTC (permalink / raw) To: qemu-devel On 10/24/07, Thiemo Seufer <ths@networkno.de> wrote: > - SPARC and Alpha look like they will break on 32bit hosts, they should > do multiplications the same way as the other 64bit targets. I can't see how Sparc would break: smul and umul perform 32x32->64 bit multiplications, Sparc64 mulx does 64x64->64 bit multiplications. There is no overflow detection. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] qemu host-utils.c 2007-10-27 6:45 ` Blue Swirl @ 2007-10-27 11:11 ` Thiemo Seufer 0 siblings, 0 replies; 12+ messages in thread From: Thiemo Seufer @ 2007-10-27 11:11 UTC (permalink / raw) To: Blue Swirl; +Cc: qemu-devel Blue Swirl wrote: > On 10/24/07, Thiemo Seufer <ths@networkno.de> wrote: > > - SPARC and Alpha look like they will break on 32bit hosts, they should > > do multiplications the same way as the other 64bit targets. > > I can't see how Sparc would break: smul and umul perform 32x32->64 bit > multiplications, Sparc64 mulx does 64x64->64 bit multiplications. > There is no overflow detection. Ah, then it is ok. Thanks for the explanation. Thiemo ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] qemu host-utils.c @ 2007-10-25 23:00 Thiemo Seufer 0 siblings, 0 replies; 12+ messages in thread From: Thiemo Seufer @ 2007-10-25 23:00 UTC (permalink / raw) To: qemu-devel CVSROOT: /sources/qemu Module name: qemu Changes by: Thiemo Seufer <ths> 07/10/25 23:00:04 Modified files: . : host-utils.c Log message: Restore a more maintainable version of the 64bit multiply code. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/qemu/host-utils.c?cvsroot=qemu&r1=1.2&r2=1.3 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] qemu host-utils.c @ 2007-11-05 13:01 Jocelyn Mayer 0 siblings, 0 replies; 12+ messages in thread From: Jocelyn Mayer @ 2007-11-05 13:01 UTC (permalink / raw) To: qemu-devel CVSROOT: /sources/qemu Module name: qemu Changes by: Jocelyn Mayer <j_mayer> 07/11/05 13:01:41 Modified files: . : host-utils.c Log message: Code used by the linux-user targets should not use vl.h. Include exec.h instead. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/qemu/host-utils.c?cvsroot=qemu&r1=1.5&r2=1.6 ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2007-11-05 13:01 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-10-23 23:22 [Qemu-devel] qemu host-utils.c Thiemo Seufer 2007-10-24 10:20 ` Fabrice Bellard 2007-10-24 10:35 ` J. Mayer 2007-10-24 17:37 ` Thiemo Seufer 2007-10-24 18:46 ` Jocelyn Mayer 2007-10-24 19:26 ` Fabrice Bellard 2007-10-24 22:26 ` J. Mayer 2007-10-25 23:00 ` Thiemo Seufer 2007-10-27 6:45 ` Blue Swirl 2007-10-27 11:11 ` Thiemo Seufer -- strict thread matches above, loose matches on Subject: below -- 2007-10-25 23:00 Thiemo Seufer 2007-11-05 13:01 Jocelyn Mayer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).