Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

alpha: build fixes - force architecture

Override compiler .arch directive for generic kernel build.

Signed-off-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Ivan Kokshaysky and committed by
Linus Torvalds
88ed39b0 7fc1a1ab

+36 -14
+1 -2
arch/alpha/kernel/sys_titan.c
··· 257 257 */ 258 258 while (mask) { 259 259 /* convert to SRM vector... priority is <63> -> <0> */ 260 - __asm__("ctlz %1, %0" : "=r"(vector) : "r"(mask)); 261 - vector = 63 - vector; 260 + vector = 63 - __kernel_ctlz(mask); 262 261 mask &= ~(1UL << vector); /* clear it out */ 263 262 vector = 0x900 + (vector << 4); /* convert to SRM vector */ 264 263
+35 -12
include/asm-alpha/compiler.h
··· 17 17 # define __kernel_extbl(val, shift) __builtin_alpha_extbl(val, shift) 18 18 # define __kernel_extwl(val, shift) __builtin_alpha_extwl(val, shift) 19 19 # define __kernel_cmpbge(a, b) __builtin_alpha_cmpbge(a, b) 20 - # define __kernel_cttz(x) __builtin_ctzl(x) 21 - # define __kernel_ctlz(x) __builtin_clzl(x) 22 - # define __kernel_ctpop(x) __builtin_popcountl(x) 23 20 #else 24 21 # define __kernel_insbl(val, shift) \ 25 22 ({ unsigned long __kir; \ ··· 46 49 ({ unsigned long __kir; \ 47 50 __asm__("cmpbge %r2,%1,%0" : "=r"(__kir) : "rI"(b), "rJ"(a)); \ 48 51 __kir; }) 52 + #endif 53 + 54 + #ifdef __alpha_cix__ 55 + # if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 || __GNUC__ > 3 56 + # define __kernel_cttz(x) __builtin_ctzl(x) 57 + # define __kernel_ctlz(x) __builtin_clzl(x) 58 + # define __kernel_ctpop(x) __builtin_popcountl(x) 59 + # else 60 + # define __kernel_cttz(x) \ 61 + ({ unsigned long __kir; \ 62 + __asm__("cttz %1,%0" : "=r"(__kir) : "r"(x)); \ 63 + __kir; }) 64 + # define __kernel_ctlz(x) \ 65 + ({ unsigned long __kir; \ 66 + __asm__("ctlz %1,%0" : "=r"(__kir) : "r"(x)); \ 67 + __kir; }) 68 + # define __kernel_ctpop(x) \ 69 + ({ unsigned long __kir; \ 70 + __asm__("ctpop %1,%0" : "=r"(__kir) : "r"(x)); \ 71 + __kir; }) 72 + # endif 73 + #else 49 74 # define __kernel_cttz(x) \ 50 75 ({ unsigned long __kir; \ 51 - __asm__("cttz %1,%0" : "=r"(__kir) : "r"(x)); \ 76 + __asm__(".arch ev67; cttz %1,%0" : "=r"(__kir) : "r"(x)); \ 52 77 __kir; }) 53 78 # define __kernel_ctlz(x) \ 54 79 ({ unsigned long __kir; \ 55 - __asm__("ctlz %1,%0" : "=r"(__kir) : "r"(x)); \ 80 + __asm__(".arch ev67; ctlz %1,%0" : "=r"(__kir) : "r"(x)); \ 56 81 __kir; }) 57 82 # define __kernel_ctpop(x) \ 58 83 ({ unsigned long __kir; \ 59 - __asm__("ctpop %1,%0" : "=r"(__kir) : "r"(x)); \ 84 + __asm__(".arch ev67; ctpop %1,%0" : "=r"(__kir) : "r"(x)); \ 60 85 __kir; }) 61 86 #endif 62 87 ··· 97 78 #else 98 79 #define __kernel_ldbu(mem) \ 99 80 ({ unsigned char __kir; \ 100 - __asm__("ldbu %0,%1" : "=r"(__kir) : "m"(mem)); \ 81 + __asm__(".arch ev56; \ 82 + ldbu %0,%1" : "=r"(__kir) : "m"(mem)); \ 101 83 __kir; }) 102 84 #define __kernel_ldwu(mem) \ 103 85 ({ unsigned short __kir; \ 104 - __asm__("ldwu %0,%1" : "=r"(__kir) : "m"(mem)); \ 86 + __asm__(".arch ev56; \ 87 + ldwu %0,%1" : "=r"(__kir) : "m"(mem)); \ 105 88 __kir; }) 106 - #define __kernel_stb(val,mem) \ 107 - __asm__("stb %1,%0" : "=m"(mem) : "r"(val)) 108 - #define __kernel_stw(val,mem) \ 109 - __asm__("stw %1,%0" : "=m"(mem) : "r"(val)) 89 + #define __kernel_stb(val,mem) \ 90 + __asm__(".arch ev56; \ 91 + stb %1,%0" : "=m"(mem) : "r"(val)) 92 + #define __kernel_stw(val,mem) \ 93 + __asm__(".arch ev56; \ 94 + stw %1,%0" : "=m"(mem) : "r"(val)) 110 95 #endif 111 96 112 97 #ifdef __KERNEL__