lib/logic_iomem: Fix operation on 32-bit
On 32-bit, the first entry might be at 0/NULL, but that's
strange and leads to issues, e.g. where we check "if (ret)".
Use a IOREMAP_BIAS/IOREMAP_MASK of 0x80000000UL to avoid
this. This then requires reducing the number of areas (via
MAX_AREAS), but we still have 128 areas, which is enough.
Fixes: ca2e334232
("lib: add iomem emulation (logic_iomem)")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
parent
4e84139e14
commit
4e8a5edac5
@ -21,15 +21,15 @@ struct logic_iomem_area {
|
||||
|
||||
#define AREA_SHIFT 24
|
||||
#define MAX_AREA_SIZE (1 << AREA_SHIFT)
|
||||
#define MAX_AREAS ((1ULL<<32) / MAX_AREA_SIZE)
|
||||
#define MAX_AREAS ((1U << 31) / MAX_AREA_SIZE)
|
||||
#define AREA_BITS ((MAX_AREAS - 1) << AREA_SHIFT)
|
||||
#define AREA_MASK (MAX_AREA_SIZE - 1)
|
||||
#ifdef CONFIG_64BIT
|
||||
#define IOREMAP_BIAS 0xDEAD000000000000UL
|
||||
#define IOREMAP_MASK 0xFFFFFFFF00000000UL
|
||||
#else
|
||||
#define IOREMAP_BIAS 0
|
||||
#define IOREMAP_MASK 0
|
||||
#define IOREMAP_BIAS 0x80000000UL
|
||||
#define IOREMAP_MASK 0x80000000UL
|
||||
#endif
|
||||
|
||||
static DEFINE_MUTEX(regions_mtx);
|
||||
|
Loading…
Reference in New Issue
Block a user