Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/unicore32/include/mach/memory.h
10818 views
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))
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
58
59