Home | History | Annotate | Download | only in i86xpv
      1   5084  johnlev #
      2   5084  johnlev # CDDL HEADER START
      3   5084  johnlev #
      4   5084  johnlev # The contents of this file are subject to the terms of the
      5   5084  johnlev # Common Development and Distribution License (the "License").
      6   5084  johnlev # You may not use this file except in compliance with the License.
      7   5084  johnlev #
      8   5084  johnlev # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9   5084  johnlev # or http://www.opensolaris.org/os/licensing.
     10   5084  johnlev # See the License for the specific language governing permissions
     11   5084  johnlev # and limitations under the License.
     12   5084  johnlev #
     13   5084  johnlev # When distributing Covered Code, include this CDDL HEADER in each
     14   5084  johnlev # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15   5084  johnlev # If applicable, add the following below this CDDL HEADER, with the
     16   5084  johnlev # fields enclosed by brackets "[]" replaced with your own identifying
     17   5084  johnlev # information: Portions Copyright [yyyy] [name of copyright owner]
     18   5084  johnlev #
     19   5084  johnlev # CDDL HEADER END
     20   5084  johnlev #
     21   5084  johnlev 
     22   5084  johnlev #
     23   5084  johnlev # uts/i86xpv/Makefile.i86xpv.shared
     24   5084  johnlev #
     25  10175   Stuart # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     26   5084  johnlev # Use is subject to license terms.
     27   5084  johnlev #
     28   7532     Sean 
     29   5084  johnlev #
     30   5084  johnlev #	This makefile contains the common definitions for the i86xpv unix
     31   5084  johnlev #	and all i86xpv implementation architecture dependent modules.
     32   5084  johnlev #
     33   5084  johnlev 
     34   5084  johnlev #
     35   5084  johnlev #	Machine type (implementation architecture):
     36   5084  johnlev #
     37   5084  johnlev PLATFORM	 = i86xpv
     38   5084  johnlev 
     39   5084  johnlev #
     40   5084  johnlev #	uname -m value
     41   5084  johnlev #
     42   5084  johnlev UNAME_M		 = i86pc
     43   5084  johnlev 
     44   5084  johnlev #
     45   5084  johnlev #	Everybody needs to know how to build modstubs.o and to locate unix.o
     46   5084  johnlev #
     47   5084  johnlev UNIX_DIR	 = $(UTSBASE)/$(PLATFORM)/unix
     48   5084  johnlev GENLIB_DIR	 = $(UTSBASE)/intel/genunix
     49   5084  johnlev MODSTUBS_DIR	 = $(UNIX_DIR)
     50   5084  johnlev DSF_DIR		 = $(UTSBASE)/$(PLATFORM)/genassym
     51   5084  johnlev LINTS_DIR	 = $(OBJS_DIR)
     52   5084  johnlev LINT_LIB_DIR	 = $(UTSBASE)/$(PLATFORM)/lint-libs/$(OBJS_DIR)
     53   5084  johnlev GEN_LINT_LIB_DIR = $(UTSBASE)/intel/lint-libs/$(OBJS_DIR)
     54   5084  johnlev 
     55   5084  johnlev DTRACESTUBS_O	 = $(OBJS_DIR)/dtracestubs.o
     56   5084  johnlev DTRACESTUBS	 = $(OBJS_DIR)/libdtracestubs.so
     57   5084  johnlev 
     58   5084  johnlev SYM_MOD		= $(OBJS_DIR)/unix.sym
     59   5084  johnlev 
     60   5084  johnlev UNIX_O		 = $(UNIX_DIR)/$(OBJS_DIR)/unix.o
     61   5084  johnlev MODSTUBS_O	 = $(MODSTUBS_DIR)/$(OBJS_DIR)/modstubs.o
     62   5084  johnlev GENLIB	 	 = $(GENLIB_DIR)/$(OBJS_DIR)/libgenunix.so
     63   5084  johnlev LINT_LIB	 = $(LINT_LIB_DIR)/llib-lunix.ln
     64   5084  johnlev DBOOT_LINT_LIB	 = $(LINT_LIB_DIR)/llib-ldboot.ln
     65   5084  johnlev GEN_LINT_LIB	 = $(GEN_LINT_LIB_DIR)/llib-lgenunix.ln
     66  10643      tim 
     67  10643      tim LINT32_DIRS	 = $(LINT32_BUILDS:%=$(UTSBASE)/$(PLATFORM)/lint-libs/%)
     68  10643      tim LINT32_FILES	 = $(LINT32_DIRS:%=%/llib-l$(MODULE).ln)
     69   5084  johnlev 
     70   5084  johnlev #
     71   5084  johnlev #	Include the makefiles which define build rule templates, the
     72   5084  johnlev #	collection of files per module, and a few specific flags. Note
     73   5084  johnlev #	that order is significant, just as with an include path. The
     74   5084  johnlev #	first build rule template which matches the files name will be
     75   5084  johnlev #	used. By including these in order from most machine dependent
     76   5084  johnlev #	to most machine independent, we allow a machine dependent file
     77   5084  johnlev #	to be used in preference over a machine independent version
     78   5084  johnlev #	(Such as a machine specific optimization, which preserves the
     79   5084  johnlev #	interfaces.)
     80   5084  johnlev #
     81   5084  johnlev include $(UTSTREE)/$(PLATFORM)/Makefile.files
     82   5084  johnlev include $(UTSTREE)/intel/Makefile.files
     83   5084  johnlev include $(UTSTREE)/common/Makefile.files
     84   5084  johnlev 
     85   5084  johnlev #
     86   5084  johnlev #	Include machine independent rules. Note that this does not imply
     87   5084  johnlev #	that the resulting module from rules in Makefile.uts is	machine
     88   5084  johnlev #	independent. Only that the build rules are machine independent.
     89   5084  johnlev #
     90   5084  johnlev include $(UTSBASE)/Makefile.uts
     91   5084  johnlev 
     92   5084  johnlev #
     93   5084  johnlev #	Define supported builds
     94   5084  johnlev #
     95   5084  johnlev DEF_BUILDS		= $(DEF_BUILDS64) $(DEF_BUILDS32)
     96   5084  johnlev ALL_BUILDS		= $(ALL_BUILDS64) $(ALL_BUILDS32)
     97   5084  johnlev 
     98   5084  johnlev #
     99   5084  johnlev #	x86 or amd64 inline templates
    100   5084  johnlev #
    101   5084  johnlev INLINES_32		= $(UTSBASE)/intel/ia32/ml/ia32.il \
    102   5084  johnlev 			  $(UTSBASE)/$(PLATFORM)/ml/ia32.il
    103   5084  johnlev INLINES_64		= $(UTSBASE)/intel/amd64/ml/amd64.il \
    104   5084  johnlev 			  $(UTSBASE)/$(PLATFORM)/ml/amd64.il
    105   5084  johnlev INLINES			+= $(INLINES_$(CLASS))
    106   5084  johnlev 
    107   5084  johnlev #
    108   5084  johnlev #	kernel-specific optimizations; override default in Makefile.master
    109   5084  johnlev #
    110   5084  johnlev 
    111   5084  johnlev CFLAGS_XARCH_32		= $(i386_CFLAGS)
    112   5084  johnlev CFLAGS_XARCH_64		= $(amd64_CFLAGS)
    113   5084  johnlev CFLAGS_XARCH		= $(CFLAGS_XARCH_$(CLASS))
    114   5084  johnlev 
    115   5084  johnlev COPTFLAG_32		= $(COPTFLAG)
    116   5084  johnlev COPTFLAG_64		= $(COPTFLAG64)
    117   5084  johnlev COPTIMIZE		= $(COPTFLAG_$(CLASS))
    118   5084  johnlev 
    119   5084  johnlev CFLAGS			= $(CFLAGS_XARCH)
    120   5084  johnlev CFLAGS			+= $(COPTIMIZE)
    121   5084  johnlev CFLAGS			+= $(INLINES) -D_ASM_INLINES
    122   5084  johnlev CFLAGS			+= $(CCMODE)
    123   5084  johnlev CFLAGS			+= $(SPACEFLAG)
    124   5084  johnlev CFLAGS			+= $(CCUNBOUND)
    125   5084  johnlev CFLAGS			+= $(CFLAGS_uts)
    126   5084  johnlev 
    127   5084  johnlev ASFLAGS_XARCH_32	= $(i386_ASFLAGS)
    128   5084  johnlev ASFLAGS_XARCH_64	= $(amd64_ASFLAGS)
    129   5084  johnlev ASFLAGS_XARCH		= $(ASFLAGS_XARCH_$(CLASS))
    130   5084  johnlev 
    131   5084  johnlev ASFLAGS			+= $(ASFLAGS_XARCH)
    132   5084  johnlev 
    133   5084  johnlev AS_INC_PATH		+= -I$(DSF_DIR)/$(OBJS_DIR)
    134   5084  johnlev 
    135   5084  johnlev #
    136   5084  johnlev #	The following must be defined for all implementations:
    137   5084  johnlev #
    138   5084  johnlev #	MAPFILE:	ld mapfile for the build of kernel/unix.
    139   5084  johnlev #	MODSTUBS:	Module stubs source file.
    140   5084  johnlev #	GENASSYM_SRC:	genassym.c
    141   5084  johnlev 
    142   5084  johnlev MAPFILE		= $(UTSBASE)/$(PLATFORM)/conf/Mapfile
    143   5084  johnlev MODSTUBS	= $(UTSBASE)/intel/ia32/ml/modstubs.s
    144   5084  johnlev GENASSYM_SRC	= $(UTSBASE)/i86pc/ml/genassym.c
    145   5084  johnlev OFFSETS_SRC	= $(UTSBASE)/i86pc/ml/offsets.in
    146   5084  johnlev 
    147   5084  johnlev #PLATFORM_OFFSETS_32	= $(UTSBASE)/$(PLATFORM)/ml/mach_offsets.in
    148   5084  johnlev PLATFORM_OFFSETS_32	= $(UTSBASE)/i86pc/ml/mach_offsets.in
    149   5084  johnlev PLATFORM_OFFSETS_64	= $(UTSBASE)/intel/amd64/ml/mach_offsets.in
    150   5084  johnlev PLATFORM_OFFSETS_SRC	= $(PLATFORM_OFFSETS_$(CLASS))
    151   5084  johnlev KDI_OFFSETS_SRC		= $(UTSBASE)/intel/kdi/kdi_offsets.in
    152   5084  johnlev 
    153   5084  johnlev #
    154   5084  johnlev #	Define the actual specific platforms
    155   5084  johnlev #
    156   5084  johnlev MACHINE_DEFS	 = -D__$(PLATFORM) -D__xpv -D_MACHDEP
    157   5084  johnlev 
    158   5084  johnlev #
    159   5084  johnlev #	Software workarounds for hardware "features"
    160   5084  johnlev #
    161   5084  johnlev 
    162   5084  johnlev include	$(UTSBASE)/i86pc/Makefile.workarounds
    163   5084  johnlev 
    164   5084  johnlev #
    165   5084  johnlev #	Debugging level
    166   5084  johnlev #
    167   5084  johnlev #	Special knowledge of which special debugging options effect which
    168   5084  johnlev #	file is used to optimize the build if these flags are changed.
    169   5084  johnlev #
    170   5084  johnlev #	XXX: The above could possibly be done for more flags and files, but
    171   5084  johnlev #	     is left as an experiment to the interested reader. Be forewarned,
    172   5084  johnlev #	     that excessive use could lead to maintenance difficulties.
    173   5084  johnlev #
    174   5084  johnlev DEBUG_DEFS_OBJ32	=
    175   5084  johnlev DEBUG_DEFS_DBG32	= -DDEBUG
    176   5084  johnlev DEBUG_DEFS_OBJ64	=
    177   5084  johnlev DEBUG_DEFS_DBG64	= -DDEBUG
    178   5084  johnlev DEBUG_DEFS		= $(DEBUG_DEFS_$(BUILD_TYPE))
    179   5084  johnlev 
    180   5084  johnlev DEBUG_COND_OBJ32	:sh = echo \\043
    181   5084  johnlev DEBUG_COND_DBG32	=
    182   5084  johnlev DEBUG_COND_OBJ64	:sh = echo \\043
    183   5084  johnlev DEBUG_COND_DBG64	=
    184   5084  johnlev IF_DEBUG_OBJ		= $(DEBUG_COND_$(BUILD_TYPE))$(OBJS_DIR)/
    185   5084  johnlev 
    186   5084  johnlev $(IF_DEBUG_OBJ)trap.o		:= DEBUG_DEFS += -DTRAPDEBUG -DTRAPTRACE
    187   5084  johnlev $(IF_DEBUG_OBJ)syscall_asm.o	:= DEBUG_DEFS += -DSYSCALLTRACE -DTRAPTRACE
    188   5084  johnlev $(IF_DEBUG_OBJ)syscall_asm_amd64.o := DEBUG_DEFS += -DSYSCALLTRACE -DTRAPTRACE
    189   5084  johnlev $(IF_DEBUG_OBJ)fast_trap_asm.o	:= DEBUG_DEFS += -DTRAPTRACE
    190   5084  johnlev $(IF_DEBUG_OBJ)interrupt.o	:= DEBUG_DEFS += -DTRAPTRACE
    191   5084  johnlev $(IF_DEBUG_OBJ)intr.o		:= DEBUG_DEFS += -DTRAPTRACE
    192   5084  johnlev $(IF_DEBUG_OBJ)locore.o		:= DEBUG_DEFS += -DTRAPTRACE
    193   5084  johnlev $(IF_DEBUG_OBJ)mp_startup.o	:= DEBUG_DEFS += -DTRAPTRACE
    194   5084  johnlev $(IF_DEBUG_OBJ)machdep.o	:= DEBUG_DEFS += -DTRAPTRACE
    195   5084  johnlev $(IF_DEBUG_OBJ)exception.o	:= DEBUG_DEFS += -DTRAPTRACE
    196   5084  johnlev $(IF_DEBUG_OBJ)x_call.o		:= DEBUG_DEFS += -DTRAPTRACE
    197   5084  johnlev $(IF_DEBUG_OBJ)mp_call.o	:= DEBUG_DEFS += -DTRAPTRACE
    198   5084  johnlev $(IF_DEBUG_OBJ)cbe.o		:= DEBUG_DEFS += -DTRAPTRACE
    199   5084  johnlev $(IF_DEBUG_OBJ)hyperevent.o	:= DEBUG_DEFS += -DTRAPTRACE
    200   5084  johnlev $(IF_DEBUG_OBJ)evtchn.o		:= DEBUG_DEFS += -DTRAPTRACE
    201   5084  johnlev 
    202   5084  johnlev #
    203   5084  johnlev #	Collect the preprocessor definitions to be associated with *all*
    204   5084  johnlev #	files.
    205   5084  johnlev #
    206   5084  johnlev ALL_DEFS	 = $(MACHINE_DEFS) $(WORKAROUND_DEFS) $(DEBUG_DEFS) \
    207   5084  johnlev 		   $(OPTION_DEFS)
    208   5084  johnlev GENASSYM_DEFS	 = $(MACHINE_DEFS) $(OPTION_DEFS) \
    209   5084  johnlev 			-_gcc=-fno-eliminate-unused-debug-symbols \
    210   5084  johnlev 			-_gcc=-fno-eliminate-unused-debug-types
    211   5084  johnlev 
    212   5084  johnlev #
    213   5084  johnlev # ----- TRANSITIONAL SECTION --------------------------------------------------
    214   5084  johnlev #
    215   5084  johnlev 
    216   5084  johnlev #
    217   5084  johnlev #	Not everything which *should* be a module is a module yet. The
    218   5084  johnlev #	following is a list of such objects which are currently part of
    219   5084  johnlev #	the base kernel but should soon become kmods.
    220   5084  johnlev #
    221   5084  johnlev #	XXX: $(KMACCT_OBJS) is neither in the MT kernel nor was it ever
    222   5084  johnlev #	     made into a module. If it is made MT safe before being made
    223   5084  johnlev #	     into a module, it should be added to this list. It was in
    224   5084  johnlev #	     this list pre ON-4.0.
    225   5084  johnlev #
    226   5084  johnlev #
    227   5084  johnlev MACH_NOT_YET_KMODS	= $(AUTOCONF_OBJS)
    228   5084  johnlev 
    229   5084  johnlev #
    230   5084  johnlev # ----- END OF TRANSITIONAL SECTION -------------------------------------------
    231   5084  johnlev #
    232   5084  johnlev 
    233   5084  johnlev #
    234   5084  johnlev #	The kernels modules which are "implementation architecture"
    235   5084  johnlev #	specific for this machine are enumerated below. Note that most
    236   5084  johnlev #	of these modules must exist (in one form or another) for each
    237   5084  johnlev #	architecture.
    238   5084  johnlev #
    239   5084  johnlev #	Machine Specific Driver Modules (/kernel/drv):
    240   5084  johnlev #	DRV_KMODS are built both 32-bit and 64-bit
    241   5084  johnlev #	DRV_KMODS_32 are built only 32-bit
    242   5084  johnlev #	DRV_KMODS_64 are built only 64-bit
    243   5084  johnlev #
    244   5084  johnlev 
    245   5084  johnlev DRV_KMODS	+= rootnex
    246   6707   brutus DRV_KMODS	+= ioat
    247   5084  johnlev DRV_KMODS	+= isa
    248   5084  johnlev DRV_KMODS	+= pci
    249   7292     marx DRV_KMODS	+= pit_beep
    250   5084  johnlev DRV_KMODS	+= npe
    251   5084  johnlev DRV_KMODS	+= pci-ide
    252   5084  johnlev DRV_KMODS	+= xsvc
    253   5084  johnlev DRV_KMODS	+= xenbus
    254   5084  johnlev DRV_KMODS	+= xencons
    255   5084  johnlev DRV_KMODS	+= xpvd
    256   5084  johnlev DRV_KMODS	+= xnbe
    257   5084  johnlev DRV_KMODS	+= xnbo
    258   5084  johnlev DRV_KMODS	+= xnbu
    259   5084  johnlev DRV_KMODS	+= xnf
    260   5084  johnlev DRV_KMODS	+= xdb
    261   5084  johnlev DRV_KMODS	+= xdf
    262   5084  johnlev DRV_KMODS	+= privcmd
    263   5084  johnlev DRV_KMODS	+= domcaps
    264   5084  johnlev DRV_KMODS	+= evtchn
    265   5084  johnlev DRV_KMODS	+= balloon
    266   7756     Mark DRV_KMODS	+= xpvtap
    267  10175   Stuart DRV_KMODS	+= xdt
    268   5084  johnlev 
    269   5084  johnlev #
    270   7532     Sean #	CPU Modules
    271   7532     Sean #
    272   7532     Sean CPU_KMODS	+= generic_cpu
    273   7532     Sean CPU_KMODS	+= amd_opteron
    274   7532     Sean CPU_KMODS	+= genuineintel
    275   7532     Sean CPU_KMODS	+= authenticamd
    276   7532     Sean 
    277   7532     Sean #
    278   5084  johnlev #	Exec Class Modules (/kernel/exec):
    279   5084  johnlev #
    280   5084  johnlev EXEC_KMODS	+=
    281   5084  johnlev 
    282   5084  johnlev #
    283   5084  johnlev #	Scheduling Class Modules (/kernel/sched):
    284   5084  johnlev #
    285   5084  johnlev SCHED_KMODS	+=
    286   5084  johnlev 
    287   5084  johnlev #
    288   5084  johnlev #	File System Modules (/kernel/fs):
    289   5084  johnlev #
    290   5084  johnlev FS_KMODS	+=
    291   5084  johnlev 
    292   5084  johnlev #
    293   5084  johnlev #	Streams Modules (/kernel/strmod):
    294   5084  johnlev #
    295   5084  johnlev STRMOD_KMODS	+=
    296   5084  johnlev 
    297   5084  johnlev #
    298   5084  johnlev #	'System' Modules (/kernel/sys):
    299   5084  johnlev #
    300   5084  johnlev SYS_KMODS	+=
    301   5084  johnlev 
    302   5084  johnlev #
    303   5084  johnlev #	'Misc' Modules (/kernel/misc):
    304   5084  johnlev #
    305  11196    Frank MISC_KMODS	+= xpv_autoconfig gfx_private xnb
    306   5084  johnlev 
    307   5084  johnlev #	'Dacf' modules (/kernel/dacf)
    308   5084  johnlev #
    309   5084  johnlev DACF_KMODS	+= consconfig_dacf
    310   5084  johnlev 
    311   5084  johnlev #
    312   5084  johnlev #	'Mach' Modules (/kernel/mach):
    313   5084  johnlev #
    314   6356      mrj MACH_KMODS     	+= xpv_psm xpv_uppc
    315   5084  johnlev 
    316   5084  johnlev #
    317   5084  johnlev #	'TOD' modules (/platform/.../kernel/tod):
    318   5084  johnlev #
    319   5084  johnlev TOD_KMODS	+= xpvtod
    320