On 10/14/22 13:42, Michal Suchánek wrote:
On Fri, Oct 14, 2022 at 01:33:33PM +0200, Heinrich Schuchardt wrote:
On 10/14/22 10:33, Michal Suchánek wrote:
Hello,
On Fri, Oct 14, 2022 at 08:40:52AM +0200, Heinrich Schuchardt wrote:
From: Heinrich Schuchardt <xypron.g...@gmx.de>
Building sandbox_defconfig on 32bit systems requires manual configuration.
we should void this.
The compiler provides symbol __LP64__. This is enough to know if the host
is a 64bit or a 32bit system.
Reported-by: Michal Suchanek <msucha...@suse.de>
Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de>
---
arch/sandbox/Kconfig | 24 ------------------------
arch/sandbox/include/asm/posix_types.h | 8 +++++++-
drivers/misc/swap_case.c | 2 +-
include/linux/bitops.h | 2 +-
4 files changed, 9 insertions(+), 27 deletions(-)
diff --git a/arch/sandbox/Kconfig b/arch/sandbox/Kconfig
index 852a7c8bf2..c7668233b9 100644
--- a/arch/sandbox/Kconfig
+++ b/arch/sandbox/Kconfig
@@ -13,7 +13,6 @@ config SYS_CPU
config SANDBOX64
bool "Use 64-bit addresses"
select PHYS_64BIT
- select HOST_64BIT
eliminating the Kconfig option makes it no longer possible SANDBOX64
depend on building 64bit.
Looking at include/linux/bitops.h and drivers/misc/swap_case.c it was always
wrong to use HOST_64BIT=y when building sandbox64_defconfig on an ILP32
system.
And it will continue to be wrong when there is no config option that
SANDBOX64 can depend on so it cannot be enabled on 32bit.
Before and after this patch you can build sandbox64 on ilp32. Kconfig is
not meant to stop you from building.
The raison d'etre of phys_addr_t is that it can be wider than void *.
sandbox64 can be booted on ilp32 but has bugs that need attention.
Best regards
Heinrich
Thanks
Michal
Best regards
Heinrich
Thanks
Michal
config SANDBOX_RAM_SIZE_MB
int "RAM size in MiB"
@@ -41,24 +40,6 @@ config SYS_CONFIG_NAME
default "sandbox_spl" if SANDBOX_SPL
default "sandbox" if !SANDBOX_SPL
-choice
- prompt "Run sandbox on 32/64-bit host"
- default HOST_64BIT
- help
- Sandbox can be built on 32-bit and 64-bit hosts.
- The default is to build on a 64-bit host and run
- on a 64-bit host. If you want to run sandbox on
- a 32-bit host, change it here.
-
-config HOST_32BIT
- bool "32-bit host"
- depends on !PHYS_64BIT
-
-config HOST_64BIT
- bool "64-bit host"
-
-endchoice
-
config SANDBOX_CRASH_RESET
bool "Reset on crash"
help
@@ -68,11 +49,6 @@ config SANDBOX_CRASH_RESET
test suites like the UEFI self certification test which continue
with the next test after a crash.
-config SANDBOX_BITS_PER_LONG
- int
- default 32 if HOST_32BIT
- default 64 if HOST_64BIT
-
config SYS_FDT_LOAD_ADDR
hex "Address at which to load devicetree"
default 0x100
diff --git a/arch/sandbox/include/asm/posix_types.h
b/arch/sandbox/include/asm/posix_types.h
index ec18ed7e3c..0129e91122 100644
--- a/arch/sandbox/include/asm/posix_types.h
+++ b/arch/sandbox/include/asm/posix_types.h
@@ -19,6 +19,12 @@
* assume GCC is being used.
*/
+#ifdef __LP64__
+#define SANDBOX_BITS_PER_LONG 64
+#else
+#define SANDBOX_BITS_PER_LONG 32
+#endif
+
typedef unsigned short __kernel_dev_t;
typedef unsigned long __kernel_ino_t;
typedef unsigned short __kernel_mode_t;
@@ -28,7 +34,7 @@ typedef int __kernel_pid_t;
typedef unsigned short __kernel_ipc_pid_t;
typedef unsigned short __kernel_uid_t;
typedef unsigned short __kernel_gid_t;
-#if CONFIG_SANDBOX_BITS_PER_LONG == 32
+#if SANDBOX_BITS_PER_LONG == 32
typedef unsigned int __kernel_size_t;
typedef int __kernel_ssize_t;
typedef int __kernel_ptrdiff_t;
diff --git a/drivers/misc/swap_case.c b/drivers/misc/swap_case.c
index 7093ad1cd4..205ed81750 100644
--- a/drivers/misc/swap_case.c
+++ b/drivers/misc/swap_case.c
@@ -331,7 +331,7 @@ static int sandbox_swap_case_map_physmem(struct udevice
*dev,
*ptrp = &pci_ea_bar2_magic;
*lenp = PCI_CAP_EA_SIZE_LO;
break;
-#ifdef CONFIG_HOST_64BIT
+#ifdef __LP64__
/*
* This cannot be work on a 32-bit machine since *lenp is ulong
* which is 32-bits, but it needs to have a 64-bit value
diff --git a/include/linux/bitops.h b/include/linux/bitops.h
index d2e5ca026e..6456f5ad45 100644
--- a/include/linux/bitops.h
+++ b/include/linux/bitops.h
@@ -28,7 +28,7 @@
*/
#ifdef CONFIG_SANDBOX
#define GENMASK(h, l) \
- (((~0UL) << (l)) & (~0UL >> (CONFIG_SANDBOX_BITS_PER_LONG - 1 - (h))))
+ (((~0UL) << (l)) & (~0UL >> (SANDBOX_BITS_PER_LONG - 1 - (h))))
#else
#define GENMASK(h, l) \
(((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h))))
--
2.37.2