|
@@ -51,7 +51,8 @@
|
|
|
#define VA_BITS (CONFIG_ARM64_VA_BITS)
|
|
|
#define VA_START (UL(0xffffffffffffffff) << VA_BITS)
|
|
|
#define PAGE_OFFSET (UL(0xffffffffffffffff) << (VA_BITS - 1))
|
|
|
-#define MODULES_END (PAGE_OFFSET)
|
|
|
+#define KIMAGE_VADDR (PAGE_OFFSET)
|
|
|
+#define MODULES_END (KIMAGE_VADDR)
|
|
|
#define MODULES_VADDR (MODULES_END - SZ_64M)
|
|
|
#define PCI_IO_END (MODULES_VADDR - SZ_2M)
|
|
|
#define PCI_IO_START (PCI_IO_END - PCI_IO_SIZE)
|
|
@@ -75,8 +76,13 @@
|
|
|
* private definitions which should NOT be used outside memory.h
|
|
|
* files. Use virt_to_phys/phys_to_virt/__pa/__va instead.
|
|
|
*/
|
|
|
-#define __virt_to_phys(x) (((phys_addr_t)(x) - PAGE_OFFSET + PHYS_OFFSET))
|
|
|
+#define __virt_to_phys(x) ({ \
|
|
|
+ phys_addr_t __x = (phys_addr_t)(x); \
|
|
|
+ __x >= PAGE_OFFSET ? (__x - PAGE_OFFSET + PHYS_OFFSET) : \
|
|
|
+ (__x - KIMAGE_VADDR + PHYS_OFFSET); })
|
|
|
+
|
|
|
#define __phys_to_virt(x) ((unsigned long)((x) - PHYS_OFFSET + PAGE_OFFSET))
|
|
|
+#define __phys_to_kimg(x) ((unsigned long)((x) - PHYS_OFFSET + KIMAGE_VADDR))
|
|
|
|
|
|
/*
|
|
|
* Convert a page to/from a physical address
|