/* Microsoft Reference Implementation for TPM 2.0 * * The copyright in this software is being made available under the BSD License, * included below. This software may be subject to other third party and * contributor rights, including patent rights, and no such rights are granted * under this license. * * Copyright (c) Microsoft Corporation * * All rights reserved. * * BSD License * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this list * of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, this * list of conditions and the following disclaimer in the documentation and/or * other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS"" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file contains the instance data for the Platform module. It is collected // in this file so that the state of the module is easier to manage. #ifndef _PLATFORM_DATA_H_ #define _PLATFORM_DATA_H_ #ifdef _PLATFORM_DATA_C_ #define EXTERN #else #define EXTERN extern #endif // From Cancel.c // Cancel flag. It is initialized as FALSE, which indicate the command is not // being canceled EXTERN int s_isCanceled; #ifndef HARDWARE_CLOCK typedef uint64_t clock64_t; // This is the value returned the last time that the system clock was read. This // is only relevant for a simulator or virtual TPM. EXTERN clock64_t s_realTimePrevious; // These values are used to try to synthesize a long lived version of clock(). EXTERN clock64_t s_lastSystemTime; EXTERN clock64_t s_lastReportedTime; // This is the rate adjusted value that is the equivalent of what would be read from // a hardware register that produced rate adjusted time. EXTERN clock64_t s_tpmTime; #endif // HARDWARE_CLOCK // This value indicates that the timer was reset EXTERN int s_timerReset; // This value indicates that the timer was stopped. It causes a clock discontinuity. EXTERN int s_timerStopped; // This variable records the time when _plat__TimerReset is called. This mechanism // allow us to subtract the time when TPM is power off from the total // time reported by clock() function EXTERN uint64_t s_initClock; // This variable records the timer adjustment factor. EXTERN unsigned int s_adjustRate; // For LocalityPlat.c // Locality of current command EXTERN unsigned char s_locality; // For NVMem.c // Choose if the NV memory should be backed by RAM or by file. // If this macro is defined, then a file is used as NV. If it is not defined, // then RAM is used to back NV memory. Comment out to use RAM. #if (!defined VTPM) || ((VTPM != NO) && (VTPM != YES)) # undef VTPM # define VTPM YES // Default: Either YES or NO #endif // For a simulation, use a file to back up the NV #if (!defined FILE_BACKED_NV) || ((FILE_BACKED_NV != NO) && (FILE_BACKED_NV != YES)) # undef FILE_BACKED_NV # define FILE_BACKED_NV (VTPM && YES) // Default: Either YES or NO #endif #if SIMULATION # undef FILE_BACKED_NV # define FILE_BACKED_NV YES #endif // SIMULATION EXTERN unsigned char s_NV[NV_MEMORY_SIZE]; EXTERN int s_NvIsAvailable; EXTERN int s_NV_unrecoverable; EXTERN int s_NV_recoverable; // For PPPlat.c // Physical presence. It is initialized to FALSE EXTERN int s_physicalPresence; // From Power EXTERN int s_powerLost; // For Entropy.c EXTERN uint32_t lastEntropy; #define DEFINE_ACT(N) EXTERN ACT_DATA ACT_##N; FOR_EACH_ACT(DEFINE_ACT) EXTERN int actTicksAllowed; #endif // _PLATFORM_DATA_H_