On Fri, Jul 13, 2007 at 07:21:47AM -0400, Joseph Smith wrote:
> Quoting Peter Stuge <[EMAIL PROTECTED]>:
> > Please don't use bit shifting for multiplication and division.
> 
> > Quoting Stefan Reinauer <[EMAIL PROTECTED]>:
> > I think this is a bad dogma. Using shifts for mul/div is pretty
> > obvious to understand and almost courteous.
> 
> So which way is correct in linuxbios standards?

I guess either. :)


> Yup, DRA is the registers address, and dra is it's value.

Point was that dra held bank kb size.


> > dra = log2(dra);
> > if (dra > 3) {
> >   print_debug("incompatible\n");
> >   die("bye");
> > }
> > dra |= 0xf0;
> 
> What does the log2 function do?

base-2 logarithmic function

It returns the position of the leftmost 1 bit in the LE parameter.

log2(1) = 0
log2(2) = 1
log2(4) = 2
log2(8) = 3
etc

It is actually not sufficient though, since it's integer only in
romcc. Check that the kb page size is valid before calling log2(),
but it can still be used to conveniently calculate the needed value.


> And in what file does it live?

src/arch/i386/include/arch/romcc_io.h

There's also one version in util/romcc/tests/simple_test5.c that
uses __builtin_bsr() which compiles directly to the bsr opcode.


//Peter

-- 
linuxbios mailing list
[email protected]
http://www.linuxbios.org/mailman/listinfo/linuxbios

Reply via email to