[PATCH] bsps/sparc: Fix BSS initialization

Daniel Hellstrom daniel at gaisler.com
Wed May 14 12:29:49 UTC 2014


On 05/14/2014 10:31 AM, Sebastian Huber wrote:
> On 2014-05-14 09:37, Daniel Hellstrom wrote:
>> Hello Sebastian,
>>
>> I think the patch is correct, however I would rather see that you use g4
>> instead of g2 to increment, that way you don't need the move either.
>
> Ok, see follow up patch.

Ok, thanks.
>
>>
>> Looking in the area of the code that you patch, it seems as if this code hasn't
>> been run. I have a TODO since long to go over this code, however the main usage
>> of the RTEMS is to run it from RAM. As I understand RTEMS on LEON is never run
>> from ROM, which I would like to fix some day.
>>
>> Looking at the code above:
>>
>> copy_data:
>>          ldd   [ %g2 ], %g5
>>          std   %g5 , [ %g3 ]             ! copy this double word
>>          add   %g3, 8, %g3               ! bump the destination pointer
>>          add   %g2, 8, %g2               ! bump the source pointer
>>          cmp   %g3, %g4                  ! Is the pointer past the end of dest?
>>          bl    copy_data
>>          nop
>>
>>
>> It does a LDD and STD to/from non-double registers, which should cause
>> illegal-instruction trap to happen. %g5 can not be used together with LDD or STD.
>
> Its good that you found this.  The register number must be even. I introduced this bug with this commit:
>
> http://git.rtems.org/rtems/commit/?id=7c0bd74c87b141454ae17ee1cfeeba42dc4b0df2
>
> I will fix it.

Ok.





More information about the devel mailing list