On Jul 25, 2014, at 11:22 PM, "Panshilin (Peter)" 
<peter.panshi...@hisilicon.com<mailto:peter.panshi...@hisilicon.com>> wrote:


Hi all concerned:



this test code I given below:  AARCH32

[https://email-cn04.huawei.com/owa/14.3.158.1/themes/base/pgrs-sm.gif]

Test function[cid:(null)][cid:(null)]
{
volatile unsigned int val0 = 0;
volatile unsigned int val1 = 0;

asm volatile("mrrc p15, 1, %0, %1, c15" : "=r"(val0), "=r"(val1))
val0 &= ~(1<<6);
val1 &= ~(1<<6);
asm volatile("mcrr p15, 1, %0, %1, c15" : "=r"(val0), "=r"(val1));

I think you want input to the above asm rather output.
So
asm volatile("mcrr p15, 1, %0, %1, c15" :: "r"(val0), "r"(val1));

Thanks,
Andrew

}

After compiling, the result is:

mrrc 15, 1, r2, r3, cr15
str r2, [fp, #-28]
str r3, [fp, #-24]
ldr r3, [fp, #-28]
bic r3, r3, #64;
str r3, [fp, #-28]
ldr r3, [fp, #-24]
bic r3, r3, #64
str r3, [fp, #-24]
mcrr 15, 1, r2, r3, cr15


obviously , it is not what I expect.  I have val0 an vl1  two vars, but the 
compiling result is only one val takes effect.

especia I have to mention  is AARCH32.
thanks.


Peter
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org<mailto:linaro-toolchain@lists.linaro.org>
http://lists.linaro.org/mailman/listinfo/linaro-toolchain
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to