This is the mail archive of the
ecos-patches@sources.redhat.com
mailing list for the eCos project.
Re: EDB7312 - Linux booting
BTW I had to modify this for the EDB7212 a while ago because linux
was confused by ATAG since on that platform memory is discontiguous
and its size and address are hardcoded in the kernel.
> On Fri, 2003-02-07 at 04:04, Jonathan Larmour wrote:
> > Gary Thomas wrote:
> > > Index: hal/arm/arch/current/src/redboot_linux_exec.c
> > [snip]
> > > - params->u.mem.start = CYGARC_PHYSICAL_ADDRESS(CYGMEM_REGION_ram);
> > > /* Round up so there's only one bit set in the memory size.
> > > * Don't double it if it's already a power of two, though.
> > > */
> > > params->u.mem.size = 1<<hal_msbindex(CYGMEM_REGION_ram_SIZE);
> > > if (params->u.mem.size < CYGMEM_REGION_ram_SIZE)
> > > params->u.mem.size <<= 1;
> > > + params->u.mem.start = CYGARC_PHYSICAL_ADDRESS(CYGMEM_REGION_ram);
> > > + // Linux doesn't like physical RAM to start on odd boundary
> > > + params->u.mem.start &= ~(params->u.mem.size-1);
> >
> > Excuse my ignorance, but why is this a power of two? Physical memory may
> > not be a power of two certainly.
>
> Ask Mark, he wrote this [I think] :-)
>
> I was just fixing a confusion here with the EDB7xxx in that it's
> really muddy when it computes the base address of RAM.
>
> --
> ------------------------------------------------------------
> Gary Thomas |
> MLB Associates | Consulting for the
> +1 (970) 229-1963 | Embedded world
> http://www.mlbassoc.com/ |
> email: <gary@mlbassoc.com> |
> gpg: http://www.chez-thomas.org/gary/gpg_key.asc
> ------------------------------------------------------------
>