[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 3/3] xen/types: Rework stdint vs __{u,s}$N types
Xen uses the stdint types. Rearrange the types headers to define the compatibility __{u,s}$N types in terms of the stdint types, not the other way around. All all supported compilers on architectures other than x86 support the stdint __*_TYPE__ macros. Move these into a new xen/stdint.h to avoid them being duplicated in each architecture. For the compilers which don't support the __*_TYPE__ macros, synthesize appropriate alternatives. This cleanup has the side effect of removing all use of the undocumented __signed__ GCC keyword. This is a vestigial remnant of `gcc -traditional` mode for dialetcs of C prior to the introduction of the signed keyword. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> CC: Wei Liu <wl@xxxxxxx> CC: Stefano Stabellini <sstabellini@xxxxxxxxxx> CC: Julien Grall <julien@xxxxxxx> CC: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx> CC: Bertrand Marquis <bertrand.marquis@xxxxxxx> CC: Bob Eshleman <bobbyeshleman@xxxxxxxxx> CC: Alistair Francis <alistair.francis@xxxxxxx> CC: Connor Davis <connojdavis@xxxxxxxxx> CC: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx> CC: Shawn Anastasio <sanastasio@xxxxxxxxxxxxxxxxxxxxx> CC: Timothy Pearson <tpearson@xxxxxxxxxxxxxxxxxxxxx> CC: Roberto Bagnara <roberto.bagnara@xxxxxxxxxxx> v2: * Introduce xen/stdint.h as discussed at XenSummit --- xen/arch/arm/include/asm/types.h | 19 ----------------- xen/arch/riscv/include/asm/types.h | 19 ----------------- xen/arch/x86/include/asm/types.h | 14 ------------- xen/include/xen/stdint.h | 33 ++++++++++++++++++++++++++++++ xen/include/xen/types.h | 20 ++++++++---------- 5 files changed, 42 insertions(+), 63 deletions(-) create mode 100644 xen/include/xen/stdint.h diff --git a/xen/arch/arm/include/asm/types.h b/xen/arch/arm/include/asm/types.h index fb6618ef247f..545a5e9d1175 100644 --- a/xen/arch/arm/include/asm/types.h +++ b/xen/arch/arm/include/asm/types.h @@ -1,25 +1,6 @@ #ifndef __ARM_TYPES_H__ #define __ARM_TYPES_H__ -typedef __signed__ char __s8; -typedef unsigned char __u8; - -typedef __signed__ short __s16; -typedef unsigned short __u16; - -typedef __signed__ int __s32; -typedef unsigned int __u32; - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#if defined(CONFIG_ARM_32) -typedef __signed__ long long __s64; -typedef unsigned long long __u64; -#elif defined (CONFIG_ARM_64) -typedef __signed__ long __s64; -typedef unsigned long __u64; -#endif -#endif - typedef signed char s8; typedef unsigned char u8; diff --git a/xen/arch/riscv/include/asm/types.h b/xen/arch/riscv/include/asm/types.h index 0c0ce78c8f6e..93a680a8f323 100644 --- a/xen/arch/riscv/include/asm/types.h +++ b/xen/arch/riscv/include/asm/types.h @@ -1,25 +1,6 @@ #ifndef __RISCV_TYPES_H__ #define __RISCV_TYPES_H__ -typedef __signed__ char __s8; -typedef unsigned char __u8; - -typedef __signed__ short __s16; -typedef unsigned short __u16; - -typedef __signed__ int __s32; -typedef unsigned int __u32; - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#if defined(CONFIG_RISCV_32) -typedef __signed__ long long __s64; -typedef unsigned long long __u64; -#elif defined (CONFIG_RISCV_64) -typedef __signed__ long __s64; -typedef unsigned long __u64; -#endif -#endif - typedef signed char s8; typedef unsigned char u8; diff --git a/xen/arch/x86/include/asm/types.h b/xen/arch/x86/include/asm/types.h index 2d56aed66782..c9d257716551 100644 --- a/xen/arch/x86/include/asm/types.h +++ b/xen/arch/x86/include/asm/types.h @@ -1,20 +1,6 @@ #ifndef __X86_TYPES_H__ #define __X86_TYPES_H__ -typedef __signed__ char __s8; -typedef unsigned char __u8; - -typedef __signed__ short __s16; -typedef unsigned short __u16; - -typedef __signed__ int __s32; -typedef unsigned int __u32; - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -typedef __signed__ long __s64; -typedef unsigned long __u64; -#endif - typedef signed char s8; typedef unsigned char u8; diff --git a/xen/include/xen/stdint.h b/xen/include/xen/stdint.h new file mode 100644 index 000000000000..4cf82790f196 --- /dev/null +++ b/xen/include/xen/stdint.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#ifndef __XEN_STDINT_H__ +#define __XEN_STDINT_H__ + +#ifndef __INT8_TYPE__ /* GCC <= 4.4 */ + +typedef __INT8_TYPE__ int8_t; +typedef __UINT8_TYPE__ uint8_t; +typedef __INT16_TYPE__ int16_t; +typedef __UINT16_TYPE__ uint16_t; +typedef __INT32_TYPE__ int32_t; +typedef __UINT32_TYPE__ uint32_t; +typedef __INT64_TYPE__ int64_t; +typedef __UINT64_TYPE__ uint64_t; + +#else + +/* + * Define the types using GCC internal notation. Clang understands this too. + * https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html + */ +typedef signed __attribute__((__mode__(QI))) int8_t; +typedef unsigned __attribute__((__mode__(QI))) uint8_t; +typedef signed __attribute__((__mode__(HI))) int16_t; +typedef unsigned __attribute__((__mode__(HI))) uint16_t; +typedef signed __attribute__((__mode__(SI))) int32_t; +typedef unsigned __attribute__((__mode__(SI))) uint32_t; +typedef signed __attribute__((__mode__(DI))) int64_t; +typedef unsigned __attribute__((__mode__(DI))) uint64_t; + +#endif + +#endif /* __XEN_STDINT_H__ */ diff --git a/xen/include/xen/types.h b/xen/include/xen/types.h index 8b22a02eeaa4..c873c81ccf06 100644 --- a/xen/include/xen/types.h +++ b/xen/include/xen/types.h @@ -2,6 +2,7 @@ #define __TYPES_H__ #include <xen/stdbool.h> +#include <xen/stdint.h> #include <asm/types.h> @@ -39,17 +40,14 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t; #define LONG_MIN (-LONG_MAX - 1) #define ULONG_MAX (~0UL) -typedef __u8 uint8_t; -typedef __s8 int8_t; - -typedef __u16 uint16_t; -typedef __s16 int16_t; - -typedef __u32 uint32_t; -typedef __s32 int32_t; - -typedef __u64 uint64_t; -typedef __s64 int64_t; +typedef uint8_t __u8; +typedef int8_t __s8; +typedef uint16_t __u16; +typedef int16_t __s16; +typedef uint32_t __u32; +typedef int32_t __s32; +typedef uint64_t __u64; +typedef int64_t __s64; typedef __u16 __le16; typedef __u16 __be16; -- 2.30.2
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |