asan_mapping_myriad.h revision 353358
11590Srgrimes//===-- asan_mapping_myriad.h -----------------------------------*- C++ -*-===// 21590Srgrimes// 31590Srgrimes// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 41590Srgrimes// See https://llvm.org/LICENSE.txt for license information. 51590Srgrimes// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 61590Srgrimes// 71590Srgrimes//===----------------------------------------------------------------------===// 81590Srgrimes// 91590Srgrimes// This file is a part of AddressSanitizer, an address sanity checker. 101590Srgrimes// 111590Srgrimes// Myriad-specific definitions for ASan memory mapping. 121590Srgrimes//===----------------------------------------------------------------------===// 131590Srgrimes#ifndef ASAN_MAPPING_MYRIAD_H 141590Srgrimes#define ASAN_MAPPING_MYRIAD_H 151590Srgrimes 161590Srgrimes#define RAW_ADDR(mem) ((mem) & ~kMyriadCacheBitMask32) 171590Srgrimes#define MEM_TO_SHADOW(mem) \ 181590Srgrimes (((RAW_ADDR(mem) - kLowMemBeg) >> SHADOW_SCALE) + (SHADOW_OFFSET)) 191590Srgrimes 201590Srgrimes#define kLowMemBeg kMyriadMemoryOffset32 211590Srgrimes#define kLowMemEnd (SHADOW_OFFSET - 1) 221590Srgrimes 231590Srgrimes#define kLowShadowBeg SHADOW_OFFSET 241590Srgrimes#define kLowShadowEnd MEM_TO_SHADOW(kLowMemEnd) 251590Srgrimes 261590Srgrimes#define kHighMemBeg 0 271590Srgrimes 281590Srgrimes#define kHighShadowBeg 0 291590Srgrimes#define kHighShadowEnd 0 301590Srgrimes 3141568Sarchie#define kMidShadowBeg 0 321590Srgrimes#define kMidShadowEnd 0 331590Srgrimes 3487258Smarkm#define kShadowGapBeg (kLowShadowEnd + 1) 351590Srgrimes#define kShadowGapEnd kMyriadMemoryEnd32 3687628Sdwmalone 371590Srgrimes#define kShadowGap2Beg 0 3887628Sdwmalone#define kShadowGap2End 0 3954110Skris 4087628Sdwmalone#define kShadowGap3Beg 0 411590Srgrimes#define kShadowGap3End 0 4287628Sdwmalone 4387628Sdwmalonenamespace __asan { 4487628Sdwmalone 451590Srgrimesstatic inline bool AddrIsInLowMem(uptr a) { 461590Srgrimes PROFILE_ASAN_MAPPING(); 471590Srgrimes a = RAW_ADDR(a); 481590Srgrimes return a >= kLowMemBeg && a <= kLowMemEnd; 491590Srgrimes} 501590Srgrimes 511590Srgrimesstatic inline bool AddrIsInLowShadow(uptr a) { 521590Srgrimes PROFILE_ASAN_MAPPING(); 531590Srgrimes a = RAW_ADDR(a); 541590Srgrimes return a >= kLowShadowBeg && a <= kLowShadowEnd; 551590Srgrimes} 561590Srgrimes 571590Srgrimesstatic inline bool AddrIsInMidMem(uptr a) { 581590Srgrimes PROFILE_ASAN_MAPPING(); 591590Srgrimes return false; 601590Srgrimes} 611590Srgrimes 62227152Sedstatic inline bool AddrIsInMidShadow(uptr a) { 631590Srgrimes PROFILE_ASAN_MAPPING(); 641590Srgrimes return false; 651590Srgrimes} 661590Srgrimes 671590Srgrimesstatic inline bool AddrIsInHighMem(uptr a) { 681590Srgrimes PROFILE_ASAN_MAPPING(); 691590Srgrimes return false; 701590Srgrimes} 711590Srgrimes 721590Srgrimesstatic inline bool AddrIsInHighShadow(uptr a) { 731590Srgrimes PROFILE_ASAN_MAPPING(); 741590Srgrimes return false; 751590Srgrimes} 761590Srgrimes 771590Srgrimesstatic inline bool AddrIsInShadowGap(uptr a) { 781590Srgrimes PROFILE_ASAN_MAPPING(); 791590Srgrimes a = RAW_ADDR(a); 801590Srgrimes return a >= kShadowGapBeg && a <= kShadowGapEnd; 811590Srgrimes} 821590Srgrimes 831590Srgrimes} // namespace __asan 841590Srgrimes 851590Srgrimes#endif // ASAN_MAPPING_MYRIAD_H 861590Srgrimes