1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23#ifndef _LINUX_MTRR_H
24#define _LINUX_MTRR_H
25
26#include <linux/config.h>
27#include <linux/ioctl.h>
28
29#define MTRR_IOCTL_BASE 'M'
30
31struct mtrr_sentry
32{
33 unsigned long base;
34 unsigned int size;
35 unsigned int type;
36};
37
38struct mtrr_gentry
39{
40 unsigned int regnum;
41 unsigned long base;
42 unsigned int size;
43 unsigned int type;
44};
45
46
47#define MTRRIOC_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry)
48#define MTRRIOC_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry)
49#define MTRRIOC_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry)
50#define MTRRIOC_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry)
51#define MTRRIOC_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry)
52#define MTRRIOC_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry)
53#define MTRRIOC_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry)
54#define MTRRIOC_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry)
55#define MTRRIOC_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry)
56#define MTRRIOC_KILL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry)
57
58
59#define MTRR_TYPE_UNCACHABLE 0
60#define MTRR_TYPE_WRCOMB 1
61
62
63#define MTRR_TYPE_WRTHROUGH 4
64#define MTRR_TYPE_WRPROT 5
65#define MTRR_TYPE_WRBACK 6
66#define MTRR_NUM_TYPES 7
67
68#ifdef __KERNEL__
69
70
71# ifdef CONFIG_MTRR
72extern int mtrr_add (unsigned long base, unsigned long size,
73 unsigned int type, char increment);
74extern int mtrr_add_page (unsigned long base, unsigned long size,
75 unsigned int type, char increment);
76extern int mtrr_del (int reg, unsigned long base, unsigned long size);
77extern int mtrr_del_page (int reg, unsigned long base, unsigned long size);
78extern void mtrr_centaur_report_mcr(int mcr, u32 lo, u32 hi);
79# else
80static __inline__ int mtrr_add (unsigned long base, unsigned long size,
81 unsigned int type, char increment)
82{
83 return -ENODEV;
84}
85static __inline__ int mtrr_add_page (unsigned long base, unsigned long size,
86 unsigned int type, char increment)
87{
88 return -ENODEV;
89}
90static __inline__ int mtrr_del (int reg, unsigned long base,
91 unsigned long size)
92{
93 return -ENODEV;
94}
95static __inline__ int mtrr_del_page (int reg, unsigned long base,
96 unsigned long size)
97{
98 return -ENODEV;
99}
100
101static __inline__ void mtrr_centaur_report_mcr(int mcr, u32 lo, u32 hi) {;}
102
103# endif
104
105#endif
106
107#endif
108