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. 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 > > > >