OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-mips/] [addrspace.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
/*
2
 * This file is subject to the terms and conditions of the GNU General Public
3
 * License.  See the file "COPYING" in the main directory of this archive
4
 * for more details.
5
 *
6
 * Copyright (C) 1996 by Ralf Baechle
7
 * Copyright (C) 2000, 2002  Maciej W. Rozycki
8
 *
9
 * Definitions for the address spaces of the MIPS CPUs.
10
 */
11
#ifndef __ASM_MIPS_ADDRSPACE_H
12
#define __ASM_MIPS_ADDRSPACE_H
13
 
14
/*
15
 *  Configure language
16
 */
17
#ifdef __ASSEMBLY__
18
#define _ATYPE_
19
#define _ATYPE32_
20
#define _ATYPE64_
21
#else
22
#define _ATYPE_         __PTRDIFF_TYPE__
23
#define _ATYPE32_       int
24
#define _ATYPE64_       long long
25
#endif
26
 
27
/*
28
 *  32-bit MIPS address spaces
29
 */
30
#ifdef __ASSEMBLY__
31
#define _ACAST32_
32
#define _ACAST64_
33
#else
34
#define _ACAST32_               (_ATYPE_)(_ATYPE32_)    /* widen if necessary */
35
#define _ACAST64_               (_ATYPE64_)             /* do _not_ narrow */
36
#endif
37
 
38
/*
39
 * Memory segments (32bit kernel mode addresses)
40
 */
41
#define KUSEG                   0x00000000
42
#define KSEG0                   0x80000000
43
#define KSEG1                   0xa0000000
44
#define KSEG2                   0xc0000000
45
#define KSEG3                   0xe0000000
46
 
47
#define K0BASE                  KSEG0
48
 
49
/*
50
 * Returns the kernel segment base of a given address
51
 */
52
#define KSEGX(a)                ((_ACAST32_ (a)) & 0xe0000000)
53
 
54
/*
55
 * Returns the physical address of a KSEG0/KSEG1 address
56
 */
57
#define CPHYSADDR(a)            ((_ACAST32_ (a)) & 0x1fffffff)
58
 
59
#ifndef __ASSEMBLY__
60
#define PHYSADDR(a)             CPHYSADDR(a)
61
#endif
62
 
63
/*
64
 * Map an address to a certain kernel segment
65
 */
66
#define KSEG0ADDR(a)            (CPHYSADDR(a) | KSEG0)
67
#define KSEG1ADDR(a)            (CPHYSADDR(a) | KSEG1)
68
#define KSEG2ADDR(a)            (CPHYSADDR(a) | KSEG2)
69
#define KSEG3ADDR(a)            (CPHYSADDR(a) | KSEG3)
70
 
71
/*
72
 * Memory segments (64bit kernel mode addresses)
73
 */
74
#define XKUSEG                  0x0000000000000000
75
#define XKSSEG                  0x4000000000000000
76
#define XKPHYS                  0x8000000000000000
77
#define XKSEG                   0xc000000000000000
78
#define CKSEG0                  0xffffffff80000000
79
#define CKSEG1                  0xffffffffa0000000
80
#define CKSSEG                  0xffffffffc0000000
81
#define CKSEG3                  0xffffffffe0000000
82
 
83
/*
84
 * Cache modes for XKPHYS address conversion macros
85
 */
86
#define K_CALG_COH_EXCL1_NOL2   0
87
#define K_CALG_COH_SHRL1_NOL2   1
88
#define K_CALG_UNCACHED         2
89
#define K_CALG_NONCOHERENT      3
90
#define K_CALG_COH_EXCL         4
91
#define K_CALG_COH_SHAREABLE    5
92
#define K_CALG_NOTUSED          6
93
#define K_CALG_UNCACHED_ACCEL   7
94
 
95
#define TO_PHYS_MASK                    0xfffffffffULL          /* 36 bit */
96
 
97
/*
98
 * 64-bit address conversions
99
 */
100
#define PHYS_TO_XKSEG_UNCACHED(p)       PHYS_TO_XKPHYS(K_CALG_UNCACHED,(p))
101
#define PHYS_TO_XKSEG_CACHED(p)         PHYS_TO_XKPHYS(K_CALG_COH_SHAREABLE,(p))
102
#define XKPHYS_TO_PHYS(p)               ((p) & TO_PHYS_MASK)
103
#define PHYS_TO_XKPHYS(cm,a)            (0x8000000000000000 | ((cm)<<59) | (a))
104
 
105
#endif /* __ASM_MIPS_ADDRSPACE_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.