Commit 4b417d0c authored by Akinobu Mita's avatar Akinobu Mita Committed by Linus Torvalds

[PATCH] bitops: alpha: use config options instead of __alpha_fix__ and __alpha_cix__

Use config options instead of gcc builtin definition to tell the use of
instruction set extensions (CIX and FIX).

This is introduced to tell the kbuild system the use of opmized hweight*()
routines on alpha architecture.
Signed-off-by: default avatarAkinobu Mita <mita@miraclelinux.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 20548664
...@@ -84,7 +84,7 @@ $last_quad: ...@@ -84,7 +84,7 @@ $last_quad:
beq $2, $not_found # U : U L U L beq $2, $not_found # U : U L U L
$found_it: $found_it:
#if defined(__alpha_fix__) && defined(__alpha_cix__) #ifdef CONFIG_ALPHA_EV67
/* /*
* Since we are guaranteed to have set one of the bits, we don't * Since we are guaranteed to have set one of the bits, we don't
* have to worry about coming back with a 0x40 out of cttz... * have to worry about coming back with a 0x40 out of cttz...
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* (C) Copyright 1998 Linus Torvalds * (C) Copyright 1998 Linus Torvalds
*/ */
#if defined(__alpha_cix__) || defined(__alpha_fix__) #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67)
#define STT(reg,val) asm volatile ("ftoit $f"#reg",%0" : "=r"(val)); #define STT(reg,val) asm volatile ("ftoit $f"#reg",%0" : "=r"(val));
#else #else
#define STT(reg,val) asm volatile ("stt $f"#reg",%0" : "=m"(val)); #define STT(reg,val) asm volatile ("stt $f"#reg",%0" : "=m"(val));
...@@ -53,7 +53,7 @@ alpha_read_fp_reg (unsigned long reg) ...@@ -53,7 +53,7 @@ alpha_read_fp_reg (unsigned long reg)
return val; return val;
} }
#if defined(__alpha_cix__) || defined(__alpha_fix__) #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67)
#define LDT(reg,val) asm volatile ("itoft %0,$f"#reg : : "r"(val)); #define LDT(reg,val) asm volatile ("itoft %0,$f"#reg : : "r"(val));
#else #else
#define LDT(reg,val) asm volatile ("ldt $f"#reg",%0" : : "m"(val)); #define LDT(reg,val) asm volatile ("ldt $f"#reg",%0" : : "m"(val));
...@@ -98,7 +98,7 @@ alpha_write_fp_reg (unsigned long reg, unsigned long val) ...@@ -98,7 +98,7 @@ alpha_write_fp_reg (unsigned long reg, unsigned long val)
} }
} }
#if defined(__alpha_cix__) || defined(__alpha_fix__) #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67)
#define STS(reg,val) asm volatile ("ftois $f"#reg",%0" : "=r"(val)); #define STS(reg,val) asm volatile ("ftois $f"#reg",%0" : "=r"(val));
#else #else
#define STS(reg,val) asm volatile ("sts $f"#reg",%0" : "=m"(val)); #define STS(reg,val) asm volatile ("sts $f"#reg",%0" : "=m"(val));
...@@ -147,7 +147,7 @@ alpha_read_fp_reg_s (unsigned long reg) ...@@ -147,7 +147,7 @@ alpha_read_fp_reg_s (unsigned long reg)
return val; return val;
} }
#if defined(__alpha_cix__) || defined(__alpha_fix__) #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67)
#define LDS(reg,val) asm volatile ("itofs %0,$f"#reg : : "r"(val)); #define LDS(reg,val) asm volatile ("itofs %0,$f"#reg : : "r"(val));
#else #else
#define LDS(reg,val) asm volatile ("lds $f"#reg",%0" : : "m"(val)); #define LDS(reg,val) asm volatile ("lds $f"#reg",%0" : : "m"(val));
......
...@@ -261,7 +261,7 @@ static inline unsigned long ffz_b(unsigned long x) ...@@ -261,7 +261,7 @@ static inline unsigned long ffz_b(unsigned long x)
static inline unsigned long ffz(unsigned long word) static inline unsigned long ffz(unsigned long word)
{ {
#if defined(__alpha_cix__) && defined(__alpha_fix__) #if defined(CONFIG_ALPHA_EV6) && defined(CONFIG_ALPHA_EV67)
/* Whee. EV67 can calculate it directly. */ /* Whee. EV67 can calculate it directly. */
return __kernel_cttz(~word); return __kernel_cttz(~word);
#else #else
...@@ -281,7 +281,7 @@ static inline unsigned long ffz(unsigned long word) ...@@ -281,7 +281,7 @@ static inline unsigned long ffz(unsigned long word)
*/ */
static inline unsigned long __ffs(unsigned long word) static inline unsigned long __ffs(unsigned long word)
{ {
#if defined(__alpha_cix__) && defined(__alpha_fix__) #if defined(CONFIG_ALPHA_EV6) && defined(CONFIG_ALPHA_EV67)
/* Whee. EV67 can calculate it directly. */ /* Whee. EV67 can calculate it directly. */
return __kernel_cttz(word); return __kernel_cttz(word);
#else #else
...@@ -313,7 +313,7 @@ static inline int ffs(int word) ...@@ -313,7 +313,7 @@ static inline int ffs(int word)
/* /*
* fls: find last bit set. * fls: find last bit set.
*/ */
#if defined(__alpha_cix__) && defined(__alpha_fix__) #if defined(CONFIG_ALPHA_EV6) && defined(CONFIG_ALPHA_EV67)
static inline int fls(int word) static inline int fls(int word)
{ {
return 64 - __kernel_ctlz(word & 0xffffffff); return 64 - __kernel_ctlz(word & 0xffffffff);
...@@ -326,7 +326,7 @@ static inline int fls(int word) ...@@ -326,7 +326,7 @@ static inline int fls(int word)
/* Compute powers of two for the given integer. */ /* Compute powers of two for the given integer. */
static inline long floor_log2(unsigned long word) static inline long floor_log2(unsigned long word)
{ {
#if defined(__alpha_cix__) && defined(__alpha_fix__) #if defined(CONFIG_ALPHA_EV6) && defined(CONFIG_ALPHA_EV67)
return 63 - __kernel_ctlz(word); return 63 - __kernel_ctlz(word);
#else #else
long bit; long bit;
...@@ -347,7 +347,7 @@ static inline long ceil_log2(unsigned long word) ...@@ -347,7 +347,7 @@ static inline long ceil_log2(unsigned long word)
* of bits set) of a N-bit word * of bits set) of a N-bit word
*/ */
#if defined(__alpha_cix__) && defined(__alpha_fix__) #if defined(CONFIG_ALPHA_EV6) && defined(CONFIG_ALPHA_EV67)
/* Whee. EV67 can calculate it directly. */ /* Whee. EV67 can calculate it directly. */
static inline unsigned long hweight64(unsigned long w) static inline unsigned long hweight64(unsigned long w)
{ {
......
...@@ -130,7 +130,7 @@ rdfpcr(void) ...@@ -130,7 +130,7 @@ rdfpcr(void)
{ {
unsigned long tmp, ret; unsigned long tmp, ret;
#if defined(__alpha_cix__) || defined(__alpha_fix__) #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67)
__asm__ __volatile__ ( __asm__ __volatile__ (
"ftoit $f0,%0\n\t" "ftoit $f0,%0\n\t"
"mf_fpcr $f0\n\t" "mf_fpcr $f0\n\t"
...@@ -154,7 +154,7 @@ wrfpcr(unsigned long val) ...@@ -154,7 +154,7 @@ wrfpcr(unsigned long val)
{ {
unsigned long tmp; unsigned long tmp;
#if defined(__alpha_cix__) || defined(__alpha_fix__) #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67)
__asm__ __volatile__ ( __asm__ __volatile__ (
"ftoit $f0,%0\n\t" "ftoit $f0,%0\n\t"
"itoft %1,$f0\n\t" "itoft %1,$f0\n\t"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment