1*2063d9c0SJosef 'Jeff' Sipek# 225cf1a30Sjl139090# CDDL HEADER START 325cf1a30Sjl139090# 425cf1a30Sjl139090# The contents of this file are subject to the terms of the 525cf1a30Sjl139090# Common Development and Distribution License (the "License"). 625cf1a30Sjl139090# You may not use this file except in compliance with the License. 725cf1a30Sjl139090# 825cf1a30Sjl139090# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 925cf1a30Sjl139090# or http://www.opensolaris.org/os/licensing. 1025cf1a30Sjl139090# See the License for the specific language governing permissions 1125cf1a30Sjl139090# and limitations under the License. 1225cf1a30Sjl139090# 1325cf1a30Sjl139090# When distributing Covered Code, include this CDDL HEADER in each 1425cf1a30Sjl139090# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1525cf1a30Sjl139090# If applicable, add the following below this CDDL HEADER, with the 1625cf1a30Sjl139090# fields enclosed by brackets "[]" replaced with your own identifying 1725cf1a30Sjl139090# information: Portions Copyright [yyyy] [name of copyright owner] 1825cf1a30Sjl139090# 1925cf1a30Sjl139090# CDDL HEADER END 2025cf1a30Sjl139090# 2125cf1a30Sjl139090# 22*2063d9c0SJosef 'Jeff' Sipek# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. 23*2063d9c0SJosef 'Jeff' Sipek# 24*2063d9c0SJosef 'Jeff' Sipek# Global definitions for sun4u opl implementation specific modules. 25*2063d9c0SJosef 'Jeff' Sipek# 26*2063d9c0SJosef 'Jeff' Sipek# uts/sun4u/opl/Makefile.opl 2725cf1a30Sjl139090# 2825cf1a30Sjl139090 29*2063d9c0SJosef 'Jeff' Sipek# 30*2063d9c0SJosef 'Jeff' Sipek# Define directories. 31*2063d9c0SJosef 'Jeff' Sipek# 32*2063d9c0SJosef 'Jeff' Sipek# 33*2063d9c0SJosef 'Jeff' Sipek# 34*2063d9c0SJosef 'Jeff' SipekROOT_OPL_DIR = $(ROOT_PLAT_DIR)/SUNW,SPARC-Enterprise 35*2063d9c0SJosef 'Jeff' SipekROOT_OPL_MOD_DIR = $(ROOT_OPL_DIR)/kernel 36*2063d9c0SJosef 'Jeff' SipekROOT_OPL_KERN_DIR_32 = $(ROOT_OPL_MOD_DIR) 37*2063d9c0SJosef 'Jeff' SipekROOT_OPL_KERN_DIR_64 = $(ROOT_OPL_MOD_DIR)/$(SUBDIR64) 38*2063d9c0SJosef 'Jeff' SipekROOT_OPL_MISC_DIR_32 = $(ROOT_OPL_MOD_DIR)/misc 39*2063d9c0SJosef 'Jeff' SipekROOT_OPL_MISC_DIR_64 = $(ROOT_OPL_MOD_DIR)/misc/$(SUBDIR64) 40*2063d9c0SJosef 'Jeff' SipekROOT_OPL_DRV_DIR_32 = $(ROOT_OPL_MOD_DIR)/drv 41*2063d9c0SJosef 'Jeff' SipekROOT_OPL_DRV_DIR_64 = $(ROOT_OPL_MOD_DIR)/drv/$(SUBDIR64) 42*2063d9c0SJosef 'Jeff' SipekROOT_OPL_CPU_DIR_32 = $(ROOT_OPL_MOD_DIR)/cpu 43*2063d9c0SJosef 'Jeff' SipekROOT_OPL_CPU_DIR_64 = $(ROOT_OPL_MOD_DIR)/cpu/$(SUBDIR64) 44*2063d9c0SJosef 'Jeff' SipekROOT_OPL_CRYPTO_DIR_32 = $(ROOT_OPL_MOD_DIR)/crypto 45*2063d9c0SJosef 'Jeff' SipekROOT_OPL_CRYPTO_DIR_64 = $(ROOT_OPL_MOD_DIR)/crypto/$(SUBDIR64) 4625cf1a30Sjl139090 47*2063d9c0SJosef 'Jeff' SipekROOT_OPL_KERN_DIR = $(ROOT_OPL_KERN_DIR_$(CLASS)) 48*2063d9c0SJosef 'Jeff' SipekROOT_OPL_MISC_DIR = $(ROOT_OPL_MISC_DIR_$(CLASS)) 49*2063d9c0SJosef 'Jeff' SipekROOT_OPL_DRV_DIR = $(ROOT_OPL_DRV_DIR_$(CLASS)) 50*2063d9c0SJosef 'Jeff' SipekROOT_OPL_CPU_DIR = $(ROOT_OPL_CPU_DIR_$(CLASS)) 51*2063d9c0SJosef 'Jeff' SipekROOT_OPL_CRYPTO_DIR = $(ROOT_OPL_CRYPTO_DIR_$(CLASS)) 52*2063d9c0SJosef 'Jeff' Sipek 53*2063d9c0SJosef 'Jeff' SipekROOT_PLAT_MOD_DIRS += $(ROOT_OPL_MOD_DIR) 54*2063d9c0SJosef 'Jeff' SipekROOT_PLAT_MISC_DIRS_32 += $(ROOT_OPL_MISC_DIR_32) 55*2063d9c0SJosef 'Jeff' Sipek 56*2063d9c0SJosef 'Jeff' SipekUSR_OPL_DIR = $(USR_PLAT_DIR)/SUNW,SPARC-Enterprise 57*2063d9c0SJosef 'Jeff' SipekUSR_OPL_LIB_DIR = $(USR_OPL_DIR)/lib 58*2063d9c0SJosef 'Jeff' SipekUSR_OPL_SBIN_DIR = $(USR_OPL_DIR)/sbin 59*2063d9c0SJosef 'Jeff' SipekUSR_OPL_SBIN_PRTDIAG = $(USR_OPL_SBIN_DIR)/prtdiag 60*2063d9c0SJosef 'Jeff' SipekUSR_OPL_SBIN_FRUADM = $(USR_OPL_SBIN_DIR)/fruadm 61*2063d9c0SJosef 'Jeff' SipekUSR_OPL_INC_DIR = $(USR_OPL_DIR)/include 62*2063d9c0SJosef 'Jeff' SipekUSR_OPL_ISYS_DIR = $(USR_OPL_INC_DIR)/sys 63*2063d9c0SJosef 'Jeff' Sipek 64*2063d9c0SJosef 'Jeff' SipekOPL_LINT_LIB_DIR = $(UTSBASE)/$(PLATFORM)/opl/lint-libs/$(OBJS_DIR) 65*2063d9c0SJosef 'Jeff' SipekOPLMSU_OPTION = options 66*2063d9c0SJosef 'Jeff' Sipek 67*2063d9c0SJosef 'Jeff' Sipek# 68*2063d9c0SJosef 'Jeff' Sipek# Define modules. 69*2063d9c0SJosef 'Jeff' Sipek# 70*2063d9c0SJosef 'Jeff' SipekOPL_KMODS = platmod 71*2063d9c0SJosef 'Jeff' SipekOPL_KMODS += dm2s 72*2063d9c0SJosef 'Jeff' SipekOPL_KMODS += oplkmdrv 73*2063d9c0SJosef 'Jeff' SipekOPL_KMODS += pcicmu 74*2063d9c0SJosef 'Jeff' SipekOPL_KMODS += oplpanel 75*2063d9c0SJosef 'Jeff' SipekOPL_KMODS += dr .WAIT drmach 76*2063d9c0SJosef 'Jeff' SipekOPL_KMODS += oplmsu 77*2063d9c0SJosef 'Jeff' SipekOPL_KMODS += mc-opl 78*2063d9c0SJosef 'Jeff' Sipek 79*2063d9c0SJosef 'Jeff' Sipek# 80*2063d9c0SJosef 'Jeff' Sipek# CPU modules. 81*2063d9c0SJosef 'Jeff' Sipek# 82*2063d9c0SJosef 'Jeff' SipekOPL_CPU_KMODS += olympus_c 83*2063d9c0SJosef 'Jeff' Sipek 84*2063d9c0SJosef 'Jeff' Sipek# Links to OPL crypto modules 85*2063d9c0SJosef 'Jeff' Sipek# 86*2063d9c0SJosef 'Jeff' SipekOPL_CRYPTO_LINKS = aes 87*2063d9c0SJosef 'Jeff' Sipek 88*2063d9c0SJosef 'Jeff' Sipek# 89*2063d9c0SJosef 'Jeff' Sipek# Include the makefiles which define build rule templates, the 90*2063d9c0SJosef 'Jeff' Sipek# collection of files per module, and a few specific flags. Note 91*2063d9c0SJosef 'Jeff' Sipek# that order is significant, just as with an include path. The 92*2063d9c0SJosef 'Jeff' Sipek# first build rule template which matches the files name will be 93*2063d9c0SJosef 'Jeff' Sipek# used. By including these in order from most machine dependent 94*2063d9c0SJosef 'Jeff' Sipek# to most machine independent, we allow a machine dependent file 95*2063d9c0SJosef 'Jeff' Sipek# to be used in preference over a machine independent version 96*2063d9c0SJosef 'Jeff' Sipek# (Such as a machine specific optimization, which preserves the 97*2063d9c0SJosef 'Jeff' Sipek# interfaces.) 98*2063d9c0SJosef 'Jeff' Sipek# 99*2063d9c0SJosef 'Jeff' Sipekinclude $(UTSBASE)/sun4u/ngdr/Makefile.files 100*2063d9c0SJosef 'Jeff' Sipekinclude $(UTSBASE)/sun4u/opl/Makefile.files 101*2063d9c0SJosef 'Jeff' Sipek 102*2063d9c0SJosef 'Jeff' Sipek# 103*2063d9c0SJosef 'Jeff' Sipek# Include common rules. 104*2063d9c0SJosef 'Jeff' Sipek# 105*2063d9c0SJosef 'Jeff' Sipekinclude $(UTSBASE)/sun4u/Makefile.sun4u 106*2063d9c0SJosef 'Jeff' Sipek 107*2063d9c0SJosef 'Jeff' Sipek# 108*2063d9c0SJosef 'Jeff' Sipek# Everybody needs to know how to build modstubs.o and to locate unix.o 109*2063d9c0SJosef 'Jeff' Sipek# 110*2063d9c0SJosef 'Jeff' SipekUNIX_DIR = $(UTSBASE)/$(PLATFORM)/opl/unix 111*2063d9c0SJosef 'Jeff' SipekMODSTUBS_DIR = $(UNIX_DIR) 112*2063d9c0SJosef 'Jeff' SipekDSF_DIR = $(UTSBASE)/$(PLATFORM)/opl/genassym 113*2063d9c0SJosef 'Jeff' SipekLINTS_DIR = $(OBJS_DIR) 114*2063d9c0SJosef 'Jeff' SipekLINT_LIB_DIR = $(UTSBASE)/$(PLATFORM)/opl/lint-libs/$(OBJS_DIR) 115*2063d9c0SJosef 'Jeff' Sipek 116*2063d9c0SJosef 'Jeff' SipekUNIX_O = $(UNIX_DIR)/$(OBJS_DIR)/unix.o 117*2063d9c0SJosef 'Jeff' Sipek 118*2063d9c0SJosef 'Jeff' SipekLINT_LIB = $(LINT_LIB_DIR)/llib-lunix.ln 119*2063d9c0SJosef 'Jeff' Sipek 120*2063d9c0SJosef 'Jeff' Sipek# 121*2063d9c0SJosef 'Jeff' Sipek# Define the actual specific platforms 122*2063d9c0SJosef 'Jeff' Sipek# 123*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS = -D$(PLATFORM) -D_MACHDEP -DSFMMU -DMP 124*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -D_CPU_SIGNATURE 125*2063d9c0SJosef 'Jeff' Sipek 126*2063d9c0SJosef 'Jeff' Sipek# 127*2063d9c0SJosef 'Jeff' Sipek# Maximum CPUID = 01111 11 01 1 = 0x1FB (507) 128*2063d9c0SJosef 'Jeff' Sipek# Maximum CHIPID = 1 01111 11 00 0 = 0x5F8 (1528) 129*2063d9c0SJosef 'Jeff' Sipek# 130*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DNCPU=512 131*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DMAX_CPU_CHIPID=1529 132*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DMAX_UPA=256 133*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DIGN_SIZE=8 134*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DMAX_MEM_NODES=16 135*2063d9c0SJosef 'Jeff' Sipek# 136*2063d9c0SJosef 'Jeff' Sipek# UTSB_PHYS will enable user TSB physical access for TL>0 137*2063d9c0SJosef 'Jeff' Sipek# 138*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DUTSB_PHYS 139*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -D_OPL 140*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DOLYMPUS_SHARED_FTLB 141*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -D_CMP_NO_ERROR_STEERING -D_HW_MEMSCRUB_SUPPORT 142*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DDO_CORELEVEL_LOADBAL 143*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DITLB_32M_256M_SUPPORT 144*2063d9c0SJosef 'Jeff' Sipek# 145*2063d9c0SJosef 'Jeff' Sipek# OLYMPUS C cross-call erratas. 146*2063d9c0SJosef 'Jeff' Sipek# - revision A can only deliver one xcall at a time. 147*2063d9c0SJosef 'Jeff' Sipek# - revision B can dispatch xcalls to 31 (IDSR_BN_SETS) CPUs at a time, 148*2063d9c0SJosef 'Jeff' Sipek# but it can not send more xcalls until all the pending xcalls are 149*2063d9c0SJosef 'Jeff' Sipek# dispatched. In other words, all previous 31 xcall slots must be 150*2063d9c0SJosef 'Jeff' Sipek# in non-busy state before further xcalls can be issued. 151*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DOLYMPUS_C_REV_A_ERRATA_XCALL 152*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DOLYMPUS_C_REV_B_ERRATA_XCALL 153*2063d9c0SJosef 'Jeff' Sipek# 154*2063d9c0SJosef 'Jeff' Sipek# OLYMPUS C Spurious interrupts 155*2063d9c0SJosef 'Jeff' Sipek# - When an UE is detected in a interrupt packet, 156*2063d9c0SJosef 'Jeff' Sipek# Olympus-C takes an interrupt_vector_trap (TT=0x60) while 157*2063d9c0SJosef 'Jeff' Sipek# ASI_INTR_RECIEVE.BUSY is set to zero to indicate the existence 158*2063d9c0SJosef 'Jeff' Sipek# of the error. Software will see this as a spurious interrupt since 159*2063d9c0SJosef 'Jeff' Sipek# the interrupt busy bit is set to zero. SW will still need to 160*2063d9c0SJosef 'Jeff' Sipek# explicitly clear the interrupt busy bit to reset the HW state. 161*2063d9c0SJosef 'Jeff' Sipek# Failure to do so will result in the processor continuously taking 162*2063d9c0SJosef 'Jeff' Sipek# an interrupt vector trap when PSTATE.IE is reset to one. 163*2063d9c0SJosef 'Jeff' Sipek# Note that UE in interrupt packet is reported to the SP and handled 164*2063d9c0SJosef 'Jeff' Sipek# accordingly. For the domain, the system should panic as it is not 165*2063d9c0SJosef 'Jeff' Sipek# recoverable. 166*2063d9c0SJosef 'Jeff' SipekMACHINE_DEFS += -DCLEAR_INTR_BUSYBIT_ON_SPURIOUS 167*2063d9c0SJosef 'Jeff' Sipek 168*2063d9c0SJosef 'Jeff' Sipek# 169*2063d9c0SJosef 'Jeff' Sipek# For now, disable these lint checks; maintainers should endeavor 170*2063d9c0SJosef 'Jeff' Sipek# to investigate and remove these for maximum lint coverage. 171*2063d9c0SJosef 'Jeff' Sipek# Please do not carry these forward to new Makefiles. 172*2063d9c0SJosef 'Jeff' Sipek# 173*2063d9c0SJosef 'Jeff' SipekLINTTAGS += -erroff=E_SUSPICIOUS_COMPARISON 174*2063d9c0SJosef 'Jeff' SipekLINTTAGS += -erroff=E_BAD_PTR_CAST_ALIGN 175*2063d9c0SJosef 'Jeff' SipekLINTTAGS += -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED 176*2063d9c0SJosef 'Jeff' SipekLINTTAGS += -erroff=E_STATIC_UNUSED 177*2063d9c0SJosef 'Jeff' SipekLINTTAGS += -erroff=E_PTRDIFF_OVERFLOW 178*2063d9c0SJosef 'Jeff' SipekLINTTAGS += -erroff=E_ASSIGN_NARROW_CONV 179*2063d9c0SJosef 'Jeff' Sipek 180*2063d9c0SJosef 'Jeff' Sipek.KEEP_STATE: 181