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 $(UTSBASE)/sun4u/opl/Makefile.files 101 102# 103# Include common rules. 104# 105include $(UTSBASE)/sun4u/Makefile.sun4u 106 107# 108# Everybody needs to know how to build modstubs.o and to locate unix.o 109# 110UNIX_DIR = $(UTSBASE)/$(PLATFORM)/opl/unix 111MODSTUBS_DIR = $(UNIX_DIR) 112DSF_DIR = $(UTSBASE)/$(PLATFORM)/opl/genassym 113LINTS_DIR = $(OBJS_DIR) 114LINT_LIB_DIR = $(UTSBASE)/$(PLATFORM)/opl/lint-libs/$(OBJS_DIR) 115 116UNIX_O = $(UNIX_DIR)/$(OBJS_DIR)/unix.o 117 118LINT_LIB = $(LINT_LIB_DIR)/llib-lunix.ln 119 120# 121# Define the actual specific platforms 122# 123MACHINE_DEFS = -D$(PLATFORM) -D_MACHDEP -DSFMMU -DMP 124MACHINE_DEFS += -D_CPU_SIGNATURE 125 126# 127# Maximum CPUID = 01111 11 01 1 = 0x1FB (507) 128# Maximum CHIPID = 1 01111 11 00 0 = 0x5F8 (1528) 129# 130MACHINE_DEFS += -DNCPU=512 131MACHINE_DEFS += -DMAX_CPU_CHIPID=1529 132MACHINE_DEFS += -DMAX_UPA=256 133MACHINE_DEFS += -DIGN_SIZE=8 134MACHINE_DEFS += -DMAX_MEM_NODES=16 135# 136# UTSB_PHYS will enable user TSB physical access for TL>0 137# 138MACHINE_DEFS += -DUTSB_PHYS 139MACHINE_DEFS += -D_OPL 140MACHINE_DEFS += -DOLYMPUS_SHARED_FTLB 141MACHINE_DEFS += -D_CMP_NO_ERROR_STEERING -D_HW_MEMSCRUB_SUPPORT 142MACHINE_DEFS += -DDO_CORELEVEL_LOADBAL 143MACHINE_DEFS += -DITLB_32M_256M_SUPPORT 144# 145# OLYMPUS C cross-call erratas. 146# - revision A can only deliver one xcall at a time. 147# - revision B can dispatch xcalls to 31 (IDSR_BN_SETS) CPUs at a time, 148# but it can not send more xcalls until all the pending xcalls are 149# dispatched. In other words, all previous 31 xcall slots must be 150# in non-busy state before further xcalls can be issued. 151MACHINE_DEFS += -DOLYMPUS_C_REV_A_ERRATA_XCALL 152MACHINE_DEFS += -DOLYMPUS_C_REV_B_ERRATA_XCALL 153# 154# OLYMPUS C Spurious interrupts 155# - When an UE is detected in a interrupt packet, 156# Olympus-C takes an interrupt_vector_trap (TT=0x60) while 157# ASI_INTR_RECIEVE.BUSY is set to zero to indicate the existence 158# of the error. Software will see this as a spurious interrupt since 159# the interrupt busy bit is set to zero. SW will still need to 160# explicitly clear the interrupt busy bit to reset the HW state. 161# Failure to do so will result in the processor continuously taking 162# an interrupt vector trap when PSTATE.IE is reset to one. 163# Note that UE in interrupt packet is reported to the SP and handled 164# accordingly. For the domain, the system should panic as it is not 165# recoverable. 166MACHINE_DEFS += -DCLEAR_INTR_BUSYBIT_ON_SPURIOUS 167 168# 169# For now, disable these lint checks; maintainers should endeavor 170# to investigate and remove these for maximum lint coverage. 171# Please do not carry these forward to new Makefiles. 172# 173LINTTAGS += -erroff=E_SUSPICIOUS_COMPARISON 174LINTTAGS += -erroff=E_BAD_PTR_CAST_ALIGN 175LINTTAGS += -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED 176LINTTAGS += -erroff=E_STATIC_UNUSED 177LINTTAGS += -erroff=E_PTRDIFF_OVERFLOW 178LINTTAGS += -erroff=E_ASSIGN_NARROW_CONV 179 180.KEEP_STATE: 181