summaryrefslogtreecommitdiff
path: root/Core/EM/NVRAM/NVRAM.mak
blob: 43d544b2da10c35c3991918ff3bdb70f56fec5c7 (plain)
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
#**********************************************************************
#**********************************************************************
#**                                                                  **
#**        (C)Copyright 1985-2009, American Megatrends, Inc.         **
#**                                                                  **
#**                       All Rights Reserved.                       **
#**                                                                  **
#**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093        **
#**                                                                  **
#**                       Phone: (770)-246-8600                      **
#**                                                                  **
#**********************************************************************
#**********************************************************************

#**********************************************************************
# $Header: /Alaska/SOURCE/Core/Modules/NVRAM/NVRAM.mak 12    1/14/14 5:45p Oleksiyy $
#
# $Revision: 12 $
#
# $Date: 1/14/14 5:45p $
#**********************************************************************
# Revision History
# ----------------
# $Log: /Alaska/SOURCE/Core/Modules/NVRAM/NVRAM.mak $
# 
# 12    1/14/14 5:45p Oleksiyy
# [TAG]  		EIP121524
# [Category]  	New Feature
# [Description]  	Extended Aptio functionality for clearing or restoring
# NVRAM to factory default state (preserving only selected Vars).
# [Files]  		NVRAM.sdl
# NVRAM.mak
# NVRAMDXE.c
# NVRAM.cif
# 
# 11    11/07/12 5:42p Oleksiyy
# [TAG]  		EIP98678
# [Category]  	Improvement
# [Description]  	GetVariable()  response slow. Added token to process
# only SetVariable through SMI.
# [Files]  		NvramSmi.c, NvramSmi.sdl and NVRAM.mak
# 
# 10    11/11/11 3:23p Felixp
# Set DO_NOT_ACCESS_DATA_OUTSIDE_OF_SMM_AT_RUNTIME macro when NvramSmi
# eModule is in the project.
# 
# 9     2/04/10 3:58p Felixp
# Hook eLinks are renamed
# 
# 8     2/02/10 5:14p Oleksiyy
# EIP 33263 : Hooks for SetVariable, GetVariable and GetNextVarName
# added
# 
# 7     5/01/09 6:13p Felixp
# Bug fix(EIP 19816). $(AMICSPLib) is no longer linked with NVRAM
# libraries.
# (it caused problems on systems without Core Sources).
# $(AMICSPLib) is linked with Runtime and CORE_PEI instead.
# 
# 6     10/09/08 11:47a Felixp
# 1. Fault tolerant NVRAM garbage collection support is added.
# Use FAULT_TOLERANT_NVRAM_UPDATE SDL token to enable/disable (disabled
# by default). 
# NOTE: This feature requires upgrade of the Board module. 
# NOTE: This feature requires porting:
# Fault tolerant update requires reserved flash area of size NVRAM_SIZE
# used for back up during NVRAM garbage collection.
# The address of the area is defined by NVRAM_BACKUP_ADDRESS SDL token
# defined in Board.sdl.
# Size and Base addresses of other firmware volumes may need to be
# adjusted to free up space for the NVRAM back up area.
# Default ROM layout expects NVRAM back up area immediately below the
# main NVRAM area.
# For projects with the customized ROM layout Core.mak has to be updated.
# 2. Top level NVRAM function updated to be reentrance-safe.
# NOTE: This feature requires upgrade of the SB module.
# 3. Improved recovery from the flash programming failures and
# corruptions within NVRAM area. 
# 4. More reliable non-fault tolerant garbage collection.
# 
# 5     9/06/07 12:14a Felixp
# 
# 4     8/31/07 3:44p Felixp
# NVRAM code has been significantly changed to introduce the following
# improvements:
# 1. The code is chaned to always use the same amount of memory. 
# Previous implementation allocated memory as needed, which caused
# occasional S4 problems.
# Plus S4 resume never worked during the very first boot after the
# firmware update.
# 2. Support for NVRAM defaults added.
# NVRAM image with the default values for the Setup variables is now
# generated by the build process.
# The image is generated by the HpkTool (included into AMITSE module
# part). 
# In addition to standard Setup defaults it is also possible
# to generate manufactoring defaults. Support for the manufactoring
# defaults
# is disabled by default and can be enabled using
# MANUFACTURING_MODE_SUPPORT SDL token.
# 3. Support for boot with alternative configurations is added.
# Decision to switch to the alternative configuration
# (alternative set of values for NVRAM variables)
# is based on values returned by the porintg routine in OemPort.c.
# During boot with alternative configurations GetVariable service 
# returns alternative values for the setup-related variables.
# If variable does not have an alternative value, current value is
# returned.
# Two alternative configurations are supported:
# Boot with manufactoring settings(activated when IsMfgMode routine in
# OemPort.c returns TRUE).
# Boot with default settings(activated when IsDefaultConfigMode routine
# in OemPort.c returns TRUE).
# NOTE: This feature requires of the Board module
# 4.NVRAM reset option is added.
# If porting routine IsResetConfigMode in OemPort.c returns TRUE in PEI
# phase, 
# NVRAM content will be reset during initialization of the DXE NVRAM
# driver.
# During reset operation all setup-related variables are reset to their
# default values.
# All other variables are deleted.
# NOTE: This feature requires upgrade of the Board module
# 5.Detection of NVRAM update added.
# NVRAM implementation detects if NVRAM has been updated since the last
# NVRAM call.
# This provides ability to use variables services before and after
# firmware update.
# 6.Overall code clean up and simplification.
# 7.Core Sources are no longer required in order to use NV_SIMULATION
# option.
# 8.PI 1.0 support.
# Support for a PI 1.0 complient variable PPI is added. Old PPI is still
# preserved in this label for backward compatibility.
# New library routines PeiGetVariable and PeiGetNextVariableName are
# created in order to hide the differences between two PPIs.
# It is recommended to update existing code to use new library routines. 
# Support of the old PPI may be dropped in the future versions of Core.
# 9. NVRAM is now packaged as a raw FFS file embedded into the standard
# FV (used to be non-standard FV with raw NVRAM image).
# Validation: New NVRAM code has been validated using SCT and EFI version
# of Windows Server 2008
# Files modified: Core.sdl, Core.mak, AmiPeiLib.h, PeiLib.c,
# ReadOnlyVariable.h, , Token.c, HpkTool.exe, AMITSE.mak, Setup.ini,
#             NVRAM.sdl, NVRAM.mak, NVRAM.h, NVRAMRead.c, NVRAMPEI.c,
# NVRAMDXE.c
# 
# 3     10/13/06 1:27a Felixp
# 
# 2     8/25/06 10:59a Felixp
# 
# 1     8/24/06 12:38p Felixp
# 
#**********************************************************************
#<AMI_FHDR_START>
#
# Name:	NVRAM.mak
#
# Description:	
#
#<AMI_FHDR_END>
#**********************************************************************
all : NvramPei NvramDxe

