xref: /netbsd-src/sys/external/bsd/compiler_rt/dist/lib/asan/asan_mapping_myriad.h (revision a7c257b03e4462df2b1020128fb82716512d7856)
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)46 static 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)52 static 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)58 static inline bool AddrIsInMidMem(uptr a) {
59   PROFILE_ASAN_MAPPING();
60   return false;
61 }
62 
AddrIsInMidShadow(uptr a)63 static inline bool AddrIsInMidShadow(uptr a) {
64   PROFILE_ASAN_MAPPING();
65   return false;
66 }
67 
AddrIsInHighMem(uptr a)68 static inline bool AddrIsInHighMem(uptr a) {
69   PROFILE_ASAN_MAPPING();
70   return false;
71 }
72 
AddrIsInHighShadow(uptr a)73 static inline bool AddrIsInHighShadow(uptr a) {
74   PROFILE_ASAN_MAPPING();
75   return false;
76 }
77 
AddrIsInShadowGap(uptr a)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