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