On Mon, Mar 7, 2016 at 8:37 PM, Peter Maydell <peter.mayd...@linaro.org>
wrote:
>
> On 8 March 2016 at 02:58, Aurelio Remonda
> <aurelio.remo...@tallertechnologies.com> wrote:
> > Hello, sorry for taking so long, I am working on this again.
> > About your last response, I was looking at the struct
stellaris_board_info
> > ,which contains
> > dc0, and this entire struct is const. If we need to calculate dc0 based
on
> > the provided RAM size
> > or default value at least the dc0 field should not be const.
>
> Yes, certainly.
>
> You might also need to look at the magic hex numbers in
> the stellaris_board[] array -- one is labelled /* dc0 */
> so might be related.

Thanks Peter!
I have a question about the set_memory_options function, when the m flag is
present, this function takes the size value (or the default_ram_size) and
perform
an QEMU_ALIGN_UP. Let's say you want the board default ram_size, the default
dc0 value should be 0xff00 (65280) when the align is made this value becomes
0x00ffff (65535). This align will make the dc0 value change, so I have to
make some
operations on ram_size so dc0 will be as exact as it should.

Something like this:
    ram_size |= ((ram_size-1)>>8);
    board->dc0 |= (ram_size & 0xffff)<<16;
On stellaris_init function

Then the sram_size and the flash_size are exposed like always. I change the
magic hex numbers
in the stellaris_board[] array from 0x00ff007f to 0x0000007f as the
flash_size
will not change even with the flag. The default_ram_size is also changed
for this board to
be 64K on lm3s6965evb_class_init func:
   mc->default_ram_size = 0x0000ff00;

What do you think of this approach? Thank you!


-- 

Aurelio Remonda

Taller Technologies Argentina

Software Engineer

San Lorenzo 47, 3rd Floor, Office 5
Córdoba, Argentina
Phone: +54-351-4217888 / 4218211

Reply via email to