bootloader & head.S weirdness & restructuring

Geert Uytterhoeven geert at linux-m68k.org
Fri Nov 26 04:13:28 EST 1999


On Tue, 23 Nov 1999, Dan Malek wrote:
> There are already "machine" dependent files at the lowest
> levels, just not in separate directories.  The complexity of
> the "#ifdefs" at the PPC level is mostly to ensure we get to
> the proper lower level dependent files.
> 
> Further, because of the integrated nature of some PPC processors,
> the line between processor and machine is a little fuzzy.  For
> example, the 8240 is a 603/MPC106/CHRP...but not exactly.  You
> can leverage lots of existing code, but need to twist it just
> a little in a couple of places.  It doesn't fit the processor
> and machine model very well.

Alternatively, you can base your decisions on specific features that are shared
among different machine types, and say

    if (has_feature_a) {
	...
    }

instead of

    #if defined(CONFIG_x) || defined(CONFIG_y) || defined(CONFIG_z)
    ...
    #endif

This way you can also easily create common kernel images that run on various
types of machines, since has_feature_a is just a variable that's set up
dynamically on kernel startup.

If you want to create an optimized kernel for a specific machine type, say

    #if defined(CONFIG_x) || defined(CONFIG_y) || defined(CONFIG_z)
    #define has_feature_a	1
    #else
    #define has_feature_a	0
    #endif

and gcc will optimize away the unused parts.

Gr{oetje,eeting}s,
--
Geert Uytterhoeven -- Linux/{m68k~Amiga,PPC~CHRP} -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-dev mailing list