1 /* 2 * Copyright (c) 2011 Intel Corporation. All Rights Reserved. 3 * Copyright (c) Imagination Technologies Limited, UK 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the 7 * "Software"), to deal in the Software without restriction, including 8 * without limitation the rights to use, copy, modify, merge, publish, 9 * distribute, sub license, and/or sell copies of the Software, and to 10 * permit persons to whom the Software is furnished to do so, subject to 11 * the following conditions: 12 * 13 * The above copyright notice and this permission notice (including the 14 * next paragraph) shall be included in all copies or substantial portions 15 * of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 20 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 21 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 */ 25 26 27 /****************************************************************************** 28 * Name : img_types.h 29 * Title : Global types for use by IMG APIs 30 * Author(s) : Imagination Technologies 31 * Created : 1st August 2003 32 * 33 * Description : Defines type aliases for use by IMG APIs 34 * 35 * Platform : Generic 36 * 37 * Modifications:- 38 * $Log: img_types.h $ 39 ******************************************************************************/ 40 41 #ifndef __IMG_TYPES_H__ 42 #define __IMG_TYPES_H__ 43 44 #include "img_defs.h" 45 46 typedef unsigned int IMG_UINT, *IMG_PUINT; 47 typedef signed int IMG_INT, *IMG_PINT; 48 49 typedef unsigned char IMG_UINT8, *IMG_PUINT8; 50 typedef unsigned char IMG_BYTE, *IMG_PBYTE; 51 typedef signed char IMG_INT8, *IMG_PINT8; 52 typedef char IMG_CHAR, *IMG_PCHAR; 53 54 typedef unsigned short IMG_UINT16, *IMG_PUINT16; 55 typedef signed short IMG_INT16, *IMG_PINT16; 56 typedef unsigned int IMG_UINT32, *IMG_PUINT32; 57 typedef signed int IMG_INT32, *IMG_PINT32; 58 typedef unsigned long long IMG_UINT64, *IMG_PUINT64; 59 typedef signed long long IMG_INT64, *IMG_PINT64; 60 61 typedef unsigned char IMG_BOOL8, *IMG_PBOOL8; 62 typedef unsigned short IMG_BOOL16, *IMG_PBOOL16; 63 typedef unsigned int IMG_BOOL32, *IMG_PBOOL32; 64 65 #if defined(_WIN32) 66 67 typedef unsigned __int64 IMG_UINT64, *IMG_PUINT64; 68 typedef __int64 IMG_INT64, *IMG_PINT64; 69 70 #else 71 #if defined(LINUX) || defined (__SYMBIAN32__) || defined(_UITRON_) 72 73 #else 74 75 #error("define an OS") 76 77 #endif 78 #endif 79 80 #if !(defined(LINUX) && defined (__KERNEL__)) 81 /* Linux kernel mode does not use floating point */ 82 typedef float IMG_FLOAT, *IMG_PFLOAT; 83 typedef double IMG_DOUBLE, *IMG_PDOUBLE; 84 #endif 85 86 typedef enum tag_img_bool { 87 IMG_FALSE = 0, 88 IMG_TRUE = 1, 89 IMG_FORCE_ALIGN = 0x7FFFFFFF 90 } IMG_BOOL, *IMG_PBOOL; 91 92 typedef void IMG_VOID, *IMG_PVOID; 93 94 typedef IMG_INT32 IMG_RESULT; 95 96 typedef unsigned long IMG_UINTPTR_T; 97 98 typedef IMG_PVOID IMG_HANDLE; 99 100 typedef void** IMG_HVOID, * IMG_PHVOID; 101 102 typedef IMG_UINT32 IMG_SIZE_T; 103 104 #define IMG_NULL 0 105 106 107 /* 108 * Address types. 109 * All types used to refer to a block of memory are wrapped in structures 110 * to enforce some type degree of type safety, i.e. a IMG_DEV_VIRTADDR cannot 111 * be assigned to a variable of type IMG_DEV_PHYSADDR because they are not the 112 * same thing. 113 * 114 * There is an assumption that the system contains at most one non-cpu mmu, 115 * and a memory block is only mapped by the MMU once. 116 * 117 * Different devices could have offset views of the physical address space. 118 * 119 */ 120 121 122 /* 123 * 124 * +------------+ +------------+ +------------+ +------------+ 125 * | CPU | | DEV | | DEV | | DEV | 126 * +------------+ +------------+ +------------+ +------------+ 127 * | | | | 128 * | PVOID |IMG_DEV_VIRTADDR |IMG_DEV_VIRTADDR | 129 * | \-------------------/ | 130 * | | | 131 * +------------+ +------------+ | 132 * | MMU | | MMU | | 133 * +------------+ +------------+ | 134 * | | | 135 * | | | 136 * | | | 137 * +--------+ +---------+ +--------+ 138 * | Offset | | (Offset)| | Offset | 139 * +--------+ +---------+ +--------+ 140 * | | IMG_DEV_PHYADDR | 141 * | | | 142 * | | IMG_DEV_PHYADDR | 143 * +---------------------------------------------------------------------+ 144 * | System Address bus | 145 * +---------------------------------------------------------------------+ 146 * 147 */ 148 149 typedef IMG_PVOID IMG_CPU_VIRTADDR; 150 151 /* cpu physical address */ 152 typedef struct { 153 IMG_UINT32 uiAddr; 154 } IMG_CPU_PHYADDR; 155 156 /* device virtual address */ 157 typedef struct { 158 IMG_UINT32 uiAddr; 159 } IMG_DEV_VIRTADDR; 160 161 /* device physical address */ 162 typedef struct { 163 IMG_UINT32 uiAddr; 164 } IMG_DEV_PHYADDR; 165 166 /* system physical address */ 167 typedef struct { 168 IMG_UINT32 uiAddr; 169 } IMG_SYS_PHYADDR; 170 171 /* 172 system physical structure. 173 specifies contiguous and non-contiguous system physical addresses 174 */ 175 typedef struct _SYSTEM_ADDR_ { 176 /* if zero this is contiguous */ 177 IMG_UINT32 ui32PageCount; 178 union { 179 /* 180 contiguous address: 181 basic system address 182 */ 183 IMG_SYS_PHYADDR sContig; 184 185 /* 186 non-contiguous address: 187 multiple system page addresses representing system pages 188 of which a single allocation is composed 189 Note: if non-contiguous allocations don't always start at a 190 page boundary then a page offset word is also required. 191 */ 192 IMG_SYS_PHYADDR asNonContig[1]; 193 } u; 194 } SYSTEM_ADDR; 195 196 #endif /* __IMG_TYPES_H__ */ 197 /****************************************************************************** 198 End of file (img_types.h) 199 ******************************************************************************/ 200