usr/src/uts/intel/sys/x86_archext.h
author kucharsk
Thu, 27 Oct 2005 14:59:45 -0700
changeset 770 0eda482eb80f
parent 0 68f95e015346
child 771 1c25a2120ec0
permissions -rw-r--r--
6311933 rdmsr/wrmsr do not need to set/pass values via memory pointers
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     5
 * Common Development and Distribution License, Version 1.0 only
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     6
 * (the "License").  You may not use this file except in compliance
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 * with the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
 * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
#ifndef _SYS_X86_ARCHEXT_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
#define	_SYS_X86_ARCHEXT_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
#pragma ident	"%Z%%M%	%I%	%E% SMI"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
#if !defined(_ASM)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
#include <sys/regset.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
#include <sys/processor.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
#include <vm/seg_enum.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
#include <vm/page.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
#endif	/* _ASM */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
 * cpuid instruction feature flags in %edx (standard function 1)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
#define	CPUID_INTC_EDX_FPU	0x00000001	/* x87 fpu present */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
#define	CPUID_INTC_EDX_VME	0x00000002	/* virtual-8086 extension */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
#define	CPUID_INTC_EDX_DE	0x00000004	/* debugging extensions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
#define	CPUID_INTC_EDX_PSE	0x00000008	/* page size extension */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
#define	CPUID_INTC_EDX_TSC	0x00000010	/* time stamp counter */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
#define	CPUID_INTC_EDX_MSR	0x00000020	/* rdmsr and wrmsr */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
#define	CPUID_INTC_EDX_PAE	0x00000040	/* physical addr extension */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
#define	CPUID_INTC_EDX_MCE	0x00000080	/* machine check exception */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
#define	CPUID_INTC_EDX_CX8	0x00000100	/* cmpxchg8b instruction */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
#define	CPUID_INTC_EDX_APIC	0x00000200	/* local APIC */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
						/* 0x400 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
#define	CPUID_INTC_EDX_SEP	0x00000800	/* sysenter and sysexit */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
#define	CPUID_INTC_EDX_MTRR	0x00001000	/* memory type range reg */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
#define	CPUID_INTC_EDX_PGE	0x00002000	/* page global enable */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
#define	CPUID_INTC_EDX_MCA	0x00004000	/* machine check arch */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
#define	CPUID_INTC_EDX_CMOV	0x00008000	/* conditional move insns */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
#define	CPUID_INTC_EDX_PAT	0x00010000	/* page attribute table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
#define	CPUID_INTC_EDX_PSE36	0x00020000	/* 36-bit pagesize extension */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
#define	CPUID_INTC_EDX_PSN	0x00040000	/* processor serial number */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
#define	CPUID_INTC_EDX_CLFSH	0x00080000	/* clflush instruction */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
						/* 0x100000 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
#define	CPUID_INTC_EDX_DS	0x00200000	/* debug store exists */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
#define	CPUID_INTC_EDX_ACPI	0x00400000	/* monitoring + clock ctrl */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
#define	CPUID_INTC_EDX_MMX	0x00800000	/* MMX instructions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
#define	CPUID_INTC_EDX_FXSR	0x01000000	/* fxsave and fxrstor */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
#define	CPUID_INTC_EDX_SSE	0x02000000	/* streaming SIMD extensions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
#define	CPUID_INTC_EDX_SSE2	0x04000000	/* SSE extensions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
#define	CPUID_INTC_EDX_SS	0x08000000	/* self-snoop */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
#define	CPUID_INTC_EDX_HTT	0x10000000	/* Hyper Thread Technology */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
#define	CPUID_INTC_EDX_TM	0x20000000	/* thermal monitoring */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
						/* 0x40000000 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
#define	CPUID_INTC_EDX_PBE	0x80000000	/* Pending Break Enable */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
#define	FMT_CPUID_INTC_EDX				\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
	"\20"						\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
	"\40pbe\36tm\35htt\34ss\33sse2\32sse\31fxsr"	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
	"\30mmx\27acpi\26ds\24clfsh\23psn\22pse36\21pat"\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
	"\20cmov\17mca\16pge\15mtrr\14sep\12apic\11cx8"	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
	"\10mce\7pae\6msr\5tsc\4pse\3de\2vme\1fpu"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
 * cpuid instruction feature flags in %ecx (standard function 1)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
