Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7243cc05 authored by Ivan Kokshaysky's avatar Ivan Kokshaysky Committed by Linus Torvalds
Browse files

[PATCH] slab: alpha inlining fix



It is essential that index_of() be inlined.  But alpha undoes the gcc
inlining hackery and index_of() ends up out-of-line.  So fiddle with things
to make that function inline again.

Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 4b3c86a7
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -98,6 +98,9 @@
#undef inline
#undef __inline__
#undef __inline

#if __GNUC__ == 3 && __GNUC_MINOR__ >= 1 || __GNUC__ > 3
#undef __always_inline
#define __always_inline		inline __attribute__((always_inline))
#endif

#endif /* __ALPHA_COMPILER_H */
+4 −3
Original line number Diff line number Diff line
@@ -308,12 +308,12 @@ struct kmem_list3 __initdata initkmem_list3[NUM_INIT_LISTS];
#define	SIZE_L3 (1 + MAX_NUMNODES)

/*
 * This function may be completely optimized away if
 * This function must be completely optimized away if
 * a constant is passed to it. Mostly the same as
 * what is in linux/slab.h except it returns an
 * index.
 */
static inline int index_of(const size_t size)
static __always_inline int index_of(const size_t size)
{
	if (__builtin_constant_p(size)) {
		int i = 0;
@@ -329,7 +329,8 @@ static inline int index_of(const size_t size)
			extern void __bad_size(void);
			__bad_size();
		}
	}
	} else
		BUG();
	return 0;
}