NVRAM_PEI_OBJECTS=\
$$(BUILD_DIR)\$(NVRAM_DIR)\NVRAMRead.obj\
$$(BUILD_DIR)\$(NVRAM_DIR)\NVRAMPEI.obj

NVRAM_DXE_OBJECTS=\
$$(BUILD_DIR)\$(NVRAM_DIR)\NVRAMRead.obj\
$$(BUILD_DIR)\$(NVRAM_DIR)\NVRAMDXE.obj

$(BUILD_DIR)\NVRAM.mak : $(NVRAM_DIR)\$(@B).cif $(NVRAM_DIR)\$(@B).mak $(BUILD_RULES)
	$(CIF2MAK) $(NVRAM_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS)

Runtime_LIBBin : $(BUILD_DIR)\NVRAMDXE.lib
CORE_PEI_LIBBin : $(BUILD_DIR)\NVRAMPEI.lib

$(BUILD_DIR)\NVRAMDXE.lib : NvramDxe
$(BUILD_DIR)\NVRAMPEI.lib : NvramPei

NvramDxe : $(BUILD_DIR)\NVRAM.mak NvramDxeBin
NvramPei : $(BUILD_DIR)\NVRAM.mak NvramPeiBin

NvramDxeBin :
    $(ECHO) #define NVRAM_PRESERVE_VARIABLES_LIST  $(NvramPreserveVariables) > $(BUILD_DIR)\NvramPreserveList.h
	$(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\
		/f $(BUILD_DIR)\NVRAM.mak all\
		"OBJECTS=$(NVRAM_DXE_OBJECTS)"\
        "EXT_HEADERS=$(BUILD_DIR)\token.h\
        $(BUILD_DIR)\NvramPreserveList.h" \
		TYPE=LIBRARY LIBRARY_NAME=$(BUILD_DIR)\NVRAMDXE.lib\
        "MY_DEFINES=/D\"GET_VAR_LIST=$(GetVariableHook)\"\
        /D\"GET_NEXT_VAR_NAME_LIST=$(GetNextVariableNameHook)\"\
!IF "$(NvramSmiSupport)"=="1" && "$(NVRAM_SMI_FULL_PROTECTION)"=="1"
        /D\"DO_NOT_ACCESS_DATA_OUTSIDE_OF_SMM_AT_RUNTIME=1\"\
!ENDIF
        /D\"SET_VAR_LIST=$(SetVariableHook)\""

NvramPeiBin :
	$(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\
		/f $(BUILD_DIR)\NVRAM.mak all\
!IF "$(x64_BUILD)"=="1"
		BUILD_DIR=$(BUILD_DIR)\IA32\
!ELSE
		BUILD_DIR=$(BUILD_DIR)\
!ENDIF
		"OBJECTS=$(NVRAM_PEI_OBJECTS)"\
		TYPE=PEI_LIBRARY LIBRARY_NAME=$(BUILD_DIR)\NVRAMPEI.lib\
        "MY_DEFINES=/D\"PEI_GET_VAR_LIST=$(PeiGetVariableHook)\"\
        /D\"PEI_GET_NEXT_VAR_NAME_LIST=$(PeiGetNextVariableNameHook)\""

#**********************************************************************
#**********************************************************************
#**                                                                  **
#**        (C)Copyright 1985-2009, American Megatrends, Inc.         **
#**                                                                  **
#**                       All Rights Reserved.                       **
#**                                                                  **
#**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093        **
#**                                                                  **
#**                       Phone: (770)-246-8600                      **
#**                                                                  **
#**********************************************************************
#**********************************************************************