1 // SPDX-License-Identifier: GPL-2.0
3 * arch/parisc/mm/ioremap.c
5 * (C) Copyright 1995 1996 Linus Torvalds
6 * (C) Copyright 2001-2019 Helge Deller <deller@gmx.de>
7 * (C) Copyright 2005 Kyle McMartin <kyle@parisc-linux.org>
10 #include <linux/vmalloc.h>
11 #include <linux/errno.h>
12 #include <linux/module.h>
16 void __iomem
*ioremap_prot(phys_addr_t phys_addr
, size_t size
,
20 unsigned long end
= phys_addr
+ size
- 1;
21 /* Support EISA addresses */
22 if ((phys_addr
>= 0x00080000 && end
< 0x000fffff) ||
23 (phys_addr
>= 0x00500000 && end
< 0x03bfffff))
24 phys_addr
|= F_EXTEND(0xfc000000);
28 * Don't allow anybody to remap normal RAM that we're using..
30 if (phys_addr
< virt_to_phys(high_memory
)) {
34 t_addr
= __va(phys_addr
);
35 t_end
= t_addr
+ (size
- 1);
37 for (page
= virt_to_page(t_addr
);
38 page
<= virt_to_page(t_end
); page
++) {
39 if(!PageReserved(page
))
44 return generic_ioremap_prot(phys_addr
, size
, __pgprot(prot
));
46 EXPORT_SYMBOL(ioremap_prot
);