sh: Assembly friendly __pa and __va definitions
authorMatt Fleming <matt@console-pimps.org>
Sat, 24 Apr 2010 10:12:12 +0000 (11:12 +0100)
committerMatt Fleming <matt@console-pimps.org>
Sun, 25 Apr 2010 19:44:22 +0000 (20:44 +0100)
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>
arch/sh/include/asm/page.h

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