#define	CPUID_INTC_ECX_SSE3	0x00000001	/* Yet more SSE extensions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
						/* 0x00000002 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
						/* 0x00000004 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
#define	CPUID_INTC_ECX_MON	0x00000008	/* MONITOR/MWAIT */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
#define	CPUID_INTC_ECX_DSCPL	0x00000010	/* CPL-qualified debug store */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
						/* 0x00000020 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
						/* 0x00000040 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
#define	CPUID_INTC_ECX_EST	0x00000080	/* enhanced SpeedStep */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
#define	CPUID_INTC_ECX_TM2	0x00000100	/* thermal monitoring */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
						/* 0x00000200 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
#define	CPUID_INTC_ECX_CID	0x00000400	/* L1 context ID */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
						/* 0x00000800 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
						/* 0x00001000 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
						/* 0x00002000 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
#define	CPUID_INTC_ECX_XTPR	0x00004000	/* disable task pri messages */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
#define	FMT_CPUID_INTC_ECX			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
	"\20"					\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
	"\20\17xtpr\13cid\11tm2"		\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
	"\10est\5dscpl\4monitor\1sse3"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
 * cpuid instruction feature flags in %edx (extended function 0x80000001)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
#define	CPUID_AMD_EDX_FPU	0x00000001	/* x87 fpu present */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
#define	CPUID_AMD_EDX_VME	0x00000002	/* virtual-8086 extension */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
#define	CPUID_AMD_EDX_DE	0x00000004	/* debugging extensions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
#define	CPUID_AMD_EDX_PSE	0x00000008	/* page size extensions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
#define	CPUID_AMD_EDX_TSC	0x00000010	/* time stamp counter */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
#define	CPUID_AMD_EDX_MSR	0x00000020	/* rdmsr and wrmsr */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
#define	CPUID_AMD_EDX_PAE	0x00000040	/* physical addr extension */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
#define	CPUID_AMD_EDX_MCE	0x00000080	/* machine check exception */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
#define	CPUID_AMD_EDX_CX8	0x00000100	/* cmpxchg8b instruction */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
#define	CPUID_AMD_EDX_APIC	0x00000200	/* local APIC */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
						/* 0x00000400 - sysc on K6m6 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
#define	CPUID_AMD_EDX_SYSC	0x00000800	/* AMD: syscall and sysret */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
#define	CPUID_AMD_EDX_MTRR	0x00001000	/* memory type and range reg */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
#define	CPUID_AMD_EDX_PGE	0x00002000	/* page global enable */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
#define	CPUID_AMD_EDX_MCA	0x00004000	/* machine check arch */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
#define	CPUID_AMD_EDX_CMOV	0x00008000	/* conditional move insns */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
#define	CPUID_AMD_EDX_PAT	0x00010000	/* page attribute table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
#define	CPUID_AMD_EDX_PSE36	0x00020000	/* 36-bit pagesize extension */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
				/* 0x00040000 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
				/* 0x00080000 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
#define	CPUID_AMD_EDX_NX	0x00100000	/* AMD: no-execute page prot */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
				/* 0x00200000 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
#define	CPUID_AMD_EDX_MMXamd	0x00400000	/* AMD: MMX extensions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
#define	CPUID_AMD_EDX_MMX	0x00800000	/* MMX instructions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
#define	CPUID_AMD_EDX_FXSR	0x01000000	/* fxsave and fxrstor */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
				/* 0x02000000 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
				/* 0x04000000 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
				/* 0x08000000 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
				/* 0x10000000 - reserved */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
