|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/2] xen/types: Rework stdint vs __{u,s}$N types
On Thu, Jun 22, 2023 at 7:12 AM Andrew Cooper <andrew.cooper3@xxxxxxxxxx> 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 the common types.h to avoid them being
> duplicated in each architecture.
>
> For x86 on obsolete compilers, synthesize appropriate types.
>
> 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>
Reviewed-by: Alistair Francis <alistair.francis@xxxxxxx>
Alistair
> ---
> 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>
>
> I've left the non __ types alone for now. They're complicated mostly by ARM
> having differing ideas of what a paddr_t is.
>
> A different option would be to sort out the stdint types ahead of including
> <asm/types.h>, which can either be done by introducing a <asm/stdint.h> or
> upping the minimum compiler version for x86; a task which is massively
> overdue.
> ---
> xen/arch/arm/include/asm/types.h | 19 -------------------
> xen/arch/riscv/include/asm/types.h | 19 -------------------
> xen/arch/x86/include/asm/types.h | 21 +++++++++------------
> xen/include/xen/types.h | 28 +++++++++++++++++-----------
> 4 files changed, 26 insertions(+), 61 deletions(-)
>
> 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..a5d4f6e9587a 100644
> --- a/xen/arch/x86/include/asm/types.h
> +++ b/xen/arch/x86/include/asm/types.h
> @@ -1,18 +1,15 @@
> #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;
> +#ifndef __INT8_TYPE__ /* GCC <= 4.4 */
> +# define __INT8_TYPE__ signed char
> +# define __UINT8_TYPE__ unsigned char
> +# define __INT16_TYPE__ short
> +# define __UINT16_TYPE__ unsigned short
> +# define __INT32_TYPE__ int
> +# define __UINT32_TYPE__ unsigned int
> +# define __INT64_TYPE__ long
> +# define __UINT64_TYPE__ unsigned long
> #endif
>
> typedef signed char s8;
> diff --git a/xen/include/xen/types.h b/xen/include/xen/types.h
> index 8b22a02eeaa4..4083f1bf18b0 100644
> --- a/xen/include/xen/types.h
> +++ b/xen/include/xen/types.h
> @@ -11,6 +11,15 @@ typedef signed long ssize_t;
>
> typedef __PTRDIFF_TYPE__ ptrdiff_t;
>
> +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;
> +
> #define BITS_TO_LONGS(bits) \
> (((bits)+BITS_PER_LONG-1)/BITS_PER_LONG)
> #define DECLARE_BITMAP(name,bits) \
> @@ -39,17 +48,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 |