Commit | Line | Data |
---|---|---|
b50f1704 G |
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 | ||
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) | |
50 | ||
51 | /* kuser area */ | |
52 | #define KUSER_VECPAGE_BASE (KUSER_BASE + UL(0x3fff0000)) | |
ce443ab5 | 53 | #define KUSER_UNIGFX_BASE (PAGE_OFFSET + PKUNITY_UNIGFX_MMAP_BASE) |
b50f1704 G |
54 | /* kuser_vecpage (0xbfff0000) is ro, and vectors page (0xffff0000) is rw */ |
55 | #define kuser_vecpage_to_vectors(x) ((x) - (KUSER_VECPAGE_BASE) \ | |
56 | + (VECTORS_BASE)) | |
57 | ||
58 | #endif |