mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-19 17:14:40 +08:00
sh: Kill off duplicate address alignment in ioremap_fixed().
This is already taken care of in the top-level ioremap, and now that no one should be calling ioremap_fixed() directly we can simply throw the mapping displacement in as an additional argument. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
d57d64080d
commit
acf2c9685f
@ -239,12 +239,14 @@ void __iomem *__ioremap_caller(unsigned long offset, unsigned long size,
|
||||
void __iounmap(void __iomem *addr);
|
||||
|
||||
#ifdef CONFIG_IOREMAP_FIXED
|
||||
extern void __iomem *ioremap_fixed(resource_size_t, unsigned long, pgprot_t);
|
||||
extern void __iomem *ioremap_fixed(resource_size_t, unsigned long,
|
||||
unsigned long, pgprot_t);
|
||||
extern int iounmap_fixed(void __iomem *);
|
||||
extern void ioremap_fixed_init(void);
|
||||
#else
|
||||
static inline void __iomem *
|
||||
ioremap_fixed(resource_size t phys_addr, unsigned long size, pgprot_t prot)
|
||||
ioremap_fixed(resource_size t phys_addr, unsigned long offset,
|
||||
unsigned long size, pgprot_t prot)
|
||||
{
|
||||
BUG();
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ __ioremap_caller(unsigned long phys_addr, unsigned long size,
|
||||
* If we can't yet use the regular approach, go the fixmap route.
|
||||
*/
|
||||
if (!mem_init_done)
|
||||
return ioremap_fixed(phys_addr, size, pgprot);
|
||||
return ioremap_fixed(phys_addr, offset, size, pgprot);
|
||||
|
||||
/*
|
||||
* Ok, go for it..
|
||||
|
@ -45,12 +45,11 @@ void __init ioremap_fixed_init(void)
|
||||
}
|
||||
|
||||
void __init __iomem *
|
||||
ioremap_fixed(resource_size_t phys_addr, unsigned long size, pgprot_t prot)
|
||||
ioremap_fixed(resource_size_t phys_addr, unsigned long offset,
|
||||
unsigned long size, pgprot_t prot)
|
||||
{
|
||||
enum fixed_addresses idx0, idx;
|
||||
resource_size_t last_addr;
|
||||
struct ioremap_map *map;
|
||||
unsigned long offset;
|
||||
unsigned int nrpages;
|
||||
int i, slot;
|
||||
|
||||
@ -67,18 +66,6 @@ ioremap_fixed(resource_size_t phys_addr, unsigned long size, pgprot_t prot)
|
||||
if (slot < 0)
|
||||
return NULL;
|
||||
|
||||
/* Don't allow wraparound or zero size */
|
||||
last_addr = phys_addr + size - 1;
|
||||
if (!size || last_addr < phys_addr)
|
||||
return NULL;
|
||||
|
||||
/*
|
||||
* Fixmap mappings have to be page-aligned
|
||||
*/
|
||||
offset = phys_addr & ~PAGE_MASK;
|
||||
phys_addr &= PAGE_MASK;
|
||||
size = PAGE_ALIGN(last_addr + 1) - phys_addr;
|
||||
|
||||
/*
|
||||
* Mappings have to fit in the FIX_IOREMAP area.
|
||||
*/
|
||||
@ -111,7 +98,6 @@ int iounmap_fixed(void __iomem *addr)
|
||||
unsigned long offset;
|
||||
unsigned int nrpages;
|
||||
int i, slot;
|
||||
pgprot_t prot;
|
||||
|
||||
slot = -1;
|
||||
for (i = 0; i < FIX_N_IOREMAPS; i++) {
|
||||
@ -133,11 +119,9 @@ int iounmap_fixed(void __iomem *addr)
|
||||
offset = virt_addr & ~PAGE_MASK;
|
||||
nrpages = PAGE_ALIGN(offset + map->size - 1) >> PAGE_SHIFT;
|
||||
|
||||
pgprot_val(prot) = _PAGE_WIRED;
|
||||
|
||||
idx = FIX_IOREMAP_BEGIN + slot + nrpages;
|
||||
while (nrpages > 0) {
|
||||
__clear_fixmap(idx, prot);
|
||||
__clear_fixmap(idx, __pgprot(_PAGE_WIRED));
|
||||
--idx;
|
||||
--nrpages;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user