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