Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28410293 authored by Russell King's avatar Russell King
Browse files

ARM: make virt_to_idmap() return unsigned long



Make virt_to_idmap() return an unsigned long rather than phys_addr_t.

Returning phys_addr_t here makes no sense, because the definition of
virt_to_idmap() is that it shall return a physical address which maps
identically with the virtual address.  Since virtual addresses are
limited to 32-bit, identity mapped physical addresses are as well.

Almost all users already had an implicit narrowing cast to unsigned long
so let's make this official and part of this interface.

Tested-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 9023cc82
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -273,14 +273,14 @@ static inline void *phys_to_virt(phys_addr_t x)
#define __va(x)			((void *)__phys_to_virt((phys_addr_t)(x)))
#define pfn_to_kaddr(pfn)	__va((phys_addr_t)(pfn) << PAGE_SHIFT)

extern phys_addr_t (*arch_virt_to_idmap)(unsigned long x);
extern unsigned long (*arch_virt_to_idmap)(unsigned long x);

/*
 * These are for systems that have a hardware interconnect supported alias of
 * physical memory for idmap purposes.  Most cases should leave these
 * untouched.
 * untouched.  Note: this can only return addresses less than 4GiB.
 */
static inline phys_addr_t __virt_to_idmap(unsigned long x)
static inline unsigned long __virt_to_idmap(unsigned long x)
{
	if (IS_ENABLED(CONFIG_MMU) && arch_virt_to_idmap)
		return arch_virt_to_idmap(x);
+1 −1
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ static void __soft_restart(void *addr)
	flush_cache_all();

	/* Switch to the identity mapping. */
	phys_reset = (phys_reset_t)(unsigned long)virt_to_idmap(cpu_reset);
	phys_reset = (phys_reset_t)virt_to_idmap(cpu_reset);
	phys_reset((unsigned long)addr);

	/* Should never get here. */
+1 −1
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ static void __init keystone_init(void)
	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
}

static phys_addr_t keystone_virt_to_idmap(unsigned long x)
static unsigned long keystone_virt_to_idmap(unsigned long x)
{
	return (phys_addr_t)(x) - CONFIG_PAGE_OFFSET + KEYSTONE_LOW_PHYS_START;
}
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
 * page tables.
 */
pgd_t *idmap_pgd;
phys_addr_t (*arch_virt_to_idmap) (unsigned long x);
unsigned long (*arch_virt_to_idmap)(unsigned long x);

#ifdef CONFIG_ARM_LPAE
static void idmap_add_pmd(pud_t *pud, unsigned long addr, unsigned long end,