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.
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.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
rtems-devel mailing list
rtems-devel@rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel