mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-04 16:25:34 +00:00

upstream tag v1.5.7-kernel, which is signed by upstream's signing key EF8FE99528B52FFD. Link: https://github.com/facebook/zstd/releases/tag/v1.5.7 Link: https://github.com/facebook/zstd/releases/tag/v1.5.7-kernel Link: https://keyserver.ubuntu.com/pks/lookup?search=EF8FE99528B52FFD&fingerprint=on&op=index Signed-off-by: Nick Terrell <terrelln@fb.com> -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEmIwAqlFIzbQodPwyuzRpqaNEqPUFAmfjI5oACgkQuzRpqaNE qPUZJA//foLgy1etgBSTaUbCCIFxOLguFjmH2qfs/0yGX1ekhlv5jXobyUmKhYVM q0WR3G4lS1MNC40T9zNoKR0GfmZGyrCjOlGkwMEwdNYc+4y5sWujbckE+Xl/mgld Gz1NEEentFNIeC5htnBX797PJldqawHl6OYax/+6gVZyeLPYfbNYtTGy30fQIvcz vdIR/KCR2XzHn8+xah1zga5Ey/8LAXpgoYY9Pu3J3HWFRTV35laUe0nZ8EQ1mW3q nGritp0453RFJgD1wHewp1CgJx9lAixPAMPZ5BCOqOxsCxyalbvefWc6u/cS3zJM KEeKChyF6k5VqaW4A9jVeKq+HoGfngYjFJmELeKG4vK1d2UwMeDZRJ2IfkKej7xK 0awM0E0LO95H0mWEPhI3bmNbcfOLiJ4TIdWcr/sztF8Vv7fxKkK67Bwk4NTYmyPv sgFZMEyw0eFYNf8/0j9FCATu7AgmbF3yes4vExuAy0cgZaiNxOxaAspRM2A8Tmdf WWiAIsS6ZYwp6L1Gm6Rva+GRB15I3wevxOuEJ4kTsVVgvzgLQ+N6Fn5H5g2zgb1Q hgRlJx6ivyRpoaJhbBB7tqNsK38lQ53i0DHQ21jkBHEPFmRzLnvC+D205Dz3tQK5 kwPAGOCbxoiQbqzhY4NOm75ZPxzy8OW7ygjow0HaX6fgv9Y9n9s= =+maf -----END PGP SIGNATURE----- Merge tag 'zstd-linus-v6.15-rc1' of https://github.com/terrelln/linux Pull zstd updates from Nick Terrell: "Update zstd to the latest upstream release v1.5.7. The two major motivations for updating Zstandard are to keep the code up to date, and to expose API's needed by Intel for the QAT compression accelerator. Imported cleanly from the upstream tag v1.5.7-kernel, which is signed by upstream's signing key EF8FE99528B52FFD" Link: https://github.com/facebook/zstd/releases/tag/v1.5.7 Link: https://github.com/facebook/zstd/releases/tag/v1.5.7-kernel Link: https://keyserver.ubuntu.com/pks/lookup?search=EF8FE99528B52FFD&fingerprint=on&op=index * tag 'zstd-linus-v6.15-rc1' of https://github.com/terrelln/linux: zstd: Import upstream v1.5.7
118 lines
3.3 KiB
C
118 lines
3.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
|
|
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under both the BSD-style license (found in the
|
|
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
* in the COPYING file in the root directory of this source tree).
|
|
* You may select, at your option, one of the above-listed licenses.
|
|
*/
|
|
|
|
#ifndef ZSTD_PORTABILITY_MACROS_H
|
|
#define ZSTD_PORTABILITY_MACROS_H
|
|
|
|
/*
|
|
* This header file contains macro definitions to support portability.
|
|
* This header is shared between C and ASM code, so it MUST only
|
|
* contain macro definitions. It MUST not contain any C code.
|
|
*
|
|
* This header ONLY defines macros to detect platforms/feature support.
|
|
*
|
|
*/
|
|
|
|
|
|
/* compat. with non-clang compilers */
|
|
#ifndef __has_attribute
|
|
#define __has_attribute(x) 0
|
|
#endif
|
|
|
|
/* compat. with non-clang compilers */
|
|
#ifndef __has_builtin
|
|
# define __has_builtin(x) 0
|
|
#endif
|
|
|
|
/* compat. with non-clang compilers */
|
|
#ifndef __has_feature
|
|
# define __has_feature(x) 0
|
|
#endif
|
|
|
|
/* detects whether we are being compiled under msan */
|
|
|
|
/* detects whether we are being compiled under asan */
|
|
|
|
/* detects whether we are being compiled under dfsan */
|
|
|
|
/* Mark the internal assembly functions as hidden */
|
|
#ifdef __ELF__
|
|
# define ZSTD_HIDE_ASM_FUNCTION(func) .hidden func
|
|
#elif defined(__APPLE__)
|
|
# define ZSTD_HIDE_ASM_FUNCTION(func) .private_extern func
|
|
#else
|
|
# define ZSTD_HIDE_ASM_FUNCTION(func)
|
|
#endif
|
|
|
|
/* Compile time determination of BMI2 support */
|
|
|
|
|
|
/* Enable runtime BMI2 dispatch based on the CPU.
|
|
* Enabled for clang & gcc >=4.8 on x86 when BMI2 isn't enabled by default.
|
|
*/
|
|
#ifndef DYNAMIC_BMI2
|
|
# if ((defined(__clang__) && __has_attribute(__target__)) \
|
|
|| (defined(__GNUC__) \
|
|
&& (__GNUC__ >= 11))) \
|
|
&& (defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)) \
|
|
&& !defined(__BMI2__)
|
|
# define DYNAMIC_BMI2 1
|
|
# else
|
|
# define DYNAMIC_BMI2 0
|
|
# endif
|
|
#endif
|
|
|
|
/*
|
|
* Only enable assembly for GNU C compatible compilers,
|
|
* because other platforms may not support GAS assembly syntax.
|
|
*
|
|
* Only enable assembly for Linux / MacOS / Win32, other platforms may
|
|
* work, but they haven't been tested. This could likely be
|
|
* extended to BSD systems.
|
|
*
|
|
* Disable assembly when MSAN is enabled, because MSAN requires
|
|
* 100% of code to be instrumented to work.
|
|
*/
|
|
#define ZSTD_ASM_SUPPORTED 1
|
|
|
|
/*
|
|
* Determines whether we should enable assembly for x86-64
|
|
* with BMI2.
|
|
*
|
|
* Enable if all of the following conditions hold:
|
|
* - ASM hasn't been explicitly disabled by defining ZSTD_DISABLE_ASM
|
|
* - Assembly is supported
|
|
* - We are compiling for x86-64 and either:
|
|
* - DYNAMIC_BMI2 is enabled
|
|
* - BMI2 is supported at compile time
|
|
*/
|
|
#define ZSTD_ENABLE_ASM_X86_64_BMI2 0
|
|
|
|
/*
|
|
* For x86 ELF targets, add .note.gnu.property section for Intel CET in
|
|
* assembly sources when CET is enabled.
|
|
*
|
|
* Additionally, any function that may be called indirectly must begin
|
|
* with ZSTD_CET_ENDBRANCH.
|
|
*/
|
|
#if defined(__ELF__) && (defined(__x86_64__) || defined(__i386__)) \
|
|
&& defined(__has_include)
|
|
# if __has_include(<cet.h>)
|
|
# include <cet.h>
|
|
# define ZSTD_CET_ENDBRANCH _CET_ENDBR
|
|
# endif
|
|
#endif
|
|
|
|
#ifndef ZSTD_CET_ENDBRANCH
|
|
# define ZSTD_CET_ENDBRANCH
|
|
#endif
|
|
|
|
#endif /* ZSTD_PORTABILITY_MACROS_H */
|