lkml.org 
[lkml]   [2001]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: Kernel's X86 ffs() doesn't work on constants.
Date
Followup to:  <200111282239.fASMdMY82422@aslan.scsiguy.com>
By author: "Justin T. Gibbs" <gibbs@scsiguy.com>
In newsgroup: linux.dev.kernel
>
> If you attempt to call ffs(SOME_CONSTAT) in an x86 kernel under
> Linux, you get messages like this:
>
> {standard input}: Assembler messages:
> {standard input}:14864: Error: suffix or operands invalid for `bsf'
>
> I'm not enough of a GCC asm syntax guru to understand why the
> compiler/assembler doesn't handle this, but it is hightly anoying.
>
> "Why not just code in the constant bit offset?", you ask? If
> the constant the bit offset is based on is ever changed, I must
> recognize that the change occured and change the second constant.
> For constants that are maintained outside of my code, I'd rather
> code the dependency once and let the compiler ensure that the constants
> are in sync.
>

Try changing the "g" in the definition of ffs() (asm/bitops.h) to
"rm"; the "g" constrains incorrectly allows immediate operands.

-hpa
--
<hpa@transmeta.com> at work, <hpa@zytor.com> in private!
"Unix gives you enough rope to shoot yourself in the foot."
http://www.zytor.com/~hpa/puzzle.txt <amsp@zytor.com>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:13    [W:0.046 / U:2.960 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site