Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/m32r/include/asm/addrspace.h
10818 views
1
/*
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) 2001 by Hiroyuki Kondo
7
*
8
* Defitions for the address spaces of the M32R CPUs.
9
*/
10
#ifndef __ASM_M32R_ADDRSPACE_H
11
#define __ASM_M32R_ADDRSPACE_H
12
13
/*
14
* Memory segments (32bit kernel mode addresses)
15
*/
16
#define KUSEG 0x00000000
17
#define KSEG0 0x80000000
18
#define KSEG1 0xa0000000
19
#define KSEG2 0xc0000000
20
#define KSEG3 0xe0000000
21
22
#define K0BASE KSEG0
23
24
/*
25
* Returns the kernel segment base of a given address
26
*/
27
#ifndef __ASSEMBLY__
28
#define KSEGX(a) (((unsigned long)(a)) & 0xe0000000)
29
#else
30
#define KSEGX(a) ((a) & 0xe0000000)
31
#endif
32
33
/*
34
* Returns the physical address of a KSEG0/KSEG1 address
35
*/
36
#ifndef __ASSEMBLY__
37
#define PHYSADDR(a) (((unsigned long)(a)) & 0x1fffffff)
38
#else
39
#define PHYSADDR(a) ((a) & 0x1fffffff)
40
#endif
41
42
/*
43
* Map an address to a certain kernel segment
44
*/
45
#ifndef __ASSEMBLY__
46
#define KSEG0ADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | KSEG0))
47
#define KSEG1ADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | KSEG1))
48
#define KSEG2ADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | KSEG2))
49
#define KSEG3ADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | KSEG3))
50
#else
51
#define KSEG0ADDR(a) (((a) & 0x1fffffff) | KSEG0)
52
#define KSEG1ADDR(a) (((a) & 0x1fffffff) | KSEG1)
53
#define KSEG2ADDR(a) (((a) & 0x1fffffff) | KSEG2)
54
#define KSEG3ADDR(a) (((a) & 0x1fffffff) | KSEG3)
55
#endif
56
57
#endif /* __ASM_M32R_ADDRSPACE_H */
58
59