00001 /* 00002 * Copyright (c) 2000, Intel Corporation 00003 * All rights reserved. 00004 * 00005 * WARRANTY DISCLAIMER 00006 * 00007 * THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00008 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00009 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 00010 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS 00011 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00012 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00013 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00014 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 00015 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING 00016 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE 00017 * MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00018 * 00019 * Intel Corporation is the author of the Materials, and requests that all 00020 * problem reports or change requests be submitted to it directly at 00021 * http://developer.intel.com/opensource. 00022 */ 00023 00024 #ifndef _KMAPI_INTERNAL_H 00025 #define _KMAPI_INTERNAL_H 00026 00027 #include "kapi_internal.h" 00028 #include "kmapi.h" 00029 00030 00031 #ifndef FALSE 00032 #define FALSE 0 00033 #endif 00034 #ifndef TRUE 00035 #define TRUE 1 00036 #endif 00037 00038 typedef struct _KMAPI_FULIST_T { 00039 kmapi_ResourceMap_t bvResourceMap; 00040 struct _KMAPI_FULIST_T *pNext; 00041 } kmapi_fulist_t; 00042 00043 00044 typedef struct _KMAPI_EXCEPTION_DATA_T { 00045 kapi_bid_t bid; 00046 bv128_t bvfuClasses; 00047 kmapi_fulist_t *pfuList; 00048 } kmapi_exception_data_t; 00049 00050 typedef struct _KMAPI_EXCEPTION_T { 00051 kmapi_exception_data_t Details; 00052 struct _KMAPI_EXCEPTION_T *pNext; 00053 } kmapi_exception_t; 00054 00055 typedef struct _BUNDLE_FUS_T { 00056 bv128_t bvSlots[kmapi_BUNDLE_WIDTH]; 00057 struct _BUNDLE_FUS_T *pNext; 00058 } bundle_fus_t; 00059 00060 typedef struct _KMAPI_SPLIT_RULE_T { 00061 kapi_bid_t bid; 00062 bv32_t bvSplits; 00063 bundle_fus_t *pSplitExeptions; 00064 } kmapi_split_rule_t; 00065 00066 typedef enum { 00067 ALLOCATE_INVALID=0, 00068 ALLOCATE_FOR_ITANIUM 00069 } kmapi_allocation_scheme_e; 00070 00071 typedef struct _KMAPI_KNOBS_T { 00072 knobs_t *pKnobs; 00073 int cBinfoLists; /* number of items in BinfoLists */ 00074 kmapi_fulist_t **dm3pfuBinfoLists; /* pointers to mapping options per place/bid/slot */ 00075 int cOptions; /* number of options */ 00076 kmapi_fulist_t **dm3pOptions; /* lists of possible options per place/slot/syl */ 00077 int cFuclassLists; /* number of Fuclass lists */ 00078 kmapi_fulist_t **dmpfuFuclassLists; /* preparation for McKinley */ 00079 int cExceptions; /* number of exceptions */ 00080 kmapi_exception_t **dm3pExceptions; /* execeptions to mapping rules per place/slot/syl */ 00081 int cSplitRules; /* number of split issue rules */ 00082 kmapi_split_rule_t *dmpSplitRules; /* split issue rules */ 00083 int iTotalResources; /* total resources that kmapi can handle, currently 32 */ 00084 kmapi_allocation_scheme_e iScheme; 00085 bv32_t *dmpMiscFuInfo; 00086 /* other info */ 00087 } kmapi_knobs_t; 00088 00089 /* init functions */ 00090 kmapi_result kmapi_init_split_issue_data(kmapi_knobs_t *pKMnobs); 00091 00092 /* saver functions & info */ 00093 extern int nBundlesPerCycle; 00094 00095 #define MAX_OPTIONS 64 00096 00097 typedef enum { 00098 KMAPI_FU_IS_LONG=0 00099 } fu_misc_e; 00100 00101 #endif /* _KMAPI_INTERNAL_H */ 00102
1.5.6