1 //===-- asan_mapping_myriad.h -----------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file is a part of AddressSanitizer, an address sanity checker. 11 // 12 // Myriad-specific definitions for ASan memory mapping. 13 //===----------------------------------------------------------------------===// 14 #ifndef ASAN_MAPPING_MYRIAD_H 15 #define ASAN_MAPPING_MYRIAD_H 16 17 #define RAW_ADDR(mem) ((mem) & ~kMyriadCacheBitMask32) 18 #define MEM_TO_SHADOW(mem) \ 19 (((RAW_ADDR(mem) - kLowMemBeg) >> SHADOW_SCALE) + (SHADOW_OFFSET)) 20 21 #define kLowMemBeg kMyriadMemoryOffset32 22 #define kLowMemEnd (SHADOW_OFFSET - 1) 23 24 #define kLowShadowBeg SHADOW_OFFSET 25 #define kLowShadowEnd MEM_TO_SHADOW(kLowMemEnd) 26 27 #define kHighMemBeg 0 28 29 #define kHighShadowBeg 0 30 #define kHighShadowEnd 0 31 32 #define kMidShadowBeg 0 33 #define kMidShadowEnd 0 34 35 #define kShadowGapBeg (kLowShadowEnd + 1) 36 #define kShadowGapEnd kMyriadMemoryEnd32 37 38 #define kShadowGap2Beg 0 39 #define kShadowGap2End 0 40 41 #define kShadowGap3Beg 0 42 #define kShadowGap3End 0 43 44 namespace __asan { 45 AddrIsInLowMem(uptr a)46static inline bool AddrIsInLowMem(uptr a) { 47 PROFILE_ASAN_MAPPING(); 48 a = RAW_ADDR(a); 49 return a >= kLowMemBeg && a <= kLowMemEnd; 50 } 51 AddrIsInLowShadow(uptr a)52static inline bool AddrIsInLowShadow(uptr a) { 53 PROFILE_ASAN_MAPPING(); 54 a = RAW_ADDR(a); 55 return a >= kLowShadowBeg && a <= kLowShadowEnd; 56 } 57 AddrIsInMidMem(uptr a)58static inline bool AddrIsInMidMem(uptr a) { 59 PROFILE_ASAN_MAPPING(); 60 return false; 61 } 62 AddrIsInMidShadow(uptr a)63static inline bool AddrIsInMidShadow(uptr a) { 64 PROFILE_ASAN_MAPPING(); 65 return false; 66 } 67 AddrIsInHighMem(uptr a)68static inline bool AddrIsInHighMem(uptr a) { 69 PROFILE_ASAN_MAPPING(); 70 return false; 71 } 72 AddrIsInHighShadow(uptr a)73static inline bool AddrIsInHighShadow(uptr a) { 74 PROFILE_ASAN_MAPPING(); 75 return false; 76 } 77 AddrIsInShadowGap(uptr a)78static inline bool AddrIsInShadowGap(uptr a) { 79 PROFILE_ASAN_MAPPING(); 80 a = RAW_ADDR(a); 81 return a >= kShadowGapBeg && a <= kShadowGapEnd; 82 } 83 84 } // namespace __asan 85 86 #endif // ASAN_MAPPING_MYRIAD_H 87