chmc: Mark %ver register inline asm with __volatile__
authorDavid S. Miller <davem@davemloft.net>
Mon, 13 Oct 2008 06:56:12 +0000 (23:56 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 13 Oct 2008 06:56:12 +0000 (23:56 -0700)
Otherwise GCC can try to do the register read before the guarding test
on us3mc_platform() being true.

If that happens we can take an exception, because %ver register reads
are not allowed in privileged more on hypervisor platforms.

Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc64/kernel/chmc.c

index 967b04886822273f73f00cf550007cb0c51da68b..3b9f4d6e14a9d3119a939e7b5edfc3aec30c554b 100644 (file)
@@ -831,7 +831,7 @@ static int __init us3mc_init(void)
        if (!us3mc_platform())
                return -ENODEV;
 
-       __asm__ ("rdpr %%ver, %0" : "=r" (ver));
+       __asm__ __volatile__("rdpr %%ver, %0" : "=r" (ver));
        if ((ver >> 32UL) == __JALAPENO_ID ||
            (ver >> 32UL) == __SERRANO_ID) {
                mc_type = MC_TYPE_JBUS;