Port-powerpc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/arch/evbppc/walnut



On Mon, Aug 18, 2003 at 04:06:18PM +1000, Simon Burge wrote:
> Hi Eduardo,
> 
> On Sun, Aug 03, 2003 at 11:28:46PM +0000, Eduardo Horvath wrote:
> 
> > Module Name:        src
> > Committed By:       eeh
> > Date:               Sun Aug  3 23:28:46 UTC 2003
> > 
> > Modified Files:
> > 
> >     src/sys/arch/evbppc/walnut: walnut_start.S
> > 
> > Log Message:
> > 
> > The firmware actually passes the info block pointer in the link register.
> 
> With this change, the info block pointer is set to 0xfffe2960, which is
> near the end of the ROM "invalidate_dcache" function.  The board info
> now looks like:
> 
>       Board config data:
>         usr_config_ver = L
>         rom_sw_ver = 8
>         mem_size = 1619296256
>         mac_address_local = 7c:93:03:86:38:80
>         mac_address_pci = 00:11:7c:92:03:86
>         processor_speed = 1015022209
>         plb_speed = 1619285120
>         pci_speed = 2090009478
> 
> and thus get lines like
> 
>       total memory = 1544 MB
>       avail memory = 1453 MB
>       cpu0 at plb0: 1015MHz 405GP (Revision 0.196)
> 
> during boot, as well as emac0 not working.
> 
> A normal board info config should like more like:
> 
>       Board config data:
>         usr_config_ver = 1.4
>         rom_sw_ver = 1.15
>         mem_size = 268435456
>         mac_address_local = 00:04:ac:e3:12:b2
>         mac_address_pci = 00:00:00:00:00:00
>         processor_speed = 200000000
>         plb_speed = 100000000
>         pci_speed = 33333333
> 
> What version of ROM software did you test this change on?

I'm running ROM version 1.2.
> 
> I'm thinking of changing the
> 
>         /* Save info block */
>         if (info_block == NULL)
>                 /* XXX why isn't r3 set correctly?!?!? */
>                 info_block = (void *)0x8e10;
>         memcpy(&board_data, info_block, sizeof(board_data));
> 
> block to checking for the info_block pointer being less than that start
> of the kernel.  Also, the "r3" should say "r7" or maybe "r7/lr" - where
> is the reference for the info block being passed in the link register?

The board data is not being passed in by the firmware in any registers.
You need to call back into the firmware to request it.

We shouldn't be poking around in strange addresses anyway.

I would have fixed this sooner if I hadn't had to spend two weeks
tracking down bus space breakage that was introduced recently.

Eduardo



Home | Main Index | Thread Index | Old Index