Patch to allow ARM dynamic linker to fix up PC24 relocs...
Scott Bambrough
scottb@netwinder.org
Fri Dec 17 09:40:00 GMT 1999
Philip Blundell wrote:
>
> >+ register unsigned long _beg __asm ("a1") = (unsigned long)(BEG); \
> >+ register unsigned long _end __asm ("a2") = (unsigned long)((END) - (BEG));\
> >+ register unsigned long _flg __asm ("a3") = 0;
>
> Did you check that this works properly? I just inspected the kernel code
> again and it still looks to me like R1 is supposed to actually be the end
> address (and the comment in traps.c is wrong).
Yes, I checked. It works with my test cases, and Mozilla. I posted a
question on the ARM Linux list about the second parameter and got two
replys. One from Russell, saying it was a length, the other from you
saying it was the end address. The comment in traps.c led me to believe
it was a length. It was 2-1 in favour of the length.
It's a good thing you are persistent. I just went and checked the
actual SA110 assembler code for clear_cache_area. The comment there
says it is the end address. Inspection of the code verifies it is
correct. My code was working however, because start - length > 32K.
This triggers a call to flush_cache_all instead of just those cache
lines. I'll fix it up and resubmit the patch.
Shouldn't have been so lazy, and checked the source before I guess.
Thanks Phil.
Cheers,
Scott
--
Scott Bambrough - Software Engineer
REBEL.COM http://www.rebel.com
NetWinder http://www.netwinder.org
More information about the Libc-hacker
mailing list