* [U-Boot] [PATCH 1/3] Remove CONFIG_USE_STDINT
@ 2018-08-06 11:47 Masahiro Yamada
2018-08-06 11:47 ` [U-Boot] [PATCH 2/3] arch: types.h: factor out fixed width typedefs to int-ll64.h Masahiro Yamada
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Masahiro Yamada @ 2018-08-06 11:47 UTC (permalink / raw)
To: u-boot
You do not need to use the typedefs provided by compiler.
Our compilers are either IPL32 or LP64. Hence, U-Boot can/should
always use int-ll64.h typedefs like Linux kernel, whatever the
typedefs the compiler internally uses.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---
README | 5 -----
arch/sandbox/include/asm/types.h | 5 -----
arch/x86/include/asm/types.h | 5 -----
config.mk | 5 -----
include/compiler.h | 5 -----
include/inttypes.h | 10 ----------
include/linux/types.h | 9 +--------
scripts/config_whitelist.txt | 1 -
test/stdint/test-includes.sh | 2 --
tools/buildman/func_test.py | 2 +-
10 files changed, 2 insertions(+), 47 deletions(-)
diff --git a/README b/README
index aee0f73..58594f3 100644
--- a/README
+++ b/README
@@ -3018,11 +3018,6 @@ Configuration Settings:
If defined, don't allow the -f switch to env set override variable
access flags.
-- CONFIG_USE_STDINT
- If stdint.h is available with your toolchain you can define this
- option to enable it. You can provide option 'USE_STDINT=1' when
- building U-Boot to enable this.
-
The following definitions that deal with the placement and management
of environment data (variable area); in general, we support the
following configurations:
diff --git a/arch/sandbox/include/asm/types.h b/arch/sandbox/include/asm/types.h
index a10b455..79c85aa 100644
--- a/arch/sandbox/include/asm/types.h
+++ b/arch/sandbox/include/asm/types.h
@@ -41,13 +41,8 @@ typedef unsigned short u16;
typedef signed int s32;
typedef unsigned int u32;
-#if !defined(CONFIG_USE_STDINT) || !defined(__INT64_TYPE__)
typedef signed long long s64;
typedef unsigned long long u64;
-#else
-typedef __INT64_TYPE__ s64;
-typedef __UINT64_TYPE__ u64;
-#endif
/*
* Number of bits in a C 'long' on this architecture.
diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h
index a47e581..7649c2b 100644
--- a/arch/x86/include/asm/types.h
+++ b/arch/x86/include/asm/types.h
@@ -36,13 +36,8 @@ typedef unsigned short u16;
typedef signed int s32;
typedef unsigned int u32;
-#if !defined(CONFIG_USE_STDINT) || !defined(__INT64_TYPE__)
typedef signed long long s64;
typedef unsigned long long u64;
-#else
-typedef __INT64_TYPE__ s64;
-typedef __UINT64_TYPE__ u64;
-#endif
#if CONFIG_IS_ENABLED(X86_64)
#define BITS_PER_LONG 64
diff --git a/config.mk b/config.mk
index 78748cc..b4e4618 100644
--- a/config.mk
+++ b/config.mk
@@ -62,11 +62,6 @@ ifdef FTRACE
PLATFORM_CPPFLAGS += -finstrument-functions -DFTRACE
endif
-# Allow use of stdint.h if available
-ifneq ($(USE_STDINT),)
-PLATFORM_CPPFLAGS += -DCONFIG_USE_STDINT
-endif
-
#########################################################################
RELFLAGS := $(PLATFORM_RELFLAGS)
diff --git a/include/compiler.h b/include/compiler.h
index 957f4b5..29507f9 100644
--- a/include/compiler.h
+++ b/include/compiler.h
@@ -120,13 +120,8 @@ typedef unsigned int uint;
#else /* !USE_HOSTCC */
-#ifdef CONFIG_USE_STDINT
-/* Provided by gcc. */
-#include <stdint.h>
-#else
/* Type for `void *' pointers. */
typedef unsigned long int uintptr_t;
-#endif
#include <linux/string.h>
#include <linux/types.h>
diff --git a/include/inttypes.h b/include/inttypes.h
index ea731ec..b86ad04 100644
--- a/include/inttypes.h
+++ b/include/inttypes.h
@@ -34,19 +34,9 @@ typedef wchar_t __gwchar_t;
defined if explicitly requested. */
#if !defined __cplusplus || defined __STDC_FORMAT_MACROS
-#ifdef CONFIG_USE_STDINT
-# if __WORDSIZE == 64
-# define __PRI64_PREFIX "l"
-# define __PRIPTR_PREFIX "l"
-# else
-# define __PRI64_PREFIX "ll"
-# define __PRIPTR_PREFIX
-# endif
-#else
/* linux/types.h always uses long long for 64-bit and long for uintptr_t */
# define __PRI64_PREFIX "ll"
# define __PRIPTR_PREFIX "l"
-#endif
/* Macros for printing format specifiers. */
diff --git a/include/linux/types.h b/include/linux/types.h
index 7c33e7a..1f3cd63 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -106,8 +106,7 @@ typedef __u8 uint8_t;
typedef __u16 uint16_t;
typedef __u32 uint32_t;
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__) && \
- (!defined(CONFIG_USE_STDINT) || !defined(__INT64_TYPE__))
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
typedef __u64 uint64_t;
typedef __u64 u_int64_t;
typedef __s64 int64_t;
@@ -120,12 +119,6 @@ typedef __s64 int64_t;
#define aligned_be64 __be64 __aligned(8)
#define aligned_le64 __le64 __aligned(8)
-#if defined(CONFIG_USE_STDINT) && defined(__INT64_TYPE__)
-typedef __UINT64_TYPE__ uint64_t;
-typedef __UINT64_TYPE__ u_int64_t;
-typedef __INT64_TYPE__ int64_t;
-#endif
-
#ifdef __KERNEL__
typedef phys_addr_t resource_size_t;
#endif
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 0d60da3..fe3a772 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -4674,7 +4674,6 @@ CONFIG_USE_INTERRUPT
CONFIG_USE_NOR
CONFIG_USE_ONENAND_BOARD_INIT
CONFIG_USE_SPIFLASH
-CONFIG_USE_STDINT
CONFIG_UTBIPAR_INIT_TBIPA
CONFIG_U_BOOT_HDR_ADDR
CONFIG_U_BOOT_HDR_SIZE
diff --git a/test/stdint/test-includes.sh b/test/stdint/test-includes.sh
index 077bdc7..1db8515 100755
--- a/test/stdint/test-includes.sh
+++ b/test/stdint/test-includes.sh
@@ -46,10 +46,8 @@ try_test() {
$cmd
}
-# Run a test with and without CONFIG_USE_STDINT
try_both() {
try_test $@
- try_test $@ -DCONFIG_USE_STDINT
}
# board arch soc path-to-gcc
diff --git a/tools/buildman/func_test.py b/tools/buildman/func_test.py
index 363db9d..119d02c 100644
--- a/tools/buildman/func_test.py
+++ b/tools/buildman/func_test.py
@@ -27,7 +27,7 @@ settings_data = '''
[make-flags]
src=/home/sjg/c/src
chroot=/home/sjg/c/chroot
-vboot=USE_STDINT=1 VBOOT_DEBUG=1 MAKEFLAGS_VBOOT=DEBUG=1 CFLAGS_EXTRA_VBOOT=-DUNROLL_LOOPS VBOOT_SOURCE=${src}/platform/vboot_reference
+vboot=VBOOT_DEBUG=1 MAKEFLAGS_VBOOT=DEBUG=1 CFLAGS_EXTRA_VBOOT=-DUNROLL_LOOPS VBOOT_SOURCE=${src}/platform/vboot_reference
chromeos_coreboot=VBOOT=${chroot}/build/link/usr ${vboot}
chromeos_daisy=VBOOT=${chroot}/build/daisy/usr ${vboot}
chromeos_peach=VBOOT=${chroot}/build/peach_pit/usr ${vboot}
--
2.7.4
^ permalink raw reply related [flat|nested] 8+ messages in thread* [U-Boot] [PATCH 2/3] arch: types.h: factor out fixed width typedefs to int-ll64.h 2018-08-06 11:47 [U-Boot] [PATCH 1/3] Remove CONFIG_USE_STDINT Masahiro Yamada @ 2018-08-06 11:47 ` Masahiro Yamada 2018-09-11 12:25 ` [U-Boot] [U-Boot, " Tom Rini 2018-08-06 11:47 ` [U-Boot] [PATCH 3/3] Remove <inttypes.h> includes and PRI* usages in printf() entirely Masahiro Yamada 2018-09-11 12:25 ` [U-Boot] [U-Boot,1/3] Remove CONFIG_USE_STDINT Tom Rini 2 siblings, 1 reply; 8+ messages in thread From: Masahiro Yamada @ 2018-08-06 11:47 UTC (permalink / raw) To: u-boot All architectures have the same definition for s8/16/32/64 and u8/16/32/64. Factor out the duplicated code into <asm-generic/int-ll64.h>. BTW, Linux unified the kernel space definition into int-ll64.h a few years ago as you see in Linux commit 0c79a8e29b5f ("asm/types.h: Remove include/asm-generic/int-l64.h"). Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> --- arch/arc/include/asm/types.h | 36 ++-------------------------- arch/arm/include/asm/types.h | 33 ++------------------------ arch/m68k/include/asm/types.h | 30 ++--------------------- arch/microblaze/include/asm/types.h | 33 ++------------------------ arch/mips/include/asm/types.h | 36 ++-------------------------- arch/nds32/include/asm/types.h | 33 ++------------------------ arch/powerpc/include/asm/types.h | 30 ++--------------------- arch/riscv/include/asm/types.h | 33 ++------------------------ arch/sandbox/include/asm/types.h | 33 ++------------------------ arch/sh/include/asm/types.h | 34 ++------------------------- arch/x86/include/asm/types.h | 33 ++------------------------ arch/xtensa/include/asm/types.h | 33 ++------------------------ include/asm-generic/int-ll64.h | 47 +++++++++++++++++++++++++++++++++++++ include/asm-generic/types.h | 9 +++++++ 14 files changed, 80 insertions(+), 373 deletions(-) create mode 100644 include/asm-generic/int-ll64.h create mode 100644 include/asm-generic/types.h diff --git a/arch/arc/include/asm/types.h b/arch/arc/include/asm/types.h index 3e37781..f31dcdf 100644 --- a/arch/arc/include/asm/types.h +++ b/arch/arc/include/asm/types.h @@ -6,41 +6,9 @@ #ifndef __ASM_ARC_TYPES_H #define __ASM_ARC_TYPES_H -typedef unsigned short umode_t; - -/* - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the - * header files exported to user space - */ - -typedef __signed__ char __s8; -typedef unsigned char __u8; - -typedef __signed__ short __s16; -typedef unsigned short __u16; - -typedef __signed__ int __s32; -typedef unsigned int __u32; +#include <asm-generic/int-ll64.h> -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -typedef __signed__ long long __s64; -typedef unsigned long long __u64; -#endif - -/* - * These aren't exported outside the kernel to avoid name space clashes - */ -typedef signed char s8; -typedef unsigned char u8; - -typedef signed short s16; -typedef unsigned short u16; - -typedef signed int s32; -typedef unsigned int u32; - -typedef signed long long s64; -typedef unsigned long long u64; +typedef unsigned short umode_t; #define BITS_PER_LONG 32 diff --git a/arch/arm/include/asm/types.h b/arch/arm/include/asm/types.h index 9af7353..900b261 100644 --- a/arch/arm/include/asm/types.h +++ b/arch/arm/include/asm/types.h @@ -1,44 +1,15 @@ #ifndef __ASM_ARM_TYPES_H #define __ASM_ARM_TYPES_H -typedef unsigned short umode_t; - -/* - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the - * header files exported to user space - */ - -typedef __signed__ char __s8; -typedef unsigned char __u8; - -typedef __signed__ short __s16; -typedef unsigned short __u16; - -typedef __signed__ int __s32; -typedef unsigned int __u32; +#include <asm-generic/int-ll64.h> -#if defined(__GNUC__) -__extension__ typedef __signed__ long long __s64; -__extension__ typedef unsigned long long __u64; -#endif +typedef unsigned short umode_t; /* * These aren't exported outside the kernel to avoid name space clashes */ #ifdef __KERNEL__ -typedef signed char s8; -typedef unsigned char u8; - -typedef signed short s16; -typedef unsigned short u16; - -typedef signed int s32; -typedef unsigned int u32; - -typedef signed long long s64; -typedef unsigned long long u64; - #ifdef CONFIG_ARM64 #define BITS_PER_LONG 64 #else /* CONFIG_ARM64 */ diff --git a/arch/m68k/include/asm/types.h b/arch/m68k/include/asm/types.h index 3ffcab2..5d39b97 100644 --- a/arch/m68k/include/asm/types.h +++ b/arch/m68k/include/asm/types.h @@ -1,43 +1,17 @@ #ifndef _M68K_TYPES_H #define _M68K_TYPES_H +#include <asm-generic/int-ll64.h> + #ifndef __ASSEMBLY__ typedef unsigned short umode_t; -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__) -__extension__ typedef __signed__ long long __s64; -__extension__ typedef unsigned long long __u64; -#endif - typedef struct { __u32 u[4]; } __attribute__((aligned(16))) vector128; #ifdef __KERNEL__ -/* - * These aren't exported outside the kernel to avoid name space clashes - */ -typedef signed char s8; -typedef unsigned char u8; - -typedef signed short s16; -typedef unsigned short u16; - -typedef signed int s32; -typedef unsigned int u32; - -typedef signed long long s64; -typedef unsigned long long u64; #define BITS_PER_LONG 32 diff --git a/arch/microblaze/include/asm/types.h b/arch/microblaze/include/asm/types.h index 77094f6..056a313 100644 --- a/arch/microblaze/include/asm/types.h +++ b/arch/microblaze/include/asm/types.h @@ -1,6 +1,8 @@ #ifndef _ASM_TYPES_H #define _ASM_TYPES_H +#include <asm-generic/int-ll64.h> + /* * This file is never included by application software unless * explicitly requested (e.g., via linux/types.h) in which case the @@ -12,41 +14,10 @@ typedef unsigned short umode_t; /* - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the - * header files exported to user space - */ - -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__) -__extension__ typedef __signed__ long long __s64; -__extension__ typedef unsigned long long __u64; -#endif - -/* * These aren't exported outside the kernel to avoid name space clashes */ #ifdef __KERNEL__ -typedef signed char s8; -typedef unsigned char u8; - -typedef signed short s16; -typedef unsigned short u16; - -typedef signed int s32; -typedef unsigned int u32; - -typedef signed long long s64; -typedef unsigned long long u64; - #define BITS_PER_LONG 32 /* Dma addresses are 32-bits wide. */ diff --git a/arch/mips/include/asm/types.h b/arch/mips/include/asm/types.h index 7032862..925d7ef 100644 --- a/arch/mips/include/asm/types.h +++ b/arch/mips/include/asm/types.h @@ -6,32 +6,12 @@ #ifndef _ASM_TYPES_H #define _ASM_TYPES_H +#include <asm-generic/int-ll64.h> + #ifndef __ASSEMBLY__ typedef unsigned short umode_t; -/* - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the - * header files exported to user space - */ - -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__) -__extension__ typedef __signed__ long long __s64; -__extension__ typedef unsigned long long __u64; -#else -typedef __signed__ long long __s64; -typedef unsigned long long __u64; -#endif - #endif /* __ASSEMBLY__ */ /* @@ -43,18 +23,6 @@ typedef unsigned long long __u64; #ifndef __ASSEMBLY__ -typedef __signed char s8; -typedef unsigned char u8; - -typedef __signed short s16; -typedef unsigned short u16; - -typedef __signed int s32; -typedef unsigned int u32; - -typedef __signed__ long long s64; -typedef unsigned long long u64; - #if (defined(CONFIG_HIGHMEM) && defined(CONFIG_64BIT_PHYS_ADDR)) \ || defined(CONFIG_64BIT) typedef u64 dma_addr_t; diff --git a/arch/nds32/include/asm/types.h b/arch/nds32/include/asm/types.h index 2e8924f..d2444da 100644 --- a/arch/nds32/include/asm/types.h +++ b/arch/nds32/include/asm/types.h @@ -11,44 +11,15 @@ #ifndef __ASM_NDS_TYPES_H #define __ASM_NDS_TYPES_H -typedef unsigned short umode_t; - -/* - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the - * header files exported to user space - */ - -typedef __signed__ char __s8; -typedef unsigned char __u8; - -typedef __signed__ short __s16; -typedef unsigned short __u16; - -typedef __signed__ int __s32; -typedef unsigned int __u32; +#include <asm-generic/int-ll64.h> -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -typedef __signed__ long long __s64; -typedef unsigned long long __u64; -#endif +typedef unsigned short umode_t; /* * These aren't exported outside the kernel to avoid name space clashes */ #ifdef __KERNEL__ -typedef signed char s8; -typedef unsigned char u8; - -typedef signed short s16; -typedef unsigned short u16; - -typedef signed int s32; -typedef unsigned int u32; - -typedef signed long long s64; -typedef unsigned long long u64; - #define BITS_PER_LONG 32 #include <stddef.h> diff --git a/arch/powerpc/include/asm/types.h b/arch/powerpc/include/asm/types.h index b29ce79..cc8d123 100644 --- a/arch/powerpc/include/asm/types.h +++ b/arch/powerpc/include/asm/types.h @@ -1,43 +1,17 @@ #ifndef _PPC_TYPES_H #define _PPC_TYPES_H +#include <asm-generic/int-ll64.h> + #ifndef __ASSEMBLY__ typedef unsigned short umode_t; -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__) -__extension__ typedef __signed__ long long __s64; -__extension__ typedef unsigned long long __u64; -#endif - typedef struct { __u32 u[4]; } __attribute__((aligned(16))) vector128; #ifdef __KERNEL__ -/* - * These aren't exported outside the kernel to avoid name space clashes - */ -typedef signed char s8; -typedef unsigned char u8; - -typedef signed short s16; -typedef unsigned short u16; - -typedef signed int s32; -typedef unsigned int u32; - -typedef signed long long s64; -typedef unsigned long long u64; #define BITS_PER_LONG 32 diff --git a/arch/riscv/include/asm/types.h b/arch/riscv/include/asm/types.h index 9797206..bd86271 100644 --- a/arch/riscv/include/asm/types.h +++ b/arch/riscv/include/asm/types.h @@ -12,44 +12,15 @@ #ifndef __ASM_RISCV_TYPES_H #define __ASM_RISCV_TYPES_H -typedef unsigned short umode_t; - -/* - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the - * header files exported to user space - */ - -typedef __signed__ char __s8; -typedef unsigned char __u8; - -typedef __signed__ short __s16; -typedef unsigned short __u16; - -typedef __signed__ int __s32; -typedef unsigned int __u32; +#include <asm-generic/int-ll64.h> -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -typedef __signed__ long long __s64; -typedef unsigned long long __u64; -#endif +typedef unsigned short umode_t; /* * These aren't exported outside the kernel to avoid name space clashes */ #ifdef __KERNEL__ -typedef signed char s8; -typedef unsigned char u8; - -typedef signed short s16; -typedef unsigned short u16; - -typedef signed int s32; -typedef unsigned int u32; - -typedef signed long long s64; -typedef unsigned long long u64; - #define BITS_PER_LONG 32 #include <stddef.h> diff --git a/arch/sandbox/include/asm/types.h b/arch/sandbox/include/asm/types.h index 79c85aa..7cd56b4 100644 --- a/arch/sandbox/include/asm/types.h +++ b/arch/sandbox/include/asm/types.h @@ -6,44 +6,15 @@ #ifndef __ASM_SANDBOX_TYPES_H #define __ASM_SANDBOX_TYPES_H -typedef unsigned short umode_t; - -/* - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the - * header files exported to user space - */ - -typedef __signed__ char __s8; -typedef unsigned char __u8; - -typedef __signed__ short __s16; -typedef unsigned short __u16; - -typedef __signed__ int __s32; -typedef unsigned int __u32; +#include <asm-generic/int-ll64.h> -#if defined(__GNUC__) -__extension__ typedef __signed__ long long __s64; -__extension__ typedef unsigned long long __u64; -#endif +typedef unsigned short umode_t; /* * These aren't exported outside the kernel to avoid name space clashes */ #ifdef __KERNEL__ -typedef signed char s8; -typedef unsigned char u8; - -typedef signed short s16; -typedef unsigned short u16; - -typedef signed int s32; -typedef unsigned int u32; - -typedef signed long long s64; -typedef unsigned long long u64; - /* * Number of bits in a C 'long' on this architecture. */ diff --git a/arch/sh/include/asm/types.h b/arch/sh/include/asm/types.h index aed4a6e..c5ddbbd 100644 --- a/arch/sh/include/asm/types.h +++ b/arch/sh/include/asm/types.h @@ -1,29 +1,12 @@ #ifndef __ASM_SH_TYPES_H #define __ASM_SH_TYPES_H +#include <asm-generic/int-ll64.h> + #ifndef __ASSEMBLY__ typedef unsigned short umode_t; -/* - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the - * header files exported to user space - */ - -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__) -__extension__ typedef __signed__ long long __s64; -__extension__ typedef unsigned long long __u64; -#endif - #endif /* __ASSEMBLY__ */ /* @@ -35,19 +18,6 @@ __extension__ typedef unsigned long long __u64; #ifndef __ASSEMBLY__ - -typedef __signed__ char s8; -typedef unsigned char u8; - -typedef __signed__ short s16; -typedef unsigned short u16; - -typedef __signed__ int s32; -typedef unsigned int u32; - -typedef __signed__ long long s64; -typedef unsigned long long u64; - /* Dma addresses are 32-bits wide. */ typedef u32 dma_addr_t; diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h index 7649c2b..ba50001 100644 --- a/arch/x86/include/asm/types.h +++ b/arch/x86/include/asm/types.h @@ -1,44 +1,15 @@ #ifndef __ASM_I386_TYPES_H #define __ASM_I386_TYPES_H -typedef unsigned short umode_t; - -/* - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the - * header files exported to user space - */ - -typedef __signed__ char __s8; -typedef unsigned char __u8; - -typedef __signed__ short __s16; -typedef unsigned short __u16; - -typedef __signed__ int __s32; -typedef unsigned int __u32; +#include <asm-generic/int-ll64.h> -#if defined(__GNUC__) -__extension__ typedef __signed__ long long __s64; -__extension__ typedef unsigned long long __u64; -#endif +typedef unsigned short umode_t; /* * These aren't exported outside the kernel to avoid name space clashes */ #ifdef __KERNEL__ -typedef signed char s8; -typedef unsigned char u8; - -typedef signed short s16; -typedef unsigned short u16; - -typedef signed int s32; -typedef unsigned int u32; - -typedef signed long long s64; -typedef unsigned long long u64; - #if CONFIG_IS_ENABLED(X86_64) #define BITS_PER_LONG 64 #else diff --git a/arch/xtensa/include/asm/types.h b/arch/xtensa/include/asm/types.h index bae1a48..2c5b543 100644 --- a/arch/xtensa/include/asm/types.h +++ b/arch/xtensa/include/asm/types.h @@ -6,44 +6,15 @@ #ifndef _XTENSA_TYPES_H #define _XTENSA_TYPES_H -typedef unsigned short umode_t; - -/* - * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the - * header files exported to user space - */ - -typedef __signed__ char __s8; -typedef unsigned char __u8; - -typedef __signed__ short __s16; -typedef unsigned short __u16; +#include <asm-generic/int-ll64.h> -typedef __signed__ int __s32; -typedef unsigned int __u32; - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -typedef __signed__ long long __s64; -typedef unsigned long long __u64; -#endif +typedef unsigned short umode_t; /* * These aren't exported outside the kernel to avoid name space clashes */ #ifdef __KERNEL__ -typedef signed char s8; -typedef unsigned char u8; - -typedef signed short s16; -typedef unsigned short u16; - -typedef signed int s32; -typedef unsigned int u32; - -typedef signed long long s64; -typedef unsigned long long u64; - #define BITS_PER_LONG 32 /* Dma addresses are 32-bits wide */ diff --git a/include/asm-generic/int-ll64.h b/include/asm-generic/int-ll64.h new file mode 100644 index 0000000..7451718 --- /dev/null +++ b/include/asm-generic/int-ll64.h @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * asm-generic/int-ll64.h + * + * Integer declarations for architectures which use "long long" + * for 64-bit types. + */ + +#ifndef _ASM_GENERIC_INT_LL64_H +#define _ASM_GENERIC_INT_LL64_H + +#ifndef __ASSEMBLY__ +/* + * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the + * header files exported to user space + */ + +typedef __signed__ char __s8; +typedef unsigned char __u8; + +typedef __signed__ short __s16; +typedef unsigned short __u16; + +typedef __signed__ int __s32; +typedef unsigned int __u32; + +#ifdef __GNUC__ +__extension__ typedef __signed__ long long __s64; +__extension__ typedef unsigned long long __u64; +#else +typedef __signed__ long long __s64; +typedef unsigned long long __u64; +#endif + +typedef __s8 s8; +typedef __u8 u8; +typedef __s16 s16; +typedef __u16 u16; +typedef __s32 s32; +typedef __u32 u32; +typedef __s64 s64; +typedef __u64 u64; + +#endif /* __ASSEMBLY__ */ + + +#endif /* _ASM_GENERIC_INT_LL64_H */ diff --git a/include/asm-generic/types.h b/include/asm-generic/types.h new file mode 100644 index 0000000..7c076c5 --- /dev/null +++ b/include/asm-generic/types.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_GENERIC_TYPES_H +#define _ASM_GENERIC_TYPES_H +/* + * int-ll64 is used everywhere now. + */ +#include <asm-generic/int-ll64.h> + +#endif /* _ASM_GENERIC_TYPES_H */ -- 2.7.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [U-Boot, 2/3] arch: types.h: factor out fixed width typedefs to int-ll64.h 2018-08-06 11:47 ` [U-Boot] [PATCH 2/3] arch: types.h: factor out fixed width typedefs to int-ll64.h Masahiro Yamada @ 2018-09-11 12:25 ` Tom Rini 0 siblings, 0 replies; 8+ messages in thread From: Tom Rini @ 2018-09-11 12:25 UTC (permalink / raw) To: u-boot On Mon, Aug 06, 2018 at 08:47:39PM +0900, Masahiro Yamada wrote: > All architectures have the same definition for s8/16/32/64 > and u8/16/32/64. > > Factor out the duplicated code into <asm-generic/int-ll64.h>. > > BTW, Linux unified the kernel space definition into int-ll64.h > a few years ago as you see in Linux commit 0c79a8e29b5f > ("asm/types.h: Remove include/asm-generic/int-l64.h"). > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Applied to u-boot/master, thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180911/b536eb9f/attachment.sig> ^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH 3/3] Remove <inttypes.h> includes and PRI* usages in printf() entirely 2018-08-06 11:47 [U-Boot] [PATCH 1/3] Remove CONFIG_USE_STDINT Masahiro Yamada 2018-08-06 11:47 ` [U-Boot] [PATCH 2/3] arch: types.h: factor out fixed width typedefs to int-ll64.h Masahiro Yamada @ 2018-08-06 11:47 ` Masahiro Yamada 2018-08-06 13:20 ` Andy Shevchenko 2018-09-11 12:25 ` [U-Boot] [U-Boot, " Tom Rini 2018-09-11 12:25 ` [U-Boot] [U-Boot,1/3] Remove CONFIG_USE_STDINT Tom Rini 2 siblings, 2 replies; 8+ messages in thread From: Masahiro Yamada @ 2018-08-06 11:47 UTC (permalink / raw) To: u-boot In int-ll64.h, we always use the following typedefs: typedef unsigned int u32; typedef unsigned long uintptr_t; typedef unsigned long long u64; This does not need to match to the compiler's <inttypes.h>. Do not include it. The use of PRI* makes the code super-ugly. You can simply use "l" for printing uintptr_t, "ll" for u64, and no modifier for u32. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> --- arch/x86/lib/relocate.c | 12 +- board/raspberrypi/rpi/rpi.c | 3 +- cmd/mem.c | 6 +- common/fdt_support.c | 17 +-- common/usb_storage.c | 16 +-- disk/part_efi.c | 1 - drivers/pci/pci-uclass.c | 6 +- drivers/pci/pci_sandbox.c | 1 - drivers/scsi/scsi.c | 9 +- fs/ext4/ext4_common.c | 3 +- include/common.h | 3 - include/inttypes.h | 276 --------------------------------------- lib/display_options.c | 5 +- lib/efi_loader/efi_boottime.c | 7 +- lib/efi_loader/efi_device_path.c | 1 - lib/efi_loader/efi_disk.c | 7 +- lib/efi_loader/efi_gop.c | 1 - lib/efi_loader/efi_memory.c | 3 +- lib/efi_loader/efi_net.c | 1 - lib/efi_loader/efi_smbios.c | 1 - lib/fdtdec.c | 8 +- test/stdint/int-types.c | 7 +- 22 files changed, 43 insertions(+), 351 deletions(-) delete mode 100644 include/inttypes.h diff --git a/arch/x86/lib/relocate.c b/arch/x86/lib/relocate.c index 050f9d0..ed10755 100644 --- a/arch/x86/lib/relocate.c +++ b/arch/x86/lib/relocate.c @@ -15,7 +15,6 @@ */ #include <common.h> -#include <inttypes.h> #include <relocate.h> #include <asm/u-boot-x86.h> #include <asm/sections.h> @@ -70,8 +69,7 @@ static void do_elf_reloc_fixups64(unsigned int text_base, uintptr_t size, *offset_ptr_ram = gd->reloc_off + re_src->r_addend; } else { - debug(" %p: %lx: rom reloc %lx, ram %p, value %lx, limit %" - PRIXPTR "\n", + debug(" %p: %lx: rom reloc %lx, ram %p, value %lx, limit %lX\n", re_src, (ulong)re_src->r_info, (ulong)re_src->r_offset, offset_ptr_ram, (ulong)*offset_ptr_ram, text_base + size); @@ -109,11 +107,9 @@ static void do_elf_reloc_fixups32(unsigned int text_base, uintptr_t size, *offset_ptr_ram <= text_base + size) { *offset_ptr_ram += gd->reloc_off; } else { - debug(" %p: rom reloc %x, ram %p, value %x," - " limit %" PRIXPTR "\n", re_src, - re_src->r_offset, offset_ptr_ram, - *offset_ptr_ram, - text_base + size); + debug(" %p: rom reloc %x, ram %p, value %x, limit %lX\n", + re_src, re_src->r_offset, offset_ptr_ram, + *offset_ptr_ram, text_base + size); } } else { debug(" %p: rom reloc %x, last %p\n", re_src, diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c index 35f5939..649127c 100644 --- a/board/raspberrypi/rpi/rpi.c +++ b/board/raspberrypi/rpi/rpi.c @@ -4,7 +4,6 @@ */ #include <common.h> -#include <inttypes.h> #include <config.h> #include <dm.h> #include <environment.h> @@ -384,7 +383,7 @@ static void set_serial_number(void) return; } - snprintf(serial_string, sizeof(serial_string), "%016" PRIx64, + snprintf(serial_string, sizeof(serial_string), "%016llx", msg->get_board_serial.body.resp.serial); env_set("serial#", serial_string); } diff --git a/cmd/mem.c b/cmd/mem.c index 509b400..392ed17 100644 --- a/cmd/mem.c +++ b/cmd/mem.c @@ -17,7 +17,6 @@ #include <command.h> #include <console.h> #include <hash.h> -#include <inttypes.h> #include <mapmem.h> #include <watchdog.h> #include <asm/io.h> @@ -275,8 +274,7 @@ static int do_mem_cmp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (word1 != word2) { ulong offset = buf1 - base; #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA - printf("%s at 0x%p (%#0*"PRIx64") != %s at 0x%p (%#0*" - PRIx64 ")\n", + printf("%s at 0x%p (%#0*llx) != %s at 0x%p (%#0*llx)\n", type, (void *)(addr1 + offset), size, word1, type, (void *)(addr2 + offset), size, word2); #else @@ -1000,7 +998,7 @@ mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const argv[]) printf(" %08x", *((u32 *)ptr)); #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA else if (size == 8) - printf(" %016" PRIx64, *((u64 *)ptr)); + printf(" %016llx", *((u64 *)ptr)); #endif else if (size == 2) printf(" %04x", *((u16 *)ptr)); diff --git a/common/fdt_support.c b/common/fdt_support.c index 1bdd03f..f37a2e8 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -7,7 +7,6 @@ */ #include <common.h> -#include <inttypes.h> #include <stdio_dev.h> #include <linux/ctype.h> #include <linux/types.h> @@ -1021,8 +1020,7 @@ static u64 of_bus_default_map(fdt32_t *addr, const fdt32_t *range, s = fdt_read_number(range + na + pna, ns); da = fdt_read_number(addr, na); - debug("OF: default map, cp=%" PRIu64 ", s=%" PRIu64 - ", da=%" PRIu64 "\n", cp, s, da); + debug("OF: default map, cp=%llu, s=%llu, da=%llu\n", cp, s, da); if (da < cp || da >= (cp + s)) return OF_BAD_ADDR; @@ -1077,8 +1075,7 @@ static u64 of_bus_isa_map(fdt32_t *addr, const fdt32_t *range, s = fdt_read_number(range + na + pna, ns); da = fdt_read_number(addr + 1, na - 1); - debug("OF: ISA map, cp=%" PRIu64 ", s=%" PRIu64 - ", da=%" PRIu64 "\n", cp, s, da); + debug("OF: ISA map, cp=%llu, s=%llu, da=%llu\n", cp, s, da); if (da < cp || da >= (cp + s)) return OF_BAD_ADDR; @@ -1184,7 +1181,7 @@ static int of_translate_one(const void *blob, int parent, struct of_bus *bus, finish: of_dump_addr("OF: parent translation for:", addr, pna); - debug("OF: with offset: %" PRIu64 "\n", offset); + debug("OF: with offset: %llu\n", offset); /* Translate it into parent bus space */ return pbus->translate(addr, offset, pna); @@ -1514,9 +1511,9 @@ int fdt_verify_alias_address(void *fdt, int anode, const char *alias, u64 addr) dt_addr = fdt_translate_address(fdt, node, reg); if (addr != dt_addr) { - printf("Warning: U-Boot configured device %s at address %" - PRIx64 ",\n but the device tree has it address %" - PRIx64 ".\n", alias, addr, dt_addr); + printf("Warning: U-Boot configured device %s at address %llu,\n" + "but the device tree has it address %llx.\n", + alias, addr, dt_addr); return 0; } @@ -1664,7 +1661,7 @@ int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width, if (ret < 0) return ret; - snprintf(name, sizeof(name), "framebuffer@%" PRIx64, base_address); + snprintf(name, sizeof(name), "framebuffer@%llx", base_address); ret = fdt_set_name(fdt, node, name); if (ret < 0) return ret; diff --git a/common/usb_storage.c b/common/usb_storage.c index 9cd6474..d92ebb6 100644 --- a/common/usb_storage.c +++ b/common/usb_storage.c @@ -36,7 +36,6 @@ #include <command.h> #include <dm.h> #include <errno.h> -#include <inttypes.h> #include <mapmem.h> #include <memalign.h> #include <asm/byteorder.h> @@ -1164,8 +1163,8 @@ static unsigned long usb_stor_read(struct blk_desc *block_dev, lbaint_t blknr, start = blknr; blks = blkcnt; - debug("\nusb_read: dev %d startblk " LBAF ", blccnt " LBAF " buffer %" - PRIxPTR "\n", block_dev->devnum, start, blks, buf_addr); + debug("\nusb_read: dev %d startblk " LBAF ", blccnt " LBAF " buffer %lx\n", + block_dev->devnum, start, blks, buf_addr); do { /* XXX need some comment here */ @@ -1194,8 +1193,7 @@ retry_it: } while (blks != 0); ss->flags &= ~USB_READY; - debug("usb_read: end startblk " LBAF - ", blccnt %x buffer %" PRIxPTR "\n", + debug("usb_read: end startblk " LBAF ", blccnt %x buffer %lx\n", start, smallblks, buf_addr); usb_disable_asynch(0); /* asynch transfer allowed */ @@ -1248,8 +1246,8 @@ static unsigned long usb_stor_write(struct blk_desc *block_dev, lbaint_t blknr, start = blknr; blks = blkcnt; - debug("\nusb_write: dev %d startblk " LBAF ", blccnt " LBAF " buffer %" - PRIxPTR "\n", block_dev->devnum, start, blks, buf_addr); + debug("\nusb_write: dev %d startblk " LBAF ", blccnt " LBAF " buffer %lx\n", + block_dev->devnum, start, blks, buf_addr); do { /* If write fails retry for max retry count else @@ -1280,8 +1278,8 @@ retry_it: } while (blks != 0); ss->flags &= ~USB_READY; - debug("usb_write: end startblk " LBAF ", blccnt %x buffer %" - PRIxPTR "\n", start, smallblks, buf_addr); + debug("usb_write: end startblk " LBAF ", blccnt %x buffer %lx\n", + start, smallblks, buf_addr); usb_disable_asynch(0); /* asynch transfer allowed */ if (blkcnt >= ss->max_xfer_blk) diff --git a/disk/part_efi.c b/disk/part_efi.c index 2945892..519a637 100644 --- a/disk/part_efi.c +++ b/disk/part_efi.c @@ -14,7 +14,6 @@ #include <command.h> #include <fdtdec.h> #include <ide.h> -#include <inttypes.h> #include <malloc.h> #include <memalign.h> #include <part_efi.h> diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index 46e9c71..447e6f1 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -7,7 +7,6 @@ #include <common.h> #include <dm.h> #include <errno.h> -#include <inttypes.h> #include <pci.h> #include <asm/io.h> #include <dm/device-internal.h> @@ -852,9 +851,8 @@ static void decode_regions(struct pci_controller *hose, ofnode parent_node, prop += addr_cells; size = fdtdec_get_number(prop, size_cells); prop += size_cells; - debug("%s: region %d, pci_addr=%" PRIx64 ", addr=%" PRIx64 - ", size=%" PRIx64 ", space_code=%d\n", __func__, - hose->region_count, pci_addr, addr, size, space_code); + debug("%s: region %d, pci_addr=%llx, addr=%llx, size=%llx, space_code=%d\n", + __func__, hose->region_count, pci_addr, addr, size, space_code); if (space_code & 2) { type = flags & (1U << 30) ? PCI_REGION_PREFETCH : PCI_REGION_MEM; diff --git a/drivers/pci/pci_sandbox.c b/drivers/pci/pci_sandbox.c index 67cd733..90b6ca1 100644 --- a/drivers/pci/pci_sandbox.c +++ b/drivers/pci/pci_sandbox.c @@ -7,7 +7,6 @@ #include <common.h> #include <dm.h> #include <fdtdec.h> -#include <inttypes.h> #include <pci.h> static int sandbox_pci_write_config(struct udevice *bus, pci_dev_t devfn, diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index 16246be..bc6ac8c 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c @@ -6,7 +6,6 @@ #include <common.h> #include <dm.h> -#include <inttypes.h> #include <pci.h> #include <scsi.h> #include <dm/device-internal.h> @@ -196,7 +195,7 @@ static ulong scsi_read(struct blk_desc *block_dev, lbaint_t blknr, blks = 0; } debug("scsi_read_ext: startblk " LBAF - ", blccnt %x buffer %" PRIXPTR "\n", + ", blccnt %x buffer %lX\n", start, smallblks, buf_addr); if (scsi_exec(bdev, pccb)) { scsi_print_error(pccb); @@ -206,7 +205,7 @@ static ulong scsi_read(struct blk_desc *block_dev, lbaint_t blknr, buf_addr += pccb->datalen; } while (blks != 0); debug("scsi_read_ext: end startblk " LBAF - ", blccnt %x buffer %" PRIXPTR "\n", start, smallblks, buf_addr); + ", blccnt %x buffer %lX\n", start, smallblks, buf_addr); return blkcnt; } @@ -260,7 +259,7 @@ static ulong scsi_write(struct blk_desc *block_dev, lbaint_t blknr, start += blks; blks = 0; } - debug("%s: startblk " LBAF ", blccnt %x buffer %" PRIXPTR "\n", + debug("%s: startblk " LBAF ", blccnt %x buffer %lx\n", __func__, start, smallblks, buf_addr); if (scsi_exec(bdev, pccb)) { scsi_print_error(pccb); @@ -269,7 +268,7 @@ static ulong scsi_write(struct blk_desc *block_dev, lbaint_t blknr, } buf_addr += pccb->datalen; } while (blks != 0); - debug("%s: end startblk " LBAF ", blccnt %x buffer %" PRIXPTR "\n", + debug("%s: end startblk " LBAF ", blccnt %x buffer %lX\n", __func__, start, smallblks, buf_addr); return blkcnt; } diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c index 672fead..67e2471 100644 --- a/fs/ext4/ext4_common.c +++ b/fs/ext4/ext4_common.c @@ -21,7 +21,6 @@ #include <common.h> #include <ext_common.h> #include <ext4fs.h> -#include <inttypes.h> #include <malloc.h> #include <memalign.h> #include <stddef.h> @@ -210,7 +209,7 @@ void put_ext4(uint64_t off, void *buf, uint32_t size) if ((startblock + (size >> log2blksz)) > (part_offset + fs->total_sect)) { printf("part_offset is " LBAFU "\n", part_offset); - printf("total_sector is %" PRIu64 "\n", fs->total_sect); + printf("total_sector is %llu\n", fs->total_sect); printf("error: overflow occurs\n"); return; } diff --git a/include/common.h b/include/common.h index 940161f..69d79b3 100644 --- a/include/common.h +++ b/include/common.h @@ -37,9 +37,6 @@ typedef volatile unsigned char vu_char; #include <flash.h> #include <image.h> -/* Bring in printf format macros if inttypes.h is included */ -#define __STDC_FORMAT_MACROS - #ifdef __LP64__ #define CONFIG_SYS_SUPPORT_64BIT_DATA #endif diff --git a/include/inttypes.h b/include/inttypes.h deleted file mode 100644 index b86ad04..0000000 --- a/include/inttypes.h +++ /dev/null @@ -1,276 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0+ */ -/* - * Copyright (C) 1997-2001, 2004, 2007 Free Software Foundation, Inc. - * - * This file is taken from the GNU C Library v2.15, with the unimplemented - * functions removed and a few style fixes. - */ - -/* - * ISO C99: 7.8 Format conversion of integer types <inttypes.h> - */ - -#ifndef _INTTYPES_H -#define _INTTYPES_H 1 - -#include <linux/compiler.h> - -/* Get a definition for wchar_t. But we must not define wchar_t itself. */ -#ifndef ____gwchar_t_defined -# ifdef __cplusplus -# define __gwchar_t wchar_t -# elif defined __WCHAR_TYPE__ -typedef __WCHAR_TYPE__ __gwchar_t; -# else -# define __need_wchar_t -# include <stddef.h> -typedef wchar_t __gwchar_t; -# endif -# define ____gwchar_t_defined 1 -#endif - - -/* The ISO C99 standard specifies that these macros must only be - defined if explicitly requested. */ -#if !defined __cplusplus || defined __STDC_FORMAT_MACROS - -/* linux/types.h always uses long long for 64-bit and long for uintptr_t */ -# define __PRI64_PREFIX "ll" -# define __PRIPTR_PREFIX "l" - -/* Macros for printing format specifiers. */ - -/* Decimal notation. */ -# define PRId8 "d" -# define PRId16 "d" -# define PRId32 "d" -# define PRId64 __PRI64_PREFIX "d" - -# define PRIdLEAST8 "d" -# define PRIdLEAST16 "d" -# define PRIdLEAST32 "d" -# define PRIdLEAST64 __PRI64_PREFIX "d" - -# define PRIdFAST8 "d" -# define PRIdFAST16 __PRIPTR_PREFIX "d" -# define PRIdFAST32 __PRIPTR_PREFIX "d" -# define PRIdFAST64 __PRI64_PREFIX "d" - - -# define PRIi8 "i" -# define PRIi16 "i" -# define PRIi32 "i" -# define PRIi64 __PRI64_PREFIX "i" - -# define PRIiLEAST8 "i" -# define PRIiLEAST16 "i" -# define PRIiLEAST32 "i" -# define PRIiLEAST64 __PRI64_PREFIX "i" - -# define PRIiFAST8 "i" -# define PRIiFAST16 __PRIPTR_PREFIX "i" -# define PRIiFAST32 __PRIPTR_PREFIX "i" -# define PRIiFAST64 __PRI64_PREFIX "i" - -/* Octal notation. */ -# define PRIo8 "o" -# define PRIo16 "o" -# define PRIo32 "o" -# define PRIo64 __PRI64_PREFIX "o" - -# define PRIoLEAST8 "o" -# define PRIoLEAST16 "o" -# define PRIoLEAST32 "o" -# define PRIoLEAST64 __PRI64_PREFIX "o" - -# define PRIoFAST8 "o" -# define PRIoFAST16 __PRIPTR_PREFIX "o" -# define PRIoFAST32 __PRIPTR_PREFIX "o" -# define PRIoFAST64 __PRI64_PREFIX "o" - -/* Unsigned integers. */ -# define PRIu8 "u" -# define PRIu16 "u" -# define PRIu32 "u" -# define PRIu64 __PRI64_PREFIX "u" - -# define PRIuLEAST8 "u" -# define PRIuLEAST16 "u" -# define PRIuLEAST32 "u" -# define PRIuLEAST64 __PRI64_PREFIX "u" - -# define PRIuFAST8 "u" -# define PRIuFAST16 __PRIPTR_PREFIX "u" -# define PRIuFAST32 __PRIPTR_PREFIX "u" -# define PRIuFAST64 __PRI64_PREFIX "u" - -/* lowercase hexadecimal notation. */ -# define PRIx8 "x" -# define PRIx16 "x" -# define PRIx32 "x" -# define PRIx64 __PRI64_PREFIX "x" - -# define PRIxLEAST8 "x" -# define PRIxLEAST16 "x" -# define PRIxLEAST32 "x" -# define PRIxLEAST64 __PRI64_PREFIX "x" - -# define PRIxFAST8 "x" -# define PRIxFAST16 __PRIPTR_PREFIX "x" -# define PRIxFAST32 __PRIPTR_PREFIX "x" -# define PRIxFAST64 __PRI64_PREFIX "x" - -/* UPPERCASE hexadecimal notation. */ -# define PRIX8 "X" -# define PRIX16 "X" -# define PRIX32 "X" -# define PRIX64 __PRI64_PREFIX "X" - -# define PRIXLEAST8 "X" -# define PRIXLEAST16 "X" -# define PRIXLEAST32 "X" -# define PRIXLEAST64 __PRI64_PREFIX "X" - -# define PRIXFAST8 "X" -# define PRIXFAST16 __PRIPTR_PREFIX "X" -# define PRIXFAST32 __PRIPTR_PREFIX "X" -# define PRIXFAST64 __PRI64_PREFIX "X" - - -/* Macros for printing `intmax_t' and `uintmax_t'. */ -# define PRIdMAX __PRI64_PREFIX "d" -# define PRIiMAX __PRI64_PREFIX "i" -# define PRIoMAX __PRI64_PREFIX "o" -# define PRIuMAX __PRI64_PREFIX "u" -# define PRIxMAX __PRI64_PREFIX "x" -# define PRIXMAX __PRI64_PREFIX "X" - - -/* Macros for printing `intptr_t' and `uintptr_t'. */ -# define PRIdPTR __PRIPTR_PREFIX "d" -# define PRIiPTR __PRIPTR_PREFIX "i" -# define PRIoPTR __PRIPTR_PREFIX "o" -# define PRIuPTR __PRIPTR_PREFIX "u" -# define PRIxPTR __PRIPTR_PREFIX "x" -# define PRIXPTR __PRIPTR_PREFIX "X" - - -/* Macros for scanning format specifiers. */ - -/* Signed decimal notation. */ -# define SCNd8 "hhd" -# define SCNd16 "hd" -# define SCNd32 "d" -# define SCNd64 __PRI64_PREFIX "d" - -# define SCNdLEAST8 "hhd" -# define SCNdLEAST16 "hd" -# define SCNdLEAST32 "d" -# define SCNdLEAST64 __PRI64_PREFIX "d" - -# define SCNdFAST8 "hhd" -# define SCNdFAST16 __PRIPTR_PREFIX "d" -# define SCNdFAST32 __PRIPTR_PREFIX "d" -# define SCNdFAST64 __PRI64_PREFIX "d" - -/* Signed decimal notation. */ -# define SCNi8 "hhi" -# define SCNi16 "hi" -# define SCNi32 "i" -# define SCNi64 __PRI64_PREFIX "i" - -# define SCNiLEAST8 "hhi" -# define SCNiLEAST16 "hi" -# define SCNiLEAST32 "i" -# define SCNiLEAST64 __PRI64_PREFIX "i" - -# define SCNiFAST8 "hhi" -# define SCNiFAST16 __PRIPTR_PREFIX "i" -# define SCNiFAST32 __PRIPTR_PREFIX "i" -# define SCNiFAST64 __PRI64_PREFIX "i" - -/* Unsigned decimal notation. */ -# define SCNu8 "hhu" -# define SCNu16 "hu" -# define SCNu32 "u" -# define SCNu64 __PRI64_PREFIX "u" - -# define SCNuLEAST8 "hhu" -# define SCNuLEAST16 "hu" -# define SCNuLEAST32 "u" -# define SCNuLEAST64 __PRI64_PREFIX "u" - -# define SCNuFAST8 "hhu" -# define SCNuFAST16 __PRIPTR_PREFIX "u" -# define SCNuFAST32 __PRIPTR_PREFIX "u" -# define SCNuFAST64 __PRI64_PREFIX "u" - -/* Octal notation. */ -# define SCNo8 "hho" -# define SCNo16 "ho" -# define SCNo32 "o" -# define SCNo64 __PRI64_PREFIX "o" - -# define SCNoLEAST8 "hho" -# define SCNoLEAST16 "ho" -# define SCNoLEAST32 "o" -# define SCNoLEAST64 __PRI64_PREFIX "o" - -# define SCNoFAST8 "hho" -# define SCNoFAST16 __PRIPTR_PREFIX "o" -# define SCNoFAST32 __PRIPTR_PREFIX "o" -# define SCNoFAST64 __PRI64_PREFIX "o" - -/* Hexadecimal notation. */ -# define SCNx8 "hhx" -# define SCNx16 "hx" -# define SCNx32 "x" -# define SCNx64 __PRI64_PREFIX "x" - -# define SCNxLEAST8 "hhx" -# define SCNxLEAST16 "hx" -# define SCNxLEAST32 "x" -# define SCNxLEAST64 __PRI64_PREFIX "x" - -# define SCNxFAST8 "hhx" -# define SCNxFAST16 __PRIPTR_PREFIX "x" -# define SCNxFAST32 __PRIPTR_PREFIX "x" -# define SCNxFAST64 __PRI64_PREFIX "x" - - -/* Macros for scanning `intmax_t' and `uintmax_t'. */ -# define SCNdMAX __PRI64_PREFIX "d" -# define SCNiMAX __PRI64_PREFIX "i" -# define SCNoMAX __PRI64_PREFIX "o" -# define SCNuMAX __PRI64_PREFIX "u" -# define SCNxMAX __PRI64_PREFIX "x" - -/* Macros for scaning `intptr_t' and `uintptr_t'. */ -# define SCNdPTR __PRIPTR_PREFIX "d" -# define SCNiPTR __PRIPTR_PREFIX "i" -# define SCNoPTR __PRIPTR_PREFIX "o" -# define SCNuPTR __PRIPTR_PREFIX "u" -# define SCNxPTR __PRIPTR_PREFIX "x" - -#endif /* C++ && format macros */ - - -#if __WORDSIZE == 64 - -/* We have to define the `uintmax_t' type using `ldiv_t'. */ -typedef struct { - long int quot; /* Quotient. */ - long int rem; /* Remainder. */ -} imaxdiv_t; - -#else - -/* We have to define the `uintmax_t' type using `lldiv_t'. */ -typedef struct { - long long int quot; /* Quotient. */ - long long int rem; /* Remainder. */ -} imaxdiv_t; - -#endif - -#endif /* inttypes.h */ diff --git a/lib/display_options.c b/lib/display_options.c index f1c9304..3284982 100644 --- a/lib/display_options.c +++ b/lib/display_options.c @@ -7,7 +7,6 @@ #include <common.h> #include <console.h> #include <div64.h> -#include <inttypes.h> #include <version.h> #include <linux/ctype.h> #include <asm/io.h> @@ -65,7 +64,7 @@ void print_freq(uint64_t freq, const char *s) } if (!c) { - printf("%" PRIu64 " Hz%s", freq, s); + printf("%llu Hz%s", freq, s); return; } @@ -105,7 +104,7 @@ void print_size(uint64_t size, const char *s) } if (!c) { - printf("%" PRIu64 " Bytes%s", size, s); + printf("%llu Bytes%s", size, s); return; } diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c index b9e54f5..92b715e 100644 --- a/lib/efi_loader/efi_boottime.c +++ b/lib/efi_loader/efi_boottime.c @@ -13,7 +13,6 @@ #include <linux/libfdt_env.h> #include <u-boot/crc.h> #include <bootm.h> -#include <inttypes.h> #include <watchdog.h> DECLARE_GLOBAL_DATA_PTR; @@ -350,7 +349,7 @@ static efi_status_t EFIAPI efi_free_pages_ext(uint64_t memory, { efi_status_t r; - EFI_ENTRY("%" PRIx64 ", 0x%zx", memory, pages); + EFI_ENTRY("%llx, 0x%zx", memory, pages); r = efi_free_pages(memory, pages); return EFI_EXIT(r); } @@ -800,7 +799,7 @@ static efi_status_t EFIAPI efi_set_timer_ext(struct efi_event *event, enum efi_timer_delay type, uint64_t trigger_time) { - EFI_ENTRY("%p, %d, %" PRIx64, event, type, trigger_time); + EFI_ENTRY("%p, %d, %llx", event, type, trigger_time); return EFI_EXIT(efi_set_timer(event, type, trigger_time)); } @@ -1972,7 +1971,7 @@ static efi_status_t EFIAPI efi_set_watchdog_timer(unsigned long timeout, unsigned long data_size, uint16_t *watchdog_data) { - EFI_ENTRY("%ld, 0x%" PRIx64 ", %ld, %p", timeout, watchdog_code, + EFI_ENTRY("%ld, 0x%llx, %ld, %p", timeout, watchdog_code, data_size, watchdog_data); return EFI_EXIT(efi_set_watchdog(timeout)); } diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c index 6040bcf..9d776a6 100644 --- a/lib/efi_loader/efi_device_path.c +++ b/lib/efi_loader/efi_device_path.c @@ -13,7 +13,6 @@ #include <usb.h> #include <mmc.h> #include <efi_loader.h> -#include <inttypes.h> #include <part.h> /* template END node: */ diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c index 5c6ec52..13fcc1b 100644 --- a/lib/efi_loader/efi_disk.c +++ b/lib/efi_loader/efi_disk.c @@ -9,7 +9,6 @@ #include <blk.h> #include <dm.h> #include <efi_loader.h> -#include <inttypes.h> #include <part.h> #include <malloc.h> @@ -66,7 +65,7 @@ static efi_status_t efi_disk_rw_blocks(struct efi_block_io *this, blocks = buffer_size / blksz; lba += diskobj->offset; - debug("EFI: %s:%d blocks=%x lba=%"PRIx64" blksz=%x dir=%d\n", __func__, + debug("EFI: %s:%d blocks=%x lba=%llx blksz=%x dir=%d\n", __func__, __LINE__, blocks, lba, blksz, direction); /* We only support full block access */ @@ -111,7 +110,7 @@ static efi_status_t EFIAPI efi_disk_read_blocks(struct efi_block_io *this, real_buffer = efi_bounce_buffer; #endif - EFI_ENTRY("%p, %x, %" PRIx64 ", %zx, %p", this, media_id, lba, + EFI_ENTRY("%p, %x, %llx, %zx, %p", this, media_id, lba, buffer_size, buffer); r = efi_disk_rw_blocks(this, media_id, lba, buffer_size, real_buffer, @@ -146,7 +145,7 @@ static efi_status_t EFIAPI efi_disk_write_blocks(struct efi_block_io *this, real_buffer = efi_bounce_buffer; #endif - EFI_ENTRY("%p, %x, %" PRIx64 ", %zx, %p", this, media_id, lba, + EFI_ENTRY("%p, %x, %llx, %zx, %p", this, media_id, lba, buffer_size, buffer); /* Populate bounce buffer if necessary */ diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c index 3a36bbc..a4aa9bc 100644 --- a/lib/efi_loader/efi_gop.c +++ b/lib/efi_loader/efi_gop.c @@ -8,7 +8,6 @@ #include <common.h> #include <dm.h> #include <efi_loader.h> -#include <inttypes.h> #include <lcd.h> #include <malloc.h> #include <video.h> diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c index 967c3f7..59f6af5 100644 --- a/lib/efi_loader/efi_memory.c +++ b/lib/efi_loader/efi_memory.c @@ -7,7 +7,6 @@ #include <common.h> #include <efi_loader.h> -#include <inttypes.h> #include <malloc.h> #include <mapmem.h> #include <watchdog.h> @@ -159,7 +158,7 @@ uint64_t efi_add_memory_map(uint64_t start, uint64_t pages, int memory_type, bool carve_again; uint64_t carved_pages = 0; - debug("%s: 0x%" PRIx64 " 0x%" PRIx64 " %d %s\n", __func__, + debug("%s: 0x%llx 0x%llx %d %s\n", __func__, start, pages, memory_type, overlap_only_ram ? "yes" : "no"); if (memory_type >= EFI_MAX_MEMORY_TYPE) diff --git a/lib/efi_loader/efi_net.c b/lib/efi_loader/efi_net.c index 5a3d7be..034d0d2 100644 --- a/lib/efi_loader/efi_net.c +++ b/lib/efi_loader/efi_net.c @@ -7,7 +7,6 @@ #include <common.h> #include <efi_loader.h> -#include <inttypes.h> #include <lcd.h> #include <malloc.h> diff --git a/lib/efi_loader/efi_smbios.c b/lib/efi_loader/efi_smbios.c index 932f758..38e42fa 100644 --- a/lib/efi_loader/efi_smbios.c +++ b/lib/efi_loader/efi_smbios.c @@ -7,7 +7,6 @@ #include <common.h> #include <efi_loader.h> -#include <inttypes.h> #include <smbios.h> static const efi_guid_t smbios_guid = SMBIOS_TABLE_GUID; diff --git a/lib/fdtdec.c b/lib/fdtdec.c index a208589..1cc0863 100644 --- a/lib/fdtdec.c +++ b/lib/fdtdec.c @@ -11,7 +11,6 @@ #include <errno.h> #include <fdtdec.h> #include <fdt_support.h> -#include <inttypes.h> #include <linux/libfdt.h> #include <serial.h> #include <asm/sections.h> @@ -1450,13 +1449,12 @@ int fdtdec_decode_ram_size(const void *blob, const char *area, int board_id, if (auto_size) { u64 new_size; - debug("Auto-sizing %" PRIx64 ", size %" PRIx64 ": ", - addr, size); + debug("Auto-sizing %llx, size %llx: ", addr, size); new_size = get_ram_size((long *)(uintptr_t)addr, size); if (new_size == size) { debug("OK\n"); } else { - debug("sized to %" PRIx64 "\n", new_size); + debug("sized to %llx\n", new_size); size = new_size; } } @@ -1466,7 +1464,7 @@ int fdtdec_decode_ram_size(const void *blob, const char *area, int board_id, total_size += size; } - debug("Memory size %" PRIu64 "\n", total_size); + debug("Memory size %llu\n", total_size); if (sizep) *sizep = (phys_size_t)total_size; diff --git a/test/stdint/int-types.c b/test/stdint/int-types.c index 2660084..f6d09e8 100644 --- a/test/stdint/int-types.c +++ b/test/stdint/int-types.c @@ -1,5 +1,4 @@ #include <common.h> -#include <inttypes.h> int test_types(void) { @@ -7,7 +6,7 @@ int test_types(void) uint64_t uint64 = 0; u64 u64_val = 0; - printf("uintptr = %" PRIuPTR "\n", uintptr); - printf("uint64 = %" PRIu64 "\n", uint64); - printf("u64 = %" PRIu64 "\n", u64_val); + printf("uintptr = %lu\n", uintptr); + printf("uint64 = %llu\n", uint64); + printf("u64 = %llu\n", u64_val); } -- 2.7.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH 3/3] Remove <inttypes.h> includes and PRI* usages in printf() entirely 2018-08-06 11:47 ` [U-Boot] [PATCH 3/3] Remove <inttypes.h> includes and PRI* usages in printf() entirely Masahiro Yamada @ 2018-08-06 13:20 ` Andy Shevchenko 2018-08-07 2:11 ` Masahiro Yamada 2018-09-11 12:25 ` [U-Boot] [U-Boot, " Tom Rini 1 sibling, 1 reply; 8+ messages in thread From: Andy Shevchenko @ 2018-08-06 13:20 UTC (permalink / raw) To: u-boot On Mon, Aug 6, 2018 at 2:47 PM, Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > The use of PRI* makes the code super-ugly. You can simply use > "l" for printing uintptr_t, "ll" for u64, and no modifier for u32. This is not always the case. I dunno what exact usage of PRIx in U-Boot, but this is correct way for some size-variable types. So, if U-Boot is known of not using something like off_t, then we are fine. In any case the commit message should better justify this part (PRIu64 is specified in standard). -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] [PATCH 3/3] Remove <inttypes.h> includes and PRI* usages in printf() entirely 2018-08-06 13:20 ` Andy Shevchenko @ 2018-08-07 2:11 ` Masahiro Yamada 0 siblings, 0 replies; 8+ messages in thread From: Masahiro Yamada @ 2018-08-07 2:11 UTC (permalink / raw) To: u-boot 2018-08-06 22:20 GMT+09:00 Andy Shevchenko <andy.shevchenko@gmail.com>: > On Mon, Aug 6, 2018 at 2:47 PM, Masahiro Yamada > <yamada.masahiro@socionext.com> wrote: > >> The use of PRI* makes the code super-ugly. You can simply use >> "l" for printing uintptr_t, "ll" for u64, and no modifier for u32. > > This is not always the case. I dunno what exact usage of PRIx in > U-Boot, but this is correct way for some size-variable types. > So, if U-Boot is known of not using something like off_t, then we are fine. U-Boot uses off_t. All architectures use 'long' for off_t. It is safe to use 'l' modifier for printing off_t variables. As for Linux, only i386 use 'long long' for off_t, right? To sum up, i386: long long (64bit) other 32-bit architectures long (32bit) 64bit architectures: long (64bit) off_t is not even fixed-width type. The weirdness of __kernel_long_t is interesting, but unrelated to this patch. > In any case the commit message should better justify this part (PRIu64 > is specified in standard). > -- Best Regards Masahiro Yamada ^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] [U-Boot, 3/3] Remove <inttypes.h> includes and PRI* usages in printf() entirely 2018-08-06 11:47 ` [U-Boot] [PATCH 3/3] Remove <inttypes.h> includes and PRI* usages in printf() entirely Masahiro Yamada 2018-08-06 13:20 ` Andy Shevchenko @ 2018-09-11 12:25 ` Tom Rini 1 sibling, 0 replies; 8+ messages in thread From: Tom Rini @ 2018-09-11 12:25 UTC (permalink / raw) To: u-boot On Mon, Aug 06, 2018 at 08:47:40PM +0900, Masahiro Yamada wrote: > In int-ll64.h, we always use the following typedefs: > > typedef unsigned int u32; > typedef unsigned long uintptr_t; > typedef unsigned long long u64; > > This does not need to match to the compiler's <inttypes.h>. > Do not include it. > > The use of PRI* makes the code super-ugly. You can simply use > "l" for printing uintptr_t, "ll" for u64, and no modifier for u32. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Applied to u-boot/master, thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180911/258ca0a7/attachment.sig> ^ permalink raw reply [flat|nested] 8+ messages in thread
* [U-Boot] [U-Boot,1/3] Remove CONFIG_USE_STDINT 2018-08-06 11:47 [U-Boot] [PATCH 1/3] Remove CONFIG_USE_STDINT Masahiro Yamada 2018-08-06 11:47 ` [U-Boot] [PATCH 2/3] arch: types.h: factor out fixed width typedefs to int-ll64.h Masahiro Yamada 2018-08-06 11:47 ` [U-Boot] [PATCH 3/3] Remove <inttypes.h> includes and PRI* usages in printf() entirely Masahiro Yamada @ 2018-09-11 12:25 ` Tom Rini 2 siblings, 0 replies; 8+ messages in thread From: Tom Rini @ 2018-09-11 12:25 UTC (permalink / raw) To: u-boot On Mon, Aug 06, 2018 at 08:47:38PM +0900, Masahiro Yamada wrote: > You do not need to use the typedefs provided by compiler. > > Our compilers are either IPL32 or LP64. Hence, U-Boot can/should > always use int-ll64.h typedefs like Linux kernel, whatever the > typedefs the compiler internally uses. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Applied to u-boot/master, thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180911/cb829d32/attachment.sig> ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2018-09-11 12:25 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-08-06 11:47 [U-Boot] [PATCH 1/3] Remove CONFIG_USE_STDINT Masahiro Yamada 2018-08-06 11:47 ` [U-Boot] [PATCH 2/3] arch: types.h: factor out fixed width typedefs to int-ll64.h Masahiro Yamada 2018-09-11 12:25 ` [U-Boot] [U-Boot, " Tom Rini 2018-08-06 11:47 ` [U-Boot] [PATCH 3/3] Remove <inttypes.h> includes and PRI* usages in printf() entirely Masahiro Yamada 2018-08-06 13:20 ` Andy Shevchenko 2018-08-07 2:11 ` Masahiro Yamada 2018-09-11 12:25 ` [U-Boot] [U-Boot, " Tom Rini 2018-09-11 12:25 ` [U-Boot] [U-Boot,1/3] Remove CONFIG_USE_STDINT Tom Rini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox