diff options
Diffstat (limited to 'arch/m68k/include/asm/virtconvert.h')
-rw-r--r-- | arch/m68k/include/asm/virtconvert.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/arch/m68k/include/asm/virtconvert.h b/arch/m68k/include/asm/virtconvert.h new file mode 100644 index 000000000000..22ab05c9c52b --- /dev/null +++ b/arch/m68k/include/asm/virtconvert.h | |||
@@ -0,0 +1,48 @@ | |||
1 | #ifndef __VIRT_CONVERT__ | ||
2 | #define __VIRT_CONVERT__ | ||
3 | |||
4 | /* | ||
5 | * Macros used for converting between virtual and physical mappings. | ||
6 | */ | ||
7 | |||
8 | #ifdef __KERNEL__ | ||
9 | |||
10 | #include <linux/compiler.h> | ||
11 | #include <linux/mmzone.h> | ||
12 | #include <asm/setup.h> | ||
13 | #include <asm/page.h> | ||
14 | |||
15 | /* | ||
16 | * Change virtual addresses to physical addresses and vv. | ||
17 | */ | ||
18 | static inline unsigned long virt_to_phys(void *address) | ||
19 | { | ||
20 | return __pa(address); | ||
21 | } | ||
22 | |||
23 | static inline void *phys_to_virt(unsigned long address) | ||
24 | { | ||
25 | return __va(address); | ||
26 | } | ||
27 | |||
28 | /* Permanent address of a page. */ | ||
29 | #ifdef CONFIG_SINGLE_MEMORY_CHUNK | ||
30 | #define page_to_phys(page) \ | ||
31 | __pa(PAGE_OFFSET + (((page) - pg_data_map[0].node_mem_map) << PAGE_SHIFT)) | ||
32 | #else | ||
33 | #define page_to_phys(_page) ({ \ | ||
34 | struct page *__page = _page; \ | ||
35 | struct pglist_data *pgdat; \ | ||
36 | pgdat = pg_data_table[page_to_nid(__page)]; \ | ||
37 | page_to_pfn(__page) << PAGE_SHIFT; \ | ||
38 | }) | ||
39 | #endif | ||
40 | |||
41 | /* | ||
42 | * IO bus memory addresses are 1:1 with the physical address, | ||
43 | */ | ||
44 | #define virt_to_bus virt_to_phys | ||
45 | #define bus_to_virt phys_to_virt | ||
46 | |||
47 | #endif | ||
48 | #endif | ||