[U-Boot-Users] RFC: Some improvements for the FPGA subsystem

Grant Likely grant.likely at secretlab.ca
Tue Nov 13 00:09:55 CET 2007


On 11/12/07, Bruce_Leonard at selinc.com <Bruce_Leonard at selinc.com> wrote:
> Matthias,
>
> Matthias Fuchs <matthias.fuchs at esd-electronics.com> wrote on 11/11/2007
> 08:45:02 AM:
>
> < snip >
>
> > 5) Add post() and pre() callback for Spartan2/3 FPGAs inslave serial
> mode.
>
> Only comment I have is to point out that one of the things we talked about
> last summer.  The Spartan 3 code in particular (and I think all of the
> Xilinx/Altera code in general) makes the pre()/post() function calls
> optional.  However, the relocation code doesn't check to see if the
> pre()/post() functions exist and therefore incorrectly "relocates" them
> even if they don't exist.  This causes problems later because they now
> appear to exist since they no longer have a NULL address.  One of the
> things we talked about was makeing the FPGA relocation code smart enough
> to detect NULL addresses for these functions and not relocate them.
>
> Now it may not be an issue anymore.  I made the changes to the code, but
> when stepping through 1.3.0-rc3 of the code, I noticed that gd->reloc_off
> = 0 which ment that the relocation_offset passed to the FPGA relocation
> code was zero and therefore nothing actually got relocated.  So a NULL
> pointer is still NULL when zero is added to it.  Now, I'm not sure why
> gd->reloc_off = 0, it may be my setup, it may be I'm broken, it may be
> that it's no longer used for some reason I don't know about.  But it seems
> to me that the FPGA relocation code should still deal with non-existant
> pre()/post() functions, just in case gd->reloc_off is not zero in someone
> else's circumstances.

Manual relocation shouldn't be necessary *at all*.  The fact that we
have it is due to the u-boot C environment being broken. I've fixed it
for many of the powerpc ports, which is why reloc_off is now zero for
those boards.  Unfortunately, the fix only works with some versions of
GCC, so the fix might need to be temporarily backed out.  :-(

Regardless, fixing the FPGA manual reloc code is trivial and should
definitely be done.

Cheers,
g.

-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
grant.likely at secretlab.ca
(403) 399-0195




More information about the U-Boot mailing list