On Mon, Mar 7, 2016 at 8:37 PM, Peter Maydell <
address@hidden> wrote:
>
> On 8 March 2016 at 02:58, Aurelio Remonda
> <
address@hidden> 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