All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@web.de>
To: Blue Swirl <blauwirbel@gmail.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
	qemu-devel <qemu-devel@nongnu.org>
Subject: [Qemu-devel] [PATCH v2] Use ffs in favor of ffsll
Date: Wed, 01 Jul 2009 22:55:02 +0200	[thread overview]
Message-ID: <4A4BCD26.2060102@web.de> (raw)
In-Reply-To: <4A4BC87A.6050005@web.de>

Jan Kiszka wrote:
> Blue Swirl wrote:
>> On 7/1/09, Jan Kiszka <jan.kiszka@web.de> wrote:
>>> Not all host platforms support the ll variant. This is not a critical
>>>  path, so go the easy way.
>>>  -    for (i = 0; i < ARRAY_SIZE(env->interrupt_bitmap); i++) {
>>>  -        bit = ffsll(env->interrupt_bitmap[i]);
>>>  +    for (i = 0; i < sizeof(env->interrupt_bitmap) / sizeof(int); i++) {
>>>  +        bit = ffs(((int *)env->interrupt_bitmap)[i]);
>>>          if (bit) {
>>>  -            pending_irq = i * 64 + bit - 1;
>>>  +            pending_irq = i * 8 * sizeof(int) + bit - 1;
>> I think this will not work on a big endian host.
> 
> Right, may theoretically bite us once we are able to migrate between kvm
> and tcg. Will send a better version nevertheless.
> 

I decided that a comment should suffice.

-----

Not all host platforms support the ll variant. This is not a critical
path, so go the easy way.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---

 target-i386/machine.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/target-i386/machine.c b/target-i386/machine.c
index 259302c..1a56b3d 100644
--- a/target-i386/machine.c
+++ b/target-i386/machine.c
@@ -147,10 +147,12 @@ void cpu_save(QEMUFile *f, void *opaque)
     /* There can only be one pending IRQ set in the bitmap at a time, so try
        to find it and save its number instead (-1 for none). */
     pending_irq = -1;
-    for (i = 0; i < ARRAY_SIZE(env->interrupt_bitmap); i++) {
-        bit = ffsll(env->interrupt_bitmap[i]);
+    for (i = 0; i < sizeof(env->interrupt_bitmap) / sizeof(int); i++) {
+        /* Note: This assumes little endian host, which is true in KVM mode.
+           In TCG mode it must be zero anyway. */
+        bit = ffs(((int *)env->interrupt_bitmap)[i]);
         if (bit) {
-            pending_irq = i * 64 + bit - 1;
+            pending_irq = i * 8 * sizeof(int) + bit - 1;
             break;
         }
     }

  reply	other threads:[~2009-07-01 20:55 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-01 20:22 [Qemu-devel] [PATCH] Use ffs in favor of ffsll Jan Kiszka
2009-07-01 20:27 ` [Qemu-devel] " Blue Swirl
2009-07-01 20:35   ` Jan Kiszka
2009-07-01 20:55     ` Jan Kiszka [this message]
2009-07-01 20:58       ` [Qemu-devel] [PATCH v2] " Nathan Froyd
2009-07-01 22:24         ` [Qemu-devel] " Jan Kiszka
2009-07-01 23:02         ` [Qemu-devel] " Stuart Brady
2009-07-02  7:04           ` [Qemu-devel] [PATCH] Use ctz64 " Jan Kiszka
2009-07-02  7:11             ` [Qemu-devel] [PATCH v2] " Jan Kiszka
2009-07-03  9:35               ` Paul Brook
2009-07-04  7:16                 ` Jan Kiszka
2009-07-02  8:39   ` [Qemu-devel] Re: [PATCH] Use ffs " Christoph Egger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A4BCD26.2060102@web.de \
    --to=jan.kiszka@web.de \
    --cc=aliguori@us.ibm.com \
    --cc=blauwirbel@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.