Jacob Garber has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: [WIP] include, arch: Unify stdint.h ......................................................................
[WIP] include, arch: Unify stdint.h
Change-Id: I6b52f37793151041b7bdee9ec3708bfad69617b2 Signed-off-by: Jacob Garber jgarber1@ualberta.ca --- D src/arch/arm/include/stdint.h D src/arch/arm64/include/stdint.h D src/arch/mips/include/stdint.h D src/arch/ppc64/include/stdint.h D src/arch/riscv/include/stdint.h D src/arch/x86/include/stdint.h A src/include/stdint.h 7 files changed, 82 insertions(+), 564 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/75/34075/1
diff --git a/src/arch/arm/include/stdint.h b/src/arch/arm/include/stdint.h deleted file mode 100644 index ede0ec9..0000000 --- a/src/arch/arm/include/stdint.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef ARM_STDINT_H -#define ARM_STDINT_H - -#if defined(__GNUC__) -#define __HAVE_LONG_LONG__ 1 -#else -#define __HAVE_LONG_LONG__ 0 -#endif - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint64_t; -typedef signed long long int64_t; -#endif - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; -#endif - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; -#endif - -/* Types for `void *' pointers. */ -typedef int intptr_t; -typedef unsigned int uintptr_t; - -/* Largest integral types */ -#if __HAVE_LONG_LONG__ -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; -#else -typedef long int intmax_t; -typedef unsigned long int uintmax_t; -#endif - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -#if __HAVE_LONG_LONG__ -typedef uint64_t u64; -#endif -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; - -typedef uint8_t bool; -#define true 1 -#define false 0 - -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif -#ifndef UINT64_MAX -# define UINT64_MAX (18446744073709551615ULL) -#endif -#ifndef UINT64_C -#define UINT64_C(c) c ## ULL -#endif -#ifndef PRIu64 -#define PRIu64 "llu" -#endif - -#undef __HAVE_LONG_LONG__ - -#endif /* ARM_STDINT_H */ diff --git a/src/arch/arm64/include/stdint.h b/src/arch/arm64/include/stdint.h deleted file mode 100644 index cb07a07..0000000 --- a/src/arch/arm64/include/stdint.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef ARM64_STDINT_H -#define ARM64_STDINT_H - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -typedef unsigned long long uint64_t; -typedef signed long long int64_t; - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; - -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -typedef uint64_t u64; -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; -typedef int64_t s64; - -typedef uint8_t bool; -#define true 1 -#define false 0 - -/* Types for `void *' pointers. */ -typedef s64 intptr_t; -typedef u64 uintptr_t; - -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif -#ifndef UINT64_MAX -# define UINT64_MAX (18446744073709551615ULL) -#endif -#ifndef PRIu64 -#define PRIu64 "llu" -#endif - -#endif /* ARM64_STDINT_H */ diff --git a/src/arch/mips/include/stdint.h b/src/arch/mips/include/stdint.h deleted file mode 100644 index cdfea2e..0000000 --- a/src/arch/mips/include/stdint.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Based on src/arch/armv7/include/stdint.h - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef __MIPS_STDINT_H -#define __MIPS_STDINT_H - -#if defined(__GNUC__) -#define __HAVE_LONG_LONG__ 1 -#else -#define __HAVE_LONG_LONG__ 0 -#endif - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint64_t; -typedef signed long long int64_t; -#endif - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; -#endif - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; -#endif - -/* Types for `void *' pointers. */ -typedef int intptr_t; -typedef unsigned int uintptr_t; - -/* Largest integral types */ -#if __HAVE_LONG_LONG__ -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; -#else -typedef long int intmax_t; -typedef unsigned long int uintmax_t; -#endif - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -#if __HAVE_LONG_LONG__ -typedef uint64_t u64; -#endif -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; - -typedef uint8_t bool; -#define true 1 -#define false 0 - - -#undef __HAVE_LONG_LONG__ - -#endif /* __MIPS_STDINT_H */ diff --git a/src/arch/ppc64/include/stdint.h b/src/arch/ppc64/include/stdint.h deleted file mode 100644 index 6425824..0000000 --- a/src/arch/ppc64/include/stdint.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef PPC64_STDINT_H -#define PPC64_STDINT_H - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -typedef unsigned long long uint64_t; -typedef signed long long int64_t; - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; - -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -typedef uint64_t u64; -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; -typedef int64_t s64; - -typedef uint8_t bool; -#define true 1 -#define false 0 - -/* Types for `void *' pointers. */ -typedef s64 intptr_t; -typedef u64 uintptr_t; - -#endif /* PPC64_STDINT_H */ diff --git a/src/arch/riscv/include/stdint.h b/src/arch/riscv/include/stdint.h deleted file mode 100644 index 76f0d1b..0000000 --- a/src/arch/riscv/include/stdint.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef RISCV_STDINT_H -#define RISCV_STDINT_H - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -typedef unsigned long long uint64_t; -typedef signed long long int64_t; - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; - -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -typedef uint64_t u64; -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; -typedef int64_t s64; - -typedef uint8_t bool; -#define true 1 -#define false 0 - -/* Types for `void *' pointers. */ -typedef long intptr_t; -typedef unsigned long uintptr_t; - -/* FIXME: This is used in some print code and may be removed in the future. */ -#define PRIu64 "llu" - -#endif /* RISCV_STDINT_H */ diff --git a/src/arch/x86/include/stdint.h b/src/arch/x86/include/stdint.h deleted file mode 100644 index 6c40002..0000000 --- a/src/arch/x86/include/stdint.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef X86_STDINT_H -#define X86_STDINT_H - -#if defined(__GNUC__) -#define __HAVE_LONG_LONG__ 1 -#else -#define __HAVE_LONG_LONG__ 0 -#endif - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint64_t; -typedef signed long long int64_t; -#endif - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; -#endif - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; -#endif - -/* Types for `void *' pointers. */ -typedef long intptr_t; -typedef unsigned long uintptr_t; - -/* Largest integral types */ -#if __HAVE_LONG_LONG__ -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; -#else -typedef long int intmax_t; -typedef unsigned long int uintmax_t; -#endif - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -#if __HAVE_LONG_LONG__ -typedef uint64_t u64; -#endif -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; - -typedef uint8_t bool; -#define true 1 -#define false 0 - -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif -#ifndef UINT64_MAX -# define UINT64_MAX (18446744073709551615ULL) -#endif - -#ifndef UINT64_C -#define UINT64_C(c) c ## ULL -#endif -#ifndef PRIu64 -#define PRIu64 "llu" - -#endif - - -#undef __HAVE_LONG_LONG__ - -#endif /* X86_STDINT_H */ diff --git a/src/include/stdint.h b/src/include/stdint.h new file mode 100644 index 0000000..93f7dac --- /dev/null +++ b/src/include/stdint.h @@ -0,0 +1,82 @@ +/* + * This file is part of the coreboot project. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef STDINT_H +#define STDINT_H + +/* Exact-width integer types */ +typedef signed char int8_t; +typedef signed short int16_t; +typedef signed int int32_t; +typedef signed long long int64_t; + +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +typedef unsigned long long uint64_t; + +// Double check that we got this right +_Static_assert(sizeof(int8_t) == 1); +_Static_assert(sizeof(int16_t) == 2); +_Static_assert(sizeof(int32_t) == 4); +_Static_assert(sizeof(int64_t) == 8); + +_Static_assert(sizeof(uint8_t) == 1); +_Static_assert(sizeof(uint16_t) == 2); +_Static_assert(sizeof(uint32_t) == 4); +_Static_assert(sizeof(uint64_t) == 8); + +/* Types for `void *' pointers. */ +typedef long intptr_t; +typedef unsigned long uintptr_t; + +// I'm curius to see if we can use long for all platforms, so let's check +_Static_assert(sizeof(intprt_t) == sizeof(void *)); +_Static_assert(sizeof(uintprt_t) == sizeof(void *)); + +/* Largest integral types */ +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; + +/* Convenient typedefs */ +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +typedef uint64_t u64; + +typedef int8_t s8; +typedef int16_t s16; +typedef int32_t s32; +typedef int64_t s64; + +/* Min and max macro constants */ +#define INT8_MIN (0x80) +#define INT16_MIN (0x8000) +#define INT32_MIN (0x80000000) +#define INT64_MIN (0x8000000000000000) + +#define INT8_MAX (0x7F) +#define INT16_MAX (0x7FFF) +#define INT32_MAX (0x7FFFFFFF) +#define INT64_MAX (0x7FFFFFFFFFFFFFFF) + +#define UINT8_MAX (0xFFU) +#define UINT16_MAX (0xFFFFU) +#define UINT32_MAX (0xFFFFFFFFU) +#define UINT64_MAX (0xFFFFFFFFFFFFFFFFU) + +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +#endif /* STDINT_H */
Hello ron minnich, HAOUAS Elyes, Julius Werner, Jonathan Neuschäfer, build bot (Jenkins), Nico Huber, Philipp Hug,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/34075
to look at the new patch set (#2).
Change subject: [WIP] include, arch: Unify stdint.h ......................................................................
[WIP] include, arch: Unify stdint.h
Change-Id: I6b52f37793151041b7bdee9ec3708bfad69617b2 Signed-off-by: Jacob Garber jgarber1@ualberta.ca --- D src/arch/arm/include/stdint.h D src/arch/arm64/include/stdint.h D src/arch/mips/include/stdint.h D src/arch/ppc64/include/stdint.h D src/arch/riscv/include/stdint.h D src/arch/x86/include/stdint.h A src/include/stdint.h 7 files changed, 88 insertions(+), 564 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/75/34075/2
Hello ron minnich, HAOUAS Elyes, Julius Werner, Jonathan Neuschäfer, build bot (Jenkins), Nico Huber, Philipp Hug,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/34075
to look at the new patch set (#3).
Change subject: [WIP] include, arch: Unify stdint.h ......................................................................
[WIP] include, arch: Unify stdint.h
Change-Id: I6b52f37793151041b7bdee9ec3708bfad69617b2 Signed-off-by: Jacob Garber jgarber1@ualberta.ca --- D src/arch/arm/include/stdint.h D src/arch/arm64/include/stdint.h D src/arch/mips/include/stdint.h D src/arch/ppc64/include/stdint.h D src/arch/riscv/include/stdint.h D src/arch/x86/include/stdint.h A src/include/stdint.h 7 files changed, 112 insertions(+), 564 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/75/34075/3
Hello ron minnich, HAOUAS Elyes, Julius Werner, Jonathan Neuschäfer, build bot (Jenkins), Nico Huber, Philipp Hug,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/34075
to look at the new patch set (#4).
Change subject: [WIP] include, arch: Unify stdint.h ......................................................................
[WIP] include, arch: Unify stdint.h
Change-Id: I6b52f37793151041b7bdee9ec3708bfad69617b2 Signed-off-by: Jacob Garber jgarber1@ualberta.ca --- M src/arch/arm/armv7/mmu.c D src/arch/arm/include/stdint.h D src/arch/arm64/include/stdint.h D src/arch/mips/include/stdint.h D src/arch/ppc64/include/stdint.h D src/arch/riscv/include/stdint.h D src/arch/x86/include/stdint.h A src/include/stdint.h M src/soc/nvidia/tegra124/lp0/Makefile M src/soc/nvidia/tegra210/lp0/Makefile M src/soc/nvidia/tegra210/mmu_operations.c 11 files changed, 121 insertions(+), 568 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/75/34075/4
Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: [WIP] include, arch: Unify stdint.h ......................................................................
Patch Set 4:
(3 comments)
https://review.coreboot.org/c/coreboot/+/34075/4/src/arch/arm/armv7/mmu.c File src/arch/arm/armv7/mmu.c:
https://review.coreboot.org/c/coreboot/+/34075/4/src/arch/arm/armv7/mmu.c@16... PS4, Line 168: printk(BIOS_DEBUG, "Creating new subtable @%p for [%#.8" PRIxPTR ":%#.8" PRIxPTR ")\n", Please stick to the 80 char line length used in the rest of the file until the whole file has been converted to 96. (Why not just change the x to lx? And why is this code affected by this patch at all?)
https://review.coreboot.org/c/coreboot/+/34075/4/src/include/stdint.h File src/include/stdint.h:
https://review.coreboot.org/c/coreboot/+/34075/4/src/include/stdint.h@105 PS4, Line 105: uint8_t Should this be _Bool?
https://review.coreboot.org/c/coreboot/+/34075/4/src/soc/nvidia/tegra210/mmu... File src/soc/nvidia/tegra210/mmu_operations.c:
https://review.coreboot.org/c/coreboot/+/34075/4/src/soc/nvidia/tegra210/mmu... PS4, Line 26: uintptr_t start, end; Why does this need to change? (I agree that it's more appropriate, but I don't think you should mix cleanup with this patch unless necessary. You could split it out into a separate patch if you want.)
Hello ron minnich, HAOUAS Elyes, Julius Werner, Jonathan Neuschäfer, build bot (Jenkins), Nico Huber, Philipp Hug,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/34075
to look at the new patch set (#5).
Change subject: arch, include, soc: Use common stdint.h ......................................................................
arch, include, soc: Use common stdint.h
There are only minimal differences between the architecture specific stdint.h implementations, so let's tidy them up and merge them together into a single file. In particular,
- Use 'unsigned long' for uintptr_t. This was already the case for x86 and riscv, while arm and mips used 'unsigned int', and arm64 and ppc64 used 'unsigned long long'. This change allows using a single integer type for uintptr_t across all architectures, and brings it into consistency with the rest of the code base, which generally uses 'unsigned long' for memory addresses anyway. This change required fixing several assumptions about integer types in the arm code. - Use _Bool as the boolean type. This is a specialized boolean type that was introduced in C99, and is preferrable over hacking booleans using integers. romcc sadly does not support _Bool, so for that we stick with the old uint8_t. - Drop the least and fast integer types. They aren't used anywhere in the code base and are an unnecessary maintenance burden. Using the standard fixed width types is essentially always better anyway. - Drop the UINT64_C() macro. It also isn't used anywhere and doesn't provide anything that a (uint64_t) cast doesn't. - Implement the rest of the MIN and MAX numerical limits. - Use static assertions to check that the integer widths are correct.
Change-Id: I6b52f37793151041b7bdee9ec3708bfad69617b2 Signed-off-by: Jacob Garber jgarber1@ualberta.ca --- M src/arch/arm/armv7/mmu.c D src/arch/arm/include/stdint.h D src/arch/arm64/include/stdint.h D src/arch/mips/include/stdint.h D src/arch/ppc64/include/stdint.h D src/arch/riscv/include/stdint.h D src/arch/x86/include/stdint.h A src/include/stdint.h M src/soc/nvidia/tegra124/lp0/Makefile M src/soc/nvidia/tegra210/lp0/Makefile M src/soc/nvidia/tegra210/mmu_operations.c 11 files changed, 124 insertions(+), 568 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/75/34075/5
Jacob Garber has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: arch, include, soc: Use common stdint.h ......................................................................
Patch Set 5:
(3 comments)
https://review.coreboot.org/c/coreboot/+/34075/4/src/arch/arm/armv7/mmu.c File src/arch/arm/armv7/mmu.c:
https://review.coreboot.org/c/coreboot/+/34075/4/src/arch/arm/armv7/mmu.c@16... PS4, Line 168: printk(BIOS_DEBUG, "Creating new subtable @%p for [%#.8" PRIxPTR ":%#.8" PRIxPTR ")\n",
Please stick to the 80 char line length used in the rest of the file until the whole file has been c […]
The idea is that PRIxPTR is the portable way of printing a uintptr_t, since we generally cannot assume what the underlying type is. However, all architectures now use unsigned long for uintptr_t, and I don't ever see that changing in the future, so we could also just dispense with the PRI* macros for simplicity.
https://review.coreboot.org/c/coreboot/+/34075/4/src/include/stdint.h File src/include/stdint.h:
https://review.coreboot.org/c/coreboot/+/34075/4/src/include/stdint.h@105 PS4, Line 105: uint8_t
Should this be _Bool?
We'll need to make an exception for romcc since it doesn't support _Bool, but otherwise yes.
https://review.coreboot.org/c/coreboot/+/34075/4/src/soc/nvidia/tegra210/mmu... File src/soc/nvidia/tegra210/mmu_operations.c:
https://review.coreboot.org/c/coreboot/+/34075/4/src/soc/nvidia/tegra210/mmu... PS4, Line 26: uintptr_t start, end;
Why does this need to change? (I agree that it's more appropriate, but I don't think you should mix […]
memory_in_range_below_4gb() expects uintptr_t, and now that uintptr_t is unsigned long we need to update this so it compiles properly.
Nico Huber has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: arch, include, soc: Use common stdint.h ......................................................................
Patch Set 5: Code-Review+1
Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: arch, include, soc: Use common stdint.h ......................................................................
Patch Set 5:
(2 comments)
https://review.coreboot.org/c/coreboot/+/34075/4/src/arch/arm/armv7/mmu.c File src/arch/arm/armv7/mmu.c:
https://review.coreboot.org/c/coreboot/+/34075/4/src/arch/arm/armv7/mmu.c@16... PS4, Line 168: printk(BIOS_DEBUG, "Creating new subtable @%p for [%#.8" PRIxPTR ":%#.8" PRIxPTR ")\n",
The idea is that PRIxPTR is the portable way of printing a uintptr_t, since we generally cannot assu […]
This is an architecture file, so we know what the underlying type is (even if it wasn't the same for all architectures anyway). I don't think this patch should change anything here if it's not necessary to make it build.
The reason we want to suppor the PRI macros is mostly for third-party code (e.g. vboot) that's using them. For coreboot code, especially if it only runs on one architecture, I think continuing to use explicit specifiers is fine.
https://review.coreboot.org/c/coreboot/+/34075/4/src/soc/nvidia/tegra210/mmu... File src/soc/nvidia/tegra210/mmu_operations.c:
https://review.coreboot.org/c/coreboot/+/34075/4/src/soc/nvidia/tegra210/mmu... PS4, Line 26: uintptr_t start, end;
memory_in_range_below_4gb() expects uintptr_t, and now that uintptr_t is unsigned long we need to up […]
Does this mean uint64_t doesn't implicitly convert to uintptr_t on 64-bit architectures anymore? ...C conversion rules can be really stupid sometimes. -.- But okay.
I'm surprised that this is the only code that breaks, though, if that's the case.
Hello ron minnich, HAOUAS Elyes, Julius Werner, David Hendricks, Jonathan Neuschäfer, build bot (Jenkins), Nico Huber, Patrick Georgi, Martin Roth, Philipp Hug,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/34075
to look at the new patch set (#6).
Change subject: arch, include, soc: Use common stdint.h ......................................................................
arch, include, soc: Use common stdint.h
There are only minimal differences between the architecture specific stdint.h implementations, so let's tidy them up and merge them together into a single file. In particular,
- Use 'unsigned long' for uintptr_t. This was already the case for x86 and riscv, while arm and mips used 'unsigned int', and arm64 and ppc64 used 'unsigned long long'. This change allows using a single integer type for uintptr_t across all architectures, and brings it into consistency with the rest of the code base, which generally uses 'unsigned long' for memory addresses anyway. This change required fixing several assumptions about integer types in the arm code. - Use _Bool as the boolean type. This is a specialized boolean type that was introduced in C99, and is preferrable over hacking booleans using integers. romcc sadly does not support _Bool, so for that we stick with the old uint8_t. - Drop the least and fast integer types. They aren't used anywhere in the code base and are an unnecessary maintenance burden. Using the standard fixed width types is essentially always better anyway. - Drop the UINT64_C() macro. It also isn't used anywhere and doesn't provide anything that a (uint64_t) cast doesn't. - Implement the rest of the MIN and MAX numerical limits. - Use static assertions to check that the integer widths are correct.
Change-Id: I6b52f37793151041b7bdee9ec3708bfad69617b2 Signed-off-by: Jacob Garber jgarber1@ualberta.ca --- M src/arch/arm/armv7/mmu.c D src/arch/arm/include/stdint.h D src/arch/arm64/include/stdint.h D src/arch/mips/include/stdint.h D src/arch/ppc64/include/stdint.h D src/arch/riscv/include/stdint.h D src/arch/x86/include/stdint.h A src/include/stdint.h M src/soc/nvidia/tegra124/lp0/Makefile M src/soc/nvidia/tegra210/lp0/Makefile M src/soc/nvidia/tegra210/mmu_operations.c 11 files changed, 123 insertions(+), 568 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/75/34075/6
Jacob Garber has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: arch, include, soc: Use common stdint.h ......................................................................
Patch Set 6:
(2 comments)
https://review.coreboot.org/c/coreboot/+/34075/4/src/arch/arm/armv7/mmu.c File src/arch/arm/armv7/mmu.c:
https://review.coreboot.org/c/coreboot/+/34075/4/src/arch/arm/armv7/mmu.c@16... PS4, Line 168: printk(BIOS_DEBUG, "Creating new subtable @%p for [%#.8" PRIxPTR ":%#.8" PRIxPTR ")\n",
This is an architecture file, so we know what the underlying type is (even if it wasn't the same for […]
Done
https://review.coreboot.org/c/coreboot/+/34075/4/src/soc/nvidia/tegra210/mmu... File src/soc/nvidia/tegra210/mmu_operations.c:
https://review.coreboot.org/c/coreboot/+/34075/4/src/soc/nvidia/tegra210/mmu... PS4, Line 26: uintptr_t start, end;
Does this mean uint64_t doesn't implicitly convert to uintptr_t on 64-bit architectures anymore? ... […]
It will still implicitly convert in general - this is only flagged because we use pointers in the function call, and unsigned long long* is not implicitly convertible to unsigned long*.
Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: arch, include, soc: Use common stdint.h ......................................................................
Patch Set 6: Code-Review+2
(1 comment)
https://review.coreboot.org/c/coreboot/+/34075/4/src/soc/nvidia/tegra210/mmu... File src/soc/nvidia/tegra210/mmu_operations.c:
https://review.coreboot.org/c/coreboot/+/34075/4/src/soc/nvidia/tegra210/mmu... PS4, Line 26: uintptr_t start, end;
It will still implicitly convert in general - this is only flagged because we use pointers in the fu […]
Oh... right, that makes more sense.
Nico Huber has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: arch, include, soc: Use common stdint.h ......................................................................
Patch Set 6: Code-Review+2
(1 comment)
https://review.coreboot.org/c/coreboot/+/34075/6/src/include/stdint.h File src/include/stdint.h:
https://review.coreboot.org/c/coreboot/+/34075/6/src/include/stdint.h@110 PS6, Line 110: #define true 1 NB. I wanted to suggest something like `(0 == 0)`. But it's literally defined as `1` in the standard :)
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: arch, include, soc: Use common stdint.h ......................................................................
Patch Set 6:
(1 comment)
Good job! Let's hope Mr. Jenkins likes this patch...
I have added a comment, but please ignore it (it is OCD-level insane).
https://review.coreboot.org/c/coreboot/+/34075/6/src/include/stdint.h File src/include/stdint.h:
https://review.coreboot.org/c/coreboot/+/34075/6/src/include/stdint.h@105 PS6, Line 105: ifdef Absolutely minor and negligible, no need to change anything at all, BUT I *have to* point it out anyway because of my OCD w.r.t. consistency.
This is the only '#ifdef __ROMCC__' in the file; everything else uses '#ifndef __ROMCC__' instead.
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: arch, include, soc: Use common stdint.h ......................................................................
Patch Set 6: Code-Review+2
Forgot to press the button.
Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: arch, include, soc: Use common stdint.h ......................................................................
Patch Set 6:
(1 comment)
https://review.coreboot.org/c/coreboot/+/34075/6/src/include/stdint.h File src/include/stdint.h:
https://review.coreboot.org/c/coreboot/+/34075/6/src/include/stdint.h@105 PS6, Line 105: ifdef
Absolutely minor and negligible, no need to change anything at all, BUT I *have to* point it out any […]
FWIW I think #ifdef is always preferable to #ifndef if there's an #else branch (it's just easier to follow). The other ones use #ifndef because there is no #else.
HAOUAS Elyes has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: arch, include, soc: Use common stdint.h ......................................................................
Patch Set 7: Code-Review+2
Nico Huber has submitted this change and it was merged. ( https://review.coreboot.org/c/coreboot/+/34075 )
Change subject: arch, include, soc: Use common stdint.h ......................................................................
arch, include, soc: Use common stdint.h
There are only minimal differences between the architecture specific stdint.h implementations, so let's tidy them up and merge them together into a single file. In particular,
- Use 'unsigned long' for uintptr_t. This was already the case for x86 and riscv, while arm and mips used 'unsigned int', and arm64 and ppc64 used 'unsigned long long'. This change allows using a single integer type for uintptr_t across all architectures, and brings it into consistency with the rest of the code base, which generally uses 'unsigned long' for memory addresses anyway. This change required fixing several assumptions about integer types in the arm code. - Use _Bool as the boolean type. This is a specialized boolean type that was introduced in C99, and is preferrable over hacking booleans using integers. romcc sadly does not support _Bool, so for that we stick with the old uint8_t. - Drop the least and fast integer types. They aren't used anywhere in the code base and are an unnecessary maintenance burden. Using the standard fixed width types is essentially always better anyway. - Drop the UINT64_C() macro. It also isn't used anywhere and doesn't provide anything that a (uint64_t) cast doesn't. - Implement the rest of the MIN and MAX numerical limits. - Use static assertions to check that the integer widths are correct.
Change-Id: I6b52f37793151041b7bdee9ec3708bfad69617b2 Signed-off-by: Jacob Garber jgarber1@ualberta.ca Reviewed-on: https://review.coreboot.org/c/coreboot/+/34075 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: HAOUAS Elyes ehaouas@noos.fr Reviewed-by: Julius Werner jwerner@chromium.org Reviewed-by: Nico Huber nico.h@gmx.de Reviewed-by: Angel Pons th3fanbus@gmail.com --- M src/arch/arm/armv7/mmu.c D src/arch/arm/include/stdint.h D src/arch/arm64/include/stdint.h D src/arch/mips/include/stdint.h D src/arch/ppc64/include/stdint.h D src/arch/riscv/include/stdint.h D src/arch/x86/include/stdint.h A src/include/stdint.h M src/soc/nvidia/tegra124/lp0/Makefile M src/soc/nvidia/tegra210/lp0/Makefile M src/soc/nvidia/tegra210/mmu_operations.c 11 files changed, 123 insertions(+), 568 deletions(-)
Approvals: build bot (Jenkins): Verified Nico Huber: Looks good to me, approved HAOUAS Elyes: Looks good to me, approved Julius Werner: Looks good to me, approved Angel Pons: Looks good to me, approved
diff --git a/src/arch/arm/armv7/mmu.c b/src/arch/arm/armv7/mmu.c index b3133a0..e9d10e2 100644 --- a/src/arch/arm/armv7/mmu.c +++ b/src/arch/arm/armv7/mmu.c @@ -165,7 +165,7 @@
/* We assume that *pgd_entry must already be a valid block mapping. */ uintptr_t start_addr = (uintptr_t)(*pgd_entry & BLOCK_MASK); - printk(BIOS_DEBUG, "Creating new subtable @%p for [%#.8x:%#.8lx)\n", + printk(BIOS_DEBUG, "Creating new subtable @%p for [%#.8lx:%#.8lx)\n", table, start_addr, start_addr + BLOCK_SIZE);
/* Initialize the new subtable with entries of the same attributes diff --git a/src/arch/arm/include/stdint.h b/src/arch/arm/include/stdint.h deleted file mode 100644 index ede0ec9..0000000 --- a/src/arch/arm/include/stdint.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef ARM_STDINT_H -#define ARM_STDINT_H - -#if defined(__GNUC__) -#define __HAVE_LONG_LONG__ 1 -#else -#define __HAVE_LONG_LONG__ 0 -#endif - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint64_t; -typedef signed long long int64_t; -#endif - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; -#endif - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; -#endif - -/* Types for `void *' pointers. */ -typedef int intptr_t; -typedef unsigned int uintptr_t; - -/* Largest integral types */ -#if __HAVE_LONG_LONG__ -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; -#else -typedef long int intmax_t; -typedef unsigned long int uintmax_t; -#endif - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -#if __HAVE_LONG_LONG__ -typedef uint64_t u64; -#endif -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; - -typedef uint8_t bool; -#define true 1 -#define false 0 - -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif -#ifndef UINT64_MAX -# define UINT64_MAX (18446744073709551615ULL) -#endif -#ifndef UINT64_C -#define UINT64_C(c) c ## ULL -#endif -#ifndef PRIu64 -#define PRIu64 "llu" -#endif - -#undef __HAVE_LONG_LONG__ - -#endif /* ARM_STDINT_H */ diff --git a/src/arch/arm64/include/stdint.h b/src/arch/arm64/include/stdint.h deleted file mode 100644 index cb07a07..0000000 --- a/src/arch/arm64/include/stdint.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef ARM64_STDINT_H -#define ARM64_STDINT_H - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -typedef unsigned long long uint64_t; -typedef signed long long int64_t; - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; - -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -typedef uint64_t u64; -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; -typedef int64_t s64; - -typedef uint8_t bool; -#define true 1 -#define false 0 - -/* Types for `void *' pointers. */ -typedef s64 intptr_t; -typedef u64 uintptr_t; - -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif -#ifndef UINT64_MAX -# define UINT64_MAX (18446744073709551615ULL) -#endif -#ifndef PRIu64 -#define PRIu64 "llu" -#endif - -#endif /* ARM64_STDINT_H */ diff --git a/src/arch/mips/include/stdint.h b/src/arch/mips/include/stdint.h deleted file mode 100644 index cdfea2e..0000000 --- a/src/arch/mips/include/stdint.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Based on src/arch/armv7/include/stdint.h - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef __MIPS_STDINT_H -#define __MIPS_STDINT_H - -#if defined(__GNUC__) -#define __HAVE_LONG_LONG__ 1 -#else -#define __HAVE_LONG_LONG__ 0 -#endif - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint64_t; -typedef signed long long int64_t; -#endif - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; -#endif - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; -#endif - -/* Types for `void *' pointers. */ -typedef int intptr_t; -typedef unsigned int uintptr_t; - -/* Largest integral types */ -#if __HAVE_LONG_LONG__ -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; -#else -typedef long int intmax_t; -typedef unsigned long int uintmax_t; -#endif - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -#if __HAVE_LONG_LONG__ -typedef uint64_t u64; -#endif -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; - -typedef uint8_t bool; -#define true 1 -#define false 0 - - -#undef __HAVE_LONG_LONG__ - -#endif /* __MIPS_STDINT_H */ diff --git a/src/arch/ppc64/include/stdint.h b/src/arch/ppc64/include/stdint.h deleted file mode 100644 index 6425824..0000000 --- a/src/arch/ppc64/include/stdint.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef PPC64_STDINT_H -#define PPC64_STDINT_H - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -typedef unsigned long long uint64_t; -typedef signed long long int64_t; - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; - -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -typedef uint64_t u64; -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; -typedef int64_t s64; - -typedef uint8_t bool; -#define true 1 -#define false 0 - -/* Types for `void *' pointers. */ -typedef s64 intptr_t; -typedef u64 uintptr_t; - -#endif /* PPC64_STDINT_H */ diff --git a/src/arch/riscv/include/stdint.h b/src/arch/riscv/include/stdint.h deleted file mode 100644 index 76f0d1b..0000000 --- a/src/arch/riscv/include/stdint.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef RISCV_STDINT_H -#define RISCV_STDINT_H - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -typedef unsigned long long uint64_t; -typedef signed long long int64_t; - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; - -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -typedef uint64_t u64; -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; -typedef int64_t s64; - -typedef uint8_t bool; -#define true 1 -#define false 0 - -/* Types for `void *' pointers. */ -typedef long intptr_t; -typedef unsigned long uintptr_t; - -/* FIXME: This is used in some print code and may be removed in the future. */ -#define PRIu64 "llu" - -#endif /* RISCV_STDINT_H */ diff --git a/src/arch/x86/include/stdint.h b/src/arch/x86/include/stdint.h deleted file mode 100644 index 6c40002..0000000 --- a/src/arch/x86/include/stdint.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef X86_STDINT_H -#define X86_STDINT_H - -#if defined(__GNUC__) -#define __HAVE_LONG_LONG__ 1 -#else -#define __HAVE_LONG_LONG__ 0 -#endif - -/* Exact integral types */ -typedef unsigned char uint8_t; -typedef signed char int8_t; - -typedef unsigned short uint16_t; -typedef signed short int16_t; - -typedef unsigned int uint32_t; -typedef signed int int32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint64_t; -typedef signed long long int64_t; -#endif - -/* Small types */ -typedef unsigned char uint_least8_t; -typedef signed char int_least8_t; - -typedef unsigned short uint_least16_t; -typedef signed short int_least16_t; - -typedef unsigned int uint_least32_t; -typedef signed int int_least32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_least64_t; -typedef signed long long int_least64_t; -#endif - -/* Fast Types */ -typedef unsigned char uint_fast8_t; -typedef signed char int_fast8_t; - -typedef unsigned int uint_fast16_t; -typedef signed int int_fast16_t; - -typedef unsigned int uint_fast32_t; -typedef signed int int_fast32_t; - -#if __HAVE_LONG_LONG__ -typedef unsigned long long uint_fast64_t; -typedef signed long long int_fast64_t; -#endif - -/* Types for `void *' pointers. */ -typedef long intptr_t; -typedef unsigned long uintptr_t; - -/* Largest integral types */ -#if __HAVE_LONG_LONG__ -typedef long long int intmax_t; -typedef unsigned long long uintmax_t; -#else -typedef long int intmax_t; -typedef unsigned long int uintmax_t; -#endif - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; -#if __HAVE_LONG_LONG__ -typedef uint64_t u64; -#endif -typedef int8_t s8; -typedef int16_t s16; -typedef int32_t s32; - -typedef uint8_t bool; -#define true 1 -#define false 0 - -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif -#ifndef UINT64_MAX -# define UINT64_MAX (18446744073709551615ULL) -#endif - -#ifndef UINT64_C -#define UINT64_C(c) c ## ULL -#endif -#ifndef PRIu64 -#define PRIu64 "llu" - -#endif - - -#undef __HAVE_LONG_LONG__ - -#endif /* X86_STDINT_H */ diff --git a/src/include/stdint.h b/src/include/stdint.h new file mode 100644 index 0000000..f363aab --- /dev/null +++ b/src/include/stdint.h @@ -0,0 +1,119 @@ +/* + * This file is part of the coreboot project. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef STDINT_H +#define STDINT_H + +/* romcc does not support long long, _Static_assert, or _Bool, so we must ifdef that code out. + Also, GCC can provide its own implementation of stdint.h, so in theory we could use that + instead of this custom file once romcc is no more. */ + +/* Fixed width integer types */ +typedef signed char int8_t; +typedef unsigned char uint8_t; + +typedef signed short int16_t; +typedef unsigned short uint16_t; + +typedef signed int int32_t; +typedef unsigned int uint32_t; + +#ifndef __ROMCC__ +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +#endif + +/* Types for 'void *' pointers */ +typedef signed long intptr_t; +typedef unsigned long uintptr_t; + +/* Ensure that the widths are all correct */ +#ifndef __ROMCC__ +_Static_assert(sizeof(int8_t) == 1, "Size of int8_t is incorrect"); +_Static_assert(sizeof(uint8_t) == 1, "Size of uint8_t is incorrect"); + +_Static_assert(sizeof(int16_t) == 2, "Size of int16_t is incorrect"); +_Static_assert(sizeof(uint16_t) == 2, "Size of uint16_t is incorrect"); + +_Static_assert(sizeof(int32_t) == 4, "Size of int32_t is incorrect"); +_Static_assert(sizeof(uint32_t) == 4, "Size of uint32_t is incorrect"); + +_Static_assert(sizeof(int64_t) == 8, "Size of int64_t is incorrect"); +_Static_assert(sizeof(uint64_t) == 8, "Size of uint64_t is incorrect"); + +_Static_assert(sizeof(intptr_t) == sizeof(void *), "Size of intptr_t is incorrect"); +_Static_assert(sizeof(uintptr_t) == sizeof(void *), "Size of uintptr_t is incorrect"); +#endif + +/* Maximum width integer types */ +#ifndef __ROMCC__ +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; +#endif + +/* Convenient typedefs */ +typedef int8_t s8; +typedef uint8_t u8; + +typedef int16_t s16; +typedef uint16_t u16; + +typedef int32_t s32; +typedef uint32_t u32; + +#ifndef __ROMCC__ +typedef int64_t s64; +typedef uint64_t u64; +#endif + +/* Limits of integer types */ +#define INT8_MIN ((int8_t)0x80) +#define INT8_MAX ((int8_t)0x7F) +#define UINT8_MAX ((uint8_t)0xFF) + +#define INT16_MIN ((int16_t)0x8000) +#define INT16_MAX ((int16_t)0x7FFF) +#define UINT16_MAX ((uint16_t)0xFFFF) + +#define INT32_MIN ((int32_t)0x80000000) +#define INT32_MAX ((int32_t)0x7FFFFFFF) +#define UINT32_MAX ((uint32_t)0xFFFFFFFF) + +#ifndef __ROMCC__ +#define INT64_MIN ((int64_t)0x8000000000000000) +#define INT64_MAX ((int64_t)0x7FFFFFFFFFFFFFFF) +#define UINT64_MAX ((uint64_t)0xFFFFFFFFFFFFFFFF) +#endif + +#ifndef __ROMCC__ +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX +#endif + +/* TODO: move into stdbool.h */ +#ifdef __ROMCC__ +typedef uint8_t bool; +#else +typedef _Bool bool; +#endif +#define true 1 +#define false 0 + +/* TODO: move into inttypes.h */ +#ifndef __ROMCC__ +#define PRIu64 "llu" +#define PRIxPTR "lx" +#endif + +#endif /* STDINT_H */ diff --git a/src/soc/nvidia/tegra124/lp0/Makefile b/src/soc/nvidia/tegra124/lp0/Makefile index 884f8b2..e82edaa 100644 --- a/src/soc/nvidia/tegra124/lp0/Makefile +++ b/src/soc/nvidia/tegra124/lp0/Makefile @@ -34,7 +34,7 @@ tegra_lp0_resume.elf: tegra_lp0_resume.ld tegra_lp0_resume.c $(CC) -marm -march=armv4t -mno-unaligned-access -nostdlib -static \ -Os -fpie -Wl,--build-id=none -ggdb3 -T tegra_lp0_resume.ld \ - -include ../../../../arch/arm/include/stdint.h \ + -include ../../../../include/stdint.h \ -include ../../../../commonlib/include/commonlib/compiler.h \ -o $@ $(filter %.c,$+)
diff --git a/src/soc/nvidia/tegra210/lp0/Makefile b/src/soc/nvidia/tegra210/lp0/Makefile index 884f8b2..e82edaa 100644 --- a/src/soc/nvidia/tegra210/lp0/Makefile +++ b/src/soc/nvidia/tegra210/lp0/Makefile @@ -34,7 +34,7 @@ tegra_lp0_resume.elf: tegra_lp0_resume.ld tegra_lp0_resume.c $(CC) -marm -march=armv4t -mno-unaligned-access -nostdlib -static \ -Os -fpie -Wl,--build-id=none -ggdb3 -T tegra_lp0_resume.ld \ - -include ../../../../arch/arm/include/stdint.h \ + -include ../../../../include/stdint.h \ -include ../../../../commonlib/include/commonlib/compiler.h \ -o $@ $(filter %.c,$+)
diff --git a/src/soc/nvidia/tegra210/mmu_operations.c b/src/soc/nvidia/tegra210/mmu_operations.c index 9cee6b2..86328a3 100644 --- a/src/soc/nvidia/tegra210/mmu_operations.c +++ b/src/soc/nvidia/tegra210/mmu_operations.c @@ -23,7 +23,7 @@
static void tegra210_mmu_config(void) { - uint64_t start,end; + uintptr_t start, end; const unsigned long devmem = MA_DEV | MA_S | MA_RW; const unsigned long cachedmem = MA_MEM | MA_NS | MA_RW; const unsigned long secure_mem = MA_MEM | MA_S | MA_RW;