asan_mapping_myriad.h revision 336817
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
44namespace __asan {
45
46static inline bool AddrIsInLowMem(uptr a) {
47  PROFILE_ASAN_MAPPING();
48  a = RAW_ADDR(a);
49  return a >= kLowMemBeg && a <= kLowMemEnd;
50}
51
52static inline bool AddrIsInLowShadow(uptr a) {
53  PROFILE_ASAN_MAPPING();
54  a = RAW_ADDR(a);
55  return a >= kLowShadowBeg && a <= kLowShadowEnd;
56}
57
58static inline bool AddrIsInMidMem(uptr a) {
59  PROFILE_ASAN_MAPPING();
60  return false;
61}
62
63static inline bool AddrIsInMidShadow(uptr a) {
64  PROFILE_ASAN_MAPPING();
65  return false;
66}
67
68static inline bool AddrIsInHighMem(uptr a) {
69  PROFILE_ASAN_MAPPING();
70  return false;
71}
72
73static inline bool AddrIsInHighShadow(uptr a) {
74  PROFILE_ASAN_MAPPING();
75  return false;
76}
77
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