#define	CPUID_AMD_EDX_LM	0x20000000	/* AMD: long mode */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
#define	CPUID_AMD_EDX_3DNowx	0x40000000	/* AMD: extensions to 3DNow! */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
#define	CPUID_AMD_EDX_3DNow	0x80000000	/* AMD: 3DNow! instructions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
#define	FMT_CPUID_AMD_EDX					\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
	"\20"							\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
	"\40a3d\37a3d+\36lm\31fxsr"				\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
	"\30mmx\27mmxext\25nx\22pse\21pat"			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
	"\20cmov\17mca\16pge\15mtrr\14syscall\12apic\11cx8"	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
	"\10mce\7pae\6msr\5tsc\4pse\3de\2vme\1fpu"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
#define	CPUID_AMD_ECX_HTvalid	0x00000001	/* AMD: HTT bit valid */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
#define	FMT_CPUID_AMD_ECX					\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
	"\20"							\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
	"\1htvalid"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
#define	P5_MCHADDR	0x0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
#define	P5_CESR		0x11
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
#define	P5_CTR0		0x12
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
#define	P5_CTR1		0x13
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
#define	K5_MCHADDR	0x0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
#define	K5_MCHTYPE	0x01
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
#define	K5_TSC		0x10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
#define	K5_TR12		0x12
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
#define	REG_MTRRCAP		0xfe
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
#define	REG_MTRRDEF		0x2ff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
#define	REG_MTRR64K		0x250
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
#define	REG_MTRR16K1		0x258
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
#define	REG_MTRR16K2		0x259
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
#define	REG_MTRR4K1		0x268
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
#define	REG_MTRR4K2		0x269
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
#define	REG_MTRR4K3		0x26a
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
#define	REG_MTRR4K4		0x26b
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
#define	REG_MTRR4K5		0x26c
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
#define	REG_MTRR4K6		0x26d
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
#define	REG_MTRR4K7		0x26e
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
#define	REG_MTRR4K8		0x26f
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
#define	REG_MTRRPAT		0x277
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
#define	REG_MTRRPHYSBASE0	0x200
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
#define	REG_MTRRPHYSMASK7	0x20f
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
#define	REG_MC0_CTL		0x400
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
#define	REG_MC5_MISC		0x417
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
#define	REG_PERFCTR0		0xc1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
#define	REG_PERFCTR1		0xc2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
#define	REG_PERFEVNT0		0x186
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
#define	REG_PERFEVNT1		0x187
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
#define	REG_TSC			0x10	/* timestamp counter */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
#define	REG_APIC_BASE_MSR	0x1b
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
#define	MSR_DEBUGCTL		0x1d9
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
#define	DEBUGCTL_LBR		0x01
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
#define	DEBUGCTL_BTF		0x02
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
/* Intel P6, AMD */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
#define	MSR_LBR_FROM		0x1db
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
#define	MSR_LBR_TO		0x1dc
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
#define	MSR_LEX_FROM		0x1dd
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
#define	MSR_LEX_TO		0x1de
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
/* Intel P4 (pre-Prescott, non P4 M) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
#define	MSR_P4_LBSTK_TOS	0x1da
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
#define	MSR_P4_LBSTK_0		0x1db
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
#define	MSR_P4_LBSTK_1		0x1dc
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
#define	MSR_P4_LBSTK_2		0x1dd
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
#define	MSR_P4_LBSTK_3		0x1de
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
/* Intel Pentium M */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
#define	MSR_P6M_LBSTK_TOS	0x1c9
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
#define	MSR_P6M_LBSTK_0		0x040
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
#define	MSR_P6M_LBSTK_1		0x041
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
#define	MSR_P6M_LBSTK_2		0x042
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
#define	MSR_P6M_LBSTK_3		0x043
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
#define	MSR_P6M_LBSTK_4		0x044
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
#define	MSR_P6M_LBSTK_5		0x045
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
#define	MSR_P6M_LBSTK_6		0x046
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
#define	MSR_P6M_LBSTK_7		0x047
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
/* Intel P4 (Prescott) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
#define	MSR_PRP4_LBSTK_TOS	0x1da
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
#define	MSR_PRP4_LBSTK_FROM_0	0x680
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
#define	MSR_PRP4_LBSTK_FROM_1	0x681
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   233
#define	MSR_PRP4_LBSTK_FROM_2	0x682
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   234
#define	MSR_PRP4_LBSTK_FROM_3	0x683
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   235
#define	MSR_PRP4_LBSTK_FROM_4	0x684
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   236
#define	MSR_PRP4_LBSTK_FROM_5	0x685
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   237
#define	MSR_PRP4_LBSTK_FROM_6	0x686
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   238
#define	MSR_PRP4_LBSTK_FROM_7	0x687
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   239
#define	MSR_PRP4_LBSTK_FROM_8 	0x688
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   240
#define	MSR_PRP4_LBSTK_FROM_9	0x689
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   241
#define	MSR_PRP4_LBSTK_FROM_10	0x68a
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   242
#define	MSR_PRP4_LBSTK_FROM_11 	0x68b
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   243
#define	MSR_PRP4_LBSTK_FROM_12	0x68c
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   244
#define	MSR_PRP4_LBSTK_FROM_13	0x68d
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   245
#define	MSR_PRP4_LBSTK_FROM_14	0x68e
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   246
#define	MSR_PRP4_LBSTK_FROM_15	0x68f
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   247
#define	MSR_PRP4_LBSTK_TO_0	0x6c0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   248
#define	MSR_PRP4_LBSTK_TO_1	0x6c1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   249
#define	MSR_PRP4_LBSTK_TO_2	0x6c2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   250
#define	MSR_PRP4_LBSTK_TO_3	0x6c3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   251
#define	MSR_PRP4_LBSTK_TO_4	0x6c4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   252
#define	MSR_PRP4_LBSTK_TO_5	0x6c5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   253
#define	MSR_PRP4_LBSTK_TO_6	0x6c6
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   254
#define	MSR_PRP4_LBSTK_TO_7	0x6c7
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   255
#define	MSR_PRP4_LBSTK_TO_8	0x6c8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   256
#define	MSR_PRP4_LBSTK_TO_9 	0x6c9
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   257
#define	MSR_PRP4_LBSTK_TO_10	0x6ca
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   258
#define	MSR_PRP4_LBSTK_TO_11	0x6cb
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   259
#define	MSR_PRP4_LBSTK_TO_12	0x6cc
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   260
#define	MSR_PRP4_LBSTK_TO_13	0x6cd
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   261
#define	MSR_PRP4_LBSTK_TO_14	0x6ce
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   262
#define	MSR_PRP4_LBSTK_TO_15	0x6cf
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   263
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   264
#define	REG_MCG_CAP		0x179
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   265
#define	REG_MCG_STATUS		0x17a
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   266
#define	REG_MCG_CTL		0x17b
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   267
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   268
#define	REG_MC0_CTL		0x400
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   269
#define	REG_MC0_STATUS		0x401
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   270
#define	REG_MC0_ADDR		0x402
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   271
#define	REG_MC0_MISC		0x403
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   272
#define	REG_MC1_CTL		0x404
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   273
#define	REG_MC1_STATUS		0x405
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   274
#define	REG_MC1_ADDR		0x406
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   275
#define	REG_MC1_MISC		0x407
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   276
#define	REG_MC2_CTL		0x408
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   277
#define	REG_MC2_STATUS		0x409
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   278
#define	REG_MC2_ADDR		0x40a
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   279
#define	REG_MC2_MISC		0x40b
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   280
#define	REG_MC4_CTL		0x40c
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   281
#define	REG_MC4_STATUS		0x40d
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   282
#define	REG_MC4_ADDR		0x40e
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   283
#define	REG_MC4_MISC		0x40f
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   284
#define	REG_MC3_CTL		0x410
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   285
#define	REG_MC3_STATUS		0x411
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   286
#define	REG_MC3_ADDR		0x412
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   287
#define	REG_MC3_MISC		0x413
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   288
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   289
#define	P6_MCG_CAP_COUNT	5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   290
#define	MCG_CAP_COUNT_MASK	0xff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   291
#define	MCG_CAP_CTL_P		0x100
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   292
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   293
#define	MCG_STATUS_RIPV		0x01
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   294
#define	MCG_STATUS_EIPV		0x02
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   295
#define	MCG_STATUS_MCIP		0x04
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   296
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   297
#define	MCG_CTL_VALUE		0xffffffff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   298
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   299
#define	MCI_CTL_VALUE		0xffffffff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   300
#define	MCI_STATUS_ERRCODE	0xffff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   301
#define	MCI_STATUS_MSERRCODE	0xffff0000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   302
#define	MCI_STATUS_PCC		((long long)0x200000000000000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   303
#define	MCI_STATUS_ADDRV	((long long)0x400000000000000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   304
#define	MCI_STATUS_MISCV	((long long)0x800000000000000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   305
#define	MCI_STATUS_EN		((long long)0x1000000000000000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   306
#define	MCI_STATUS_UC		((long long)0x2000000000000000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   307
#define	MCI_STATUS_O		((long long)0x4000000000000000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   308
#define	MCI_STATUS_VAL		((long long)0x8000000000000000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   309
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   310
#define	MSERRCODE_SHFT		16
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   311
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   312
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   313
#define	MTRRTYPE_MASK		0xff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   314
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   315
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   316
#define	MTRRCAP_FIX		0x100
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   317
#define	MTRRCAP_VCNTMASK	0xff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   318
#define	MTRRCAP_USWC		0x400
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   319
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   320
#define	MTRRDEF_E		0x800
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   321
#define	MTRRDEF_FE		0x400
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   322
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   323
#define	MTRRPHYSMASK_V		0x800
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   324
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   325
#define	MTRR_TYPE_UC		0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   326
#define	MTRR_TYPE_WC		1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   327
#define	MTRR_TYPE_WT		4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   328
#define	MTRR_TYPE_WP		5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   329
#define	MTRR_TYPE_WB		6
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   330
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   331
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   332
 * Page attribute table is setup in the following way
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   333
 * PAT0	Write-BACK
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   334
 * PAT1	Write-Through
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   335
 * PAT2	Unchacheable
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   336
 * PAT3	Uncacheable
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   337
 * PAT4 Uncacheable
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   338
 * PAT5	Write-Protect
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   339
 * PAT6	Write-Combine
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   340
 * PAT7 Uncacheable
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   341
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   342
#define	PAT_DEFAULT_ATTRIBUTE \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   343
	((uint64_t)MTRR_TYPE_WC << 48)|((uint64_t)MTRR_TYPE_WP << 40)| \
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   344
	(MTRR_TYPE_WT << 8)|(MTRR_TYPE_WB)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   345
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   346
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   347
#define	MTRR_SETTYPE(a, t)	((a &= (uint64_t)~0xff),\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   348
				    (a |= ((t) & 0xff)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   349
#define	MTRR_SETVINVALID(a)	((a) &= ~MTRRPHYSMASK_V)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   350
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   351
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   352
#define	MTRR_SETVBASE(a, b, t)	((a) =\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   353
					((((uint64_t)(b)) & 0xffffff000)|\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   354
					(((uint32_t)(t)) & 0xff)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   355
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   356
#define	MTRR_SETVMASK(a, s, v) ((a) =\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   357
				((~(((uint64_t)(s)) - 1) & 0xffffff000)|\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   358
					(((uint32_t)(v)) << 11)))
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   359
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   360
#define	MTRR_GETVBASE(a)	(((uint64_t)(a)) & 0xffffff000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   361
#define	MTRR_GETVTYPE(a)	(((uint64_t)(a)) & 0xff)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   362
#define	MTRR_GETVSIZE(a)	((~((uint64_t)(a)) + 1) & 0xffffff000)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   363
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   364
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   365
#define	MAX_MTRRVAR	8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   366
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   367
#if !defined(_ASM)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   368
typedef	struct	mtrrvar {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   369
	uint64_t	mtrrphys_base;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   370
	uint64_t	mtrrphys_mask;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   371
} mtrrvar_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   372
#endif	/* _ASM */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   373
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   374
#define	X86_LARGEPAGE	0x00000001
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   375
#define	X86_TSC		0x00000002
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   376
#define	X86_MSR		0x00000004
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   377
#define	X86_MTRR	0x00000008
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   378
#define	X86_PGE		0x00000010
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   379
#define	X86_CMOV	0x00000040
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   380
#define	X86_MMX 	0x00000080
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   381
#define	X86_MCA		0x00000100
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   382
#define	X86_PAE		0x00000200
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   383
#define	X86_CX8		0x00000400
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   384
#define	X86_PAT		0x00000800
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   385
#define	X86_SEP		0x00001000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   386
#define	X86_SSE		0x00002000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   387
#define	X86_SSE2	0x00004000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   388
#define	X86_HTT		0x00008000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   389
#define	X86_ASYSC	0x00010000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   390
#define	X86_NX		0x00020000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   391
#define	X86_SSE3	0x00040000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   392
#define	X86_CX16	0x00080000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   393
#define	X86_CMP		0x00100000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   394
#define	X86_CPUID	0x01000000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   395
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   396
#define	FMT_X86_FEATURE						\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   397
	"\20"							\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   398
	"\31cpuid"						\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   399
	"\25cmp\24cx16\23sse3\22nx\21asysc"			\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   400
	"\20htt\17sse2\16sse\15sep\14pat\13cx8\12pae\11mca"	\
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   401
	"\10mmx\7cmov\5pge\4mtrr\3msr\2tsc\1lgpg"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   402
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   403
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   404
 * x86_type is a legacy concept; this is supplanted
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   405
 * for most purposes by x86_feature; modern CPUs
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   406
 * should be X86_TYPE_OTHER
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   407
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   408
#define	X86_TYPE_OTHER		0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   409
#define	X86_TYPE_486		1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   410
#define	X86_TYPE_P5		2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   411
#define	X86_TYPE_P6		3
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   412
#define	X86_TYPE_CYRIX_486	4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   413
#define	X86_TYPE_CYRIX_6x86L	5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   414
#define	X86_TYPE_CYRIX_6x86	6
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   415
#define	X86_TYPE_CYRIX_GXm	7
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   416
#define	X86_TYPE_CYRIX_6x86MX	8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   417
#define	X86_TYPE_CYRIX_MediaGX	9
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   418
#define	X86_TYPE_CYRIX_MII	10
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   419
#define	X86_TYPE_VIA_CYRIX_III	11
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   420
#define	X86_TYPE_P4		12
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   421
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   422
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   423
 * x86_vendor allows us to select between
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   424
 * implementation features and helps guide
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   425
 * the interpretation of the cpuid instruction.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   426
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   427
#define	X86_VENDOR_Intel	0	/* GenuineIntel */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   428
#define	X86_VENDOR_IntelClone	1	/* (an Intel clone) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   429
#define	X86_VENDOR_AMD		2	/* AuthenticAMD */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   430
#define	X86_VENDOR_Cyrix	3	/* CyrixInstead */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   431
#define	X86_VENDOR_UMC		4	/* UMC UMC UMC  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   432
#define	X86_VENDOR_NexGen	5	/* NexGenDriven */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   433
#define	X86_VENDOR_Centaur	6	/* CentaurHauls */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   434
#define	X86_VENDOR_Rise		7	/* RiseRiseRise */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   435
#define	X86_VENDOR_SiS		8	/* SiS SiS SiS  */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   436
#define	X86_VENDOR_TM		9	/* GenuineTMx86 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   437
#define	X86_VENDOR_NSC		10	/* Geode by NSC */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   438
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   439
#if !defined(_ASM)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   440
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   441
#if defined(_KERNEL) || defined(_KMEMUSER)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   442
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   443
extern uint_t x86_feature;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   444
extern uint_t x86_type;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   445
extern uint_t x86_vendor;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   446
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   447
extern ulong_t cr4_value;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   448
extern uint_t pentiumpro_bug4046376;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   449
extern uint_t pentiumpro_bug4064495;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   450
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   451
extern uint_t enable486;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   452
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   453
extern const char CyrixInstead[];
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   454
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   455
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   456
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   457
#if defined(_KERNEL)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   458
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   459
770
0eda482eb80f 6311933 rdmsr/wrmsr do not need to set/pass values via memory pointers
kucharsk
parents: 0
diff changeset
   460
