From: Khalid Aziz <khalid.aziz@xxxxxxxxxx>
Date: Tue, 17 Jan 2017 12:32:46 -0700
On 01/16/2017 09:39 PM, David Miller wrote:
From: Khalid Aziz <khalid.aziz@xxxxxxxxxx>
Date: Wed, 11 Jan 2017 09:12:54 -0700
+ __asm__ __volatile__(
+ ".word 0xa1438000\n\t" /* rd %mcdper, %l0 */
Just use "rd %%asr14, %0" this way you don't have to play all of these
fixed register games which kill the code generated by gcc. If you
forcefully clobber a windowed register like %l0 it means the function
being emitted can never be a leaf function, tail calls are no longer
allowed, etc.
Hi David,
"rd %%asr14, %0" should work but does not due to bugs in assembler -
<https://sourceware.org/ml/binutils/2016-03/msg00302.html>, and
<https://sourceware.org/ml/binutils/2016-03/msg00303.html>. These bugs
were fixed in binutils 2.27 but older assemblers will cause kernel
build to fail. Using byte coded equivalent is the safest option.
Fair enough.
Then please at least use %g1 or another usable global register to
avoid at least some of the problems I mentioned.