Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- include/linux/bitops.h.orig 2017-04-22 10:20:37.284090151 -0500
- +++ include/linux/bitops.h 2017-04-22 10:20:43.468090276 -0500
- @@ -77,7 +77,12 @@ static __always_inline unsigned long __i
- */
- static inline __u64 rol64(__u64 word, unsigned int shift)
- {
- +#if defined(CONFIG_X86_64) || defined(CONFIG_X86)
- + __asm__ __volatile__ ("rolq %%cl, %%rax;" : "=a" (word) : "a" (word), "c" (shift) : );
- + return word;
- +#else
- return (word << shift) | (word >> (64 - shift));
- +#endif /* defined(CONFIG_X86_64) || defined(CONFIG_X86) */
- }
- /**
- @@ -87,7 +92,12 @@ static inline __u64 rol64(__u64 word, un
- */
- static inline __u64 ror64(__u64 word, unsigned int shift)
- {
- +#if defined(CONFIG_X86_64) || defined(CONFIG_X86)
- + __asm__ __volatile__ ("rorq %%cl, %%rax;" : "=a" (word) : "a" (word), "c" (shift) : );
- + return word;
- +#else
- return (word >> shift) | (word << (64 - shift));
- +#endif /* defined(CONFIG_X86_64) || defined(CONFIG_X86) */
- }
- /**
- @@ -97,7 +107,12 @@ static inline __u64 ror64(__u64 word, un
- */
- static inline __u32 __intentional_overflow(-1) rol32(__u32 word, unsigned int shift)
- {
- +#if defined(CONFIG_X86_64) || defined(CONFIG_X86)
- + __asm__ __volatile__ ("rol %%cl, %%eax;" : "=a" (word) : "a" (word), "c" (shift) : );
- + return word;
- +#else
- return (word << shift) | (word >> ((-shift) & 31));
- +#endif /* defined(CONFIG_X86_64) || defined(CONFIG_X86) */
- }
- /**
- @@ -107,7 +122,12 @@ static inline __u32 __intentional_overfl
- */
- static inline __u32 __intentional_overflow(-1) ror32(__u32 word, unsigned int shift)
- {
- +#if defined(CONFIG_X86_64) || defined(CONFIG_X86)
- + __asm__ __volatile__ ("ror %%cl, %%eax;" : "=a" (word) : "a" (word), "c" (shift) : );
- + return word;
- +#else
- return (word >> shift) | (word << (32 - shift));
- +#endif /* defined(CONFIG_X86_64) || defined(CONFIG_X86) */
- }
- /**
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement