diff options
author | 2016-03-03 20:19:02 +0100 | |
---|---|---|
committer | 2016-03-03 21:22:03 +0000 | |
commit | 01be6a0cb1d16fbad9a7d33449489b3a86a78521 (patch) | |
tree | d7b6a088f25a1e43a6284b38c83ab1f7d5557dd9 | |
parent | 73f7ef8ab714464c477de5bd3938b976c01d37cf (diff) |
Refuse to start if binary requires unavailable CPU extensions
Change-Id: I4d0d152b6f5d4ba566398fcccaa6a1f96625f864
Signed-off-by: Damjan Marion <damarion@cisco.com>
-rw-r--r-- | vpp/vnet/main.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/vpp/vnet/main.c b/vpp/vnet/main.c index 290b5c03..04ee6b76 100644 --- a/vpp/vnet/main.c +++ b/vpp/vnet/main.c @@ -63,6 +63,35 @@ int main (int argc, char * argv[]) u32 size; void vlib_set_get_handoff_structure_cb (void *cb); +#if __x86_64__ + const char * msg = "ERROR: This binary requires CPU with %s extensions.\n"; +#define _(a,b) \ + if (!__builtin_cpu_supports(a)) \ + { \ + fprintf(stderr, msg, b); \ + exit(1); \ + } + +#if __AVX2__ + _("avx2", "AVX2") +#endif +#if __AVX__ + _("avx", "AVX") +#endif +#if __SSE4_2__ + _("sse4.2", "SSE4.2") +#endif +#if __SSE4_1__ + _("sse4.1", "SSE4.1") +#endif +#if __SSSE3__ + _("ssse3", "SSSE3") +#endif +#if __SSE3__ + _("sse3", "SSE3") +#endif +#endif + /* * Load startup config from file. * usage: vpp -c /etc/vpp/startup.conf |