guo guo wrote:
> Dear Daney,
> Thank you very much.
> Under nptl directory, there are 6 places use rdhwr instruction. What's
> difference between rdhwr and move instructions?
> Could I use move or other r3000 instructions to replace rdhwr?
No. The register that rdhwr is reading is not implemented on any
current processor. It is always emulated by the kernel. You cannot
remove it as it performs the critical function of loading the pointer to
the thread local area.
> And I didn't find ll/sc instructions in libc-2.5.90.so. maybe gcc
> avoid them for R3000 chip.
> Best regards,
> 2007/8/29, David Daney <email@example.com>:
>> guo guo wrote:
>>> Dear All,
>>> I'm trying to build tool chain with gcc4.2, binutils2.17 and glibc2.5
>>> for mips r3000 chip.
>>> During configure gcc I add ?Cmabi=32 ?Cmarch=r3000 ?Cmtune=r3000. and
>>> during building glibc, I add CFLAGS= -O2 ?Cmabi=32 ?Cmarch=r3000
>>> Then I dissembled the libc-2.5.90.so to check the instructions. I
>>> found it has two instructions rdhwr(0x7c03e83b) and sync(0x0000000f)
>>> that don't belongs to mips r3000.
>> The rdhwr and sync are used by the NPTL pthread library and must be
>> emulated by the linux kernel. Probably you will see ll and sc in there
>> as well. If you use glibc2.3.x with Linux threads then the rdhwr will
>> not be generated.
>> Probably if you did not use libpthread you would not need any of the
>> thread synchronization primitives that cause ll,sc, and sync to be
>> But if you want libpthread and your CPU does not support the
>> instructions, you will have to emulate them.
>> David Daney