#ifndef __SHARED_COMPILER_H
#define __SHARED_COMPILER_H
-#define __noinline __attribute__((noinline))
+#define __noreturn __attribute__((noreturn))
#define __inline __attribute__((always_inline))
#define __hot __attribute__((hot))
#define __cold __attribute__((cold))
-#define __unused __attribute__((unused))
#define __force __attribute__((force))
-#define __section(s) __attribute__((section("." # s)))
-#define __packed __attribute__((packed))
+#define __in_section(s) __attribute__((section("." # s)))
+#define __visible __attribute__((externally_visible))
+
+#define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
+
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
#define BUILD_BUG_ON_ZERO(e) (sizeof(char[1 - 2 * !!(e)]) - 1)
#define container_of(ptr, type, member) ({ \
const typeof(((type *)0)->member) * __mptr = (ptr); \
- (type *)((char *)__mptr - offsetof(type, member)); })
+ (type *)(((unsigned long)__mptr - offsetof(type, member))); })
#define MAX_ERRNO 4095
return !ptr || IS_ERR_VALUE((unsigned long)ptr);
}
+static inline unsigned int hweight8(unsigned int w)
+{
+ unsigned int res = w - ((w >> 1) & 0x55);
+ res = (res & 0x33) + ((res >> 2) & 0x33);
+ return (res + (res >> 4)) & 0x0F;
+}
+
#endif /* __SHARED_COMPILER_H */