// SPDX-License-Identifier: AGPL-3.0-or-later /* PASST - Plug A Simple Socket Transport * for qemu/UNIX domain socket mode * * PASTA - Pack A Subtle Tap Abstraction * for network namespace/tap device mode * * arch.c - Architecture-specific implementations * * Copyright (c) 2022 Red Hat GmbH * Author: Stefano Brivio */ #include #include #include #include /** * arch_avx2_exec() - Run AVX2 build if supported, drop suffix from argv[0] * @argv: Arguments from command line */ #ifdef __x86_64__ void arch_avx2_exec(char **argv) { char *p = strstr(argv[0], ".avx2"); if (p) { *p = 0; } else if (__builtin_cpu_supports("avx2")) { char path[PATH_MAX]; snprintf(path, PATH_MAX, "%s.avx2", argv[0]); argv[0] = path; execve(path, argv, environ); perror("Can't run AVX2 build, using non-AVX2 version"); } } #else void arch_avx2_exec(char **argv) { (void)argv; } #endif