1336817Sdim//===-- asan_mapping_myriad.h -----------------------------------*- C++ -*-===// 2336817Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6336817Sdim// 7336817Sdim//===----------------------------------------------------------------------===// 8336817Sdim// 9336817Sdim// This file is a part of AddressSanitizer, an address sanity checker. 10336817Sdim// 11336817Sdim// Myriad-specific definitions for ASan memory mapping. 12336817Sdim//===----------------------------------------------------------------------===// 13336817Sdim#ifndef ASAN_MAPPING_MYRIAD_H 14336817Sdim#define ASAN_MAPPING_MYRIAD_H 15336817Sdim 16336817Sdim#define RAW_ADDR(mem) ((mem) & ~kMyriadCacheBitMask32) 17336817Sdim#define MEM_TO_SHADOW(mem) \ 18336817Sdim (((RAW_ADDR(mem) - kLowMemBeg) >> SHADOW_SCALE) + (SHADOW_OFFSET)) 19336817Sdim 20336817Sdim#define kLowMemBeg kMyriadMemoryOffset32 21336817Sdim#define kLowMemEnd (SHADOW_OFFSET - 1) 22336817Sdim 23336817Sdim#define kLowShadowBeg SHADOW_OFFSET 24336817Sdim#define kLowShadowEnd MEM_TO_SHADOW(kLowMemEnd) 25336817Sdim 26336817Sdim#define kHighMemBeg 0 27336817Sdim 28336817Sdim#define kHighShadowBeg 0 29336817Sdim#define kHighShadowEnd 0 30336817Sdim 31336817Sdim#define kMidShadowBeg 0 32336817Sdim#define kMidShadowEnd 0 33336817Sdim 34336817Sdim#define kShadowGapBeg (kLowShadowEnd + 1) 35336817Sdim#define kShadowGapEnd kMyriadMemoryEnd32 36336817Sdim 37336817Sdim#define kShadowGap2Beg 0 38336817Sdim#define kShadowGap2End 0 39336817Sdim 40336817Sdim#define kShadowGap3Beg 0 41336817Sdim#define kShadowGap3End 0 42336817Sdim 43336817Sdimnamespace __asan { 44336817Sdim 45336817Sdimstatic inline bool AddrIsInLowMem(uptr a) { 46336817Sdim PROFILE_ASAN_MAPPING(); 47336817Sdim a = RAW_ADDR(a); 48336817Sdim return a >= kLowMemBeg && a <= kLowMemEnd; 49336817Sdim} 50336817Sdim 51336817Sdimstatic inline bool AddrIsInLowShadow(uptr a) { 52336817Sdim PROFILE_ASAN_MAPPING(); 53336817Sdim a = RAW_ADDR(a); 54336817Sdim return a >= kLowShadowBeg && a <= kLowShadowEnd; 55336817Sdim} 56336817Sdim 57336817Sdimstatic inline bool AddrIsInMidMem(uptr a) { 58336817Sdim PROFILE_ASAN_MAPPING(); 59336817Sdim return false; 60336817Sdim} 61336817Sdim 62336817Sdimstatic inline bool AddrIsInMidShadow(uptr a) { 63336817Sdim PROFILE_ASAN_MAPPING(); 64336817Sdim return false; 65336817Sdim} 66336817Sdim 67336817Sdimstatic inline bool AddrIsInHighMem(uptr a) { 68336817Sdim PROFILE_ASAN_MAPPING(); 69336817Sdim return false; 70336817Sdim} 71336817Sdim 72336817Sdimstatic inline bool AddrIsInHighShadow(uptr a) { 73336817Sdim PROFILE_ASAN_MAPPING(); 74336817Sdim return false; 75336817Sdim} 76336817Sdim 77336817Sdimstatic inline bool AddrIsInShadowGap(uptr a) { 78336817Sdim PROFILE_ASAN_MAPPING(); 79336817Sdim a = RAW_ADDR(a); 80336817Sdim return a >= kShadowGapBeg && a <= kShadowGapEnd; 81336817Sdim} 82336817Sdim 83336817Sdim} // namespace __asan 84336817Sdim 85336817Sdim#endif // ASAN_MAPPING_MYRIAD_H 86