sh: Assembly friendly __pa and __va definitions

This patch defines ___pa and ___va which return the physical and virtual
address of an address, respectively. These macros are suitable for
calling from assembly because they don't include the C casts required by
__pa and __va.

Signed-off-by: Matt Fleming <matt@console-pimps.org>
This commit is contained in:
Matt Fleming 2010-04-24 11:12:12 +01:00
parent 4a6feab0ee
commit 7c4584d39a
1 changed files with 9 additions and 4 deletions

View File

@ -128,13 +128,18 @@ typedef struct page *pgtable_t;
* added or subtracted as required. * added or subtracted as required.
*/ */
#ifdef CONFIG_PMB #ifdef CONFIG_PMB
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET+__MEMORY_START) #define ___pa(x) ((x)-PAGE_OFFSET+__MEMORY_START)
#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET-__MEMORY_START)) #define ___va(x) ((x)+PAGE_OFFSET-__MEMORY_START)
#else #else
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET) #define ___pa(x) ((x)-PAGE_OFFSET)
#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) #define ___va(x) ((x)+PAGE_OFFSET)
#endif #endif
#ifndef __ASSEMBLY__
#define __pa(x) ___pa((unsigned long)x)
#define __va(x) (void *)___va((unsigned long)x)
#endif /* !__ASSEMBLY__ */
#ifdef CONFIG_UNCACHED_MAPPING #ifdef CONFIG_UNCACHED_MAPPING
#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + uncached_start) #define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + uncached_start)
#define CAC_ADDR(addr) ((addr) - uncached_start + PAGE_OFFSET) #define CAC_ADDR(addr) ((addr) - uncached_start + PAGE_OFFSET)