[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 3/3] xen/types: Rework stdint vs __{u,s}$N types
Reviewed-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx> On Tue, 2023-06-27 at 08:56 +0100, Andrew Cooper wrote: > 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;
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |