Prepare v2023.10
[platform/kernel/u-boot.git] / arch / powerpc / include / asm / io.h
index 6d76e3e..f63cae0 100644 (file)
 #include <asm/byteorder.h>
 
 #ifdef CONFIG_ADDR_MAP
+#include <asm/global_data.h>
 #include <addr_map.h>
+
+DECLARE_GLOBAL_DATA_PTR;
 #endif
 
 #define SIO_CONFIG_RA   0x398
@@ -92,9 +95,9 @@ extern void _outsl_ns(volatile u32 *port, const void *buf, int nl);
 
 #define IO_SPACE_LIMIT ~0
 
-#define memset_io(a,b,c)       memset((void *)(a),(b),(c))
-#define memcpy_fromio(a,b,c)   memcpy((a),(void *)(b),(c))
-#define memcpy_toio(a,b,c)  memcpy((void *)(a),(b),(c))
+#define memset_io(a,b,c)       memset((void __force *)(a),(b),(c))
+#define memcpy_fromio(a,b,c)   memcpy((a),(void __force *)(b),(c))
+#define memcpy_toio(a,b,c)  memcpy((void __force *)(a),(b),(c))
 
 /*
  * Enforce In-order Execution of I/O:
@@ -303,20 +306,20 @@ static inline void out_be32(volatile unsigned __iomem *addr, u32 val)
 static inline void *phys_to_virt(phys_addr_t paddr)
 {
 #ifdef CONFIG_ADDR_MAP
-       return addrmap_phys_to_virt(paddr);
-#else
-       return (void *)((unsigned long)paddr);
+       if (gd->flags & GD_FLG_RELOC)
+               return addrmap_phys_to_virt(paddr);
 #endif
+       return (void *)((unsigned long)paddr);
 }
 #define phys_to_virt phys_to_virt
 
 static inline phys_addr_t virt_to_phys(void * vaddr)
 {
 #ifdef CONFIG_ADDR_MAP
-       return addrmap_virt_to_phys(vaddr);
-#else
-       return (phys_addr_t)((unsigned long)vaddr);
+       if (gd->flags & GD_FLG_RELOC)
+               return addrmap_virt_to_phys(vaddr);
 #endif
+       return (phys_addr_t)((unsigned long)vaddr);
 }
 #define virt_to_phys virt_to_phys