All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wolfgang Denk <wd@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 2/3] Add generic bit operations
Date: Thu, 04 Jun 2009 13:45:22 +0200	[thread overview]
Message-ID: <20090604114522.BA79D832E416@gemini.denx.de> (raw)
In-Reply-To: <1244111241-32735-3-git-send-email-daniel@caiaq.de>

Dear Daniel Mack,

In message <1244111241-32735-3-git-send-email-daniel@caiaq.de> you wrote:
> This adds generic bit operations for all platforms and enables includes
> the implementations from asm-arm.

Be careful. I am not sure if a generic definition is even possible.
In any case, it is extremely risky to use in the wrong way.

It's nothing but faux ami.

My recommendation is NEVER to use any code based on bit numbers (even
if this is what some chip documentation may refer to)  but  ONLY  use
appropriate masks instead.

> new file mode 100644
> index 0000000..088e5da
> --- /dev/null
> +++ b/include/asm-generic/bitops.h
> @@ -0,0 +1,151 @@
> +#ifndef _ASM_GENERIC_BITOPS_H_
> +#define _ASM_GENERIC_BITOPS_H_
> +
> +#include <asm/types.h>
> +
> +#define BIT(nr)			(1UL << (nr))
> +#define BIT_MASK(nr)		(1UL << ((nr) % BITS_PER_LONG))
> +#define BIT_WORD(nr)		((nr) / BITS_PER_LONG)
> +#define BITS_PER_BYTE		8
> +#define BITS_TO_LONGS(nr)	DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))

You see, this is plain wrong on PowerPC.

On PowerPC, bit number 0 is the most significant bit, not the least
significant one as you assume here. So using this well-intended code
on a PowerPC system will most likely get you in trouble.

[And you cannot even use a generic definition for PowerPC,  as  some-
thing  like  "#define BIT(nr) (0x80000000 >> (nr))" will only work on
32 bit systems but be wrong on 64 bit ones.]


Let's get rid of this stuff, it is confusing.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"The one charm of marriage is that it makes a  life  of  deception  a
neccessity."                                            - Oscar Wilde

  parent reply	other threads:[~2009-06-04 11:45 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-04 10:27 [U-Boot] (no subject) Daniel Mack
2009-06-04 10:27 ` [U-Boot] [PATCH 1/3] ARM: remove unused bit operations Daniel Mack
2009-06-04 10:27   ` [U-Boot] [PATCH 2/3] Add generic " Daniel Mack
2009-06-04 10:27     ` [U-Boot] [PATCH 3/3] ARM: add unaligned macros Daniel Mack
2009-06-04 17:42       ` Daniel Mack
2009-06-04 19:03         ` Wolfgang Denk
2009-06-04 19:23           ` Daniel Mack
2009-06-05  3:21             ` Stefan Roese
2009-06-04 11:45     ` Wolfgang Denk [this message]
2009-06-04 11:48       ` [U-Boot] [PATCH 2/3] Add generic bit operations Daniel Mack
2009-06-04 11:58         ` Wolfgang Denk
2009-06-04 11:47     ` Wolfgang Denk
2009-06-04 11:54       ` Daniel Mack
     [not found]         ` <20090604115922.E6893832E416@gemini.denx.de>
2009-06-04 18:00           ` Daniel Mack
2009-06-04 18:18             ` Stefan Roese
2009-06-04 19:06             ` Wolfgang Denk
2009-06-05 20:44     ` Jean-Christophe PLAGNIOL-VILLARD
2009-06-07 22:41       ` Daniel Mack

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=20090604114522.BA79D832E416@gemini.denx.de \
    --to=wd@denx.de \
    --cc=u-boot@lists.denx.de \
    /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.