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