xref: /titanic_44/usr/src/uts/intel/sys/controlregs.h (revision cb9f16ebf42c357b4ef9424177e754e0ee869cdd)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5ee88d2b9Skchow  * Common Development and Distribution License (the "License").
6ee88d2b9Skchow  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
207c478bd9Sstevel@tonic-gate  */
217c478bd9Sstevel@tonic-gate /*
227aec1d6eScindi  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
237c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
247c478bd9Sstevel@tonic-gate  */
257c478bd9Sstevel@tonic-gate 
267c478bd9Sstevel@tonic-gate #ifndef	_SYS_CONTROLREGS_H
277c478bd9Sstevel@tonic-gate #define	_SYS_CONTROLREGS_H
287c478bd9Sstevel@tonic-gate 
297c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
307c478bd9Sstevel@tonic-gate 
317c478bd9Sstevel@tonic-gate #ifndef _ASM
327c478bd9Sstevel@tonic-gate #include <sys/types.h>
337c478bd9Sstevel@tonic-gate #endif
347c478bd9Sstevel@tonic-gate 
357c478bd9Sstevel@tonic-gate #ifdef __cplusplus
367c478bd9Sstevel@tonic-gate extern "C" {
377c478bd9Sstevel@tonic-gate #endif
387c478bd9Sstevel@tonic-gate 
397c478bd9Sstevel@tonic-gate /*
407c478bd9Sstevel@tonic-gate  * This file describes the x86 architecture control registers which
417c478bd9Sstevel@tonic-gate  * are part of the privileged architecture.
427c478bd9Sstevel@tonic-gate  *
437c478bd9Sstevel@tonic-gate  * Many of these definitions are shared between IA-32-style and
447c478bd9Sstevel@tonic-gate  * AMD64-style processors.
457c478bd9Sstevel@tonic-gate  */
467c478bd9Sstevel@tonic-gate 
477c478bd9Sstevel@tonic-gate /* CR0 Register */
487c478bd9Sstevel@tonic-gate 
497c478bd9Sstevel@tonic-gate #define	CR0_PG	0x80000000		/* paging enabled	*/
507c478bd9Sstevel@tonic-gate #define	CR0_CD	0x40000000		/* cache disable	*/
517c478bd9Sstevel@tonic-gate #define	CR0_NW	0x20000000		/* not writethrough	*/
527c478bd9Sstevel@tonic-gate #define	CR0_AM	0x00040000		/* alignment mask	*/
537c478bd9Sstevel@tonic-gate #define	CR0_WP	0x00010000		/* write protect	*/
547c478bd9Sstevel@tonic-gate #define	CR0_NE	0x00000020		/* numeric error	*/
557c478bd9Sstevel@tonic-gate #define	CR0_ET	0x00000010		/* extension type	*/
567c478bd9Sstevel@tonic-gate #define	CR0_TS	0x00000008		/* task switch		*/
577c478bd9Sstevel@tonic-gate #define	CR0_EM	0x00000004		/* emulation		*/
587c478bd9Sstevel@tonic-gate #define	CR0_MP	0x00000002		/* monitor coprocessor	*/
597c478bd9Sstevel@tonic-gate #define	CR0_PE	0x00000001		/* protection enabled	*/
607c478bd9Sstevel@tonic-gate 
617c478bd9Sstevel@tonic-gate /* XX64 eliminate these compatibility defines */
627c478bd9Sstevel@tonic-gate 
637c478bd9Sstevel@tonic-gate #define	CR0_CE	CR0_CD
647c478bd9Sstevel@tonic-gate #define	CR0_WT	CR0_NW
657c478bd9Sstevel@tonic-gate 
667c478bd9Sstevel@tonic-gate #define	FMT_CR0	\
677c478bd9Sstevel@tonic-gate 	"\20\40pg\37cd\36nw\35am\21wp\6ne\5et\4ts\3em\2mp\1pe"
687c478bd9Sstevel@tonic-gate 
697c478bd9Sstevel@tonic-gate /* CR3 Register */
707c478bd9Sstevel@tonic-gate 
717c478bd9Sstevel@tonic-gate #define	CR3_PCD	0x00000010		/* cache disable 		*/
727c478bd9Sstevel@tonic-gate #define	CR3_PWT 0x00000008		/* write through 		*/
737c478bd9Sstevel@tonic-gate 
747c478bd9Sstevel@tonic-gate #define	FMT_CR3	"\20\5pcd\4pwt"
757c478bd9Sstevel@tonic-gate 
767c478bd9Sstevel@tonic-gate /* CR4 Register */
777c478bd9Sstevel@tonic-gate 
787c478bd9Sstevel@tonic-gate #define	CR4_VME		0x0001		/* virtual-8086 mode extensions	*/
797c478bd9Sstevel@tonic-gate #define	CR4_PVI		0x0002		/* protected-mode virtual interrupts */
807c478bd9Sstevel@tonic-gate #define	CR4_TSD		0x0004		/* time stamp disable		*/
817c478bd9Sstevel@tonic-gate #define	CR4_DE		0x0008		/* debugging extensions		*/
827c478bd9Sstevel@tonic-gate #define	CR4_PSE		0x0010		/* page size extensions		*/
837c478bd9Sstevel@tonic-gate #define	CR4_PAE		0x0020		/* physical address extension	*/
847c478bd9Sstevel@tonic-gate #define	CR4_MCE		0x0040		/* machine check enable		*/
857c478bd9Sstevel@tonic-gate #define	CR4_PGE		0x0080		/* page global enable		*/
867c478bd9Sstevel@tonic-gate #define	CR4_PCE		0x0100		/* perf-monitoring counter enable */
877c478bd9Sstevel@tonic-gate #define	CR4_OSFXSR	0x0200		/* OS fxsave/fxrstor support	*/
887c478bd9Sstevel@tonic-gate #define	CR4_OSXMMEXCPT	0x0400		/* OS unmasked exception support */
897c478bd9Sstevel@tonic-gate 
907c478bd9Sstevel@tonic-gate #define	FMT_CR4	\
917c478bd9Sstevel@tonic-gate 	"\20\13xmme\12fxsr\11pce\10pge\7mce\6pae\5pse\4de\3tsd\2pvi\1vme"
927c478bd9Sstevel@tonic-gate 
937c478bd9Sstevel@tonic-gate /* Intel's SYSENTER configuration registers */
947c478bd9Sstevel@tonic-gate 
957c478bd9Sstevel@tonic-gate #define	MSR_INTC_SEP_CS	0x174		/* kernel code selector MSR */
967c478bd9Sstevel@tonic-gate #define	MSR_INTC_SEP_ESP 0x175		/* kernel esp MSR */
977c478bd9Sstevel@tonic-gate #define	MSR_INTC_SEP_EIP 0x176		/* kernel eip MSR */
987c478bd9Sstevel@tonic-gate 
997c478bd9Sstevel@tonic-gate /* AMD's EFER register */
1007c478bd9Sstevel@tonic-gate 
1017c478bd9Sstevel@tonic-gate #define	MSR_AMD_EFER	0xc0000080	/* extended feature enable MSR */
1027c478bd9Sstevel@tonic-gate 
1037c478bd9Sstevel@tonic-gate #define	AMD_EFER_NXE	0x800		/* no-execute enable		*/
1047c478bd9Sstevel@tonic-gate #define	AMD_EFER_LMA	0x400		/* long mode active (read-only)	*/
1057c478bd9Sstevel@tonic-gate #define	AMD_EFER_LME	0x100		/* long mode enable		*/
1067c478bd9Sstevel@tonic-gate #define	AMD_EFER_SCE	0x001		/* system call extensions	*/
1077c478bd9Sstevel@tonic-gate 
1087c478bd9Sstevel@tonic-gate #define	FMT_AMD_EFER \
1097c478bd9Sstevel@tonic-gate 	"\20\14nxe\13lma\11lme\1sce"
1107c478bd9Sstevel@tonic-gate 
1117c478bd9Sstevel@tonic-gate /* AMD's SYSCFG register */
1127c478bd9Sstevel@tonic-gate 
1137c478bd9Sstevel@tonic-gate #define	MSR_AMD_SYSCFG	0xc0000010	/* system configuration MSR */
1147c478bd9Sstevel@tonic-gate 
1157c478bd9Sstevel@tonic-gate #define	AMD_SYSCFG_TOM2	0x200000	/* MtrrTom2En */
1167c478bd9Sstevel@tonic-gate #define	AMD_SYSCFG_MVDM	0x100000	/* MtrrVarDramEn */
1177c478bd9Sstevel@tonic-gate #define	AMD_SYSCFG_MFDM	0x080000	/* MtrrFixDramModEn */
1187c478bd9Sstevel@tonic-gate #define	AMD_SYSCFG_MFDE	0x040000	/* MtrrFixDramEn */
1197c478bd9Sstevel@tonic-gate 
1207c478bd9Sstevel@tonic-gate #define	FMT_AMD_SYSCFG \
1217c478bd9Sstevel@tonic-gate 	"\20\26tom2\25mvdm\24mfdm\23mfde"
1227c478bd9Sstevel@tonic-gate 
1237c478bd9Sstevel@tonic-gate /* AMD's syscall/sysret MSRs */
1247c478bd9Sstevel@tonic-gate 
1257c478bd9Sstevel@tonic-gate #define	MSR_AMD_STAR	0xc0000081	/* %cs:%ss:%cs:%ss:%eip for syscall */
1267c478bd9Sstevel@tonic-gate #define	MSR_AMD_LSTAR	0xc0000082	/* target %rip of 64-bit syscall */
1277c478bd9Sstevel@tonic-gate #define	MSR_AMD_CSTAR	0xc0000083	/* target %rip of 32-bit syscall */
1287c478bd9Sstevel@tonic-gate #define	MSR_AMD_SFMASK	0xc0000084	/* syscall flag mask */
1297c478bd9Sstevel@tonic-gate 
1307c478bd9Sstevel@tonic-gate /* AMD's FS.base and GS.base MSRs */
1317c478bd9Sstevel@tonic-gate 
1327c478bd9Sstevel@tonic-gate #define	MSR_AMD_FSBASE	0xc0000100	/* 64-bit base address for %fs */
1337c478bd9Sstevel@tonic-gate #define	MSR_AMD_GSBASE	0xc0000101	/* 64-bit base address for %gs */
1347c478bd9Sstevel@tonic-gate #define	MSR_AMD_KGSBASE	0xc0000102	/* swapgs swaps this with gsbase */
1357c478bd9Sstevel@tonic-gate 
1367c478bd9Sstevel@tonic-gate /* AMD's configuration MSRs, weakly documented in the revision guide */
1377c478bd9Sstevel@tonic-gate 
1387c478bd9Sstevel@tonic-gate #define	MSR_AMD_DC_CFG	0xc0011022
1397c478bd9Sstevel@tonic-gate 
1407c478bd9Sstevel@tonic-gate #define	AMD_DC_CFG_DIS_CNV_WC_SSO	(UINT64_C(1) << 3)
1417c478bd9Sstevel@tonic-gate #define	AMD_DC_CFG_DIS_SMC_CHK_BUF	(UINT64_C(1) << 10)
1427c478bd9Sstevel@tonic-gate 
1437c478bd9Sstevel@tonic-gate /* AMD's HWCR MSR */
1442201b277Skucharsk 
1457c478bd9Sstevel@tonic-gate #define	MSR_AMD_HWCR	0xc0010015
1467c478bd9Sstevel@tonic-gate 
1477aec1d6eScindi #define	AMD_HWCR_FFDIS			0x00040	/* disable TLB Flush Filter */
1487aec1d6eScindi #define	AMD_HWCR_MCI_STATUS_WREN	0x40000	/* enable write of MCi_STATUS */
1497c478bd9Sstevel@tonic-gate 
1502201b277Skucharsk /* AMD's NorthBridge Config MSR, SHOULD ONLY BE WRITTEN TO BY BIOS */
1512201b277Skucharsk 
1522201b277Skucharsk #define	MSR_AMD_NB_CFG	0xc001001f
1532201b277Skucharsk 
154ee88d2b9Skchow #define	MSR_BU_CFG	0xc0011023
155ee88d2b9Skchow 
1562201b277Skucharsk #define	AMD_NB_CFG_SRQ_HEARTBEAT	(UINT64_C(1) << 20)
157*cb9f16ebSkchow #define	AMD_NB_CFG_SRQ_SPR		(UINT64_C(1) << 32)
1582201b277Skucharsk 
1597c478bd9Sstevel@tonic-gate /* AMD */
1607c478bd9Sstevel@tonic-gate #define	MSR_AMD_PATCHLEVEL	0x8b
1617c478bd9Sstevel@tonic-gate 
1627c478bd9Sstevel@tonic-gate #ifdef __cplusplus
1637c478bd9Sstevel@tonic-gate }
1647c478bd9Sstevel@tonic-gate #endif
1657c478bd9Sstevel@tonic-gate 
1667c478bd9Sstevel@tonic-gate #endif	/* !_SYS_CONTROLREGS_H */
167