diff --git a/xen/arch/arm/include/asm/types.h b/xen/arch/arm/include/asm/types.h index fb6618ef24..545a5e9d11 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 c2cdfd9caa..ab222de337 100644 --- a/xen/arch/riscv/include/asm/types.h +++ b/xen/arch/riscv/include/asm/types.h @@ -3,25 +3,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 2d56aed667..c9d2577165 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 0000000000..a40165c6ae --- /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 */ + +/* + * 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; + +#else + +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; + +#endif + +#endif /* __XEN_STDINT_H__ */ diff --git a/xen/include/xen/types.h b/xen/include/xen/types.h index 8b22a02eea..c873c81ccf 100644 --- a/xen/include/xen/types.h +++ b/xen/include/xen/types.h @@ -2,6 +2,7 @@ #define __TYPES_H__ #include +#include #include @@ -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;