Changeset 44 for trunk/hal/x86_64/hal_types.h
- Timestamp:
- Jun 23, 2017, 9:57:35 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/hal/x86_64/hal_types.h
r38 r44 163 163 * 164 164 * In Intel 64 bits, the kernel virtual space has 4 Gbytes per cluster 165 * - the cxy field occupies bits[ 63:32]165 * - the cxy field occupies bits[34:32] 166 166 * - the ptr field occupies bits[31:0] 167 167 *************************************************************************** … … 193 193 #define XPTR_NULL 0 194 194 195 /* virtual (heap) */ 195 196 #define PTR_MASK 0x00000000FFFFFFFFULL 196 197 #define CXY_MASK 0x0000000700000000ULL 197 198 #define PTR_SHIFT 32 198 199 #define GET_CXY(xp) ((cxy_t)((xp) >> PTR_SHIFT)) 200 199 #define GET_CXY(xp) ((cxy_t)(((xp) & CXY_MASK) >> PTR_SHIFT)) 201 200 #define GET_PTR(xp) ((void*)((xp) & PTR_MASK)) 202 203 201 #define XPTR(cxy,ptr) (((uint64_t)(cxy) << PTR_SHIFT) | (((uint64_t)(ptr)) & PTR_MASK)) 204 202 205 206 203 /* virtual (kimg). A KIMG entry has 2GB of VA. */ 204 #define PTR_KIMG_MASK 0x000000007FFFFFFFULL 205 #define CXY_KIMG_MASK 0x0000000380000000ULL 206 #define PTR_KIMG_SHIFT 31 207 #define GET_KIMG_CXY(xp) ((cxy_t)(((xp) & CXY_KIMG_MASK) >> PTR_KIMG_SHIFT)) 208 #define GET_KIMG_PTR(xp) ((void*)((xp) & PTR_KIMG_MASK)) 209 #define XPTR_KIMG(cxy,ptr) (((uint64_t)(cxy) << PTR_KIMG_SHIFT) | (((uint64_t)(ptr)) & PTR_KIMG_MASK)) 210 211 /* physical */ 207 212 #define LPA_MASK 0x00000001FFFFFFFFULL 208 209 213 #define LPA_SHIFT 33 210 211 214 #define CXY_FROM_PADDR(paddr) ((cxy_t)((paddr) >> LPA_SHIFT)) 212 213 215 #define LPA_FROM_PADDR(paddr) (lpa_t)((paddr & LPA_MASK) 214 215 216 #define PADDR(cxy,lad) (((uint64_t)(cxy) << LPA_SHIFT) | (((uint64_t)(ptr)) & LPA_MASK)) 216 217
Note: See TracChangeset
for help on using the changeset viewer.