Home | History | Annotate | Line # | Download | only in asan
      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 
     46 static inline bool AddrIsInLowMem(uptr a) {
     47   PROFILE_ASAN_MAPPING();
     48   a = RAW_ADDR(a);
     49   return a >= kLowMemBeg && a <= kLowMemEnd;
     50 }
     51 
     52 static inline bool AddrIsInLowShadow(uptr a) {
     53   PROFILE_ASAN_MAPPING();
     54   a = RAW_ADDR(a);
     55   return a >= kLowShadowBeg && a <= kLowShadowEnd;
     56 }
     57 
     58 static inline bool AddrIsInMidMem(uptr a) {
     59   PROFILE_ASAN_MAPPING();
     60   return false;
     61 }
     62 
     63 static inline bool AddrIsInMidShadow(uptr a) {
     64   PROFILE_ASAN_MAPPING();
     65   return false;
     66 }
     67 
     68 static inline bool AddrIsInHighMem(uptr a) {
     69   PROFILE_ASAN_MAPPING();
     70   return false;
     71 }
     72 
     73 static inline bool AddrIsInHighShadow(uptr a) {
     74   PROFILE_ASAN_MAPPING();
     75   return false;
     76 }
     77 
     78 static 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