1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# ident "%Z%%M% %I% %E% SMI"
#
# Global definitions for sun4u opl implementation specific modules.
#
# uts/sun4u/opl/Makefile.opl
#
#
# Define directories.
#
#
#
ROOT_OPL_DIR = $(ROOT_PLAT_DIR)/SUNW,SPARC-Enterprise
ROOT_OPL_MOD_DIR = $(ROOT_OPL_DIR)/kernel
ROOT_OPL_KERN_DIR_32 = $(ROOT_OPL_MOD_DIR)
ROOT_OPL_KERN_DIR_64 = $(ROOT_OPL_MOD_DIR)/$(SUBDIR64)
ROOT_OPL_MISC_DIR_32 = $(ROOT_OPL_MOD_DIR)/misc
ROOT_OPL_MISC_DIR_64 = $(ROOT_OPL_MOD_DIR)/misc/$(SUBDIR64)
ROOT_OPL_DRV_DIR_32 = $(ROOT_OPL_MOD_DIR)/drv
ROOT_OPL_DRV_DIR_64 = $(ROOT_OPL_MOD_DIR)/drv/$(SUBDIR64)
ROOT_OPL_CPU_DIR_32 = $(ROOT_OPL_MOD_DIR)/cpu
ROOT_OPL_CPU_DIR_64 = $(ROOT_OPL_MOD_DIR)/cpu/$(SUBDIR64)
ROOT_OPL_CRYPTO_DIR_32 = $(ROOT_OPL_MOD_DIR)/crypto
ROOT_OPL_CRYPTO_DIR_64 = $(ROOT_OPL_MOD_DIR)/crypto/$(SUBDIR64)
ROOT_OPL_KERN_DIR = $(ROOT_OPL_KERN_DIR_$(CLASS))
ROOT_OPL_MISC_DIR = $(ROOT_OPL_MISC_DIR_$(CLASS))
ROOT_OPL_DRV_DIR = $(ROOT_OPL_DRV_DIR_$(CLASS))
ROOT_OPL_CPU_DIR = $(ROOT_OPL_CPU_DIR_$(CLASS))
ROOT_OPL_CRYPTO_DIR = $(ROOT_OPL_CRYPTO_DIR_$(CLASS))
ROOT_PLAT_MOD_DIRS += $(ROOT_OPL_MOD_DIR)
ROOT_PLAT_MISC_DIRS_32 += $(ROOT_OPL_MISC_DIR_32)
USR_OPL_DIR = $(USR_PLAT_DIR)/SUNW,SPARC-Enterprise
USR_OPL_LIB_DIR = $(USR_OPL_DIR)/lib
USR_OPL_SBIN_DIR = $(USR_OPL_DIR)/sbin
USR_OPL_SBIN_EEPROM = $(USR_OPL_SBIN_DIR)/eeprom
USR_OPL_SBIN_PRTDIAG = $(USR_OPL_SBIN_DIR)/prtdiag
USR_OPL_SBIN_TRAPSTAT = $(USR_OPL_SBIN_DIR)/trapstat
USR_OPL_SBIN_FRUADM = $(USR_OPL_SBIN_DIR)/fruadm
USR_OPL_INC_DIR = $(USR_OPL_DIR)/include
USR_OPL_ISYS_DIR = $(USR_OPL_INC_DIR)/sys
OPL_LINT_LIB_DIR = $(UTSBASE)/$(PLATFORM)/opl/lint-libs/$(OBJS_DIR)
OPLMSU_OPTION = options
#
# Define modules.
#
OPL_KMODS = platmod
OPL_KMODS += dm2s
OPL_KMODS += oplkmdrv
OPL_KMODS += pcicmu
OPL_KMODS += oplpanel
OPL_KMODS += scfd
OPL_KMODS += dr .WAIT drmach
OPL_KMODS += oplmsu
OPL_KMODS += mc-opl
#
# CPU modules.
#
OPL_CPU_KMODS += olympus_c
# Links to OPL crypto modules
#
OPL_CRYPTO_LINKS = aes
#
# Include the makefiles which define build rule templates, the
# collection of files per module, and a few specific flags. Note
# that order is significant, just as with an include path. The
# first build rule template which matches the files name will be
# used. By including these in order from most machine dependent
# to most machine independent, we allow a machine dependent file
# to be used in preference over a machine independent version
# (Such as a machine specific optimization, which preserves the
# interfaces.)
#
include $(UTSBASE)/sun4u/ngdr/Makefile.files
include $(UTSBASE)/sun4u/opl/Makefile.files
#
# Include common rules.
#
include $(UTSBASE)/sun4u/Makefile.sun4u
#
# Everybody needs to know how to build modstubs.o and to locate unix.o
#
UNIX_DIR = $(UTSBASE)/$(PLATFORM)/opl/unix
MODSTUBS_DIR = $(UNIX_DIR)
DSF_DIR = $(UTSBASE)/$(PLATFORM)/opl/genassym
LINTS_DIR = $(OBJS_DIR)
LINT_LIB_DIR = $(UTSBASE)/$(PLATFORM)/opl/lint-libs/$(OBJS_DIR)
UNIX_O = $(UNIX_DIR)/$(OBJS_DIR)/unix.o
LINT_LIB = $(LINT_LIB_DIR)/llib-lunix.ln
#
# Define the actual specific platforms
#
MACHINE_DEFS = -D$(PLATFORM) -D_MACHDEP -DSFMMU -DMP
MACHINE_DEFS += -D_CPU_SIGNATURE
#
# Maximum CPUID = 01111 11 01 1 = 0x1FB (507)
# Maximum CHIPID = 1 01111 11 00 0 = 0x5F8 (1528)
#
MACHINE_DEFS += -DNCPU=508
MACHINE_DEFS += -DMAX_CPU_CHIPID=1529
MACHINE_DEFS += -DMAX_UPA=256
MACHINE_DEFS += -DIGN_SIZE=8
MACHINE_DEFS += -DMAX_MEM_NODES=16
#
# UTSB_PHYS will enable user TSB physical access for TL>0
#
MACHINE_DEFS += -DUTSB_PHYS
MACHINE_DEFS += -D_OPL
MACHINE_DEFS += -DOLYMPUS_SHARED_FTLB
MACHINE_DEFS += -D_CMP_NO_ERROR_STEERING -D_HW_MEMSCRUB_SUPPORT
MACHINE_DEFS += -DDO_CORELEVEL_LOADBAL
MACHINE_DEFS += -DITLB_32M_256M_SUPPORT
#
# OLYMPUS C cross-call erratas.
# - revision A can only deliver one xcall at a time.
# - revision B can dispatch xcalls to 31 (IDSR_BN_SETS) CPUs at a time,
# but it can not send more xcalls until all the pending xcalls are
# dispatched. In other words, all previous 31 xcall slots must be
# in non-busy state before further xcalls can be issued.
MACHINE_DEFS += -DOLYMPUS_C_REV_A_ERRATA_XCALL
MACHINE_DEFS += -DOLYMPUS_C_REV_B_ERRATA_XCALL
#
# OLYMPUS C Spurious interrupts
# - When an UE is detected in a interrupt packet,
# Olympus-C takes an interrupt_vector_trap (TT=0x60) while
# ASI_INTR_RECIEVE.BUSY is set to zero to indicate the existence
# of the error. Software will see this as a spurious interrupt since
# the interrupt busy bit is set to zero. SW will still need to
# explicitly clear the interrupt busy bit to reset the HW state.
# Failure to do so will result in the processor continuously taking
# an interrupt vector trap when PSTATE.IE is reset to one.
# Note that UE in interrupt packet is reported to the SP and handled
# accordingly. For the domain, the system should panic as it is not
# recoverable.
MACHINE_DEFS += -DCLEAR_INTR_BUSYBIT_ON_SPURIOUS
.KEEP_STATE:
|