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