Skip to content

Commit

Permalink
m68knommu: fix definitions of __pa() and __va()
Browse files Browse the repository at this point in the history
Fix compilation breakage of all m68knommu targets:

  CC      arch/m68knommu/kernel/asm-offsets.s
In file included from include/linux/sched.h:77,
                 from arch/m68knommu/kernel/asm-offsets.c:12:
include/linux/percpu.h: In function 'per_cpu_ptr_to_phys':
include/linux/percpu.h:161: error: implicit declaration of function 'virt_to_phy

This is broken in linux-2.6.33-rc3.

Change the definitions of __pa() and __va() to not use virt_to_phys()
and phys_to_virt(). Trivial 1:1 conversion required for the non-MMU case.

A side effect if this is that the m68knommu can now use asm/virtconvert.h
for the definition of virt_to_phys() and phys_to_virt().

Also cleaned up the definition of page_to_phys() when moving into
virtconvert.h.

Signed-off-by: Greg Ungerer <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
gregungerer authored and torvalds committed Jan 13, 2010
1 parent 066000d commit 682137f
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 15 deletions.
14 changes: 1 addition & 13 deletions arch/m68k/include/asm/io_no.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#ifdef __KERNEL__

#include <asm/virtconvert.h>

/*
* These are for ISA/PCI shared memory _only_ and should never be used
Expand Down Expand Up @@ -165,19 +166,6 @@ static inline void *ioremap_fullcache(unsigned long physaddr, unsigned long size

extern void iounmap(void *addr);

/* Pages to physical address... */
#define page_to_phys(page) ((page - mem_map) << PAGE_SHIFT)
#define page_to_bus(page) ((page - mem_map) << PAGE_SHIFT)

/*
* Macros used for converting between virtual and physical mappings.
*/
#define phys_to_virt(vaddr) ((void *) (vaddr))
#define virt_to_phys(vaddr) ((unsigned long) (vaddr))

#define virt_to_bus virt_to_phys
#define bus_to_virt phys_to_virt

/*
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
* access
Expand Down
4 changes: 2 additions & 2 deletions arch/m68k/include/asm/page_no.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ extern unsigned long memory_end;

#ifndef __ASSEMBLY__

#define __pa(vaddr) virt_to_phys((void *)(vaddr))
#define __va(paddr) phys_to_virt((unsigned long)(paddr))
#define __pa(vaddr) ((unsigned long)(vaddr))
#define __va(paddr) ((void *)(paddr))

#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
Expand Down
4 changes: 4 additions & 0 deletions arch/m68k/include/asm/virtconvert.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ static inline void *phys_to_virt(unsigned long address)
}

/* Permanent address of a page. */
#ifdef CONFIG_MMU
#ifdef CONFIG_SINGLE_MEMORY_CHUNK
#define page_to_phys(page) \
__pa(PAGE_OFFSET + (((page) - pg_data_map[0].node_mem_map) << PAGE_SHIFT))
Expand All @@ -37,6 +38,9 @@ static inline void *phys_to_virt(unsigned long address)
page_to_pfn(__page) << PAGE_SHIFT; \
})
#endif
#else
#define page_to_phys(page) (((page) - mem_map) << PAGE_SHIFT)
#endif

/*
* IO bus memory addresses are 1:1 with the physical address,
Expand Down

0 comments on commit 682137f

Please sign in to comment.