Subject: EVBARM - layout of BootConfig structure
To: None <port-evbarm@netbsd.org, port-arm@netbsd.org>
From: Richard Earnshaw <rearnsha@arm.com>
List: port-arm
Date: 08/11/2003 09:58:30
The current BootConfig structure in evbarm/include/bootconfig.h has

#define DRAM_BLOCKS     1

typedef struct _BootConfig {
        PhysMem dram[DRAM_BLOCKS];
        u_int dramblocks;
} BootConfig;

This is somewhat back-to-front, in that if I increase DRAM_BLOCKS (as I 
wish to do) that will move the offset of the dramblocks field.  I'd like 
to rearrange this structure to:

typedef struct _BootConfig {
        u_int dramblocks;
        PhysMem dram[DRAM_BLOCKS];
} BootConfig;

so that it is possible in future to bump the size of DRAM_BLOCKS without 
breaking a binary interface that is notionally shared between 
netbsd/evbarm and its "bios" (having netbsd able to access a larger array 
won't hurt, since the size only matters if NetBSD allocates one of these 
statically, and if it doesn't then it will never access beyond 
dramblocks-1 entries).  However, doing so will break things if any 
existing builds are already using a "bios" to probe memory.

So before I go ahead and do this, is anybody already relying on this 
structure externally?

R.