b38c0321f3dc358217e74c81d45440b31dcf5a7b
[akaros.git] / tools / compilers / gcc-glibc / glibc-2.19-akaros / sysdeps / akaros / kernel-features.h
1 /* Copyright (c) 2016 Google Inc.
2  * Barret Rhoden <brho@cs.berkeley.edu>
3  * See LICENSE for details.
4  *
5  * Glibc uses this header to set a bunch of #defines to show what is supported
6  * on a particular kernel version.  They set things like __ASSUME_AT_RANDOM.
7  *
8  * On Akaros, we'll eventually set those too.  This is also a good place for
9  * exporting all of the cpu feature detection to glibc.
10  *
11  * Note that this file is only included within glibc itself; it won't appear in
12  * the sysroot.  Use parlib/cpu_feat.h for that. */
13
14 #pragma once
15
16 #include <ros/procinfo.h>
17
18 static inline bool cpu_has_feat(int feature)
19 {
20         size_t bits_per_long = sizeof(unsigned long) * 8;
21         unsigned long *cpu_feats = __proc_global_info.cpu_feats;
22
23         return (cpu_feats[feature / bits_per_long] &
24                 (1UL << (feature % bits_per_long))) != 0;
25 }