1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * linux/arch/unicore32/include/mach/memory.h 4 * 5 * Code specific to PKUnity SoC and UniCore ISA 6 * 7 * Copyright (C) 2001-2010 GUAN Xue-tao 8 */ 9 #ifndef __MACH_PUV3_MEMORY_H__ 10 #define __MACH_PUV3_MEMORY_H__ 11 12 #include <mach/hardware.h> 13 14 /* Physical DRAM offset. */ 15 #define PHYS_OFFSET UL(0x00000000) 16 /* The base address of exception vectors. */ 17 #define VECTORS_BASE UL(0xffff0000) 18 /* The base address of kuser area. */ 19 #define KUSER_BASE UL(0x80000000) 20 21 #ifdef __ASSEMBLY__ 22 /* The byte offset of the kernel image in RAM from the start of RAM. */ 23 #define KERNEL_IMAGE_START 0x00408000 24 #endif 25 26 #if !defined(__ASSEMBLY__) && defined(CONFIG_PCI) 27 28 void puv3_pci_adjust_zones(unsigned long *size, unsigned long *holes); 29 30 #define arch_adjust_zones(size, holes) \ 31 puv3_pci_adjust_zones(size, holes) 32 33 #endif 34 35 /* 36 * PCI controller in PKUnity-3 masks highest 5-bit for upstream channel, 37 * so we must limit the DMA allocation within 128M physical memory for 38 * supporting PCI devices. 39 */ 40 #define PCI_DMA_THRESHOLD (PHYS_OFFSET + SZ_128M - 1) 41 42 #define is_pcibus_device(dev) (dev && \ 43 (strncmp(dev->bus->name, "pci", 3) == 0)) 44 45 #define __virt_to_pcibus(x) (__virt_to_phys((x) + PKUNITY_PCIAHB_BASE)) 46 #define __pcibus_to_virt(x) (__phys_to_virt(x) - PKUNITY_PCIAHB_BASE) 47 48 /* kuser area */ 49 #define KUSER_VECPAGE_BASE (KUSER_BASE + UL(0x3fff0000)) 50 /* kuser_vecpage (0xbfff0000) is ro, and vectors page (0xffff0000) is rw */ 51 #define kuser_vecpage_to_vectors(x) ((x) - (KUSER_VECPAGE_BASE) \ 52 + (VECTORS_BASE)) 53 54 #endif 55