extern uint64_t rdmsr(uint_t);
0eda482eb80f 6311933 rdmsr/wrmsr do not need to set/pass values via memory pointers
kucharsk
parents: 0
diff changeset
   461
extern void wrmsr(uint_t, const uint64_t);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   462
extern void invalidate_cache(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   463
struct regs;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   464
extern int mca_exception(struct regs *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   465
extern ulong_t getcr4(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   466
extern void setcr4(ulong_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   467
extern void mtrr_sync(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   468
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   469
extern void cpu_fast_syscall_enable(void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   470
extern void cpu_fast_syscall_disable(void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   471
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   472
struct cpu;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   473
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   474
extern int cpuid_checkpass(struct cpu *, int);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   475
extern uint32_t cpuid_insn(struct cpu *,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   476
    uint32_t, uint32_t *, uint32_t *, uint32_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   477
extern uint32_t __cpuid_insn(uint32_t, uint32_t *, uint32_t *, uint32_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   478
extern int cpuid_getbrandstr(struct cpu *, char *, size_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   479
extern int cpuid_getidstr(struct cpu *, char *, size_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   480
extern const char *cpuid_getvendorstr(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   481
extern uint_t cpuid_getvendor(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   482
extern uint_t cpuid_getfamily(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   483
extern uint_t cpuid_getmodel(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   484
extern uint_t cpuid_getstep(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   485
extern uint_t cpuid_get_ncpu_per_chip(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   486
extern int cpuid_is_ht(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   487
extern int cpuid_syscall32_insn(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   488
extern int getl2cacheinfo(struct cpu *, int *, int *, int *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   489
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   490
extern int cpuid_opteron_erratum(struct cpu *, uint_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   491
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   492
struct cpuid_info;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   493
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   494
extern void setx86isalist(void);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   495
extern uint_t cpuid_pass1(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   496
extern void cpuid_pass2(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   497
extern void cpuid_pass3(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   498
extern uint_t cpuid_pass4(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   499
extern void add_cpunode2devtree(processorid_t, struct cpuid_info *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   500
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   501
extern void cpuid_get_addrsize(struct cpu *, uint_t *, uint_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   502
extern uint_t cpuid_get_dtlb_nent(struct cpu *, size_t);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   503
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   504
extern uint_t workaround_errata(struct cpu *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   505
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   506
#if defined(OPTERON_ERRATUM_93)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   507
extern int opteron_erratum_93;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   508
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   509
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   510
#if defined(OPTERON_ERRATUM_91)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   511
extern int opteron_erratum_91;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   512
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   513
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   514
#if defined(OPTERON_ERRATUM_100)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   515
extern int opteron_erratum_100;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   516
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   517
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   518
#if defined(OPTERON_ERRATUM_121)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   519
extern int opteron_erratum_121;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   520
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   521
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   522
#endif	/* _KERNEL */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   523
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   524
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   525
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   526
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   527
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   528
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   529
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   530
#endif	/* _SYS_X86_ARCHEXT_H */