x86: merge mttr_32/64.h

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

+163 -281
-2
include/asm-x86/Kbuild
··· 17 17 unifdef-y += msr_32.h 18 18 unifdef-y += msr_64.h 19 19 unifdef-y += msr.h 20 - unifdef-y += mtrr_32.h 21 - unifdef-y += mtrr_64.h 22 20 unifdef-y += mtrr.h 23 21 unifdef-y += page_32.h 24 22 unifdef-y += page_64.h
+163 -12
include/asm-x86/mtrr.h
··· 1 + /* Generic MTRR (Memory Type Range Register) ioctls. 2 + 3 + Copyright (C) 1997-1999 Richard Gooch 4 + 5 + This library is free software; you can redistribute it and/or 6 + modify it under the terms of the GNU Library General Public 7 + License as published by the Free Software Foundation; either 8 + version 2 of the License, or (at your option) any later version. 9 + 10 + This library is distributed in the hope that it will be useful, 11 + but WITHOUT ANY WARRANTY; without even the implied warranty of 12 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 + Library General Public License for more details. 14 + 15 + You should have received a copy of the GNU Library General Public 16 + License along with this library; if not, write to the Free 17 + Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 + 19 + Richard Gooch may be reached by email at rgooch@atnf.csiro.au 20 + The postal address is: 21 + Richard Gooch, c/o ATNF, P. O. Box 76, Epping, N.S.W., 2121, Australia. 22 + */ 23 + #ifndef _ASM_X86_MTRR_H 24 + #define _ASM_X86_MTRR_H 25 + 26 + #include <linux/ioctl.h> 27 + #include <linux/errno.h> 28 + 29 + #define MTRR_IOCTL_BASE 'M' 30 + 31 + struct mtrr_sentry 32 + { 33 + unsigned long base; /* Base address */ 34 + unsigned int size; /* Size of region */ 35 + unsigned int type; /* Type of region */ 36 + }; 37 + 38 + /* Warning: this structure has a different order from i386 39 + on x86-64. The 32bit emulation code takes care of that. 40 + But you need to use this for 64bit, otherwise your X server 41 + will break. */ 42 + 43 + #ifdef __i386__ 44 + struct mtrr_gentry 45 + { 46 + unsigned int regnum; /* Register number */ 47 + unsigned long base; /* Base address */ 48 + unsigned int size; /* Size of region */ 49 + unsigned int type; /* Type of region */ 50 + }; 51 + 52 + #else /* __i386__ */ 53 + 54 + struct mtrr_gentry 55 + { 56 + unsigned long base; /* Base address */ 57 + unsigned int size; /* Size of region */ 58 + unsigned int regnum; /* Register number */ 59 + unsigned int type; /* Type of region */ 60 + }; 61 + #endif /* !__i386__ */ 62 + 63 + /* These are the various ioctls */ 64 + #define MTRRIOC_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry) 65 + #define MTRRIOC_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry) 66 + #define MTRRIOC_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry) 67 + #define MTRRIOC_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry) 68 + #define MTRRIOC_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry) 69 + #define MTRRIOC_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry) 70 + #define MTRRIOC_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry) 71 + #define MTRRIOC_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry) 72 + #define MTRRIOC_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry) 73 + #define MTRRIOC_KILL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry) 74 + 75 + /* These are the region types */ 76 + #define MTRR_TYPE_UNCACHABLE 0 77 + #define MTRR_TYPE_WRCOMB 1 78 + /*#define MTRR_TYPE_ 2*/ 79 + /*#define MTRR_TYPE_ 3*/ 80 + #define MTRR_TYPE_WRTHROUGH 4 81 + #define MTRR_TYPE_WRPROT 5 82 + #define MTRR_TYPE_WRBACK 6 83 + #define MTRR_NUM_TYPES 7 84 + 1 85 #ifdef __KERNEL__ 2 - # ifdef CONFIG_X86_32 3 - # include "mtrr_32.h" 4 - # else 5 - # include "mtrr_64.h" 6 - # endif 7 - #else 8 - # ifdef __i386__ 9 - # include "mtrr_32.h" 10 - # else 11 - # include "mtrr_64.h" 12 - # endif 13 - #endif 86 + 87 + /* The following functions are for use by other drivers */ 88 + # ifdef CONFIG_MTRR 89 + extern void mtrr_save_fixed_ranges(void *); 90 + extern void mtrr_save_state(void); 91 + extern int mtrr_add (unsigned long base, unsigned long size, 92 + unsigned int type, char increment); 93 + extern int mtrr_add_page (unsigned long base, unsigned long size, 94 + unsigned int type, char increment); 95 + extern int mtrr_del (int reg, unsigned long base, unsigned long size); 96 + extern int mtrr_del_page (int reg, unsigned long base, unsigned long size); 97 + extern void mtrr_centaur_report_mcr(int mcr, u32 lo, u32 hi); 98 + extern void mtrr_ap_init(void); 99 + extern void mtrr_bp_init(void); 100 + # else 101 + #define mtrr_save_fixed_ranges(arg) do {} while (0) 102 + #define mtrr_save_state() do {} while (0) 103 + static __inline__ int mtrr_add (unsigned long base, unsigned long size, 104 + unsigned int type, char increment) 105 + { 106 + return -ENODEV; 107 + } 108 + static __inline__ int mtrr_add_page (unsigned long base, unsigned long size, 109 + unsigned int type, char increment) 110 + { 111 + return -ENODEV; 112 + } 113 + static __inline__ int mtrr_del (int reg, unsigned long base, 114 + unsigned long size) 115 + { 116 + return -ENODEV; 117 + } 118 + static __inline__ int mtrr_del_page (int reg, unsigned long base, 119 + unsigned long size) 120 + { 121 + return -ENODEV; 122 + } 123 + 124 + static __inline__ void mtrr_centaur_report_mcr(int mcr, u32 lo, u32 hi) {;} 125 + 126 + #define mtrr_ap_init() do {} while (0) 127 + #define mtrr_bp_init() do {} while (0) 128 + # endif 129 + 130 + #ifdef CONFIG_COMPAT 131 + #include <linux/compat.h> 132 + 133 + struct mtrr_sentry32 134 + { 135 + compat_ulong_t base; /* Base address */ 136 + compat_uint_t size; /* Size of region */ 137 + compat_uint_t type; /* Type of region */ 138 + }; 139 + 140 + struct mtrr_gentry32 141 + { 142 + compat_ulong_t regnum; /* Register number */ 143 + compat_uint_t base; /* Base address */ 144 + compat_uint_t size; /* Size of region */ 145 + compat_uint_t type; /* Type of region */ 146 + }; 147 + 148 + #define MTRR_IOCTL_BASE 'M' 149 + 150 + #define MTRRIOC32_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry32) 151 + #define MTRRIOC32_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry32) 152 + #define MTRRIOC32_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry32) 153 + #define MTRRIOC32_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry32) 154 + #define MTRRIOC32_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry32) 155 + #define MTRRIOC32_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry32) 156 + #define MTRRIOC32_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry32) 157 + #define MTRRIOC32_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry32) 158 + #define MTRRIOC32_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry32) 159 + #define MTRRIOC32_KILL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry32) 160 + #endif /* CONFIG_COMPAT */ 161 + 162 + #endif /* __KERNEL__ */ 163 + 164 + #endif /* _ASM_X86_MTRR_H */
-115
include/asm-x86/mtrr_32.h
··· 1 - /* Generic MTRR (Memory Type Range Register) ioctls. 2 - 3 - Copyright (C) 1997-1999 Richard Gooch 4 - 5 - This library is free software; you can redistribute it and/or 6 - modify it under the terms of the GNU Library General Public 7 - License as published by the Free Software Foundation; either 8 - version 2 of the License, or (at your option) any later version. 9 - 10 - This library is distributed in the hope that it will be useful, 11 - but WITHOUT ANY WARRANTY; without even the implied warranty of 12 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 - Library General Public License for more details. 14 - 15 - You should have received a copy of the GNU Library General Public 16 - License along with this library; if not, write to the Free 17 - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 - 19 - Richard Gooch may be reached by email at rgooch@atnf.csiro.au 20 - The postal address is: 21 - Richard Gooch, c/o ATNF, P. O. Box 76, Epping, N.S.W., 2121, Australia. 22 - */ 23 - #ifndef _LINUX_MTRR_H 24 - #define _LINUX_MTRR_H 25 - 26 - #include <linux/ioctl.h> 27 - #include <linux/errno.h> 28 - 29 - #define MTRR_IOCTL_BASE 'M' 30 - 31 - struct mtrr_sentry 32 - { 33 - unsigned long base; /* Base address */ 34 - unsigned int size; /* Size of region */ 35 - unsigned int type; /* Type of region */ 36 - }; 37 - 38 - struct mtrr_gentry 39 - { 40 - unsigned int regnum; /* Register number */ 41 - unsigned long base; /* Base address */ 42 - unsigned int size; /* Size of region */ 43 - unsigned int type; /* Type of region */ 44 - }; 45 - 46 - /* These are the various ioctls */ 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 - /* These are the region types */ 59 - #define MTRR_TYPE_UNCACHABLE 0 60 - #define MTRR_TYPE_WRCOMB 1 61 - /*#define MTRR_TYPE_ 2*/ 62 - /*#define MTRR_TYPE_ 3*/ 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 - /* The following functions are for use by other drivers */ 71 - # ifdef CONFIG_MTRR 72 - extern void mtrr_save_fixed_ranges(void *); 73 - extern void mtrr_save_state(void); 74 - extern int mtrr_add (unsigned long base, unsigned long size, 75 - unsigned int type, char increment); 76 - extern int mtrr_add_page (unsigned long base, unsigned long size, 77 - unsigned int type, char increment); 78 - extern int mtrr_del (int reg, unsigned long base, unsigned long size); 79 - extern int mtrr_del_page (int reg, unsigned long base, unsigned long size); 80 - extern void mtrr_centaur_report_mcr(int mcr, u32 lo, u32 hi); 81 - extern void mtrr_ap_init(void); 82 - extern void mtrr_bp_init(void); 83 - # else 84 - #define mtrr_save_fixed_ranges(arg) do {} while (0) 85 - #define mtrr_save_state() do {} while (0) 86 - static __inline__ int mtrr_add (unsigned long base, unsigned long size, 87 - unsigned int type, char increment) 88 - { 89 - return -ENODEV; 90 - } 91 - static __inline__ int mtrr_add_page (unsigned long base, unsigned long size, 92 - unsigned int type, char increment) 93 - { 94 - return -ENODEV; 95 - } 96 - static __inline__ int mtrr_del (int reg, unsigned long base, 97 - unsigned long size) 98 - { 99 - return -ENODEV; 100 - } 101 - static __inline__ int mtrr_del_page (int reg, unsigned long base, 102 - unsigned long size) 103 - { 104 - return -ENODEV; 105 - } 106 - 107 - static __inline__ void mtrr_centaur_report_mcr(int mcr, u32 lo, u32 hi) {;} 108 - 109 - #define mtrr_ap_init() do {} while (0) 110 - #define mtrr_bp_init() do {} while (0) 111 - # endif 112 - 113 - #endif 114 - 115 - #endif /* _LINUX_MTRR_H */
-152
include/asm-x86/mtrr_64.h
··· 1 - /* Generic MTRR (Memory Type Range Register) ioctls. 2 - 3 - Copyright (C) 1997-1999 Richard Gooch 4 - 5 - This library is free software; you can redistribute it and/or 6 - modify it under the terms of the GNU Library General Public 7 - License as published by the Free Software Foundation; either 8 - version 2 of the License, or (at your option) any later version. 9 - 10 - This library is distributed in the hope that it will be useful, 11 - but WITHOUT ANY WARRANTY; without even the implied warranty of 12 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 - Library General Public License for more details. 14 - 15 - You should have received a copy of the GNU Library General Public 16 - License along with this library; if not, write to the Free 17 - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 - 19 - Richard Gooch may be reached by email at rgooch@atnf.csiro.au 20 - The postal address is: 21 - Richard Gooch, c/o ATNF, P. O. Box 76, Epping, N.S.W., 2121, Australia. 22 - */ 23 - #ifndef _LINUX_MTRR_H 24 - #define _LINUX_MTRR_H 25 - 26 - #include <linux/ioctl.h> 27 - 28 - #define MTRR_IOCTL_BASE 'M' 29 - 30 - struct mtrr_sentry 31 - { 32 - unsigned long base; /* Base address */ 33 - unsigned int size; /* Size of region */ 34 - unsigned int type; /* Type of region */ 35 - }; 36 - 37 - /* Warning: this structure has a different order from i386 38 - on x86-64. The 32bit emulation code takes care of that. 39 - But you need to use this for 64bit, otherwise your X server 40 - will break. */ 41 - struct mtrr_gentry 42 - { 43 - unsigned long base; /* Base address */ 44 - unsigned int size; /* Size of region */ 45 - unsigned int regnum; /* Register number */ 46 - unsigned int type; /* Type of region */ 47 - }; 48 - 49 - /* These are the various ioctls */ 50 - #define MTRRIOC_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry) 51 - #define MTRRIOC_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry) 52 - #define MTRRIOC_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry) 53 - #define MTRRIOC_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry) 54 - #define MTRRIOC_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry) 55 - #define MTRRIOC_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry) 56 - #define MTRRIOC_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry) 57 - #define MTRRIOC_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry) 58 - #define MTRRIOC_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry) 59 - #define MTRRIOC_KILL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry) 60 - 61 - /* These are the region types */ 62 - #define MTRR_TYPE_UNCACHABLE 0 63 - #define MTRR_TYPE_WRCOMB 1 64 - /*#define MTRR_TYPE_ 2*/ 65 - /*#define MTRR_TYPE_ 3*/ 66 - #define MTRR_TYPE_WRTHROUGH 4 67 - #define MTRR_TYPE_WRPROT 5 68 - #define MTRR_TYPE_WRBACK 6 69 - #define MTRR_NUM_TYPES 7 70 - 71 - #ifdef __KERNEL__ 72 - 73 - /* The following functions are for use by other drivers */ 74 - # ifdef CONFIG_MTRR 75 - extern int mtrr_add (unsigned long base, unsigned long size, 76 - unsigned int type, char increment); 77 - extern int mtrr_add_page (unsigned long base, unsigned long size, 78 - unsigned int type, char increment); 79 - extern int mtrr_del (int reg, unsigned long base, unsigned long size); 80 - extern int mtrr_del_page (int reg, unsigned long base, unsigned long size); 81 - # else 82 - static __inline__ int mtrr_add (unsigned long base, unsigned long size, 83 - unsigned int type, char increment) 84 - { 85 - return -ENODEV; 86 - } 87 - static __inline__ int mtrr_add_page (unsigned long base, unsigned long size, 88 - unsigned int type, char increment) 89 - { 90 - return -ENODEV; 91 - } 92 - static __inline__ int mtrr_del (int reg, unsigned long base, 93 - unsigned long size) 94 - { 95 - return -ENODEV; 96 - } 97 - static __inline__ int mtrr_del_page (int reg, unsigned long base, 98 - unsigned long size) 99 - { 100 - return -ENODEV; 101 - } 102 - 103 - #endif /* CONFIG_MTRR */ 104 - 105 - #ifdef CONFIG_COMPAT 106 - #include <linux/compat.h> 107 - 108 - struct mtrr_sentry32 109 - { 110 - compat_ulong_t base; /* Base address */ 111 - compat_uint_t size; /* Size of region */ 112 - compat_uint_t type; /* Type of region */ 113 - }; 114 - 115 - struct mtrr_gentry32 116 - { 117 - compat_ulong_t regnum; /* Register number */ 118 - compat_uint_t base; /* Base address */ 119 - compat_uint_t size; /* Size of region */ 120 - compat_uint_t type; /* Type of region */ 121 - }; 122 - 123 - #define MTRR_IOCTL_BASE 'M' 124 - 125 - #define MTRRIOC32_ADD_ENTRY _IOW(MTRR_IOCTL_BASE, 0, struct mtrr_sentry32) 126 - #define MTRRIOC32_SET_ENTRY _IOW(MTRR_IOCTL_BASE, 1, struct mtrr_sentry32) 127 - #define MTRRIOC32_DEL_ENTRY _IOW(MTRR_IOCTL_BASE, 2, struct mtrr_sentry32) 128 - #define MTRRIOC32_GET_ENTRY _IOWR(MTRR_IOCTL_BASE, 3, struct mtrr_gentry32) 129 - #define MTRRIOC32_KILL_ENTRY _IOW(MTRR_IOCTL_BASE, 4, struct mtrr_sentry32) 130 - #define MTRRIOC32_ADD_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 5, struct mtrr_sentry32) 131 - #define MTRRIOC32_SET_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 6, struct mtrr_sentry32) 132 - #define MTRRIOC32_DEL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 7, struct mtrr_sentry32) 133 - #define MTRRIOC32_GET_PAGE_ENTRY _IOWR(MTRR_IOCTL_BASE, 8, struct mtrr_gentry32) 134 - #define MTRRIOC32_KILL_PAGE_ENTRY _IOW(MTRR_IOCTL_BASE, 9, struct mtrr_sentry32) 135 - 136 - #endif /* CONFIG_COMPAT */ 137 - 138 - #ifdef CONFIG_MTRR 139 - extern void mtrr_ap_init(void); 140 - extern void mtrr_bp_init(void); 141 - extern void mtrr_save_fixed_ranges(void *); 142 - extern void mtrr_save_state(void); 143 - #else 144 - #define mtrr_ap_init() do {} while (0) 145 - #define mtrr_bp_init() do {} while (0) 146 - #define mtrr_save_fixed_ranges(arg) do {} while (0) 147 - #define mtrr_save_state() do {} while (0) 148 - #endif 149 - 150 - #endif /* __KERNEL__ */ 151 - 152 - #endif /* _LINUX_MTRR_H */